1*0a6a1f1dSLionel Sambuc /* $NetBSD: libdwarf.h,v 1.2 2014/03/09 16:58:04 christos Exp $ */ 2*0a6a1f1dSLionel Sambuc 3*0a6a1f1dSLionel Sambuc /*- 4*0a6a1f1dSLionel Sambuc * Copyright (c) 2007 John Birrell (jb@freebsd.org) 5*0a6a1f1dSLionel Sambuc * Copyright (c) 2009-2011 Kai Wang 6*0a6a1f1dSLionel Sambuc * All rights reserved. 7*0a6a1f1dSLionel Sambuc * 8*0a6a1f1dSLionel Sambuc * Redistribution and use in source and binary forms, with or without 9*0a6a1f1dSLionel Sambuc * modification, are permitted provided that the following conditions 10*0a6a1f1dSLionel Sambuc * are met: 11*0a6a1f1dSLionel Sambuc * 1. Redistributions of source code must retain the above copyright 12*0a6a1f1dSLionel Sambuc * notice, this list of conditions and the following disclaimer. 13*0a6a1f1dSLionel Sambuc * 2. Redistributions in binary form must reproduce the above copyright 14*0a6a1f1dSLionel Sambuc * notice, this list of conditions and the following disclaimer in the 15*0a6a1f1dSLionel Sambuc * documentation and/or other materials provided with the distribution. 16*0a6a1f1dSLionel Sambuc * 17*0a6a1f1dSLionel Sambuc * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18*0a6a1f1dSLionel Sambuc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19*0a6a1f1dSLionel Sambuc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20*0a6a1f1dSLionel Sambuc * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21*0a6a1f1dSLionel Sambuc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22*0a6a1f1dSLionel Sambuc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23*0a6a1f1dSLionel Sambuc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24*0a6a1f1dSLionel Sambuc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25*0a6a1f1dSLionel Sambuc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*0a6a1f1dSLionel Sambuc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*0a6a1f1dSLionel Sambuc * SUCH DAMAGE. 28*0a6a1f1dSLionel Sambuc * 29*0a6a1f1dSLionel Sambuc * Id: libdwarf.h 2576 2012-09-13 09:16:11Z jkoshy 30*0a6a1f1dSLionel Sambuc */ 31*0a6a1f1dSLionel Sambuc 32*0a6a1f1dSLionel Sambuc #ifndef _LIBDWARF_H_ 33*0a6a1f1dSLionel Sambuc #define _LIBDWARF_H_ 34*0a6a1f1dSLionel Sambuc 35*0a6a1f1dSLionel Sambuc #include <libelf.h> 36*0a6a1f1dSLionel Sambuc 37*0a6a1f1dSLionel Sambuc typedef int Dwarf_Bool; 38*0a6a1f1dSLionel Sambuc typedef off_t Dwarf_Off; 39*0a6a1f1dSLionel Sambuc typedef uint64_t Dwarf_Unsigned; 40*0a6a1f1dSLionel Sambuc typedef uint16_t Dwarf_Half; 41*0a6a1f1dSLionel Sambuc typedef uint8_t Dwarf_Small; 42*0a6a1f1dSLionel Sambuc typedef int64_t Dwarf_Signed; 43*0a6a1f1dSLionel Sambuc typedef uint64_t Dwarf_Addr; 44*0a6a1f1dSLionel Sambuc typedef void *Dwarf_Ptr; 45*0a6a1f1dSLionel Sambuc 46*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Abbrev *Dwarf_Abbrev; 47*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Arange *Dwarf_Arange; 48*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_ArangeSet *Dwarf_ArangeSet; 49*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Attribute *Dwarf_Attribute; 50*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Attribute *Dwarf_P_Attribute; 51*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_AttrDef *Dwarf_AttrDef; 52*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_CU *Dwarf_CU; 53*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Cie *Dwarf_Cie; 54*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Cie *Dwarf_P_Cie; 55*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Debug *Dwarf_Debug; 56*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Debug *Dwarf_P_Debug; 57*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Die *Dwarf_Die; 58*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Die *Dwarf_P_Die; 59*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Fde *Dwarf_Fde; 60*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Fde *Dwarf_P_Fde; 61*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_FrameSec *Dwarf_FrameSec; 62*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Line *Dwarf_Line; 63*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_LineFile *Dwarf_LineFile; 64*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_LineInfo *Dwarf_LineInfo; 65*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Loclist *Dwarf_Loclist; 66*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_MacroSet *Dwarf_MacroSet; 67*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_NamePair; 68*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_Func; 69*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_Global; 70*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_Type; 71*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_Var; 72*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NamePair *Dwarf_Weak; 73*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NameTbl *Dwarf_NameTbl; 74*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_NameSec *Dwarf_NameSec; 75*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_P_Expr *Dwarf_P_Expr; 76*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Rangelist *Dwarf_Rangelist; 77*0a6a1f1dSLionel Sambuc 78*0a6a1f1dSLionel Sambuc typedef enum { 79*0a6a1f1dSLionel Sambuc DW_OBJECT_MSB, 80*0a6a1f1dSLionel Sambuc DW_OBJECT_LSB 81*0a6a1f1dSLionel Sambuc } Dwarf_Endianness; 82*0a6a1f1dSLionel Sambuc 83*0a6a1f1dSLionel Sambuc typedef struct { 84*0a6a1f1dSLionel Sambuc Dwarf_Addr addr; 85*0a6a1f1dSLionel Sambuc Dwarf_Unsigned size; 86*0a6a1f1dSLionel Sambuc const char *name; 87*0a6a1f1dSLionel Sambuc } Dwarf_Obj_Access_Section; 88*0a6a1f1dSLionel Sambuc 89*0a6a1f1dSLionel Sambuc typedef struct { 90*0a6a1f1dSLionel Sambuc int (*get_section_info)(void *_obj, Dwarf_Half _index, 91*0a6a1f1dSLionel Sambuc Dwarf_Obj_Access_Section *_ret_section, int *_error); 92*0a6a1f1dSLionel Sambuc Dwarf_Endianness (*get_byte_order)(void *_obj); 93*0a6a1f1dSLionel Sambuc Dwarf_Small (*get_length_size)(void *_obj); 94*0a6a1f1dSLionel Sambuc Dwarf_Small (*get_pointer_size)(void *_obj); 95*0a6a1f1dSLionel Sambuc Dwarf_Unsigned (*get_section_count)(void *_obj); 96*0a6a1f1dSLionel Sambuc int (*load_section)(void *_obj, Dwarf_Half _index, 97*0a6a1f1dSLionel Sambuc Dwarf_Small **_ret_data, int *_error); 98*0a6a1f1dSLionel Sambuc } Dwarf_Obj_Access_Methods; 99*0a6a1f1dSLionel Sambuc 100*0a6a1f1dSLionel Sambuc typedef struct { 101*0a6a1f1dSLionel Sambuc void *object; 102*0a6a1f1dSLionel Sambuc const Dwarf_Obj_Access_Methods *methods; 103*0a6a1f1dSLionel Sambuc } Dwarf_Obj_Access_Interface; 104*0a6a1f1dSLionel Sambuc 105*0a6a1f1dSLionel Sambuc typedef int (*Dwarf_Callback_Func)(char *_name, int _size, 106*0a6a1f1dSLionel Sambuc Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 107*0a6a1f1dSLionel Sambuc Dwarf_Unsigned _info, int *_index, int *_error); 108*0a6a1f1dSLionel Sambuc 109*0a6a1f1dSLionel Sambuc typedef int (*Dwarf_Callback_Func_b)(char *_name, int _size, 110*0a6a1f1dSLionel Sambuc Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link, 111*0a6a1f1dSLionel Sambuc Dwarf_Unsigned _info, Dwarf_Unsigned *_index, int *_error); 112*0a6a1f1dSLionel Sambuc 113*0a6a1f1dSLionel Sambuc typedef Dwarf_Unsigned Dwarf_Tag; 114*0a6a1f1dSLionel Sambuc 115*0a6a1f1dSLionel Sambuc typedef struct { 116*0a6a1f1dSLionel Sambuc Dwarf_Small lr_atom; 117*0a6a1f1dSLionel Sambuc Dwarf_Unsigned lr_number; 118*0a6a1f1dSLionel Sambuc Dwarf_Unsigned lr_number2; 119*0a6a1f1dSLionel Sambuc Dwarf_Unsigned lr_offset; 120*0a6a1f1dSLionel Sambuc } Dwarf_Loc; 121*0a6a1f1dSLionel Sambuc 122*0a6a1f1dSLionel Sambuc typedef struct { 123*0a6a1f1dSLionel Sambuc Dwarf_Addr ld_lopc; 124*0a6a1f1dSLionel Sambuc Dwarf_Addr ld_hipc; 125*0a6a1f1dSLionel Sambuc Dwarf_Half ld_cents; 126*0a6a1f1dSLionel Sambuc Dwarf_Loc *ld_s; 127*0a6a1f1dSLionel Sambuc } Dwarf_Locdesc; 128*0a6a1f1dSLionel Sambuc 129*0a6a1f1dSLionel Sambuc typedef struct { 130*0a6a1f1dSLionel Sambuc char signature[8]; 131*0a6a1f1dSLionel Sambuc } Dwarf_Sig8; 132*0a6a1f1dSLionel Sambuc 133*0a6a1f1dSLionel Sambuc typedef struct { 134*0a6a1f1dSLionel Sambuc Dwarf_Unsigned bl_len; 135*0a6a1f1dSLionel Sambuc Dwarf_Ptr bl_data; 136*0a6a1f1dSLionel Sambuc } Dwarf_Block; 137*0a6a1f1dSLionel Sambuc 138*0a6a1f1dSLionel Sambuc enum Dwarf_Ranges_Entry_Type { 139*0a6a1f1dSLionel Sambuc DW_RANGES_ENTRY, 140*0a6a1f1dSLionel Sambuc DW_RANGES_ADDRESS_SELECTION, 141*0a6a1f1dSLionel Sambuc DW_RANGES_END 142*0a6a1f1dSLionel Sambuc }; 143*0a6a1f1dSLionel Sambuc 144*0a6a1f1dSLionel Sambuc typedef struct { 145*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwr_addr1; 146*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwr_addr2; 147*0a6a1f1dSLionel Sambuc enum Dwarf_Ranges_Entry_Type dwr_type; 148*0a6a1f1dSLionel Sambuc } Dwarf_Ranges; 149*0a6a1f1dSLionel Sambuc 150*0a6a1f1dSLionel Sambuc enum Dwarf_Form_Class { 151*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_UNKNOWN, 152*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_ADDRESS, 153*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_BLOCK, 154*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_CONSTANT, 155*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_EXPRLOC, 156*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_FLAG, 157*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_LINEPTR, 158*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_LOCLISTPTR, 159*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_MACPTR, 160*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_RANGELISTPTR, 161*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_REFERENCE, 162*0a6a1f1dSLionel Sambuc DW_FORM_CLASS_STRING 163*0a6a1f1dSLionel Sambuc }; 164*0a6a1f1dSLionel Sambuc 165*0a6a1f1dSLionel Sambuc #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER 166*0a6a1f1dSLionel Sambuc #define DW_FRAME_HIGHEST_NORMAL_REGISTER 63 167*0a6a1f1dSLionel Sambuc #endif 168*0a6a1f1dSLionel Sambuc 169*0a6a1f1dSLionel Sambuc #define DW_FRAME_RA_COL (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1) 170*0a6a1f1dSLionel Sambuc #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2) 171*0a6a1f1dSLionel Sambuc 172*0a6a1f1dSLionel Sambuc #ifndef DW_FRAME_LAST_REG_NUM 173*0a6a1f1dSLionel Sambuc #define DW_FRAME_LAST_REG_NUM (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3) 174*0a6a1f1dSLionel Sambuc #endif 175*0a6a1f1dSLionel Sambuc 176*0a6a1f1dSLionel Sambuc #ifndef DW_FRAME_REG_INITIAL_VALUE 177*0a6a1f1dSLionel Sambuc #define DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL 178*0a6a1f1dSLionel Sambuc #endif 179*0a6a1f1dSLionel Sambuc 180*0a6a1f1dSLionel Sambuc #define DW_FRAME_UNDEFINED_VAL 1034 181*0a6a1f1dSLionel Sambuc #define DW_FRAME_SAME_VAL 1035 182*0a6a1f1dSLionel Sambuc #define DW_FRAME_CFA_COL3 1436 183*0a6a1f1dSLionel Sambuc 184*0a6a1f1dSLionel Sambuc #define DW_EXPR_OFFSET 0 185*0a6a1f1dSLionel Sambuc #define DW_EXPR_VAL_OFFSET 1 186*0a6a1f1dSLionel Sambuc #define DW_EXPR_EXPRESSION 2 187*0a6a1f1dSLionel Sambuc #define DW_EXPR_VAL_EXPRESSION 3 188*0a6a1f1dSLionel Sambuc 189*0a6a1f1dSLionel Sambuc /* 190*0a6a1f1dSLionel Sambuc * Frame operation only for DWARF 2. 191*0a6a1f1dSLionel Sambuc */ 192*0a6a1f1dSLionel Sambuc 193*0a6a1f1dSLionel Sambuc #define DW_FRAME_CFA_COL 0 194*0a6a1f1dSLionel Sambuc 195*0a6a1f1dSLionel Sambuc typedef struct { 196*0a6a1f1dSLionel Sambuc Dwarf_Small fp_base_op; 197*0a6a1f1dSLionel Sambuc Dwarf_Small fp_extended_op; 198*0a6a1f1dSLionel Sambuc Dwarf_Half fp_register; 199*0a6a1f1dSLionel Sambuc Dwarf_Signed fp_offset; 200*0a6a1f1dSLionel Sambuc Dwarf_Off fp_instr_offset; 201*0a6a1f1dSLionel Sambuc } Dwarf_Frame_Op; 202*0a6a1f1dSLionel Sambuc 203*0a6a1f1dSLionel Sambuc #ifndef DW_REG_TABLE_SIZE 204*0a6a1f1dSLionel Sambuc #define DW_REG_TABLE_SIZE 66 205*0a6a1f1dSLionel Sambuc #endif 206*0a6a1f1dSLionel Sambuc 207*0a6a1f1dSLionel Sambuc typedef struct { 208*0a6a1f1dSLionel Sambuc struct { 209*0a6a1f1dSLionel Sambuc Dwarf_Small dw_offset_relevant; 210*0a6a1f1dSLionel Sambuc Dwarf_Half dw_regnum; 211*0a6a1f1dSLionel Sambuc Dwarf_Addr dw_offset; 212*0a6a1f1dSLionel Sambuc } rules[DW_REG_TABLE_SIZE]; 213*0a6a1f1dSLionel Sambuc } Dwarf_Regtable; 214*0a6a1f1dSLionel Sambuc 215*0a6a1f1dSLionel Sambuc /* 216*0a6a1f1dSLionel Sambuc * Frame operation for DWARF 3 and DWARF 2. 217*0a6a1f1dSLionel Sambuc */ 218*0a6a1f1dSLionel Sambuc 219*0a6a1f1dSLionel Sambuc typedef struct { 220*0a6a1f1dSLionel Sambuc Dwarf_Small fp_base_op; 221*0a6a1f1dSLionel Sambuc Dwarf_Small fp_extended_op; 222*0a6a1f1dSLionel Sambuc Dwarf_Half fp_register; 223*0a6a1f1dSLionel Sambuc Dwarf_Unsigned fp_offset_or_block_len; 224*0a6a1f1dSLionel Sambuc Dwarf_Small *fp_expr_block; 225*0a6a1f1dSLionel Sambuc Dwarf_Off fp_instr_offset; 226*0a6a1f1dSLionel Sambuc } Dwarf_Frame_Op3; 227*0a6a1f1dSLionel Sambuc 228*0a6a1f1dSLionel Sambuc typedef struct { 229*0a6a1f1dSLionel Sambuc Dwarf_Small dw_offset_relevant; 230*0a6a1f1dSLionel Sambuc Dwarf_Small dw_value_type; 231*0a6a1f1dSLionel Sambuc Dwarf_Half dw_regnum; 232*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dw_offset_or_block_len; 233*0a6a1f1dSLionel Sambuc Dwarf_Ptr dw_block_ptr; 234*0a6a1f1dSLionel Sambuc } Dwarf_Regtable_Entry3; 235*0a6a1f1dSLionel Sambuc 236*0a6a1f1dSLionel Sambuc typedef struct { 237*0a6a1f1dSLionel Sambuc Dwarf_Regtable_Entry3 rt3_cfa_rule; 238*0a6a1f1dSLionel Sambuc Dwarf_Half rt3_reg_table_size; 239*0a6a1f1dSLionel Sambuc Dwarf_Regtable_Entry3 *rt3_rules; 240*0a6a1f1dSLionel Sambuc } Dwarf_Regtable3; 241*0a6a1f1dSLionel Sambuc 242*0a6a1f1dSLionel Sambuc typedef struct { 243*0a6a1f1dSLionel Sambuc Dwarf_Off dmd_offset; 244*0a6a1f1dSLionel Sambuc Dwarf_Small dmd_type; 245*0a6a1f1dSLionel Sambuc Dwarf_Signed dmd_lineno; 246*0a6a1f1dSLionel Sambuc Dwarf_Signed dmd_fileindex; 247*0a6a1f1dSLionel Sambuc char *dmd_macro; 248*0a6a1f1dSLionel Sambuc } Dwarf_Macro_Details; 249*0a6a1f1dSLionel Sambuc 250*0a6a1f1dSLionel Sambuc /* 251*0a6a1f1dSLionel Sambuc * Symbols denoting allocation types, for use with dwarf_dealloc(3). 252*0a6a1f1dSLionel Sambuc */ 253*0a6a1f1dSLionel Sambuc 254*0a6a1f1dSLionel Sambuc enum Dwarf_Allocation_Type { 255*0a6a1f1dSLionel Sambuc DW_DLA_ABBREV, 256*0a6a1f1dSLionel Sambuc DW_DLA_ADDR, 257*0a6a1f1dSLionel Sambuc DW_DLA_ARANGE, 258*0a6a1f1dSLionel Sambuc DW_DLA_ATTR, 259*0a6a1f1dSLionel Sambuc DW_DLA_BLOCK, 260*0a6a1f1dSLionel Sambuc DW_DLA_BOUNDS, 261*0a6a1f1dSLionel Sambuc DW_DLA_CIE, 262*0a6a1f1dSLionel Sambuc DW_DLA_DEBUG, 263*0a6a1f1dSLionel Sambuc DW_DLA_DIE, 264*0a6a1f1dSLionel Sambuc DW_DLA_ELLIST, 265*0a6a1f1dSLionel Sambuc DW_DLA_ERROR, 266*0a6a1f1dSLionel Sambuc DW_DLA_FDE, 267*0a6a1f1dSLionel Sambuc DW_DLA_FRAME_BLOCK, 268*0a6a1f1dSLionel Sambuc DW_DLA_FRAME_OP, 269*0a6a1f1dSLionel Sambuc DW_DLA_FUNC, 270*0a6a1f1dSLionel Sambuc DW_DLA_GLOBAL, 271*0a6a1f1dSLionel Sambuc DW_DLA_LINE, 272*0a6a1f1dSLionel Sambuc DW_DLA_LINEBUF, 273*0a6a1f1dSLionel Sambuc DW_DLA_LIST, 274*0a6a1f1dSLionel Sambuc DW_DLA_LOC, 275*0a6a1f1dSLionel Sambuc DW_DLA_LOCDESC, 276*0a6a1f1dSLionel Sambuc DW_DLA_LOC_BLOCK, 277*0a6a1f1dSLionel Sambuc DW_DLA_RANGES, 278*0a6a1f1dSLionel Sambuc DW_DLA_STRING, 279*0a6a1f1dSLionel Sambuc DW_DLA_SUBSCR, 280*0a6a1f1dSLionel Sambuc DW_DLA_TYPE, 281*0a6a1f1dSLionel Sambuc DW_DLA_TYPENAME, 282*0a6a1f1dSLionel Sambuc DW_DLA_VAR, 283*0a6a1f1dSLionel Sambuc DW_DLA_WEAK 284*0a6a1f1dSLionel Sambuc }; 285*0a6a1f1dSLionel Sambuc 286*0a6a1f1dSLionel Sambuc /* 287*0a6a1f1dSLionel Sambuc * Relocation Type. 288*0a6a1f1dSLionel Sambuc */ 289*0a6a1f1dSLionel Sambuc enum Dwarf_Rel_Type { 290*0a6a1f1dSLionel Sambuc dwarf_drt_none = 0, 291*0a6a1f1dSLionel Sambuc dwarf_drt_data_reloc, 292*0a6a1f1dSLionel Sambuc dwarf_drt_segment_rel, 293*0a6a1f1dSLionel Sambuc dwarf_drt_first_of_length_pair, 294*0a6a1f1dSLionel Sambuc dwarf_drt_second_of_length_pair 295*0a6a1f1dSLionel Sambuc }; 296*0a6a1f1dSLionel Sambuc 297*0a6a1f1dSLionel Sambuc /* 298*0a6a1f1dSLionel Sambuc * Relocation Entry. 299*0a6a1f1dSLionel Sambuc */ 300*0a6a1f1dSLionel Sambuc typedef struct Dwarf_Relocation_Data_s { 301*0a6a1f1dSLionel Sambuc unsigned char drd_type; 302*0a6a1f1dSLionel Sambuc unsigned char drd_length; 303*0a6a1f1dSLionel Sambuc Dwarf_Unsigned drd_offset; 304*0a6a1f1dSLionel Sambuc Dwarf_Unsigned drd_symbol_index; 305*0a6a1f1dSLionel Sambuc } *Dwarf_Relocation_Data; 306*0a6a1f1dSLionel Sambuc 307*0a6a1f1dSLionel Sambuc #define DWARF_DRD_BUFFER_VERSION 2 308*0a6a1f1dSLionel Sambuc 309*0a6a1f1dSLionel Sambuc /* 310*0a6a1f1dSLionel Sambuc * Error numbers which are specific to this implementation. 311*0a6a1f1dSLionel Sambuc */ 312*0a6a1f1dSLionel Sambuc enum { 313*0a6a1f1dSLionel Sambuc DW_DLE_NONE, /* No error. */ 314*0a6a1f1dSLionel Sambuc DW_DLE_ERROR, /* An error! */ 315*0a6a1f1dSLionel Sambuc DW_DLE_ARGUMENT, /* Invalid argument. */ 316*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_INFO_NULL, /* Debug info NULL. */ 317*0a6a1f1dSLionel Sambuc DW_DLE_NO_ENTRY, /* No entry. */ 318*0a6a1f1dSLionel Sambuc DW_DLE_MEMORY, /* Insufficient memory. */ 319*0a6a1f1dSLionel Sambuc DW_DLE_ELF, /* ELF error. */ 320*0a6a1f1dSLionel Sambuc DW_DLE_CU_LENGTH_ERROR, /* Invalid compilation unit data. */ 321*0a6a1f1dSLionel Sambuc DW_DLE_VERSION_STAMP_ERROR, /* Invalid version. */ 322*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_ABBREV_NULL, /* Abbrev not found. */ 323*0a6a1f1dSLionel Sambuc DW_DLE_DIE_NO_CU_CONTEXT, /* No current compilation unit. */ 324*0a6a1f1dSLionel Sambuc DW_DLE_LOC_EXPR_BAD, /* Invalid location expression. */ 325*0a6a1f1dSLionel Sambuc DW_DLE_EXPR_LENGTH_BAD, /* Invalid DWARF expression. */ 326*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_LOC_SECTION_SHORT, /* Loclist section too short. */ 327*0a6a1f1dSLionel Sambuc DW_DLE_ATTR_FORM_BAD, /* Invalid attribute form. */ 328*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_LINE_LENGTH_BAD, /* Line info section too short. */ 329*0a6a1f1dSLionel Sambuc DW_DLE_LINE_FILE_NUM_BAD, /* Invalid file number. */ 330*0a6a1f1dSLionel Sambuc DW_DLE_DIR_INDEX_BAD, /* Invalid dir index. */ 331*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_FRAME_LENGTH_BAD, /* Frame section too short. */ 332*0a6a1f1dSLionel Sambuc DW_DLE_NO_CIE_FOR_FDE, /* CIE not found for certain FDE. */ 333*0a6a1f1dSLionel Sambuc DW_DLE_FRAME_AUGMENTATION_UNKNOWN, /* Unknown CIE augmentation. */ 334*0a6a1f1dSLionel Sambuc DW_DLE_FRAME_INSTR_EXEC_ERROR, /* Frame instruction exec error. */ 335*0a6a1f1dSLionel Sambuc DW_DLE_FRAME_VERSION_BAD, /* Invalid frame section version. */ 336*0a6a1f1dSLionel Sambuc DW_DLE_FRAME_TABLE_COL_BAD, /* Invalid table column. */ 337*0a6a1f1dSLionel Sambuc DW_DLE_DF_REG_NUM_TOO_HIGH, /* Insufficient regtable space. */ 338*0a6a1f1dSLionel Sambuc DW_DLE_PC_NOT_IN_FDE_RANGE, /* PC requested not in the FDE range. */ 339*0a6a1f1dSLionel Sambuc DW_DLE_ARANGE_OFFSET_BAD, /* Invalid arange offset. */ 340*0a6a1f1dSLionel Sambuc DW_DLE_DEBUG_MACRO_INCONSISTENT,/* Invalid macinfo data. */ 341*0a6a1f1dSLionel Sambuc DW_DLE_ELF_SECT_ERR, /* Application callback failed. */ 342*0a6a1f1dSLionel Sambuc DW_DLE_NUM /* Max error number. */ 343*0a6a1f1dSLionel Sambuc }; 344*0a6a1f1dSLionel Sambuc 345*0a6a1f1dSLionel Sambuc /* 346*0a6a1f1dSLionel Sambuc * Mapping of SGI libdwarf error codes for comptibility. 347*0a6a1f1dSLionel Sambuc */ 348*0a6a1f1dSLionel Sambuc #define DW_DLE_DBG_ALLOC DW_DLE_MEMORY 349*0a6a1f1dSLionel Sambuc #define DW_DLE_ALLOC_FAIL DW_DLE_MEMORY 350*0a6a1f1dSLionel Sambuc #define DW_DLE_SECT_ALLOC DW_DLE_MEMORY 351*0a6a1f1dSLionel Sambuc #define DW_DLE_FILE_ENTRY_ALLOC DW_DLE_MEMORY 352*0a6a1f1dSLionel Sambuc #define DW_DLE_LINE_ALLOC DW_DLE_MEMORY 353*0a6a1f1dSLionel Sambuc #define DW_DLE_FPGM_ALLOC DW_DLE_MEMORY 354*0a6a1f1dSLionel Sambuc #define DW_DLE_INCDIR_ALLOC DW_DLE_MEMORY 355*0a6a1f1dSLionel Sambuc #define DW_DLE_STRING_ALLOC DW_DLE_MEMORY 356*0a6a1f1dSLionel Sambuc #define DW_DLE_CHUNK_ALLOC DW_DLE_MEMORY 357*0a6a1f1dSLionel Sambuc #define DW_DLE_CIE_ALLOC DW_DLE_MEMORY 358*0a6a1f1dSLionel Sambuc #define DW_DLE_FDE_ALLOC DW_DLE_MEMORY 359*0a6a1f1dSLionel Sambuc #define DW_DLE_CIE_OFFS_ALLOC DW_DLE_MEMORY 360*0a6a1f1dSLionel Sambuc #define DW_DLE_DIE_ALLOC DW_DLE_MEMORY 361*0a6a1f1dSLionel Sambuc #define DW_DLE_ATTR_ALLOC DW_DLE_MEMORY 362*0a6a1f1dSLionel Sambuc #define DW_DLE_ABBREV_ALLOC DW_DLE_MEMORY 363*0a6a1f1dSLionel Sambuc #define DW_DLE_ADDR_ALLOC DW_DLE_MEMORY 364*0a6a1f1dSLionel Sambuc #define DW_DLE_REL_ALLOC DW_DLE_MEMORY 365*0a6a1f1dSLionel Sambuc #define DW_DLE_MACINFO_MALLOC_FAIL DW_DLE_MEMORY 366*0a6a1f1dSLionel Sambuc #define DW_DLE_DEBUG_MACRO_MALLOC_SPACE DW_DLE_MEMORY 367*0a6a1f1dSLionel Sambuc #define DW_DLE_DF_ALLOC_FAIL DW_DLE_MEMORY 368*0a6a1f1dSLionel Sambuc #define DW_DLE_RELOC_SECTION_MALLOC_FAIL DW_DLE_MEMORY 369*0a6a1f1dSLionel Sambuc #define DW_DLE_DBG_NULL DW_DLE_ARGUMENT 370*0a6a1f1dSLionel Sambuc #define DW_DLE_DIE_NULL DW_DLE_ARGUMENT 371*0a6a1f1dSLionel Sambuc #define DW_DLE_FDE_NULL DW_DLE_ARGUMENT 372*0a6a1f1dSLionel Sambuc #define DW_DLE_CIE_NULL DW_DLE_ARGUMENT 373*0a6a1f1dSLionel Sambuc #define DW_DLE_ATTR_NULL DW_DLE_ARGUMENT 374*0a6a1f1dSLionel Sambuc #define DW_DLE_GLOBAL_NULL DW_DLE_ARGUMENT 375*0a6a1f1dSLionel Sambuc #define DW_DLE_ARANGES_NULL DW_DLE_ARGUMENT 376*0a6a1f1dSLionel Sambuc #define DW_DLE_ARANGE_NULL DW_DLE_ARGUMENT 377*0a6a1f1dSLionel Sambuc #define DW_DLE_EXPR_NULL DW_DLE_ARGUMENT 378*0a6a1f1dSLionel Sambuc #define DW_DLE_FUNC_NULL DW_DLE_ARGUMENT 379*0a6a1f1dSLionel Sambuc #define DW_DLE_TYPE_NULL DW_DLE_ARGUMENT 380*0a6a1f1dSLionel Sambuc #define DW_DLE_VAR_NULL DW_DLE_ARGUMENT 381*0a6a1f1dSLionel Sambuc #define DW_DLE_WEAK_NULL DW_DLE_ARGUMENT 382*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_BEGIN_ERROR DW_DLE_ELF 383*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_GETEHDR_ERROR DW_DLE_ELF 384*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_GETSHDR_ERROR DW_DLE_ELF 385*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_STRPTR_ERROR DW_DLE_ELF 386*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_SECT_ERROR DW_DLE_ELF 387*0a6a1f1dSLionel Sambuc #define DW_DLE_ELF_GETIDENT_ERROR DW_DLE_ELF 388*0a6a1f1dSLionel Sambuc 389*0a6a1f1dSLionel Sambuc typedef struct _Dwarf_Error { 390*0a6a1f1dSLionel Sambuc int err_error; /* DWARF error. */ 391*0a6a1f1dSLionel Sambuc int err_elferror; /* ELF error. */ 392*0a6a1f1dSLionel Sambuc const char *err_func; /* Function name where error occurred. */ 393*0a6a1f1dSLionel Sambuc int err_line; /* Line number where error occurred. */ 394*0a6a1f1dSLionel Sambuc char err_msg[1024]; /* Formatted error message. */ 395*0a6a1f1dSLionel Sambuc } Dwarf_Error; 396*0a6a1f1dSLionel Sambuc 397*0a6a1f1dSLionel Sambuc /* 398*0a6a1f1dSLionel Sambuc * Dwarf error handler. 399*0a6a1f1dSLionel Sambuc */ 400*0a6a1f1dSLionel Sambuc typedef void (*Dwarf_Handler)(Dwarf_Error, Dwarf_Ptr); 401*0a6a1f1dSLionel Sambuc 402*0a6a1f1dSLionel Sambuc #define dwarf_errno(error) error.err_error 403*0a6a1f1dSLionel Sambuc #define dwarf_errmsg(error) dwarf_errmsg_(&error) 404*0a6a1f1dSLionel Sambuc 405*0a6a1f1dSLionel Sambuc /* 406*0a6a1f1dSLionel Sambuc * Return values which have to be compatible with other 407*0a6a1f1dSLionel Sambuc * implementations of libdwarf. 408*0a6a1f1dSLionel Sambuc */ 409*0a6a1f1dSLionel Sambuc #define DW_DLV_NO_ENTRY -1 410*0a6a1f1dSLionel Sambuc #define DW_DLV_OK 0 411*0a6a1f1dSLionel Sambuc #define DW_DLV_ERROR 1 412*0a6a1f1dSLionel Sambuc #define DW_DLV_BADADDR NULL 413*0a6a1f1dSLionel Sambuc #define DW_DLV_NOCOUNT ((Dwarf_Signed) -1) 414*0a6a1f1dSLionel Sambuc 415*0a6a1f1dSLionel Sambuc /* 416*0a6a1f1dSLionel Sambuc * Access modes. 417*0a6a1f1dSLionel Sambuc */ 418*0a6a1f1dSLionel Sambuc #define DW_DLC_READ 0x0001 419*0a6a1f1dSLionel Sambuc #define DW_DLC_WRITE 0x0002 420*0a6a1f1dSLionel Sambuc #define DW_DLC_RDWR 0x0004 421*0a6a1f1dSLionel Sambuc 422*0a6a1f1dSLionel Sambuc /* 423*0a6a1f1dSLionel Sambuc * Flags used by libdwarf producer. 424*0a6a1f1dSLionel Sambuc */ 425*0a6a1f1dSLionel Sambuc #define DW_DLC_SIZE_64 0x40000000 426*0a6a1f1dSLionel Sambuc #define DW_DLC_SIZE_32 0x20000000 427*0a6a1f1dSLionel Sambuc #define DW_DLC_OFFSET_SIZE_64 0x10000000 428*0a6a1f1dSLionel Sambuc #define DW_DLC_ISA_MIPS 0x80000000 429*0a6a1f1dSLionel Sambuc #define DW_DLC_ISA_IA64 0x01000000 430*0a6a1f1dSLionel Sambuc #define DW_DLC_STREAM_RELOCATIONS 0x02000000 431*0a6a1f1dSLionel Sambuc #define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000 432*0a6a1f1dSLionel Sambuc #define DW_DLC_TARGET_BIGENDIAN 0x08000000 433*0a6a1f1dSLionel Sambuc #define DW_DLC_TARGET_LITTLEENDIAN 0x00100000 434*0a6a1f1dSLionel Sambuc 435*0a6a1f1dSLionel Sambuc /* 436*0a6a1f1dSLionel Sambuc * Instruction set architectures supported by this implementation. 437*0a6a1f1dSLionel Sambuc */ 438*0a6a1f1dSLionel Sambuc enum Dwarf_ISA { 439*0a6a1f1dSLionel Sambuc DW_ISA_ARM, 440*0a6a1f1dSLionel Sambuc DW_ISA_IA64, 441*0a6a1f1dSLionel Sambuc DW_ISA_MIPS, 442*0a6a1f1dSLionel Sambuc DW_ISA_PPC, 443*0a6a1f1dSLionel Sambuc DW_ISA_SPARC, 444*0a6a1f1dSLionel Sambuc DW_ISA_X86, 445*0a6a1f1dSLionel Sambuc DW_ISA_X86_64, 446*0a6a1f1dSLionel Sambuc DW_ISA_MAX 447*0a6a1f1dSLionel Sambuc }; 448*0a6a1f1dSLionel Sambuc 449*0a6a1f1dSLionel Sambuc /* Function prototype definitions. */ 450*0a6a1f1dSLionel Sambuc __BEGIN_DECLS 451*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die, char *, Dwarf_Error *); 452*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die, Dwarf_Signed, 453*0a6a1f1dSLionel Sambuc Dwarf_Error *); 454*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die, char *, 455*0a6a1f1dSLionel Sambuc Dwarf_Error *); 456*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die, 457*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Error *); 458*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_dataref(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 459*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 460*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 461*0a6a1f1dSLionel Sambuc Dwarf_Small, Dwarf_Error *); 462*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug, Dwarf_P_Die, 463*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_P_Expr, Dwarf_Error *); 464*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die, char *, Dwarf_Error *); 465*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die, char *, Dwarf_Error *); 466*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug, Dwarf_P_Die, 467*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 468*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 469*0a6a1f1dSLionel Sambuc Dwarf_P_Die, Dwarf_Error *); 470*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug, Dwarf_P_Die, 471*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_Signed, Dwarf_Error *); 472*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half, 473*0a6a1f1dSLionel Sambuc char *, Dwarf_Error *); 474*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug, Dwarf_P_Die, 475*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Error *); 476*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug, Dwarf_P_Die, 477*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 478*0a6a1f1dSLionel Sambuc Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug, Dwarf_P_Die, 479*0a6a1f1dSLionel Sambuc Dwarf_Half, Dwarf_Unsigned, Dwarf_Error *); 480*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 481*0a6a1f1dSLionel Sambuc Dwarf_Signed, Dwarf_Error *); 482*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_arange_b(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 483*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 484*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_die_to_debug(Dwarf_P_Debug, Dwarf_P_Die, 485*0a6a1f1dSLionel Sambuc Dwarf_Error *); 486*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug, char *, Dwarf_Error *); 487*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_expr_addr(Dwarf_P_Expr, Dwarf_Unsigned, 488*0a6a1f1dSLionel Sambuc Dwarf_Signed, Dwarf_Error *); 489*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_expr_addr_b(Dwarf_P_Expr, Dwarf_Unsigned, 490*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Error *); 491*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_expr_gen(Dwarf_P_Expr, Dwarf_Small, Dwarf_Unsigned, 492*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Error *); 493*0a6a1f1dSLionel Sambuc Dwarf_P_Fde dwarf_add_fde_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned, 494*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Error *); 495*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug, char *, Dwarf_Unsigned, 496*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); 497*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug, char *, Dwarf_Small, 498*0a6a1f1dSLionel Sambuc Dwarf_Small, Dwarf_Small, Dwarf_Ptr, Dwarf_Unsigned, 499*0a6a1f1dSLionel Sambuc Dwarf_Error *); 500*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_frame_fde(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 501*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 502*0a6a1f1dSLionel Sambuc Dwarf_Error *); 503*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_frame_fde_b(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die, 504*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned, 505*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *); 506*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_funcname(Dwarf_P_Debug, Dwarf_P_Die, char *, 507*0a6a1f1dSLionel Sambuc Dwarf_Error *); 508*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug, Dwarf_Unsigned, 509*0a6a1f1dSLionel Sambuc Dwarf_Addr, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Bool, 510*0a6a1f1dSLionel Sambuc Dwarf_Bool, Dwarf_Error *); 511*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_pubname(Dwarf_P_Debug, Dwarf_P_Die, char *, 512*0a6a1f1dSLionel Sambuc Dwarf_Error *); 513*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_typename(Dwarf_P_Debug, Dwarf_P_Die, char *, 514*0a6a1f1dSLionel Sambuc Dwarf_Error *); 515*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_varname(Dwarf_P_Debug, Dwarf_P_Die, char *, 516*0a6a1f1dSLionel Sambuc Dwarf_Error *); 517*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_add_weakname(Dwarf_P_Debug, Dwarf_P_Die, char *, 518*0a6a1f1dSLionel Sambuc Dwarf_Error *); 519*0a6a1f1dSLionel Sambuc int dwarf_arrayorder(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 520*0a6a1f1dSLionel Sambuc int dwarf_attr(Dwarf_Die, Dwarf_Half, Dwarf_Attribute *, 521*0a6a1f1dSLionel Sambuc Dwarf_Error *); 522*0a6a1f1dSLionel Sambuc int dwarf_attrlist(Dwarf_Die, Dwarf_Attribute **, 523*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Error *); 524*0a6a1f1dSLionel Sambuc int dwarf_attrval_flag(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 525*0a6a1f1dSLionel Sambuc Dwarf_Error *); 526*0a6a1f1dSLionel Sambuc int dwarf_attrval_signed(Dwarf_Die, Dwarf_Half, Dwarf_Signed *, 527*0a6a1f1dSLionel Sambuc Dwarf_Error *); 528*0a6a1f1dSLionel Sambuc int dwarf_attrval_string(Dwarf_Die, Dwarf_Half, const char **, 529*0a6a1f1dSLionel Sambuc Dwarf_Error *); 530*0a6a1f1dSLionel Sambuc int dwarf_attrval_unsigned(Dwarf_Die, Dwarf_Half, Dwarf_Unsigned *, 531*0a6a1f1dSLionel Sambuc Dwarf_Error *); 532*0a6a1f1dSLionel Sambuc int dwarf_bitoffset(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 533*0a6a1f1dSLionel Sambuc int dwarf_bitsize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 534*0a6a1f1dSLionel Sambuc int dwarf_bytesize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 535*0a6a1f1dSLionel Sambuc int dwarf_child(Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 536*0a6a1f1dSLionel Sambuc void dwarf_dealloc(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned); 537*0a6a1f1dSLionel Sambuc int dwarf_def_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, char *, 538*0a6a1f1dSLionel Sambuc Dwarf_Error *); 539*0a6a1f1dSLionel Sambuc int dwarf_die_CU_offset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 540*0a6a1f1dSLionel Sambuc int dwarf_die_CU_offset_range(Dwarf_Die, Dwarf_Off *, Dwarf_Off *, 541*0a6a1f1dSLionel Sambuc Dwarf_Error *); 542*0a6a1f1dSLionel Sambuc int dwarf_die_abbrev_code(Dwarf_Die); 543*0a6a1f1dSLionel Sambuc Dwarf_P_Die dwarf_die_link(Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, 544*0a6a1f1dSLionel Sambuc Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 545*0a6a1f1dSLionel Sambuc int dwarf_diename(Dwarf_Die, char **, Dwarf_Error *); 546*0a6a1f1dSLionel Sambuc int dwarf_dieoffset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *); 547*0a6a1f1dSLionel Sambuc int dwarf_elf_init(Elf *, int, Dwarf_Handler, Dwarf_Ptr, 548*0a6a1f1dSLionel Sambuc Dwarf_Debug *, Dwarf_Error *); 549*0a6a1f1dSLionel Sambuc int dwarf_end_macro_file(Dwarf_P_Debug, Dwarf_Error *); 550*0a6a1f1dSLionel Sambuc const char *dwarf_errmsg_(Dwarf_Error *); 551*0a6a1f1dSLionel Sambuc int dwarf_expand_frame_instructions(Dwarf_Cie, Dwarf_Ptr, 552*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *, 553*0a6a1f1dSLionel Sambuc Dwarf_Error *); 554*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_expr_current_offset(Dwarf_P_Expr, Dwarf_Error *); 555*0a6a1f1dSLionel Sambuc Dwarf_Addr dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Unsigned *, 556*0a6a1f1dSLionel Sambuc Dwarf_Error *); 557*0a6a1f1dSLionel Sambuc Dwarf_P_Fde dwarf_fde_cfa_offset(Dwarf_P_Fde, Dwarf_Unsigned, Dwarf_Signed, 558*0a6a1f1dSLionel Sambuc Dwarf_Error *); 559*0a6a1f1dSLionel Sambuc void dwarf_fde_cie_list_dealloc(Dwarf_Debug, Dwarf_Cie *, 560*0a6a1f1dSLionel Sambuc Dwarf_Signed, Dwarf_Fde *, Dwarf_Signed); 561*0a6a1f1dSLionel Sambuc char *dwarf_find_macro_value_start(char *); 562*0a6a1f1dSLionel Sambuc int dwarf_finish(Dwarf_Debug, Dwarf_Error *); 563*0a6a1f1dSLionel Sambuc int dwarf_formaddr(Dwarf_Attribute, Dwarf_Addr *, Dwarf_Error *); 564*0a6a1f1dSLionel Sambuc int dwarf_formblock(Dwarf_Attribute, Dwarf_Block **, Dwarf_Error *); 565*0a6a1f1dSLionel Sambuc int dwarf_formexprloc(Dwarf_Attribute, Dwarf_Unsigned *, 566*0a6a1f1dSLionel Sambuc Dwarf_Ptr *, Dwarf_Error *); 567*0a6a1f1dSLionel Sambuc int dwarf_formflag(Dwarf_Attribute, Dwarf_Bool *, Dwarf_Error *); 568*0a6a1f1dSLionel Sambuc int dwarf_formref(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *); 569*0a6a1f1dSLionel Sambuc int dwarf_formsdata(Dwarf_Attribute, Dwarf_Signed *, Dwarf_Error *); 570*0a6a1f1dSLionel Sambuc int dwarf_formsig8(Dwarf_Attribute, Dwarf_Sig8 *, Dwarf_Error *); 571*0a6a1f1dSLionel Sambuc int dwarf_formstring(Dwarf_Attribute, char **, Dwarf_Error *); 572*0a6a1f1dSLionel Sambuc int dwarf_formudata(Dwarf_Attribute, Dwarf_Unsigned *, 573*0a6a1f1dSLionel Sambuc Dwarf_Error *); 574*0a6a1f1dSLionel Sambuc int dwarf_func_cu_offset(Dwarf_Func, Dwarf_Off *, Dwarf_Error *); 575*0a6a1f1dSLionel Sambuc int dwarf_func_die_offset(Dwarf_Func, Dwarf_Off *, 576*0a6a1f1dSLionel Sambuc Dwarf_Error *); 577*0a6a1f1dSLionel Sambuc int dwarf_func_name_offsets(Dwarf_Func, char **, 578*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 579*0a6a1f1dSLionel Sambuc int dwarf_funcname(Dwarf_Func, char **, Dwarf_Error *); 580*0a6a1f1dSLionel Sambuc void dwarf_funcs_dealloc(Dwarf_Debug, Dwarf_Func *, Dwarf_Signed); 581*0a6a1f1dSLionel Sambuc int dwarf_get_ACCESS_name(unsigned, const char **); 582*0a6a1f1dSLionel Sambuc int dwarf_get_ATE_name(unsigned, const char **); 583*0a6a1f1dSLionel Sambuc int dwarf_get_AT_name(unsigned, const char **); 584*0a6a1f1dSLionel Sambuc int dwarf_get_CC_name(unsigned, const char **); 585*0a6a1f1dSLionel Sambuc int dwarf_get_CFA_name(unsigned, const char **); 586*0a6a1f1dSLionel Sambuc int dwarf_get_CHILDREN_name(unsigned, const char **); 587*0a6a1f1dSLionel Sambuc int dwarf_get_DSC_name(unsigned, const char **); 588*0a6a1f1dSLionel Sambuc int dwarf_get_DS_name(unsigned, const char **); 589*0a6a1f1dSLionel Sambuc int dwarf_get_EH_name(unsigned, const char **); 590*0a6a1f1dSLionel Sambuc int dwarf_get_END_name(unsigned, const char **); 591*0a6a1f1dSLionel Sambuc int dwarf_get_FORM_name(unsigned, const char **); 592*0a6a1f1dSLionel Sambuc int dwarf_get_ID_name(unsigned, const char **); 593*0a6a1f1dSLionel Sambuc int dwarf_get_INL_name(unsigned, const char **); 594*0a6a1f1dSLionel Sambuc int dwarf_get_LANG_name(unsigned, const char **); 595*0a6a1f1dSLionel Sambuc int dwarf_get_LNE_name(unsigned, const char **); 596*0a6a1f1dSLionel Sambuc int dwarf_get_LNS_name(unsigned, const char **); 597*0a6a1f1dSLionel Sambuc int dwarf_get_MACINFO_name(unsigned, const char **); 598*0a6a1f1dSLionel Sambuc int dwarf_get_OP_name(unsigned, const char **); 599*0a6a1f1dSLionel Sambuc int dwarf_get_ORD_name(unsigned, const char **); 600*0a6a1f1dSLionel Sambuc int dwarf_get_TAG_name(unsigned, const char **); 601*0a6a1f1dSLionel Sambuc int dwarf_get_VIRTUALITY_name(unsigned, const char **); 602*0a6a1f1dSLionel Sambuc int dwarf_get_VIS_name(unsigned, const char **); 603*0a6a1f1dSLionel Sambuc int dwarf_get_abbrev(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Abbrev *, 604*0a6a1f1dSLionel Sambuc Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Error *); 605*0a6a1f1dSLionel Sambuc int dwarf_get_abbrev_children_flag(Dwarf_Abbrev, Dwarf_Signed *, 606*0a6a1f1dSLionel Sambuc Dwarf_Error *); 607*0a6a1f1dSLionel Sambuc int dwarf_get_abbrev_code(Dwarf_Abbrev, Dwarf_Unsigned *, 608*0a6a1f1dSLionel Sambuc Dwarf_Error *); 609*0a6a1f1dSLionel Sambuc int dwarf_get_abbrev_entry(Dwarf_Abbrev, Dwarf_Signed, Dwarf_Half *, 610*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Off *, Dwarf_Error *); 611*0a6a1f1dSLionel Sambuc int dwarf_get_abbrev_tag(Dwarf_Abbrev, Dwarf_Half *, Dwarf_Error *); 612*0a6a1f1dSLionel Sambuc int dwarf_get_address_size(Dwarf_Debug, Dwarf_Half *, 613*0a6a1f1dSLionel Sambuc Dwarf_Error *); 614*0a6a1f1dSLionel Sambuc int dwarf_get_arange(Dwarf_Arange *, Dwarf_Unsigned, Dwarf_Addr, 615*0a6a1f1dSLionel Sambuc Dwarf_Arange *, Dwarf_Error *); 616*0a6a1f1dSLionel Sambuc int dwarf_get_arange_cu_header_offset(Dwarf_Arange, Dwarf_Off *, 617*0a6a1f1dSLionel Sambuc Dwarf_Error *); 618*0a6a1f1dSLionel Sambuc int dwarf_get_arange_info(Dwarf_Arange, Dwarf_Addr *, 619*0a6a1f1dSLionel Sambuc Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Error *); 620*0a6a1f1dSLionel Sambuc int dwarf_get_aranges(Dwarf_Debug, Dwarf_Arange **, Dwarf_Signed *, 621*0a6a1f1dSLionel Sambuc Dwarf_Error *); 622*0a6a1f1dSLionel Sambuc int dwarf_get_cie_index(Dwarf_Cie, Dwarf_Signed *, Dwarf_Error *); 623*0a6a1f1dSLionel Sambuc int dwarf_get_cie_info(Dwarf_Cie, Dwarf_Unsigned *, Dwarf_Small *, 624*0a6a1f1dSLionel Sambuc char **, Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Half *, 625*0a6a1f1dSLionel Sambuc Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Error *); 626*0a6a1f1dSLionel Sambuc int dwarf_get_cie_of_fde(Dwarf_Fde, Dwarf_Cie *, Dwarf_Error *); 627*0a6a1f1dSLionel Sambuc int dwarf_get_cu_die_offset(Dwarf_Arange, Dwarf_Off *, 628*0a6a1f1dSLionel Sambuc Dwarf_Error *); 629*0a6a1f1dSLionel Sambuc int dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug, 630*0a6a1f1dSLionel Sambuc Dwarf_Off, Dwarf_Off *, Dwarf_Error *); 631*0a6a1f1dSLionel Sambuc int dwarf_get_elf(Dwarf_Debug, Elf **, Dwarf_Error *); 632*0a6a1f1dSLionel Sambuc int dwarf_get_fde_at_pc(Dwarf_Fde *, Dwarf_Addr, Dwarf_Fde *, 633*0a6a1f1dSLionel Sambuc Dwarf_Addr *, Dwarf_Addr *, Dwarf_Error *); 634*0a6a1f1dSLionel Sambuc int dwarf_get_fde_info_for_all_regs(Dwarf_Fde, Dwarf_Addr, 635*0a6a1f1dSLionel Sambuc Dwarf_Regtable *, Dwarf_Addr *, Dwarf_Error *); 636*0a6a1f1dSLionel Sambuc int dwarf_get_fde_info_for_all_regs3(Dwarf_Fde, Dwarf_Addr, 637*0a6a1f1dSLionel Sambuc Dwarf_Regtable3 *, Dwarf_Addr *, Dwarf_Error *); 638*0a6a1f1dSLionel Sambuc int dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde, Dwarf_Addr, 639*0a6a1f1dSLionel Sambuc Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 640*0a6a1f1dSLionel Sambuc Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 641*0a6a1f1dSLionel Sambuc int dwarf_get_fde_info_for_reg(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 642*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *, 643*0a6a1f1dSLionel Sambuc Dwarf_Addr *, Dwarf_Error *); 644*0a6a1f1dSLionel Sambuc int dwarf_get_fde_info_for_reg3(Dwarf_Fde, Dwarf_Half, Dwarf_Addr, 645*0a6a1f1dSLionel Sambuc Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, 646*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *); 647*0a6a1f1dSLionel Sambuc int dwarf_get_fde_instr_bytes(Dwarf_Fde, Dwarf_Ptr *, 648*0a6a1f1dSLionel Sambuc Dwarf_Unsigned *, Dwarf_Error *); 649*0a6a1f1dSLionel Sambuc int dwarf_get_fde_list(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 650*0a6a1f1dSLionel Sambuc Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 651*0a6a1f1dSLionel Sambuc int dwarf_get_fde_list_eh(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *, 652*0a6a1f1dSLionel Sambuc Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *); 653*0a6a1f1dSLionel Sambuc int dwarf_get_fde_n(Dwarf_Fde *, Dwarf_Unsigned, Dwarf_Fde *, 654*0a6a1f1dSLionel Sambuc Dwarf_Error *); 655*0a6a1f1dSLionel Sambuc int dwarf_get_fde_range(Dwarf_Fde, Dwarf_Addr *, Dwarf_Unsigned *, 656*0a6a1f1dSLionel Sambuc Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Signed *, 657*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Error *); 658*0a6a1f1dSLionel Sambuc enum Dwarf_Form_Class dwarf_get_form_class(Dwarf_Half, Dwarf_Half, Dwarf_Half, 659*0a6a1f1dSLionel Sambuc Dwarf_Half); 660*0a6a1f1dSLionel Sambuc int dwarf_get_funcs(Dwarf_Debug, Dwarf_Func **, Dwarf_Signed *, 661*0a6a1f1dSLionel Sambuc Dwarf_Error *); 662*0a6a1f1dSLionel Sambuc int dwarf_get_globals(Dwarf_Debug, Dwarf_Global **, Dwarf_Signed *, 663*0a6a1f1dSLionel Sambuc Dwarf_Error *); 664*0a6a1f1dSLionel Sambuc int dwarf_get_loclist_entry(Dwarf_Debug, Dwarf_Unsigned, 665*0a6a1f1dSLionel Sambuc Dwarf_Addr *, Dwarf_Addr *, Dwarf_Ptr *, Dwarf_Unsigned *, 666*0a6a1f1dSLionel Sambuc Dwarf_Unsigned *, Dwarf_Error *); 667*0a6a1f1dSLionel Sambuc int dwarf_get_macro_details(Dwarf_Debug, Dwarf_Off, Dwarf_Unsigned, 668*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Macro_Details **, Dwarf_Error *); 669*0a6a1f1dSLionel Sambuc int dwarf_get_pubtypes(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 670*0a6a1f1dSLionel Sambuc Dwarf_Error *); 671*0a6a1f1dSLionel Sambuc int dwarf_get_ranges(Dwarf_Debug, Dwarf_Off, Dwarf_Ranges **, 672*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 673*0a6a1f1dSLionel Sambuc int dwarf_get_ranges_a(Dwarf_Debug, Dwarf_Off, Dwarf_Die, 674*0a6a1f1dSLionel Sambuc Dwarf_Ranges **, Dwarf_Signed *, Dwarf_Unsigned *, 675*0a6a1f1dSLionel Sambuc Dwarf_Error *); 676*0a6a1f1dSLionel Sambuc int dwarf_get_relocation_info(Dwarf_P_Debug, Dwarf_Signed *, 677*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Relocation_Data *, 678*0a6a1f1dSLionel Sambuc Dwarf_Error *); 679*0a6a1f1dSLionel Sambuc int dwarf_get_relocation_info_count(Dwarf_P_Debug, Dwarf_Unsigned *, 680*0a6a1f1dSLionel Sambuc int *, Dwarf_Error *); 681*0a6a1f1dSLionel Sambuc Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug, Dwarf_Signed, 682*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *); 683*0a6a1f1dSLionel Sambuc int dwarf_get_str(Dwarf_Debug, Dwarf_Off, char **, Dwarf_Signed *, 684*0a6a1f1dSLionel Sambuc Dwarf_Error *); 685*0a6a1f1dSLionel Sambuc int dwarf_get_types(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *, 686*0a6a1f1dSLionel Sambuc Dwarf_Error *); 687*0a6a1f1dSLionel Sambuc int dwarf_get_vars(Dwarf_Debug, Dwarf_Var **, Dwarf_Signed *, 688*0a6a1f1dSLionel Sambuc Dwarf_Error *); 689*0a6a1f1dSLionel Sambuc int dwarf_get_weaks(Dwarf_Debug, Dwarf_Weak **, Dwarf_Signed *, 690*0a6a1f1dSLionel Sambuc Dwarf_Error *); 691*0a6a1f1dSLionel Sambuc int dwarf_global_cu_offset(Dwarf_Global, Dwarf_Off *, Dwarf_Error *); 692*0a6a1f1dSLionel Sambuc int dwarf_global_die_offset(Dwarf_Global, Dwarf_Off *, 693*0a6a1f1dSLionel Sambuc Dwarf_Error *); 694*0a6a1f1dSLionel Sambuc int dwarf_global_formref(Dwarf_Attribute, Dwarf_Off *, 695*0a6a1f1dSLionel Sambuc Dwarf_Error *); 696*0a6a1f1dSLionel Sambuc int dwarf_global_name_offsets(Dwarf_Global, char **, 697*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 698*0a6a1f1dSLionel Sambuc void dwarf_globals_dealloc(Dwarf_Debug, Dwarf_Global *, Dwarf_Signed); 699*0a6a1f1dSLionel Sambuc int dwarf_globname(Dwarf_Global, char **, Dwarf_Error *); 700*0a6a1f1dSLionel Sambuc int dwarf_hasattr(Dwarf_Die, Dwarf_Half, Dwarf_Bool *, 701*0a6a1f1dSLionel Sambuc Dwarf_Error *); 702*0a6a1f1dSLionel Sambuc int dwarf_hasform(Dwarf_Attribute, Dwarf_Half, Dwarf_Bool *, 703*0a6a1f1dSLionel Sambuc Dwarf_Error *); 704*0a6a1f1dSLionel Sambuc int dwarf_highpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 705*0a6a1f1dSLionel Sambuc int dwarf_init(int, int, Dwarf_Handler, Dwarf_Ptr, Dwarf_Debug *, 706*0a6a1f1dSLionel Sambuc Dwarf_Error *); 707*0a6a1f1dSLionel Sambuc int dwarf_line_srcfileno(Dwarf_Line, Dwarf_Unsigned *, 708*0a6a1f1dSLionel Sambuc Dwarf_Error *); 709*0a6a1f1dSLionel Sambuc int dwarf_lineaddr(Dwarf_Line, Dwarf_Addr *, Dwarf_Error *); 710*0a6a1f1dSLionel Sambuc int dwarf_linebeginstatement(Dwarf_Line, Dwarf_Bool *, 711*0a6a1f1dSLionel Sambuc Dwarf_Error *); 712*0a6a1f1dSLionel Sambuc int dwarf_lineblock(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 713*0a6a1f1dSLionel Sambuc int dwarf_lineendsequence(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *); 714*0a6a1f1dSLionel Sambuc int dwarf_lineno(Dwarf_Line, Dwarf_Unsigned *, Dwarf_Error *); 715*0a6a1f1dSLionel Sambuc int dwarf_lineoff(Dwarf_Line, Dwarf_Signed *, Dwarf_Error *); 716*0a6a1f1dSLionel Sambuc int dwarf_linesrc(Dwarf_Line, char **, Dwarf_Error *); 717*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Error *); 718*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned, 719*0a6a1f1dSLionel Sambuc Dwarf_Error *); 720*0a6a1f1dSLionel Sambuc int dwarf_loclist(Dwarf_Attribute, Dwarf_Locdesc **, Dwarf_Signed *, 721*0a6a1f1dSLionel Sambuc Dwarf_Error *); 722*0a6a1f1dSLionel Sambuc int dwarf_loclist_from_expr(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned, 723*0a6a1f1dSLionel Sambuc Dwarf_Locdesc **, Dwarf_Signed *, Dwarf_Error *); 724*0a6a1f1dSLionel Sambuc int dwarf_loclist_from_expr_a(Dwarf_Debug, Dwarf_Ptr, 725*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Half, Dwarf_Locdesc **, 726*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Error *); 727*0a6a1f1dSLionel Sambuc int dwarf_loclist_n(Dwarf_Attribute, Dwarf_Locdesc ***, 728*0a6a1f1dSLionel Sambuc Dwarf_Signed *, Dwarf_Error *); 729*0a6a1f1dSLionel Sambuc int dwarf_lowpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *); 730*0a6a1f1dSLionel Sambuc Dwarf_P_Die dwarf_new_die(Dwarf_P_Debug, Dwarf_Tag, Dwarf_P_Die, 731*0a6a1f1dSLionel Sambuc Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *); 732*0a6a1f1dSLionel Sambuc Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug, Dwarf_Error *); 733*0a6a1f1dSLionel Sambuc Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug, Dwarf_Error *); 734*0a6a1f1dSLionel Sambuc int dwarf_next_cu_header(Dwarf_Debug, Dwarf_Unsigned *, 735*0a6a1f1dSLionel Sambuc Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, 736*0a6a1f1dSLionel Sambuc Dwarf_Unsigned *, Dwarf_Error *); 737*0a6a1f1dSLionel Sambuc int dwarf_next_cu_header_b(Dwarf_Debug, Dwarf_Unsigned *, 738*0a6a1f1dSLionel Sambuc Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, Dwarf_Half *, 739*0a6a1f1dSLionel Sambuc Dwarf_Half *, Dwarf_Unsigned *, Dwarf_Error *); 740*0a6a1f1dSLionel Sambuc int dwarf_object_finish(Dwarf_Debug, Dwarf_Error *); 741*0a6a1f1dSLionel Sambuc int dwarf_object_init(Dwarf_Obj_Access_Interface *, Dwarf_Handler, 742*0a6a1f1dSLionel Sambuc Dwarf_Ptr, Dwarf_Debug *, Dwarf_Error *); 743*0a6a1f1dSLionel Sambuc int dwarf_offdie(Dwarf_Debug, Dwarf_Off, Dwarf_Die *, 744*0a6a1f1dSLionel Sambuc Dwarf_Error *); 745*0a6a1f1dSLionel Sambuc Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug, Dwarf_Error *); 746*0a6a1f1dSLionel Sambuc Dwarf_P_Debug dwarf_producer_init(Dwarf_Unsigned, Dwarf_Callback_Func, 747*0a6a1f1dSLionel Sambuc Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 748*0a6a1f1dSLionel Sambuc Dwarf_P_Debug dwarf_producer_init_b(Dwarf_Unsigned, Dwarf_Callback_Func_b, 749*0a6a1f1dSLionel Sambuc Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); 750*0a6a1f1dSLionel Sambuc int dwarf_producer_set_isa(Dwarf_P_Debug, enum Dwarf_ISA, 751*0a6a1f1dSLionel Sambuc Dwarf_Error *); 752*0a6a1f1dSLionel Sambuc int dwarf_pubtype_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 753*0a6a1f1dSLionel Sambuc int dwarf_pubtype_die_offset(Dwarf_Type, Dwarf_Off *, 754*0a6a1f1dSLionel Sambuc Dwarf_Error *); 755*0a6a1f1dSLionel Sambuc int dwarf_pubtype_name_offsets(Dwarf_Type, char **, 756*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 757*0a6a1f1dSLionel Sambuc int dwarf_pubtypename(Dwarf_Type, char **, Dwarf_Error *); 758*0a6a1f1dSLionel Sambuc void dwarf_pubtypes_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 759*0a6a1f1dSLionel Sambuc void dwarf_ranges_dealloc(Dwarf_Debug, Dwarf_Ranges *, Dwarf_Signed); 760*0a6a1f1dSLionel Sambuc void dwarf_reset_section_bytes(Dwarf_P_Debug); 761*0a6a1f1dSLionel Sambuc Dwarf_Half dwarf_set_frame_cfa_value(Dwarf_Debug, Dwarf_Half); 762*0a6a1f1dSLionel Sambuc Dwarf_Half dwarf_set_frame_rule_initial_value(Dwarf_Debug, Dwarf_Half); 763*0a6a1f1dSLionel Sambuc Dwarf_Half dwarf_set_frame_rule_table_size(Dwarf_Debug, Dwarf_Half); 764*0a6a1f1dSLionel Sambuc Dwarf_Half dwarf_set_frame_same_value(Dwarf_Debug, Dwarf_Half); 765*0a6a1f1dSLionel Sambuc Dwarf_Half dwarf_set_frame_undefined_value(Dwarf_Debug, Dwarf_Half); 766*0a6a1f1dSLionel Sambuc int dwarf_set_reloc_application(int); 767*0a6a1f1dSLionel Sambuc Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug, Dwarf_Ptr); 768*0a6a1f1dSLionel Sambuc Dwarf_Handler dwarf_seterrhand(Dwarf_Debug, Dwarf_Handler); 769*0a6a1f1dSLionel Sambuc int dwarf_siblingof(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Error *); 770*0a6a1f1dSLionel Sambuc int dwarf_srcfiles(Dwarf_Die, char ***, Dwarf_Signed *, Dwarf_Error *); 771*0a6a1f1dSLionel Sambuc int dwarf_srclang(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *); 772*0a6a1f1dSLionel Sambuc int dwarf_srclines(Dwarf_Die, Dwarf_Line **, Dwarf_Signed *, 773*0a6a1f1dSLionel Sambuc Dwarf_Error *); 774*0a6a1f1dSLionel Sambuc void dwarf_srclines_dealloc(Dwarf_Debug, Dwarf_Line *, 775*0a6a1f1dSLionel Sambuc Dwarf_Signed); 776*0a6a1f1dSLionel Sambuc int dwarf_start_macro_file(Dwarf_P_Debug, Dwarf_Unsigned, 777*0a6a1f1dSLionel Sambuc Dwarf_Unsigned, Dwarf_Error *); 778*0a6a1f1dSLionel Sambuc int dwarf_tag(Dwarf_Die, Dwarf_Half *, Dwarf_Error *); 779*0a6a1f1dSLionel Sambuc Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug, Dwarf_Error *); 780*0a6a1f1dSLionel Sambuc int dwarf_type_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 781*0a6a1f1dSLionel Sambuc int dwarf_type_die_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *); 782*0a6a1f1dSLionel Sambuc int dwarf_type_name_offsets(Dwarf_Type, char **, 783*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 784*0a6a1f1dSLionel Sambuc int dwarf_typename(Dwarf_Type, char **, Dwarf_Error *); 785*0a6a1f1dSLionel Sambuc void dwarf_types_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed); 786*0a6a1f1dSLionel Sambuc int dwarf_undef_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, 787*0a6a1f1dSLionel Sambuc Dwarf_Error *); 788*0a6a1f1dSLionel Sambuc int dwarf_var_cu_offset(Dwarf_Var, Dwarf_Off *, Dwarf_Error *); 789*0a6a1f1dSLionel Sambuc int dwarf_var_die_offset(Dwarf_Var, Dwarf_Off *, 790*0a6a1f1dSLionel Sambuc Dwarf_Error *); 791*0a6a1f1dSLionel Sambuc int dwarf_var_name_offsets(Dwarf_Var, char **, 792*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 793*0a6a1f1dSLionel Sambuc int dwarf_varname(Dwarf_Var, char **, Dwarf_Error *); 794*0a6a1f1dSLionel Sambuc void dwarf_vars_dealloc(Dwarf_Debug, Dwarf_Var *, Dwarf_Signed); 795*0a6a1f1dSLionel Sambuc int dwarf_vendor_ext(Dwarf_P_Debug, Dwarf_Unsigned, char *, 796*0a6a1f1dSLionel Sambuc Dwarf_Error *); 797*0a6a1f1dSLionel Sambuc int dwarf_weak_cu_offset(Dwarf_Weak, Dwarf_Off *, Dwarf_Error *); 798*0a6a1f1dSLionel Sambuc int dwarf_weak_die_offset(Dwarf_Weak, Dwarf_Off *, 799*0a6a1f1dSLionel Sambuc Dwarf_Error *); 800*0a6a1f1dSLionel Sambuc int dwarf_weak_name_offsets(Dwarf_Weak, char **, 801*0a6a1f1dSLionel Sambuc Dwarf_Off *, Dwarf_Off *, Dwarf_Error *); 802*0a6a1f1dSLionel Sambuc int dwarf_weakname(Dwarf_Weak, char **, Dwarf_Error *); 803*0a6a1f1dSLionel Sambuc void dwarf_weaks_dealloc(Dwarf_Debug, Dwarf_Weak *, Dwarf_Signed); 804*0a6a1f1dSLionel Sambuc int dwarf_whatattr(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 805*0a6a1f1dSLionel Sambuc int dwarf_whatform(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *); 806*0a6a1f1dSLionel Sambuc int dwarf_whatform_direct(Dwarf_Attribute, Dwarf_Half *, 807*0a6a1f1dSLionel Sambuc Dwarf_Error *); 808*0a6a1f1dSLionel Sambuc __END_DECLS 809*0a6a1f1dSLionel Sambuc 810*0a6a1f1dSLionel Sambuc #endif /* !_LIBDWARF_H_ */ 811