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