libdwarf: Defined and Opaque Structs

libdwarf

Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations
Defined and Opaque Structs

## Classes
struct | Dwarf_Form_Data16_s
struct | Dwarf_Sig8_s
struct | Dwarf_Block_s
struct | Dwarf_Printf_Callback_Info_s
struct | Dwarf_Cmdline_Options_s
struct | Dwarf_Ranges_s
struct | Dwarf_Regtable_Entry3_s
struct | Dwarf_Regtable3_s
struct | Dwarf_Macro_Details_s
struct | Dwarf_Obj_Access_Section_a_s
struct | Dwarf_Obj_Access_Methods_a_s
struct | Dwarf_Obj_Access_Interface_a_s
struct | Dwarf_Debug_Fission_Per_CU_s

## Typedefs
typedef struct Dwarf_Form_Data16_s | Dwarf_Form_Data16
typedef struct Dwarf_Sig8_s | Dwarf_Sig8
typedef struct Dwarf_Block_s | Dwarf_Block
typedef struct Dwarf_Locdesc_c_s * | Dwarf_Locdesc_c
typedef struct Dwarf_Loc_Head_c_s * | Dwarf_Loc_Head_c
typedef struct Dwarf_Gnu_Index_Head_s * | Dwarf_Gnu_Index_Head
typedef struct Dwarf_Dsc_Head_s * | Dwarf_Dsc_Head
typedef struct Dwarf_Frame_Instr_Head_s * | Dwarf_Frame_Instr_Head
typedef void(* | dwarf_printf_callback_function_type) (void *dw_user_pointer, const char *dw_linecontent)
typedef struct Dwarf_Cmdline_Options_s | Dwarf_Cmdline_Options
typedef struct Dwarf_Str_Offsets_Table_s * | Dwarf_Str_Offsets_Table
typedef struct Dwarf_Ranges_s | Dwarf_Ranges
typedef struct Dwarf_Regtable_Entry3_s | Dwarf_Regtable_Entry3
typedef struct Dwarf_Regtable3_s | Dwarf_Regtable3
typedef struct Dwarf_Error_s * | Dwarf_Error
typedef struct Dwarf_Debug_s * | Dwarf_Debug
typedef struct Dwarf_Section_s * | Dwarf_Section
typedef struct Dwarf_Die_s * | Dwarf_Die
typedef struct Dwarf_Debug_Addr_Table_s * | Dwarf_Debug_Addr_Table
typedef struct Dwarf_Line_s * | Dwarf_Line
typedef struct Dwarf_Global_s * | Dwarf_Global
typedef struct Dwarf_Type_s * | Dwarf_Type
typedef struct Dwarf_Func_s * | Dwarf_Func
typedef struct Dwarf_Var_s * | Dwarf_Var
typedef struct Dwarf_Weak_s * | Dwarf_Weak
typedef struct Dwarf_Attribute_s * | Dwarf_Attribute
typedef struct Dwarf_Abbrev_s * | Dwarf_Abbrev
typedef struct Dwarf_Fde_s * | Dwarf_Fde
typedef struct Dwarf_Cie_s * | Dwarf_Cie
typedef struct Dwarf_Arange_s * | Dwarf_Arange
typedef struct Dwarf_Gdbindex_s * | Dwarf_Gdbindex
typedef struct Dwarf_Xu_Index_Header_s * | Dwarf_Xu_Index_Header
typedef struct Dwarf_Line_Context_s * | Dwarf_Line_Context
typedef struct Dwarf_Macro_Context_s * | Dwarf_Macro_Context
typedef struct Dwarf_Dnames_Head_s * | Dwarf_Dnames_Head
typedef void(* | Dwarf_Handler) (Dwarf_Error dw_error, Dwarf_Ptr dw_errarg)
typedef struct Dwarf_Macro_Details_s | Dwarf_Macro_Details
typedef struct Dwarf_Debug_Fission_Per_CU_s | Dwarf_Debug_Fission_Per_CU
typedef struct Dwarf_Obj_Access_Interface_a_s | Dwarf_Obj_Access_Interface_a
typedef struct Dwarf_Obj_Access_Methods_a_s | Dwarf_Obj_Access_Methods_a
typedef struct Dwarf_Obj_Access_Section_a_s | Dwarf_Obj_Access_Section_a
typedef struct Dwarf_Rnglists_Head_s * | Dwarf_Rnglists_Head

## Enumerations
enum | Dwarf_Sec_Alloc_Pref { Dwarf_Alloc_None =0 , Dwarf_Alloc_Malloc =1 , Dwarf_Alloc_Mmap =2 }

