xref: /freebsd/contrib/elftoolchain/libdwarf/libdwarf.h (revision 7bb441c866781ec14b3e79a4f3e95fd319ab7ff9)
12de3b87aSKai Wang /*-
22de3b87aSKai Wang  * Copyright (c) 2007 John Birrell (jb@freebsd.org)
3cf781b2eSEd Maste  * Copyright (c) 2009-2011,2014 Kai Wang
42de3b87aSKai Wang  * All rights reserved.
52de3b87aSKai Wang  *
62de3b87aSKai Wang  * Redistribution and use in source and binary forms, with or without
72de3b87aSKai Wang  * modification, are permitted provided that the following conditions
82de3b87aSKai Wang  * are met:
92de3b87aSKai Wang  * 1. Redistributions of source code must retain the above copyright
102de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer.
112de3b87aSKai Wang  * 2. Redistributions in binary form must reproduce the above copyright
122de3b87aSKai Wang  *    notice, this list of conditions and the following disclaimer in the
132de3b87aSKai Wang  *    documentation and/or other materials provided with the distribution.
142de3b87aSKai Wang  *
152de3b87aSKai Wang  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
162de3b87aSKai Wang  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
172de3b87aSKai Wang  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
182de3b87aSKai Wang  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
192de3b87aSKai Wang  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
202de3b87aSKai Wang  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
212de3b87aSKai Wang  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
222de3b87aSKai Wang  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
232de3b87aSKai Wang  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
242de3b87aSKai Wang  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
252de3b87aSKai Wang  * SUCH DAMAGE.
262de3b87aSKai Wang  *
27715d1396SEd Maste  * $Id: libdwarf.h 3578 2017-09-14 02:21:28Z emaste $
282de3b87aSKai Wang  */
292de3b87aSKai Wang 
302de3b87aSKai Wang #ifndef	_LIBDWARF_H_
312de3b87aSKai Wang #define	_LIBDWARF_H_
322de3b87aSKai Wang 
332de3b87aSKai Wang #include <libelf.h>
342de3b87aSKai Wang 
352de3b87aSKai Wang typedef int		Dwarf_Bool;
36839529caSEd Maste typedef uint64_t	Dwarf_Off;
372de3b87aSKai Wang typedef uint64_t	Dwarf_Unsigned;
382de3b87aSKai Wang typedef uint16_t	Dwarf_Half;
392de3b87aSKai Wang typedef uint8_t		Dwarf_Small;
402de3b87aSKai Wang typedef int64_t		Dwarf_Signed;
412de3b87aSKai Wang typedef uint64_t	Dwarf_Addr;
422de3b87aSKai Wang typedef void		*Dwarf_Ptr;
432de3b87aSKai Wang 
442de3b87aSKai Wang typedef struct _Dwarf_Abbrev	*Dwarf_Abbrev;
452de3b87aSKai Wang typedef struct _Dwarf_Arange	*Dwarf_Arange;
462de3b87aSKai Wang typedef struct _Dwarf_ArangeSet	*Dwarf_ArangeSet;
472de3b87aSKai Wang typedef struct _Dwarf_Attribute	*Dwarf_Attribute;
482de3b87aSKai Wang typedef struct _Dwarf_Attribute *Dwarf_P_Attribute;
492de3b87aSKai Wang typedef struct _Dwarf_AttrDef	*Dwarf_AttrDef;
502de3b87aSKai Wang typedef struct _Dwarf_Cie	*Dwarf_Cie;
512de3b87aSKai Wang typedef struct _Dwarf_Cie	*Dwarf_P_Cie;
522de3b87aSKai Wang typedef struct _Dwarf_Debug	*Dwarf_Debug;
532de3b87aSKai Wang typedef struct _Dwarf_Debug	*Dwarf_P_Debug;
542de3b87aSKai Wang typedef struct _Dwarf_Die	*Dwarf_Die;
552de3b87aSKai Wang typedef struct _Dwarf_Die	*Dwarf_P_Die;
562de3b87aSKai Wang typedef struct _Dwarf_Fde	*Dwarf_Fde;
572de3b87aSKai Wang typedef struct _Dwarf_Fde	*Dwarf_P_Fde;
582de3b87aSKai Wang typedef struct _Dwarf_FrameSec	*Dwarf_FrameSec;
592de3b87aSKai Wang typedef struct _Dwarf_Line	*Dwarf_Line;
602de3b87aSKai Wang typedef struct _Dwarf_LineFile	*Dwarf_LineFile;
612de3b87aSKai Wang typedef struct _Dwarf_LineInfo	*Dwarf_LineInfo;
622de3b87aSKai Wang typedef struct _Dwarf_MacroSet	*Dwarf_MacroSet;
632de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_NamePair;
642de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_Func;
652de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_Global;
662de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_Type;
672de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_Var;
682de3b87aSKai Wang typedef struct _Dwarf_NamePair	*Dwarf_Weak;
692de3b87aSKai Wang typedef struct _Dwarf_NameTbl	*Dwarf_NameTbl;
702de3b87aSKai Wang typedef struct _Dwarf_NameSec	*Dwarf_NameSec;
712de3b87aSKai Wang typedef struct _Dwarf_P_Expr	*Dwarf_P_Expr;
722de3b87aSKai Wang typedef struct _Dwarf_Rangelist	*Dwarf_Rangelist;
732de3b87aSKai Wang 
742de3b87aSKai Wang typedef enum {
752de3b87aSKai Wang 	DW_OBJECT_MSB,
762de3b87aSKai Wang 	DW_OBJECT_LSB
772de3b87aSKai Wang } Dwarf_Endianness;
782de3b87aSKai Wang 
792de3b87aSKai Wang typedef struct {
802de3b87aSKai Wang 	Dwarf_Addr addr;
812de3b87aSKai Wang 	Dwarf_Unsigned size;
822de3b87aSKai Wang 	const char *name;
832de3b87aSKai Wang } Dwarf_Obj_Access_Section;
842de3b87aSKai Wang 
852de3b87aSKai Wang typedef struct {
862de3b87aSKai Wang 	int (*get_section_info)(void *_obj, Dwarf_Half _index,
872de3b87aSKai Wang 	    Dwarf_Obj_Access_Section *_ret_section, int *_error);
882de3b87aSKai Wang 	Dwarf_Endianness (*get_byte_order)(void *_obj);
892de3b87aSKai Wang 	Dwarf_Small (*get_length_size)(void *_obj);
902de3b87aSKai Wang 	Dwarf_Small (*get_pointer_size)(void *_obj);
912de3b87aSKai Wang 	Dwarf_Unsigned (*get_section_count)(void *_obj);
922de3b87aSKai Wang 	int (*load_section)(void *_obj, Dwarf_Half _index,
932de3b87aSKai Wang 	    Dwarf_Small **_ret_data, int *_error);
942de3b87aSKai Wang } Dwarf_Obj_Access_Methods;
952de3b87aSKai Wang 
962de3b87aSKai Wang typedef struct {
972de3b87aSKai Wang 	void *object;
982de3b87aSKai Wang 	const Dwarf_Obj_Access_Methods *methods;
992de3b87aSKai Wang } Dwarf_Obj_Access_Interface;
1002de3b87aSKai Wang 
1012de3b87aSKai Wang typedef int (*Dwarf_Callback_Func)(char *_name, int _size,
1022de3b87aSKai Wang     Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link,
1032de3b87aSKai Wang     Dwarf_Unsigned _info, int *_index, int *_error);
1042de3b87aSKai Wang 
1052de3b87aSKai Wang typedef int (*Dwarf_Callback_Func_b)(char *_name, int _size,
1062de3b87aSKai Wang     Dwarf_Unsigned _type, Dwarf_Unsigned _flags, Dwarf_Unsigned _link,
1072de3b87aSKai Wang     Dwarf_Unsigned _info, Dwarf_Unsigned *_index, int *_error);
1082de3b87aSKai Wang 
1092de3b87aSKai Wang typedef Dwarf_Unsigned Dwarf_Tag;
1102de3b87aSKai Wang 
1112de3b87aSKai Wang typedef struct {
1122de3b87aSKai Wang         Dwarf_Small	lr_atom;
1132de3b87aSKai Wang         Dwarf_Unsigned	lr_number;
1142de3b87aSKai Wang 	Dwarf_Unsigned	lr_number2;
1152de3b87aSKai Wang 	Dwarf_Unsigned	lr_offset;
1162de3b87aSKai Wang } Dwarf_Loc;
1172de3b87aSKai Wang 
1182de3b87aSKai Wang typedef struct {
1192de3b87aSKai Wang 	Dwarf_Addr      ld_lopc;
1202de3b87aSKai Wang 	Dwarf_Addr      ld_hipc;
1212de3b87aSKai Wang 	Dwarf_Half      ld_cents;
1222de3b87aSKai Wang 	Dwarf_Loc	*ld_s;
1232de3b87aSKai Wang } Dwarf_Locdesc;
1242de3b87aSKai Wang 
1252de3b87aSKai Wang typedef struct {
1262de3b87aSKai Wang 	char signature[8];
1272de3b87aSKai Wang } Dwarf_Sig8;
1282de3b87aSKai Wang 
1292de3b87aSKai Wang typedef struct {
1302de3b87aSKai Wang 	Dwarf_Unsigned	bl_len;
1312de3b87aSKai Wang 	Dwarf_Ptr	bl_data;
1322de3b87aSKai Wang } Dwarf_Block;
1332de3b87aSKai Wang 
1342de3b87aSKai Wang enum Dwarf_Ranges_Entry_Type {
1352de3b87aSKai Wang 	DW_RANGES_ENTRY,
1362de3b87aSKai Wang 	DW_RANGES_ADDRESS_SELECTION,
1372de3b87aSKai Wang 	DW_RANGES_END
1382de3b87aSKai Wang };
1392de3b87aSKai Wang 
1402de3b87aSKai Wang typedef struct {
1412de3b87aSKai Wang 	Dwarf_Unsigned	dwr_addr1;
1422de3b87aSKai Wang 	Dwarf_Unsigned	dwr_addr2;
1432de3b87aSKai Wang 	enum Dwarf_Ranges_Entry_Type dwr_type;
1442de3b87aSKai Wang } Dwarf_Ranges;
1452de3b87aSKai Wang 
1462de3b87aSKai Wang enum Dwarf_Form_Class {
1472de3b87aSKai Wang 	DW_FORM_CLASS_UNKNOWN,
1482de3b87aSKai Wang 	DW_FORM_CLASS_ADDRESS,
1492de3b87aSKai Wang 	DW_FORM_CLASS_BLOCK,
1502de3b87aSKai Wang 	DW_FORM_CLASS_CONSTANT,
1512de3b87aSKai Wang 	DW_FORM_CLASS_EXPRLOC,
1522de3b87aSKai Wang 	DW_FORM_CLASS_FLAG,
1532de3b87aSKai Wang 	DW_FORM_CLASS_LINEPTR,
1542de3b87aSKai Wang 	DW_FORM_CLASS_LOCLISTPTR,
1552de3b87aSKai Wang 	DW_FORM_CLASS_MACPTR,
1562de3b87aSKai Wang 	DW_FORM_CLASS_RANGELISTPTR,
1572de3b87aSKai Wang 	DW_FORM_CLASS_REFERENCE,
1582de3b87aSKai Wang 	DW_FORM_CLASS_STRING
1592de3b87aSKai Wang };
1602de3b87aSKai Wang 
1612de3b87aSKai Wang #ifndef	DW_FRAME_HIGHEST_NORMAL_REGISTER
1622de3b87aSKai Wang #define	DW_FRAME_HIGHEST_NORMAL_REGISTER 63
1632de3b87aSKai Wang #endif
1642de3b87aSKai Wang 
1652de3b87aSKai Wang #define	DW_FRAME_RA_COL		(DW_FRAME_HIGHEST_NORMAL_REGISTER + 1)
1662de3b87aSKai Wang #define	DW_FRAME_STATIC_LINK	(DW_FRAME_HIGHEST_NORMAL_REGISTER + 2)
1672de3b87aSKai Wang 
1682de3b87aSKai Wang #ifndef	DW_FRAME_LAST_REG_NUM
1692de3b87aSKai Wang #define DW_FRAME_LAST_REG_NUM	(DW_FRAME_HIGHEST_NORMAL_REGISTER + 3)
1702de3b87aSKai Wang #endif
1712de3b87aSKai Wang 
1722de3b87aSKai Wang #ifndef	DW_FRAME_REG_INITIAL_VALUE
1732de3b87aSKai Wang #define	DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL
1742de3b87aSKai Wang #endif
1752de3b87aSKai Wang 
1762de3b87aSKai Wang #define	DW_FRAME_UNDEFINED_VAL		1034
1772de3b87aSKai Wang #define DW_FRAME_SAME_VAL		1035
1782de3b87aSKai Wang #define DW_FRAME_CFA_COL3		1436
1792de3b87aSKai Wang 
1802de3b87aSKai Wang #define	DW_EXPR_OFFSET 0
1812de3b87aSKai Wang #define	DW_EXPR_VAL_OFFSET 1
1822de3b87aSKai Wang #define	DW_EXPR_EXPRESSION 2
1832de3b87aSKai Wang #define	DW_EXPR_VAL_EXPRESSION 3
1842de3b87aSKai Wang 
1852de3b87aSKai Wang /*
1862de3b87aSKai Wang  * Frame operation only for DWARF 2.
1872de3b87aSKai Wang  */
1882de3b87aSKai Wang 
1892de3b87aSKai Wang #define DW_FRAME_CFA_COL 0
1902de3b87aSKai Wang 
1912de3b87aSKai Wang typedef struct {
1922de3b87aSKai Wang 	Dwarf_Small	fp_base_op;
1932de3b87aSKai Wang 	Dwarf_Small	fp_extended_op;
1942de3b87aSKai Wang 	Dwarf_Half	fp_register;
1952de3b87aSKai Wang 	Dwarf_Signed	fp_offset;
1962de3b87aSKai Wang 	Dwarf_Off	fp_instr_offset;
1972de3b87aSKai Wang } Dwarf_Frame_Op;
1982de3b87aSKai Wang 
1992de3b87aSKai Wang #ifndef	DW_REG_TABLE_SIZE
2002de3b87aSKai Wang #define	DW_REG_TABLE_SIZE	66
2012de3b87aSKai Wang #endif
2022de3b87aSKai Wang 
2032de3b87aSKai Wang typedef struct {
2042de3b87aSKai Wang 	struct {
2052de3b87aSKai Wang 		Dwarf_Small	dw_offset_relevant;
2062de3b87aSKai Wang 		Dwarf_Half	dw_regnum;
2072de3b87aSKai Wang 		Dwarf_Addr	dw_offset;
2082de3b87aSKai Wang 	} rules[DW_REG_TABLE_SIZE];
2092de3b87aSKai Wang } Dwarf_Regtable;
2102de3b87aSKai Wang 
2112de3b87aSKai Wang /*
2122de3b87aSKai Wang  * Frame operation for DWARF 3 and DWARF 2.
2132de3b87aSKai Wang  */
2142de3b87aSKai Wang 
2152de3b87aSKai Wang typedef struct {
2162de3b87aSKai Wang 	Dwarf_Small	fp_base_op;
2172de3b87aSKai Wang 	Dwarf_Small	fp_extended_op;
2182de3b87aSKai Wang 	Dwarf_Half	fp_register;
2192de3b87aSKai Wang 	Dwarf_Unsigned	fp_offset_or_block_len;
2202de3b87aSKai Wang 	Dwarf_Small	*fp_expr_block;
2212de3b87aSKai Wang 	Dwarf_Off	fp_instr_offset;
2222de3b87aSKai Wang } Dwarf_Frame_Op3;
2232de3b87aSKai Wang 
2242de3b87aSKai Wang typedef struct {
2252de3b87aSKai Wang 	Dwarf_Small	dw_offset_relevant;
2262de3b87aSKai Wang 	Dwarf_Small	dw_value_type;
2272de3b87aSKai Wang 	Dwarf_Half	dw_regnum;
2282de3b87aSKai Wang 	Dwarf_Unsigned	dw_offset_or_block_len;
2292de3b87aSKai Wang 	Dwarf_Ptr	dw_block_ptr;
2302de3b87aSKai Wang } Dwarf_Regtable_Entry3;
2312de3b87aSKai Wang 
2322de3b87aSKai Wang typedef struct {
2332de3b87aSKai Wang 	Dwarf_Regtable_Entry3	rt3_cfa_rule;
2342de3b87aSKai Wang 	Dwarf_Half		rt3_reg_table_size;
2352de3b87aSKai Wang 	Dwarf_Regtable_Entry3	*rt3_rules;
2362de3b87aSKai Wang } Dwarf_Regtable3;
2372de3b87aSKai Wang 
2382de3b87aSKai Wang typedef struct {
2392de3b87aSKai Wang 	Dwarf_Off	dmd_offset;
2402de3b87aSKai Wang 	Dwarf_Small	dmd_type;
2412de3b87aSKai Wang 	Dwarf_Signed	dmd_lineno;
2422de3b87aSKai Wang 	Dwarf_Signed	dmd_fileindex;
2432de3b87aSKai Wang 	char		*dmd_macro;
2442de3b87aSKai Wang } Dwarf_Macro_Details;
2452de3b87aSKai Wang 
2462de3b87aSKai Wang /*
2472de3b87aSKai Wang  * Symbols denoting allocation types, for use with dwarf_dealloc(3).
2482de3b87aSKai Wang  */
2492de3b87aSKai Wang 
2502de3b87aSKai Wang enum Dwarf_Allocation_Type {
2512de3b87aSKai Wang 	DW_DLA_ABBREV,
2522de3b87aSKai Wang 	DW_DLA_ADDR,
2532de3b87aSKai Wang 	DW_DLA_ARANGE,
2542de3b87aSKai Wang 	DW_DLA_ATTR,
2552de3b87aSKai Wang 	DW_DLA_BLOCK,
2562de3b87aSKai Wang 	DW_DLA_BOUNDS,
2572de3b87aSKai Wang 	DW_DLA_CIE,
2582de3b87aSKai Wang 	DW_DLA_DEBUG,
2592de3b87aSKai Wang 	DW_DLA_DIE,
2602de3b87aSKai Wang 	DW_DLA_ELLIST,
2612de3b87aSKai Wang 	DW_DLA_ERROR,
2622de3b87aSKai Wang 	DW_DLA_FDE,
2632de3b87aSKai Wang 	DW_DLA_FRAME_BLOCK,
2642de3b87aSKai Wang 	DW_DLA_FRAME_OP,
2652de3b87aSKai Wang 	DW_DLA_FUNC,
2662de3b87aSKai Wang 	DW_DLA_GLOBAL,
2672de3b87aSKai Wang 	DW_DLA_LINE,
2682de3b87aSKai Wang 	DW_DLA_LINEBUF,
2692de3b87aSKai Wang 	DW_DLA_LIST,
2702de3b87aSKai Wang 	DW_DLA_LOC,
2712de3b87aSKai Wang 	DW_DLA_LOCDESC,
2722de3b87aSKai Wang 	DW_DLA_LOC_BLOCK,
2732de3b87aSKai Wang 	DW_DLA_RANGES,
2742de3b87aSKai Wang 	DW_DLA_STRING,
2752de3b87aSKai Wang 	DW_DLA_SUBSCR,
2762de3b87aSKai Wang 	DW_DLA_TYPE,
2772de3b87aSKai Wang 	DW_DLA_TYPENAME,
2782de3b87aSKai Wang 	DW_DLA_VAR,
2792de3b87aSKai Wang 	DW_DLA_WEAK
2802de3b87aSKai Wang };
2812de3b87aSKai Wang 
2822de3b87aSKai Wang /*
2832de3b87aSKai Wang  * Relocation Type.
2842de3b87aSKai Wang  */
2852de3b87aSKai Wang enum Dwarf_Rel_Type {
2862de3b87aSKai Wang 	dwarf_drt_none = 0,
2872de3b87aSKai Wang 	dwarf_drt_data_reloc,
2882de3b87aSKai Wang 	dwarf_drt_segment_rel,
2892de3b87aSKai Wang 	dwarf_drt_first_of_length_pair,
2902de3b87aSKai Wang 	dwarf_drt_second_of_length_pair
2912de3b87aSKai Wang };
2922de3b87aSKai Wang 
2932de3b87aSKai Wang /*
2942de3b87aSKai Wang  * Relocation Entry.
2952de3b87aSKai Wang  */
2962de3b87aSKai Wang typedef struct Dwarf_Relocation_Data_s {
2972de3b87aSKai Wang 	unsigned char drd_type;
2982de3b87aSKai Wang 	unsigned char drd_length;
2992de3b87aSKai Wang 	Dwarf_Unsigned drd_offset;
3002de3b87aSKai Wang 	Dwarf_Unsigned drd_symbol_index;
3012de3b87aSKai Wang } *Dwarf_Relocation_Data;
3022de3b87aSKai Wang 
3032de3b87aSKai Wang #define	DWARF_DRD_BUFFER_VERSION	2
3042de3b87aSKai Wang 
3052de3b87aSKai Wang /*
3062de3b87aSKai Wang  * Error numbers which are specific to this implementation.
3072de3b87aSKai Wang  */
3082de3b87aSKai Wang enum {
3092de3b87aSKai Wang 	DW_DLE_NONE,			/* No error. */
3102de3b87aSKai Wang 	DW_DLE_ERROR,			/* An error! */
3112de3b87aSKai Wang 	DW_DLE_ARGUMENT,		/* Invalid argument. */
3122de3b87aSKai Wang 	DW_DLE_DEBUG_INFO_NULL,		/* Debug info NULL. */
3132de3b87aSKai Wang 	DW_DLE_NO_ENTRY,		/* No entry. */
3142de3b87aSKai Wang 	DW_DLE_MEMORY,			/* Insufficient memory. */
3152de3b87aSKai Wang 	DW_DLE_ELF,			/* ELF error. */
3162de3b87aSKai Wang 	DW_DLE_CU_LENGTH_ERROR,		/* Invalid compilation unit data. */
3172de3b87aSKai Wang 	DW_DLE_VERSION_STAMP_ERROR,	/* Invalid version. */
3182de3b87aSKai Wang 	DW_DLE_DEBUG_ABBREV_NULL,	/* Abbrev not found. */
3192de3b87aSKai Wang 	DW_DLE_DIE_NO_CU_CONTEXT,	/* No current compilation unit. */
3202de3b87aSKai Wang 	DW_DLE_LOC_EXPR_BAD,		/* Invalid location expression. */
3212de3b87aSKai Wang 	DW_DLE_EXPR_LENGTH_BAD,		/* Invalid DWARF expression. */
3222de3b87aSKai Wang 	DW_DLE_DEBUG_LOC_SECTION_SHORT,	/* Loclist section too short. */
3232de3b87aSKai Wang 	DW_DLE_ATTR_FORM_BAD,		/* Invalid attribute form. */
3242de3b87aSKai Wang 	DW_DLE_DEBUG_LINE_LENGTH_BAD,	/* Line info section too short. */
3252de3b87aSKai Wang 	DW_DLE_LINE_FILE_NUM_BAD,	/* Invalid file number. */
3262de3b87aSKai Wang 	DW_DLE_DIR_INDEX_BAD,		/* Invalid dir index. */
3272de3b87aSKai Wang 	DW_DLE_DEBUG_FRAME_LENGTH_BAD,	/* Frame section too short. */
3282de3b87aSKai Wang 	DW_DLE_NO_CIE_FOR_FDE,		/* CIE not found for certain FDE. */
3292de3b87aSKai Wang 	DW_DLE_FRAME_AUGMENTATION_UNKNOWN, /* Unknown CIE augmentation. */
3302de3b87aSKai Wang 	DW_DLE_FRAME_INSTR_EXEC_ERROR,	/* Frame instruction exec error. */
3312de3b87aSKai Wang 	DW_DLE_FRAME_VERSION_BAD,	/* Invalid frame section version. */
3322de3b87aSKai Wang 	DW_DLE_FRAME_TABLE_COL_BAD,	/* Invalid table column. */
3332de3b87aSKai Wang 	DW_DLE_DF_REG_NUM_TOO_HIGH,	/* Insufficient regtable space. */
3342de3b87aSKai Wang 	DW_DLE_PC_NOT_IN_FDE_RANGE,	/* PC requested not in the FDE range. */
3352de3b87aSKai Wang 	DW_DLE_ARANGE_OFFSET_BAD,	/* Invalid arange offset. */
3362de3b87aSKai Wang 	DW_DLE_DEBUG_MACRO_INCONSISTENT,/* Invalid macinfo data. */
3372de3b87aSKai Wang 	DW_DLE_ELF_SECT_ERR,		/* Application callback failed. */
338dbf05458SMark Johnston 	DW_DLE_COMPRESSION,		/* Section decompression error. */
3392de3b87aSKai Wang 	DW_DLE_NUM			/* Max error number. */
3402de3b87aSKai Wang };
3412de3b87aSKai Wang 
3422de3b87aSKai Wang /*
3432de3b87aSKai Wang  * Mapping of SGI libdwarf error codes for comptibility.
3442de3b87aSKai Wang  */
3452de3b87aSKai Wang #define	DW_DLE_DBG_ALLOC			DW_DLE_MEMORY
3462de3b87aSKai Wang #define	DW_DLE_ALLOC_FAIL			DW_DLE_MEMORY
3472de3b87aSKai Wang #define	DW_DLE_SECT_ALLOC			DW_DLE_MEMORY
3482de3b87aSKai Wang #define	DW_DLE_FILE_ENTRY_ALLOC			DW_DLE_MEMORY
3492de3b87aSKai Wang #define	DW_DLE_LINE_ALLOC			DW_DLE_MEMORY
3502de3b87aSKai Wang #define	DW_DLE_FPGM_ALLOC			DW_DLE_MEMORY
3512de3b87aSKai Wang #define	DW_DLE_INCDIR_ALLOC			DW_DLE_MEMORY
3522de3b87aSKai Wang #define	DW_DLE_STRING_ALLOC			DW_DLE_MEMORY
3532de3b87aSKai Wang #define	DW_DLE_CHUNK_ALLOC			DW_DLE_MEMORY
3542de3b87aSKai Wang #define	DW_DLE_CIE_ALLOC			DW_DLE_MEMORY
3552de3b87aSKai Wang #define	DW_DLE_FDE_ALLOC			DW_DLE_MEMORY
3562de3b87aSKai Wang #define	DW_DLE_CIE_OFFS_ALLOC			DW_DLE_MEMORY
3572de3b87aSKai Wang #define	DW_DLE_DIE_ALLOC			DW_DLE_MEMORY
3582de3b87aSKai Wang #define	DW_DLE_ATTR_ALLOC			DW_DLE_MEMORY
3592de3b87aSKai Wang #define	DW_DLE_ABBREV_ALLOC			DW_DLE_MEMORY
3602de3b87aSKai Wang #define	DW_DLE_ADDR_ALLOC			DW_DLE_MEMORY
3612de3b87aSKai Wang #define	DW_DLE_REL_ALLOC			DW_DLE_MEMORY
3622de3b87aSKai Wang #define	DW_DLE_MACINFO_MALLOC_FAIL		DW_DLE_MEMORY
3632de3b87aSKai Wang #define	DW_DLE_DEBUG_MACRO_MALLOC_SPACE		DW_DLE_MEMORY
3642de3b87aSKai Wang #define	DW_DLE_DF_ALLOC_FAIL			DW_DLE_MEMORY
3652de3b87aSKai Wang #define	DW_DLE_RELOC_SECTION_MALLOC_FAIL	DW_DLE_MEMORY
3662de3b87aSKai Wang #define	DW_DLE_DBG_NULL				DW_DLE_ARGUMENT
3672de3b87aSKai Wang #define	DW_DLE_DIE_NULL				DW_DLE_ARGUMENT
3682de3b87aSKai Wang #define	DW_DLE_FDE_NULL				DW_DLE_ARGUMENT
3692de3b87aSKai Wang #define	DW_DLE_CIE_NULL				DW_DLE_ARGUMENT
3702de3b87aSKai Wang #define	DW_DLE_ATTR_NULL			DW_DLE_ARGUMENT
3712de3b87aSKai Wang #define	DW_DLE_GLOBAL_NULL			DW_DLE_ARGUMENT
3722de3b87aSKai Wang #define	DW_DLE_ARANGES_NULL			DW_DLE_ARGUMENT
3732de3b87aSKai Wang #define	DW_DLE_ARANGE_NULL			DW_DLE_ARGUMENT
3742de3b87aSKai Wang #define	DW_DLE_EXPR_NULL			DW_DLE_ARGUMENT
3752de3b87aSKai Wang #define	DW_DLE_FUNC_NULL			DW_DLE_ARGUMENT
3762de3b87aSKai Wang #define	DW_DLE_TYPE_NULL			DW_DLE_ARGUMENT
3772de3b87aSKai Wang #define	DW_DLE_VAR_NULL				DW_DLE_ARGUMENT
3782de3b87aSKai Wang #define	DW_DLE_WEAK_NULL			DW_DLE_ARGUMENT
3792de3b87aSKai Wang #define	DW_DLE_ELF_BEGIN_ERROR			DW_DLE_ELF
3802de3b87aSKai Wang #define	DW_DLE_ELF_GETEHDR_ERROR		DW_DLE_ELF
3812de3b87aSKai Wang #define	DW_DLE_ELF_GETSHDR_ERROR		DW_DLE_ELF
3822de3b87aSKai Wang #define	DW_DLE_ELF_STRPTR_ERROR			DW_DLE_ELF
3832de3b87aSKai Wang #define	DW_DLE_ELF_SECT_ERROR			DW_DLE_ELF
3842de3b87aSKai Wang #define	DW_DLE_ELF_GETIDENT_ERROR		DW_DLE_ELF
3852de3b87aSKai Wang 
3862de3b87aSKai Wang typedef struct _Dwarf_Error {
3872de3b87aSKai Wang 	int		err_error;	/* DWARF error. */
3882de3b87aSKai Wang 	int		err_elferror;	/* ELF error. */
3892de3b87aSKai Wang 	const char	*err_func;	/* Function name where error occurred. */
3902de3b87aSKai Wang 	int		err_line;	/* Line number where error occurred. */
3912de3b87aSKai Wang 	char		err_msg[1024];	/* Formatted error message. */
3922de3b87aSKai Wang } Dwarf_Error;
3932de3b87aSKai Wang 
3942de3b87aSKai Wang /*
3952de3b87aSKai Wang  * Dwarf error handler.
3962de3b87aSKai Wang  */
3972de3b87aSKai Wang typedef void (*Dwarf_Handler)(Dwarf_Error, Dwarf_Ptr);
3982de3b87aSKai Wang 
3992de3b87aSKai Wang #define	dwarf_errno(error)	error.err_error
4002de3b87aSKai Wang #define	dwarf_errmsg(error)	dwarf_errmsg_(&error)
4012de3b87aSKai Wang 
4022de3b87aSKai Wang /*
4032de3b87aSKai Wang  * Return values which have to be compatible with other
4042de3b87aSKai Wang  * implementations of libdwarf.
4052de3b87aSKai Wang  */
4062de3b87aSKai Wang #define DW_DLV_NO_ENTRY		-1
4072de3b87aSKai Wang #define DW_DLV_OK		0
4082de3b87aSKai Wang #define	DW_DLV_ERROR		1
4092de3b87aSKai Wang #define DW_DLV_BADADDR		NULL
4102de3b87aSKai Wang #define DW_DLV_NOCOUNT		((Dwarf_Signed) -1)
4112de3b87aSKai Wang 
4122de3b87aSKai Wang /*
4132de3b87aSKai Wang  * Access modes.
4142de3b87aSKai Wang  */
4152de3b87aSKai Wang #define DW_DLC_READ        	0x0001
4162de3b87aSKai Wang #define DW_DLC_WRITE		0x0002
4172de3b87aSKai Wang #define	DW_DLC_RDWR		0x0004
4182de3b87aSKai Wang 
4192de3b87aSKai Wang /*
4202de3b87aSKai Wang  * Flags used by libdwarf producer.
4212de3b87aSKai Wang  */
4222de3b87aSKai Wang #define DW_DLC_SIZE_64			0x40000000
4232de3b87aSKai Wang #define DW_DLC_SIZE_32			0x20000000
4242de3b87aSKai Wang #define DW_DLC_OFFSET_SIZE_64		0x10000000
4252de3b87aSKai Wang #define DW_DLC_ISA_MIPS			0x80000000
4262de3b87aSKai Wang #define DW_DLC_ISA_IA64			0x01000000
4272de3b87aSKai Wang #define DW_DLC_STREAM_RELOCATIONS	0x02000000
4282de3b87aSKai Wang #define DW_DLC_SYMBOLIC_RELOCATIONS	0x04000000
4292de3b87aSKai Wang #define DW_DLC_TARGET_BIGENDIAN		0x08000000
4302de3b87aSKai Wang #define DW_DLC_TARGET_LITTLEENDIAN	0x00100000
4312de3b87aSKai Wang 
4322de3b87aSKai Wang /*
4332de3b87aSKai Wang  * Instruction set architectures supported by this implementation.
4342de3b87aSKai Wang  */
4352de3b87aSKai Wang enum Dwarf_ISA {
4362de3b87aSKai Wang 	DW_ISA_ARM,
4372de3b87aSKai Wang 	DW_ISA_IA64,
4382de3b87aSKai Wang 	DW_ISA_MIPS,
4392de3b87aSKai Wang 	DW_ISA_PPC,
4402de3b87aSKai Wang 	DW_ISA_SPARC,
4412de3b87aSKai Wang 	DW_ISA_X86,
4422de3b87aSKai Wang 	DW_ISA_X86_64,
44384c37881SEd Maste 	DW_ISA_AARCH64,
444ce35ddbcSRuslan Bukin 	DW_ISA_RISCV,
4452de3b87aSKai Wang 	DW_ISA_MAX
4462de3b87aSKai Wang };
4472de3b87aSKai Wang 
4482de3b87aSKai Wang /* Function prototype definitions. */
44967d97fe7SEd Maste #ifdef __cplusplus
45067d97fe7SEd Maste extern "C" {
45167d97fe7SEd Maste #endif
4522de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die, char *, Dwarf_Error *);
4532de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die, Dwarf_Signed,
4542de3b87aSKai Wang 		    Dwarf_Error *);
4552de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die, char *,
4562de3b87aSKai Wang 		    Dwarf_Error *);
4572de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(Dwarf_P_Die,
4582de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Error *);
4592de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_dataref(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4602de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4612de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4622de3b87aSKai Wang 		    Dwarf_Small, Dwarf_Error *);
4632de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug, Dwarf_P_Die,
4642de3b87aSKai Wang 		    Dwarf_Half, Dwarf_P_Expr, Dwarf_Error *);
4652de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die, char *, Dwarf_Error *);
4662de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die, char *, Dwarf_Error *);
4672de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug, Dwarf_P_Die,
4682de3b87aSKai Wang 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4692de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4702de3b87aSKai Wang 		    Dwarf_P_Die, Dwarf_Error *);
4712de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug, Dwarf_P_Die,
4722de3b87aSKai Wang 		    Dwarf_Half, Dwarf_Signed, Dwarf_Error *);
4732de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug, Dwarf_P_Die, Dwarf_Half,
4742de3b87aSKai Wang 		    char *, Dwarf_Error *);
4752de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug, Dwarf_P_Die,
4762de3b87aSKai Wang 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Error *);
4772de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug, Dwarf_P_Die,
4782de3b87aSKai Wang 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4792de3b87aSKai Wang Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug, Dwarf_P_Die,
4802de3b87aSKai Wang 		    Dwarf_Half, Dwarf_Unsigned, Dwarf_Error *);
4812de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_arange(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
4822de3b87aSKai Wang 		    Dwarf_Signed, Dwarf_Error *);
4832de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_arange_b(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
4842de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *);
4852de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_die_to_debug(Dwarf_P_Debug, Dwarf_P_Die,
4862de3b87aSKai Wang 		    Dwarf_Error *);
4872de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_directory_decl(Dwarf_P_Debug, char *, Dwarf_Error *);
4882de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_expr_addr(Dwarf_P_Expr, Dwarf_Unsigned,
4892de3b87aSKai Wang 		    Dwarf_Signed, Dwarf_Error *);
4902de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_expr_addr_b(Dwarf_P_Expr, Dwarf_Unsigned,
4912de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Error *);
4922de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_expr_gen(Dwarf_P_Expr, Dwarf_Small, Dwarf_Unsigned,
4932de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Error *);
4942de3b87aSKai Wang Dwarf_P_Fde	dwarf_add_fde_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned,
4952de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Error *);
4962de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_file_decl(Dwarf_P_Debug, char *, Dwarf_Unsigned,
4972de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *);
4982de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_frame_cie(Dwarf_P_Debug, char *, Dwarf_Small,
4992de3b87aSKai Wang 		    Dwarf_Small, Dwarf_Small, Dwarf_Ptr, Dwarf_Unsigned,
5002de3b87aSKai Wang 		    Dwarf_Error *);
5012de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_frame_fde(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die,
5022de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned,
5032de3b87aSKai Wang 		    Dwarf_Error *);
5042de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_frame_fde_b(Dwarf_P_Debug, Dwarf_P_Fde, Dwarf_P_Die,
5052de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Unsigned, Dwarf_Unsigned,
5062de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Addr, Dwarf_Error *);
5072de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_funcname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5082de3b87aSKai Wang 		    Dwarf_Error *);
5092de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_line_entry(Dwarf_P_Debug, Dwarf_Unsigned,
5102de3b87aSKai Wang 		    Dwarf_Addr, Dwarf_Unsigned, Dwarf_Signed, Dwarf_Bool,
5112de3b87aSKai Wang 		    Dwarf_Bool, Dwarf_Error *);
5122de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_pubname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5132de3b87aSKai Wang 		    Dwarf_Error *);
5142de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_typename(Dwarf_P_Debug, Dwarf_P_Die, char *,
5152de3b87aSKai Wang 		    Dwarf_Error *);
5162de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_varname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5172de3b87aSKai Wang 		    Dwarf_Error *);
5182de3b87aSKai Wang Dwarf_Unsigned	dwarf_add_weakname(Dwarf_P_Debug, Dwarf_P_Die, char *,
5192de3b87aSKai Wang 		    Dwarf_Error *);
5202de3b87aSKai Wang int		dwarf_arrayorder(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5212de3b87aSKai Wang int		dwarf_attr(Dwarf_Die, Dwarf_Half, Dwarf_Attribute *,
5222de3b87aSKai Wang 		    Dwarf_Error *);
5232de3b87aSKai Wang int		dwarf_attrlist(Dwarf_Die, Dwarf_Attribute **,
5242de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Error *);
525cf781b2eSEd Maste int		dwarf_attroffset(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *);
5262de3b87aSKai Wang int		dwarf_attrval_flag(Dwarf_Die, Dwarf_Half, Dwarf_Bool *,
5272de3b87aSKai Wang 		    Dwarf_Error *);
5282de3b87aSKai Wang int		dwarf_attrval_signed(Dwarf_Die, Dwarf_Half, Dwarf_Signed *,
5292de3b87aSKai Wang 		    Dwarf_Error *);
5302de3b87aSKai Wang int		dwarf_attrval_string(Dwarf_Die, Dwarf_Half, const char **,
5312de3b87aSKai Wang 		    Dwarf_Error *);
5322de3b87aSKai Wang int		dwarf_attrval_unsigned(Dwarf_Die, Dwarf_Half, Dwarf_Unsigned *,
5332de3b87aSKai Wang 		    Dwarf_Error *);
5342de3b87aSKai Wang int		dwarf_bitoffset(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5352de3b87aSKai Wang int		dwarf_bitsize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5362de3b87aSKai Wang int		dwarf_bytesize(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
5372de3b87aSKai Wang int		dwarf_child(Dwarf_Die, Dwarf_Die *, Dwarf_Error *);
5382de3b87aSKai Wang void		dwarf_dealloc(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned);
5392de3b87aSKai Wang int		dwarf_def_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *, char *,
5402de3b87aSKai Wang 		    Dwarf_Error *);
5412de3b87aSKai Wang int		dwarf_die_CU_offset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *);
5422de3b87aSKai Wang int		dwarf_die_CU_offset_range(Dwarf_Die, Dwarf_Off *, Dwarf_Off *,
5432de3b87aSKai Wang 		    Dwarf_Error *);
5442de3b87aSKai Wang int		dwarf_die_abbrev_code(Dwarf_Die);
5452de3b87aSKai Wang Dwarf_P_Die	dwarf_die_link(Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die,
5462de3b87aSKai Wang 		    Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *);
5472de3b87aSKai Wang int		dwarf_diename(Dwarf_Die, char **, Dwarf_Error *);
5482de3b87aSKai Wang int		dwarf_dieoffset(Dwarf_Die, Dwarf_Off *, Dwarf_Error *);
5492de3b87aSKai Wang int		dwarf_elf_init(Elf *, int, Dwarf_Handler, Dwarf_Ptr,
5502de3b87aSKai Wang 		    Dwarf_Debug *, Dwarf_Error *);
5512de3b87aSKai Wang int		dwarf_end_macro_file(Dwarf_P_Debug, Dwarf_Error *);
5522de3b87aSKai Wang const char	*dwarf_errmsg_(Dwarf_Error *);
5532de3b87aSKai Wang int		dwarf_expand_frame_instructions(Dwarf_Cie, Dwarf_Ptr,
5542de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *,
5552de3b87aSKai Wang 		    Dwarf_Error *);
5562de3b87aSKai Wang Dwarf_Unsigned	dwarf_expr_current_offset(Dwarf_P_Expr, Dwarf_Error *);
5572de3b87aSKai Wang Dwarf_Addr	dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Unsigned *,
5582de3b87aSKai Wang 		    Dwarf_Error *);
5592de3b87aSKai Wang Dwarf_P_Fde	dwarf_fde_cfa_offset(Dwarf_P_Fde, Dwarf_Unsigned, Dwarf_Signed,
5602de3b87aSKai Wang 		    Dwarf_Error *);
5612de3b87aSKai Wang void		dwarf_fde_cie_list_dealloc(Dwarf_Debug, Dwarf_Cie *,
5622de3b87aSKai Wang 		    Dwarf_Signed, Dwarf_Fde *, Dwarf_Signed);
5632de3b87aSKai Wang char		*dwarf_find_macro_value_start(char *);
5642de3b87aSKai Wang int		dwarf_finish(Dwarf_Debug, Dwarf_Error *);
5652de3b87aSKai Wang int		dwarf_formaddr(Dwarf_Attribute, Dwarf_Addr *, Dwarf_Error *);
5662de3b87aSKai Wang int		dwarf_formblock(Dwarf_Attribute, Dwarf_Block **, Dwarf_Error *);
5672de3b87aSKai Wang int		dwarf_formexprloc(Dwarf_Attribute, Dwarf_Unsigned *,
5682de3b87aSKai Wang 		    Dwarf_Ptr *, Dwarf_Error *);
5692de3b87aSKai Wang int		dwarf_formflag(Dwarf_Attribute, Dwarf_Bool *, Dwarf_Error *);
5702de3b87aSKai Wang int		dwarf_formref(Dwarf_Attribute, Dwarf_Off *, Dwarf_Error *);
5712de3b87aSKai Wang int		dwarf_formsdata(Dwarf_Attribute, Dwarf_Signed *, Dwarf_Error *);
5722de3b87aSKai Wang int		dwarf_formsig8(Dwarf_Attribute, Dwarf_Sig8 *, Dwarf_Error *);
5732de3b87aSKai Wang int		dwarf_formstring(Dwarf_Attribute, char **, Dwarf_Error *);
5742de3b87aSKai Wang int		dwarf_formudata(Dwarf_Attribute, Dwarf_Unsigned *,
5752de3b87aSKai Wang 		    Dwarf_Error *);
5762de3b87aSKai Wang int		dwarf_func_cu_offset(Dwarf_Func, Dwarf_Off *, Dwarf_Error *);
5772de3b87aSKai Wang int		dwarf_func_die_offset(Dwarf_Func, Dwarf_Off *,
5782de3b87aSKai Wang 		    Dwarf_Error *);
5792de3b87aSKai Wang int		dwarf_func_name_offsets(Dwarf_Func, char **,
5802de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
5812de3b87aSKai Wang int		dwarf_funcname(Dwarf_Func, char **, Dwarf_Error *);
5822de3b87aSKai Wang void		dwarf_funcs_dealloc(Dwarf_Debug, Dwarf_Func *, Dwarf_Signed);
5832de3b87aSKai Wang int		dwarf_get_ACCESS_name(unsigned, const char **);
5842de3b87aSKai Wang int		dwarf_get_ATE_name(unsigned, const char **);
5852de3b87aSKai Wang int		dwarf_get_AT_name(unsigned, const char **);
5862de3b87aSKai Wang int		dwarf_get_CC_name(unsigned, const char **);
5872de3b87aSKai Wang int		dwarf_get_CFA_name(unsigned, const char **);
5882de3b87aSKai Wang int		dwarf_get_CHILDREN_name(unsigned, const char **);
5892de3b87aSKai Wang int		dwarf_get_DSC_name(unsigned, const char **);
5902de3b87aSKai Wang int		dwarf_get_DS_name(unsigned, const char **);
5912de3b87aSKai Wang int		dwarf_get_EH_name(unsigned, const char **);
5922de3b87aSKai Wang int		dwarf_get_END_name(unsigned, const char **);
5932de3b87aSKai Wang int		dwarf_get_FORM_name(unsigned, const char **);
5942de3b87aSKai Wang int		dwarf_get_ID_name(unsigned, const char **);
5952de3b87aSKai Wang int		dwarf_get_INL_name(unsigned, const char **);
5962de3b87aSKai Wang int		dwarf_get_LANG_name(unsigned, const char **);
5972de3b87aSKai Wang int		dwarf_get_LNE_name(unsigned, const char **);
5982de3b87aSKai Wang int		dwarf_get_LNS_name(unsigned, const char **);
5992de3b87aSKai Wang int		dwarf_get_MACINFO_name(unsigned, const char **);
6002de3b87aSKai Wang int		dwarf_get_OP_name(unsigned, const char **);
6012de3b87aSKai Wang int		dwarf_get_ORD_name(unsigned, const char **);
6022de3b87aSKai Wang int		dwarf_get_TAG_name(unsigned, const char **);
603*7bb441c8SMark Johnston int		dwarf_get_UT_name(unsigned, const char **);
6042de3b87aSKai Wang int		dwarf_get_VIRTUALITY_name(unsigned, const char **);
6052de3b87aSKai Wang int		dwarf_get_VIS_name(unsigned, const char **);
6062de3b87aSKai Wang int		dwarf_get_abbrev(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Abbrev *,
6072de3b87aSKai Wang 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Error *);
6082de3b87aSKai Wang int		dwarf_get_abbrev_children_flag(Dwarf_Abbrev, Dwarf_Signed *,
6092de3b87aSKai Wang 		    Dwarf_Error *);
6102de3b87aSKai Wang int		dwarf_get_abbrev_code(Dwarf_Abbrev, Dwarf_Unsigned *,
6112de3b87aSKai Wang 		    Dwarf_Error *);
6122de3b87aSKai Wang int		dwarf_get_abbrev_entry(Dwarf_Abbrev, Dwarf_Signed, Dwarf_Half *,
6132de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Off *, Dwarf_Error *);
6142de3b87aSKai Wang int		dwarf_get_abbrev_tag(Dwarf_Abbrev, Dwarf_Half *, Dwarf_Error *);
6152de3b87aSKai Wang int		dwarf_get_address_size(Dwarf_Debug, Dwarf_Half *,
6162de3b87aSKai Wang 		    Dwarf_Error *);
6172de3b87aSKai Wang int		dwarf_get_arange(Dwarf_Arange *, Dwarf_Unsigned, Dwarf_Addr,
6182de3b87aSKai Wang 		    Dwarf_Arange *, Dwarf_Error *);
6192de3b87aSKai Wang int		dwarf_get_arange_cu_header_offset(Dwarf_Arange, Dwarf_Off *,
6202de3b87aSKai Wang 		    Dwarf_Error *);
6212de3b87aSKai Wang int		dwarf_get_arange_info(Dwarf_Arange, Dwarf_Addr *,
6222de3b87aSKai Wang 		    Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Error *);
6232de3b87aSKai Wang int		dwarf_get_aranges(Dwarf_Debug, Dwarf_Arange **, Dwarf_Signed *,
6242de3b87aSKai Wang 		    Dwarf_Error *);
6252de3b87aSKai Wang int		dwarf_get_cie_index(Dwarf_Cie, Dwarf_Signed *, Dwarf_Error *);
6262de3b87aSKai Wang int		dwarf_get_cie_info(Dwarf_Cie, Dwarf_Unsigned *, Dwarf_Small *,
6272de3b87aSKai Wang 		    char **, Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Half *,
6282de3b87aSKai Wang 		    Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Error *);
6292de3b87aSKai Wang int		dwarf_get_cie_of_fde(Dwarf_Fde, Dwarf_Cie *, Dwarf_Error *);
6302de3b87aSKai Wang int		dwarf_get_cu_die_offset(Dwarf_Arange, Dwarf_Off *,
6312de3b87aSKai Wang 		    Dwarf_Error *);
6322de3b87aSKai Wang int		dwarf_get_cu_die_offset_given_cu_header_offset(Dwarf_Debug,
6332de3b87aSKai Wang 		    Dwarf_Off, Dwarf_Off *, Dwarf_Error *);
634cf781b2eSEd Maste int		dwarf_get_cu_die_offset_given_cu_header_offset_b(Dwarf_Debug,
635cf781b2eSEd Maste 		    Dwarf_Off, Dwarf_Bool, Dwarf_Off *, Dwarf_Error *);
636cf781b2eSEd Maste Dwarf_Bool	dwarf_get_die_infotypes_flag(Dwarf_Die);
6372de3b87aSKai Wang int		dwarf_get_elf(Dwarf_Debug, Elf **, Dwarf_Error *);
6382de3b87aSKai Wang int		dwarf_get_fde_at_pc(Dwarf_Fde *, Dwarf_Addr, Dwarf_Fde *,
6392de3b87aSKai Wang 		    Dwarf_Addr *, Dwarf_Addr *, Dwarf_Error *);
6402de3b87aSKai Wang int		dwarf_get_fde_info_for_all_regs(Dwarf_Fde, Dwarf_Addr,
6412de3b87aSKai Wang 		    Dwarf_Regtable *, Dwarf_Addr *, Dwarf_Error *);
6422de3b87aSKai Wang int		dwarf_get_fde_info_for_all_regs3(Dwarf_Fde, Dwarf_Addr,
6432de3b87aSKai Wang 		    Dwarf_Regtable3 *, Dwarf_Addr *, Dwarf_Error *);
6442de3b87aSKai Wang int		dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde, Dwarf_Addr,
6452de3b87aSKai Wang 		    Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *,
6462de3b87aSKai Wang 		    Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *);
6472de3b87aSKai Wang int		dwarf_get_fde_info_for_reg(Dwarf_Fde, Dwarf_Half, Dwarf_Addr,
6482de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Signed *, Dwarf_Signed *,
6492de3b87aSKai Wang 		    Dwarf_Addr *, Dwarf_Error *);
6502de3b87aSKai Wang int		dwarf_get_fde_info_for_reg3(Dwarf_Fde, Dwarf_Half, Dwarf_Addr,
6512de3b87aSKai Wang 		    Dwarf_Small *, Dwarf_Signed *, Dwarf_Signed *,
6522de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Ptr *, Dwarf_Addr *, Dwarf_Error *);
6532de3b87aSKai Wang int		dwarf_get_fde_instr_bytes(Dwarf_Fde, Dwarf_Ptr *,
6542de3b87aSKai Wang 		    Dwarf_Unsigned *, Dwarf_Error *);
6552de3b87aSKai Wang int		dwarf_get_fde_list(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *,
6562de3b87aSKai Wang 		    Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *);
6572de3b87aSKai Wang int		dwarf_get_fde_list_eh(Dwarf_Debug, Dwarf_Cie **, Dwarf_Signed *,
6582de3b87aSKai Wang 		    Dwarf_Fde **, Dwarf_Signed *, Dwarf_Error *);
6592de3b87aSKai Wang int		dwarf_get_fde_n(Dwarf_Fde *, Dwarf_Unsigned, Dwarf_Fde *,
6602de3b87aSKai Wang 		    Dwarf_Error *);
6612de3b87aSKai Wang int		dwarf_get_fde_range(Dwarf_Fde, Dwarf_Addr *, Dwarf_Unsigned *,
6622de3b87aSKai Wang 		    Dwarf_Ptr *, Dwarf_Unsigned *, Dwarf_Off *, Dwarf_Signed *,
6632de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Error *);
6642de3b87aSKai Wang enum Dwarf_Form_Class dwarf_get_form_class(Dwarf_Half, Dwarf_Half, Dwarf_Half,
6652de3b87aSKai Wang 		    Dwarf_Half);
6662de3b87aSKai Wang int		dwarf_get_funcs(Dwarf_Debug, Dwarf_Func **, Dwarf_Signed *,
6672de3b87aSKai Wang 		    Dwarf_Error *);
6682de3b87aSKai Wang int		dwarf_get_globals(Dwarf_Debug, Dwarf_Global **, Dwarf_Signed *,
6692de3b87aSKai Wang 		    Dwarf_Error *);
6702de3b87aSKai Wang int		dwarf_get_loclist_entry(Dwarf_Debug, Dwarf_Unsigned,
6712de3b87aSKai Wang 		    Dwarf_Addr *, Dwarf_Addr *, Dwarf_Ptr *, Dwarf_Unsigned *,
6722de3b87aSKai Wang 		    Dwarf_Unsigned *, Dwarf_Error *);
6732de3b87aSKai Wang int		dwarf_get_macro_details(Dwarf_Debug, Dwarf_Off, Dwarf_Unsigned,
6742de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Macro_Details **, Dwarf_Error *);
6752de3b87aSKai Wang int		dwarf_get_pubtypes(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *,
6762de3b87aSKai Wang 		    Dwarf_Error *);
6772de3b87aSKai Wang int		dwarf_get_ranges(Dwarf_Debug, Dwarf_Off, Dwarf_Ranges **,
6782de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *);
6792de3b87aSKai Wang int		dwarf_get_ranges_a(Dwarf_Debug, Dwarf_Off, Dwarf_Die,
6802de3b87aSKai Wang 		    Dwarf_Ranges **, Dwarf_Signed *, Dwarf_Unsigned *,
6812de3b87aSKai Wang 		    Dwarf_Error *);
6822de3b87aSKai Wang int		dwarf_get_relocation_info(Dwarf_P_Debug, Dwarf_Signed *,
6832de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Relocation_Data *,
6842de3b87aSKai Wang 		    Dwarf_Error *);
6852de3b87aSKai Wang int		dwarf_get_relocation_info_count(Dwarf_P_Debug, Dwarf_Unsigned *,
6862de3b87aSKai Wang 		    int *, Dwarf_Error *);
6872de3b87aSKai Wang Dwarf_Ptr	dwarf_get_section_bytes(Dwarf_P_Debug, Dwarf_Signed,
6882de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Unsigned *, Dwarf_Error *);
689cf781b2eSEd Maste int		dwarf_get_section_max_offsets(Dwarf_Debug, Dwarf_Unsigned *,
690cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
691cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
692cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
693cf781b2eSEd Maste 		    Dwarf_Unsigned *);
694cf781b2eSEd Maste int		dwarf_get_section_max_offsets_b(Dwarf_Debug, Dwarf_Unsigned *,
695cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
696cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
697cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *, Dwarf_Unsigned *,
698cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Unsigned *);
6992de3b87aSKai Wang int		dwarf_get_str(Dwarf_Debug, Dwarf_Off, char **, Dwarf_Signed *,
7002de3b87aSKai Wang 		    Dwarf_Error *);
7012de3b87aSKai Wang int		dwarf_get_types(Dwarf_Debug, Dwarf_Type **, Dwarf_Signed *,
7022de3b87aSKai Wang 		    Dwarf_Error *);
7032de3b87aSKai Wang int		dwarf_get_vars(Dwarf_Debug, Dwarf_Var **, Dwarf_Signed *,
7042de3b87aSKai Wang 		    Dwarf_Error *);
7052de3b87aSKai Wang int		dwarf_get_weaks(Dwarf_Debug, Dwarf_Weak **, Dwarf_Signed *,
7062de3b87aSKai Wang 		    Dwarf_Error *);
7072de3b87aSKai Wang int		dwarf_global_cu_offset(Dwarf_Global, Dwarf_Off *, Dwarf_Error *);
7082de3b87aSKai Wang int		dwarf_global_die_offset(Dwarf_Global, Dwarf_Off *,
7092de3b87aSKai Wang 		    Dwarf_Error *);
7102de3b87aSKai Wang int		dwarf_global_formref(Dwarf_Attribute, Dwarf_Off *,
7112de3b87aSKai Wang 		    Dwarf_Error *);
7122de3b87aSKai Wang int		dwarf_global_name_offsets(Dwarf_Global, char **,
7132de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
7142de3b87aSKai Wang void		dwarf_globals_dealloc(Dwarf_Debug, Dwarf_Global *, Dwarf_Signed);
7152de3b87aSKai Wang int		dwarf_globname(Dwarf_Global, char **, Dwarf_Error *);
7162de3b87aSKai Wang int		dwarf_hasattr(Dwarf_Die, Dwarf_Half, Dwarf_Bool *,
7172de3b87aSKai Wang 		    Dwarf_Error *);
7182de3b87aSKai Wang int		dwarf_hasform(Dwarf_Attribute, Dwarf_Half, Dwarf_Bool *,
7192de3b87aSKai Wang 		    Dwarf_Error *);
7202de3b87aSKai Wang int		dwarf_highpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *);
721cf781b2eSEd Maste int		dwarf_highpc_b(Dwarf_Die, Dwarf_Addr *, Dwarf_Half *,
722cf781b2eSEd Maste 		    enum Dwarf_Form_Class *, Dwarf_Error *);
7232de3b87aSKai Wang int		dwarf_init(int, int, Dwarf_Handler, Dwarf_Ptr, Dwarf_Debug *,
7242de3b87aSKai Wang 		    Dwarf_Error *);
7252de3b87aSKai Wang int		dwarf_line_srcfileno(Dwarf_Line, Dwarf_Unsigned *,
7262de3b87aSKai Wang 		    Dwarf_Error *);
7272de3b87aSKai Wang int		dwarf_lineaddr(Dwarf_Line, Dwarf_Addr *, Dwarf_Error *);
7282de3b87aSKai Wang int		dwarf_linebeginstatement(Dwarf_Line, Dwarf_Bool *,
7292de3b87aSKai Wang 		    Dwarf_Error *);
7302de3b87aSKai Wang int		dwarf_lineblock(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *);
7312de3b87aSKai Wang int		dwarf_lineendsequence(Dwarf_Line, Dwarf_Bool *, Dwarf_Error *);
7322de3b87aSKai Wang int		dwarf_lineno(Dwarf_Line, Dwarf_Unsigned *, Dwarf_Error *);
7332de3b87aSKai Wang int		dwarf_lineoff(Dwarf_Line, Dwarf_Signed *, Dwarf_Error *);
7342de3b87aSKai Wang int		dwarf_linesrc(Dwarf_Line, char **, Dwarf_Error *);
7352de3b87aSKai Wang Dwarf_Unsigned	dwarf_lne_end_sequence(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Error *);
7362de3b87aSKai Wang Dwarf_Unsigned	dwarf_lne_set_address(Dwarf_P_Debug, Dwarf_Addr, Dwarf_Unsigned,
7372de3b87aSKai Wang 		    Dwarf_Error *);
7382de3b87aSKai Wang int		dwarf_loclist(Dwarf_Attribute, Dwarf_Locdesc **, Dwarf_Signed *,
7392de3b87aSKai Wang 		    Dwarf_Error *);
7402de3b87aSKai Wang int		dwarf_loclist_from_expr(Dwarf_Debug, Dwarf_Ptr, Dwarf_Unsigned,
7412de3b87aSKai Wang 		    Dwarf_Locdesc **, Dwarf_Signed *, Dwarf_Error *);
7422de3b87aSKai Wang int		dwarf_loclist_from_expr_a(Dwarf_Debug, Dwarf_Ptr,
7432de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Half, Dwarf_Locdesc **,
7442de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Error *);
745cf781b2eSEd Maste int		dwarf_loclist_from_expr_b(Dwarf_Debug, Dwarf_Ptr,
746cf781b2eSEd Maste 		    Dwarf_Unsigned, Dwarf_Half, Dwarf_Half,
747cf781b2eSEd Maste 		    Dwarf_Small, Dwarf_Locdesc **, Dwarf_Signed *,
748cf781b2eSEd Maste 		    Dwarf_Error *);
7492de3b87aSKai Wang int		dwarf_loclist_n(Dwarf_Attribute, Dwarf_Locdesc ***,
7502de3b87aSKai Wang 		    Dwarf_Signed *, Dwarf_Error *);
7512de3b87aSKai Wang int		dwarf_lowpc(Dwarf_Die, Dwarf_Addr *, Dwarf_Error *);
7522de3b87aSKai Wang Dwarf_P_Die	dwarf_new_die(Dwarf_P_Debug, Dwarf_Tag, Dwarf_P_Die,
7532de3b87aSKai Wang 		    Dwarf_P_Die, Dwarf_P_Die, Dwarf_P_Die, Dwarf_Error *);
7542de3b87aSKai Wang Dwarf_P_Expr	dwarf_new_expr(Dwarf_P_Debug, Dwarf_Error *);
7552de3b87aSKai Wang Dwarf_P_Fde	dwarf_new_fde(Dwarf_P_Debug, Dwarf_Error *);
7562de3b87aSKai Wang int		dwarf_next_cu_header(Dwarf_Debug, Dwarf_Unsigned *,
7572de3b87aSKai Wang 		    Dwarf_Half *, Dwarf_Off *, Dwarf_Half *,
7582de3b87aSKai Wang 		    Dwarf_Unsigned *, Dwarf_Error *);
7592de3b87aSKai Wang int		dwarf_next_cu_header_b(Dwarf_Debug, Dwarf_Unsigned *,
7602de3b87aSKai Wang 		    Dwarf_Half *, Dwarf_Off *, Dwarf_Half *, Dwarf_Half *,
7612de3b87aSKai Wang 		    Dwarf_Half *, Dwarf_Unsigned *, Dwarf_Error *);
762cf781b2eSEd Maste int		dwarf_next_cu_header_c(Dwarf_Debug, Dwarf_Bool,
763cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Half *, Dwarf_Off *, Dwarf_Half *,
764cf781b2eSEd Maste 		    Dwarf_Half *, Dwarf_Half *, Dwarf_Sig8 *, Dwarf_Unsigned *,
765cf781b2eSEd Maste 		    Dwarf_Unsigned *, Dwarf_Error *);
766cf781b2eSEd Maste int		dwarf_next_types_section(Dwarf_Debug, Dwarf_Error *);
7672de3b87aSKai Wang int		dwarf_object_finish(Dwarf_Debug, Dwarf_Error *);
7682de3b87aSKai Wang int		dwarf_object_init(Dwarf_Obj_Access_Interface *, Dwarf_Handler,
7692de3b87aSKai Wang 		    Dwarf_Ptr, Dwarf_Debug *, Dwarf_Error *);
7702de3b87aSKai Wang int		dwarf_offdie(Dwarf_Debug, Dwarf_Off, Dwarf_Die *,
7712de3b87aSKai Wang 		    Dwarf_Error *);
772cf781b2eSEd Maste int		dwarf_offdie_b(Dwarf_Debug, Dwarf_Off, Dwarf_Bool, Dwarf_Die *,
773cf781b2eSEd Maste 		    Dwarf_Error *);
7742de3b87aSKai Wang Dwarf_Unsigned	dwarf_producer_finish(Dwarf_P_Debug, Dwarf_Error *);
7752de3b87aSKai Wang Dwarf_P_Debug	dwarf_producer_init(Dwarf_Unsigned, Dwarf_Callback_Func,
7762de3b87aSKai Wang 		    Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *);
7772de3b87aSKai Wang Dwarf_P_Debug	dwarf_producer_init_b(Dwarf_Unsigned, Dwarf_Callback_Func_b,
7782de3b87aSKai Wang 		    Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *);
7792de3b87aSKai Wang int		dwarf_producer_set_isa(Dwarf_P_Debug, enum Dwarf_ISA,
7802de3b87aSKai Wang 		    Dwarf_Error *);
7812de3b87aSKai Wang int		dwarf_pubtype_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
7822de3b87aSKai Wang int		dwarf_pubtype_die_offset(Dwarf_Type, Dwarf_Off *,
7832de3b87aSKai Wang 		    Dwarf_Error *);
7842de3b87aSKai Wang int		dwarf_pubtype_name_offsets(Dwarf_Type, char **,
7852de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
7862de3b87aSKai Wang int		dwarf_pubtypename(Dwarf_Type, char **, Dwarf_Error *);
7872de3b87aSKai Wang void		dwarf_pubtypes_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed);
7882de3b87aSKai Wang void		dwarf_ranges_dealloc(Dwarf_Debug, Dwarf_Ranges *, Dwarf_Signed);
7892de3b87aSKai Wang void		dwarf_reset_section_bytes(Dwarf_P_Debug);
7902de3b87aSKai Wang Dwarf_Half	dwarf_set_frame_cfa_value(Dwarf_Debug, Dwarf_Half);
7912de3b87aSKai Wang Dwarf_Half	dwarf_set_frame_rule_initial_value(Dwarf_Debug, Dwarf_Half);
7922de3b87aSKai Wang Dwarf_Half	dwarf_set_frame_rule_table_size(Dwarf_Debug, Dwarf_Half);
7932de3b87aSKai Wang Dwarf_Half	dwarf_set_frame_same_value(Dwarf_Debug, Dwarf_Half);
7942de3b87aSKai Wang Dwarf_Half	dwarf_set_frame_undefined_value(Dwarf_Debug, Dwarf_Half);
7952de3b87aSKai Wang int		dwarf_set_reloc_application(int);
7962de3b87aSKai Wang Dwarf_Ptr	dwarf_seterrarg(Dwarf_Debug, Dwarf_Ptr);
7972de3b87aSKai Wang Dwarf_Handler	dwarf_seterrhand(Dwarf_Debug, Dwarf_Handler);
7982de3b87aSKai Wang int		dwarf_siblingof(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Error *);
799cf781b2eSEd Maste int		dwarf_siblingof_b(Dwarf_Debug, Dwarf_Die, Dwarf_Die *, Dwarf_Bool,
800cf781b2eSEd Maste 		    Dwarf_Error *);
8012de3b87aSKai Wang int		dwarf_srcfiles(Dwarf_Die, char ***, Dwarf_Signed *, Dwarf_Error *);
8022de3b87aSKai Wang int		dwarf_srclang(Dwarf_Die, Dwarf_Unsigned *, Dwarf_Error *);
8032de3b87aSKai Wang int		dwarf_srclines(Dwarf_Die, Dwarf_Line **, Dwarf_Signed *,
8042de3b87aSKai Wang 		    Dwarf_Error *);
8052de3b87aSKai Wang void		dwarf_srclines_dealloc(Dwarf_Debug, Dwarf_Line *,
8062de3b87aSKai Wang 		    Dwarf_Signed);
8072de3b87aSKai Wang int		dwarf_start_macro_file(Dwarf_P_Debug, Dwarf_Unsigned,
8082de3b87aSKai Wang 		    Dwarf_Unsigned, Dwarf_Error *);
8092de3b87aSKai Wang int		dwarf_tag(Dwarf_Die, Dwarf_Half *, Dwarf_Error *);
8102de3b87aSKai Wang Dwarf_Signed	dwarf_transform_to_disk_form(Dwarf_P_Debug, Dwarf_Error *);
8112de3b87aSKai Wang int		dwarf_type_cu_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
8122de3b87aSKai Wang int		dwarf_type_die_offset(Dwarf_Type, Dwarf_Off *, Dwarf_Error *);
8132de3b87aSKai Wang int		dwarf_type_name_offsets(Dwarf_Type, char **,
8142de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8152de3b87aSKai Wang int		dwarf_typename(Dwarf_Type, char **, Dwarf_Error *);
8162de3b87aSKai Wang void		dwarf_types_dealloc(Dwarf_Debug, Dwarf_Type *, Dwarf_Signed);
8172de3b87aSKai Wang int		dwarf_undef_macro(Dwarf_P_Debug, Dwarf_Unsigned, char *,
8182de3b87aSKai Wang 		    Dwarf_Error *);
8192de3b87aSKai Wang int		dwarf_var_cu_offset(Dwarf_Var, Dwarf_Off *, Dwarf_Error *);
8202de3b87aSKai Wang int		dwarf_var_die_offset(Dwarf_Var, Dwarf_Off *,
8212de3b87aSKai Wang 		    Dwarf_Error *);
8222de3b87aSKai Wang int		dwarf_var_name_offsets(Dwarf_Var, char **,
8232de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8242de3b87aSKai Wang int		dwarf_varname(Dwarf_Var, char **, Dwarf_Error *);
8252de3b87aSKai Wang void		dwarf_vars_dealloc(Dwarf_Debug, Dwarf_Var *, Dwarf_Signed);
8262de3b87aSKai Wang int		dwarf_vendor_ext(Dwarf_P_Debug, Dwarf_Unsigned, char *,
8272de3b87aSKai Wang 		    Dwarf_Error *);
8282de3b87aSKai Wang int		dwarf_weak_cu_offset(Dwarf_Weak, Dwarf_Off *, Dwarf_Error *);
8292de3b87aSKai Wang int		dwarf_weak_die_offset(Dwarf_Weak, Dwarf_Off *,
8302de3b87aSKai Wang 		    Dwarf_Error *);
8312de3b87aSKai Wang int		dwarf_weak_name_offsets(Dwarf_Weak, char **,
8322de3b87aSKai Wang 		    Dwarf_Off *, Dwarf_Off *, Dwarf_Error *);
8332de3b87aSKai Wang int		dwarf_weakname(Dwarf_Weak, char **, Dwarf_Error *);
8342de3b87aSKai Wang void		dwarf_weaks_dealloc(Dwarf_Debug, Dwarf_Weak *, Dwarf_Signed);
8352de3b87aSKai Wang int		dwarf_whatattr(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *);
8362de3b87aSKai Wang int		dwarf_whatform(Dwarf_Attribute, Dwarf_Half *, Dwarf_Error *);
8372de3b87aSKai Wang int		dwarf_whatform_direct(Dwarf_Attribute, Dwarf_Half *,
8382de3b87aSKai Wang 		    Dwarf_Error *);
83967d97fe7SEd Maste #ifdef __cplusplus
84067d97fe7SEd Maste }
84167d97fe7SEd Maste #endif
8422de3b87aSKai Wang 
8432de3b87aSKai Wang #endif /* !_LIBDWARF_H_ */
844