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