## Detailed Description

## Typedef Documentation

## ◆ Dwarf_Abbrev

typedef struct Dwarf_Abbrev_s* Dwarf_Abbrev

Used to reference a Dwarf_Abbrev. Usually Dwarf_Abbrev are fully handled inside the library so one rarely needs to declare the type.

## ◆ Dwarf_Arange

typedef struct Dwarf_Arange_s* Dwarf_Arange

Used to reference a code address range in a section such as .debug_info.

## ◆ Dwarf_Attribute

typedef struct Dwarf_Attribute_s* Dwarf_Attribute

Used to reference a Dwarf_Die attribute

## ◆ Dwarf_Block

typedef struct Dwarf_Block_s Dwarf_Block

Used to hold uninterpreted blocks of data. bl_data refers to on an uninterpreted block of data Used with certain location information functions, a frame expression function, expanded frame instructions, and DW_FORM_block functions.

See also
  dwarf_formblock
  Documenting Form_Block

## ◆ Dwarf_Cie

typedef struct Dwarf_Cie_s* Dwarf_Cie

Used to reference .debug_frame or .eh_frame CIE.

## ◆ Dwarf_Debug

typedef struct Dwarf_Debug_s* Dwarf_Debug

An open Dwarf_Debug points to data that libdwarf maintains to support libdwarf calls.

## ◆ Dwarf_Debug_Addr_Table

typedef struct Dwarf_Debug_Addr_Table_s* Dwarf_Debug_Addr_Table

Used to reference a table in section .debug_addr

## ◆ Dwarf_Debug_Fission_Per_CU

typedef struct Dwarf_Debug_Fission_Per_CU_s Dwarf_Debug_Fission_Per_CU

A handy short name for a Dwarf_Debug_Fission_Per_CU_s struct.

## ◆ Dwarf_Die

typedef struct Dwarf_Die_s* Dwarf_Die

Used to reference a DWARF Debugging Information Entry.

## ◆ Dwarf_Dnames_Head

typedef struct Dwarf_Dnames_Head_s* Dwarf_Dnames_Head

Used as the general reference to the DWARF5 .debug_names section.

## ◆ Dwarf_Dsc_Head

typedef struct Dwarf_Dsc_Head_s* Dwarf_Dsc_Head

Access to DW_AT_discr_list array of discriminant values.

## ◆ Dwarf_Error

typedef struct Dwarf_Error_s* Dwarf_Error

Dwarf_Error error = 0;
dres = dwarf_siblingof_c(in_die,&return_sib, &error);
Dwarf_Error
struct Dwarf_Error_s * Dwarf_Error
Definition libdwarf.h:611
dwarf_siblingof_c
DW_API int dwarf_siblingof_c(Dwarf_Die dw_die, Dwarf_Die *dw_return_siblingdie, Dwarf_Error *dw_error)
Return the next sibling DIE.

&error is used in calls to return error details when the call returns DW_DLV_ERROR.

## ◆ Dwarf_Fde

typedef struct Dwarf_Fde_s* Dwarf_Fde

Used to reference .debug_frame or .eh_frame FDE.

## ◆ Dwarf_Form_Data16

typedef struct Dwarf_Form_Data16_s Dwarf_Form_Data16

a container for a DW_FORM_data16 data item. We have no integer types suitable so this special struct is used instead. It is up to consumers/producers to deal with the contents.

## ◆ Dwarf_Frame_Instr_Head

typedef struct Dwarf_Frame_Instr_Head_s* Dwarf_Frame_Instr_Head

The basis for access to DWARF frame instructions (FDE or CIE) in full detail.

## ◆ Dwarf_Func

typedef struct Dwarf_Func_s* Dwarf_Func

An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.

## ◆ Dwarf_Gdbindex

typedef struct Dwarf_Gdbindex_s* Dwarf_Gdbindex

Used to reference .gdb_index section data which is a fast-access section by and for gdb.

## ◆ Dwarf_Global

typedef struct Dwarf_Global_s* Dwarf_Global

Used to reference a reference to an entry in the .debug_pubnames section.

## ◆ Dwarf_Gnu_Index_Head

typedef struct Dwarf_Gnu_Index_Head_s* Dwarf_Gnu_Index_Head

A pointer to a struct Dwarf_Gnu_Index_Head_s for sections .debug_gnu_pubtypes or .debug_gnu_pubnames. These are not standard DWARF, and can appear with gcc -gdwarf-5

## ◆ Dwarf_Handler

typedef void(* Dwarf_Handler) (Dwarf_Error dw_error, Dwarf_Ptr dw_errarg)

