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