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