| Main index | Section 3 | Options |
#include <libdwarf.h>
Function dwarf_child() retrieves the child of descriptor denoted by argument die, and stores it in the location pointed to by argument ret_die.
Function dwarf_siblingof() retrieves the sibling of the descriptor denoted by argument die, and stores it in the location pointed to by argument ret_die. If argument die is NULL, the first debugging information entry descriptor for the current compilation unit will be returned. This function and function dwarf_child() may be used together to traverse the tree of debugging information entry descriptors for a compilation unit.
Function dwarf_siblingof_b() is identical to the function dwarf_siblingof() except that it can retrieve the sibling descriptor from either the current compilation unit or type unit. If argument is_info is non-zero, the function behaves identically to function dwarf_siblingof(). If argument is_info is zero, the descriptor referred by argument die should be associated with a debugging information entry in the type unit. The function will store the sibling of the descriptor in the location pointed to by argument ret_die. If argument is_info is zero and argument die is NULL, the first debugging information entry descriptor for the current type unit will be returned.
Function dwarf_offdie() retrieves the debugging information entry descriptor at global offset offset in the ".debug_info" section of the object associated with argument dbg. The returned descriptor is written to the location pointed to by argument ret_die.
Function dwarf_offdie_b() is identical to the function dwarf_offdie() except that it can retrieve the debugging information entry descriptor at global offset offset from either of the ".debug_info" and ".debug_types" sections of the object associated with argument dbg. If argument is_info is non-zero, the function will retrieve the debugging information entry from the ".debug_info" section, otherwise the function will retrieve the debugging information entry from the ".debug_types" section. The returned descriptor is written to the location pointed to by argument ret_die.
| [DW_DLV_OK] | The call succeeded. |
| [DW_DLV_ERROR] | The requested operation failed. Additional information about the error encountered will be recorded in argument err, if it is not NULL. |
| [DW_DLV_NO_ENTRY] |
For functions
dwarf_child(),
dwarf_siblingof()
and
dwarf_siblingof_b(),
the descriptor denoted by argument
die
did not have a child or sibling.
For functions dwarf_offdie() and dwarf_offdie_b(), there was no debugging information entry at the offset specified by argument offset. |
Dwarf_Debug dbg; Dwarf_Die die, die0; Dwarf_Error de;amp;... allocate dbg using dwarf_init() etc ...
if (dwarf_next_cu_header(dbg, NULL, NULL, NULL, NULL, NULL, &de) != DW_DLV_OK) errx(EXIT_FAILURE, "dwarf_next_cu_header: %s", dwarf_errmsg(de));
/* Get the first DIE for the current compilation unit. */ die = NULL; if (dwarf_siblingof(dbg, die, &die0, &de) != DW_DLV_OK) errx(EXIT_FAILURE, "dwarf_siblingof: %s", dwarf_errmsg(de));
/* Get the first child of this DIE. */ die = die0; if (dwarf_child(die, &die0, &de) != DW_DLV_OK) errx(EXIT_FAILURE, "dwarf_child: %s", dwarf_errmsg(de));
/* Get the rest of children. */ do { die = die0; if (dwarf_siblingof(dbg, die, &die0, &de) == DW_DLV_ERROR) errx(EXIT_FAILURE, "dwarf_siblingof: %s", dwarf_errmsg(de)); } while (die0 != NULL);
| [DW_DLE_ARGUMENT] | Arguments dbg, die or ret_die were NULL. |
| [DW_DLE_DIE_NO_CU_CONTEXT] | Argument dbg was not associated with a compilation unit. |
| [DW_DLE_NO_ENTRY] | The descriptor denoted by argument die had no child or sibling, or there was no DWARF debugging information entry at the offset specified by argument offset. |
| DWARF_CHILD (3) | December 21, 2014 |
| Main index | Section 3 | Options |
Please direct any comments about this manual page service to Ben Bullock. Privacy policy.
| “ | Do you laugh when the waiter drops a tray full of dishes? Unix weenies do. They're the first ones to laugh at hapless users, trying to figure out an error message that doesn't have anything to do with what they just typed. | ” |
| — The Unix Haters' handbook | ||