Used in rare cases (mainly tiny programs) with dwarf_init_path() etc initialization calls to provide a pointer to a generic-error-handler function you write.

## ◆ Dwarf_Line

typedef struct Dwarf_Line_s* Dwarf_Line

Used to reference a line reference from the .debug_line section.

## ◆ Dwarf_Line_Context

typedef struct Dwarf_Line_Context_s* Dwarf_Line_Context

Used as the general reference line data (.debug_line).

## ◆ Dwarf_Loc_Head_c

typedef struct Dwarf_Loc_Head_c_s* Dwarf_Loc_Head_c

provides access to any sort of location description for DWARF2,3,4, or 5.

## ◆ Dwarf_Locdesc_c

typedef struct Dwarf_Locdesc_c_s* Dwarf_Locdesc_c

Provides access to Dwarf_Locdesc_c, a single location description

## ◆ Dwarf_Macro_Context

typedef struct Dwarf_Macro_Context_s* Dwarf_Macro_Context

Used as the general reference to DWARF5 .debug_macro data.

## ◆ Dwarf_Macro_Details

typedef struct Dwarf_Macro_Details_s Dwarf_Macro_Details

A handy short name for a Dwarf_Macro_Details_S struct.

## ◆ Dwarf_Obj_Access_Interface_a

typedef struct Dwarf_Obj_Access_Interface_a_s Dwarf_Obj_Access_Interface_a

Used for access to and setting up special data allowing access to DWARF even with no object files present

## ◆ Dwarf_Obj_Access_Methods_a

typedef struct Dwarf_Obj_Access_Methods_a_s Dwarf_Obj_Access_Methods_a

Used for access to and setting up special data allowing access to DWARF even with no object files present

## ◆ Dwarf_Obj_Access_Section_a

typedef struct Dwarf_Obj_Access_Section_a_s Dwarf_Obj_Access_Section_a

Used for access to and setting up special data allowing access to DWARF even with no object files present. The fields match up with Elf section headers, but for non-Elf many of the fields can be set to zero.

## ◆ dwarf_printf_callback_function_type

typedef void(* dwarf_printf_callback_function_type) (void *dw_user_pointer, const char *dw_linecontent)

Used as a function pointer to a user-written callback function. This provides a detailed content of line table data.

The default contents of the callback data are all zero bytes. So no callbacks involving this data will be done.

See dwarf_register_printf_callback()

Parameters

  dw_user_pointer | Passes your callback a pointer to space you allocated as an identifier of some kind in calling dwarf_register_printf_callback..
  dw_linecontent | Passes your callback null-terminated string with one line of detailed line table content.

## ◆ Dwarf_Ranges

typedef struct Dwarf_Ranges_s Dwarf_Ranges

Details of of non-contiguous address ranges of DIEs for DWARF2, DWARF3, and DWARF4. Sufficient for older dwarf.

dwr_addr1 and dwr_addr2 in the struct are offsets from a base address in the CU involved. To calculate actual range pc addresses see the example:

See also
  Example getting .debug_ranges data

## ◆ Dwarf_Regtable3

typedef struct Dwarf_Regtable3_s Dwarf_Regtable3

This structs provides a way for applications to select the number of frame registers and to select names for them.

rt3_rules and rt3_reg_table_size must be filled in before calling libdwarf. Filled in with a pointer to an array (pointer and array set up by the calling application) of rt3_reg_table_size Dwarf_Regtable_Entry3_s structs. libdwarf does not allocate or deallocate space for the rules, you must do so. libdwarf will initialize the contents rules array, you do not need to do so (though if you choose to initialize the array somehow that is ok: libdwarf will overwrite your initializations with its own).

Note that this definition can only deal correctly with register table size that fits in a 16 bit unsigned value.

## ◆ Dwarf_Regtable_Entry3

typedef struct Dwarf_Regtable_Entry3_s Dwarf_Regtable_Entry3

