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