libdwarf
|
Data Structures | |
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_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 |
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.
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.
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.
Provides access to Dwarf_Locdesc_c, a single location description
provides access to any sort of location description for DWARF2,3,4, or 5.
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
Access to DW_AT_discr_list array of discriminant values.
The basis for access to DWARF frame instructions (FDE or CIE) in full detail.
dwarf_printf_callback_function_type |
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()
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. |
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.
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:
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. 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.
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.
&error is used in calls to return error details when the call returns DW_DLV_ERROR.
An open Dwarf_Debug points to data that libdwarf maintains to support libdwarf calls.
Used to reference a DWARF Debugging Information Entry.
Used to reference a table in section .debug_addr
Used to reference a line reference from the .debug_line section.
Used to reference a reference to an entry in the .debug_pubnames section.
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.
An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.
An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.
An SGI extension type which is no longer used at all. As of release 0.6.0 use Dwarf_Global instead.
Used to reference a Dwarf_Die attribute
Used to reference a Dwarf_Abbrev. Usually Dwarf_Abbrev are fully handled inside the library so one rarely needs to declare the type.
Used to reference .debug_frame or .eh_frame FDE.
Used to reference .debug_frame or .eh_frame CIE.
Used to reference a code address range in a section such as .debug_info.
Used to reference .gdb_index section data which is a fast-access section by and for gdb.
Used to reference .debug_cu_index or .debug_tu_index sections in a split-dwarf package file.
Used as the general reference line data (.debug_line).
Used as the general reference to DWARF5 .debug_macro data.
Used as the general reference to the DWARF5 .debug_names section.
Dwarf_Handler |
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.
A handy short name for a Dwarf_Macro_Details_S struct.
A handy short name for a Dwarf_Debug_Fission_Per_CU_s struct.
Used for access to and setting up special data allowing access to DWARF even with no object files present
Used for access to and setting up special data allowing access to DWARF even with no object files present
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.
Used for access to a set of DWARF5 debug_rnglists entries.