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