For each index i (naming a hardware register with dwarf number i) the following is true and defines the value of that register:

    If dw_regnum is Register DW_FRAME_UNDEFINED_VAL
        it is not DWARF register number but
        a place holder indicating the register
        has no defined value.
    If dw_regnum is Register DW_FRAME_SAME_VAL
        it  is not DWARF register number but
        a place holder indicating the register has the same
        value in the previous frame.

        DW_FRAME_UNDEFINED_VAL, DW_FRAME_SAME_VAL and
        DW_FRAME_CFA_COL are only present at libdwarf runtime.
        Never on disk.
        DW_FRAME_* Values present on disk are in dwarf.h
        Because DW_FRAME_SAME_VAL and DW_FRAME_UNDEFINED_VAL
        and DW_FRAME_CFA_COL are definable at runtime
        consider the names symbolic in this comment,
        not absolute.

    Otherwise: the register number is a DWARF register number
        (see ABI documents for how this translates to hardware/
        software register numbers in the machine hardware)
        and the following applies:

    In a cfa-defining entry (rt3_cfa_rule) the regnum is the
    CFA 'register number'. Which is some 'normal' register,
    not DW_FRAME_CFA_COL, nor DW_FRAME_SAME_VAL, nor
    DW_FRAME_UNDEFINED_VAL.

    If dw_value_type == DW_EXPR_OFFSET (the only
    possible case for dwarf2):
        If dw_offset_relevant is non-zero, then
            the value is stored at at the address
            CFA+N where N (dw_offset) is a signed offset,
            (not unsigned) and must be cast to Dwarf_Signed
            before use.
            dw_regnum is the cfa register rule which means
            one ignores dw_regnum and uses the CFA appropriately.
            Rule: Offset(N)
        If dw_offset_relevant is zero, then the
            value of the register
            is the value of (DWARF) register number dw_regnum.
            Rule: register(R)
    If dw_value_type  == DW_EXPR_VAL_OFFSET
        the  value of this register is CFA +N where
        N (dw_offset) is a signed offset (not unsigned)
        and must be cast to Dwarf_Signed before use.
        dw_regnum is the cfa register rule which means
        one ignores dw_regnum and uses the CFA appropriately.
        Rule: val_offset(N)
    If dw_value_type  == DW_EXPR_EXPRESSION
        The value of the register is the value at the address
        computed by evaluating the DWARF expression E.
        Rule: expression(E)
        The expression E byte stream is pointed to by
        block.bl_data.
        The expression length in bytes is given by
        block.bl_len.
    If dw_value_type  == DW_EXPR_VAL_EXPRESSION
        The value of the register is the value
        computed by evaluating the DWARF expression E.
        Rule: val_expression(E)
        The expression E byte stream is pointed to
        by block.bl_data.
        The expression length in bytes is given by
        block.bl_len.
    Other values of dw_value_type are an error.

    DWARF is showing what a debugger would act on to
    calculate actual register values. Libdwarf does
    not know any register values and cannot calculate
    any.  If a caller wishes to actually do the
    proper calculations the caller must provide
    its own register data space and calculate new values
    and new register status in the caller's register data.

    Note that this definition can only deal correctly
    with register numbers that fit in a 16 bit
    unsigned value.  Removing this
    restriction would force an incompatible
    change to several functions in the libdwarf API.

## ◆ Dwarf_Rnglists_Head

typedef struct Dwarf_Rnglists_Head_s* Dwarf_Rnglists_Head

Used for access to a set of DWARF5 debug_rnglists entries.

## ◆ Dwarf_Section

typedef struct Dwarf_Section_s* Dwarf_Section

An open Dwarf_Section points to data that libdwarf maintains to record object section data.

## ◆ Dwarf_Sig8

typedef struct Dwarf_Sig8_s Dwarf_Sig8

Used for signatures where ever they appear. It is not a string, it is 8 bytes of a signature one would use to find a type unit.

See also
  dwarf_formsig8

## ◆ Dwarf_Str_Offsets_Table

typedef struct Dwarf_Str_Offsets_Table_s* Dwarf_Str_Offsets_Table

Provides an access to the .debug_str_offsets section independently of other DWARF sections. Mainly of use in examining the .debug_str_offsets section content for problems.

## ◆ Dwarf_Type

typedef struct Dwarf_Type_s* Dwarf_Type

Before release 0.6.0 used to reference a reference to an entry in the .debug_pubtypes section (as well as the SGI-only extension .debug_types). However, we use Dwarf_Global instead now.

## ◆ Dwarf_Var

typedef struct Dwarf_Var_s* Dwarf_Var

An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.

## ◆ Dwarf_Weak

typedef struct Dwarf_Weak_s* Dwarf_Weak

An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.

## ◆ Dwarf_Xu_Index_Header

typedef struct Dwarf_Xu_Index_Header_s* Dwarf_Xu_Index_Header

Used to reference .debug_cu_index or .debug_tu_index sections in a split-dwarf package file.

## Enumeration Type Documentation

## ◆ Dwarf_Sec_Alloc_Pref

enum Dwarf_Sec_Alloc_Pref

Since
  {0.12.0}

This is part of the allowance of mmap for loading sections of an object file.

The option of using mmap() only applies to Elf object files in this release.

See also
  dwarf_set_load_preference()