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