1*9262d0f3Schristos /*	$NetBSD: libdwarf.h,v 1.3 2016/02/20 02:43:41 christos Exp $	*/
24bd933feSchristos 
33ae86eb5Schristos /*-
43ae86eb5Schristos  * Copyright (c) 2007 John Birrell (jb@freebsd.org)
5*9262d0f3Schristos  * Copyright (c) 2009-2011,2014 Kai Wang
63ae86eb5Schristos  * All rights reserved.
73ae86eb5Schristos  *
83ae86eb5Schristos  * Redistribution and use in source and binary forms, with or without
93ae86eb5Schristos  * modification, are permitted provided that the following conditions
103ae86eb5Schristos  * are met:
113ae86eb5Schristos  * 1. Redistributions of source code must retain the above copyright
123ae86eb5Schristos  *    notice, this list of conditions and the following disclaimer.
133ae86eb5Schristos  * 2. Redistributions in binary form must reproduce the above copyright
143ae86eb5Schristos  *    notice, this list of conditions and the following disclaimer in the
153ae86eb5Schristos  *    documentation and/or other materials provided with the distribution.
163ae86eb5Schristos  *
173ae86eb5Schristos  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
183ae86eb5Schristos  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
193ae86eb5Schristos  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
203ae86eb5Schristos  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
213ae86eb5Schristos  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
223ae86eb5Schristos  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
233ae86eb5Schristos  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
243ae86eb5Schristos  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
253ae86eb5Schristos  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
263ae86eb5Schristos  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
273ae86eb5Schristos  * SUCH DAMAGE.
283ae86eb5Schristos  *
29*9262d0f3Schristos  * Id: libdwarf.h 3295 2016-01-08 22:08:10Z jkoshy
303ae86eb5Schristos  */
313ae86eb5Schristos 
323ae86eb5Schristos #ifndef	_LIBDWARF_H_
333ae86eb5Schristos #define	_LIBDWARF_H_
343ae86eb5Schristos 
353ae86eb5Schristos #include <libelf.h>
363ae86eb5Schristos 
373ae86eb5Schristos typedef int		Dwarf_Bool;
38*9262d0f3Schristos typedef uint64_t	Dwarf_Off;
393ae86eb5Schristos typedef uint64_t	Dwarf_Unsigned;
403ae86eb5Schristos typedef uint16_t	Dwarf_Half;
413ae86eb5Schristos typedef uint8_t		Dwarf_Small;
423ae86eb5Schristos typedef int64_t		Dwarf_Signed;
433ae86eb5Schristos typedef uint64_t	Dwarf_Addr;
443ae86eb5Schristos typedef void		*Dwarf_Ptr;
453ae86eb5Schristos 
463ae86eb5Schristos typedef struct _Dwarf_Abbrev	*Dwarf_Abbrev;
473ae86eb5Schristos typedef struct _Dwarf_Arange	*Dwarf_Arange;
483ae86eb5Schristos typedef struct _Dwarf_ArangeSet	*Dwarf_ArangeSet;
493ae86eb5Schristos typedef struct _Dwarf_Attribute	*Dwarf_Attribute;
503ae86eb5Schristos typedef struct _Dwarf_Attribute *Dwarf_P_Attribute;
513ae86eb5Schristos typedef struct _Dwarf_AttrDef	*Dwarf_AttrDef;
523ae86eb5Schristos typedef struct _Dwarf_Cie	*Dwarf_Cie;
533ae86eb5Schristos typedef struct _Dwarf_Cie	*Dwarf_P_Cie;
543ae86eb5Schristos typedef struct _Dwarf_Debug	*Dwarf_Debug;
553ae86eb5Schristos typedef struct _Dwarf_Debug	*Dwarf_P_Debug;
563ae86eb5Schristos typedef struct _Dwarf_Die	*Dwarf_Die;
573ae86eb5Schristos typedef struct _Dwarf_Die	*Dwarf_P_Die;
583ae86eb5Schristos typedef struct _Dwarf_Fde	*Dwarf_Fde;
593ae86eb5Schristos typedef struct _Dwarf_Fde	*Dwarf_P_Fde;
603ae86eb5Schristos typedef struct _Dwarf_FrameSec	*Dwarf_FrameSec;
613ae86eb5Schristos typedef struct _Dwarf_Line	*Dwarf_Line;
623ae86eb5Schristos typedef struct _Dwarf_LineFile	*Dwarf_LineFile;
633ae86eb5Schristos typedef struct _Dwarf_LineInfo	*Dwarf_LineInfo;
643ae86eb5Schristos typedef struct _Dwarf_MacroSet	*Dwarf_MacroSet;
653ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_NamePair;
663ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_Func;
673ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_Global;
683ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_Type;
693ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_Var;
703ae86eb5Schristos typedef struct _Dwarf_NamePair	*Dwarf_Weak;
713ae86eb5Schristos typedef struct _Dwarf_NameTbl	*Dwarf_NameTbl;
723ae86eb5Schristos typedef struct _Dwarf_NameSec	*Dwarf_NameSec;
733ae86eb5Schristos typedef struct _Dwarf_P_Expr	*Dwarf_P_Expr;
743ae86eb5Schristos typedef struct _Dwarf_Rangelist	*Dwarf_Rangelist;
753ae86eb5Schristos 
763ae86eb5Schristos typedef enum {
773ae86eb5Schristos 	DW_OBJECT_MSB,
783ae86eb5Schristos 	DW_OBJECT_LSB
793ae86eb5Schristos } Dwarf_Endianness;
803ae86eb5Schristos 
813ae86eb5Schristos typedef struct {
823ae86eb5Schristos 	Dwarf_Addr addr;
833ae86eb5Schristos 	Dwarf_Unsigned size;
843ae86eb5Schristos 	const char *name;
853ae86eb5Schristos } Dwarf_Obj_Access_Section;
863ae86eb5Schristos 
873ae86eb5Schristos typedef struct {
883ae86eb5Schristos 	int (*get_section_info)(void *_obj, Dwarf_Half _index,
893ae86eb5Schristos 	    Dwarf_Obj_Access_Section *_ret_section, int *_error);
903ae86eb5Schristos 	Dwarf_Endianness (*get_byte_order)(void *_obj);
913ae86eb5Schristos 	Dwarf_Small (*get_length_size)(void *_obj);
923ae86eb5Schristos 	Dwarf_Small (*get_pointer_size)(void *_obj);
933ae86eb5Schristos 	Dwarf_Unsigned (*get_section_count)(void *_obj);
943ae86eb5Schristos 	int (*load_section)(void *_obj, Dwarf_Half _index,
953ae86eb5Schristos 	    Dwarf_Small **_ret_data, int *_error);
963ae86eb5Schristos } Dwarf_Obj_Access_Methods;
973ae86eb5Schristos 
983ae86eb5Schristos typedef struct {
993ae86eb5Schristos 	void *object;
1003ae86eb5Schristos 	const Dwarf_Obj_Access_Methods *methods;
1013ae86eb5Schristos } Dwarf_Obj_Access_Interface;
1023ae86eb5Schristos 
1033ae86eb5Schristos typedef int (*Dwarf_Callback_Func)(char *_name, int _size,
1043ae86eb5Schristos     Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link,
1053ae86eb5Schristos     Dwarf_Unsigned _info, int *_index, int *_error);
1063ae86eb5Schristos 
1073ae86eb5Schristos typedef int (*Dwarf_Callback_Func_b)(char *_name, int _size,
1083ae86eb5Schristos     Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link,
1093ae86eb5Schristos     Dwarf_Unsigned _info, Dwarf_Unsigned *_index, int *_error);
1103ae86eb5Schristos 
1113ae86eb5Schristos typedef Dwarf_Unsigned Dwarf_Tag;
1123ae86eb5Schristos 
1133ae86eb5Schristos typedef struct {
1143ae86eb5Schristos         Dwarf_Small	lr_atom;
1153ae86eb5Schristos         Dwarf_Unsigned	lr_number;
1163ae86eb5Schristos 	Dwarf_Unsigned	lr_number2;
1173ae86eb5Schristos 	Dwarf_Unsigned	lr_offset;
1183ae86eb5Schristos } Dwarf_Loc;
1193ae86eb5Schristos 
1203ae86eb5Schristos typedef struct {
1213ae86eb5Schristos 	Dwarf_Addr      ld_lopc;
1223ae86eb5Schristos 	Dwarf_Addr      ld_hipc;
1233ae86eb5Schristos 	Dwarf_Half      ld_cents;
1243ae86eb5Schristos 	Dwarf_Loc	*ld_s;
1253ae86eb5Schristos } Dwarf_Locdesc;
1263ae86eb5Schristos 
1273ae86eb5Schristos typedef struct {
1283ae86eb5Schristos 	char signature[8];
1293ae86eb5Schristos } Dwarf_Sig8;
1303ae86eb5Schristos 
1313ae86eb5Schristos typedef struct {
1323ae86eb5Schristos 	Dwarf_Unsigned	bl_len;
1333ae86eb5Schristos 	Dwarf_Ptr	bl_data;
1343ae86eb5Schristos } Dwarf_Block;
1353ae86eb5Schristos 
1363ae86eb5Schristos enum Dwarf_Ranges_Entry_Type {
1373ae86eb5Schristos 	DW_RANGES_ENTRY,
1383ae86eb5Schristos 	DW_RANGES_ADDRESS_SELECTION,
1393ae86eb5Schristos 	DW_RANGES_END
1403ae86eb5Schristos };
1413ae86eb5Schristos 
1423ae86eb5Schristos typedef struct {
1433ae86eb5Schristos 	Dwarf_Unsigned	dwr_addr1;
1443ae86eb5Schristos 	Dwarf_Unsigned	dwr_addr2;
1453ae86eb5Schristos 	enum Dwarf_Ranges_Entry_Type dwr_type;
1463ae86eb5Schristos } Dwarf_Ranges;
1473ae86eb5Schristos 
1483ae86eb5Schristos enum Dwarf_Form_Class {
1493ae86eb5Schristos 	DW_FORM_CLASS_UNKNOWN,
1503ae86eb5Schristos 	DW_FORM_CLASS_ADDRESS,
1513ae86eb5Schristos 	DW_FORM_CLASS_BLOCK,
1523ae86eb5Schristos 	DW_FORM_CLASS_CONSTANT,
1533ae86eb5Schristos 	DW_FORM_CLASS_EXPRLOC,
1543ae86eb5Schristos 	DW_FORM_CLASS_FLAG,
1553ae86eb5Schristos 	DW_FORM_CLASS_LINEPTR,
1563ae86eb5Schristos 	DW_FORM_CLASS_LOCLISTPTR,
1573ae86eb5Schristos 	DW_FORM_CLASS_MACPTR,
1583ae86eb5Schristos 	DW_FORM_CLASS_RANGELISTPTR,
1593ae86eb5Schristos 	DW_FORM_CLASS_REFERENCE,
1603ae86eb5Schristos 	DW_FORM_CLASS_STRING
1613ae86eb5Schristos };
1623ae86eb5Schristos 
1633ae86eb5Schristos #ifndef	DW_FRAME_HIGHEST_NORMAL_REGISTER
1643ae86eb5Schristos #define	DW_FRAME_HIGHEST_NORMAL_REGISTER 63
1653ae86eb5Schristos #endif
1663ae86eb5Schristos 
1673ae86eb5Schristos #define	DW_FRAME_RA_COL		(DW_FRAME_HIGHEST_NORMAL_REGISTER + 1)
1683ae86eb5Schristos #define	DW_FRAME_STATIC_LINK	(DW_FRAME_HIGHEST_NORMAL_REGISTER + 2)
1693ae86eb5Schristos 
1703ae86eb5Schristos #ifndef	DW_FRAME_LAST_REG_NUM
1713ae86eb5Schristos #define DW_FRAME_LAST_REG_NUM	(DW_FRAME_HIGHEST_NORMAL_REGISTER + 3)
1723ae86eb5Schristos #endif
1733ae86eb5Schristos 
1743ae86eb5Schristos #ifndef	DW_FRAME_REG_INITIAL_VALUE
1753ae86eb5Schristos #define	DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL
1763ae86eb5Schristos #endif
1773ae86eb5Schristos 
1783ae86eb5Schristos #define	DW_FRAME_UNDEFINED_VAL		1034
1793ae86eb5Schristos #define DW_FRAME_SAME_VAL		1035
1803ae86eb5Schristos #define DW_FRAME_CFA_COL3		1436
1813ae86eb5Schristos 
1823ae86eb5Schristos #define	DW_EXPR_OFFSET 0
1833ae86eb5Schristos #define	DW_EXPR_VAL_OFFSET 1
1843ae86eb5Schristos #define	DW_EXPR_EXPRESSION 2
1853ae86eb5Schristos #define	DW_EXPR_VAL_EXPRESSION 3
1863ae86eb5Schristos 
1873ae86eb5Schristos /*
1883ae86eb5Schristos  * Frame operation only for DWARF 2.
1893ae86eb5Schristos  */
1903ae86eb5Schristos 
1913ae86eb5Schristos #define DW_FRAME_CFA_COL 0
1923ae86eb5Schristos 
1933ae86eb5Schristos typedef struct {
1943ae86eb5Schristos 	Dwarf_Small	fp_base_op;
1953ae86eb5Schristos 	Dwarf_Small	fp_extended_op;
1963ae86eb5Schristos 	Dwarf_Half	fp_register;
1973ae86eb5Schristos 	Dwarf_Signed	fp_offset;
1983ae86eb5Schristos 	Dwarf_Off	fp_instr_offset;
1993ae86eb5Schristos } Dwarf_Frame_Op;
2003ae86eb5Schristos 
2013ae86eb5Schristos #ifndef	DW_REG_TABLE_SIZE
2023ae86eb5Schristos #define	DW_REG_TABLE_SIZE	66
2033ae86eb5Schristos #endif
2043ae86eb5Schristos 
2053ae86eb5Schristos typedef struct {
2063ae86eb5Schristos 	struct {
2073ae86eb5Schristos 		Dwarf_Small	dw_offset_relevant;
2083ae86eb5Schristos 		Dwarf_Half	dw_regnum;
2093ae86eb5Schristos 		Dwarf_Addr	dw_offset;
2103ae86eb5Schristos 	} rules[DW_REG_TABLE_SIZE];
2113ae86eb5Schristos } Dwarf_Regtable;
2123ae86eb5Schristos 
2133ae86eb5Schristos /*
2143ae86eb5Schristos  * Frame operation for DWARF 3 and DWARF 2.
2153ae86eb5Schristos  */
2163ae86eb5Schristos 
2173ae86eb5Schristos typedef struct {
2183ae86eb5Schristos 	Dwarf_Small	fp_base_op;
2193ae86eb5Schristos 	Dwarf_Small	fp_extended_op;
2203ae86eb5Schristos 	Dwarf_Half	fp_register;
2213ae86eb5Schristos 	Dwarf_Unsigned	fp_offset_or_block_len;
2223ae86eb5Schristos 	Dwarf_Small	*fp_expr_block;
2233ae86eb5Schristos 	Dwarf_Off	fp_instr_offset;
2243ae86eb5Schristos } Dwarf_Frame_Op3;
2253ae86eb5Schristos 
2263ae86eb5Schristos typedef struct {
2273ae86eb5Schristos 	Dwarf_Small	dw_offset_relevant;
2283ae86eb5Schristos 	Dwarf_Small	dw_value_type;
2293ae86eb5Schristos 	Dwarf_Half	dw_regnum;
2303ae86eb5Schristos 	Dwarf_Unsigned	dw_offset_or_block_len;
2313ae86eb5Schristos 	Dwarf_Ptr	dw_block_ptr;
2323ae86eb5Schristos } Dwarf_Regtable_Entry3;
2333ae86eb5Schristos 
2343ae86eb5Schristos typedef struct {
2353ae86eb5Schristos 	Dwarf_Regtable_Entry3	rt3_cfa_rule;
2363ae86eb5Schristos 	Dwarf_Half		rt3_reg_table_size;
2373ae86eb5Schristos 	Dwarf_Regtable_Entry3	*rt3_rules;
2383ae86eb5Schristos } Dwarf_Regtable3;
2393ae86eb5Schristos 
2403ae86eb5Schristos typedef struct {
2413ae86eb5Schristos 	Dwarf_Off	dmd_offset;
2423ae86eb5Schristos 	Dwarf_Small	dmd_type;
2433ae86eb5Schristos 	Dwarf_Signed	dmd_lineno;
2443ae86eb5Schristos 	Dwarf_Signed	dmd_fileindex;
2453ae86eb5Schristos 	char		*dmd_macro;
2463ae86eb5Schristos } Dwarf_Macro_Details;
2473ae86eb5Schristos 
2483ae86eb5Schristos /*
2493ae86eb5Schristos  * Symbols denoting allocation types, for use with dwarf_dealloc(3).
2503ae86eb5Schristos  */
2513ae86eb5Schristos 
2523ae86eb5Schristos enum Dwarf_Allocation_Type {
2533ae86eb5Schristos 	DW_DLA_ABBREV,
2543ae86eb5Schristos 	DW_DLA_ADDR,
2553ae86eb5Schristos 	DW_DLA_ARANGE,
2563ae86eb5Schristos 	DW_DLA_ATTR,
2573ae86eb5Schristos 	DW_DLA_BLOCK,
2583ae86eb5Schristos 	DW_DLA_BOUNDS,
2593ae86eb5Schristos 	DW_DLA_CIE,
2603ae86eb5Schristos 	DW_DLA_DEBUG,
2613ae86eb5Schristos 	DW_DLA_DIE,
2623ae86eb5Schristos 	DW_DLA_ELLIST,
2633ae86eb5Schristos 	DW_DLA_ERROR,
2643ae86eb5Schristos 	DW_DLA_FDE,
2653ae86eb5Schristos 	DW_DLA_FRAME_BLOCK,
2663ae86eb5Schristos 	DW_DLA_FRAME_OP,
2673ae86eb5Schristos 	DW_DLA_FUNC,
2683ae86eb5Schristos 	DW_DLA_GLOBAL,
2693ae86eb5Schristos 	DW_DLA_LINE,
2703ae86eb5Schristos 	DW_DLA_LINEBUF,
2713ae86eb5Schristos 	DW_DLA_LIST,
2723ae86eb5Schristos 	DW_DLA_LOC,
2733ae86eb5Schristos 	DW_DLA_LOCDESC,
2743ae86eb5Schristos 	DW_DLA_LOC_BLOCK,
2753ae86eb5Schristos 	DW_DLA_RANGES,
2763ae86eb5Schristos 	DW_DLA_STRING,
2773ae86eb5Schristos 	DW_DLA_SUBSCR,
2783ae86eb5Schristos 	DW_DLA_TYPE,
2793ae86eb5Schristos 	DW_DLA_TYPENAME,
2803ae86eb5Schristos 	DW_DLA_VAR,
2813ae86eb5Schristos 	DW_DLA_WEAK
2823ae86eb5Schristos };
2833ae86eb5Schristos 
2843ae86eb5Schristos /*
2853ae86eb5Schristos  * Relocation Type.
2863ae86eb5Schristos  */
2873ae86eb5Schristos enum Dwarf_Rel_Type {
2883ae86eb5Schristos 	dwarf_drt_none = 0,
2893ae86eb5Schristos 	dwarf_drt_data_reloc,
2903ae86eb5Schristos 	dwarf_drt_segment_rel,
2913ae86eb5Schristos 	dwarf_drt_first_of_length_pair,
2923ae86eb5Schristos 	dwarf_drt_second_of_length_pair
2933ae86eb5Schristos };
2943ae86eb5Schristos 
2953ae86eb5Schristos /*
2963ae86eb5Schristos  * Relocation Entry.
2973ae86eb5Schristos  */
2983ae86eb5Schristos typedef struct Dwarf_Relocation_Data_s {
2993ae86eb5Schristos 	unsigned char drd_type;
3003ae86eb5Schristos 	unsigned char drd_length;
3013ae86eb5Schristos 	Dwarf_Unsigned drd_offset;
3023ae86eb5Schristos 	Dwarf_Unsigned drd_symbol_index;
3033ae86eb5Schristos } *Dwarf_Relocation_Data;
3043ae86eb5Schristos 
3053ae86eb5Schristos #define	DWARF_DRD_BUFFER_VERSION	2
3063ae86eb5Schristos 
3073ae86eb5Schristos /*
3083ae86eb5Schristos  * Error numbers which are specific to this implementation.
3093ae86eb5Schristos  */
3103ae86eb5Schristos enum {
3113ae86eb5Schristos 	DW_DLE_NONE,			/* No error. */
3123ae86eb5Schristos 	DW_DLE_ERROR,			/* An error! */
3133ae86eb5Schristos 	DW_DLE_ARGUMENT,		/* Invalid argument. */
3143ae86eb5Schristos 	DW_DLE_DEBUG_INFO_NULL,		/* Debug info NULL. */
3153ae86eb5Schristos 	DW_DLE_NO_ENTRY,		/* No entry. */
3163ae86eb5Schristos 	DW_DLE_MEMORY,			/* Insufficient memory. */
3173ae86eb5Schristos 	DW_DLE_ELF,			/* ELF error. */
3183ae86eb5Schristos 	DW_DLE_CU_LENGTH_ERROR,		/* Invalid compilation unit data. */
3193ae86eb5Schristos 	DW_DLE_VERSION_STAMP_ERROR,	/* Invalid version. */
3203ae86eb5Schristos 	DW_DLE_DEBUG_ABBREV_NULL,	/* Abbrev not found. */
3213ae86eb5Schristos 	DW_DLE_DIE_NO_CU_CONTEXT,	/* No current compilation unit. */
3223ae86eb5Schristos 	DW_DLE_LOC_EXPR_BAD,		/* Invalid location expression. */
3233ae86eb5Schristos 	DW_DLE_EXPR_LENGTH_BAD,		/* Invalid DWARF expression. */
3243ae86eb5Schristos 	DW_DLE_DEBUG_LOC_SECTION_SHORT,	/* Loclist section too short. */
3253ae86eb5Schristos 	DW_DLE_ATTR_FORM_BAD,		/* Invalid attribute form. */
3263ae86eb5Schristos 	DW_DLE_DEBUG_LINE_LENGTH_BAD,	/* Line info section too short. */
3273ae86eb5Schristos 	DW_DLE_LINE_FILE_NUM_BAD,	/* Invalid file number. */
3283ae86eb5Schristos 	DW_DLE_DIR_INDEX_BAD,		/* Invalid dir index. */
3293ae86eb5Schristos 	DW_DLE_DEBUG_FRAME_LENGTH_BAD,	/* Frame section too short. */
3303ae86eb5Schristos 	DW_DLE_NO_CIE_FOR_FDE,		/* CIE not found for certain FDE. */
3313ae86eb5Schristos 	DW_DLE_FRAME_AUGMENTATION_UNKNOWN, /* Unknown CIE augmentation. */
3323ae86eb5Schristos 	DW_DLE_FRAME_INSTR_EXEC_ERROR,	/* Frame instruction exec error. */
3333ae86eb5Schristos 	DW_DLE_FRAME_VERSION_BAD,	/* Invalid frame section version. */
3343ae86eb5Schristos 	DW_DLE_FRAME_TABLE_COL_BAD,	/* Invalid table column. */
3353ae86eb5Schristos 	DW_DLE_DF_REG_NUM_TOO_HIGH,	/* Insufficient regtable space. */
3363ae86eb5Schristos 	DW_DLE_PC_NOT_IN_FDE_RANGE,	/* PC requested not in the FDE range. */
3373ae86eb5Schristos 	DW_DLE_ARANGE_OFFSET_BAD,	/* Invalid arange offset. */
3383ae86eb5Schristos 	DW_DLE_DEBUG_MACRO_INCONSISTENT,/* Invalid macinfo data. */
3393ae86eb5Schristos 	DW_DLE_ELF_SECT_ERR,		/* Application callback failed. */
3403ae86eb5Schristos 	DW_DLE_NUM			/* Max error number. */
3413ae86eb5Schristos };
3423ae86eb5Schristos 
3433ae86eb5Schristos /*
3443ae86eb5Schristos  * Mapping of SGI libdwarf error codes for comptibility.
3453ae86eb5Schristos  */
3463ae86eb5Schristos #define	DW_DLE_DBG_ALLOC			DW_DLE_MEMORY
3473ae86eb5Schristos #define	DW_DLE_ALLOC_FAIL			DW_DLE_MEMORY
3483ae86eb5Schristos #define	DW_DLE_SECT_ALLOC			DW_DLE_MEMORY
3493ae86eb5Schristos #define	DW_DLE_FILE_ENTRY_ALLOC			DW_DLE_MEMORY
3503ae86eb5Schristos #define	DW_DLE_LINE_ALLOC			DW_DLE_MEMORY
3513ae86eb5Schristos #define	DW_DLE_FPGM_ALLOC			DW_DLE_MEMORY
3523ae86eb5Schristos #define	DW_DLE_INCDIR_ALLOC			DW_DLE_MEMORY
3533ae86eb5Schristos #define	DW_DLE_STRING_ALLOC			DW_DLE_MEMORY
3543ae86eb5Schristos #define	DW_DLE_CHUNK_ALLOC			DW_DLE_MEMORY
3553ae86eb5Schristos #define	DW_DLE_CIE_ALLOC			DW_DLE_MEMORY
3563ae86eb5Schristos #define	DW_DLE_FDE_ALLOC			DW_DLE_MEMORY
3573ae86eb5Schristos #define	DW_DLE_CIE_OFFS_ALLOC			DW_DLE_MEMORY
3583ae86eb5Schristos #define	DW_DLE_DIE_ALLOC			DW_DLE_MEMORY
3593ae86eb5Schristos #define	DW_DLE_ATTR_ALLOC			DW_DLE_MEMORY
3603ae86eb5Schristos #define	DW_DLE_ABBREV_ALLOC			DW_DLE_MEMORY
3613ae86eb5Schristos #define	DW_DLE_ADDR_ALLOC			DW_DLE_MEMORY
3623ae86eb5Schristos #define	DW_DLE_REL_ALLOC			DW_DLE_MEMORY
3633ae86eb5Schristos #define	DW_DLE_MACINFO_MALLOC_FAIL		DW_DLE_MEMORY
3643ae86eb5Schristos #define	DW_DLE_DEBUG_MACRO_MALLOC_SPACE		DW_DLE_MEMORY
3653ae86eb5Schristos #define	DW_DLE_DF_ALLOC_FAIL			DW_DLE_MEMORY
3663ae86eb5Schristos #define	DW_DLE_RELOC_SECTION_MALLOC_FAIL	DW_DLE_MEMORY
3673ae86eb5Schristos #define	DW_DLE_DBG_NULL				DW_DLE_ARGUMENT
3683ae86eb5Schristos #define	DW_DLE_DIE_NULL				DW_DLE_ARGUMENT
3693ae86eb5Schristos #define	DW_DLE_FDE_NULL				DW_DLE_ARGUMENT
3703ae86eb5Schristos #define	DW_DLE_CIE_NULL				DW_DLE_ARGUMENT
3713ae86eb5Schristos #define	DW_DLE_ATTR_NULL			DW_DLE_ARGUMENT
3723ae86eb5Schristos #define	DW_DLE_GLOBAL_NULL			DW_DLE_ARGUMENT
3733ae86eb5Schristos #define	DW_DLE_ARANGES_NULL			DW_DLE_ARGUMENT
3743ae86eb5Schristos #define	DW_DLE_ARANGE_NULL			DW_DLE_ARGUMENT
3753ae86eb5Schristos #define	DW_DLE_EXPR_NULL			DW_DLE_ARGUMENT
3763ae86eb5Schristos #define	DW_DLE_FUNC_NULL			DW_DLE_ARGUMENT
3773ae86eb5Schristos #define	DW_DLE_TYPE_NULL			DW_DLE_ARGUMENT
3783ae86eb5Schristos #define	DW_DLE_VAR_NULL				DW_DLE_ARGUMENT
3793ae86eb5Schristos #define	DW_DLE_WEAK_NULL			DW_DLE_ARGUMENT
3803ae86eb5Schristos #define	DW_DLE_ELF_BEGIN_ERROR			DW_DLE_ELF
3813ae86eb5Schristos #define	DW_DLE_ELF_GETEHDR_ERROR		DW_DLE_ELF
3823ae86eb5Schristos #define	DW_DLE_ELF_GETSHDR_ERROR		DW_DLE_ELF
3833ae86eb5Schristos #define	DW_DLE_ELF_STRPTR_ERROR			DW_DLE_ELF
3843ae86eb5Schristos #define	DW_DLE_ELF_SECT_ERROR			DW_DLE_ELF
3853ae86eb5Schristos #define	DW_DLE_ELF_GETIDENT_ERROR		DW_DLE_ELF
3863ae86eb5Schristos 
3873ae86eb5Schristos typedef struct _Dwarf_Error {
3883ae86eb5Schristos 	int		err_error;	/* DWARF error. */
3893ae86eb5Schristos 	int		err_elferror;	/* ELF error. */
3903ae86eb5Schristos 	const char	*err_func;	/* Function name where error occurred. */
3913ae86eb5Schristos 	int		err_line;	/* Line number where error occurred. */
3923ae86eb5Schristos 	char		err_msg[1024];	/* Formatted error message. */
3933ae86eb5Schristos } Dwarf_Error;
3943ae86eb5Schristos 
3953ae86eb5Schristos /*
3963ae86eb5Schristos  * Dwarf error handler.
3973ae86eb5Schristos  */
3983ae86eb5Schristos typedef void (*Dwarf_Handler)(Dwarf_Error, Dwarf_Ptr);
3993ae86eb5Schristos 
4003ae86eb5Schristos #define	dwarf_errno(error)	error.err_error
4013ae86eb5Schristos #define	dwarf_errmsg(error)	dwarf_errmsg_(&error)
4023ae86eb5Schristos 
4033ae86eb5Schristos /*
4043ae86eb5Schristos  * Return values which have to be compatible with other
4053ae86eb5Schristos  * implementations of libdwarf.
4063ae86eb5Schristos  */
4073ae86eb5Schristos #define DW_DLV_NO_ENTRY		-1
4083ae86eb5Schristos #define DW_DLV_OK		0
4093ae86eb5Schristos #define	DW_DLV_ERROR		1
4103ae86eb5Schristos #define DW_DLV_BADADDR		NULL
4113ae86eb5Schristos #define DW_DLV_NOCOUNT		((Dwarf_Signed) -1)
4123ae86eb5Schristos 
4133ae86eb5Schristos /*
4143ae86eb5Schristos  * Access modes.
4153ae86eb5Schristos  */
4163ae86eb5Schristos #define DW_DLC_READ        	0x0001
4173ae86eb5Schristos #define DW_DLC_WRITE		0x0002
4183ae86eb5Schristos #define	DW_DLC_RDWR		0x0004
4193ae86eb5Schristos 
4203ae86eb5Schristos /*
4213ae86eb5Schristos  * Flags used by libdwarf producer.
4223ae86eb5Schristos  */
4233ae86eb5Schristos #define DW_DLC_SIZE_64			0x40000000
4243ae86eb5Schristos #define DW_DLC_SIZE_32			0x20000000
4253ae86eb5Schristos #define DW_DLC_OFFSET_SIZE_64		0x10000000
4263ae86eb5Schristos #define DW_DLC_ISA_MIPS			0x80000000
4273ae86eb5Schristos #define DW_DLC_ISA_IA64			0x01000000
4283ae86eb5Schristos #define DW_DLC_STREAM_RELOCATIONS	0x02000000
4293ae86eb5Schristos #define DW_DLC_SYMBOLIC_RELOCATIONS	0x04000000
4303ae86eb5Schristos #define DW_DLC_TARGET_BIGENDIAN		0x08000000
4313ae86eb5Schristos #define DW_DLC_TARGET_LITTLEENDIAN	0x00100000
4323ae86eb5Schristos 
4333ae86eb5Schristos /*
4343ae86eb5Schristos  * Instruction set architectures supported by this implementation.
4353ae86eb5Schristos  */
4363ae86eb5Schristos enum Dwarf_ISA {
4373ae86eb5Schristos 	DW_ISA_ARM,
4383ae86eb5Schristos 	DW_ISA_IA64,
4393ae86eb5Schristos 	DW_ISA_MIPS,
4403ae86eb5Schristos 	DW_ISA_PPC,
4413ae86eb5Schristos 	DW_ISA_SPARC,
4423ae86eb5Schristos 	DW_ISA_X86,
4433ae86eb5Schristos 	DW_ISA_X86_64,
444*9262d0f3Schristos 	DW_ISA_AARCH64,
4453ae86eb5Schristos 	DW_ISA_MAX
4463ae86eb5Schristos };
4473ae86eb5Schristos 
4483ae86eb5Schristos /* Function prototype definitions. */
449*9262d0f3Schristos #ifdef __cplusplus
450*9262d0f3Schristos extern "C" {
451*9262d0f3Schristos #endif
4523ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die, char *, Dwarf_Error *);
4533ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die, Dwarf_Signed,
4543ae86eb5Schristos 		    Dwarf_Error *);
4553ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die, char *,
4563ae86eb5Schristos 		    Dwarf_Error *);
4573ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die,
4583ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Error *);
4593ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_dataref(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4603ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4613ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4623ae86eb5Schristos 		    Dwarf_Small, Dwarf_Error *);
4633ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug, Dwarf_P_Die,
4643ae86eb5Schristos 		    Dwarf_Half, Dwarf_P_Expr, Dwarf_Error *);
4653ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die, char *, Dwarf_Error *);
4663ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die, char *, Dwarf_Error *);
4673ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug, Dwarf_P_Die,
4683ae86eb5Schristos 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4693ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4703ae86eb5Schristos 		    Dwarf_P_Die, Dwarf_Error *);
4713ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug, Dwarf_P_Die,
4723ae86eb5Schristos 		    Dwarf_Half, Dwarf_Signed, Dwarf_Error *);
4733ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4743ae86eb5Schristos 		    char *, Dwarf_Error *);
4753ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug, Dwarf_P_Die,
4763ae86eb5Schristos 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Error *);
4773ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug, Dwarf_P_Die,
4783ae86eb5Schristos 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4793ae86eb5Schristos Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug, Dwarf_P_Die,
4803ae86eb5Schristos 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Error *);
4813ae86eb5Schristos Dwarf_Unsigned	dwarf_add_arange(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
4823ae86eb5Schristos 		    Dwarf_Signed, Dwarf_Error *);
4833ae86eb5Schristos Dwarf_Unsigned	dwarf_add_arange_b(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
4843ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *);
4853ae86eb5Schristos Dwarf_Unsigned	dwarf_add_die_to_debug(Dwarf_P_Debug, Dwarf_P_Die,
4863ae86eb5Schristos 		    Dwarf_Error *);
4873ae86eb5Schristos Dwarf_Unsigned	dwarf_add_directory_decl(Dwarf_P_Debug, char *, Dwarf_Error *);
4883ae86eb5Schristos Dwarf_Unsigned	dwarf_add_expr_addr(Dwarf_P_Expr, Dwarf_Unsigned,
4893ae86eb5Schristos 		    Dwarf_Signed, Dwarf_Error *);
4903ae86eb5Schristos Dwarf_Unsigned	dwarf_add_expr_addr_b(Dwarf_P_Expr, Dwarf_Unsigned,
4913ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Error *);
4923ae86eb5Schristos Dwarf_Unsigned	dwarf_add_expr_gen(Dwarf_P_Expr, Dwarf_Small, Dwarf_Unsigned,
4933ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Error *);
4943ae86eb5Schristos Dwarf_P_Fde	dwarf_add_fde_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned,
4953ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Error *);
4963ae86eb5Schristos Dwarf_Unsigned	dwarf_add_file_decl(Dwarf_P_Debug, char *, Dwarf_Unsigned,
4973ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4983ae86eb5Schristos Dwarf_Unsigned	dwarf_add_frame_cie(Dwarf_P_Debug, char *, Dwarf_Small,
4993ae86eb5Schristos 		    Dwarf_Small, Dwarf_Small, Dwarf_Ptr, Dwarf_Unsigned,
5003ae86eb5Schristos 		    Dwarf_Error *);
5013ae86eb5Schristos Dwarf_Unsigned	dwarf_add_frame_fde(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die,
5023ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned,
5033ae86eb5Schristos 		    Dwarf_Error *);
5043ae86eb5Schristos Dwarf_Unsigned	dwarf_add_frame_fde_b(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die,
5053ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned,
5063ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *);
5073ae86eb5Schristos Dwarf_Unsigned	dwarf_add_funcname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5083ae86eb5Schristos 		    Dwarf_Error *);
5093ae86eb5Schristos Dwarf_Unsigned	dwarf_add_line_entry(Dwarf_P_Debug, Dwarf_Unsigned,
5103ae86eb5Schristos 		    Dwarf_Addr, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Bool,
5113ae86eb5Schristos 		    Dwarf_Bool, Dwarf_Error *);
5123ae86eb5Schristos Dwarf_Unsigned	dwarf_add_pubname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5133ae86eb5Schristos 		    Dwarf_Error *);
5143ae86eb5Schristos Dwarf_Unsigned	dwarf_add_typename(Dwarf_P_Debug, Dwarf_P_Die, char *,
5153ae86eb5Schristos 		    Dwarf_Error *);
5163ae86eb5Schristos Dwarf_Unsigned	dwarf_add_varname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5173ae86eb5Schristos 		    Dwarf_Error *);
5183ae86eb5Schristos Dwarf_Unsigned	dwarf_add_weakname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5193ae86eb5Schristos 		    Dwarf_Error *);
5203ae86eb5Schristos int		dwarf_arrayorder(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5213ae86eb5Schristos int		dwarf_attr(Dwarf_Die, Dwarf_Half, Dwarf_Attribute *,
5223ae86eb5Schristos 		    Dwarf_Error *);
5233ae86eb5Schristos int		dwarf_attrlist(Dwarf_Die, Dwarf_Attribute **,
5243ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Error *);
525*9262d0f3Schristos int		dwarf_attroffset(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *);
5263ae86eb5Schristos int		dwarf_attrval_flag(Dwarf_Die, Dwarf_Half, Dwarf_Bool *,
5273ae86eb5Schristos 		    Dwarf_Error *);
5283ae86eb5Schristos int		dwarf_attrval_signed(Dwarf_Die, Dwarf_Half, Dwarf_Signed *,
5293ae86eb5Schristos 		    Dwarf_Error *);
5303ae86eb5Schristos int		dwarf_attrval_string(Dwarf_Die, Dwarf_Half, const char **,
5313ae86eb5Schristos 		    Dwarf_Error *);
5323ae86eb5Schristos int		dwarf_attrval_unsigned(Dwarf_Die, Dwarf_Half, Dwarf_Unsigned *,
5333ae86eb5Schristos 		    Dwarf_Error *);
5343ae86eb5Schristos int		dwarf_bitoffset(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5353ae86eb5Schristos int		dwarf_bitsize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5363ae86eb5Schristos int		dwarf_bytesize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5373ae86eb5Schristos int		dwarf_child(Dwarf_Die, Dwarf_Die *, Dwarf_Error *);
5383ae86eb5Schristos void		dwarf_dealloc(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned);
5393ae86eb5Schristos int		dwarf_def_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, char *,
5403ae86eb5Schristos 		    Dwarf_Error *);
5413ae86eb5Schristos int		dwarf_die_CU_offset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *);
5423ae86eb5Schristos int		dwarf_die_CU_offset_range(Dwarf_Die, Dwarf_Off *, Dwarf_Off *,
5433ae86eb5Schristos 		    Dwarf_Error *);
5443ae86eb5Schristos int		dwarf_die_abbrev_code(Dwarf_Die);
5453ae86eb5Schristos Dwarf_P_Die	dwarf_die_link(Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die,
5463ae86eb5Schristos 		    Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *);
5473ae86eb5Schristos int		dwarf_diename(Dwarf_Die, char **, Dwarf_Error *);
5483ae86eb5Schristos int		dwarf_dieoffset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *);
5493ae86eb5Schristos int		dwarf_elf_init(Elf *, int, Dwarf_Handler, Dwarf_Ptr,
5503ae86eb5Schristos 		    Dwarf_Debug *, Dwarf_Error *);
5513ae86eb5Schristos int		dwarf_end_macro_file(Dwarf_P_Debug, Dwarf_Error *);
5523ae86eb5Schristos const char	*dwarf_errmsg_(Dwarf_Error *);
5533ae86eb5Schristos int		dwarf_expand_frame_instructions(Dwarf_Cie, Dwarf_Ptr,
5543ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *,
5553ae86eb5Schristos 		    Dwarf_Error *);
5563ae86eb5Schristos Dwarf_Unsigned	dwarf_expr_current_offset(Dwarf_P_Expr, Dwarf_Error *);
5573ae86eb5Schristos Dwarf_Addr	dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Unsigned *,
5583ae86eb5Schristos 		    Dwarf_Error *);
5593ae86eb5Schristos Dwarf_P_Fde	dwarf_fde_cfa_offset(Dwarf_P_Fde, Dwarf_Unsigned, Dwarf_Signed,
5603ae86eb5Schristos 		    Dwarf_Error *);
5613ae86eb5Schristos void		dwarf_fde_cie_list_dealloc(Dwarf_Debug, Dwarf_Cie *,
5623ae86eb5Schristos 		    Dwarf_Signed, Dwarf_Fde *, Dwarf_Signed);
5633ae86eb5Schristos char		*dwarf_find_macro_value_start(char *);
5643ae86eb5Schristos int		dwarf_finish(Dwarf_Debug, Dwarf_Error *);
5653ae86eb5Schristos int		dwarf_formaddr(Dwarf_Attribute, Dwarf_Addr *, Dwarf_Error *);
5663ae86eb5Schristos int		dwarf_formblock(Dwarf_Attribute, Dwarf_Block **, Dwarf_Error *);
5673ae86eb5Schristos int		dwarf_formexprloc(Dwarf_Attribute, Dwarf_Unsigned *,
5683ae86eb5Schristos 		    Dwarf_Ptr *, Dwarf_Error *);
5693ae86eb5Schristos int		dwarf_formflag(Dwarf_Attribute, Dwarf_Bool *, Dwarf_Error *);
5703ae86eb5Schristos int		dwarf_formref(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *);
5713ae86eb5Schristos int		dwarf_formsdata(Dwarf_Attribute, Dwarf_Signed *, Dwarf_Error *);
5723ae86eb5Schristos int		dwarf_formsig8(Dwarf_Attribute, Dwarf_Sig8 *, Dwarf_Error *);
5733ae86eb5Schristos int		dwarf_formstring(Dwarf_Attribute, char **, Dwarf_Error *);
5743ae86eb5Schristos int		dwarf_formudata(Dwarf_Attribute, Dwarf_Unsigned *,
5753ae86eb5Schristos 		    Dwarf_Error *);
5763ae86eb5Schristos int		dwarf_func_cu_offset(Dwarf_Func, Dwarf_Off *, Dwarf_Error *);
5773ae86eb5Schristos int		dwarf_func_die_offset(Dwarf_Func, Dwarf_Off *,
5783ae86eb5Schristos 		    Dwarf_Error *);
5793ae86eb5Schristos int		dwarf_func_name_offsets(Dwarf_Func, char **,
5803ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
5813ae86eb5Schristos int		dwarf_funcname(Dwarf_Func, char **, Dwarf_Error *);
5823ae86eb5Schristos void		dwarf_funcs_dealloc(Dwarf_Debug, Dwarf_Func *, Dwarf_Signed);
5833ae86eb5Schristos int		dwarf_get_ACCESS_name(unsigned, const char **);
5843ae86eb5Schristos int		dwarf_get_ATE_name(unsigned, const char **);
5853ae86eb5Schristos int		dwarf_get_AT_name(unsigned, const char **);
5863ae86eb5Schristos int		dwarf_get_CC_name(unsigned, const char **);
5873ae86eb5Schristos int		dwarf_get_CFA_name(unsigned, const char **);
5883ae86eb5Schristos int		dwarf_get_CHILDREN_name(unsigned, const char **);
5893ae86eb5Schristos int		dwarf_get_DSC_name(unsigned, const char **);
5903ae86eb5Schristos int		dwarf_get_DS_name(unsigned, const char **);
5913ae86eb5Schristos int		dwarf_get_EH_name(unsigned, const char **);
5923ae86eb5Schristos int		dwarf_get_END_name(unsigned, const char **);
5933ae86eb5Schristos int		dwarf_get_FORM_name(unsigned, const char **);
5943ae86eb5Schristos int		dwarf_get_ID_name(unsigned, const char **);
5953ae86eb5Schristos int		dwarf_get_INL_name(unsigned, const char **);
5963ae86eb5Schristos int		dwarf_get_LANG_name(unsigned, const char **);
5973ae86eb5Schristos int		dwarf_get_LNE_name(unsigned, const char **);
5983ae86eb5Schristos int		dwarf_get_LNS_name(unsigned, const char **);
5993ae86eb5Schristos int		dwarf_get_MACINFO_name(unsigned, const char **);
6003ae86eb5Schristos int		dwarf_get_OP_name(unsigned, const char **);
6013ae86eb5Schristos int		dwarf_get_ORD_name(unsigned, const char **);
6023ae86eb5Schristos int		dwarf_get_TAG_name(unsigned, const char **);
6033ae86eb5Schristos int		dwarf_get_VIRTUALITY_name(unsigned, const char **);
6043ae86eb5Schristos int		dwarf_get_VIS_name(unsigned, const char **);
6053ae86eb5Schristos int		dwarf_get_abbrev(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Abbrev *,
6063ae86eb5Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Error *);
6073ae86eb5Schristos int		dwarf_get_abbrev_children_flag(Dwarf_Abbrev, Dwarf_Signed *,
6083ae86eb5Schristos 		    Dwarf_Error *);
6093ae86eb5Schristos int		dwarf_get_abbrev_code(Dwarf_Abbrev, Dwarf_Unsigned *,
6103ae86eb5Schristos 		    Dwarf_Error *);
6113ae86eb5Schristos int		dwarf_get_abbrev_entry(Dwarf_Abbrev, Dwarf_Signed, Dwarf_Half *,
6123ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Off *, Dwarf_Error *);
6133ae86eb5Schristos int		dwarf_get_abbrev_tag(Dwarf_Abbrev, Dwarf_Half *, Dwarf_Error *);
6143ae86eb5Schristos int		dwarf_get_address_size(Dwarf_Debug, Dwarf_Half *,
6153ae86eb5Schristos 		    Dwarf_Error *);
6163ae86eb5Schristos int		dwarf_get_arange(Dwarf_Arange *, Dwarf_Unsigned, Dwarf_Addr,
6173ae86eb5Schristos 		    Dwarf_Arange *, Dwarf_Error *);
6183ae86eb5Schristos int		dwarf_get_arange_cu_header_offset(Dwarf_Arange, Dwarf_Off *,
6193ae86eb5Schristos 		    Dwarf_Error *);
6203ae86eb5Schristos int		dwarf_get_arange_info(Dwarf_Arange, Dwarf_Addr *,
6213ae86eb5Schristos 		    Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Error *);
6223ae86eb5Schristos int		dwarf_get_aranges(Dwarf_Debug, Dwarf_Arange **, Dwarf_Signed *,
6233ae86eb5Schristos 		    Dwarf_Error *);
6243ae86eb5Schristos int		dwarf_get_cie_index(Dwarf_Cie, Dwarf_Signed *, Dwarf_Error *);
6253ae86eb5Schristos int		dwarf_get_cie_info(Dwarf_Cie, Dwarf_Unsigned *, Dwarf_Small *,
6263ae86eb5Schristos 		    char **, Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Half *,
6273ae86eb5Schristos 		    Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Error *);
6283ae86eb5Schristos int		dwarf_get_cie_of_fde(Dwarf_Fde, Dwarf_Cie *, Dwarf_Error *);
6293ae86eb5Schristos int		dwarf_get_cu_die_offset(Dwarf_Arange, Dwarf_Off *,
6303ae86eb5Schristos 		    Dwarf_Error *);
6313ae86eb5Schristos int		dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug,
6323ae86eb5Schristos 		    Dwarf_Off, Dwarf_Off *, Dwarf_Error *);
633*9262d0f3Schristos int		dwarf_get_cu_die_offset_given_cu_header_offset_b(Dwarf_Debug,
634*9262d0f3Schristos 		    Dwarf_Off, Dwarf_Bool, Dwarf_Off *, Dwarf_Error *);
635*9262d0f3Schristos Dwarf_Bool	dwarf_get_die_infotypes_flag(Dwarf_Die);
6363ae86eb5Schristos int		dwarf_get_elf(Dwarf_Debug, Elf **, Dwarf_Error *);
6373ae86eb5Schristos int		dwarf_get_fde_at_pc(Dwarf_Fde *, Dwarf_Addr, Dwarf_Fde *,
6383ae86eb5Schristos 		    Dwarf_Addr *, Dwarf_Addr *, Dwarf_Error *);
6393ae86eb5Schristos int		dwarf_get_fde_info_for_all_regs(Dwarf_Fde, Dwarf_Addr,
6403ae86eb5Schristos 		    Dwarf_Regtable *, Dwarf_Addr *, Dwarf_Error *);
6413ae86eb5Schristos int		dwarf_get_fde_info_for_all_regs3(Dwarf_Fde, Dwarf_Addr,
6423ae86eb5Schristos 		    Dwarf_Regtable3 *, Dwarf_Addr *, Dwarf_Error *);
6433ae86eb5Schristos int		dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde, Dwarf_Addr,
6443ae86eb5Schristos 		    Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *,
6453ae86eb5Schristos 		    Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *);
6463ae86eb5Schristos int		dwarf_get_fde_info_for_reg(Dwarf_Fde, Dwarf_Half, Dwarf_Addr,
6473ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *,
6483ae86eb5Schristos 		    Dwarf_Addr *, Dwarf_Error *);
6493ae86eb5Schristos int		dwarf_get_fde_info_for_reg3(Dwarf_Fde, Dwarf_Half, Dwarf_Addr,
6503ae86eb5Schristos 		    Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *,
6513ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *);
6523ae86eb5Schristos int		dwarf_get_fde_instr_bytes(Dwarf_Fde, Dwarf_Ptr *,
6533ae86eb5Schristos 		    Dwarf_Unsigned *, Dwarf_Error *);
6543ae86eb5Schristos int		dwarf_get_fde_list(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *,
6553ae86eb5Schristos 		    Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *);
6563ae86eb5Schristos int		dwarf_get_fde_list_eh(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *,
6573ae86eb5Schristos 		    Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *);
6583ae86eb5Schristos int		dwarf_get_fde_n(Dwarf_Fde *, Dwarf_Unsigned, Dwarf_Fde *,
6593ae86eb5Schristos 		    Dwarf_Error *);
6603ae86eb5Schristos int		dwarf_get_fde_range(Dwarf_Fde, Dwarf_Addr *, Dwarf_Unsigned *,
6613ae86eb5Schristos 		    Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Signed *,
6623ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Error *);
6633ae86eb5Schristos enum Dwarf_Form_Class dwarf_get_form_class(Dwarf_Half, Dwarf_Half, Dwarf_Half,
6643ae86eb5Schristos 		    Dwarf_Half);
6653ae86eb5Schristos int		dwarf_get_funcs(Dwarf_Debug, Dwarf_Func **, Dwarf_Signed *,
6663ae86eb5Schristos 		    Dwarf_Error *);
6673ae86eb5Schristos int		dwarf_get_globals(Dwarf_Debug, Dwarf_Global **, Dwarf_Signed *,
6683ae86eb5Schristos 		    Dwarf_Error *);
6693ae86eb5Schristos int		dwarf_get_loclist_entry(Dwarf_Debug, Dwarf_Unsigned,
6703ae86eb5Schristos 		    Dwarf_Addr *, Dwarf_Addr *, Dwarf_Ptr *, Dwarf_Unsigned *,
6713ae86eb5Schristos 		    Dwarf_Unsigned *, Dwarf_Error *);
6723ae86eb5Schristos int		dwarf_get_macro_details(Dwarf_Debug, Dwarf_Off, Dwarf_Unsigned,
6733ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Macro_Details **, Dwarf_Error *);
6743ae86eb5Schristos int		dwarf_get_pubtypes(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *,
6753ae86eb5Schristos 		    Dwarf_Error *);
6763ae86eb5Schristos int		dwarf_get_ranges(Dwarf_Debug, Dwarf_Off, Dwarf_Ranges **,
6773ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *);
6783ae86eb5Schristos int		dwarf_get_ranges_a(Dwarf_Debug, Dwarf_Off, Dwarf_Die,
6793ae86eb5Schristos 		    Dwarf_Ranges **, Dwarf_Signed *, Dwarf_Unsigned *,
6803ae86eb5Schristos 		    Dwarf_Error *);
6813ae86eb5Schristos int		dwarf_get_relocation_info(Dwarf_P_Debug, Dwarf_Signed *,
6823ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Relocation_Data *,
6833ae86eb5Schristos 		    Dwarf_Error *);
6843ae86eb5Schristos int		dwarf_get_relocation_info_count(Dwarf_P_Debug, Dwarf_Unsigned *,
6853ae86eb5Schristos 		    int *, Dwarf_Error *);
6863ae86eb5Schristos Dwarf_Ptr	dwarf_get_section_bytes(Dwarf_P_Debug, Dwarf_Signed,
6873ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *);
688*9262d0f3Schristos int		dwarf_get_section_max_offsets(Dwarf_Debug, Dwarf_Unsigned *,
689*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
690*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
691*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
692*9262d0f3Schristos 		    Dwarf_Unsigned *);
693*9262d0f3Schristos int		dwarf_get_section_max_offsets_b(Dwarf_Debug, Dwarf_Unsigned *,
694*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
695*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
696*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
697*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Unsigned *);
6983ae86eb5Schristos int		dwarf_get_str(Dwarf_Debug, Dwarf_Off, char **, Dwarf_Signed *,
6993ae86eb5Schristos 		    Dwarf_Error *);
7003ae86eb5Schristos int		dwarf_get_types(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *,
7013ae86eb5Schristos 		    Dwarf_Error *);
7023ae86eb5Schristos int		dwarf_get_vars(Dwarf_Debug, Dwarf_Var **, Dwarf_Signed *,
7033ae86eb5Schristos 		    Dwarf_Error *);
7043ae86eb5Schristos int		dwarf_get_weaks(Dwarf_Debug, Dwarf_Weak **, Dwarf_Signed *,
7053ae86eb5Schristos 		    Dwarf_Error *);
7063ae86eb5Schristos int		dwarf_global_cu_offset(Dwarf_Global, Dwarf_Off *, Dwarf_Error *);
7073ae86eb5Schristos int		dwarf_global_die_offset(Dwarf_Global, Dwarf_Off *,
7083ae86eb5Schristos 		    Dwarf_Error *);
7093ae86eb5Schristos int		dwarf_global_formref(Dwarf_Attribute, Dwarf_Off *,
7103ae86eb5Schristos 		    Dwarf_Error *);
7113ae86eb5Schristos int		dwarf_global_name_offsets(Dwarf_Global, char **,
7123ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
7133ae86eb5Schristos void		dwarf_globals_dealloc(Dwarf_Debug, Dwarf_Global *, Dwarf_Signed);
7143ae86eb5Schristos int		dwarf_globname(Dwarf_Global, char **, Dwarf_Error *);
7153ae86eb5Schristos int		dwarf_hasattr(Dwarf_Die, Dwarf_Half, Dwarf_Bool *,
7163ae86eb5Schristos 		    Dwarf_Error *);
7173ae86eb5Schristos int		dwarf_hasform(Dwarf_Attribute, Dwarf_Half, Dwarf_Bool *,
7183ae86eb5Schristos 		    Dwarf_Error *);
7193ae86eb5Schristos int		dwarf_highpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *);
720*9262d0f3Schristos int		dwarf_highpc_b(Dwarf_Die, Dwarf_Addr *, Dwarf_Half *,
721*9262d0f3Schristos 		    enum Dwarf_Form_Class *, Dwarf_Error *);
7223ae86eb5Schristos int		dwarf_init(int, int, Dwarf_Handler, Dwarf_Ptr, Dwarf_Debug *,
7233ae86eb5Schristos 		    Dwarf_Error *);
7243ae86eb5Schristos int		dwarf_line_srcfileno(Dwarf_Line, Dwarf_Unsigned *,
7253ae86eb5Schristos 		    Dwarf_Error *);
7263ae86eb5Schristos int		dwarf_lineaddr(Dwarf_Line, Dwarf_Addr *, Dwarf_Error *);
7273ae86eb5Schristos int		dwarf_linebeginstatement(Dwarf_Line, Dwarf_Bool *,
7283ae86eb5Schristos 		    Dwarf_Error *);
7293ae86eb5Schristos int		dwarf_lineblock(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *);
7303ae86eb5Schristos int		dwarf_lineendsequence(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *);
7313ae86eb5Schristos int		dwarf_lineno(Dwarf_Line, Dwarf_Unsigned *, Dwarf_Error *);
7323ae86eb5Schristos int		dwarf_lineoff(Dwarf_Line, Dwarf_Signed *, Dwarf_Error *);
7333ae86eb5Schristos int		dwarf_linesrc(Dwarf_Line, char **, Dwarf_Error *);
7343ae86eb5Schristos Dwarf_Unsigned	dwarf_lne_end_sequence(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Error *);
7353ae86eb5Schristos Dwarf_Unsigned	dwarf_lne_set_address(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
7363ae86eb5Schristos 		    Dwarf_Error *);
7373ae86eb5Schristos int		dwarf_loclist(Dwarf_Attribute, Dwarf_Locdesc **, Dwarf_Signed *,
7383ae86eb5Schristos 		    Dwarf_Error *);
7393ae86eb5Schristos int		dwarf_loclist_from_expr(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned,
7403ae86eb5Schristos 		    Dwarf_Locdesc **, Dwarf_Signed *, Dwarf_Error *);
7413ae86eb5Schristos int		dwarf_loclist_from_expr_a(Dwarf_Debug, Dwarf_Ptr,
7423ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Half, Dwarf_Locdesc **,
7433ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Error *);
744*9262d0f3Schristos int		dwarf_loclist_from_expr_b(Dwarf_Debug, Dwarf_Ptr,
745*9262d0f3Schristos 		    Dwarf_Unsigned, Dwarf_Half, Dwarf_Half,
746*9262d0f3Schristos 		    Dwarf_Small, Dwarf_Locdesc **, Dwarf_Signed *,
747*9262d0f3Schristos 		    Dwarf_Error *);
7483ae86eb5Schristos int		dwarf_loclist_n(Dwarf_Attribute, Dwarf_Locdesc ***,
7493ae86eb5Schristos 		    Dwarf_Signed *, Dwarf_Error *);
7503ae86eb5Schristos int		dwarf_lowpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *);
7513ae86eb5Schristos Dwarf_P_Die	dwarf_new_die(Dwarf_P_Debug, Dwarf_Tag, Dwarf_P_Die,
7523ae86eb5Schristos 		    Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *);
7533ae86eb5Schristos Dwarf_P_Expr	dwarf_new_expr(Dwarf_P_Debug, Dwarf_Error *);
7543ae86eb5Schristos Dwarf_P_Fde	dwarf_new_fde(Dwarf_P_Debug, Dwarf_Error *);
7553ae86eb5Schristos int		dwarf_next_cu_header(Dwarf_Debug, Dwarf_Unsigned *,
7563ae86eb5Schristos 		    Dwarf_Half *, Dwarf_Off *, Dwarf_Half *,
7573ae86eb5Schristos 		    Dwarf_Unsigned *, Dwarf_Error *);
7583ae86eb5Schristos int		dwarf_next_cu_header_b(Dwarf_Debug, Dwarf_Unsigned *,
7593ae86eb5Schristos 		    Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, Dwarf_Half *,
7603ae86eb5Schristos 		    Dwarf_Half *, Dwarf_Unsigned *, Dwarf_Error *);
761*9262d0f3Schristos int		dwarf_next_cu_header_c(Dwarf_Debug, Dwarf_Bool,
762*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Half *, Dwarf_Off *, Dwarf_Half *,
763*9262d0f3Schristos 		    Dwarf_Half *, Dwarf_Half *, Dwarf_Sig8 *, Dwarf_Unsigned *,
764*9262d0f3Schristos 		    Dwarf_Unsigned *, Dwarf_Error *);
765*9262d0f3Schristos int		dwarf_next_types_section(Dwarf_Debug, Dwarf_Error *);
7663ae86eb5Schristos int		dwarf_object_finish(Dwarf_Debug, Dwarf_Error *);
7673ae86eb5Schristos int		dwarf_object_init(Dwarf_Obj_Access_Interface *, Dwarf_Handler,
7683ae86eb5Schristos 		    Dwarf_Ptr, Dwarf_Debug *, Dwarf_Error *);
7693ae86eb5Schristos int		dwarf_offdie(Dwarf_Debug, Dwarf_Off, Dwarf_Die *,
7703ae86eb5Schristos 		    Dwarf_Error *);
771*9262d0f3Schristos int		dwarf_offdie_b(Dwarf_Debug, Dwarf_Off, Dwarf_Bool, Dwarf_Die *,
772*9262d0f3Schristos 		    Dwarf_Error *);
7733ae86eb5Schristos Dwarf_Unsigned	dwarf_producer_finish(Dwarf_P_Debug, Dwarf_Error *);
7743ae86eb5Schristos Dwarf_P_Debug	dwarf_producer_init(Dwarf_Unsigned, Dwarf_Callback_Func,
7753ae86eb5Schristos 		    Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *);
7763ae86eb5Schristos Dwarf_P_Debug	dwarf_producer_init_b(Dwarf_Unsigned, Dwarf_Callback_Func_b,
7773ae86eb5Schristos 		    Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *);
7783ae86eb5Schristos int		dwarf_producer_set_isa(Dwarf_P_Debug, enum Dwarf_ISA,
7793ae86eb5Schristos 		    Dwarf_Error *);
7803ae86eb5Schristos int		dwarf_pubtype_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
7813ae86eb5Schristos int		dwarf_pubtype_die_offset(Dwarf_Type, Dwarf_Off *,
7823ae86eb5Schristos 		    Dwarf_Error *);
7833ae86eb5Schristos int		dwarf_pubtype_name_offsets(Dwarf_Type, char **,
7843ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
7853ae86eb5Schristos int		dwarf_pubtypename(Dwarf_Type, char **, Dwarf_Error *);
7863ae86eb5Schristos void		dwarf_pubtypes_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed);
7873ae86eb5Schristos void		dwarf_ranges_dealloc(Dwarf_Debug, Dwarf_Ranges *, Dwarf_Signed);
7883ae86eb5Schristos void		dwarf_reset_section_bytes(Dwarf_P_Debug);
7893ae86eb5Schristos Dwarf_Half	dwarf_set_frame_cfa_value(Dwarf_Debug, Dwarf_Half);
7903ae86eb5Schristos Dwarf_Half	dwarf_set_frame_rule_initial_value(Dwarf_Debug, Dwarf_Half);
7913ae86eb5Schristos Dwarf_Half	dwarf_set_frame_rule_table_size(Dwarf_Debug, Dwarf_Half);
7923ae86eb5Schristos Dwarf_Half	dwarf_set_frame_same_value(Dwarf_Debug, Dwarf_Half);
7933ae86eb5Schristos Dwarf_Half	dwarf_set_frame_undefined_value(Dwarf_Debug, Dwarf_Half);
7943ae86eb5Schristos int		dwarf_set_reloc_application(int);
7953ae86eb5Schristos Dwarf_Ptr	dwarf_seterrarg(Dwarf_Debug, Dwarf_Ptr);
7963ae86eb5Schristos Dwarf_Handler	dwarf_seterrhand(Dwarf_Debug, Dwarf_Handler);
7973ae86eb5Schristos int		dwarf_siblingof(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Error *);
798*9262d0f3Schristos int		dwarf_siblingof_b(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Bool,
799*9262d0f3Schristos 		    Dwarf_Error *);
8003ae86eb5Schristos int		dwarf_srcfiles(Dwarf_Die, char ***, Dwarf_Signed *, Dwarf_Error *);
8013ae86eb5Schristos int		dwarf_srclang(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
8023ae86eb5Schristos int		dwarf_srclines(Dwarf_Die, Dwarf_Line **, Dwarf_Signed *,
8033ae86eb5Schristos 		    Dwarf_Error *);
8043ae86eb5Schristos void		dwarf_srclines_dealloc(Dwarf_Debug, Dwarf_Line *,
8053ae86eb5Schristos 		    Dwarf_Signed);
8063ae86eb5Schristos int		dwarf_start_macro_file(Dwarf_P_Debug, Dwarf_Unsigned,
8073ae86eb5Schristos 		    Dwarf_Unsigned, Dwarf_Error *);
8083ae86eb5Schristos int		dwarf_tag(Dwarf_Die, Dwarf_Half *, Dwarf_Error *);
8093ae86eb5Schristos Dwarf_Signed	dwarf_transform_to_disk_form(Dwarf_P_Debug, Dwarf_Error *);
8103ae86eb5Schristos int		dwarf_type_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
8113ae86eb5Schristos int		dwarf_type_die_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
8123ae86eb5Schristos int		dwarf_type_name_offsets(Dwarf_Type, char **,
8133ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8143ae86eb5Schristos int		dwarf_typename(Dwarf_Type, char **, Dwarf_Error *);
8153ae86eb5Schristos void		dwarf_types_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed);
8163ae86eb5Schristos int		dwarf_undef_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *,
8173ae86eb5Schristos 		    Dwarf_Error *);
8183ae86eb5Schristos int		dwarf_var_cu_offset(Dwarf_Var, Dwarf_Off *, Dwarf_Error *);
8193ae86eb5Schristos int		dwarf_var_die_offset(Dwarf_Var, Dwarf_Off *,
8203ae86eb5Schristos 		    Dwarf_Error *);
8213ae86eb5Schristos int		dwarf_var_name_offsets(Dwarf_Var, char **,
8223ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8233ae86eb5Schristos int		dwarf_varname(Dwarf_Var, char **, Dwarf_Error *);
8243ae86eb5Schristos void		dwarf_vars_dealloc(Dwarf_Debug, Dwarf_Var *, Dwarf_Signed);
8253ae86eb5Schristos int		dwarf_vendor_ext(Dwarf_P_Debug, Dwarf_Unsigned, char *,
8263ae86eb5Schristos 		    Dwarf_Error *);
8273ae86eb5Schristos int		dwarf_weak_cu_offset(Dwarf_Weak, Dwarf_Off *, Dwarf_Error *);
8283ae86eb5Schristos int		dwarf_weak_die_offset(Dwarf_Weak, Dwarf_Off *,
8293ae86eb5Schristos 		    Dwarf_Error *);
8303ae86eb5Schristos int		dwarf_weak_name_offsets(Dwarf_Weak, char **,
8313ae86eb5Schristos 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8323ae86eb5Schristos int		dwarf_weakname(Dwarf_Weak, char **, Dwarf_Error *);
8333ae86eb5Schristos void		dwarf_weaks_dealloc(Dwarf_Debug, Dwarf_Weak *, Dwarf_Signed);
8343ae86eb5Schristos int		dwarf_whatattr(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *);
8353ae86eb5Schristos int		dwarf_whatform(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *);
8363ae86eb5Schristos int		dwarf_whatform_direct(Dwarf_Attribute, Dwarf_Half *,
8373ae86eb5Schristos 		    Dwarf_Error *);
838*9262d0f3Schristos #ifdef __cplusplus
839*9262d0f3Schristos }
840*9262d0f3Schristos #endif
8413ae86eb5Schristos 
8423ae86eb5Schristos #endif /* !_LIBDWARF_H_ */
843