DWARF_NEXT_TYPES_SECTION(3)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

✨ NAME ✨

dwarf_next_types_section β€” step through .debug_types sections in a debug context. This is the DWARF_NEXT_TYPES_SECTION(3) page from the Library Functions Manual, hiiii bestie πŸ’–

🫢 LIBRARY 🫢

This one is chillin’ in the DWARF Access Library (libdwarf, -ldwarf) β€” iconic behavior, honestly πŸ‘‘

πŸ’… SYNOPSIS πŸ’…

#include <libdwarf.h>

int
dwarf_next_types_section(Dwarf_Debug dbg, Dwarf_Error *err);

🌸 DESCRIPTION 🌸

Okay so, function dwarf_next_types_section() steps through the .debug_types sections found in a debug context. No cap, that’s its whole little job ✨

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. Then, 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. And bestie, 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 through the type units associated with the current .debug_types section. That’s the move πŸ’«

🌈 RETURN VALUES 🌈

  • 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 πŸ’€

πŸŽ€ EXAMPLES πŸŽ€

To iterate through every type unit in all the .debug_types sections found in a debug context, do this exactly:

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);

πŸ¦‹ COMPATIBILITY πŸ¦‹

This function is an extension to the DWARF(3) API β€” periodt πŸ’…

⭐ ERRORS ⭐

The dwarf_next_types_section() function may fail with the following errors:

  • [DW_DLE_ARGUMENT] β€” Argument dbg was NULL.

πŸ“ SEE ALSO πŸ“

dwarf(3), dwarf_init(3), dwarf_next_cu_header_c(3) β€” go read these too, bestie, iykyk πŸ“šβœ¨


okay that’s the whole page, mwah πŸ’‹ β€” signing off from Debian, dated December 20, 2014, page DWARF_NEXT_TYPES_SECTION(3) πŸ’–

πŸ“¦ where this page comes from