12de3b87aSKai Wang /*- 22de3b87aSKai Wang * Copyright (c) 2007 John Birrell (jb@freebsd.org) 3cf781b2eSEd Maste * Copyright (c) 2009-2011,2014 Kai Wang 42de3b87aSKai Wang * All rights reserved. 52de3b87aSKai Wang * 62de3b87aSKai Wang * Redistribution and use in source and binary forms, with or without 72de3b87aSKai Wang * modification, are permitted provided that the following conditions 82de3b87aSKai Wang * are met: 92de3b87aSKai Wang * 1. Redistributions of source code must retain the above copyright 102de3b87aSKai Wang * notice, this list of conditions and the following disclaimer. 112de3b87aSKai Wang * 2. Redistributions in binary form must reproduce the above copyright 122de3b87aSKai Wang * notice, this list of conditions and the following disclaimer in the 132de3b87aSKai Wang * documentation and/or other materials provided with the distribution. 142de3b87aSKai Wang * 152de3b87aSKai Wang * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 162de3b87aSKai Wang * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 172de3b87aSKai Wang * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 182de3b87aSKai Wang * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 192de3b87aSKai Wang * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 202de3b87aSKai Wang * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 212de3b87aSKai Wang * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 222de3b87aSKai Wang * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 232de3b87aSKai Wang * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 242de3b87aSKai Wang * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 252de3b87aSKai Wang * SUCH DAMAGE. 262de3b87aSKai Wang * 27715d1396SEd Maste * $Id: libdwarf.h 3578 2017-09-14 02:21:28Z emaste $ 282de3b87aSKai Wang */ 292de3b87aSKai Wang 302de3b87aSKai Wang #ifndef _LIBDWARF_H_ 312de3b87aSKai Wang #define _LIBDWARF_H_ 322de3b87aSKai Wang 332de3b87aSKai Wang #include <libelf.h> 342de3b87aSKai Wang 352de3b87aSKai Wang typedef int Dwarf_Bool; 36839529caSEd Maste typedef uint64_t Dwarf_Off; 372de3b87aSKai Wang typedef uint64_t Dwarf_Unsigned; 382de3b87aSKai Wang typedef uint16_t Dwarf_Half; 392de3b87aSKai Wang typedef uint8_t Dwarf_Small; 402de3b87aSKai Wang typedef int64_t Dwarf_Signed; 412de3b87aSKai Wang typedef uint64_t Dwarf_Addr; 422de3b87aSKai Wang typedef void *Dwarf_Ptr; 432de3b87aSKai Wang 442de3b87aSKai Wang typedef struct _Dwarf_Abbrev *Dwarf_Abbrev; 452de3b87aSKai Wang typedef struct _Dwarf_Arange *Dwarf_Arange; 462de3b87aSKai Wang typedef struct _Dwarf_ArangeSet *Dwarf_ArangeSet; 472de3b87aSKai Wang typedef struct _Dwarf_Attribute *Dwarf_Attribute; 482de3b87aSKai Wang typedef struct _Dwarf_Attribute *Dwarf_P_Attribute; 492de3b87aSKai Wang typedef struct _Dwarf_AttrDef *Dwarf_AttrDef; 502de3b87aSKai Wang typedef struct _Dwarf_Cie *Dwarf_Cie; 512de3b87aSKai Wang typedef struct _Dwarf_Cie *Dwarf_P_Cie; 522de3b87aSKai Wang typedef struct _Dwarf_Debug *Dwarf_Debug; 532de3b87aSKai Wang typedef struct _Dwarf_Debug *Dwarf_P_Debug; 542de3b87aSKai Wang typedef struct _Dwarf_Die *Dwarf_Die; 552de3b87aSKai Wang typedef struct _Dwarf_Die *Dwarf_P_Die; 562de3b87aSKai Wang typedef struct _Dwarf_Fde *Dwarf_Fde; 572de3b87aSKai Wang typedef struct _Dwarf_Fde *Dwarf_P_Fde; 582de3b87aSKai Wang typedef struct _Dwarf_FrameSec *Dwarf_FrameSec; 592de3b87aSKai Wang typedef struct _Dwarf_Line *Dwarf_Line; 602de3b87aSKai Wang typedef struct _Dwarf_LineFile *Dwarf_LineFile; 612de3b87aSKai Wang typedef struct _Dwarf_LineInfo *Dwarf_LineInfo; 622de3b87aSKai Wang typedef struct _Dwarf_MacroSet *Dwarf_MacroSet; 632de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_NamePair; 642de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_Func; 652de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_Global; 662de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_Type; 672de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_Var; 682de3b87aSKai Wang typedef struct _Dwarf_NamePair *Dwarf_Weak; 692de3b87aSKai Wang typedef struct _Dwarf_NameTbl *Dwarf_NameTbl; 702de3b87aSKai Wang typedef struct _Dwarf_NameSec *Dwarf_NameSec; 712de3b87aSKai Wang typedef struct _Dwarf_P_Expr *Dwarf_P_Expr; 722de3b87aSKai Wang typedef struct _Dwarf_Rangelist *Dwarf_Rangelist; 732de3b87aSKai Wang 742de3b87aSKai Wang typedef enum { 752de3b87aSKai Wang DW_OBJECT_MSB, 762de3b87aSKai Wang DW_OBJECT_LSB 772de3b87aSKai Wang } Dwarf_Endianness; 782de3b87aSKai Wang 792de3b87aSKai Wang typedef struct { 802de3b87aSKai Wang Dwarf_Addr addr; 812de3b87aSKai Wang Dwarf_Unsigned size; 822de3b87aSKai Wang const char *name; 832de3b87aSKai Wang } Dwarf_Obj_Access_Section; 842de3b87aSKai Wang 852de3b87aSKai Wang typedef struct { 862de3b87aSKai Wang int (*get_section_info)(void *_obj, Dwarf_Half _index, 872de3b87aSKai Wang Dwarf_Obj_Access_Section *_ret_section, int *_error); 882de3b87aSKai Wang Dwarf_Endianness (*get_byte_order)(void *_obj); 892de3b87aSKai Wang Dwarf_Small (*get_length_size)(void *_obj); 902de3b87aSKai Wang Dwarf_Small (*get_pointer_size)(void *_obj); 912de3b87aSKai Wang Dwarf_Unsigned (*get_section_count)(void *_obj); 922de3b87aSKai Wang int (*load_section)(void *_obj, Dwarf_Half _index, 932de3b87aSKai Wang Dwarf_Small **_ret_data, int *_error); 942de3b87aSKai Wang } Dwarf_Obj_Access_Methods; 952de3b87aSKai Wang 962de3b87aSKai Wang typedef struct { 972de3b87aSKai Wang void *object; 982de3b87aSKai Wang const Dwarf_Obj_Access_Methods *methods; 992de3b87aSKai Wang } Dwarf_Obj_Access_Interface; 1002de3b87aSKai Wang 1012de3b87aSKai Wang typedef int (*Dwarf_Callback_Func)(char *_name, int _size, 1022de3b87aSKai Wang Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 1032de3b87aSKai Wang Dwarf_Unsigned _info, int *_index, int *_error); 1042de3b87aSKai Wang 1052de3b87aSKai Wang typedef int (*Dwarf_Callback_Func_b)(char *_name, int _size, 1062de3b87aSKai Wang Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 1072de3b87aSKai Wang Dwarf_Unsigned _info, Dwarf_Unsigned *_index, int *_error); 1082de3b87aSKai Wang 1092de3b87aSKai Wang typedef Dwarf_Unsigned Dwarf_Tag; 1102de3b87aSKai Wang 1112de3b87aSKai Wang typedef struct { 1122de3b87aSKai Wang Dwarf_Small lr_atom; 1132de3b87aSKai Wang Dwarf_Unsigned lr_number; 1142de3b87aSKai Wang Dwarf_Unsigned lr_number2; 1152de3b87aSKai Wang Dwarf_Unsigned lr_offset; 1162de3b87aSKai Wang } Dwarf_Loc; 1172de3b87aSKai Wang 1182de3b87aSKai Wang typedef struct { 1192de3b87aSKai Wang Dwarf_Addr ld_lopc; 1202de3b87aSKai Wang Dwarf_Addr ld_hipc; 1212de3b87aSKai Wang Dwarf_Half ld_cents; 1222de3b87aSKai Wang Dwarf_Loc *ld_s; 1232de3b87aSKai Wang } Dwarf_Locdesc; 1242de3b87aSKai Wang 1252de3b87aSKai Wang typedef struct { 1262de3b87aSKai Wang char signature[8]; 1272de3b87aSKai Wang } Dwarf_Sig8; 1282de3b87aSKai Wang 1292de3b87aSKai Wang typedef struct { 1302de3b87aSKai Wang Dwarf_Unsigned bl_len; 1312de3b87aSKai Wang Dwarf_Ptr bl_data; 1322de3b87aSKai Wang } Dwarf_Block; 1332de3b87aSKai Wang 1342de3b87aSKai Wang enum Dwarf_Ranges_Entry_Type { 1352de3b87aSKai Wang DW_RANGES_ENTRY, 1362de3b87aSKai Wang DW_RANGES_ADDRESS_SELECTION, 1372de3b87aSKai Wang DW_RANGES_END 1382de3b87aSKai Wang }; 1392de3b87aSKai Wang 1402de3b87aSKai Wang typedef struct { 1412de3b87aSKai Wang Dwarf_Unsigned dwr_addr1; 1422de3b87aSKai Wang Dwarf_Unsigned dwr_addr2; 1432de3b87aSKai Wang enum Dwarf_Ranges_Entry_Type dwr_type; 1442de3b87aSKai Wang } Dwarf_Ranges; 1452de3b87aSKai Wang 1462de3b87aSKai Wang enum Dwarf_Form_Class { 1472de3b87aSKai Wang DW_FORM_CLASS_UNKNOWN, 1482de3b87aSKai Wang DW_FORM_CLASS_ADDRESS, 1492de3b87aSKai Wang DW_FORM_CLASS_BLOCK, 1502de3b87aSKai Wang DW_FORM_CLASS_CONSTANT, 1512de3b87aSKai Wang DW_FORM_CLASS_EXPRLOC, 1522de3b87aSKai Wang DW_FORM_CLASS_FLAG, 1532de3b87aSKai Wang DW_FORM_CLASS_LINEPTR, 1542de3b87aSKai Wang DW_FORM_CLASS_LOCLISTPTR, 1552de3b87aSKai Wang DW_FORM_CLASS_MACPTR, 1562de3b87aSKai Wang DW_FORM_CLASS_RANGELISTPTR, 1572de3b87aSKai Wang DW_FORM_CLASS_REFERENCE, 1582de3b87aSKai Wang DW_FORM_CLASS_STRING 1592de3b87aSKai Wang }; 1602de3b87aSKai Wang 1612de3b87aSKai Wang #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER 1622de3b87aSKai Wang #define DW_FRAME_HIGHEST_NORMAL_REGISTER 63 1632de3b87aSKai Wang #endif 1642de3b87aSKai Wang 1652de3b87aSKai Wang #define DW_FRAME_RA_COL (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1) 1662de3b87aSKai Wang #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2) 1672de3b87aSKai Wang 1682de3b87aSKai Wang #ifndef DW_FRAME_LAST_REG_NUM 1692de3b87aSKai Wang #define DW_FRAME_LAST_REG_NUM (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3) 1702de3b87aSKai Wang #endif 1712de3b87aSKai Wang 1722de3b87aSKai Wang #ifndef DW_FRAME_REG_INITIAL_VALUE 1732de3b87aSKai Wang #define DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL 1742de3b87aSKai Wang #endif 1752de3b87aSKai Wang 1762de3b87aSKai Wang #define DW_FRAME_UNDEFINED_VAL 1034 1772de3b87aSKai Wang #define DW_FRAME_SAME_VAL 1035 1782de3b87aSKai Wang #define DW_FRAME_CFA_COL3 1436 1792de3b87aSKai Wang 1802de3b87aSKai Wang #define DW_EXPR_OFFSET 0 1812de3b87aSKai Wang #define DW_EXPR_VAL_OFFSET 1 1822de3b87aSKai Wang #define DW_EXPR_EXPRESSION 2 1832de3b87aSKai Wang #define DW_EXPR_VAL_EXPRESSION 3 1842de3b87aSKai Wang 1852de3b87aSKai Wang /* 1862de3b87aSKai Wang * Frame operation only for DWARF 2. 1872de3b87aSKai Wang */ 1882de3b87aSKai Wang 1892de3b87aSKai Wang #define DW_FRAME_CFA_COL 0 1902de3b87aSKai Wang 1912de3b87aSKai Wang typedef struct { 1922de3b87aSKai Wang Dwarf_Small fp_base_op; 1932de3b87aSKai Wang Dwarf_Small fp_extended_op; 1942de3b87aSKai Wang Dwarf_Half fp_register; 1952de3b87aSKai Wang Dwarf_Signed fp_offset; 1962de3b87aSKai Wang Dwarf_Off fp_instr_offset; 1972de3b87aSKai Wang } Dwarf_Frame_Op; 1982de3b87aSKai Wang 1992de3b87aSKai Wang #ifndef DW_REG_TABLE_SIZE 2002de3b87aSKai Wang #define DW_REG_TABLE_SIZE 66 2012de3b87aSKai Wang #endif 2022de3b87aSKai Wang 2032de3b87aSKai Wang typedef struct { 2042de3b87aSKai Wang struct { 2052de3b87aSKai Wang Dwarf_Small dw_offset_relevant; 2062de3b87aSKai Wang Dwarf_Half dw_regnum; 2072de3b87aSKai Wang Dwarf_Addr dw_offset; 2082de3b87aSKai Wang } rules[DW_REG_TABLE_SIZE]; 2092de3b87aSKai Wang } Dwarf_Regtable; 2102de3b87aSKai Wang 2112de3b87aSKai Wang /* 2122de3b87aSKai Wang * Frame operation for DWARF 3 and DWARF 2. 2132de3b87aSKai Wang */ 2142de3b87aSKai Wang 2152de3b87aSKai Wang typedef struct { 2162de3b87aSKai Wang Dwarf_Small fp_base_op; 2172de3b87aSKai Wang Dwarf_Small fp_extended_op; 2182de3b87aSKai Wang Dwarf_Half fp_register; 2192de3b87aSKai Wang Dwarf_Unsigned fp_offset_or_block_len; 2202de3b87aSKai Wang Dwarf_Small *fp_expr_block; 2212de3b87aSKai Wang Dwarf_Off fp_instr_offset; 2222de3b87aSKai Wang } Dwarf_Frame_Op3; 2232de3b87aSKai Wang 2242de3b87aSKai Wang typedef struct { 2252de3b87aSKai Wang Dwarf_Small dw_offset_relevant; 2262de3b87aSKai Wang Dwarf_Small dw_value_type; 2272de3b87aSKai Wang Dwarf_Half dw_regnum; 2282de3b87aSKai Wang Dwarf_Unsigned dw_offset_or_block_len; 2292de3b87aSKai Wang Dwarf_Ptr dw_block_ptr; 2302de3b87aSKai Wang } Dwarf_Regtable_Entry3; 2312de3b87aSKai Wang 2322de3b87aSKai Wang typedef struct { 2332de3b87aSKai Wang Dwarf_Regtable_Entry3 rt3_cfa_rule; 2342de3b87aSKai Wang Dwarf_Half rt3_reg_table_size; 2352de3b87aSKai Wang Dwarf_Regtable_Entry3 *rt3_rules; 2362de3b87aSKai Wang } Dwarf_Regtable3; 2372de3b87aSKai Wang 2382de3b87aSKai Wang typedef struct { 2392de3b87aSKai Wang Dwarf_Off dmd_offset; 2402de3b87aSKai Wang Dwarf_Small dmd_type; 2412de3b87aSKai Wang Dwarf_Signed dmd_lineno; 2422de3b87aSKai Wang Dwarf_Signed dmd_fileindex; 2432de3b87aSKai Wang char *dmd_macro; 2442de3b87aSKai Wang } Dwarf_Macro_Details; 2452de3b87aSKai Wang 2462de3b87aSKai Wang /* 2472de3b87aSKai Wang * Symbols denoting allocation types, for use with dwarf_dealloc(3). 2482de3b87aSKai Wang */ 2492de3b87aSKai Wang 2502de3b87aSKai Wang enum Dwarf_Allocation_Type { 2512de3b87aSKai Wang DW_DLA_ABBREV, 2522de3b87aSKai Wang DW_DLA_ADDR, 2532de3b87aSKai Wang DW_DLA_ARANGE, 2542de3b87aSKai Wang DW_DLA_ATTR, 2552de3b87aSKai Wang DW_DLA_BLOCK, 2562de3b87aSKai Wang DW_DLA_BOUNDS, 2572de3b87aSKai Wang DW_DLA_CIE, 2582de3b87aSKai Wang DW_DLA_DEBUG, 2592de3b87aSKai Wang DW_DLA_DIE, 2602de3b87aSKai Wang DW_DLA_ELLIST, 2612de3b87aSKai Wang DW_DLA_ERROR, 2622de3b87aSKai Wang DW_DLA_FDE, 2632de3b87aSKai Wang DW_DLA_FRAME_BLOCK, 2642de3b87aSKai Wang DW_DLA_FRAME_OP, 2652de3b87aSKai Wang DW_DLA_FUNC, 2662de3b87aSKai Wang DW_DLA_GLOBAL, 2672de3b87aSKai Wang DW_DLA_LINE, 2682de3b87aSKai Wang DW_DLA_LINEBUF, 2692de3b87aSKai Wang DW_DLA_LIST, 2702de3b87aSKai Wang DW_DLA_LOC, 2712de3b87aSKai Wang DW_DLA_LOCDESC, 2722de3b87aSKai Wang DW_DLA_LOC_BLOCK, 2732de3b87aSKai Wang DW_DLA_RANGES, 2742de3b87aSKai Wang DW_DLA_STRING, 2752de3b87aSKai Wang DW_DLA_SUBSCR, 2762de3b87aSKai Wang DW_DLA_TYPE, 2772de3b87aSKai Wang DW_DLA_TYPENAME, 2782de3b87aSKai Wang DW_DLA_VAR, 2792de3b87aSKai Wang DW_DLA_WEAK 2802de3b87aSKai Wang }; 2812de3b87aSKai Wang 2822de3b87aSKai Wang /* 2832de3b87aSKai Wang * Relocation Type. 2842de3b87aSKai Wang */ 2852de3b87aSKai Wang enum Dwarf_Rel_Type { 2862de3b87aSKai Wang dwarf_drt_none = 0, 2872de3b87aSKai Wang dwarf_drt_data_reloc, 2882de3b87aSKai Wang dwarf_drt_segment_rel, 2892de3b87aSKai Wang dwarf_drt_first_of_length_pair, 2902de3b87aSKai Wang dwarf_drt_second_of_length_pair 2912de3b87aSKai Wang }; 2922de3b87aSKai Wang 2932de3b87aSKai Wang /* 2942de3b87aSKai Wang * Relocation Entry. 2952de3b87aSKai Wang */ 2962de3b87aSKai Wang typedef struct Dwarf_Relocation_Data_s { 2972de3b87aSKai Wang unsigned char drd_type; 2982de3b87aSKai Wang unsigned char drd_length; 2992de3b87aSKai Wang Dwarf_Unsigned drd_offset; 3002de3b87aSKai Wang Dwarf_Unsigned drd_symbol_index; 3012de3b87aSKai Wang } *Dwarf_Relocation_Data; 3022de3b87aSKai Wang 3032de3b87aSKai Wang #define DWARF_DRD_BUFFER_VERSION 2 3042de3b87aSKai Wang 3052de3b87aSKai Wang /* 3062de3b87aSKai Wang * Error numbers which are specific to this implementation. 3072de3b87aSKai Wang */ 3082de3b87aSKai Wang enum { 3092de3b87aSKai Wang DW_DLE_NONE, /* No error. */ 3102de3b87aSKai Wang DW_DLE_ERROR, /* An error! */ 3112de3b87aSKai Wang DW_DLE_ARGUMENT, /* Invalid argument. */ 3122de3b87aSKai Wang DW_DLE_DEBUG_INFO_NULL, /* Debug info NULL. */ 3132de3b87aSKai Wang DW_DLE_NO_ENTRY, /* No entry. */ 3142de3b87aSKai Wang DW_DLE_MEMORY, /* Insufficient memory. */ 3152de3b87aSKai Wang DW_DLE_ELF, /* ELF error. */ 3162de3b87aSKai Wang DW_DLE_CU_LENGTH_ERROR, /* Invalid compilation unit data. */ 3172de3b87aSKai Wang DW_DLE_VERSION_STAMP_ERROR, /* Invalid version. */ 3182de3b87aSKai Wang DW_DLE_DEBUG_ABBREV_NULL, /* Abbrev not found. */ 3192de3b87aSKai Wang DW_DLE_DIE_NO_CU_CONTEXT, /* No current compilation unit. */ 3202de3b87aSKai Wang DW_DLE_LOC_EXPR_BAD, /* Invalid location expression. */ 3212de3b87aSKai Wang DW_DLE_EXPR_LENGTH_BAD, /* Invalid DWARF expression. */ 3222de3b87aSKai Wang DW_DLE_DEBUG_LOC_SECTION_SHORT, /* Loclist section too short. */ 3232de3b87aSKai Wang DW_DLE_ATTR_FORM_BAD, /* Invalid attribute form. */ 3242de3b87aSKai Wang DW_DLE_DEBUG_LINE_LENGTH_BAD, /* Line info section too short. */ 3252de3b87aSKai Wang DW_DLE_LINE_FILE_NUM_BAD, /* Invalid file number. */ 3262de3b87aSKai Wang DW_DLE_DIR_INDEX_BAD, /* Invalid dir index. */ 3272de3b87aSKai Wang DW_DLE_DEBUG_FRAME_LENGTH_BAD, /* Frame section too short. */ 3282de3b87aSKai Wang DW_DLE_NO_CIE_FOR_FDE, /* CIE not found for certain FDE. */ 3292de3b87aSKai Wang DW_DLE_FRAME_AUGMENTATION_UNKNOWN, /* Unknown CIE augmentation. */ 3302de3b87aSKai Wang DW_DLE_FRAME_INSTR_EXEC_ERROR, /* Frame instruction exec error. */ 3312de3b87aSKai Wang DW_DLE_FRAME_VERSION_BAD, /* Invalid frame section version. */ 3322de3b87aSKai Wang DW_DLE_FRAME_TABLE_COL_BAD, /* Invalid table column. */ 3332de3b87aSKai Wang DW_DLE_DF_REG_NUM_TOO_HIGH, /* Insufficient regtable space. */ 3342de3b87aSKai Wang DW_DLE_PC_NOT_IN_FDE_RANGE, /* PC requested not in the FDE range. */ 3352de3b87aSKai Wang DW_DLE_ARANGE_OFFSET_BAD, /* Invalid arange offset. */ 3362de3b87aSKai Wang DW_DLE_DEBUG_MACRO_INCONSISTENT,/* Invalid macinfo data. */ 3372de3b87aSKai Wang DW_DLE_ELF_SECT_ERR, /* Application callback failed. */ 338dbf05458SMark Johnston DW_DLE_COMPRESSION, /* Section decompression error. */ 3392de3b87aSKai Wang DW_DLE_NUM /* Max error number. */ 3402de3b87aSKai Wang }; 3412de3b87aSKai Wang 3422de3b87aSKai Wang /* 3432de3b87aSKai Wang * Mapping of SGI libdwarf error codes for comptibility. 3442de3b87aSKai Wang */ 3452de3b87aSKai Wang #define DW_DLE_DBG_ALLOC DW_DLE_MEMORY 3462de3b87aSKai Wang #define DW_DLE_ALLOC_FAIL DW_DLE_MEMORY 3472de3b87aSKai Wang #define DW_DLE_SECT_ALLOC DW_DLE_MEMORY 3482de3b87aSKai Wang #define DW_DLE_FILE_ENTRY_ALLOC DW_DLE_MEMORY 3492de3b87aSKai Wang #define DW_DLE_LINE_ALLOC DW_DLE_MEMORY 3502de3b87aSKai Wang #define DW_DLE_FPGM_ALLOC DW_DLE_MEMORY 3512de3b87aSKai Wang #define DW_DLE_INCDIR_ALLOC DW_DLE_MEMORY 3522de3b87aSKai Wang #define DW_DLE_STRING_ALLOC DW_DLE_MEMORY 3532de3b87aSKai Wang #define DW_DLE_CHUNK_ALLOC DW_DLE_MEMORY 3542de3b87aSKai Wang #define DW_DLE_CIE_ALLOC DW_DLE_MEMORY 3552de3b87aSKai Wang #define DW_DLE_FDE_ALLOC DW_DLE_MEMORY 3562de3b87aSKai Wang #define DW_DLE_CIE_OFFS_ALLOC DW_DLE_MEMORY 3572de3b87aSKai Wang #define DW_DLE_DIE_ALLOC DW_DLE_MEMORY 3582de3b87aSKai Wang #define DW_DLE_ATTR_ALLOC DW_DLE_MEMORY 3592de3b87aSKai Wang #define DW_DLE_ABBREV_ALLOC DW_DLE_MEMORY 3602de3b87aSKai Wang #define DW_DLE_ADDR_ALLOC DW_DLE_MEMORY 3612de3b87aSKai Wang #define DW_DLE_REL_ALLOC DW_DLE_MEMORY 3622de3b87aSKai Wang #define DW_DLE_MACINFO_MALLOC_FAIL DW_DLE_MEMORY 3632de3b87aSKai Wang #define DW_DLE_DEBUG_MACRO_MALLOC_SPACE DW_DLE_MEMORY 3642de3b87aSKai Wang #define DW_DLE_DF_ALLOC_FAIL DW_DLE_MEMORY 3652de3b87aSKai Wang #define DW_DLE_RELOC_SECTION_MALLOC_FAIL DW_DLE_MEMORY 3662de3b87aSKai Wang #define DW_DLE_DBG_NULL DW_DLE_ARGUMENT 3672de3b87aSKai Wang #define DW_DLE_DIE_NULL DW_DLE_ARGUMENT 3682de3b87aSKai Wang #define DW_DLE_FDE_NULL DW_DLE_ARGUMENT 3692de3b87aSKai Wang #define DW_DLE_CIE_NULL DW_DLE_ARGUMENT 3702de3b87aSKai Wang #define DW_DLE_ATTR_NULL DW_DLE_ARGUMENT 3712de3b87aSKai Wang #define DW_DLE_GLOBAL_NULL DW_DLE_ARGUMENT 3722de3b87aSKai Wang #define DW_DLE_ARANGES_NULL DW_DLE_ARGUMENT 3732de3b87aSKai Wang #define DW_DLE_ARANGE_NULL DW_DLE_ARGUMENT 3742de3b87aSKai Wang #define DW_DLE_EXPR_NULL DW_DLE_ARGUMENT 3752de3b87aSKai Wang #define DW_DLE_FUNC_NULL DW_DLE_ARGUMENT 3762de3b87aSKai Wang #define DW_DLE_TYPE_NULL DW_DLE_ARGUMENT 3772de3b87aSKai Wang #define DW_DLE_VAR_NULL DW_DLE_ARGUMENT 3782de3b87aSKai Wang #define DW_DLE_WEAK_NULL DW_DLE_ARGUMENT 3792de3b87aSKai Wang #define DW_DLE_ELF_BEGIN_ERROR DW_DLE_ELF 3802de3b87aSKai Wang #define DW_DLE_ELF_GETEHDR_ERROR DW_DLE_ELF 3812de3b87aSKai Wang #define DW_DLE_ELF_GETSHDR_ERROR DW_DLE_ELF 3822de3b87aSKai Wang #define DW_DLE_ELF_STRPTR_ERROR DW_DLE_ELF 3832de3b87aSKai Wang #define DW_DLE_ELF_SECT_ERROR DW_DLE_ELF 3842de3b87aSKai Wang #define DW_DLE_ELF_GETIDENT_ERROR DW_DLE_ELF 3852de3b87aSKai Wang 3862de3b87aSKai Wang typedef struct _Dwarf_Error { 3872de3b87aSKai Wang int err_error; /* DWARF error. */ 3882de3b87aSKai Wang int err_elferror; /* ELF error. */ 3892de3b87aSKai Wang const char *err_func; /* Function name where error occurred. */ 3902de3b87aSKai Wang int err_line; /* Line number where error occurred. */ 3912de3b87aSKai Wang char err_msg[1024]; /* Formatted error message. */ 3922de3b87aSKai Wang } Dwarf_Error; 3932de3b87aSKai Wang 3942de3b87aSKai Wang /* 3952de3b87aSKai Wang * Dwarf error handler. 3962de3b87aSKai Wang */ 3972de3b87aSKai Wang typedef void (*Dwarf_Handler)(Dwarf_Error, Dwarf_Ptr); 3982de3b87aSKai Wang 3992de3b87aSKai Wang #define dwarf_errno(error) error.err_error 4002de3b87aSKai Wang #define dwarf_errmsg(error) dwarf_errmsg_(&error) 4012de3b87aSKai Wang 4022de3b87aSKai Wang /* 4032de3b87aSKai Wang * Return values which have to be compatible with other 4042de3b87aSKai Wang * implementations of libdwarf. 4052de3b87aSKai Wang */ 4062de3b87aSKai Wang #define DW_DLV_NO_ENTRY -1 4072de3b87aSKai Wang #define DW_DLV_OK 0 4082de3b87aSKai Wang #define DW_DLV_ERROR 1 4092de3b87aSKai Wang #define DW_DLV_BADADDR NULL 4102de3b87aSKai Wang #define DW_DLV_NOCOUNT ((Dwarf_Signed) -1) 4112de3b87aSKai Wang 4122de3b87aSKai Wang /* 4132de3b87aSKai Wang * Access modes. 4142de3b87aSKai Wang */ 4152de3b87aSKai Wang #define DW_DLC_READ 0x0001 4162de3b87aSKai Wang #define DW_DLC_WRITE 0x0002 4172de3b87aSKai Wang #define DW_DLC_RDWR 0x0004 4182de3b87aSKai Wang 4192de3b87aSKai Wang /* 4202de3b87aSKai Wang * Flags used by libdwarf producer. 4212de3b87aSKai Wang */ 4222de3b87aSKai Wang #define DW_DLC_SIZE_64 0x40000000 4232de3b87aSKai Wang #define DW_DLC_SIZE_32 0x20000000 4242de3b87aSKai Wang #define DW_DLC_OFFSET_SIZE_64 0x10000000 4252de3b87aSKai Wang #define DW_DLC_ISA_MIPS 0x80000000 4262de3b87aSKai Wang #define DW_DLC_ISA_IA64 0x01000000 4272de3b87aSKai Wang #define DW_DLC_STREAM_RELOCATIONS 0x02000000 4282de3b87aSKai Wang #define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000 4292de3b87aSKai Wang #define DW_DLC_TARGET_BIGENDIAN 0x08000000 4302de3b87aSKai Wang #define DW_DLC_TARGET_LITTLEENDIAN 0x00100000 4312de3b87aSKai Wang 4322de3b87aSKai Wang /* 4332de3b87aSKai Wang * Instruction set architectures supported by this implementation. 4342de3b87aSKai Wang */ 4352de3b87aSKai Wang enum Dwarf_ISA { 4362de3b87aSKai Wang DW_ISA_ARM, 4372de3b87aSKai Wang DW_ISA_IA64, 4382de3b87aSKai Wang DW_ISA_MIPS, 4392de3b87aSKai Wang DW_ISA_PPC, 4402de3b87aSKai Wang DW_ISA_SPARC, 4412de3b87aSKai Wang DW_ISA_X86, 4422de3b87aSKai Wang DW_ISA_X86_64, 44384c37881SEd Maste DW_ISA_AARCH64, 444ce35ddbcSRuslan Bukin DW_ISA_RISCV, 4452de3b87aSKai Wang DW_ISA_MAX 4462de3b87aSKai Wang }; 4472de3b87aSKai Wang 4482de3b87aSKai Wang /* Function prototype definitions. */ 44967d97fe7SEd Maste #ifdef __cplusplus 45067d97fe7SEd Maste extern "C" { 45167d97fe7SEd Maste #endif 4522de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die, char *, Dwarf_Error *); 4532de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die, Dwarf_Signed, 4542de3b87aSKai Wang Dwarf_Error *); 4552de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die, char *, 4562de3b87aSKai Wang Dwarf_Error *); 4572de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die, 4582de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Error *); 4592de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_dataref(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4602de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4612de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4622de3b87aSKai Wang Dwarf_Small, Dwarf_Error *); 4632de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug, Dwarf_P_Die, 4642de3b87aSKai Wang Dwarf_Half, Dwarf_P_Expr, Dwarf_Error *); 4652de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die, char *, Dwarf_Error *); 4662de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die, char *, Dwarf_Error *); 4672de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug, Dwarf_P_Die, 4682de3b87aSKai Wang Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4692de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4702de3b87aSKai Wang Dwarf_P_Die, Dwarf_Error *); 4712de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug, Dwarf_P_Die, 4722de3b87aSKai Wang Dwarf_Half, Dwarf_Signed, Dwarf_Error *); 4732de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4742de3b87aSKai Wang char *, Dwarf_Error *); 4752de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug, Dwarf_P_Die, 4762de3b87aSKai Wang Dwarf_Half, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Error *); 4772de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug, Dwarf_P_Die, 4782de3b87aSKai Wang Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4792de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug, Dwarf_P_Die, 4802de3b87aSKai Wang Dwarf_Half, Dwarf_Unsigned, Dwarf_Error *); 4812de3b87aSKai Wang Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 4822de3b87aSKai Wang Dwarf_Signed, Dwarf_Error *); 4832de3b87aSKai Wang Dwarf_Unsigned dwarf_add_arange_b(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 4842de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 4852de3b87aSKai Wang Dwarf_Unsigned dwarf_add_die_to_debug(Dwarf_P_Debug, Dwarf_P_Die, 4862de3b87aSKai Wang Dwarf_Error *); 4872de3b87aSKai Wang Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug, char *, Dwarf_Error *); 4882de3b87aSKai Wang Dwarf_Unsigned dwarf_add_expr_addr(Dwarf_P_Expr, Dwarf_Unsigned, 4892de3b87aSKai Wang Dwarf_Signed, Dwarf_Error *); 4902de3b87aSKai Wang Dwarf_Unsigned dwarf_add_expr_addr_b(Dwarf_P_Expr, Dwarf_Unsigned, 4912de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Error *); 4922de3b87aSKai Wang Dwarf_Unsigned dwarf_add_expr_gen(Dwarf_P_Expr, Dwarf_Small, Dwarf_Unsigned, 4932de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Error *); 4942de3b87aSKai Wang Dwarf_P_Fde dwarf_add_fde_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned, 4952de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Error *); 4962de3b87aSKai Wang Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug, char *, Dwarf_Unsigned, 4972de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4982de3b87aSKai Wang Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug, char *, Dwarf_Small, 4992de3b87aSKai Wang Dwarf_Small, Dwarf_Small, Dwarf_Ptr, Dwarf_Unsigned, 5002de3b87aSKai Wang Dwarf_Error *); 5012de3b87aSKai Wang Dwarf_Unsigned dwarf_add_frame_fde(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 5022de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 5032de3b87aSKai Wang Dwarf_Error *); 5042de3b87aSKai Wang Dwarf_Unsigned dwarf_add_frame_fde_b(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 5052de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 5062de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 5072de3b87aSKai Wang Dwarf_Unsigned dwarf_add_funcname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5082de3b87aSKai Wang Dwarf_Error *); 5092de3b87aSKai Wang Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug, Dwarf_Unsigned, 5102de3b87aSKai Wang Dwarf_Addr, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Bool, 5112de3b87aSKai Wang Dwarf_Bool, Dwarf_Error *); 5122de3b87aSKai Wang Dwarf_Unsigned dwarf_add_pubname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5132de3b87aSKai Wang Dwarf_Error *); 5142de3b87aSKai Wang Dwarf_Unsigned dwarf_add_typename(Dwarf_P_Debug, Dwarf_P_Die, char *, 5152de3b87aSKai Wang Dwarf_Error *); 5162de3b87aSKai Wang Dwarf_Unsigned dwarf_add_varname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5172de3b87aSKai Wang Dwarf_Error *); 5182de3b87aSKai Wang Dwarf_Unsigned dwarf_add_weakname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5192de3b87aSKai Wang Dwarf_Error *); 5202de3b87aSKai Wang int dwarf_arrayorder(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5212de3b87aSKai Wang int dwarf_attr(Dwarf_Die, Dwarf_Half, Dwarf_Attribute *, 5222de3b87aSKai Wang Dwarf_Error *); 5232de3b87aSKai Wang int dwarf_attrlist(Dwarf_Die, Dwarf_Attribute **, 5242de3b87aSKai Wang Dwarf_Signed *, Dwarf_Error *); 525cf781b2eSEd Maste int dwarf_attroffset(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *); 5262de3b87aSKai Wang int dwarf_attrval_flag(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 5272de3b87aSKai Wang Dwarf_Error *); 5282de3b87aSKai Wang int dwarf_attrval_signed(Dwarf_Die, Dwarf_Half, Dwarf_Signed *, 5292de3b87aSKai Wang Dwarf_Error *); 5302de3b87aSKai Wang int dwarf_attrval_string(Dwarf_Die, Dwarf_Half, const char **, 5312de3b87aSKai Wang Dwarf_Error *); 5322de3b87aSKai Wang int dwarf_attrval_unsigned(Dwarf_Die, Dwarf_Half, Dwarf_Unsigned *, 5332de3b87aSKai Wang Dwarf_Error *); 5342de3b87aSKai Wang int dwarf_bitoffset(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5352de3b87aSKai Wang int dwarf_bitsize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5362de3b87aSKai Wang int dwarf_bytesize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5372de3b87aSKai Wang int dwarf_child(Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 5382de3b87aSKai Wang void dwarf_dealloc(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned); 5392de3b87aSKai Wang int dwarf_def_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, char *, 5402de3b87aSKai Wang Dwarf_Error *); 5412de3b87aSKai Wang int dwarf_die_CU_offset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 5422de3b87aSKai Wang int dwarf_die_CU_offset_range(Dwarf_Die, Dwarf_Off *, Dwarf_Off *, 5432de3b87aSKai Wang Dwarf_Error *); 5442de3b87aSKai Wang int dwarf_die_abbrev_code(Dwarf_Die); 5452de3b87aSKai Wang Dwarf_P_Die dwarf_die_link(Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, 5462de3b87aSKai Wang Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 5472de3b87aSKai Wang int dwarf_diename(Dwarf_Die, char **, Dwarf_Error *); 5482de3b87aSKai Wang int dwarf_dieoffset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 5492de3b87aSKai Wang int dwarf_elf_init(Elf *, int, Dwarf_Handler, Dwarf_Ptr, 5502de3b87aSKai Wang Dwarf_Debug *, Dwarf_Error *); 5512de3b87aSKai Wang int dwarf_end_macro_file(Dwarf_P_Debug, Dwarf_Error *); 5522de3b87aSKai Wang const char *dwarf_errmsg_(Dwarf_Error *); 5532de3b87aSKai Wang int dwarf_expand_frame_instructions(Dwarf_Cie, Dwarf_Ptr, 5542de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *, 5552de3b87aSKai Wang Dwarf_Error *); 5562de3b87aSKai Wang Dwarf_Unsigned dwarf_expr_current_offset(Dwarf_P_Expr, Dwarf_Error *); 5572de3b87aSKai Wang Dwarf_Addr dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Unsigned *, 5582de3b87aSKai Wang Dwarf_Error *); 5592de3b87aSKai Wang Dwarf_P_Fde dwarf_fde_cfa_offset(Dwarf_P_Fde, Dwarf_Unsigned, Dwarf_Signed, 5602de3b87aSKai Wang Dwarf_Error *); 5612de3b87aSKai Wang void dwarf_fde_cie_list_dealloc(Dwarf_Debug, Dwarf_Cie *, 5622de3b87aSKai Wang Dwarf_Signed, Dwarf_Fde *, Dwarf_Signed); 5632de3b87aSKai Wang char *dwarf_find_macro_value_start(char *); 5642de3b87aSKai Wang int dwarf_finish(Dwarf_Debug, Dwarf_Error *); 5652de3b87aSKai Wang int dwarf_formaddr(Dwarf_Attribute, Dwarf_Addr *, Dwarf_Error *); 5662de3b87aSKai Wang int dwarf_formblock(Dwarf_Attribute, Dwarf_Block **, Dwarf_Error *); 5672de3b87aSKai Wang int dwarf_formexprloc(Dwarf_Attribute, Dwarf_Unsigned *, 5682de3b87aSKai Wang Dwarf_Ptr *, Dwarf_Error *); 5692de3b87aSKai Wang int dwarf_formflag(Dwarf_Attribute, Dwarf_Bool *, Dwarf_Error *); 5702de3b87aSKai Wang int dwarf_formref(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *); 5712de3b87aSKai Wang int dwarf_formsdata(Dwarf_Attribute, Dwarf_Signed *, Dwarf_Error *); 5722de3b87aSKai Wang int dwarf_formsig8(Dwarf_Attribute, Dwarf_Sig8 *, Dwarf_Error *); 5732de3b87aSKai Wang int dwarf_formstring(Dwarf_Attribute, char **, Dwarf_Error *); 5742de3b87aSKai Wang int dwarf_formudata(Dwarf_Attribute, Dwarf_Unsigned *, 5752de3b87aSKai Wang Dwarf_Error *); 5762de3b87aSKai Wang int dwarf_func_cu_offset(Dwarf_Func, Dwarf_Off *, Dwarf_Error *); 5772de3b87aSKai Wang int dwarf_func_die_offset(Dwarf_Func, Dwarf_Off *, 5782de3b87aSKai Wang Dwarf_Error *); 5792de3b87aSKai Wang int dwarf_func_name_offsets(Dwarf_Func, char **, 5802de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 5812de3b87aSKai Wang int dwarf_funcname(Dwarf_Func, char **, Dwarf_Error *); 5822de3b87aSKai Wang void dwarf_funcs_dealloc(Dwarf_Debug, Dwarf_Func *, Dwarf_Signed); 5832de3b87aSKai Wang int dwarf_get_ACCESS_name(unsigned, const char **); 5842de3b87aSKai Wang int dwarf_get_ATE_name(unsigned, const char **); 5852de3b87aSKai Wang int dwarf_get_AT_name(unsigned, const char **); 5862de3b87aSKai Wang int dwarf_get_CC_name(unsigned, const char **); 5872de3b87aSKai Wang int dwarf_get_CFA_name(unsigned, const char **); 5882de3b87aSKai Wang int dwarf_get_CHILDREN_name(unsigned, const char **); 5892de3b87aSKai Wang int dwarf_get_DSC_name(unsigned, const char **); 5902de3b87aSKai Wang int dwarf_get_DS_name(unsigned, const char **); 5912de3b87aSKai Wang int dwarf_get_EH_name(unsigned, const char **); 5922de3b87aSKai Wang int dwarf_get_END_name(unsigned, const char **); 5932de3b87aSKai Wang int dwarf_get_FORM_name(unsigned, const char **); 5942de3b87aSKai Wang int dwarf_get_ID_name(unsigned, const char **); 5952de3b87aSKai Wang int dwarf_get_INL_name(unsigned, const char **); 5962de3b87aSKai Wang int dwarf_get_LANG_name(unsigned, const char **); 5972de3b87aSKai Wang int dwarf_get_LNE_name(unsigned, const char **); 5982de3b87aSKai Wang int dwarf_get_LNS_name(unsigned, const char **); 5992de3b87aSKai Wang int dwarf_get_MACINFO_name(unsigned, const char **); 6002de3b87aSKai Wang int dwarf_get_OP_name(unsigned, const char **); 6012de3b87aSKai Wang int dwarf_get_ORD_name(unsigned, const char **); 6022de3b87aSKai Wang int dwarf_get_TAG_name(unsigned, const char **); 603*7bb441c8SMark Johnston int dwarf_get_UT_name(unsigned, const char **); 6042de3b87aSKai Wang int dwarf_get_VIRTUALITY_name(unsigned, const char **); 6052de3b87aSKai Wang int dwarf_get_VIS_name(unsigned, const char **); 6062de3b87aSKai Wang int dwarf_get_abbrev(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Abbrev *, 6072de3b87aSKai Wang Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Error *); 6082de3b87aSKai Wang int dwarf_get_abbrev_children_flag(Dwarf_Abbrev, Dwarf_Signed *, 6092de3b87aSKai Wang Dwarf_Error *); 6102de3b87aSKai Wang int dwarf_get_abbrev_code(Dwarf_Abbrev, Dwarf_Unsigned *, 6112de3b87aSKai Wang Dwarf_Error *); 6122de3b87aSKai Wang int dwarf_get_abbrev_entry(Dwarf_Abbrev, Dwarf_Signed, Dwarf_Half *, 6132de3b87aSKai Wang Dwarf_Signed *, Dwarf_Off *, Dwarf_Error *); 6142de3b87aSKai Wang int dwarf_get_abbrev_tag(Dwarf_Abbrev, Dwarf_Half *, Dwarf_Error *); 6152de3b87aSKai Wang int dwarf_get_address_size(Dwarf_Debug, Dwarf_Half *, 6162de3b87aSKai Wang Dwarf_Error *); 6172de3b87aSKai Wang int dwarf_get_arange(Dwarf_Arange *, Dwarf_Unsigned, Dwarf_Addr, 6182de3b87aSKai Wang Dwarf_Arange *, Dwarf_Error *); 6192de3b87aSKai Wang int dwarf_get_arange_cu_header_offset(Dwarf_Arange, Dwarf_Off *, 6202de3b87aSKai Wang Dwarf_Error *); 6212de3b87aSKai Wang int dwarf_get_arange_info(Dwarf_Arange, Dwarf_Addr *, 6222de3b87aSKai Wang Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Error *); 6232de3b87aSKai Wang int dwarf_get_aranges(Dwarf_Debug, Dwarf_Arange **, Dwarf_Signed *, 6242de3b87aSKai Wang Dwarf_Error *); 6252de3b87aSKai Wang int dwarf_get_cie_index(Dwarf_Cie, Dwarf_Signed *, Dwarf_Error *); 6262de3b87aSKai Wang int dwarf_get_cie_info(Dwarf_Cie, Dwarf_Unsigned *, Dwarf_Small *, 6272de3b87aSKai Wang char **, Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Half *, 6282de3b87aSKai Wang Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Error *); 6292de3b87aSKai Wang int dwarf_get_cie_of_fde(Dwarf_Fde, Dwarf_Cie *, Dwarf_Error *); 6302de3b87aSKai Wang int dwarf_get_cu_die_offset(Dwarf_Arange, Dwarf_Off *, 6312de3b87aSKai Wang Dwarf_Error *); 6322de3b87aSKai Wang int dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug, 6332de3b87aSKai Wang Dwarf_Off, Dwarf_Off *, Dwarf_Error *); 634cf781b2eSEd Maste int dwarf_get_cu_die_offset_given_cu_header_offset_b(Dwarf_Debug, 635cf781b2eSEd Maste Dwarf_Off, Dwarf_Bool, Dwarf_Off *, Dwarf_Error *); 636cf781b2eSEd Maste Dwarf_Bool dwarf_get_die_infotypes_flag(Dwarf_Die); 6372de3b87aSKai Wang int dwarf_get_elf(Dwarf_Debug, Elf **, Dwarf_Error *); 6382de3b87aSKai Wang int dwarf_get_fde_at_pc(Dwarf_Fde *, Dwarf_Addr, Dwarf_Fde *, 6392de3b87aSKai Wang Dwarf_Addr *, Dwarf_Addr *, Dwarf_Error *); 6402de3b87aSKai Wang int dwarf_get_fde_info_for_all_regs(Dwarf_Fde, Dwarf_Addr, 6412de3b87aSKai Wang Dwarf_Regtable *, Dwarf_Addr *, Dwarf_Error *); 6422de3b87aSKai Wang int dwarf_get_fde_info_for_all_regs3(Dwarf_Fde, Dwarf_Addr, 6432de3b87aSKai Wang Dwarf_Regtable3 *, Dwarf_Addr *, Dwarf_Error *); 6442de3b87aSKai Wang int dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde, Dwarf_Addr, 6452de3b87aSKai Wang Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 6462de3b87aSKai Wang Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 6472de3b87aSKai Wang int dwarf_get_fde_info_for_reg(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 6482de3b87aSKai Wang Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 6492de3b87aSKai Wang Dwarf_Addr *, Dwarf_Error *); 6502de3b87aSKai Wang int dwarf_get_fde_info_for_reg3(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 6512de3b87aSKai Wang Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, 6522de3b87aSKai Wang Dwarf_Signed *, Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 6532de3b87aSKai Wang int dwarf_get_fde_instr_bytes(Dwarf_Fde, Dwarf_Ptr *, 6542de3b87aSKai Wang Dwarf_Unsigned *, Dwarf_Error *); 6552de3b87aSKai Wang int dwarf_get_fde_list(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 6562de3b87aSKai Wang Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 6572de3b87aSKai Wang int dwarf_get_fde_list_eh(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 6582de3b87aSKai Wang Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 6592de3b87aSKai Wang int dwarf_get_fde_n(Dwarf_Fde *, Dwarf_Unsigned, Dwarf_Fde *, 6602de3b87aSKai Wang Dwarf_Error *); 6612de3b87aSKai Wang int dwarf_get_fde_range(Dwarf_Fde, Dwarf_Addr *, Dwarf_Unsigned *, 6622de3b87aSKai Wang Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Signed *, 6632de3b87aSKai Wang Dwarf_Off *, Dwarf_Error *); 6642de3b87aSKai Wang enum Dwarf_Form_Class dwarf_get_form_class(Dwarf_Half, Dwarf_Half, Dwarf_Half, 6652de3b87aSKai Wang Dwarf_Half); 6662de3b87aSKai Wang int dwarf_get_funcs(Dwarf_Debug, Dwarf_Func **, Dwarf_Signed *, 6672de3b87aSKai Wang Dwarf_Error *); 6682de3b87aSKai Wang int dwarf_get_globals(Dwarf_Debug, Dwarf_Global **, Dwarf_Signed *, 6692de3b87aSKai Wang Dwarf_Error *); 6702de3b87aSKai Wang int dwarf_get_loclist_entry(Dwarf_Debug, Dwarf_Unsigned, 6712de3b87aSKai Wang Dwarf_Addr *, Dwarf_Addr *, Dwarf_Ptr *, Dwarf_Unsigned *, 6722de3b87aSKai Wang Dwarf_Unsigned *, Dwarf_Error *); 6732de3b87aSKai Wang int dwarf_get_macro_details(Dwarf_Debug, Dwarf_Off, Dwarf_Unsigned, 6742de3b87aSKai Wang Dwarf_Signed *, Dwarf_Macro_Details **, Dwarf_Error *); 6752de3b87aSKai Wang int dwarf_get_pubtypes(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 6762de3b87aSKai Wang Dwarf_Error *); 6772de3b87aSKai Wang int dwarf_get_ranges(Dwarf_Debug, Dwarf_Off, Dwarf_Ranges **, 6782de3b87aSKai Wang Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 6792de3b87aSKai Wang int dwarf_get_ranges_a(Dwarf_Debug, Dwarf_Off, Dwarf_Die, 6802de3b87aSKai Wang Dwarf_Ranges **, Dwarf_Signed *, Dwarf_Unsigned *, 6812de3b87aSKai Wang Dwarf_Error *); 6822de3b87aSKai Wang int dwarf_get_relocation_info(Dwarf_P_Debug, Dwarf_Signed *, 6832de3b87aSKai Wang Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Relocation_Data *, 6842de3b87aSKai Wang Dwarf_Error *); 6852de3b87aSKai Wang int dwarf_get_relocation_info_count(Dwarf_P_Debug, Dwarf_Unsigned *, 6862de3b87aSKai Wang int *, Dwarf_Error *); 6872de3b87aSKai Wang Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug, Dwarf_Signed, 6882de3b87aSKai Wang Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 689cf781b2eSEd Maste int dwarf_get_section_max_offsets(Dwarf_Debug, Dwarf_Unsigned *, 690cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 691cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 692cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 693cf781b2eSEd Maste Dwarf_Unsigned *); 694cf781b2eSEd Maste int dwarf_get_section_max_offsets_b(Dwarf_Debug, Dwarf_Unsigned *, 695cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 696cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 697cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 698cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Unsigned *); 6992de3b87aSKai Wang int dwarf_get_str(Dwarf_Debug, Dwarf_Off, char **, Dwarf_Signed *, 7002de3b87aSKai Wang Dwarf_Error *); 7012de3b87aSKai Wang int dwarf_get_types(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 7022de3b87aSKai Wang Dwarf_Error *); 7032de3b87aSKai Wang int dwarf_get_vars(Dwarf_Debug, Dwarf_Var **, Dwarf_Signed *, 7042de3b87aSKai Wang Dwarf_Error *); 7052de3b87aSKai Wang int dwarf_get_weaks(Dwarf_Debug, Dwarf_Weak **, Dwarf_Signed *, 7062de3b87aSKai Wang Dwarf_Error *); 7072de3b87aSKai Wang int dwarf_global_cu_offset(Dwarf_Global, Dwarf_Off *, Dwarf_Error *); 7082de3b87aSKai Wang int dwarf_global_die_offset(Dwarf_Global, Dwarf_Off *, 7092de3b87aSKai Wang Dwarf_Error *); 7102de3b87aSKai Wang int dwarf_global_formref(Dwarf_Attribute, Dwarf_Off *, 7112de3b87aSKai Wang Dwarf_Error *); 7122de3b87aSKai Wang int dwarf_global_name_offsets(Dwarf_Global, char **, 7132de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 7142de3b87aSKai Wang void dwarf_globals_dealloc(Dwarf_Debug, Dwarf_Global *, Dwarf_Signed); 7152de3b87aSKai Wang int dwarf_globname(Dwarf_Global, char **, Dwarf_Error *); 7162de3b87aSKai Wang int dwarf_hasattr(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 7172de3b87aSKai Wang Dwarf_Error *); 7182de3b87aSKai Wang int dwarf_hasform(Dwarf_Attribute, Dwarf_Half, Dwarf_Bool *, 7192de3b87aSKai Wang Dwarf_Error *); 7202de3b87aSKai Wang int dwarf_highpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 721cf781b2eSEd Maste int dwarf_highpc_b(Dwarf_Die, Dwarf_Addr *, Dwarf_Half *, 722cf781b2eSEd Maste enum Dwarf_Form_Class *, Dwarf_Error *); 7232de3b87aSKai Wang int dwarf_init(int, int, Dwarf_Handler, Dwarf_Ptr, Dwarf_Debug *, 7242de3b87aSKai Wang Dwarf_Error *); 7252de3b87aSKai Wang int dwarf_line_srcfileno(Dwarf_Line, Dwarf_Unsigned *, 7262de3b87aSKai Wang Dwarf_Error *); 7272de3b87aSKai Wang int dwarf_lineaddr(Dwarf_Line, Dwarf_Addr *, Dwarf_Error *); 7282de3b87aSKai Wang int dwarf_linebeginstatement(Dwarf_Line, Dwarf_Bool *, 7292de3b87aSKai Wang Dwarf_Error *); 7302de3b87aSKai Wang int dwarf_lineblock(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 7312de3b87aSKai Wang int dwarf_lineendsequence(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 7322de3b87aSKai Wang int dwarf_lineno(Dwarf_Line, Dwarf_Unsigned *, Dwarf_Error *); 7332de3b87aSKai Wang int dwarf_lineoff(Dwarf_Line, Dwarf_Signed *, Dwarf_Error *); 7342de3b87aSKai Wang int dwarf_linesrc(Dwarf_Line, char **, Dwarf_Error *); 7352de3b87aSKai Wang Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Error *); 7362de3b87aSKai Wang Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 7372de3b87aSKai Wang Dwarf_Error *); 7382de3b87aSKai Wang int dwarf_loclist(Dwarf_Attribute, Dwarf_Locdesc **, Dwarf_Signed *, 7392de3b87aSKai Wang Dwarf_Error *); 7402de3b87aSKai Wang int dwarf_loclist_from_expr(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned, 7412de3b87aSKai Wang Dwarf_Locdesc **, Dwarf_Signed *, Dwarf_Error *); 7422de3b87aSKai Wang int dwarf_loclist_from_expr_a(Dwarf_Debug, Dwarf_Ptr, 7432de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Half, Dwarf_Locdesc **, 7442de3b87aSKai Wang Dwarf_Signed *, Dwarf_Error *); 745cf781b2eSEd Maste int dwarf_loclist_from_expr_b(Dwarf_Debug, Dwarf_Ptr, 746cf781b2eSEd Maste Dwarf_Unsigned, Dwarf_Half, Dwarf_Half, 747cf781b2eSEd Maste Dwarf_Small, Dwarf_Locdesc **, Dwarf_Signed *, 748cf781b2eSEd Maste Dwarf_Error *); 7492de3b87aSKai Wang int dwarf_loclist_n(Dwarf_Attribute, Dwarf_Locdesc ***, 7502de3b87aSKai Wang Dwarf_Signed *, Dwarf_Error *); 7512de3b87aSKai Wang int dwarf_lowpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 7522de3b87aSKai Wang Dwarf_P_Die dwarf_new_die(Dwarf_P_Debug, Dwarf_Tag, Dwarf_P_Die, 7532de3b87aSKai Wang Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 7542de3b87aSKai Wang Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug, Dwarf_Error *); 7552de3b87aSKai Wang Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug, Dwarf_Error *); 7562de3b87aSKai Wang int dwarf_next_cu_header(Dwarf_Debug, Dwarf_Unsigned *, 7572de3b87aSKai Wang Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, 7582de3b87aSKai Wang Dwarf_Unsigned *, Dwarf_Error *); 7592de3b87aSKai Wang int dwarf_next_cu_header_b(Dwarf_Debug, Dwarf_Unsigned *, 7602de3b87aSKai Wang Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, Dwarf_Half *, 7612de3b87aSKai Wang Dwarf_Half *, Dwarf_Unsigned *, Dwarf_Error *); 762cf781b2eSEd Maste int dwarf_next_cu_header_c(Dwarf_Debug, Dwarf_Bool, 763cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, 764cf781b2eSEd Maste Dwarf_Half *, Dwarf_Half *, Dwarf_Sig8 *, Dwarf_Unsigned *, 765cf781b2eSEd Maste Dwarf_Unsigned *, Dwarf_Error *); 766cf781b2eSEd Maste int dwarf_next_types_section(Dwarf_Debug, Dwarf_Error *); 7672de3b87aSKai Wang int dwarf_object_finish(Dwarf_Debug, Dwarf_Error *); 7682de3b87aSKai Wang int dwarf_object_init(Dwarf_Obj_Access_Interface *, Dwarf_Handler, 7692de3b87aSKai Wang Dwarf_Ptr, Dwarf_Debug *, Dwarf_Error *); 7702de3b87aSKai Wang int dwarf_offdie(Dwarf_Debug, Dwarf_Off, Dwarf_Die *, 7712de3b87aSKai Wang Dwarf_Error *); 772cf781b2eSEd Maste int dwarf_offdie_b(Dwarf_Debug, Dwarf_Off, Dwarf_Bool, Dwarf_Die *, 773cf781b2eSEd Maste Dwarf_Error *); 7742de3b87aSKai Wang Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug, Dwarf_Error *); 7752de3b87aSKai Wang Dwarf_P_Debug dwarf_producer_init(Dwarf_Unsigned, Dwarf_Callback_Func, 7762de3b87aSKai Wang Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 7772de3b87aSKai Wang Dwarf_P_Debug dwarf_producer_init_b(Dwarf_Unsigned, Dwarf_Callback_Func_b, 7782de3b87aSKai Wang Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 7792de3b87aSKai Wang int dwarf_producer_set_isa(Dwarf_P_Debug, enum Dwarf_ISA, 7802de3b87aSKai Wang Dwarf_Error *); 7812de3b87aSKai Wang int dwarf_pubtype_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 7822de3b87aSKai Wang int dwarf_pubtype_die_offset(Dwarf_Type, Dwarf_Off *, 7832de3b87aSKai Wang Dwarf_Error *); 7842de3b87aSKai Wang int dwarf_pubtype_name_offsets(Dwarf_Type, char **, 7852de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 7862de3b87aSKai Wang int dwarf_pubtypename(Dwarf_Type, char **, Dwarf_Error *); 7872de3b87aSKai Wang void dwarf_pubtypes_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 7882de3b87aSKai Wang void dwarf_ranges_dealloc(Dwarf_Debug, Dwarf_Ranges *, Dwarf_Signed); 7892de3b87aSKai Wang void dwarf_reset_section_bytes(Dwarf_P_Debug); 7902de3b87aSKai Wang Dwarf_Half dwarf_set_frame_cfa_value(Dwarf_Debug, Dwarf_Half); 7912de3b87aSKai Wang Dwarf_Half dwarf_set_frame_rule_initial_value(Dwarf_Debug, Dwarf_Half); 7922de3b87aSKai Wang Dwarf_Half dwarf_set_frame_rule_table_size(Dwarf_Debug, Dwarf_Half); 7932de3b87aSKai Wang Dwarf_Half dwarf_set_frame_same_value(Dwarf_Debug, Dwarf_Half); 7942de3b87aSKai Wang Dwarf_Half dwarf_set_frame_undefined_value(Dwarf_Debug, Dwarf_Half); 7952de3b87aSKai Wang int dwarf_set_reloc_application(int); 7962de3b87aSKai Wang Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug, Dwarf_Ptr); 7972de3b87aSKai Wang Dwarf_Handler dwarf_seterrhand(Dwarf_Debug, Dwarf_Handler); 7982de3b87aSKai Wang int dwarf_siblingof(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 799cf781b2eSEd Maste int dwarf_siblingof_b(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Bool, 800cf781b2eSEd Maste Dwarf_Error *); 8012de3b87aSKai Wang int dwarf_srcfiles(Dwarf_Die, char ***, Dwarf_Signed *, Dwarf_Error *); 8022de3b87aSKai Wang int dwarf_srclang(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 8032de3b87aSKai Wang int dwarf_srclines(Dwarf_Die, Dwarf_Line **, Dwarf_Signed *, 8042de3b87aSKai Wang Dwarf_Error *); 8052de3b87aSKai Wang void dwarf_srclines_dealloc(Dwarf_Debug, Dwarf_Line *, 8062de3b87aSKai Wang Dwarf_Signed); 8072de3b87aSKai Wang int dwarf_start_macro_file(Dwarf_P_Debug, Dwarf_Unsigned, 8082de3b87aSKai Wang Dwarf_Unsigned, Dwarf_Error *); 8092de3b87aSKai Wang int dwarf_tag(Dwarf_Die, Dwarf_Half *, Dwarf_Error *); 8102de3b87aSKai Wang Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug, Dwarf_Error *); 8112de3b87aSKai Wang int dwarf_type_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 8122de3b87aSKai Wang int dwarf_type_die_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 8132de3b87aSKai Wang int dwarf_type_name_offsets(Dwarf_Type, char **, 8142de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8152de3b87aSKai Wang int dwarf_typename(Dwarf_Type, char **, Dwarf_Error *); 8162de3b87aSKai Wang void dwarf_types_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 8172de3b87aSKai Wang int dwarf_undef_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, 8182de3b87aSKai Wang Dwarf_Error *); 8192de3b87aSKai Wang int dwarf_var_cu_offset(Dwarf_Var, Dwarf_Off *, Dwarf_Error *); 8202de3b87aSKai Wang int dwarf_var_die_offset(Dwarf_Var, Dwarf_Off *, 8212de3b87aSKai Wang Dwarf_Error *); 8222de3b87aSKai Wang int dwarf_var_name_offsets(Dwarf_Var, char **, 8232de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8242de3b87aSKai Wang int dwarf_varname(Dwarf_Var, char **, Dwarf_Error *); 8252de3b87aSKai Wang void dwarf_vars_dealloc(Dwarf_Debug, Dwarf_Var *, Dwarf_Signed); 8262de3b87aSKai Wang int dwarf_vendor_ext(Dwarf_P_Debug, Dwarf_Unsigned, char *, 8272de3b87aSKai Wang Dwarf_Error *); 8282de3b87aSKai Wang int dwarf_weak_cu_offset(Dwarf_Weak, Dwarf_Off *, Dwarf_Error *); 8292de3b87aSKai Wang int dwarf_weak_die_offset(Dwarf_Weak, Dwarf_Off *, 8302de3b87aSKai Wang Dwarf_Error *); 8312de3b87aSKai Wang int dwarf_weak_name_offsets(Dwarf_Weak, char **, 8322de3b87aSKai Wang Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8332de3b87aSKai Wang int dwarf_weakname(Dwarf_Weak, char **, Dwarf_Error *); 8342de3b87aSKai Wang void dwarf_weaks_dealloc(Dwarf_Debug, Dwarf_Weak *, Dwarf_Signed); 8352de3b87aSKai Wang int dwarf_whatattr(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 8362de3b87aSKai Wang int dwarf_whatform(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 8372de3b87aSKai Wang int dwarf_whatform_direct(Dwarf_Attribute, Dwarf_Half *, 8382de3b87aSKai Wang Dwarf_Error *); 83967d97fe7SEd Maste #ifdef __cplusplus 84067d97fe7SEd Maste } 84167d97fe7SEd Maste #endif 8422de3b87aSKai Wang 8432de3b87aSKai Wang #endif /* !_LIBDWARF_H_ */ 844