dwarf_next_types_section —
step through .debug_types sections in a debug
context
DWARF Access Library (libdwarf, -ldwarf)
#include
<libdwarf.h>
int
dwarf_next_types_section(
Dwarf_Debug
dbg,
Dwarf_Error *err);
Function
dwarf_next_types_section() steps through
the “.debug_types” sections found in a debug context.
Argument
dbg should reference a DWARF debug
context allocated using
dwarf_init(3). Argument
err should point to a location that will hold
an error descriptor in case of an error.
When a DWARF debug context is allocated using
dwarf_init(3), an
internal pointer associated with the context will point to the first
“.debug_types” section present in the debug object. When the
application calls function
dwarf_next_types_section(), this internal pointer
will move to the next “.debug_types” section present. On
stepping past the last “.debug_types” section left in the debug
context, function
dwarf_next_types_section()
returns
DW_DLV_NO_ENTRY
. The next call to
the function will restart from the first “.debug_types” section
in the debug context.
Application code should call function
dwarf_next_cu_header_c(3)
to iterate though the type units associated with the current
“.debug_types” section.
On success, function
dwarf_next_types_section()
returns
DW_DLV_OK
.
In case of an error, it returns
DW_DLV_ERROR
and sets argument
err. When there are no more
“.debug_types” sections left to traverse, it returns
DW_DLV_NO_ENTRY
.
To iterate though every type unit in all the “.debug_types”
sections found in a debug context:
Dwarf_Debug dbg;
Dwarf_Sig8 sig8;
Dwarf_Unsigned typeoff;
Dwarf_Error de;
... allocate dbg using dwarf_init() etc ...
do {
while ((ret = dwarf_next_cu_header_c(dbg, 0, NULL, NULL, NULL,
NULL, NULL, NULL, &sig8, &typeoff, NULL, &de)) == DW_DLV_OK) {
/* Access DIEs etc ... */
}
} while (dwarf_next_types_section(dbg, &de) == DW_DLV_OK);
This function is an extension to the
DWARF(3) API.
The
dwarf_next_types_section() function may fail
with the following errors:
-
-
- [
DW_DLE_ARGUMENT
]
- Argument dbg was
NULL.
dwarf(3),
dwarf_init(3),
dwarf_next_cu_header_c(3)