ELF Tool Chain / Wiki (original) (raw)

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