PageRenderTime 70ms CodeModel.GetById 33ms RepoModel.GetById 1ms app.codeStats 0ms

/osprey/libdwarf/libdwarf/libdwarf.h

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