1*9262d0f3Schristos /* $NetBSD: libdwarf.h,v 1.3 2016/02/20 02:43:41 christos Exp $ */ 24bd933feSchristos 33ae86eb5Schristos /*- 43ae86eb5Schristos * Copyright (c) 2007 John Birrell (jb@freebsd.org) 5*9262d0f3Schristos * Copyright (c) 2009-2011,2014 Kai Wang 63ae86eb5Schristos * All rights reserved. 73ae86eb5Schristos * 83ae86eb5Schristos * Redistribution and use in source and binary forms, with or without 93ae86eb5Schristos * modification, are permitted provided that the following conditions 103ae86eb5Schristos * are met: 113ae86eb5Schristos * 1. Redistributions of source code must retain the above copyright 123ae86eb5Schristos * notice, this list of conditions and the following disclaimer. 133ae86eb5Schristos * 2. Redistributions in binary form must reproduce the above copyright 143ae86eb5Schristos * notice, this list of conditions and the following disclaimer in the 153ae86eb5Schristos * documentation and/or other materials provided with the distribution. 163ae86eb5Schristos * 173ae86eb5Schristos * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 183ae86eb5Schristos * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 193ae86eb5Schristos * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 203ae86eb5Schristos * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 213ae86eb5Schristos * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 223ae86eb5Schristos * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 233ae86eb5Schristos * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 243ae86eb5Schristos * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 253ae86eb5Schristos * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 263ae86eb5Schristos * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 273ae86eb5Schristos * SUCH DAMAGE. 283ae86eb5Schristos * 29*9262d0f3Schristos * Id: libdwarf.h 3295 2016-01-08 22:08:10Z jkoshy 303ae86eb5Schristos */ 313ae86eb5Schristos 323ae86eb5Schristos #ifndef _LIBDWARF_H_ 333ae86eb5Schristos #define _LIBDWARF_H_ 343ae86eb5Schristos 353ae86eb5Schristos #include <libelf.h> 363ae86eb5Schristos 373ae86eb5Schristos typedef int Dwarf_Bool; 38*9262d0f3Schristos typedef uint64_t Dwarf_Off; 393ae86eb5Schristos typedef uint64_t Dwarf_Unsigned; 403ae86eb5Schristos typedef uint16_t Dwarf_Half; 413ae86eb5Schristos typedef uint8_t Dwarf_Small; 423ae86eb5Schristos typedef int64_t Dwarf_Signed; 433ae86eb5Schristos typedef uint64_t Dwarf_Addr; 443ae86eb5Schristos typedef void *Dwarf_Ptr; 453ae86eb5Schristos 463ae86eb5Schristos typedef struct _Dwarf_Abbrev *Dwarf_Abbrev; 473ae86eb5Schristos typedef struct _Dwarf_Arange *Dwarf_Arange; 483ae86eb5Schristos typedef struct _Dwarf_ArangeSet *Dwarf_ArangeSet; 493ae86eb5Schristos typedef struct _Dwarf_Attribute *Dwarf_Attribute; 503ae86eb5Schristos typedef struct _Dwarf_Attribute *Dwarf_P_Attribute; 513ae86eb5Schristos typedef struct _Dwarf_AttrDef *Dwarf_AttrDef; 523ae86eb5Schristos typedef struct _Dwarf_Cie *Dwarf_Cie; 533ae86eb5Schristos typedef struct _Dwarf_Cie *Dwarf_P_Cie; 543ae86eb5Schristos typedef struct _Dwarf_Debug *Dwarf_Debug; 553ae86eb5Schristos typedef struct _Dwarf_Debug *Dwarf_P_Debug; 563ae86eb5Schristos typedef struct _Dwarf_Die *Dwarf_Die; 573ae86eb5Schristos typedef struct _Dwarf_Die *Dwarf_P_Die; 583ae86eb5Schristos typedef struct _Dwarf_Fde *Dwarf_Fde; 593ae86eb5Schristos typedef struct _Dwarf_Fde *Dwarf_P_Fde; 603ae86eb5Schristos typedef struct _Dwarf_FrameSec *Dwarf_FrameSec; 613ae86eb5Schristos typedef struct _Dwarf_Line *Dwarf_Line; 623ae86eb5Schristos typedef struct _Dwarf_LineFile *Dwarf_LineFile; 633ae86eb5Schristos typedef struct _Dwarf_LineInfo *Dwarf_LineInfo; 643ae86eb5Schristos typedef struct _Dwarf_MacroSet *Dwarf_MacroSet; 653ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_NamePair; 663ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_Func; 673ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_Global; 683ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_Type; 693ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_Var; 703ae86eb5Schristos typedef struct _Dwarf_NamePair *Dwarf_Weak; 713ae86eb5Schristos typedef struct _Dwarf_NameTbl *Dwarf_NameTbl; 723ae86eb5Schristos typedef struct _Dwarf_NameSec *Dwarf_NameSec; 733ae86eb5Schristos typedef struct _Dwarf_P_Expr *Dwarf_P_Expr; 743ae86eb5Schristos typedef struct _Dwarf_Rangelist *Dwarf_Rangelist; 753ae86eb5Schristos 763ae86eb5Schristos typedef enum { 773ae86eb5Schristos DW_OBJECT_MSB, 783ae86eb5Schristos DW_OBJECT_LSB 793ae86eb5Schristos } Dwarf_Endianness; 803ae86eb5Schristos 813ae86eb5Schristos typedef struct { 823ae86eb5Schristos Dwarf_Addr addr; 833ae86eb5Schristos Dwarf_Unsigned size; 843ae86eb5Schristos const char *name; 853ae86eb5Schristos } Dwarf_Obj_Access_Section; 863ae86eb5Schristos 873ae86eb5Schristos typedef struct { 883ae86eb5Schristos int (*get_section_info)(void *_obj, Dwarf_Half _index, 893ae86eb5Schristos Dwarf_Obj_Access_Section *_ret_section, int *_error); 903ae86eb5Schristos Dwarf_Endianness (*get_byte_order)(void *_obj); 913ae86eb5Schristos Dwarf_Small (*get_length_size)(void *_obj); 923ae86eb5Schristos Dwarf_Small (*get_pointer_size)(void *_obj); 933ae86eb5Schristos Dwarf_Unsigned (*get_section_count)(void *_obj); 943ae86eb5Schristos int (*load_section)(void *_obj, Dwarf_Half _index, 953ae86eb5Schristos Dwarf_Small **_ret_data, int *_error); 963ae86eb5Schristos } Dwarf_Obj_Access_Methods; 973ae86eb5Schristos 983ae86eb5Schristos typedef struct { 993ae86eb5Schristos void *object; 1003ae86eb5Schristos const Dwarf_Obj_Access_Methods *methods; 1013ae86eb5Schristos } Dwarf_Obj_Access_Interface; 1023ae86eb5Schristos 1033ae86eb5Schristos typedef int (*Dwarf_Callback_Func)(char *_name, int _size, 1043ae86eb5Schristos Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 1053ae86eb5Schristos Dwarf_Unsigned _info, int *_index, int *_error); 1063ae86eb5Schristos 1073ae86eb5Schristos typedef int (*Dwarf_Callback_Func_b)(char *_name, int _size, 1083ae86eb5Schristos Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 1093ae86eb5Schristos Dwarf_Unsigned _info, Dwarf_Unsigned *_index, int *_error); 1103ae86eb5Schristos 1113ae86eb5Schristos typedef Dwarf_Unsigned Dwarf_Tag; 1123ae86eb5Schristos 1133ae86eb5Schristos typedef struct { 1143ae86eb5Schristos Dwarf_Small lr_atom; 1153ae86eb5Schristos Dwarf_Unsigned lr_number; 1163ae86eb5Schristos Dwarf_Unsigned lr_number2; 1173ae86eb5Schristos Dwarf_Unsigned lr_offset; 1183ae86eb5Schristos } Dwarf_Loc; 1193ae86eb5Schristos 1203ae86eb5Schristos typedef struct { 1213ae86eb5Schristos Dwarf_Addr ld_lopc; 1223ae86eb5Schristos Dwarf_Addr ld_hipc; 1233ae86eb5Schristos Dwarf_Half ld_cents; 1243ae86eb5Schristos Dwarf_Loc *ld_s; 1253ae86eb5Schristos } Dwarf_Locdesc; 1263ae86eb5Schristos 1273ae86eb5Schristos typedef struct { 1283ae86eb5Schristos char signature[8]; 1293ae86eb5Schristos } Dwarf_Sig8; 1303ae86eb5Schristos 1313ae86eb5Schristos typedef struct { 1323ae86eb5Schristos Dwarf_Unsigned bl_len; 1333ae86eb5Schristos Dwarf_Ptr bl_data; 1343ae86eb5Schristos } Dwarf_Block; 1353ae86eb5Schristos 1363ae86eb5Schristos enum Dwarf_Ranges_Entry_Type { 1373ae86eb5Schristos DW_RANGES_ENTRY, 1383ae86eb5Schristos DW_RANGES_ADDRESS_SELECTION, 1393ae86eb5Schristos DW_RANGES_END 1403ae86eb5Schristos }; 1413ae86eb5Schristos 1423ae86eb5Schristos typedef struct { 1433ae86eb5Schristos Dwarf_Unsigned dwr_addr1; 1443ae86eb5Schristos Dwarf_Unsigned dwr_addr2; 1453ae86eb5Schristos enum Dwarf_Ranges_Entry_Type dwr_type; 1463ae86eb5Schristos } Dwarf_Ranges; 1473ae86eb5Schristos 1483ae86eb5Schristos enum Dwarf_Form_Class { 1493ae86eb5Schristos DW_FORM_CLASS_UNKNOWN, 1503ae86eb5Schristos DW_FORM_CLASS_ADDRESS, 1513ae86eb5Schristos DW_FORM_CLASS_BLOCK, 1523ae86eb5Schristos DW_FORM_CLASS_CONSTANT, 1533ae86eb5Schristos DW_FORM_CLASS_EXPRLOC, 1543ae86eb5Schristos DW_FORM_CLASS_FLAG, 1553ae86eb5Schristos DW_FORM_CLASS_LINEPTR, 1563ae86eb5Schristos DW_FORM_CLASS_LOCLISTPTR, 1573ae86eb5Schristos DW_FORM_CLASS_MACPTR, 1583ae86eb5Schristos DW_FORM_CLASS_RANGELISTPTR, 1593ae86eb5Schristos DW_FORM_CLASS_REFERENCE, 1603ae86eb5Schristos DW_FORM_CLASS_STRING 1613ae86eb5Schristos }; 1623ae86eb5Schristos 1633ae86eb5Schristos #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER 1643ae86eb5Schristos #define DW_FRAME_HIGHEST_NORMAL_REGISTER 63 1653ae86eb5Schristos #endif 1663ae86eb5Schristos 1673ae86eb5Schristos #define DW_FRAME_RA_COL (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1) 1683ae86eb5Schristos #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2) 1693ae86eb5Schristos 1703ae86eb5Schristos #ifndef DW_FRAME_LAST_REG_NUM 1713ae86eb5Schristos #define DW_FRAME_LAST_REG_NUM (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3) 1723ae86eb5Schristos #endif 1733ae86eb5Schristos 1743ae86eb5Schristos #ifndef DW_FRAME_REG_INITIAL_VALUE 1753ae86eb5Schristos #define DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL 1763ae86eb5Schristos #endif 1773ae86eb5Schristos 1783ae86eb5Schristos #define DW_FRAME_UNDEFINED_VAL 1034 1793ae86eb5Schristos #define DW_FRAME_SAME_VAL 1035 1803ae86eb5Schristos #define DW_FRAME_CFA_COL3 1436 1813ae86eb5Schristos 1823ae86eb5Schristos #define DW_EXPR_OFFSET 0 1833ae86eb5Schristos #define DW_EXPR_VAL_OFFSET 1 1843ae86eb5Schristos #define DW_EXPR_EXPRESSION 2 1853ae86eb5Schristos #define DW_EXPR_VAL_EXPRESSION 3 1863ae86eb5Schristos 1873ae86eb5Schristos /* 1883ae86eb5Schristos * Frame operation only for DWARF 2. 1893ae86eb5Schristos */ 1903ae86eb5Schristos 1913ae86eb5Schristos #define DW_FRAME_CFA_COL 0 1923ae86eb5Schristos 1933ae86eb5Schristos typedef struct { 1943ae86eb5Schristos Dwarf_Small fp_base_op; 1953ae86eb5Schristos Dwarf_Small fp_extended_op; 1963ae86eb5Schristos Dwarf_Half fp_register; 1973ae86eb5Schristos Dwarf_Signed fp_offset; 1983ae86eb5Schristos Dwarf_Off fp_instr_offset; 1993ae86eb5Schristos } Dwarf_Frame_Op; 2003ae86eb5Schristos 2013ae86eb5Schristos #ifndef DW_REG_TABLE_SIZE 2023ae86eb5Schristos #define DW_REG_TABLE_SIZE 66 2033ae86eb5Schristos #endif 2043ae86eb5Schristos 2053ae86eb5Schristos typedef struct { 2063ae86eb5Schristos struct { 2073ae86eb5Schristos Dwarf_Small dw_offset_relevant; 2083ae86eb5Schristos Dwarf_Half dw_regnum; 2093ae86eb5Schristos Dwarf_Addr dw_offset; 2103ae86eb5Schristos } rules[DW_REG_TABLE_SIZE]; 2113ae86eb5Schristos } Dwarf_Regtable; 2123ae86eb5Schristos 2133ae86eb5Schristos /* 2143ae86eb5Schristos * Frame operation for DWARF 3 and DWARF 2. 2153ae86eb5Schristos */ 2163ae86eb5Schristos 2173ae86eb5Schristos typedef struct { 2183ae86eb5Schristos Dwarf_Small fp_base_op; 2193ae86eb5Schristos Dwarf_Small fp_extended_op; 2203ae86eb5Schristos Dwarf_Half fp_register; 2213ae86eb5Schristos Dwarf_Unsigned fp_offset_or_block_len; 2223ae86eb5Schristos Dwarf_Small *fp_expr_block; 2233ae86eb5Schristos Dwarf_Off fp_instr_offset; 2243ae86eb5Schristos } Dwarf_Frame_Op3; 2253ae86eb5Schristos 2263ae86eb5Schristos typedef struct { 2273ae86eb5Schristos Dwarf_Small dw_offset_relevant; 2283ae86eb5Schristos Dwarf_Small dw_value_type; 2293ae86eb5Schristos Dwarf_Half dw_regnum; 2303ae86eb5Schristos Dwarf_Unsigned dw_offset_or_block_len; 2313ae86eb5Schristos Dwarf_Ptr dw_block_ptr; 2323ae86eb5Schristos } Dwarf_Regtable_Entry3; 2333ae86eb5Schristos 2343ae86eb5Schristos typedef struct { 2353ae86eb5Schristos Dwarf_Regtable_Entry3 rt3_cfa_rule; 2363ae86eb5Schristos Dwarf_Half rt3_reg_table_size; 2373ae86eb5Schristos Dwarf_Regtable_Entry3 *rt3_rules; 2383ae86eb5Schristos } Dwarf_Regtable3; 2393ae86eb5Schristos 2403ae86eb5Schristos typedef struct { 2413ae86eb5Schristos Dwarf_Off dmd_offset; 2423ae86eb5Schristos Dwarf_Small dmd_type; 2433ae86eb5Schristos Dwarf_Signed dmd_lineno; 2443ae86eb5Schristos Dwarf_Signed dmd_fileindex; 2453ae86eb5Schristos char *dmd_macro; 2463ae86eb5Schristos } Dwarf_Macro_Details; 2473ae86eb5Schristos 2483ae86eb5Schristos /* 2493ae86eb5Schristos * Symbols denoting allocation types, for use with dwarf_dealloc(3). 2503ae86eb5Schristos */ 2513ae86eb5Schristos 2523ae86eb5Schristos enum Dwarf_Allocation_Type { 2533ae86eb5Schristos DW_DLA_ABBREV, 2543ae86eb5Schristos DW_DLA_ADDR, 2553ae86eb5Schristos DW_DLA_ARANGE, 2563ae86eb5Schristos DW_DLA_ATTR, 2573ae86eb5Schristos DW_DLA_BLOCK, 2583ae86eb5Schristos DW_DLA_BOUNDS, 2593ae86eb5Schristos DW_DLA_CIE, 2603ae86eb5Schristos DW_DLA_DEBUG, 2613ae86eb5Schristos DW_DLA_DIE, 2623ae86eb5Schristos DW_DLA_ELLIST, 2633ae86eb5Schristos DW_DLA_ERROR, 2643ae86eb5Schristos DW_DLA_FDE, 2653ae86eb5Schristos DW_DLA_FRAME_BLOCK, 2663ae86eb5Schristos DW_DLA_FRAME_OP, 2673ae86eb5Schristos DW_DLA_FUNC, 2683ae86eb5Schristos DW_DLA_GLOBAL, 2693ae86eb5Schristos DW_DLA_LINE, 2703ae86eb5Schristos DW_DLA_LINEBUF, 2713ae86eb5Schristos DW_DLA_LIST, 2723ae86eb5Schristos DW_DLA_LOC, 2733ae86eb5Schristos DW_DLA_LOCDESC, 2743ae86eb5Schristos DW_DLA_LOC_BLOCK, 2753ae86eb5Schristos DW_DLA_RANGES, 2763ae86eb5Schristos DW_DLA_STRING, 2773ae86eb5Schristos DW_DLA_SUBSCR, 2783ae86eb5Schristos DW_DLA_TYPE, 2793ae86eb5Schristos DW_DLA_TYPENAME, 2803ae86eb5Schristos DW_DLA_VAR, 2813ae86eb5Schristos DW_DLA_WEAK 2823ae86eb5Schristos }; 2833ae86eb5Schristos 2843ae86eb5Schristos /* 2853ae86eb5Schristos * Relocation Type. 2863ae86eb5Schristos */ 2873ae86eb5Schristos enum Dwarf_Rel_Type { 2883ae86eb5Schristos dwarf_drt_none = 0, 2893ae86eb5Schristos dwarf_drt_data_reloc, 2903ae86eb5Schristos dwarf_drt_segment_rel, 2913ae86eb5Schristos dwarf_drt_first_of_length_pair, 2923ae86eb5Schristos dwarf_drt_second_of_length_pair 2933ae86eb5Schristos }; 2943ae86eb5Schristos 2953ae86eb5Schristos /* 2963ae86eb5Schristos * Relocation Entry. 2973ae86eb5Schristos */ 2983ae86eb5Schristos typedef struct Dwarf_Relocation_Data_s { 2993ae86eb5Schristos unsigned char drd_type; 3003ae86eb5Schristos unsigned char drd_length; 3013ae86eb5Schristos Dwarf_Unsigned drd_offset; 3023ae86eb5Schristos Dwarf_Unsigned drd_symbol_index; 3033ae86eb5Schristos } *Dwarf_Relocation_Data; 3043ae86eb5Schristos 3053ae86eb5Schristos #define DWARF_DRD_BUFFER_VERSION 2 3063ae86eb5Schristos 3073ae86eb5Schristos /* 3083ae86eb5Schristos * Error numbers which are specific to this implementation. 3093ae86eb5Schristos */ 3103ae86eb5Schristos enum { 3113ae86eb5Schristos DW_DLE_NONE, /* No error. */ 3123ae86eb5Schristos DW_DLE_ERROR, /* An error! */ 3133ae86eb5Schristos DW_DLE_ARGUMENT, /* Invalid argument. */ 3143ae86eb5Schristos DW_DLE_DEBUG_INFO_NULL, /* Debug info NULL. */ 3153ae86eb5Schristos DW_DLE_NO_ENTRY, /* No entry. */ 3163ae86eb5Schristos DW_DLE_MEMORY, /* Insufficient memory. */ 3173ae86eb5Schristos DW_DLE_ELF, /* ELF error. */ 3183ae86eb5Schristos DW_DLE_CU_LENGTH_ERROR, /* Invalid compilation unit data. */ 3193ae86eb5Schristos DW_DLE_VERSION_STAMP_ERROR, /* Invalid version. */ 3203ae86eb5Schristos DW_DLE_DEBUG_ABBREV_NULL, /* Abbrev not found. */ 3213ae86eb5Schristos DW_DLE_DIE_NO_CU_CONTEXT, /* No current compilation unit. */ 3223ae86eb5Schristos DW_DLE_LOC_EXPR_BAD, /* Invalid location expression. */ 3233ae86eb5Schristos DW_DLE_EXPR_LENGTH_BAD, /* Invalid DWARF expression. */ 3243ae86eb5Schristos DW_DLE_DEBUG_LOC_SECTION_SHORT, /* Loclist section too short. */ 3253ae86eb5Schristos DW_DLE_ATTR_FORM_BAD, /* Invalid attribute form. */ 3263ae86eb5Schristos DW_DLE_DEBUG_LINE_LENGTH_BAD, /* Line info section too short. */ 3273ae86eb5Schristos DW_DLE_LINE_FILE_NUM_BAD, /* Invalid file number. */ 3283ae86eb5Schristos DW_DLE_DIR_INDEX_BAD, /* Invalid dir index. */ 3293ae86eb5Schristos DW_DLE_DEBUG_FRAME_LENGTH_BAD, /* Frame section too short. */ 3303ae86eb5Schristos DW_DLE_NO_CIE_FOR_FDE, /* CIE not found for certain FDE. */ 3313ae86eb5Schristos DW_DLE_FRAME_AUGMENTATION_UNKNOWN, /* Unknown CIE augmentation. */ 3323ae86eb5Schristos DW_DLE_FRAME_INSTR_EXEC_ERROR, /* Frame instruction exec error. */ 3333ae86eb5Schristos DW_DLE_FRAME_VERSION_BAD, /* Invalid frame section version. */ 3343ae86eb5Schristos DW_DLE_FRAME_TABLE_COL_BAD, /* Invalid table column. */ 3353ae86eb5Schristos DW_DLE_DF_REG_NUM_TOO_HIGH, /* Insufficient regtable space. */ 3363ae86eb5Schristos DW_DLE_PC_NOT_IN_FDE_RANGE, /* PC requested not in the FDE range. */ 3373ae86eb5Schristos DW_DLE_ARANGE_OFFSET_BAD, /* Invalid arange offset. */ 3383ae86eb5Schristos DW_DLE_DEBUG_MACRO_INCONSISTENT,/* Invalid macinfo data. */ 3393ae86eb5Schristos DW_DLE_ELF_SECT_ERR, /* Application callback failed. */ 3403ae86eb5Schristos DW_DLE_NUM /* Max error number. */ 3413ae86eb5Schristos }; 3423ae86eb5Schristos 3433ae86eb5Schristos /* 3443ae86eb5Schristos * Mapping of SGI libdwarf error codes for comptibility. 3453ae86eb5Schristos */ 3463ae86eb5Schristos #define DW_DLE_DBG_ALLOC DW_DLE_MEMORY 3473ae86eb5Schristos #define DW_DLE_ALLOC_FAIL DW_DLE_MEMORY 3483ae86eb5Schristos #define DW_DLE_SECT_ALLOC DW_DLE_MEMORY 3493ae86eb5Schristos #define DW_DLE_FILE_ENTRY_ALLOC DW_DLE_MEMORY 3503ae86eb5Schristos #define DW_DLE_LINE_ALLOC DW_DLE_MEMORY 3513ae86eb5Schristos #define DW_DLE_FPGM_ALLOC DW_DLE_MEMORY 3523ae86eb5Schristos #define DW_DLE_INCDIR_ALLOC DW_DLE_MEMORY 3533ae86eb5Schristos #define DW_DLE_STRING_ALLOC DW_DLE_MEMORY 3543ae86eb5Schristos #define DW_DLE_CHUNK_ALLOC DW_DLE_MEMORY 3553ae86eb5Schristos #define DW_DLE_CIE_ALLOC DW_DLE_MEMORY 3563ae86eb5Schristos #define DW_DLE_FDE_ALLOC DW_DLE_MEMORY 3573ae86eb5Schristos #define DW_DLE_CIE_OFFS_ALLOC DW_DLE_MEMORY 3583ae86eb5Schristos #define DW_DLE_DIE_ALLOC DW_DLE_MEMORY 3593ae86eb5Schristos #define DW_DLE_ATTR_ALLOC DW_DLE_MEMORY 3603ae86eb5Schristos #define DW_DLE_ABBREV_ALLOC DW_DLE_MEMORY 3613ae86eb5Schristos #define DW_DLE_ADDR_ALLOC DW_DLE_MEMORY 3623ae86eb5Schristos #define DW_DLE_REL_ALLOC DW_DLE_MEMORY 3633ae86eb5Schristos #define DW_DLE_MACINFO_MALLOC_FAIL DW_DLE_MEMORY 3643ae86eb5Schristos #define DW_DLE_DEBUG_MACRO_MALLOC_SPACE DW_DLE_MEMORY 3653ae86eb5Schristos #define DW_DLE_DF_ALLOC_FAIL DW_DLE_MEMORY 3663ae86eb5Schristos #define DW_DLE_RELOC_SECTION_MALLOC_FAIL DW_DLE_MEMORY 3673ae86eb5Schristos #define DW_DLE_DBG_NULL DW_DLE_ARGUMENT 3683ae86eb5Schristos #define DW_DLE_DIE_NULL DW_DLE_ARGUMENT 3693ae86eb5Schristos #define DW_DLE_FDE_NULL DW_DLE_ARGUMENT 3703ae86eb5Schristos #define DW_DLE_CIE_NULL DW_DLE_ARGUMENT 3713ae86eb5Schristos #define DW_DLE_ATTR_NULL DW_DLE_ARGUMENT 3723ae86eb5Schristos #define DW_DLE_GLOBAL_NULL DW_DLE_ARGUMENT 3733ae86eb5Schristos #define DW_DLE_ARANGES_NULL DW_DLE_ARGUMENT 3743ae86eb5Schristos #define DW_DLE_ARANGE_NULL DW_DLE_ARGUMENT 3753ae86eb5Schristos #define DW_DLE_EXPR_NULL DW_DLE_ARGUMENT 3763ae86eb5Schristos #define DW_DLE_FUNC_NULL DW_DLE_ARGUMENT 3773ae86eb5Schristos #define DW_DLE_TYPE_NULL DW_DLE_ARGUMENT 3783ae86eb5Schristos #define DW_DLE_VAR_NULL DW_DLE_ARGUMENT 3793ae86eb5Schristos #define DW_DLE_WEAK_NULL DW_DLE_ARGUMENT 3803ae86eb5Schristos #define DW_DLE_ELF_BEGIN_ERROR DW_DLE_ELF 3813ae86eb5Schristos #define DW_DLE_ELF_GETEHDR_ERROR DW_DLE_ELF 3823ae86eb5Schristos #define DW_DLE_ELF_GETSHDR_ERROR DW_DLE_ELF 3833ae86eb5Schristos #define DW_DLE_ELF_STRPTR_ERROR DW_DLE_ELF 3843ae86eb5Schristos #define DW_DLE_ELF_SECT_ERROR DW_DLE_ELF 3853ae86eb5Schristos #define DW_DLE_ELF_GETIDENT_ERROR DW_DLE_ELF 3863ae86eb5Schristos 3873ae86eb5Schristos typedef struct _Dwarf_Error { 3883ae86eb5Schristos int err_error; /* DWARF error. */ 3893ae86eb5Schristos int err_elferror; /* ELF error. */ 3903ae86eb5Schristos const char *err_func; /* Function name where error occurred. */ 3913ae86eb5Schristos int err_line; /* Line number where error occurred. */ 3923ae86eb5Schristos char err_msg[1024]; /* Formatted error message. */ 3933ae86eb5Schristos } Dwarf_Error; 3943ae86eb5Schristos 3953ae86eb5Schristos /* 3963ae86eb5Schristos * Dwarf error handler. 3973ae86eb5Schristos */ 3983ae86eb5Schristos typedef void (*Dwarf_Handler)(Dwarf_Error, Dwarf_Ptr); 3993ae86eb5Schristos 4003ae86eb5Schristos #define dwarf_errno(error) error.err_error 4013ae86eb5Schristos #define dwarf_errmsg(error) dwarf_errmsg_(&error) 4023ae86eb5Schristos 4033ae86eb5Schristos /* 4043ae86eb5Schristos * Return values which have to be compatible with other 4053ae86eb5Schristos * implementations of libdwarf. 4063ae86eb5Schristos */ 4073ae86eb5Schristos #define DW_DLV_NO_ENTRY -1 4083ae86eb5Schristos #define DW_DLV_OK 0 4093ae86eb5Schristos #define DW_DLV_ERROR 1 4103ae86eb5Schristos #define DW_DLV_BADADDR NULL 4113ae86eb5Schristos #define DW_DLV_NOCOUNT ((Dwarf_Signed) -1) 4123ae86eb5Schristos 4133ae86eb5Schristos /* 4143ae86eb5Schristos * Access modes. 4153ae86eb5Schristos */ 4163ae86eb5Schristos #define DW_DLC_READ 0x0001 4173ae86eb5Schristos #define DW_DLC_WRITE 0x0002 4183ae86eb5Schristos #define DW_DLC_RDWR 0x0004 4193ae86eb5Schristos 4203ae86eb5Schristos /* 4213ae86eb5Schristos * Flags used by libdwarf producer. 4223ae86eb5Schristos */ 4233ae86eb5Schristos #define DW_DLC_SIZE_64 0x40000000 4243ae86eb5Schristos #define DW_DLC_SIZE_32 0x20000000 4253ae86eb5Schristos #define DW_DLC_OFFSET_SIZE_64 0x10000000 4263ae86eb5Schristos #define DW_DLC_ISA_MIPS 0x80000000 4273ae86eb5Schristos #define DW_DLC_ISA_IA64 0x01000000 4283ae86eb5Schristos #define DW_DLC_STREAM_RELOCATIONS 0x02000000 4293ae86eb5Schristos #define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000 4303ae86eb5Schristos #define DW_DLC_TARGET_BIGENDIAN 0x08000000 4313ae86eb5Schristos #define DW_DLC_TARGET_LITTLEENDIAN 0x00100000 4323ae86eb5Schristos 4333ae86eb5Schristos /* 4343ae86eb5Schristos * Instruction set architectures supported by this implementation. 4353ae86eb5Schristos */ 4363ae86eb5Schristos enum Dwarf_ISA { 4373ae86eb5Schristos DW_ISA_ARM, 4383ae86eb5Schristos DW_ISA_IA64, 4393ae86eb5Schristos DW_ISA_MIPS, 4403ae86eb5Schristos DW_ISA_PPC, 4413ae86eb5Schristos DW_ISA_SPARC, 4423ae86eb5Schristos DW_ISA_X86, 4433ae86eb5Schristos DW_ISA_X86_64, 444*9262d0f3Schristos DW_ISA_AARCH64, 4453ae86eb5Schristos DW_ISA_MAX 4463ae86eb5Schristos }; 4473ae86eb5Schristos 4483ae86eb5Schristos /* Function prototype definitions. */ 449*9262d0f3Schristos #ifdef __cplusplus 450*9262d0f3Schristos extern "C" { 451*9262d0f3Schristos #endif 4523ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die, char *, Dwarf_Error *); 4533ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die, Dwarf_Signed, 4543ae86eb5Schristos Dwarf_Error *); 4553ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die, char *, 4563ae86eb5Schristos Dwarf_Error *); 4573ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die, 4583ae86eb5Schristos Dwarf_Unsigned, Dwarf_Error *); 4593ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_dataref(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4603ae86eb5Schristos Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4613ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4623ae86eb5Schristos Dwarf_Small, Dwarf_Error *); 4633ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug, Dwarf_P_Die, 4643ae86eb5Schristos Dwarf_Half, Dwarf_P_Expr, Dwarf_Error *); 4653ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die, char *, Dwarf_Error *); 4663ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die, char *, Dwarf_Error *); 4673ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug, Dwarf_P_Die, 4683ae86eb5Schristos Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4693ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4703ae86eb5Schristos Dwarf_P_Die, Dwarf_Error *); 4713ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug, Dwarf_P_Die, 4723ae86eb5Schristos Dwarf_Half, Dwarf_Signed, Dwarf_Error *); 4733ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 4743ae86eb5Schristos char *, Dwarf_Error *); 4753ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug, Dwarf_P_Die, 4763ae86eb5Schristos Dwarf_Half, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Error *); 4773ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug, Dwarf_P_Die, 4783ae86eb5Schristos Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4793ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug, Dwarf_P_Die, 4803ae86eb5Schristos Dwarf_Half, Dwarf_Unsigned, Dwarf_Error *); 4813ae86eb5Schristos Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 4823ae86eb5Schristos Dwarf_Signed, Dwarf_Error *); 4833ae86eb5Schristos Dwarf_Unsigned dwarf_add_arange_b(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 4843ae86eb5Schristos Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 4853ae86eb5Schristos Dwarf_Unsigned dwarf_add_die_to_debug(Dwarf_P_Debug, Dwarf_P_Die, 4863ae86eb5Schristos Dwarf_Error *); 4873ae86eb5Schristos Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug, char *, Dwarf_Error *); 4883ae86eb5Schristos Dwarf_Unsigned dwarf_add_expr_addr(Dwarf_P_Expr, Dwarf_Unsigned, 4893ae86eb5Schristos Dwarf_Signed, Dwarf_Error *); 4903ae86eb5Schristos Dwarf_Unsigned dwarf_add_expr_addr_b(Dwarf_P_Expr, Dwarf_Unsigned, 4913ae86eb5Schristos Dwarf_Unsigned, Dwarf_Error *); 4923ae86eb5Schristos Dwarf_Unsigned dwarf_add_expr_gen(Dwarf_P_Expr, Dwarf_Small, Dwarf_Unsigned, 4933ae86eb5Schristos Dwarf_Unsigned, Dwarf_Error *); 4943ae86eb5Schristos Dwarf_P_Fde dwarf_add_fde_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned, 4953ae86eb5Schristos Dwarf_Unsigned, Dwarf_Error *); 4963ae86eb5Schristos Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug, char *, Dwarf_Unsigned, 4973ae86eb5Schristos Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 4983ae86eb5Schristos Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug, char *, Dwarf_Small, 4993ae86eb5Schristos Dwarf_Small, Dwarf_Small, Dwarf_Ptr, Dwarf_Unsigned, 5003ae86eb5Schristos Dwarf_Error *); 5013ae86eb5Schristos Dwarf_Unsigned dwarf_add_frame_fde(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 5023ae86eb5Schristos Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 5033ae86eb5Schristos Dwarf_Error *); 5043ae86eb5Schristos Dwarf_Unsigned dwarf_add_frame_fde_b(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 5053ae86eb5Schristos Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 5063ae86eb5Schristos Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 5073ae86eb5Schristos Dwarf_Unsigned dwarf_add_funcname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5083ae86eb5Schristos Dwarf_Error *); 5093ae86eb5Schristos Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug, Dwarf_Unsigned, 5103ae86eb5Schristos Dwarf_Addr, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Bool, 5113ae86eb5Schristos Dwarf_Bool, Dwarf_Error *); 5123ae86eb5Schristos Dwarf_Unsigned dwarf_add_pubname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5133ae86eb5Schristos Dwarf_Error *); 5143ae86eb5Schristos Dwarf_Unsigned dwarf_add_typename(Dwarf_P_Debug, Dwarf_P_Die, char *, 5153ae86eb5Schristos Dwarf_Error *); 5163ae86eb5Schristos Dwarf_Unsigned dwarf_add_varname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5173ae86eb5Schristos Dwarf_Error *); 5183ae86eb5Schristos Dwarf_Unsigned dwarf_add_weakname(Dwarf_P_Debug, Dwarf_P_Die, char *, 5193ae86eb5Schristos Dwarf_Error *); 5203ae86eb5Schristos int dwarf_arrayorder(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5213ae86eb5Schristos int dwarf_attr(Dwarf_Die, Dwarf_Half, Dwarf_Attribute *, 5223ae86eb5Schristos Dwarf_Error *); 5233ae86eb5Schristos int dwarf_attrlist(Dwarf_Die, Dwarf_Attribute **, 5243ae86eb5Schristos Dwarf_Signed *, Dwarf_Error *); 525*9262d0f3Schristos int dwarf_attroffset(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *); 5263ae86eb5Schristos int dwarf_attrval_flag(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 5273ae86eb5Schristos Dwarf_Error *); 5283ae86eb5Schristos int dwarf_attrval_signed(Dwarf_Die, Dwarf_Half, Dwarf_Signed *, 5293ae86eb5Schristos Dwarf_Error *); 5303ae86eb5Schristos int dwarf_attrval_string(Dwarf_Die, Dwarf_Half, const char **, 5313ae86eb5Schristos Dwarf_Error *); 5323ae86eb5Schristos int dwarf_attrval_unsigned(Dwarf_Die, Dwarf_Half, Dwarf_Unsigned *, 5333ae86eb5Schristos Dwarf_Error *); 5343ae86eb5Schristos int dwarf_bitoffset(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5353ae86eb5Schristos int dwarf_bitsize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5363ae86eb5Schristos int dwarf_bytesize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 5373ae86eb5Schristos int dwarf_child(Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 5383ae86eb5Schristos void dwarf_dealloc(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned); 5393ae86eb5Schristos int dwarf_def_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, char *, 5403ae86eb5Schristos Dwarf_Error *); 5413ae86eb5Schristos int dwarf_die_CU_offset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 5423ae86eb5Schristos int dwarf_die_CU_offset_range(Dwarf_Die, Dwarf_Off *, Dwarf_Off *, 5433ae86eb5Schristos Dwarf_Error *); 5443ae86eb5Schristos int dwarf_die_abbrev_code(Dwarf_Die); 5453ae86eb5Schristos Dwarf_P_Die dwarf_die_link(Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, 5463ae86eb5Schristos Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 5473ae86eb5Schristos int dwarf_diename(Dwarf_Die, char **, Dwarf_Error *); 5483ae86eb5Schristos int dwarf_dieoffset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 5493ae86eb5Schristos int dwarf_elf_init(Elf *, int, Dwarf_Handler, Dwarf_Ptr, 5503ae86eb5Schristos Dwarf_Debug *, Dwarf_Error *); 5513ae86eb5Schristos int dwarf_end_macro_file(Dwarf_P_Debug, Dwarf_Error *); 5523ae86eb5Schristos const char *dwarf_errmsg_(Dwarf_Error *); 5533ae86eb5Schristos int dwarf_expand_frame_instructions(Dwarf_Cie, Dwarf_Ptr, 5543ae86eb5Schristos Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *, 5553ae86eb5Schristos Dwarf_Error *); 5563ae86eb5Schristos Dwarf_Unsigned dwarf_expr_current_offset(Dwarf_P_Expr, Dwarf_Error *); 5573ae86eb5Schristos Dwarf_Addr dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Unsigned *, 5583ae86eb5Schristos Dwarf_Error *); 5593ae86eb5Schristos Dwarf_P_Fde dwarf_fde_cfa_offset(Dwarf_P_Fde, Dwarf_Unsigned, Dwarf_Signed, 5603ae86eb5Schristos Dwarf_Error *); 5613ae86eb5Schristos void dwarf_fde_cie_list_dealloc(Dwarf_Debug, Dwarf_Cie *, 5623ae86eb5Schristos Dwarf_Signed, Dwarf_Fde *, Dwarf_Signed); 5633ae86eb5Schristos char *dwarf_find_macro_value_start(char *); 5643ae86eb5Schristos int dwarf_finish(Dwarf_Debug, Dwarf_Error *); 5653ae86eb5Schristos int dwarf_formaddr(Dwarf_Attribute, Dwarf_Addr *, Dwarf_Error *); 5663ae86eb5Schristos int dwarf_formblock(Dwarf_Attribute, Dwarf_Block **, Dwarf_Error *); 5673ae86eb5Schristos int dwarf_formexprloc(Dwarf_Attribute, Dwarf_Unsigned *, 5683ae86eb5Schristos Dwarf_Ptr *, Dwarf_Error *); 5693ae86eb5Schristos int dwarf_formflag(Dwarf_Attribute, Dwarf_Bool *, Dwarf_Error *); 5703ae86eb5Schristos int dwarf_formref(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *); 5713ae86eb5Schristos int dwarf_formsdata(Dwarf_Attribute, Dwarf_Signed *, Dwarf_Error *); 5723ae86eb5Schristos int dwarf_formsig8(Dwarf_Attribute, Dwarf_Sig8 *, Dwarf_Error *); 5733ae86eb5Schristos int dwarf_formstring(Dwarf_Attribute, char **, Dwarf_Error *); 5743ae86eb5Schristos int dwarf_formudata(Dwarf_Attribute, Dwarf_Unsigned *, 5753ae86eb5Schristos Dwarf_Error *); 5763ae86eb5Schristos int dwarf_func_cu_offset(Dwarf_Func, Dwarf_Off *, Dwarf_Error *); 5773ae86eb5Schristos int dwarf_func_die_offset(Dwarf_Func, Dwarf_Off *, 5783ae86eb5Schristos Dwarf_Error *); 5793ae86eb5Schristos int dwarf_func_name_offsets(Dwarf_Func, char **, 5803ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 5813ae86eb5Schristos int dwarf_funcname(Dwarf_Func, char **, Dwarf_Error *); 5823ae86eb5Schristos void dwarf_funcs_dealloc(Dwarf_Debug, Dwarf_Func *, Dwarf_Signed); 5833ae86eb5Schristos int dwarf_get_ACCESS_name(unsigned, const char **); 5843ae86eb5Schristos int dwarf_get_ATE_name(unsigned, const char **); 5853ae86eb5Schristos int dwarf_get_AT_name(unsigned, const char **); 5863ae86eb5Schristos int dwarf_get_CC_name(unsigned, const char **); 5873ae86eb5Schristos int dwarf_get_CFA_name(unsigned, const char **); 5883ae86eb5Schristos int dwarf_get_CHILDREN_name(unsigned, const char **); 5893ae86eb5Schristos int dwarf_get_DSC_name(unsigned, const char **); 5903ae86eb5Schristos int dwarf_get_DS_name(unsigned, const char **); 5913ae86eb5Schristos int dwarf_get_EH_name(unsigned, const char **); 5923ae86eb5Schristos int dwarf_get_END_name(unsigned, const char **); 5933ae86eb5Schristos int dwarf_get_FORM_name(unsigned, const char **); 5943ae86eb5Schristos int dwarf_get_ID_name(unsigned, const char **); 5953ae86eb5Schristos int dwarf_get_INL_name(unsigned, const char **); 5963ae86eb5Schristos int dwarf_get_LANG_name(unsigned, const char **); 5973ae86eb5Schristos int dwarf_get_LNE_name(unsigned, const char **); 5983ae86eb5Schristos int dwarf_get_LNS_name(unsigned, const char **); 5993ae86eb5Schristos int dwarf_get_MACINFO_name(unsigned, const char **); 6003ae86eb5Schristos int dwarf_get_OP_name(unsigned, const char **); 6013ae86eb5Schristos int dwarf_get_ORD_name(unsigned, const char **); 6023ae86eb5Schristos int dwarf_get_TAG_name(unsigned, const char **); 6033ae86eb5Schristos int dwarf_get_VIRTUALITY_name(unsigned, const char **); 6043ae86eb5Schristos int dwarf_get_VIS_name(unsigned, const char **); 6053ae86eb5Schristos int dwarf_get_abbrev(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Abbrev *, 6063ae86eb5Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Error *); 6073ae86eb5Schristos int dwarf_get_abbrev_children_flag(Dwarf_Abbrev, Dwarf_Signed *, 6083ae86eb5Schristos Dwarf_Error *); 6093ae86eb5Schristos int dwarf_get_abbrev_code(Dwarf_Abbrev, Dwarf_Unsigned *, 6103ae86eb5Schristos Dwarf_Error *); 6113ae86eb5Schristos int dwarf_get_abbrev_entry(Dwarf_Abbrev, Dwarf_Signed, Dwarf_Half *, 6123ae86eb5Schristos Dwarf_Signed *, Dwarf_Off *, Dwarf_Error *); 6133ae86eb5Schristos int dwarf_get_abbrev_tag(Dwarf_Abbrev, Dwarf_Half *, Dwarf_Error *); 6143ae86eb5Schristos int dwarf_get_address_size(Dwarf_Debug, Dwarf_Half *, 6153ae86eb5Schristos Dwarf_Error *); 6163ae86eb5Schristos int dwarf_get_arange(Dwarf_Arange *, Dwarf_Unsigned, Dwarf_Addr, 6173ae86eb5Schristos Dwarf_Arange *, Dwarf_Error *); 6183ae86eb5Schristos int dwarf_get_arange_cu_header_offset(Dwarf_Arange, Dwarf_Off *, 6193ae86eb5Schristos Dwarf_Error *); 6203ae86eb5Schristos int dwarf_get_arange_info(Dwarf_Arange, Dwarf_Addr *, 6213ae86eb5Schristos Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Error *); 6223ae86eb5Schristos int dwarf_get_aranges(Dwarf_Debug, Dwarf_Arange **, Dwarf_Signed *, 6233ae86eb5Schristos Dwarf_Error *); 6243ae86eb5Schristos int dwarf_get_cie_index(Dwarf_Cie, Dwarf_Signed *, Dwarf_Error *); 6253ae86eb5Schristos int dwarf_get_cie_info(Dwarf_Cie, Dwarf_Unsigned *, Dwarf_Small *, 6263ae86eb5Schristos char **, Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Half *, 6273ae86eb5Schristos Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Error *); 6283ae86eb5Schristos int dwarf_get_cie_of_fde(Dwarf_Fde, Dwarf_Cie *, Dwarf_Error *); 6293ae86eb5Schristos int dwarf_get_cu_die_offset(Dwarf_Arange, Dwarf_Off *, 6303ae86eb5Schristos Dwarf_Error *); 6313ae86eb5Schristos int dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug, 6323ae86eb5Schristos Dwarf_Off, Dwarf_Off *, Dwarf_Error *); 633*9262d0f3Schristos int dwarf_get_cu_die_offset_given_cu_header_offset_b(Dwarf_Debug, 634*9262d0f3Schristos Dwarf_Off, Dwarf_Bool, Dwarf_Off *, Dwarf_Error *); 635*9262d0f3Schristos Dwarf_Bool dwarf_get_die_infotypes_flag(Dwarf_Die); 6363ae86eb5Schristos int dwarf_get_elf(Dwarf_Debug, Elf **, Dwarf_Error *); 6373ae86eb5Schristos int dwarf_get_fde_at_pc(Dwarf_Fde *, Dwarf_Addr, Dwarf_Fde *, 6383ae86eb5Schristos Dwarf_Addr *, Dwarf_Addr *, Dwarf_Error *); 6393ae86eb5Schristos int dwarf_get_fde_info_for_all_regs(Dwarf_Fde, Dwarf_Addr, 6403ae86eb5Schristos Dwarf_Regtable *, Dwarf_Addr *, Dwarf_Error *); 6413ae86eb5Schristos int dwarf_get_fde_info_for_all_regs3(Dwarf_Fde, Dwarf_Addr, 6423ae86eb5Schristos Dwarf_Regtable3 *, Dwarf_Addr *, Dwarf_Error *); 6433ae86eb5Schristos int dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde, Dwarf_Addr, 6443ae86eb5Schristos Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 6453ae86eb5Schristos Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 6463ae86eb5Schristos int dwarf_get_fde_info_for_reg(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 6473ae86eb5Schristos Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 6483ae86eb5Schristos Dwarf_Addr *, Dwarf_Error *); 6493ae86eb5Schristos int dwarf_get_fde_info_for_reg3(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 6503ae86eb5Schristos Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, 6513ae86eb5Schristos Dwarf_Signed *, Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 6523ae86eb5Schristos int dwarf_get_fde_instr_bytes(Dwarf_Fde, Dwarf_Ptr *, 6533ae86eb5Schristos Dwarf_Unsigned *, Dwarf_Error *); 6543ae86eb5Schristos int dwarf_get_fde_list(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 6553ae86eb5Schristos Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 6563ae86eb5Schristos int dwarf_get_fde_list_eh(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 6573ae86eb5Schristos Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 6583ae86eb5Schristos int dwarf_get_fde_n(Dwarf_Fde *, Dwarf_Unsigned, Dwarf_Fde *, 6593ae86eb5Schristos Dwarf_Error *); 6603ae86eb5Schristos int dwarf_get_fde_range(Dwarf_Fde, Dwarf_Addr *, Dwarf_Unsigned *, 6613ae86eb5Schristos Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Signed *, 6623ae86eb5Schristos Dwarf_Off *, Dwarf_Error *); 6633ae86eb5Schristos enum Dwarf_Form_Class dwarf_get_form_class(Dwarf_Half, Dwarf_Half, Dwarf_Half, 6643ae86eb5Schristos Dwarf_Half); 6653ae86eb5Schristos int dwarf_get_funcs(Dwarf_Debug, Dwarf_Func **, Dwarf_Signed *, 6663ae86eb5Schristos Dwarf_Error *); 6673ae86eb5Schristos int dwarf_get_globals(Dwarf_Debug, Dwarf_Global **, Dwarf_Signed *, 6683ae86eb5Schristos Dwarf_Error *); 6693ae86eb5Schristos int dwarf_get_loclist_entry(Dwarf_Debug, Dwarf_Unsigned, 6703ae86eb5Schristos Dwarf_Addr *, Dwarf_Addr *, Dwarf_Ptr *, Dwarf_Unsigned *, 6713ae86eb5Schristos Dwarf_Unsigned *, Dwarf_Error *); 6723ae86eb5Schristos int dwarf_get_macro_details(Dwarf_Debug, Dwarf_Off, Dwarf_Unsigned, 6733ae86eb5Schristos Dwarf_Signed *, Dwarf_Macro_Details **, Dwarf_Error *); 6743ae86eb5Schristos int dwarf_get_pubtypes(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 6753ae86eb5Schristos Dwarf_Error *); 6763ae86eb5Schristos int dwarf_get_ranges(Dwarf_Debug, Dwarf_Off, Dwarf_Ranges **, 6773ae86eb5Schristos Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 6783ae86eb5Schristos int dwarf_get_ranges_a(Dwarf_Debug, Dwarf_Off, Dwarf_Die, 6793ae86eb5Schristos Dwarf_Ranges **, Dwarf_Signed *, Dwarf_Unsigned *, 6803ae86eb5Schristos Dwarf_Error *); 6813ae86eb5Schristos int dwarf_get_relocation_info(Dwarf_P_Debug, Dwarf_Signed *, 6823ae86eb5Schristos Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Relocation_Data *, 6833ae86eb5Schristos Dwarf_Error *); 6843ae86eb5Schristos int dwarf_get_relocation_info_count(Dwarf_P_Debug, Dwarf_Unsigned *, 6853ae86eb5Schristos int *, Dwarf_Error *); 6863ae86eb5Schristos Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug, Dwarf_Signed, 6873ae86eb5Schristos Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 688*9262d0f3Schristos int dwarf_get_section_max_offsets(Dwarf_Debug, Dwarf_Unsigned *, 689*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 690*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 691*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 692*9262d0f3Schristos Dwarf_Unsigned *); 693*9262d0f3Schristos int dwarf_get_section_max_offsets_b(Dwarf_Debug, Dwarf_Unsigned *, 694*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 695*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 696*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *, 697*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Unsigned *); 6983ae86eb5Schristos int dwarf_get_str(Dwarf_Debug, Dwarf_Off, char **, Dwarf_Signed *, 6993ae86eb5Schristos Dwarf_Error *); 7003ae86eb5Schristos int dwarf_get_types(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 7013ae86eb5Schristos Dwarf_Error *); 7023ae86eb5Schristos int dwarf_get_vars(Dwarf_Debug, Dwarf_Var **, Dwarf_Signed *, 7033ae86eb5Schristos Dwarf_Error *); 7043ae86eb5Schristos int dwarf_get_weaks(Dwarf_Debug, Dwarf_Weak **, Dwarf_Signed *, 7053ae86eb5Schristos Dwarf_Error *); 7063ae86eb5Schristos int dwarf_global_cu_offset(Dwarf_Global, Dwarf_Off *, Dwarf_Error *); 7073ae86eb5Schristos int dwarf_global_die_offset(Dwarf_Global, Dwarf_Off *, 7083ae86eb5Schristos Dwarf_Error *); 7093ae86eb5Schristos int dwarf_global_formref(Dwarf_Attribute, Dwarf_Off *, 7103ae86eb5Schristos Dwarf_Error *); 7113ae86eb5Schristos int dwarf_global_name_offsets(Dwarf_Global, char **, 7123ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 7133ae86eb5Schristos void dwarf_globals_dealloc(Dwarf_Debug, Dwarf_Global *, Dwarf_Signed); 7143ae86eb5Schristos int dwarf_globname(Dwarf_Global, char **, Dwarf_Error *); 7153ae86eb5Schristos int dwarf_hasattr(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 7163ae86eb5Schristos Dwarf_Error *); 7173ae86eb5Schristos int dwarf_hasform(Dwarf_Attribute, Dwarf_Half, Dwarf_Bool *, 7183ae86eb5Schristos Dwarf_Error *); 7193ae86eb5Schristos int dwarf_highpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 720*9262d0f3Schristos int dwarf_highpc_b(Dwarf_Die, Dwarf_Addr *, Dwarf_Half *, 721*9262d0f3Schristos enum Dwarf_Form_Class *, Dwarf_Error *); 7223ae86eb5Schristos int dwarf_init(int, int, Dwarf_Handler, Dwarf_Ptr, Dwarf_Debug *, 7233ae86eb5Schristos Dwarf_Error *); 7243ae86eb5Schristos int dwarf_line_srcfileno(Dwarf_Line, Dwarf_Unsigned *, 7253ae86eb5Schristos Dwarf_Error *); 7263ae86eb5Schristos int dwarf_lineaddr(Dwarf_Line, Dwarf_Addr *, Dwarf_Error *); 7273ae86eb5Schristos int dwarf_linebeginstatement(Dwarf_Line, Dwarf_Bool *, 7283ae86eb5Schristos Dwarf_Error *); 7293ae86eb5Schristos int dwarf_lineblock(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 7303ae86eb5Schristos int dwarf_lineendsequence(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 7313ae86eb5Schristos int dwarf_lineno(Dwarf_Line, Dwarf_Unsigned *, Dwarf_Error *); 7323ae86eb5Schristos int dwarf_lineoff(Dwarf_Line, Dwarf_Signed *, Dwarf_Error *); 7333ae86eb5Schristos int dwarf_linesrc(Dwarf_Line, char **, Dwarf_Error *); 7343ae86eb5Schristos Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Error *); 7353ae86eb5Schristos Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 7363ae86eb5Schristos Dwarf_Error *); 7373ae86eb5Schristos int dwarf_loclist(Dwarf_Attribute, Dwarf_Locdesc **, Dwarf_Signed *, 7383ae86eb5Schristos Dwarf_Error *); 7393ae86eb5Schristos int dwarf_loclist_from_expr(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned, 7403ae86eb5Schristos Dwarf_Locdesc **, Dwarf_Signed *, Dwarf_Error *); 7413ae86eb5Schristos int dwarf_loclist_from_expr_a(Dwarf_Debug, Dwarf_Ptr, 7423ae86eb5Schristos Dwarf_Unsigned, Dwarf_Half, Dwarf_Locdesc **, 7433ae86eb5Schristos Dwarf_Signed *, Dwarf_Error *); 744*9262d0f3Schristos int dwarf_loclist_from_expr_b(Dwarf_Debug, Dwarf_Ptr, 745*9262d0f3Schristos Dwarf_Unsigned, Dwarf_Half, Dwarf_Half, 746*9262d0f3Schristos Dwarf_Small, Dwarf_Locdesc **, Dwarf_Signed *, 747*9262d0f3Schristos Dwarf_Error *); 7483ae86eb5Schristos int dwarf_loclist_n(Dwarf_Attribute, Dwarf_Locdesc ***, 7493ae86eb5Schristos Dwarf_Signed *, Dwarf_Error *); 7503ae86eb5Schristos int dwarf_lowpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 7513ae86eb5Schristos Dwarf_P_Die dwarf_new_die(Dwarf_P_Debug, Dwarf_Tag, Dwarf_P_Die, 7523ae86eb5Schristos Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 7533ae86eb5Schristos Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug, Dwarf_Error *); 7543ae86eb5Schristos Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug, Dwarf_Error *); 7553ae86eb5Schristos int dwarf_next_cu_header(Dwarf_Debug, Dwarf_Unsigned *, 7563ae86eb5Schristos Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, 7573ae86eb5Schristos Dwarf_Unsigned *, Dwarf_Error *); 7583ae86eb5Schristos int dwarf_next_cu_header_b(Dwarf_Debug, Dwarf_Unsigned *, 7593ae86eb5Schristos Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, Dwarf_Half *, 7603ae86eb5Schristos Dwarf_Half *, Dwarf_Unsigned *, Dwarf_Error *); 761*9262d0f3Schristos int dwarf_next_cu_header_c(Dwarf_Debug, Dwarf_Bool, 762*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, 763*9262d0f3Schristos Dwarf_Half *, Dwarf_Half *, Dwarf_Sig8 *, Dwarf_Unsigned *, 764*9262d0f3Schristos Dwarf_Unsigned *, Dwarf_Error *); 765*9262d0f3Schristos int dwarf_next_types_section(Dwarf_Debug, Dwarf_Error *); 7663ae86eb5Schristos int dwarf_object_finish(Dwarf_Debug, Dwarf_Error *); 7673ae86eb5Schristos int dwarf_object_init(Dwarf_Obj_Access_Interface *, Dwarf_Handler, 7683ae86eb5Schristos Dwarf_Ptr, Dwarf_Debug *, Dwarf_Error *); 7693ae86eb5Schristos int dwarf_offdie(Dwarf_Debug, Dwarf_Off, Dwarf_Die *, 7703ae86eb5Schristos Dwarf_Error *); 771*9262d0f3Schristos int dwarf_offdie_b(Dwarf_Debug, Dwarf_Off, Dwarf_Bool, Dwarf_Die *, 772*9262d0f3Schristos Dwarf_Error *); 7733ae86eb5Schristos Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug, Dwarf_Error *); 7743ae86eb5Schristos Dwarf_P_Debug dwarf_producer_init(Dwarf_Unsigned, Dwarf_Callback_Func, 7753ae86eb5Schristos Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 7763ae86eb5Schristos Dwarf_P_Debug dwarf_producer_init_b(Dwarf_Unsigned, Dwarf_Callback_Func_b, 7773ae86eb5Schristos Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 7783ae86eb5Schristos int dwarf_producer_set_isa(Dwarf_P_Debug, enum Dwarf_ISA, 7793ae86eb5Schristos Dwarf_Error *); 7803ae86eb5Schristos int dwarf_pubtype_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 7813ae86eb5Schristos int dwarf_pubtype_die_offset(Dwarf_Type, Dwarf_Off *, 7823ae86eb5Schristos Dwarf_Error *); 7833ae86eb5Schristos int dwarf_pubtype_name_offsets(Dwarf_Type, char **, 7843ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 7853ae86eb5Schristos int dwarf_pubtypename(Dwarf_Type, char **, Dwarf_Error *); 7863ae86eb5Schristos void dwarf_pubtypes_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 7873ae86eb5Schristos void dwarf_ranges_dealloc(Dwarf_Debug, Dwarf_Ranges *, Dwarf_Signed); 7883ae86eb5Schristos void dwarf_reset_section_bytes(Dwarf_P_Debug); 7893ae86eb5Schristos Dwarf_Half dwarf_set_frame_cfa_value(Dwarf_Debug, Dwarf_Half); 7903ae86eb5Schristos Dwarf_Half dwarf_set_frame_rule_initial_value(Dwarf_Debug, Dwarf_Half); 7913ae86eb5Schristos Dwarf_Half dwarf_set_frame_rule_table_size(Dwarf_Debug, Dwarf_Half); 7923ae86eb5Schristos Dwarf_Half dwarf_set_frame_same_value(Dwarf_Debug, Dwarf_Half); 7933ae86eb5Schristos Dwarf_Half dwarf_set_frame_undefined_value(Dwarf_Debug, Dwarf_Half); 7943ae86eb5Schristos int dwarf_set_reloc_application(int); 7953ae86eb5Schristos Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug, Dwarf_Ptr); 7963ae86eb5Schristos Dwarf_Handler dwarf_seterrhand(Dwarf_Debug, Dwarf_Handler); 7973ae86eb5Schristos int dwarf_siblingof(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 798*9262d0f3Schristos int dwarf_siblingof_b(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Bool, 799*9262d0f3Schristos Dwarf_Error *); 8003ae86eb5Schristos int dwarf_srcfiles(Dwarf_Die, char ***, Dwarf_Signed *, Dwarf_Error *); 8013ae86eb5Schristos int dwarf_srclang(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 8023ae86eb5Schristos int dwarf_srclines(Dwarf_Die, Dwarf_Line **, Dwarf_Signed *, 8033ae86eb5Schristos Dwarf_Error *); 8043ae86eb5Schristos void dwarf_srclines_dealloc(Dwarf_Debug, Dwarf_Line *, 8053ae86eb5Schristos Dwarf_Signed); 8063ae86eb5Schristos int dwarf_start_macro_file(Dwarf_P_Debug, Dwarf_Unsigned, 8073ae86eb5Schristos Dwarf_Unsigned, Dwarf_Error *); 8083ae86eb5Schristos int dwarf_tag(Dwarf_Die, Dwarf_Half *, Dwarf_Error *); 8093ae86eb5Schristos Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug, Dwarf_Error *); 8103ae86eb5Schristos int dwarf_type_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 8113ae86eb5Schristos int dwarf_type_die_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 8123ae86eb5Schristos int dwarf_type_name_offsets(Dwarf_Type, char **, 8133ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8143ae86eb5Schristos int dwarf_typename(Dwarf_Type, char **, Dwarf_Error *); 8153ae86eb5Schristos void dwarf_types_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 8163ae86eb5Schristos int dwarf_undef_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, 8173ae86eb5Schristos Dwarf_Error *); 8183ae86eb5Schristos int dwarf_var_cu_offset(Dwarf_Var, Dwarf_Off *, Dwarf_Error *); 8193ae86eb5Schristos int dwarf_var_die_offset(Dwarf_Var, Dwarf_Off *, 8203ae86eb5Schristos Dwarf_Error *); 8213ae86eb5Schristos int dwarf_var_name_offsets(Dwarf_Var, char **, 8223ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8233ae86eb5Schristos int dwarf_varname(Dwarf_Var, char **, Dwarf_Error *); 8243ae86eb5Schristos void dwarf_vars_dealloc(Dwarf_Debug, Dwarf_Var *, Dwarf_Signed); 8253ae86eb5Schristos int dwarf_vendor_ext(Dwarf_P_Debug, Dwarf_Unsigned, char *, 8263ae86eb5Schristos Dwarf_Error *); 8273ae86eb5Schristos int dwarf_weak_cu_offset(Dwarf_Weak, Dwarf_Off *, Dwarf_Error *); 8283ae86eb5Schristos int dwarf_weak_die_offset(Dwarf_Weak, Dwarf_Off *, 8293ae86eb5Schristos Dwarf_Error *); 8303ae86eb5Schristos int dwarf_weak_name_offsets(Dwarf_Weak, char **, 8313ae86eb5Schristos Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 8323ae86eb5Schristos int dwarf_weakname(Dwarf_Weak, char **, Dwarf_Error *); 8333ae86eb5Schristos void dwarf_weaks_dealloc(Dwarf_Debug, Dwarf_Weak *, Dwarf_Signed); 8343ae86eb5Schristos int dwarf_whatattr(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 8353ae86eb5Schristos int dwarf_whatform(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 8363ae86eb5Schristos int dwarf_whatform_direct(Dwarf_Attribute, Dwarf_Half *, 8373ae86eb5Schristos Dwarf_Error *); 838*9262d0f3Schristos #ifdef __cplusplus 839*9262d0f3Schristos } 840*9262d0f3Schristos #endif 8413ae86eb5Schristos 8423ae86eb5Schristos #endif /* !_LIBDWARF_H_ */ 843