1 /* 2 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 3 * Use is subject to license terms. 4 */ 5 6 #pragma ident "%Z%%M% %I% %E% SMI" 7 8 /* 9 10 Copyright (C) 2000, 2001 Silicon Graphics, Inc. All Rights Reserved. 11 12 This program is free software; you can redistribute it and/or modify it 13 under the terms of version 2.1 of the GNU Lesser General Public License 14 as published by the Free Software Foundation. 15 16 This program is distributed in the hope that it would be useful, but 17 WITHOUT ANY WARRANTY; without even the implied warranty of 18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 19 20 Further, this software is distributed without any warranty that it is 21 free of the rightful claim of any third person regarding infringement 22 or the like. Any license provided herein, whether implied or 23 otherwise, applies only to this software file. Patent licenses, if 24 any, provided herein do not apply to combinations of this program with 25 other software, or any other product whatsoever. 26 27 You should have received a copy of the GNU Lesser General Public 28 License along with this program; if not, write the Free Software 29 Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, 30 USA. 31 32 Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky, 33 Mountain View, CA 94043, or: 34 35 http://www.sgi.com 36 37 For further information regarding this notice, see: 38 39 http://oss.sgi.com/projects/GenInfo/NoticeExplan 40 41 */ 42 43 44 #ifndef _LIBDWARF_H 45 #define _LIBDWARF_H 46 #ifdef __cplusplus 47 extern "C" { 48 #endif 49 /* 50 libdwarf.h 51 $Revision: 1.71 $ $Date: 2001/05/23 23:34:52 $ 52 53 For libdwarf producers and consumers 54 55 The interface is defined as having 8-byte signed and unsigned 56 values so it can handle 64-or-32bit target on 64-or-32bit host. 57 Addr is the native size: it represents pointers on 58 the host machine (not the target!). 59 60 This contains declarations for types and all producer 61 and consumer functions. 62 63 Function declarations are written on a single line each here 64 so one can use grep to each declaration in its entirety. 65 The declarations are a little harder to read this way, but... 66 67 */ 68 69 #if (_MIPS_SZLONG == 64) 70 /* Special case for MIPS, so -64 (LP64) build gets simple -long-. 71 Non-MIPS LP64 or ILP64 environments should probably ensure 72 _MIPS_SZLONG set to 64 everywhere this header is #included. 73 */ 74 typedef int Dwarf_Bool; /* boolean type */ 75 typedef unsigned long Dwarf_Off; /* 4 or 8 byte file offset */ 76 typedef unsigned long Dwarf_Unsigned; /* 4 or 8 byte unsigned value */ 77 typedef unsigned short Dwarf_Half; /* 2 byte unsigned value */ 78 typedef unsigned char Dwarf_Small; /* 1 byte unsigned value */ 79 typedef signed long Dwarf_Signed; /* 4 or 8 byte signed value */ 80 typedef unsigned long Dwarf_Addr; /* target memory address */ 81 #else /* 32-bit */ 82 /* This is for ILP32, allowing i/o of 64bit dwarf info. 83 Also should be fine for LP64 and ILP64 cases. 84 */ 85 typedef int Dwarf_Bool; /* boolean type */ 86 typedef unsigned long long Dwarf_Off; /* 8 byte file offset */ 87 typedef unsigned long long Dwarf_Unsigned; /* 8 byte unsigned value*/ 88 typedef unsigned short Dwarf_Half; /* 2 byte unsigned value */ 89 typedef unsigned char Dwarf_Small; /* 1 byte unsigned value */ 90 typedef signed long long Dwarf_Signed; /* 8 byte signed value */ 91 typedef unsigned long long Dwarf_Addr; /* target memory address */ 92 #endif 93 typedef void* Dwarf_Ptr; /* host machine pointer */ 94 95 /* uninterpreted block of data 96 */ 97 typedef struct { 98 Dwarf_Unsigned bl_len; /* length of block */ 99 Dwarf_Ptr bl_data; /* uninterpreted data */ 100 } Dwarf_Block; 101 102 103 /* location record 104 */ 105 typedef struct { 106 Dwarf_Small lr_atom; /* location operation */ 107 Dwarf_Unsigned lr_number; /* operand */ 108 Dwarf_Unsigned lr_number2; /* for OP_BREGx */ 109 Dwarf_Unsigned lr_offset; /* offset in locexpr for OP_BRA etc */ 110 } Dwarf_Loc; 111 112 113 /* location description 114 */ 115 typedef struct { 116 Dwarf_Addr ld_lopc; /* beginning of active range */ 117 Dwarf_Addr ld_hipc; /* end of active range */ 118 Dwarf_Half ld_cents; /* count of location records */ 119 Dwarf_Loc* ld_s; /* pointer to list of same */ 120 } Dwarf_Locdesc; 121 122 /* Frame description instructions expanded. 123 */ 124 typedef struct { 125 Dwarf_Small fp_base_op; 126 Dwarf_Small fp_extended_op; 127 Dwarf_Half fp_register; 128 Dwarf_Unsigned fp_offset; 129 Dwarf_Off fp_instr_offset; 130 } Dwarf_Frame_Op; 131 132 /* DW_REG_TABLE_SIZE must reflect the number of registers 133 *(DW_FRAME_LAST_REG_NUM) as defined in dwarf.h 134 */ 135 #define DW_REG_TABLE_SIZE 66 136 typedef struct { 137 struct { 138 Dwarf_Small dw_offset_relevant; 139 Dwarf_Half dw_regnum; 140 Dwarf_Addr dw_offset; 141 } rules[DW_REG_TABLE_SIZE]; 142 } Dwarf_Regtable; 143 144 /* for DW_DLC_SYMBOLIC_RELOCATIONS output to caller 145 v2, adding drd_length: some relocations are 4 and 146 some 8 bytes (pointers are 8, section offsets 4) in 147 some dwarf environments. (MIPS relocations are all one 148 size in any given ABI.) Changing drd_type to an unsigned char 149 to keep struct size down. 150 */ 151 enum Dwarf_Rel_Type { 152 dwarf_drt_none, /* should not get to caller */ 153 dwarf_drt_data_reloc, /* simple normal relocation */ 154 dwarf_drt_segment_rel, /* special reloc, exceptions*/ 155 dwarf_drt_first_of_length_pair,/* this and drt_second 156 for .word end - begin 157 case */ 158 dwarf_drt_second_of_length_pair 159 }; 160 typedef struct Dwarf_Relocation_Data_s * Dwarf_Relocation_Data; 161 struct Dwarf_Relocation_Data_s { 162 unsigned char drd_type; /* cast to/from Dwarf_Rel_Type 163 to keep size small in struct */ 164 unsigned char drd_length; /* length in bytes 165 of data being relocated. 4 for 32bit. 166 8 for 64bit data */ 167 Dwarf_Unsigned drd_offset; /* where the data to reloc is */ 168 Dwarf_Unsigned drd_symbol_index; 169 }; 170 171 /* Opaque types for Consumer Library. */ 172 typedef struct Dwarf_Debug_s* Dwarf_Debug; 173 typedef struct Dwarf_Die_s* Dwarf_Die; 174 typedef struct Dwarf_Line_s* Dwarf_Line; 175 typedef struct Dwarf_Global_s* Dwarf_Global; 176 typedef struct Dwarf_Func_s* Dwarf_Func; 177 typedef struct Dwarf_Type_s* Dwarf_Type; 178 typedef struct Dwarf_Var_s* Dwarf_Var; 179 typedef struct Dwarf_Weak_s* Dwarf_Weak; 180 typedef struct Dwarf_Error_s* Dwarf_Error; 181 typedef struct Dwarf_Attribute_s* Dwarf_Attribute; 182 typedef struct Dwarf_Abbrev_s* Dwarf_Abbrev; 183 typedef struct Dwarf_Fde_s* Dwarf_Fde; 184 typedef struct Dwarf_Cie_s* Dwarf_Cie; 185 typedef struct Dwarf_Arange_s* Dwarf_Arange; 186 187 /* Opaque types for Producer Library. */ 188 typedef struct Dwarf_P_Debug_s* Dwarf_P_Debug; 189 typedef struct Dwarf_P_Die_s* Dwarf_P_Die; 190 typedef struct Dwarf_P_Attribute_s* Dwarf_P_Attribute; 191 typedef struct Dwarf_P_Fde_s* Dwarf_P_Fde; 192 typedef struct Dwarf_P_Expr_s* Dwarf_P_Expr; 193 typedef Dwarf_Unsigned Dwarf_Tag; 194 195 196 /* error handler function 197 */ 198 typedef void (*Dwarf_Handler)(Dwarf_Error /*error*/, Dwarf_Ptr /*errarg*/); 199 200 201 /* 202 Dwarf_dealloc() alloc_type arguments. 203 Argument points to: 204 */ 205 #define DW_DLA_STRING 0x01 /* char* */ 206 #define DW_DLA_LOC 0x02 /* Dwarf_Loc */ 207 #define DW_DLA_LOCDESC 0x03 /* Dwarf_Locdesc */ 208 #define DW_DLA_ELLIST 0x04 /* Dwarf_Ellist (not used)*/ 209 #define DW_DLA_BOUNDS 0x05 /* Dwarf_Bounds (not used) */ 210 #define DW_DLA_BLOCK 0x06 /* Dwarf_Block */ 211 #define DW_DLA_DEBUG 0x07 /* Dwarf_Debug */ 212 #define DW_DLA_DIE 0x08 /* Dwarf_Die */ 213 #define DW_DLA_LINE 0x09 /* Dwarf_Line */ 214 #define DW_DLA_ATTR 0x0a /* Dwarf_Attribute */ 215 #define DW_DLA_TYPE 0x0b /* Dwarf_Type (not used) */ 216 #define DW_DLA_SUBSCR 0x0c /* Dwarf_Subscr (not used) */ 217 #define DW_DLA_GLOBAL 0x0d /* Dwarf_Global */ 218 #define DW_DLA_ERROR 0x0e /* Dwarf_Error */ 219 #define DW_DLA_LIST 0x0f /* a list */ 220 #define DW_DLA_LINEBUF 0x10 /* Dwarf_Line* (not used) */ 221 #define DW_DLA_ARANGE 0x11 /* Dwarf_Arange */ 222 #define DW_DLA_ABBREV 0x12 /* Dwarf_Abbrev */ 223 #define DW_DLA_FRAME_OP 0x13 /* Dwarf_Frame_Op */ 224 #define DW_DLA_CIE 0x14 /* Dwarf_Cie */ 225 #define DW_DLA_FDE 0x15 /* Dwarf_Fde */ 226 #define DW_DLA_LOC_BLOCK 0x16 /* Dwarf_Loc Block (not used) */ 227 #define DW_DLA_FRAME_BLOCK 0x17 /* Dwarf_Frame Block (not used) */ 228 #define DW_DLA_FUNC 0x18 /* Dwarf_Func */ 229 #define DW_DLA_TYPENAME 0x19 /* Dwarf_Type */ 230 #define DW_DLA_VAR 0x1a /* Dwarf_Var */ 231 #define DW_DLA_WEAK 0x1b /* Dwarf_Weak */ 232 #define DW_DLA_ADDR 0x1c /* Dwarf_Addr sized entries */ 233 234 /* The augmenter string for CIE */ 235 #define DW_CIE_AUGMENTER_STRING_V0 "z" 236 237 /* dwarf_init() access arguments 238 */ 239 #define DW_DLC_READ 0 /* read only access */ 240 #define DW_DLC_WRITE 1 /* write only access */ 241 #define DW_DLC_RDWR 2 /* read/write access NOT SUPPORTED*/ 242 243 /* dwarf_init() access flag modifiers 244 */ 245 #define DW_DLC_SIZE_64 0x40000000 /* 32-bit target */ 246 #define DW_DLC_SIZE_32 0x20000000 /* 64-bit target */ 247 248 /* dwarf_init() access flag modifiers 249 */ 250 #define DW_DLC_ISA_MIPS 0x00000000 /* MIPS target */ 251 #define DW_DLC_ISA_IA64 0x01000000 /* IA64 target */ 252 #define DW_DLC_STREAM_RELOCATIONS 0x02000000 /* old style binary relocs */ 253 #define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000 /* usable with assem output */ 254 #define DW_DLC_TARGET_BIGENDIAN 0x08000000 /* big endian target */ 255 #define DW_DLC_TARGET_LITTLEENDIAN 0x00100000 /* little endian target */ 256 257 /* dwarf_pcline() slide arguments 258 */ 259 #define DW_DLS_BACKWARD -1 /* slide backward to find line */ 260 #define DW_DLS_NOSLIDE 0 /* match exactly without sliding */ 261 #define DW_DLS_FORWARD 1 /* slide forward to find line */ 262 263 /* libdwarf error numbers 264 */ 265 #define DW_DLE_NE 0 /* no error */ 266 #define DW_DLE_VMM 1 /* dwarf format/library version mismatch */ 267 #define DW_DLE_MAP 2 /* memory map failure */ 268 #define DW_DLE_LEE 3 /* libelf error */ 269 #define DW_DLE_NDS 4 /* no debug section */ 270 #define DW_DLE_NLS 5 /* no line section */ 271 #define DW_DLE_ID 6 /* invalid descriptor for query */ 272 #define DW_DLE_IOF 7 /* I/O failure */ 273 #define DW_DLE_MAF 8 /* memory allocation failure */ 274 #define DW_DLE_IA 9 /* invalid argument */ 275 #define DW_DLE_MDE 10 /* mangled debugging entry */ 276 #define DW_DLE_MLE 11 /* mangled line number entry */ 277 #define DW_DLE_FNO 12 /* file not open */ 278 #define DW_DLE_FNR 13 /* file not a regular file */ 279 #define DW_DLE_FWA 14 /* file open with wrong access */ 280 #define DW_DLE_NOB 15 /* not an object file */ 281 #define DW_DLE_MOF 16 /* mangled object file header */ 282 #define DW_DLE_EOLL 17 /* end of location list entries */ 283 #define DW_DLE_NOLL 18 /* no location list section */ 284 #define DW_DLE_BADOFF 19 /* Invalid offset */ 285 #define DW_DLE_EOS 20 /* end of section */ 286 #define DW_DLE_ATRUNC 21 /* abbreviations section appears truncated*/ 287 #define DW_DLE_BADBITC 22 /* Address size passed to dwarf bad*/ 288 /* It is not an allowed size (64 or 32) */ 289 /* Error codes defined by the current Libdwarf Implementation. */ 290 #define DW_DLE_DBG_ALLOC 23 291 #define DW_DLE_FSTAT_ERROR 24 292 #define DW_DLE_FSTAT_MODE_ERROR 25 293 #define DW_DLE_INIT_ACCESS_WRONG 26 294 #define DW_DLE_ELF_BEGIN_ERROR 27 295 #define DW_DLE_ELF_GETEHDR_ERROR 28 296 #define DW_DLE_ELF_GETSHDR_ERROR 29 297 #define DW_DLE_ELF_STRPTR_ERROR 30 298 #define DW_DLE_DEBUG_INFO_DUPLICATE 31 299 #define DW_DLE_DEBUG_INFO_NULL 32 300 #define DW_DLE_DEBUG_ABBREV_DUPLICATE 33 301 #define DW_DLE_DEBUG_ABBREV_NULL 34 302 #define DW_DLE_DEBUG_ARANGES_DUPLICATE 35 303 #define DW_DLE_DEBUG_ARANGES_NULL 36 304 #define DW_DLE_DEBUG_LINE_DUPLICATE 37 305 #define DW_DLE_DEBUG_LINE_NULL 38 306 #define DW_DLE_DEBUG_LOC_DUPLICATE 39 307 #define DW_DLE_DEBUG_LOC_NULL 40 308 #define DW_DLE_DEBUG_MACINFO_DUPLICATE 41 309 #define DW_DLE_DEBUG_MACINFO_NULL 42 310 #define DW_DLE_DEBUG_PUBNAMES_DUPLICATE 43 311 #define DW_DLE_DEBUG_PUBNAMES_NULL 44 312 #define DW_DLE_DEBUG_STR_DUPLICATE 45 313 #define DW_DLE_DEBUG_STR_NULL 46 314 #define DW_DLE_CU_LENGTH_ERROR 47 315 #define DW_DLE_VERSION_STAMP_ERROR 48 316 #define DW_DLE_ABBREV_OFFSET_ERROR 49 317 #define DW_DLE_ADDRESS_SIZE_ERROR 50 318 #define DW_DLE_DEBUG_INFO_PTR_NULL 51 319 #define DW_DLE_DIE_NULL 52 320 #define DW_DLE_STRING_OFFSET_BAD 53 321 #define DW_DLE_DEBUG_LINE_LENGTH_BAD 54 322 #define DW_DLE_LINE_PROLOG_LENGTH_BAD 55 323 #define DW_DLE_LINE_NUM_OPERANDS_BAD 56 324 #define DW_DLE_LINE_SET_ADDR_ERROR 57 325 #define DW_DLE_LINE_EXT_OPCODE_BAD 58 326 #define DW_DLE_DWARF_LINE_NULL 59 327 #define DW_DLE_INCL_DIR_NUM_BAD 60 328 #define DW_DLE_LINE_FILE_NUM_BAD 61 329 #define DW_DLE_ALLOC_FAIL 62 330 #define DW_DLE_NO_CALLBACK_FUNC 63 331 #define DW_DLE_SECT_ALLOC 64 332 #define DW_DLE_FILE_ENTRY_ALLOC 65 333 #define DW_DLE_LINE_ALLOC 66 334 #define DW_DLE_FPGM_ALLOC 67 335 #define DW_DLE_INCDIR_ALLOC 68 336 #define DW_DLE_STRING_ALLOC 69 337 #define DW_DLE_CHUNK_ALLOC 70 338 #define DW_DLE_BYTEOFF_ERR 71 339 #define DW_DLE_CIE_ALLOC 72 340 #define DW_DLE_FDE_ALLOC 73 341 #define DW_DLE_REGNO_OVFL 74 342 #define DW_DLE_CIE_OFFS_ALLOC 75 343 #define DW_DLE_WRONG_ADDRESS 76 344 #define DW_DLE_EXTRA_NEIGHBORS 77 345 #define DW_DLE_WRONG_TAG 78 346 #define DW_DLE_DIE_ALLOC 79 347 #define DW_DLE_PARENT_EXISTS 80 348 #define DW_DLE_DBG_NULL 81 349 #define DW_DLE_DEBUGLINE_ERROR 82 350 #define DW_DLE_DEBUGFRAME_ERROR 83 351 #define DW_DLE_DEBUGINFO_ERROR 84 352 #define DW_DLE_ATTR_ALLOC 85 353 #define DW_DLE_ABBREV_ALLOC 86 354 #define DW_DLE_OFFSET_UFLW 87 355 #define DW_DLE_ELF_SECT_ERR 88 356 #define DW_DLE_DEBUG_FRAME_LENGTH_BAD 89 357 #define DW_DLE_FRAME_VERSION_BAD 90 358 #define DW_DLE_CIE_RET_ADDR_REG_ERROR 91 359 #define DW_DLE_FDE_NULL 92 360 #define DW_DLE_FDE_DBG_NULL 93 361 #define DW_DLE_CIE_NULL 94 362 #define DW_DLE_CIE_DBG_NULL 95 363 #define DW_DLE_FRAME_TABLE_COL_BAD 96 364 #define DW_DLE_PC_NOT_IN_FDE_RANGE 97 365 #define DW_DLE_CIE_INSTR_EXEC_ERROR 98 366 #define DW_DLE_FRAME_INSTR_EXEC_ERROR 99 367 #define DW_DLE_FDE_PTR_NULL 100 368 #define DW_DLE_RET_OP_LIST_NULL 101 369 #define DW_DLE_LINE_CONTEXT_NULL 102 370 #define DW_DLE_DBG_NO_CU_CONTEXT 103 371 #define DW_DLE_DIE_NO_CU_CONTEXT 104 372 #define DW_DLE_FIRST_DIE_NOT_CU 105 373 #define DW_DLE_NEXT_DIE_PTR_NULL 106 374 #define DW_DLE_DEBUG_FRAME_DUPLICATE 107 375 #define DW_DLE_DEBUG_FRAME_NULL 108 376 #define DW_DLE_ABBREV_DECODE_ERROR 109 377 #define DW_DLE_DWARF_ABBREV_NULL 110 378 #define DW_DLE_ATTR_NULL 111 379 #define DW_DLE_DIE_BAD 112 380 #define DW_DLE_DIE_ABBREV_BAD 113 381 #define DW_DLE_ATTR_FORM_BAD 114 382 #define DW_DLE_ATTR_NO_CU_CONTEXT 115 383 #define DW_DLE_ATTR_FORM_SIZE_BAD 116 384 #define DW_DLE_ATTR_DBG_NULL 117 385 #define DW_DLE_BAD_REF_FORM 118 386 #define DW_DLE_ATTR_FORM_OFFSET_BAD 119 387 #define DW_DLE_LINE_OFFSET_BAD 120 388 #define DW_DLE_DEBUG_STR_OFFSET_BAD 121 389 #define DW_DLE_STRING_PTR_NULL 122 390 #define DW_DLE_PUBNAMES_VERSION_ERROR 123 391 #define DW_DLE_PUBNAMES_LENGTH_BAD 124 392 #define DW_DLE_GLOBAL_NULL 125 393 #define DW_DLE_GLOBAL_CONTEXT_NULL 126 394 #define DW_DLE_DIR_INDEX_BAD 127 395 #define DW_DLE_LOC_EXPR_BAD 128 396 #define DW_DLE_DIE_LOC_EXPR_BAD 129 397 #define DW_DLE_ADDR_ALLOC 130 398 #define DW_DLE_OFFSET_BAD 131 399 #define DW_DLE_MAKE_CU_CONTEXT_FAIL 132 400 #define DW_DLE_REL_ALLOC 133 401 #define DW_DLE_ARANGE_OFFSET_BAD 134 402 #define DW_DLE_SEGMENT_SIZE_BAD 135 403 #define DW_DLE_ARANGE_LENGTH_BAD 136 404 #define DW_DLE_ARANGE_DECODE_ERROR 137 405 #define DW_DLE_ARANGES_NULL 138 406 #define DW_DLE_ARANGE_NULL 139 407 #define DW_DLE_NO_FILE_NAME 140 408 #define DW_DLE_NO_COMP_DIR 141 409 #define DW_DLE_CU_ADDRESS_SIZE_BAD 142 410 #define DW_DLE_INPUT_ATTR_BAD 143 411 #define DW_DLE_EXPR_NULL 144 412 #define DW_DLE_BAD_EXPR_OPCODE 145 413 #define DW_DLE_EXPR_LENGTH_BAD 146 414 #define DW_DLE_MULTIPLE_RELOC_IN_EXPR 147 415 #define DW_DLE_ELF_GETIDENT_ERROR 148 416 #define DW_DLE_NO_AT_MIPS_FDE 149 417 #define DW_DLE_NO_CIE_FOR_FDE 150 418 #define DW_DLE_DIE_ABBREV_LIST_NULL 151 419 #define DW_DLE_DEBUG_FUNCNAMES_DUPLICATE 152 420 #define DW_DLE_DEBUG_FUNCNAMES_NULL 153 421 #define DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR 154 422 #define DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD 155 423 #define DW_DLE_FUNC_NULL 156 424 #define DW_DLE_FUNC_CONTEXT_NULL 157 425 #define DW_DLE_DEBUG_TYPENAMES_DUPLICATE 158 426 #define DW_DLE_DEBUG_TYPENAMES_NULL 159 427 #define DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR 160 428 #define DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD 161 429 #define DW_DLE_TYPE_NULL 162 430 #define DW_DLE_TYPE_CONTEXT_NULL 163 431 #define DW_DLE_DEBUG_VARNAMES_DUPLICATE 164 432 #define DW_DLE_DEBUG_VARNAMES_NULL 165 433 #define DW_DLE_DEBUG_VARNAMES_VERSION_ERROR 166 434 #define DW_DLE_DEBUG_VARNAMES_LENGTH_BAD 167 435 #define DW_DLE_VAR_NULL 168 436 #define DW_DLE_VAR_CONTEXT_NULL 169 437 #define DW_DLE_DEBUG_WEAKNAMES_DUPLICATE 170 438 #define DW_DLE_DEBUG_WEAKNAMES_NULL 171 439 #define DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR 172 440 #define DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD 173 441 #define DW_DLE_WEAK_NULL 174 442 #define DW_DLE_WEAK_CONTEXT_NULL 175 443 #define DW_DLE_LOCDESC_COUNT_WRONG 176 444 #define DW_DLE_MACINFO_STRING_NULL 177 445 #define DW_DLE_MACINFO_STRING_EMPTY 178 446 #define DW_DLE_MACINFO_INTERNAL_ERROR_SPACE 179 447 #define DW_DLE_MACINFO_MALLOC_FAIL 180 448 #define DW_DLE_DEBUGMACINFO_ERROR 181 449 #define DW_DLE_DEBUG_MACRO_LENGTH_BAD 182 450 #define DW_DLE_DEBUG_MACRO_MAX_BAD 183 451 #define DW_DLE_DEBUG_MACRO_INTERNAL_ERR 184 452 #define DW_DLE_DEBUG_MACRO_MALLOC_SPACE 185 453 #define DW_DLE_DEBUG_MACRO_INCONSISTENT 186 454 #define DW_DLE_DF_NO_CIE_AUGMENTATION 187 455 #define DW_DLE_DF_REG_NUM_TOO_HIGH 188 456 #define DW_DLE_DF_MAKE_INSTR_NO_INIT 189 457 #define DW_DLE_DF_NEW_LOC_LESS_OLD_LOC 190 458 #define DW_DLE_DF_POP_EMPTY_STACK 191 459 #define DW_DLE_DF_ALLOC_FAIL 192 460 #define DW_DLE_DF_FRAME_DECODING_ERROR 193 461 462 /* DW_DLE_LAST MUST EQUAL LAST ERROR NUMBER */ 463 #define DW_DLE_LAST 193 464 #define DW_DLE_LO_USER 0x10000 465 466 /* taken as meaning 'undefined value', this is not 467 a column or register number. 468 Only present at libdwarf runtime. Never on disk. 469 DW_FRAME_* Values present on disk are in dwarf.h 470 */ 471 #define DW_FRAME_UNDEFINED_VAL 1034 472 473 /* taken as meaning 'same value' as caller had, not a column 474 or register number 475 Only present at libdwarf runtime. Never on disk. 476 DW_FRAME_* Values present on disk are in dwarf.h 477 */ 478 #define DW_FRAME_SAME_VAL 1035 479 480 481 482 /* error return values 483 */ 484 #define DW_DLV_BADADDR (~(Dwarf_Addr)0) 485 /* for functions returning target address */ 486 487 #define DW_DLV_NOCOUNT ((Dwarf_Signed)-1) 488 /* for functions returning count */ 489 490 #define DW_DLV_BADOFFSET (~(Dwarf_Off)0) 491 /* for functions returning offset */ 492 493 /* standard return values for functions */ 494 #define DW_DLV_NO_ENTRY -1 495 #define DW_DLV_OK 0 496 #define DW_DLV_ERROR 1 497 498 /* Special values for offset_into_exception_table field of dwarf fde's. */ 499 /* The following value indicates that there is no Exception table offset 500 associated with a dwarf frame. */ 501 #define DW_DLX_NO_EH_OFFSET (-1LL) 502 /* The following value indicates that the producer was unable to analyse the 503 source file to generate Exception tables for this function. */ 504 #define DW_DLX_EH_OFFSET_UNAVAILABLE (-2LL) 505 506 507 /*===========================================================================*/ 508 /* Dwarf consumer interface initialization and termination operations */ 509 510 /* non-elf initialization */ 511 int dwarf_init(int /*fd*/, 512 Dwarf_Unsigned /*access*/, 513 Dwarf_Handler /*errhand*/, 514 Dwarf_Ptr /*errarg*/, 515 Dwarf_Debug * /*dbg*/, 516 Dwarf_Error* /*error*/); 517 518 /* elf intialization */ 519 int dwarf_elf_init(Elf* /*elf*/, 520 Dwarf_Unsigned /*access*/, 521 Dwarf_Handler /*errhand*/, 522 Dwarf_Ptr /*errarg*/, 523 Dwarf_Debug * /*dbg*/, 524 Dwarf_Error* /*error*/); 525 526 /* Undocumented function for memory allocator. */ 527 void dwarf_print_memory_stats(Dwarf_Debug /*dbg*/); 528 529 530 int dwarf_get_elf(Dwarf_Debug /*dbg*/, 531 Elf ** /*return_elfptr*/, 532 Dwarf_Error* /*error*/); 533 534 int dwarf_finish(Dwarf_Debug /*dbg*/, Dwarf_Error* /*error*/); 535 536 /* die traversal operations */ 537 int dwarf_next_cu_header(Dwarf_Debug /*dbg*/, 538 Dwarf_Unsigned* /*cu_header_length*/, 539 Dwarf_Half* /*version_stamp*/, 540 Dwarf_Off* /*abbrev_offset*/, 541 Dwarf_Half* /*address_size*/, 542 Dwarf_Unsigned* /*next_cu_header_offset*/, 543 Dwarf_Error* /*error*/); 544 545 int dwarf_siblingof(Dwarf_Debug /*dbg*/, 546 Dwarf_Die /*die*/, 547 Dwarf_Die* /*return_siblingdie*/, 548 Dwarf_Error* /*error*/); 549 550 int dwarf_child(Dwarf_Die /*die*/, 551 Dwarf_Die* /*return_childdie*/, 552 Dwarf_Error* /*error*/); 553 554 /* finding die given offset */ 555 int dwarf_offdie(Dwarf_Debug /*dbg*/, 556 Dwarf_Off /*offset*/, 557 Dwarf_Die* /*return_die*/, 558 Dwarf_Error* /*error*/); 559 560 /* higher level functions (Unimplemented) */ 561 int dwarf_pcfile(Dwarf_Debug /*dbg*/, 562 Dwarf_Addr /*pc*/, 563 Dwarf_Die* /*return_die*/, 564 Dwarf_Error* /*error*/); 565 566 /* Unimplemented */ 567 int dwarf_pcsubr(Dwarf_Debug /*dbg*/, 568 Dwarf_Addr /*pc*/, 569 Dwarf_Die* /*return_die*/, 570 Dwarf_Error* /*error*/); 571 572 /* Unimplemented */ 573 int dwarf_pcscope(Dwarf_Debug /*dbg*/, 574 Dwarf_Addr /*pc*/, 575 Dwarf_Die* /*return_die*/, 576 Dwarf_Error* /*error*/); 577 578 /* operations on DIEs */ 579 int dwarf_tag(Dwarf_Die /*die*/, 580 Dwarf_Half* /*return_tag*/, 581 Dwarf_Error* /*error*/); 582 583 /* utility? */ 584 int dwarf_dieoffset(Dwarf_Die /*die*/, 585 Dwarf_Off* /*return_offset*/, 586 Dwarf_Error* /*error*/); 587 588 int dwarf_die_CU_offset(Dwarf_Die /*die*/, 589 Dwarf_Off* /*return_offset*/, 590 Dwarf_Error* /*error*/); 591 592 int dwarf_attr (Dwarf_Die /*die*/, 593 Dwarf_Half /*attr*/, 594 Dwarf_Attribute * /*returned_attr*/, 595 Dwarf_Error* /*error*/); 596 597 int dwarf_diename(Dwarf_Die /*die*/, 598 char ** /*diename*/, 599 Dwarf_Error* /*error*/); 600 601 /* convenience functions, alternative to using dwarf_attrlist() */ 602 int dwarf_hasattr(Dwarf_Die /*die*/, 603 Dwarf_Half /*attr*/, 604 Dwarf_Bool * /*returned_bool*/, 605 Dwarf_Error* /*error*/); 606 607 int dwarf_loclist(Dwarf_Attribute /*attr*/, 608 Dwarf_Locdesc** /*llbuf*/, 609 Dwarf_Signed * /*locCount*/, 610 Dwarf_Error* /*error*/); 611 612 /* Unimplemented */ 613 int dwarf_stringlen(Dwarf_Die /*die*/, 614 Dwarf_Locdesc ** /*returned_locdesc*/, 615 Dwarf_Error* /*error*/); 616 617 /* Unimplemented */ 618 int dwarf_subscrcnt(Dwarf_Die /*die*/, 619 Dwarf_Signed * /*returned_count*/, 620 Dwarf_Error* /*error*/); 621 622 /* Unimplemented */ 623 int dwarf_nthsubscr(Dwarf_Die /*die*/, 624 Dwarf_Unsigned /*ssndx*/, 625 Dwarf_Die * /*returned_die*/, 626 Dwarf_Error* /*error*/); 627 628 int dwarf_lowpc(Dwarf_Die /*die*/, 629 Dwarf_Addr * /*returned_addr*/, 630 Dwarf_Error* /*error*/); 631 632 int dwarf_highpc(Dwarf_Die /*die*/, 633 Dwarf_Addr * /*returned_addr*/, 634 Dwarf_Error* /*error*/); 635 636 int dwarf_bytesize(Dwarf_Die /*die*/, 637 Dwarf_Unsigned * /*returned_size*/, 638 Dwarf_Error* /*error*/); 639 640 /* Unimplemented */ 641 int dwarf_isbitfield(Dwarf_Die /*die*/, 642 Dwarf_Bool * /*returned_bool*/, 643 Dwarf_Error* /*error*/); 644 645 int dwarf_bitsize(Dwarf_Die /*die*/, 646 Dwarf_Unsigned * /*returned_size*/, 647 Dwarf_Error* /*error*/); 648 649 int dwarf_bitoffset(Dwarf_Die /*die*/, 650 Dwarf_Unsigned * /*returned_offset*/, 651 Dwarf_Error* /*error*/); 652 653 int dwarf_srclang(Dwarf_Die /*die*/, 654 Dwarf_Unsigned * /*returned_lang*/, 655 Dwarf_Error* /*error*/); 656 657 int dwarf_arrayorder(Dwarf_Die /*die*/, 658 Dwarf_Unsigned * /*returned_order*/, 659 Dwarf_Error* /*error*/); 660 661 /* end of convenience function list */ 662 663 /* this is the main interface to attributes of a DIE */ 664 int dwarf_attrlist(Dwarf_Die /*die*/, 665 Dwarf_Attribute** /*attrbuf*/, 666 Dwarf_Signed * /*attrcount*/, 667 Dwarf_Error* /*error*/); 668 669 /* query operations for attributes */ 670 int dwarf_hasform(Dwarf_Attribute /*attr*/, 671 Dwarf_Half /*form*/, 672 Dwarf_Bool * /*returned_bool*/, 673 Dwarf_Error* /*error*/); 674 675 int dwarf_whatform(Dwarf_Attribute /*attr*/, 676 Dwarf_Half * /*returned_form*/, 677 Dwarf_Error* /*error*/); 678 679 int dwarf_whatattr(Dwarf_Attribute /*attr*/, 680 Dwarf_Half * /*returned_attr_num*/, 681 Dwarf_Error* /*error*/); 682 683 /* 684 The following are concerned with the Primary Interface: getting 685 the actual data values. One function per 'kind' of FORM. 686 */ 687 /*dwarf_formref returns, thru return_offset, a CU-relative offset 688 ** and does not allow DW_FORM_ref_addr*/ 689 int dwarf_formref(Dwarf_Attribute /*attr*/, 690 Dwarf_Off* /*return_offset*/, 691 Dwarf_Error* /*error*/); 692 /*dwarf_global_formref returns, thru return_offset, 693 a debug_info-relative offset and does allow all reference forms*/ 694 int dwarf_global_formref(Dwarf_Attribute /*attr*/, 695 Dwarf_Off* /*return_offset*/, 696 Dwarf_Error* /*error*/); 697 698 int dwarf_formaddr(Dwarf_Attribute /*attr*/, 699 Dwarf_Addr * /*returned_addr*/, 700 Dwarf_Error* /*error*/); 701 702 int dwarf_formflag(Dwarf_Attribute /*attr*/, 703 Dwarf_Bool * /*returned_bool*/, 704 Dwarf_Error* /*error*/); 705 706 int dwarf_formudata(Dwarf_Attribute /*attr*/, 707 Dwarf_Unsigned * /*returned_val*/, 708 Dwarf_Error* /*error*/); 709 710 int dwarf_formsdata(Dwarf_Attribute /*attr*/, 711 Dwarf_Signed * /*returned_val*/, 712 Dwarf_Error* /*error*/); 713 714 int dwarf_formblock(Dwarf_Attribute /*attr*/, 715 Dwarf_Block ** /*returned_block*/, 716 Dwarf_Error* /*error*/); 717 718 int dwarf_formstring(Dwarf_Attribute /*attr*/, 719 char ** /*returned_string*/, 720 Dwarf_Error* /*error*/); 721 722 /* end attribute query operations. */ 723 724 /* line number operations */ 725 /* dwarf_srclines is the normal interface */ 726 int dwarf_srclines(Dwarf_Die /*die*/, 727 Dwarf_Line** /*linebuf*/, 728 Dwarf_Signed * /*linecount*/, 729 Dwarf_Error* /*error*/); 730 731 int dwarf_srcfiles(Dwarf_Die /*die*/, 732 char*** /*srcfiles*/, 733 Dwarf_Signed * /*filecount*/, 734 Dwarf_Error* /*error*/); 735 736 /* Unimplemented. */ 737 int dwarf_dieline(Dwarf_Die /*die*/, 738 Dwarf_Line * /*returned_line*/, 739 Dwarf_Error * /*error*/); 740 741 int dwarf_linebeginstatement(Dwarf_Line /*line*/, 742 Dwarf_Bool * /*returned_bool*/, 743 Dwarf_Error* /*error*/); 744 745 int dwarf_lineendsequence(Dwarf_Line /*line*/, 746 Dwarf_Bool * /*returned_bool*/, 747 Dwarf_Error* /*error*/); 748 749 int dwarf_lineno(Dwarf_Line /*line*/, 750 Dwarf_Unsigned * /*returned_lineno*/, 751 Dwarf_Error* /*error*/); 752 753 int dwarf_lineaddr(Dwarf_Line /*line*/, 754 Dwarf_Addr * /*returned_addr*/, 755 Dwarf_Error* /*error*/); 756 757 int dwarf_lineoff(Dwarf_Line /*line*/, 758 Dwarf_Signed * /*returned_lineoffset*/, 759 Dwarf_Error* /*error*/); 760 761 int dwarf_linesrc(Dwarf_Line /*line*/, 762 char ** /*returned_name*/, 763 Dwarf_Error* /*error*/); 764 765 int dwarf_lineblock(Dwarf_Line /*line*/, 766 Dwarf_Bool * /*returned_bool*/, 767 Dwarf_Error* /*error*/); 768 769 /* tertiary interface to line info */ 770 /* Unimplemented */ 771 int dwarf_pclines(Dwarf_Debug /*dbg*/, 772 Dwarf_Addr /*pc*/, 773 Dwarf_Line** /*linebuf*/, 774 Dwarf_Signed * /*linecount*/, 775 Dwarf_Signed /*slide*/, 776 Dwarf_Error* /*error*/); 777 /* end line number operations */ 778 779 /* global name space operations (.debug_pubnames access) */ 780 int dwarf_get_globals(Dwarf_Debug /*dbg*/, 781 Dwarf_Global** /*globals*/, 782 Dwarf_Signed * /*number_of_globals*/, 783 Dwarf_Error* /*error*/); 784 785 int dwarf_globname(Dwarf_Global /*glob*/, 786 char ** /*returned_name*/, 787 Dwarf_Error* /*error*/); 788 789 int dwarf_global_die_offset(Dwarf_Global /*global*/, 790 Dwarf_Off* /*return_offset*/, 791 Dwarf_Error * /*error*/); 792 793 int dwarf_get_cu_die_offset_given_cu_header_offset( 794 Dwarf_Debug /*dbg*/, 795 Dwarf_Off /*in_cu_header_offset*/, 796 Dwarf_Off * /*out_cu_die_offset*/, 797 Dwarf_Error * /*err*/); 798 #ifdef __sgi /* pragma is sgi MIPS only */ 799 #pragma optional dwarf_get_cu_die_offset_given_cu_header_offset 800 #endif 801 802 int dwarf_global_cu_offset(Dwarf_Global /*global*/, 803 Dwarf_Off* /*return_offset*/, 804 Dwarf_Error* /*error*/); 805 806 int dwarf_global_name_offsets(Dwarf_Global /*global*/, 807 char ** /*returned_name*/, 808 Dwarf_Off* /*die_offset*/, 809 Dwarf_Off* /*cu_offset*/, 810 Dwarf_Error* /*error*/); 811 812 /* Static function name operations. */ 813 int dwarf_get_funcs(Dwarf_Debug /*dbg*/, 814 Dwarf_Func** /*funcs*/, 815 Dwarf_Signed * /*number_of_funcs*/, 816 Dwarf_Error* /*error*/); 817 818 int dwarf_funcname(Dwarf_Func /*func*/, 819 char ** /*returned_name*/, 820 Dwarf_Error* /*error*/); 821 822 int dwarf_func_die_offset(Dwarf_Func /*func*/, 823 Dwarf_Off* /*return_offset*/, 824 Dwarf_Error* /*error*/); 825 826 int dwarf_func_cu_offset(Dwarf_Func /*func*/, 827 Dwarf_Off* /*return_offset*/, 828 Dwarf_Error* /*error*/); 829 830 int dwarf_func_name_offsets(Dwarf_Func /*func*/, 831 char ** /*returned_name*/, 832 Dwarf_Off* /*die_offset*/, 833 Dwarf_Off* /*cu_offset*/, 834 Dwarf_Error* /*error*/); 835 836 /* User-defined type name operations. */ 837 int dwarf_get_types(Dwarf_Debug /*dbg*/, 838 Dwarf_Type** /*types*/, 839 Dwarf_Signed * /*number_of_types*/, 840 Dwarf_Error* /*error*/); 841 842 int dwarf_typename(Dwarf_Type /*type*/, 843 char ** /*returned_name*/, 844 Dwarf_Error* /*error*/); 845 846 int dwarf_type_die_offset(Dwarf_Type /*type*/, 847 Dwarf_Off* /*return_offset*/, 848 Dwarf_Error* /*error*/); 849 850 int dwarf_type_cu_offset(Dwarf_Type /*type*/, 851 Dwarf_Off* /*return_offset*/, 852 Dwarf_Error* /*error*/); 853 854 int dwarf_type_name_offsets(Dwarf_Type /*type*/, 855 char ** /*returned_name*/, 856 Dwarf_Off* /*die_offset*/, 857 Dwarf_Off* /*cu_offset*/, 858 Dwarf_Error* /*error*/); 859 860 /* File-scope static variable name operations. */ 861 int dwarf_get_vars(Dwarf_Debug /*dbg*/, 862 Dwarf_Var** /*vars*/, 863 Dwarf_Signed * /*number_of_vars*/, 864 Dwarf_Error* /*error*/); 865 866 int dwarf_varname(Dwarf_Var /*var*/, 867 char ** /*returned_name*/, 868 Dwarf_Error* /*error*/); 869 870 int dwarf_var_die_offset(Dwarf_Var /*var*/, 871 Dwarf_Off* /*return_offset*/, 872 Dwarf_Error* /*error*/); 873 874 int dwarf_var_cu_offset(Dwarf_Var /*var*/, 875 Dwarf_Off* /*return_offset*/, 876 Dwarf_Error* /*error*/); 877 878 int dwarf_var_name_offsets(Dwarf_Var /*var*/, 879 char ** /*returned_name*/, 880 Dwarf_Off* /*die_offset*/, 881 Dwarf_Off* /*cu_offset*/, 882 Dwarf_Error* /*error*/); 883 884 /* weak name operations. */ 885 int dwarf_get_weaks(Dwarf_Debug /*dbg*/, 886 Dwarf_Weak** /*weaks*/, 887 Dwarf_Signed * /*number_of_weaks*/, 888 Dwarf_Error* /*error*/); 889 890 int dwarf_weakname(Dwarf_Weak /*weak*/, 891 char ** /*returned_name*/, 892 Dwarf_Error* /*error*/); 893 894 int dwarf_weak_die_offset(Dwarf_Weak /*weak*/, 895 Dwarf_Off* /*return_offset*/, 896 Dwarf_Error* /*error*/); 897 898 int dwarf_weak_cu_offset(Dwarf_Weak /*weak*/, 899 Dwarf_Off* /*return_offset*/, 900 Dwarf_Error* /*error*/); 901 902 int dwarf_weak_name_offsets(Dwarf_Weak /*weak*/, 903 char ** /*returned_name*/, 904 Dwarf_Off* /*die_offset*/, 905 Dwarf_Off* /*cu_offset*/, 906 Dwarf_Error* /*error*/); 907 908 /* location list section operation. (.debug_loc access) */ 909 /* Unimplemented. */ 910 int dwarf_get_loclist_entry(Dwarf_Debug /*dbg*/, 911 Dwarf_Unsigned /*offset*/, 912 Dwarf_Addr* /*hipc*/, 913 Dwarf_Addr* /*lopc*/, 914 Dwarf_Ptr* /*data*/, 915 Dwarf_Unsigned* /*entry_len*/, 916 Dwarf_Unsigned* /*next_entry*/, 917 Dwarf_Error* /*error*/); 918 919 /* abbreviation section operations */ 920 int dwarf_get_abbrev(Dwarf_Debug /*dbg*/, 921 Dwarf_Unsigned /*offset*/, 922 Dwarf_Abbrev * /*returned_abbrev*/, 923 Dwarf_Unsigned* /*length*/, 924 Dwarf_Unsigned* /*attr_count*/, 925 Dwarf_Error* /*error*/); 926 927 int dwarf_get_abbrev_tag(Dwarf_Abbrev /*abbrev*/, 928 Dwarf_Half* /*return_tag_number*/, 929 Dwarf_Error* /*error*/); 930 int dwarf_get_abbrev_code(Dwarf_Abbrev /*abbrev*/, 931 Dwarf_Unsigned* /*return_code_number*/, 932 Dwarf_Error* /*error*/); 933 934 int dwarf_get_abbrev_children_flag(Dwarf_Abbrev /*abbrev*/, 935 Dwarf_Signed* /*return_flag*/, 936 Dwarf_Error* /*error*/); 937 938 int dwarf_get_abbrev_entry(Dwarf_Abbrev /*abbrev*/, 939 Dwarf_Signed /*index*/, 940 Dwarf_Half * /*returned_attr_num*/, 941 Dwarf_Signed* /*form*/, 942 Dwarf_Off* /*offset*/, 943 Dwarf_Error* /*error*/); 944 945 /* consumer string section operation */ 946 int dwarf_get_str(Dwarf_Debug /*dbg*/, 947 Dwarf_Off /*offset*/, 948 char** /*string*/, 949 Dwarf_Signed * /*strlen_of_string*/, 950 Dwarf_Error* /*error*/); 951 952 /* Consumer op on gnu .eh_frame info */ 953 int dwarf_get_fde_list_eh( 954 Dwarf_Debug /*dbg*/, 955 Dwarf_Cie ** /*cie_data*/, 956 Dwarf_Signed * /*cie_element_count*/, 957 Dwarf_Fde ** /*fde_data*/, 958 Dwarf_Signed * /*fde_element_count*/, 959 Dwarf_Error * /*error*/); 960 961 962 /* consumer operations on frame info: .debug_frame */ 963 int dwarf_get_fde_list(Dwarf_Debug /*dbg*/, 964 Dwarf_Cie** /*cie_data*/, 965 Dwarf_Signed* /*cie_element_count*/, 966 Dwarf_Fde** /*fde_data*/, 967 Dwarf_Signed* /*fde_element_count*/, 968 Dwarf_Error* /*error*/); 969 970 971 int dwarf_get_fde_range(Dwarf_Fde /*fde*/, 972 Dwarf_Addr* /*low_pc*/, 973 Dwarf_Unsigned* /*func_length*/, 974 Dwarf_Ptr* /*fde_bytes*/, 975 Dwarf_Unsigned* /*fde_byte_length*/, 976 Dwarf_Off* /*cie_offset*/, 977 Dwarf_Signed* /*cie_index*/, 978 Dwarf_Off* /*fde_offset*/, 979 Dwarf_Error* /*error*/); 980 981 int dwarf_get_fde_exception_info(Dwarf_Fde /*fde*/, 982 Dwarf_Signed* /* offset_into_exception_tables */, 983 Dwarf_Error* /*error*/); 984 985 int dwarf_get_cie_of_fde(Dwarf_Fde /*fde*/, 986 Dwarf_Cie * /*cie_returned*/, 987 Dwarf_Error* /*error*/); 988 989 int dwarf_get_cie_info(Dwarf_Cie /*cie*/, 990 Dwarf_Unsigned * /*bytes_in_cie*/, 991 Dwarf_Small* /*version*/, 992 char ** /*augmenter*/, 993 Dwarf_Unsigned* /*code_alignment_factor*/, 994 Dwarf_Signed* /*data_alignment_factor*/, 995 Dwarf_Half* /*return_address_register_rule*/, 996 Dwarf_Ptr* /*initial_instructions*/, 997 Dwarf_Unsigned* /*initial_instructions_length*/, 998 Dwarf_Error* /*error*/); 999 1000 int dwarf_get_fde_instr_bytes(Dwarf_Fde /*fde*/, 1001 Dwarf_Ptr * /*outinstrs*/, Dwarf_Unsigned * /*outlen*/, 1002 Dwarf_Error * /*error*/); 1003 1004 int dwarf_get_fde_info_for_all_regs(Dwarf_Fde /*fde*/, 1005 Dwarf_Addr /*pc_requested*/, 1006 Dwarf_Regtable* /*reg_table*/, 1007 Dwarf_Addr* /*row_pc*/, 1008 Dwarf_Error* /*error*/); 1009 1010 int dwarf_get_fde_info_for_reg(Dwarf_Fde /*fde*/, 1011 Dwarf_Half /*table_column*/, 1012 Dwarf_Addr /*pc_requested*/, 1013 Dwarf_Signed* /*offset_relevant*/, 1014 Dwarf_Signed* /*register*/, 1015 Dwarf_Signed* /*offset*/, 1016 Dwarf_Addr* /*row_pc*/, 1017 Dwarf_Error* /*error*/); 1018 1019 int dwarf_get_fde_for_die(Dwarf_Debug /*dbg*/, 1020 Dwarf_Die /*subr_die */, 1021 Dwarf_Fde * /*returned_fde*/, 1022 Dwarf_Error* /*error*/); 1023 1024 int dwarf_get_fde_n(Dwarf_Fde* /*fde_data*/, 1025 Dwarf_Unsigned /*fde_index*/, 1026 Dwarf_Fde * /*returned_fde*/, 1027 Dwarf_Error* /*error*/); 1028 1029 int dwarf_get_fde_at_pc(Dwarf_Fde* /*fde_data*/, 1030 Dwarf_Addr /*pc_of_interest*/, 1031 Dwarf_Fde * /*returned_fde*/, 1032 Dwarf_Addr* /*lopc*/, 1033 Dwarf_Addr* /*hipc*/, 1034 Dwarf_Error* /*error*/); 1035 1036 int dwarf_expand_frame_instructions(Dwarf_Debug /*dbg*/, 1037 Dwarf_Ptr /*instruction*/, 1038 Dwarf_Unsigned /*i_length*/, 1039 Dwarf_Frame_Op** /*returned_op_list*/, 1040 Dwarf_Signed* /*op_count*/, 1041 Dwarf_Error* /*error*/); 1042 1043 /* Operations on .debug_aranges. */ 1044 int dwarf_get_aranges(Dwarf_Debug /*dbg*/, 1045 Dwarf_Arange** /*aranges*/, 1046 Dwarf_Signed * /*arange_count*/, 1047 Dwarf_Error* /*error*/); 1048 1049 1050 1051 int dwarf_get_arange( 1052 Dwarf_Arange* /*aranges*/, 1053 Dwarf_Unsigned /*arange_count*/, 1054 Dwarf_Addr /*address*/, 1055 Dwarf_Arange * /*returned_arange*/, 1056 Dwarf_Error* /*error*/); 1057 1058 int dwarf_get_cu_die_offset( 1059 Dwarf_Arange /*arange*/, 1060 Dwarf_Off* /*return_offset*/, 1061 Dwarf_Error* /*error*/); 1062 1063 int dwarf_get_arange_cu_header_offset( 1064 Dwarf_Arange /*arange*/, 1065 Dwarf_Off* /*return_cu_header_offset*/, 1066 Dwarf_Error* /*error*/); 1067 #ifdef __sgi /* pragma is sgi MIPS only */ 1068 #pragma optional dwarf_get_arange_cu_header_offset 1069 #endif 1070 1071 int dwarf_get_arange_info( 1072 Dwarf_Arange /*arange*/, 1073 Dwarf_Addr* /*start*/, 1074 Dwarf_Unsigned* /*length*/, 1075 Dwarf_Off* /*cu_die_offset*/, 1076 Dwarf_Error* /*error*/); 1077 1078 1079 /* consumer .debug_macinfo information interface. 1080 */ 1081 struct Dwarf_Macro_Details_s { 1082 Dwarf_Off dmd_offset; /* offset, in the section, 1083 of this macro info */ 1084 Dwarf_Small dmd_type; /* the type, DW_MACINFO_define etc*/ 1085 Dwarf_Signed dmd_lineno; /* the source line number where 1086 applicable and vend_def # if 1087 vendor_extension op 1088 */ 1089 1090 Dwarf_Signed dmd_fileindex;/* the source file index: 1091 applies to define undef start_file 1092 */ 1093 char * dmd_macro; /* macro name (with value for defineop) 1094 string from vendor ext 1095 */ 1096 }; 1097 1098 /* _dwarf_print_lines is for use by dwarfdump: it prints 1099 line info to stdout. 1100 */ 1101 int _dwarf_print_lines(Dwarf_Die cu_die,Dwarf_Error * /*error*/); 1102 1103 /* _dwarf_ld_sort_lines is for use solely by ld for 1104 rearranging lines in .debug_line in a .o created with a text 1105 section per function. 1106 -OPT:procedure_reorder=ON 1107 where ld-cord (cord(1)ing by ld, 1108 not by cord(1)) may have changed the function order. 1109 */ 1110 int _dwarf_ld_sort_lines( 1111 void * orig_buffer, 1112 unsigned long buffer_len, 1113 int is_64_bit, 1114 int *any_change, 1115 int * err_code); 1116 1117 /* Used by dwarfdump -v to print offsets, for debugging 1118 dwarf info 1119 */ 1120 int _dwarf_fde_section_offset(Dwarf_Debug dbg,Dwarf_Fde in_fde, 1121 Dwarf_Off *fde_off, Dwarf_Off *cie_off, 1122 Dwarf_Error *err); 1123 1124 /* Used by dwarfdump -v to print offsets, for debugging 1125 dwarf info 1126 */ 1127 int _dwarf_cie_section_offset(Dwarf_Debug dbg,Dwarf_Cie in_cie, 1128 Dwarf_Off *cie_off, 1129 Dwarf_Error *err); 1130 1131 1132 1133 1134 typedef struct Dwarf_Macro_Details_s Dwarf_Macro_Details; 1135 1136 int dwarf_get_macro(Dwarf_Debug /*dbg*/, 1137 char * /*requested_macro_name*/, 1138 Dwarf_Addr /*pc_of_request*/, 1139 char ** /*returned_macro_value*/, 1140 Dwarf_Error * /*error*/); 1141 1142 int dwarf_get_all_defined_macros(Dwarf_Debug /*dbg*/, 1143 Dwarf_Addr /*pc_of_request*/, 1144 Dwarf_Signed * /*returned_count*/, 1145 char *** /*returned_pointers_to_macros*/, 1146 Dwarf_Error * /*error*/); 1147 1148 char *dwarf_find_macro_value_start(char * /*macro_string*/); 1149 1150 int dwarf_get_macro_details(Dwarf_Debug /*dbg*/, 1151 Dwarf_Off /*macro_offset*/, 1152 Dwarf_Unsigned /*maximum_count*/, 1153 Dwarf_Signed * /*entry_count*/, 1154 Dwarf_Macro_Details ** /*details*/, 1155 Dwarf_Error * /*err*/); 1156 1157 1158 int dwarf_get_address_size(Dwarf_Debug /*dbg*/, 1159 Dwarf_Half * /*addr_size*/, 1160 Dwarf_Error * /*error*/); 1161 1162 /* utility operations */ 1163 Dwarf_Unsigned dwarf_errno(Dwarf_Error /*error*/); 1164 1165 char* dwarf_errmsg(Dwarf_Error /*error*/); 1166 1167 /* stringcheck zero is default and means do all 1168 ** string length validity checks. 1169 ** Call with parameter value 1 to turn off many such checks (and 1170 ** increase performance). 1171 ** Call with zero for safest running. 1172 ** Actual value saved and returned is only 8 bits! Upper bits 1173 ** ignored by libdwarf (and zero on return). 1174 ** Returns previous value. 1175 */ 1176 int dwarf_set_stringcheck(int /*stringcheck*/); 1177 1178 /* Unimplemented */ 1179 Dwarf_Handler dwarf_seterrhand(Dwarf_Debug /*dbg*/, Dwarf_Handler /*errhand*/); 1180 1181 /* Unimplemented */ 1182 Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug /*dbg*/, Dwarf_Ptr /*errarg*/); 1183 1184 void dwarf_dealloc(Dwarf_Debug /*dbg*/, void* /*space*/, 1185 Dwarf_Unsigned /*type*/); 1186 1187 /* DWARF Producer Interface */ 1188 1189 typedef int (*Dwarf_Callback_Func)( 1190 char* /*name*/, 1191 int /*size*/, 1192 Dwarf_Unsigned /*type*/, 1193 Dwarf_Unsigned /*flags*/, 1194 Dwarf_Unsigned /*link*/, 1195 Dwarf_Unsigned /*info*/, 1196 int* /*sect name index*/, 1197 int* /*error*/); 1198 1199 Dwarf_P_Debug dwarf_producer_init( 1200 Dwarf_Unsigned /*creation_flags*/, 1201 Dwarf_Callback_Func /*func*/, 1202 Dwarf_Handler /*errhand*/, 1203 Dwarf_Ptr /*errarg*/, 1204 Dwarf_Error* /*error*/); 1205 1206 typedef int (*Dwarf_Callback_Func_b)( 1207 char* /*name*/, 1208 int /*size*/, 1209 Dwarf_Unsigned /*type*/, 1210 Dwarf_Unsigned /*flags*/, 1211 Dwarf_Unsigned /*link*/, 1212 Dwarf_Unsigned /*info*/, 1213 Dwarf_Unsigned* /*sect_name_index*/, 1214 int* /*error*/); 1215 1216 1217 Dwarf_P_Debug dwarf_producer_init_b( 1218 Dwarf_Unsigned /*flags*/, 1219 Dwarf_Callback_Func_b /*func*/, 1220 Dwarf_Handler /*errhand*/, 1221 Dwarf_Ptr /*errarg*/, 1222 Dwarf_Error * /*error*/); 1223 1224 1225 Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug /*dbg*/, 1226 Dwarf_Error* /*error*/); 1227 1228 Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug /*dbg*/, 1229 Dwarf_Signed /*dwarf_section*/, 1230 Dwarf_Signed* /*elf_section_index*/, 1231 Dwarf_Unsigned* /*length*/, 1232 Dwarf_Error* /*error*/); 1233 1234 int dwarf_get_relocation_info_count( 1235 Dwarf_P_Debug /*dbg*/, 1236 Dwarf_Unsigned * /*count_of_relocation_sections*/, 1237 int * /*drd_buffer_version*/, 1238 Dwarf_Error* /*error*/); 1239 1240 int dwarf_get_relocation_info( 1241 Dwarf_P_Debug /*dbg*/, 1242 Dwarf_Signed * /*elf_section_index*/, 1243 Dwarf_Signed * /*elf_section_index_link*/, 1244 Dwarf_Unsigned * /*relocation_buffer_count*/, 1245 Dwarf_Relocation_Data * /*reldata_buffer*/, 1246 Dwarf_Error* /*error*/); 1247 1248 /* v1: no drd_length field, enum explicit */ 1249 /* v2: has the drd_length field, enum value in uchar member */ 1250 #define DWARF_DRD_BUFFER_VERSION 2 1251 1252 void dwarf_reset_section_bytes(Dwarf_P_Debug /*dbg*/); 1253 1254 Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug /*dbg*/, 1255 Dwarf_Error* /*error*/); 1256 1257 /* Producer attribute addition functions. */ 1258 Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug /*dbg*/, 1259 Dwarf_P_Die /*ownerdie*/, 1260 Dwarf_Half /*attr*/, 1261 Dwarf_Unsigned /*pc_value*/, 1262 Dwarf_Signed /*sym_index*/, 1263 Dwarf_Error* /*error*/); 1264 1265 Dwarf_P_Attribute dwarf_add_AT_block(Dwarf_P_Debug /*dbg*/, 1266 Dwarf_P_Die /*ownerdie*/, 1267 Dwarf_Half /*attr*/, 1268 Dwarf_Small* /*block_data*/, 1269 Dwarf_Unsigned /*block_len*/, 1270 Dwarf_Error* /*error*/); 1271 1272 Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug /*dbg*/, 1273 Dwarf_P_Die /*ownerdie*/, 1274 Dwarf_Half /*attr*/, 1275 Dwarf_Unsigned /*pc_value*/, 1276 Dwarf_Unsigned /*sym_index*/, 1277 Dwarf_Error* /*error*/); 1278 1279 Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug /*dbg*/, 1280 Dwarf_P_Die /*ownerdie*/, 1281 Dwarf_Half /*attr*/, 1282 Dwarf_Unsigned /*value*/, 1283 Dwarf_Error* /*error*/); 1284 1285 Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug /*dbg*/, 1286 Dwarf_P_Die /*ownerdie*/, 1287 Dwarf_Half /*attr*/, 1288 Dwarf_Signed /*value*/, 1289 Dwarf_Error* /*error*/); 1290 1291 Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug /*dbg*/, 1292 Dwarf_P_Die /*ownerdie*/, 1293 Dwarf_Half /*attr*/, 1294 Dwarf_P_Die /*otherdie*/, 1295 Dwarf_Error* /*error*/); 1296 1297 Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die /*ownerdie*/, 1298 char* /*string_value*/, 1299 Dwarf_Error* /*error*/); 1300 1301 Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug /*dbg*/, 1302 Dwarf_P_Die /*ownerdie*/, 1303 Dwarf_Half /*attr*/, 1304 Dwarf_P_Expr /*loc_expr*/, 1305 Dwarf_Error* /*error*/); 1306 1307 Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug /*dbg*/, 1308 Dwarf_P_Die /*ownerdie*/, 1309 Dwarf_Half /*attr*/, 1310 char* /*string*/, 1311 Dwarf_Error* /*error*/); 1312 1313 Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug /*dbg*/, 1314 Dwarf_P_Die /*ownerdie*/, 1315 Dwarf_Half /*attr*/, 1316 Dwarf_Small /*flag*/, 1317 Dwarf_Error* /*error*/); 1318 1319 Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die /*ownerdie*/, 1320 char* /*producer_string*/, 1321 Dwarf_Error* /*error*/); 1322 1323 Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die /*ownerdie*/, 1324 Dwarf_Signed /*signed_value*/, 1325 Dwarf_Error* /*error*/); 1326 1327 Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint( 1328 Dwarf_P_Die /*ownerdie*/, 1329 Dwarf_Unsigned /*unsigned_value*/, 1330 Dwarf_Error* /*error*/); 1331 1332 Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die /*ownerdie*/, 1333 char* /*current_working_directory*/, 1334 Dwarf_Error* /*error*/); 1335 1336 Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die /*die*/, 1337 char* /*name*/, 1338 Dwarf_Error* /*error*/); 1339 1340 /* Producer line creation functions (.debug_line) */ 1341 Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug /*dbg*/, 1342 char* /*name*/, 1343 Dwarf_Error* /*error*/); 1344 1345 Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug /*dbg*/, 1346 char* /*name*/, 1347 Dwarf_Unsigned /*dir_index*/, 1348 Dwarf_Unsigned /*time_last_modified*/, 1349 Dwarf_Unsigned /*length*/, 1350 Dwarf_Error* /*error*/); 1351 1352 Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug /*dbg*/, 1353 Dwarf_Unsigned /*file_index*/, 1354 Dwarf_Addr /*code_address*/, 1355 Dwarf_Unsigned /*lineno*/, 1356 Dwarf_Signed /*column_number*/, 1357 Dwarf_Bool /*is_source_stmt_begin*/, 1358 Dwarf_Bool /*is_basic_block_begin*/, 1359 Dwarf_Error* /*error*/); 1360 1361 Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug /*dbg*/, 1362 Dwarf_Unsigned /*offset*/, 1363 Dwarf_Unsigned /*symbol_index*/, 1364 Dwarf_Error* /*error*/); 1365 1366 Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug /*dbg*/, 1367 Dwarf_Addr /*end_address*/, 1368 Dwarf_Error* /*error*/); 1369 1370 /* Producer .debug_frame functions */ 1371 Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug /*dbg*/, 1372 char* /*augmenter*/, 1373 Dwarf_Small /*code_alignent_factor*/, 1374 Dwarf_Small /*data_alignment_factor*/, 1375 Dwarf_Small /*return_address_reg*/, 1376 Dwarf_Ptr /*initialization_bytes*/, 1377 Dwarf_Unsigned /*init_byte_len*/, 1378 Dwarf_Error* /*error*/); 1379 1380 Dwarf_Unsigned dwarf_add_frame_fde( 1381 Dwarf_P_Debug /*dbg*/, 1382 Dwarf_P_Fde /*fde*/, 1383 Dwarf_P_Die /*corresponding subprogram die*/, 1384 Dwarf_Unsigned /*cie_to_use*/, 1385 Dwarf_Unsigned /*virt_addr_of_described_code*/, 1386 Dwarf_Unsigned /*length_of_code*/, 1387 Dwarf_Unsigned /*symbol_index*/, 1388 Dwarf_Error* /*error*/); 1389 1390 Dwarf_Unsigned dwarf_add_frame_fde_b( 1391 Dwarf_P_Debug /*dbg*/, 1392 Dwarf_P_Fde /*fde*/, 1393 Dwarf_P_Die /*die*/, 1394 Dwarf_Unsigned /*cie*/, 1395 Dwarf_Addr /*virt_addr*/, 1396 Dwarf_Unsigned /*code_len*/, 1397 Dwarf_Unsigned /*sym_idx*/, 1398 Dwarf_Unsigned /*sym_idx_of_end*/, 1399 Dwarf_Addr /*offset_from_end_sym*/, 1400 Dwarf_Error* /*error*/); 1401 1402 Dwarf_Unsigned dwarf_add_frame_info_b( 1403 Dwarf_P_Debug dbg /*dbg*/, 1404 Dwarf_P_Fde /*fde*/, 1405 Dwarf_P_Die /*die*/, 1406 Dwarf_Unsigned /*cie*/, 1407 Dwarf_Addr /*virt_addr*/, 1408 Dwarf_Unsigned /*code_len*/, 1409 Dwarf_Unsigned /*symidx*/, 1410 Dwarf_Unsigned /* end_symbol */, 1411 Dwarf_Addr /* offset_from_end_symbol */, 1412 Dwarf_Signed /*offset_into_exception_tables*/, 1413 Dwarf_Unsigned /*exception_table_symbol*/, 1414 Dwarf_Error* /*error*/); 1415 1416 Dwarf_Unsigned dwarf_add_frame_info( 1417 Dwarf_P_Debug dbg /*dbg*/, 1418 Dwarf_P_Fde /*fde*/, 1419 Dwarf_P_Die /*die*/, 1420 Dwarf_Unsigned /*cie*/, 1421 Dwarf_Addr /*virt_addr*/, 1422 Dwarf_Unsigned /*code_len*/, 1423 Dwarf_Unsigned /*symidx*/, 1424 Dwarf_Signed /*offset_into_exception_tables*/, 1425 Dwarf_Unsigned /*exception_table_symbol*/, 1426 Dwarf_Error* /*error*/); 1427 1428 Dwarf_P_Fde dwarf_add_fde_inst( 1429 Dwarf_P_Fde /*fde*/, 1430 Dwarf_Small /*op*/, 1431 Dwarf_Unsigned /*val1*/, 1432 Dwarf_Unsigned /*val2*/, 1433 Dwarf_Error* /*error*/); 1434 1435 Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug /*dbg*/, Dwarf_Error* /*error*/); 1436 1437 Dwarf_P_Fde dwarf_fde_cfa_offset( 1438 Dwarf_P_Fde /*fde*/, 1439 Dwarf_Unsigned /*register_number*/, 1440 Dwarf_Signed /*offset*/, 1441 Dwarf_Error* /*error*/); 1442 1443 /* die creation & addition routines */ 1444 Dwarf_P_Die dwarf_new_die( 1445 Dwarf_P_Debug /*dbg*/, 1446 Dwarf_Tag /*tag*/, 1447 Dwarf_P_Die /*parent*/, 1448 Dwarf_P_Die /*child*/, 1449 Dwarf_P_Die /*left */, 1450 Dwarf_P_Die /*right*/, 1451 Dwarf_Error* /*error*/); 1452 1453 Dwarf_Unsigned dwarf_add_die_to_debug( 1454 Dwarf_P_Debug /*dbg*/, 1455 Dwarf_P_Die /*die*/, 1456 Dwarf_Error* /*error*/); 1457 1458 Dwarf_P_Die dwarf_die_link( 1459 Dwarf_P_Die /*die*/, 1460 Dwarf_P_Die /*parent*/, 1461 Dwarf_P_Die /*child*/, 1462 Dwarf_P_Die /*left*/, 1463 Dwarf_P_Die /*right*/, 1464 Dwarf_Error* /*error*/); 1465 1466 void dwarf_dealloc_compressed_block( 1467 Dwarf_P_Debug, 1468 void * 1469 ); 1470 1471 void dwarf_dealloc_uncompressed_block( 1472 Dwarf_Debug, 1473 void * 1474 ); 1475 1476 void * dwarf_compress_integer_block( 1477 Dwarf_P_Debug, /* dbg */ 1478 Dwarf_Bool, /* signed==true (or unsigned) */ 1479 Dwarf_Small, /* size of integer units: 8, 16, 32, 64 */ 1480 void*, /* data */ 1481 Dwarf_Unsigned, /* number of elements */ 1482 Dwarf_Unsigned*, /* number of bytes in output block */ 1483 Dwarf_Error* /* error */ 1484 ); 1485 1486 void * dwarf_uncompress_integer_block( 1487 Dwarf_Debug, /* dbg */ 1488 Dwarf_Bool, /* signed==true (or unsigned) */ 1489 Dwarf_Small, /* size of integer units: 8, 16, 32, 64 */ 1490 void*, /* data */ 1491 Dwarf_Unsigned, /* number of bytes in input */ 1492 Dwarf_Unsigned*, /* number of units in output block */ 1493 Dwarf_Error* /* error */ 1494 ); 1495 1496 /* Operations to create location expressions. */ 1497 Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug /*dbg*/, Dwarf_Error* /*error*/); 1498 1499 Dwarf_Unsigned dwarf_add_expr_gen( 1500 Dwarf_P_Expr /*expr*/, 1501 Dwarf_Small /*opcode*/, 1502 Dwarf_Unsigned /*val1*/, 1503 Dwarf_Unsigned /*val2*/, 1504 Dwarf_Error* /*error*/); 1505 1506 Dwarf_Unsigned dwarf_add_expr_addr( 1507 Dwarf_P_Expr /*expr*/, 1508 Dwarf_Unsigned /*addr*/, 1509 Dwarf_Signed /*sym_index*/, 1510 Dwarf_Error* /*error*/); 1511 1512 Dwarf_Unsigned dwarf_add_expr_addr_b( 1513 Dwarf_P_Expr /*expr*/, 1514 Dwarf_Unsigned /*addr*/, 1515 Dwarf_Unsigned /*sym_index*/, 1516 Dwarf_Error* /*error*/); 1517 1518 Dwarf_Unsigned dwarf_expr_current_offset( 1519 Dwarf_P_Expr /*expr*/, 1520 Dwarf_Error* /*error*/); 1521 1522 Dwarf_Addr dwarf_expr_into_block( 1523 Dwarf_P_Expr /*expr*/, 1524 Dwarf_Unsigned* /*length*/, 1525 Dwarf_Error* /*error*/); 1526 1527 Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug /*dbg*/, 1528 Dwarf_Addr /*begin_address*/, 1529 Dwarf_Unsigned /*length*/, 1530 Dwarf_Signed /*symbol_index*/, 1531 Dwarf_Error* /*error*/); 1532 1533 Dwarf_Unsigned dwarf_add_arange_b( 1534 Dwarf_P_Debug /*dbg*/, 1535 Dwarf_Addr /*begin_address*/, 1536 Dwarf_Unsigned /*length*/, 1537 Dwarf_Unsigned /*symbol_index*/, 1538 Dwarf_Unsigned /*end_symbol_index*/, 1539 Dwarf_Addr /*offset_from_end_symbol*/, 1540 Dwarf_Error * /*error*/); 1541 1542 Dwarf_Unsigned dwarf_add_pubname( 1543 Dwarf_P_Debug /*dbg*/, 1544 Dwarf_P_Die /*die*/, 1545 char* /*pubname_name*/, 1546 Dwarf_Error* /*error*/); 1547 1548 Dwarf_Unsigned dwarf_add_funcname( 1549 Dwarf_P_Debug /*dbg*/, 1550 Dwarf_P_Die /*die*/, 1551 char* /*func_name*/, 1552 Dwarf_Error* /*error*/); 1553 1554 Dwarf_Unsigned dwarf_add_typename( 1555 Dwarf_P_Debug /*dbg*/, 1556 Dwarf_P_Die /*die*/, 1557 char* /*type_name*/, 1558 Dwarf_Error* /*error*/); 1559 1560 Dwarf_Unsigned dwarf_add_varname( 1561 Dwarf_P_Debug /*dbg*/, 1562 Dwarf_P_Die /*die*/, 1563 char* /*var_name*/, 1564 Dwarf_Error* /*error*/); 1565 1566 Dwarf_Unsigned dwarf_add_weakname( 1567 Dwarf_P_Debug /*dbg*/, 1568 Dwarf_P_Die /*die*/, 1569 char* /*weak_name*/, 1570 Dwarf_Error* /*error*/); 1571 1572 /* .debug_macinfo producer functions 1573 Functions must be called in right order: the section is output 1574 In the order these are presented. 1575 */ 1576 int dwarf_def_macro(Dwarf_P_Debug /*dbg*/, 1577 Dwarf_Unsigned /*line*/, 1578 char * /*macname, with (arglist), no space before (*/, 1579 char * /*macvalue*/, 1580 Dwarf_Error* /*error*/); 1581 1582 int dwarf_undef_macro(Dwarf_P_Debug /*dbg*/, 1583 Dwarf_Unsigned /*line*/, 1584 char * /*macname, no arglist, of course*/, 1585 Dwarf_Error* /*error*/); 1586 1587 int dwarf_start_macro_file(Dwarf_P_Debug /*dbg*/, 1588 Dwarf_Unsigned /*fileindex*/, 1589 Dwarf_Unsigned /*linenumber*/, 1590 Dwarf_Error* /*error*/); 1591 1592 int dwarf_end_macro_file(Dwarf_P_Debug /*dbg*/, 1593 Dwarf_Error* /*error*/); 1594 1595 int dwarf_vendor_ext(Dwarf_P_Debug /*dbg*/, 1596 Dwarf_Unsigned /*constant*/, 1597 char * /*string*/, 1598 Dwarf_Error* /*error*/); 1599 1600 /* end macinfo producer functions */ 1601 1602 1603 void dwarf_p_dealloc(void* /*space*/, Dwarf_Unsigned /*type*/); 1604 1605 int dwarf_attr_offset(Dwarf_Die /*die*/, 1606 Dwarf_Attribute /*attr of above die*/, 1607 Dwarf_Off * /*returns offset thru this ptr */, 1608 Dwarf_Error * /*error*/); 1609 1610 1611 #ifdef __cplusplus 1612 } 1613 #endif 1614 #endif /* _LIBDWARF_H */ 1615 1616