libdwarf A library for parsing DWARF debug information
API | Implementation | Manual Page | Test Cases | Compatible w/ SGI | Comments |
---|---|---|---|---|---|
Error Handling | |||||
dwarf_seterrhand() |
Y | Y | N | Y | Extended semantics. |
dwarf_seterrarg() |
Y | Y | N | Y | Extended semantics. |
dwarf_errno |
Y | Y | N | Y | Our Dwarf_Error is not opaque |
dwarf_errmsg |
Y | Y | N | Y | Our Dwarf_Error is not opaque |
Initialization | |||||
dwarf_init() |
Y | Y | Y | Y | |
dwarf_elf_init() |
Y | Y | N | Y | |
dwarf_get_elf() |
Y | Y | N | Y | |
dwarf_finish() |
Y | Y | N | Y | |
Misc | |||||
dwarf_get_address_size() |
Y | Y | Y | Y | |
dwarf_dealloc() |
Y | Y | N | Y | Ours is a dummy call |
dwarf_set_reloc_application() |
Y | N | N | Y | |
DIE delivery | |||||
dwarf_next_cu_header |
Y | Y | Y | Y | |
dwarf_next_cu_header_b |
Y | N | Y | Y | |
dwarf_siblingof() |
Y | Y | Y | Y | |
dwarf_child() |
Y | Y | Y | Y | |
dwarf_offdie() |
Y | Y | N | Y | |
DIE query | |||||
dwarf_tag() |
Y | Y | Y | Y | |
dwarf_dieoffset() |
Y | Y | Y | Y | |
dwarf_die_CU_offset() |
Y | Y | Y | Y | |
dwarf_die_CU_offset_range() |
Y | Y | Y | Y | |
dwarf_diename() |
Y | Y | Y | Y | |
dwarf_die_abbrev_code() |
Y | Y | Y | Y | |
dwarf_attrlist |
Y | Y | Y | Y | |
dwarf_hasattr |
Y | Y | Y | Y | |
dwarf_attr |
Y | Y | Y | Y | |
dwarf_lowpc |
Y | Y | Y | Y | |
dwarf_highpc |
Y | Y | Y | Y | |
dwarf_bytesize |
Y | Y | Y | Y | |
dwarf_bitsize |
Y | Y | Y | Y | |
dwarf_bitoffset |
Y | Y | Y | Y | |
dwarf_srclang |
Y | Y | Y | Y | |
dwarf_arrayorder |
Y | Y | Y | Y | |
dwarf_get_cu_die_offset_given_cu_header_offset() |
Y | Y | Y | Y | Name too long... |
Attribute Form Queries | |||||
dwarf_hasform |
Y | Y | Y | Y | |
dwarf_whatform |
Y | Y | Y | Y | |
dwarf_whatform_direct |
Y | Y | Y | Y | |
dwarf_whatattr |
Y | Y | Y | Y | |
dwarf_formref |
Y | Y | Y | Y | |
dwarf_global_formref |
Y | Y | Y | Y | |
dwarf_formaddr |
Y | N | Y | Y | |
dwarf_formexprloc |
Y | N | N | Y | |
dwarf_formflag |
Y | Y | Y | Y | |
dwarf_formudata |
Y | Y | Y | Y | |
dwarf_formsdata |
Y | Y | Y | Y | |
dwarf_formsig8 |
Y | N | N | Y | |
dwarf_formblock |
Y | N | Y | Y | |
dwarf_formstring |
Y | N | Y | Y | |
dwarf_get_form_class |
Y | N | N | Y | |
dwarf_attrval_flag |
Y | N | N | N | Our Extension |
dwarf_attrval_string |
Y | N | N | N | Our Extension |
dwarf_attrval_signed |
Y | N | N | N | Our Extension |
dwarf_attrval_unsigned |
Y | N | N | N | Our Extension |
Location List Queries | |||||
dwarf_loclist_n() |
Y | N | Y | Y | |
dwarf_loclist() |
Y | N | Y | Y | |
dwarf_loclist_from_expr() |
Y | N | N | Y | |
dwarf_loclist_from_expr_a() |
Y | N | N | Y | |
dwarf_loclist_from_expr_dealloc() |
Y | N | N | N | Our Extension |
dwarf_get_loclist_entry() |
Y | N | N | Y | |
Line Number Operations | |||||
dwarf_srclines() |
Y | N | Y | Y | |
dwarf_srcfiles() |
Y | Y | Y | Y | |
dwarf_linebeginstatement() |
Y | N | Y | Y | |
dwarf_lineendsequence() |
Y | N | Y | Y | |
dwarf_lineno() |
Y | N | Y | Y | |
dwarf_line_srcfileno() |
Y | N | Y | Y | |
dwarf_lineaddr() |
Y | N | Y | Y | |
dwarf_lineoff() |
Y | N | Y | Y | |
dwarf_linesrc() |
Y | N | Y | Y | |
dwarf_lineblock() |
Y | N | Y | Y | |
Global Name Space Operations | |||||
dwarf_get_globals() |
Y | N | Y | Y | |
dwarf_globname() |
Y | N | Y | Y | |
dwarf_global_die_offset() |
Y | N | Y | Y | |
dwarf_global_cu_offset() |
Y | N | Y | Y | |
dwarf_global_name_offsets() |
Y | N | Y | Y | |
Type Names Operations | |||||
dwarf_get_pubtypes() |
Y | N | N | Y | |
dwarf_pubtypename() |
Y | N | N | Y | |
dwarf_pubtype_die_offset() |
Y | N | N | Y | |
dwarf_pubtype_cu_offset() |
Y | N | N | Y | |
dwarf_pubtype_name_offsets() |
Y | N | N | Y | |
User Defined Type Names Operations | |||||
dwarf_get_types() |
Y | N | N | Y | |
dwarf_typename() |
Y | N | N | Y | |
dwarf_type_die_offset() |
Y | N | N | Y | |
dwarf_type_cu_offset() |
Y | N | N | Y | |
dwarf_type_name_offsets() |
Y | N | N | Y | |
Static Variable Names Operations | |||||
dwarf_get_vars() |
Y | N | N | Y | |
dwarf_varname() |
Y | N | N | Y | |
dwarf_var_die_offset() |
Y | N | N | Y | |
dwarf_var_cu_offset() |
Y | N | N | Y | |
dwarf_var_name_offsets() |
Y | N | N | Y | |
Static Function Names Operations | |||||
dwarf_get_funcs() |
Y | N | N | Y | |
dwarf_funcname() |
Y | N | N | Y | |
dwarf_func_die_offset() |
Y | N | N | Y | |
dwarf_func_cu_offset() |
Y | N | N | Y | |
dwarf_func_name_offsets() |
Y | N | N | Y | |
Weak Names Space Operations | |||||
dwarf_get_weaks() |
Y | N | N | Y | |
dwarf_weakname() |
Y | N | N | Y | |
dwarf_weak_die_offset() |
Y | N | N | Y | |
dwarf_weak_cu_offset() |
Y | N | N | Y | |
dwarf_weak_name_offsets() |
Y | N | N | Y | |
Macro Information Operations | |||||
dwarf_find_macro_value_start() |
Y | N | Y | Y | |
dwarf_get_macro_details() |
Y | N | Y | Y | |
Call Frame Operations | |||||
dwarf_get_fde_list() |
Y | N | Y | Y | |
dwarf_get_fde_list_eh() |
Y | N | Y | Y | |
dwarf_get_fde_n() |
Y | N | Y | Y | |
dwarf_get_fde_at_pc() |
Y | N | Y | Y | |
dwarf_get_cie_of_fde() |
Y | N | Y | Y | |
dwarf_get_fde_for_die() |
Y | N | N | Y | |
dwarf_get_fde_range() |
Y | N | Y | Y | |
dwarf_get_cie_info() |
Y | N | Y | Y | |
dwarf_get_fde_instr_bytes() |
Y | N | Y | Y | |
dwarf_get_fde_info_for_reg() |
Y | N | Y | Y | |
dwarf_get_fde_info_for_all_regs() |
Y | N | Y | Y | |
dwarf_get_fde_info_for_reg3() |
Y | N | Y | Y | |
dwarf_get_fde_info_for_cfa_reg3() |
Y | N | Y | Y | |
dwarf_get_fde_info_for_all_regs3() |
Y | N | Y | Y | |
dwarf_set_frame_rule_table_size() |
Y | N | N | Y | |
dwarf_set_frame_rule_initial_value() |
Y | N | N | Y | |
dwarf_set_frame_cfa_value() |
Y | N | Y | Y | |
dwarf_set_frame_same_value() |
Y | N | N | Y | |
dwarf_set_frame_undefined_value() |
Y | N | N | Y | |
dwarf_expand_frame_instructions() |
Y | N | N | Y | |
dwarf_free_expanded_frame_instructions() |
Y | N | N | N | Our Extension |
Abbreviations access | |||||
dwarf_get_abbrev() |
Y | N | Y | Y | |
dwarf_get_abbrev_tag() |
Y | N | Y | Y | |
dwarf_get_abbrev_code() |
Y | N | Y | Y | |
dwarf_get_abbrev_children_flag() |
Y | N | Y | Y | |
dwarf_get_abbrev_entry() |
Y | N | Y | Y | |
String Section Operations | |||||
dwarf_get_str() |
Y | N | N | Y | |
Address Range Operations | |||||
dwarf_get_aranges() |
Y | N | Y | Y | |
dwarf_get_arange() |
Y | N | Y | Y | |
dwarf_get_cu_die_offset() |
Y | N | Y | Y | |
dwarf_get_arange_cu_header_offset() |
Y | N | Y | Y | |
dwarf_get_arange_info() |
Y | N | Y | Y | |
Ranges Operations | |||||
dwarf_get_ranges() |
Y | N | Y | Y | |
dwarf_get_ranges_a() |
Y | N | Y | Y | Ours is identical to dwarf_get_ranges() |
dwarf_ranges_dealloc() |
Y | N | N | Y | no-op |
Convert Names To Strings | |||||
dwarf_get_ACCESS_name() |
Y | N | N | Y | |
dwarf_get_AT_name() |
Y | N | N | Y | |
dwarf_get_ATE_name() |
Y | N | N | Y | |
dwarf_get_ADDR_name() |
N | ||||
dwarf_get_ATCF_name() |
N | ||||
dwarf_get_CC_name() |
Y | N | N | Y | |
dwarf_get_CFA_name() |
Y | N | N | Y | |
dwarf_get_CHILDREN_name() |
Y | N | N | Y | |
dwarf_get_children_name() |
N | ||||
dwarf_get_DS_name() |
N | ||||
dwarf_get_DSC_name() |
Y | N | N | Y | |
dwarf_get_EH_name() |
N | ||||
dwarf_get_END_name() |
N | ||||
dwarf_get_FORM_name() |
Y | N | N | Y | |
dwarf_get_FRAME_name() |
N | ||||
dwarf_get_ID_name() |
Y | N | N | Y | |
dwarf_get_INL_name() |
Y | N | N | Y | |
dwarf_get_LANG_name() |
Y | N | N | Y | |
dwarf_get_LNE_name() |
Y | N | N | Y | |
dwarf_get_LNS_name() |
Y | N | N | Y | |
dwarf_get_MACINFO_name() |
Y | N | N | Y | |
dwarf_get_OP_name() |
Y | N | N | Y | |
dwarf_get_ORD_name() |
Y | N | N | Y | |
dwarf_get_TAG_name() |
Y | N | N | Y | |
dwarf_get_VIRTUALITY_name() |
Y | N | N | Y | |
dwarf_get_VIS_name() |
Y | N | N | Y | |
Producer General | |||||
dwarf_producer_init() |
Y | N | N | Y | |
dwarf_producer_init_b() |
Y | N | N | Y | |
dwarf_transform_to_disk_form() |
Y | N | N | Y | |
dwarf_get_section_bytes() |
Y | N | N | Y | |
dwarf_get_relocation_info_count() |
Y | N | N | Y | |
dwarf_get_relocation_info() |
Y | N | N | Y | |
dwarf_reset_section_bytes() |
Y | N | N | Y | |
dwarf_producer_init() |
N | ||||
Debugging Information Entry Creation | |||||
dwarf_add_die_to_debug() |
Y | N | N | Y | |
dwarf_new_die() |
Y | N | N | Y | |
dwarf_die_link() |
Y | N | N | Y | needs further verification |
Attribute Creation | |||||
dwarf_add_AT_location_expr() |
Y | N | N | Y | |
dwarf_add_AT_name() |
Y | N | N | Y | We always use DW_FORM_strp |
dwarf_add_AT_comp_dir() |
Y | N | N | Y | We always use DW_FORM_strp |
dwarf_add_AT_producer() |
Y | N | N | Y | We always use DW_FORM_strp |
dwarf_add_AT_const_value_signedint() |
Y | N | N | Y | |
dwarf_add_AT_const_value_unsignedint() |
Y | N | N | Y | |
dwarf_add_AT_const_value_string() |
Y | N | N | Y | We always use DW_FORM_strp |
dwarf_add_AT_targ_address() |
Y | N | N | Y | |
dwarf_add_AT_targ_address_b() |
Y | N | N | Y | |
dwarf_add_AT_dataref() |
Y | N | N | Y | |
dwarf_add_AT_ref_address() |
Y | N | N | Y | |
dwarf_add_AT_unsigned_const() |
Y | N | N | Y | |
dwarf_add_AT_signed_const() |
Y | N | N | Y | |
dwarf_add_AT_reference() |
Y | N | N | Y | |
dwarf_add_AT_flag() |
Y | N | N | Y | |
dwarf_add_AT_string() |
Y | N | N | Y | We always use DW_FORM_strp |
Expression Creation | |||||
dwarf_new_expr() |
Y | N | N | Y | |
dwarf_add_expr_gen() |
Y | N | N | Y | |
dwarf_add_expr_addr() |
Y | N | N | Y | |
dwarf_add_expr_addr_b() |
Y | N | N | Y | |
dwarf_expr_current_offset() |
Y | N | N | Y | |
dwarf_expr_into_block() |
Y | N | N | Y | |
Line Number Creation | |||||
dwarf_add_line_entry() |
Y | N | N | Y | |
dwarf_lne_set_address() |
Y | N | N | Y | |
dwarf_lne_end_sequence() |
Y | N | N | Y | |
dwarf_add_directory_decl() |
Y | N | N | Y | |
dwarf_add_file_decl() |
Y | N | N | Y | |
Arange Creation | |||||
dwarf_add_arange() |
Y | N | N | Y | |
dwarf_add_arange_b() |
Y | N | N | Y | |
Pubnames Creation | |||||
dwarf_add_pubname() |
Y | N | N | Y | |
Weaknames Creation | |||||
dwarf_add_weakname() |
Y | N | N | Y | |
Static Function Name Creation | |||||
dwarf_add_funcname() |
Y | N | N | Y | |
User-defined Type Name Creation | |||||
dwarf_add_typename() |
Y | N | N | Y | |
Static Variable Name Creation | |||||
dwarf_add_varname() |
Y | N | N | Y | |
Macro Info Creation | |||||
dwarf_def_macro() |
Y | N | N | Y | |
dwarf_undef_macro() |
Y | N | N | Y | |
dwarf_start_macro_file() |
Y | N | N | Y | |
dwarf_end_macro_file() |
Y | N | N | Y | |
dwarf_vendor_ext() |
Y | N | N | Y | |
Frame Info Creation | |||||
dwarf_new_fde() |
Y | N | N | Y | |
dwarf_add_frame_cie() |
Y | N | N | Y | |
dwarf_add_frame_fde() |
Y | N | N | Y | |
dwarf_add_frame_fde_b() |
Y | N | N | Y | |
dwarf_add_frame_info() |
N | SGI libdwarf MIPS extension? | |||
dwarf_add_frame_info_b() |
N | SGI libdwarf MIPS extension? | |||
dwarf_fde_cfa_offset() |
Y | N | N | Y | |
dwarf_add_fde_inst() |
Y | N | N | Y |