summaryrefslogtreecommitdiff
path: root/usr/src/tools/ctf/dwarf/common/libdwarf.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/tools/ctf/dwarf/common/libdwarf.h')
-rw-r--r--usr/src/tools/ctf/dwarf/common/libdwarf.h2736
1 files changed, 0 insertions, 2736 deletions
diff --git a/usr/src/tools/ctf/dwarf/common/libdwarf.h b/usr/src/tools/ctf/dwarf/common/libdwarf.h
deleted file mode 100644
index 78627a96a6..0000000000
--- a/usr/src/tools/ctf/dwarf/common/libdwarf.h
+++ /dev/null
@@ -1,2736 +0,0 @@
-/*
-
- Copyright (C) 2000-2010 Silicon Graphics, Inc. All Rights Reserved.
- Portions Copyright 2007-2010 Sun Microsystems, Inc. All rights reserved.
- Portions Copyright 2008-2010 David Anderson. All rights reserved.
- Portions Copyright 2008-2010 Arxan Technologies, Inc. All rights reserved.
-
- This program is free software; you can redistribute it and/or modify it
- under the terms of version 2.1 of the GNU Lesser General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it would be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- Further, this software is distributed without any warranty that it is
- free of the rightful claim of any third person regarding infringement
- or the like. Any license provided herein, whether implied or
- otherwise, applies only to this software file. Patent licenses, if
- any, provided herein do not apply to combinations of this program with
- other software, or any other product whatsoever.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this program; if not, write the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
- USA.
-
- Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
- Mountain View, CA 94043, or:
-
- http://www.sgi.com
-
- For further information regarding this notice, see:
-
- http://oss.sgi.com/projects/GenInfo/NoticeExplan
-
-*/
-
-
-#ifndef _LIBDWARF_H
-#define _LIBDWARF_H
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- libdwarf.h
- $Revision: #9 $ $Date: 2008/01/17 $
-
- For libdwarf producers and consumers
-
- The interface is defined as having 8-byte signed and unsigned
- values so it can handle 64-or-32bit target on 64-or-32bit host.
- Addr is the native size: it represents pointers on
- the host machine (not the target!).
-
- This contains declarations for types and all producer
- and consumer functions.
-
- Function declarations are written on a single line each here
- so one can use grep to each declaration in its entirety.
- The declarations are a little harder to read this way, but...
-
-*/
-
-struct Elf;
-typedef struct Elf* dwarf_elf_handle;
-
-/* To enable printing with printf regardless of the
- actual underlying data type, we define the DW_PR_xxx macros. */
-#if (_MIPS_SZLONG == 64)
-/* Special case for MIPS, so -64 (LP64) build gets simple -long-.
- Non-MIPS LP64 or ILP64 environments should probably ensure
- _MIPS_SZLONG set to 64 everywhere this header is #included.
-*/
-typedef int Dwarf_Bool; /* boolean type */
-typedef unsigned long Dwarf_Off; /* 4 or 8 byte file offset */
-typedef unsigned long Dwarf_Unsigned; /* 4 or 8 byte unsigned value */
-typedef unsigned short Dwarf_Half; /* 2 byte unsigned value */
-typedef unsigned char Dwarf_Small; /* 1 byte unsigned value */
-typedef signed long Dwarf_Signed; /* 4 or 8 byte signed value */
-typedef unsigned long Dwarf_Addr; /* target memory address */
-#define DW_PR_DUx "lx"
-#define DW_PR_DSx "lx"
-#define DW_PR_DUu "lu"
-#define DW_PR_DSd "ld"
-
-#else /* 32-bit */
-/* This is for ILP32, allowing i/o of 64bit dwarf info.
- Also should be fine for LP64 and ILP64 cases.
-*/
-typedef int Dwarf_Bool; /* boolean type */
-typedef unsigned long long Dwarf_Off; /* 8 byte file offset */
-typedef unsigned long long Dwarf_Unsigned; /* 8 byte unsigned value*/
-typedef unsigned short Dwarf_Half; /* 2 byte unsigned value */
-typedef unsigned char Dwarf_Small; /* 1 byte unsigned value */
-typedef signed long long Dwarf_Signed; /* 8 byte signed value */
-typedef unsigned long long Dwarf_Addr; /* target memory address */
-#define DW_PR_DUx "llx"
-#define DW_PR_DSx "llx"
-#define DW_PR_DUu "llu"
-#define DW_PR_DSd "lld"
-#endif
-#ifdef HAVE_NONSTANDARD_PRINTF_64_FORMAT
-/* Windows does not use std C formatting, so allow it. */
-#undef DW_PR_DUx
-#undef DW_PR_DSx
-#undef DW_PR_DUu
-#undef DW_PR_DSd
-#define DW_PR_DUx "I64x"
-#define DW_PR_DSx "I64x"
-#define DW_PR_DUu "I64u"
-#define DW_PR_DSd "I64d"
-#endif /* HAVE_NONSTANDARD_FORMAT */
-
-typedef void* Dwarf_Ptr; /* host machine pointer */
-
-/* Used for DW_FORM_ref_sig8. It is not a string, it
- is 8 bytes of a signature one would use to find
- a type unit. See dwarf_formsig8()
-*/
-typedef struct {
- char signature[8];
-} Dwarf_Sig8;
-
-/* Contains info on an uninterpreted block of data
-*/
-typedef struct {
- Dwarf_Unsigned bl_len; /* length of block */
- Dwarf_Ptr bl_data; /* uninterpreted data */
- Dwarf_Small bl_from_loclist; /*non-0 if loclist, else debug_info*/
- Dwarf_Unsigned bl_section_offset; /* Section (not CU) offset
- which 'data' comes from. */
-} Dwarf_Block;
-
-
-/* location record
-*/
-typedef struct {
- Dwarf_Small lr_atom; /* location operation */
- Dwarf_Unsigned lr_number; /* operand */
- Dwarf_Unsigned lr_number2; /* for OP_BREGx */
- Dwarf_Unsigned lr_offset; /* offset in locexpr for OP_BRA etc */
-} Dwarf_Loc;
-
-
-/* location description
-*/
-typedef struct {
- Dwarf_Addr ld_lopc; /* beginning of active range */
- Dwarf_Addr ld_hipc; /* end of active range */
- Dwarf_Half ld_cents; /* count of location records */
- Dwarf_Loc* ld_s; /* pointer to list of same */
- Dwarf_Small ld_from_loclist;
- /* non-0 if loclist, else debug_info*/
-
- Dwarf_Unsigned ld_section_offset; /* Section (not CU) offset
- where loc-expr begins*/
-} Dwarf_Locdesc;
-
-/* First appears in DWARF3.
- The dwr_addr1/addr2 data is either an offset (DW_RANGES_ENTRY)
- or an address (dwr_addr2 in DW_RANGES_ADDRESS_SELECTION) or
- both are zero (DW_RANGES_END).
-*/
-enum Dwarf_Ranges_Entry_Type { DW_RANGES_ENTRY,
- DW_RANGES_ADDRESS_SELECTION,
- DW_RANGES_END };
-typedef struct {
- Dwarf_Addr dwr_addr1;
- Dwarf_Addr dwr_addr2;
- enum Dwarf_Ranges_Entry_Type dwr_type;
-} Dwarf_Ranges;
-
-/* Frame description instructions expanded.
-*/
-typedef struct {
- Dwarf_Small fp_base_op;
- Dwarf_Small fp_extended_op;
- Dwarf_Half fp_register;
-
- /* Value may be signed, depends on op.
- Any applicable data_alignment_factor has
- not been applied, this is the raw offset. */
- Dwarf_Unsigned fp_offset;
- Dwarf_Off fp_instr_offset;
-} Dwarf_Frame_Op; /* DWARF2 */
-
-typedef struct {
- Dwarf_Small fp_base_op;
- Dwarf_Small fp_extended_op;
- Dwarf_Half fp_register;
-
- /* Value may be signed, depends on op.
- Any applicable data_alignment_factor has
- not been applied, this is the raw offset. */
- Dwarf_Unsigned fp_offset_or_block_len;
- Dwarf_Small *fp_expr_block;
-
- Dwarf_Off fp_instr_offset;
-} Dwarf_Frame_Op3; /* DWARF3 and DWARF2 compatible */
-
-/* ***IMPORTANT NOTE, TARGET DEPENDENCY ****
- DW_REG_TABLE_SIZE must be at least as large as
- the number of registers
- (DW_FRAME_LAST_REG_NUM) as defined in dwarf.h
- Preferably identical to DW_FRAME_LAST_REG_NUM.
- Ensure [0-DW_REG_TABLE_SIZE] does not overlap
- DW_FRAME_UNDEFINED_VAL or DW_FRAME_SAME_VAL.
- Also ensure DW_FRAME_REG_INITIAL_VALUE is set to what
- is appropriate to your cpu.
- For various CPUs DW_FRAME_UNDEFINED_VAL is correct
- as the value for DW_FRAME_REG_INITIAL_VALUE.
-
- For consumer apps, this can be set dynamically: see
- dwarf_set_frame_rule_table_size();
- */
-#ifndef DW_REG_TABLE_SIZE
-#define DW_REG_TABLE_SIZE 66
-#endif
-
-/* For MIPS, DW_FRAME_SAME_VAL is the correct default value
- for a frame register value. For other CPUS another value
- may be better, such as DW_FRAME_UNDEFINED_VAL.
- See dwarf_set_frame_rule_table_size
-*/
-#ifndef DW_FRAME_REG_INITIAL_VALUE
-#define DW_FRAME_REG_INITIAL_VALUE DW_FRAME_SAME_VAL
-#endif
-
-/* Taken as meaning 'undefined value', this is not
- a column or register number.
- Only present at libdwarf runtime in the consumer
- interfaces. Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
- Ensure this is > DW_REG_TABLE_SIZE (the reg table
- size is changeable at runtime with the *reg3() interfaces,
- and this value must be greater than the reg table size).
-*/
-#define DW_FRAME_UNDEFINED_VAL 1034
-
-/* Taken as meaning 'same value' as caller had, not a column
- or register number.
- Only present at libdwarf runtime in the consumer
- interfaces. Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
- Ensure this is > DW_REG_TABLE_SIZE (the reg table
- size is changeable at runtime with the *reg3() interfaces,
- and this value must be greater than the reg table size).
-*/
-#define DW_FRAME_SAME_VAL 1035
-
-/* For DWARF3 consumer interfaces, make the CFA a column with no
- real table number. This is what should have been done
- for the DWARF2 interfaces. This actually works for
- both DWARF2 and DWARF3, but see the libdwarf documentation
- on Dwarf_Regtable3 and dwarf_get_fde_info_for_reg3()
- and dwarf_get_fde_info_for_all_regs3()
- Do NOT use this with the older dwarf_get_fde_info_for_reg()
- or dwarf_get_fde_info_for_all_regs() consumer interfaces.
- Must be higher than any register count for *any* ABI
- (ensures maximum applicability with minimum effort).
- Ensure this is > DW_REG_TABLE_SIZE (the reg table
- size is changeable at runtime with the *reg3() interfaces,
- and this value must be greater than the reg table size).
- Only present at libdwarf runtime in the consumer
- interfaces. Never on disk.
-*/
-#define DW_FRAME_CFA_COL3 1436
-
-/* The following are all needed to evaluate DWARF3 register rules.
-*/
-#define DW_EXPR_OFFSET 0 /* DWARF2 only sees this. */
-#define DW_EXPR_VAL_OFFSET 1
-#define DW_EXPR_EXPRESSION 2
-#define DW_EXPR_VAL_EXPRESSION 3
-
-typedef struct Dwarf_Regtable_Entry_s {
- /* For each index i (naming a hardware register with dwarf number
- i) the following is true and defines the value of that register:
-
- If dw_regnum is Register DW_FRAME_UNDEFINED_VAL
- it is not DWARF register number but
- a place holder indicating the register has no defined value.
- If dw_regnum is Register DW_FRAME_SAME_VAL
- it is not DWARF register number but
- a place holder indicating the register has the same
- value in the previous frame.
- DW_FRAME_UNDEFINED_VAL, DW_FRAME_SAME_VAL are
- only present at libdwarf runtime. Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
-
- Otherwise: the register number is a DWARF register number
- (see ABI documents for how this translates to hardware/
- software register numbers in the machine hardware)
- and the following applies:
-
- if dw_value_type == DW_EXPR_OFFSET (the only case for dwarf2):
- If dw_offset_relevant is non-zero, then
- the value is stored at at the address CFA+N where
- N is a signed offset.
- Rule: Offset(N)
- If dw_offset_relevant is zero, then the value of the register
- is the value of (DWARF) register number dw_regnum.
- Rule: register(F)
- Other values of dw_value_type are an error.
- */
- Dwarf_Small dw_offset_relevant;
-
- /* For DWARF2, always 0 */
- Dwarf_Small dw_value_type;
-
- Dwarf_Half dw_regnum;
-
- /* The data type here should the larger of Dwarf_Addr
- and Dwarf_Unsigned and Dwarf_Signed. */
- Dwarf_Addr dw_offset;
-} Dwarf_Regtable_Entry;
-
-typedef struct Dwarf_Regtable_s {
- struct Dwarf_Regtable_Entry_s rules[DW_REG_TABLE_SIZE];
-} Dwarf_Regtable;
-
-/* opaque type. Functional interface shown later. */
-struct Dwarf_Reg_value3_s;
-typedef struct Dwarf_Reg_value3_s Dwarf_Reg_Value3;
-
-typedef struct Dwarf_Regtable_Entry3_s {
- /* For each index i (naming a hardware register with dwarf number
- i) the following is true and defines the value of that register:
-
- If dw_regnum is Register DW_FRAME_UNDEFINED_VAL
- it is not DWARF register number but
- a place holder indicating the register has no defined value.
- If dw_regnum is Register DW_FRAME_SAME_VAL
- it is not DWARF register number but
- a place holder indicating the register has the same
- value in the previous frame.
- DW_FRAME_UNDEFINED_VAL, DW_FRAME_SAME_VAL and
- DW_FRAME_CFA_COL3 are only present at libdwarf runtime.
- Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
- Because DW_FRAME_SAME_VAL and DW_FRAME_UNDEFINED_VAL
- and DW_FRAME_CFA_COL3 are defineable at runtime
- consider the names symbolic in this comment, not absolute.
-
- Otherwise: the register number is a DWARF register number
- (see ABI documents for how this translates to hardware/
- software register numbers in the machine hardware)
- and the following applies:
-
- In a cfa-defining entry (rt3_cfa_rule) the regnum is the
- CFA 'register number'. Which is some 'normal' register,
- not DW_FRAME_CFA_COL3, nor DW_FRAME_SAME_VAL, nor
- DW_FRAME_UNDEFINED_VAL.
-
- If dw_value_type == DW_EXPR_OFFSET (the only possible case for
- dwarf2):
- If dw_offset_relevant is non-zero, then
- the value is stored at at the address
- CFA+N where N is a signed offset.
- dw_regnum is the cfa register rule which means
- one ignores dw_regnum and uses the CFA appropriately.
- So dw_offset_or_block_len is a signed value, really,
- and must be printed/evaluated as such.
- Rule: Offset(N)
- If dw_offset_relevant is zero, then the value of the register
- is the value of (DWARF) register number dw_regnum.
- Rule: register(R)
- If dw_value_type == DW_EXPR_VAL_OFFSET
- the value of this register is CFA +N where N is a signed offset.
- dw_regnum is the cfa register rule which means
- one ignores dw_regnum and uses the CFA appropriately.
- Rule: val_offset(N)
- If dw_value_type == DW_EXPR_EXPRESSION
- The value of the register is the value at the address
- computed by evaluating the DWARF expression E.
- Rule: expression(E)
- The expression E byte stream is pointed to by dw_block_ptr.
- The expression length in bytes is given by
- dw_offset_or_block_len.
- If dw_value_type == DW_EXPR_VAL_EXPRESSION
- The value of the register is the value
- computed by evaluating the DWARF expression E.
- Rule: val_expression(E)
- The expression E byte stream is pointed to by dw_block_ptr.
- The expression length in bytes is given by
- dw_offset_or_block_len.
- Other values of dw_value_type are an error.
- */
- Dwarf_Small dw_offset_relevant;
- Dwarf_Small dw_value_type;
- Dwarf_Half dw_regnum;
- Dwarf_Unsigned dw_offset_or_block_len;
- Dwarf_Ptr dw_block_ptr;
-
-}Dwarf_Regtable_Entry3;
-
-/* For the DWARF3 version, moved the DW_FRAME_CFA_COL
- out of the array and into its own struct.
- Having it part of the array is not very easy to work
- with from a portability point of view: changing
- the number for every architecture is a pain (if one fails
- to set it correctly a register rule gets clobbered when
- setting CFA). With MIPS it just happened to be easy to use
- DW_FRAME_CFA_COL (it was wrong conceptually but it was easy...).
-
- rt3_rules and rt3_reg_table_size must be filled in before
- calling libdwarf. Filled in with a pointer to an array
- (pointer and array set up by the calling application)
- of rt3_reg_table_size Dwarf_Regtable_Entry3_s structs.
- libdwarf does not allocate or deallocate space for the
- rules, you must do so. libdwarf will initialize the
- contents rules array, you do not need to do so (though
- if you choose to initialize the array somehow that is ok:
- libdwarf will overwrite your initializations with its own).
-
-*/
-typedef struct Dwarf_Regtable3_s {
- struct Dwarf_Regtable_Entry3_s rt3_cfa_rule;
-
- Dwarf_Half rt3_reg_table_size;
- struct Dwarf_Regtable_Entry3_s * rt3_rules;
-} Dwarf_Regtable3;
-
-
-/* Use for DW_EPXR_STANDARD., DW_EXPR_VAL_OFFSET.
- Returns DW_DLV_OK if the value is available.
- If DW_DLV_OK returns the regnum and offset thru the pointers
- (which the consumer must use appropriately).
-*/
-int dwarf_frame_get_reg_register(struct Dwarf_Regtable_Entry3_s *reg_in,
- Dwarf_Small *offset_relevant,
- Dwarf_Half *regnum_out,
- Dwarf_Signed *offset_out);
-
-/* Use for DW_EXPR_EXPRESSION, DW_EXPR_VAL_EXPRESSION.
- Returns DW_DLV_OK if the value is available.
- The caller must pass in the address of a valid
- Dwarf_Block (the caller need not initialize it).
-*/
-int dwarf_frame_get_reg_expression(struct Dwarf_Regtable_Entry3_s *reg_in,
- Dwarf_Block *block_out);
-
-
-/* For DW_DLC_SYMBOLIC_RELOCATIONS output to caller
- v2, adding drd_length: some relocations are 4 and
- some 8 bytes (pointers are 8, section offsets 4) in
- some dwarf environments. (MIPS relocations are all one
- size in any given ABI.) Changing drd_type to an unsigned char
- to keep struct size down.
-*/
-enum Dwarf_Rel_Type {
- dwarf_drt_none, /* Should not get to caller */
- dwarf_drt_data_reloc, /* Simple normal relocation. */
- dwarf_drt_segment_rel, /* Special reloc, exceptions. */
- /* dwarf_drt_first_of_length_pair and drt_second
- are for for the .word end - begin case. */
- dwarf_drt_first_of_length_pair,
- dwarf_drt_second_of_length_pair
-};
-
-typedef struct Dwarf_P_Marker_s * Dwarf_P_Marker;
-struct Dwarf_P_Marker_s {
- Dwarf_Unsigned ma_marker;
- Dwarf_Unsigned ma_offset;
-};
-
-typedef struct Dwarf_Relocation_Data_s * Dwarf_Relocation_Data;
-struct Dwarf_Relocation_Data_s {
- unsigned char drd_type; /* Cast to/from Dwarf_Rel_Type
- to keep size small in struct. */
- unsigned char drd_length; /* Length in bytes of data being
- relocated. 4 for 32bit data,
- 8 for 64bit data. */
- Dwarf_Unsigned drd_offset; /* Where the data to reloc is. */
- Dwarf_Unsigned drd_symbol_index;
-};
-
-typedef struct Dwarf_P_String_Attr_s * Dwarf_P_String_Attr;
-struct Dwarf_P_String_Attr_s {
- Dwarf_Unsigned sa_offset; /* Offset of string attribute data */
- Dwarf_Unsigned sa_nbytes;
-};
-
-
-/* Opaque types for Consumer Library. */
-typedef struct Dwarf_Debug_s* Dwarf_Debug;
-typedef struct Dwarf_Die_s* Dwarf_Die;
-typedef struct Dwarf_Line_s* Dwarf_Line;
-typedef struct Dwarf_Global_s* Dwarf_Global;
-typedef struct Dwarf_Func_s* Dwarf_Func;
-typedef struct Dwarf_Type_s* Dwarf_Type;
-typedef struct Dwarf_Var_s* Dwarf_Var;
-typedef struct Dwarf_Weak_s* Dwarf_Weak;
-typedef struct Dwarf_Error_s* Dwarf_Error;
-typedef struct Dwarf_Attribute_s* Dwarf_Attribute;
-typedef struct Dwarf_Abbrev_s* Dwarf_Abbrev;
-typedef struct Dwarf_Fde_s* Dwarf_Fde;
-typedef struct Dwarf_Cie_s* Dwarf_Cie;
-typedef struct Dwarf_Arange_s* Dwarf_Arange;
-
-/* Opaque types for Producer Library. */
-typedef struct Dwarf_P_Debug_s* Dwarf_P_Debug;
-typedef struct Dwarf_P_Die_s* Dwarf_P_Die;
-typedef struct Dwarf_P_Attribute_s* Dwarf_P_Attribute;
-typedef struct Dwarf_P_Fde_s* Dwarf_P_Fde;
-typedef struct Dwarf_P_Expr_s* Dwarf_P_Expr;
-typedef Dwarf_Unsigned Dwarf_Tag;
-
-
-/* error handler function
-*/
-typedef void (*Dwarf_Handler)(Dwarf_Error /*error*/, Dwarf_Ptr /*errarg*/);
-
-
-/* Begin libdwarf Object File Interface declarations.
-
-As of February 2008 there are multiple dwarf_reader object access
-initialization methods available:
-The traditional dwarf_elf_init() and dwarf_init() and dwarf_finish()
- which assume libelf and POSIX file access.
-An object-file and library agnostic dwarf_object_init() and dwarf_object_finish()
- which allow the coder to provide object access routines
- abstracting away the elf interface. So there is no dependence in the
- reader code on the object format and no dependence on libelf.
- See the code in dwarf_elf_access.c and dwarf_original_elf_init.c
- to see an example of initializing the structures mentioned below.
-
-Projects using dwarf_elf_init() or dwarf_init() can ignore
-the Dwarf_Obj_Access* structures entirely as all these details
-are completed for you.
-
-*/
-
-typedef struct Dwarf_Obj_Access_Interface_s Dwarf_Obj_Access_Interface;
-typedef struct Dwarf_Obj_Access_Methods_s Dwarf_Obj_Access_Methods;
-typedef struct Dwarf_Obj_Access_Section_s Dwarf_Obj_Access_Section;
-
-
-/* Used in the get_section interface function
- in Dwarf_Obj_Access_Section_s. Since libdwarf
- depends on standard DWARF section names an object
- format that has no such names (but has some
- method of setting up 'sections equivalents')
- must arrange to return standard DWARF section
- names in the 'name' field. libdwarf does
- not free the strings in 'name'. */
-struct Dwarf_Obj_Access_Section_s {
- Dwarf_Addr addr;
- Dwarf_Unsigned size;
- const char* name;
- /* Set link to zero if it is meaningless. If non-zero
- it should be a link to a rela section or from symtab
- to strtab. In Elf it is sh_link. */
- Dwarf_Unsigned link;
-};
-
-/* Returned by the get_endianness function in
- Dwarf_Obj_Access_Methods_s. */
-typedef enum {
- DW_OBJECT_MSB,
- DW_OBJECT_LSB
-} Dwarf_Endianness;
-
-/* The functions we need to access object data from libdwarf are declared here.
-
- In these function pointer declarations
- 'void *obj' is intended to be a pointer (the object field in
- Dwarf_Obj_Access_Interface_s)
- that hides the library-specific and object-specific data that makes
- it possible to handle multiple object formats and multiple libraries.
- It's not required that one handles multiple such in a single libdwarf
- archive/shared-library (but not ruled out either).
- See dwarf_elf_object_access_internals_t and dwarf_elf_access.c
- for an example.
-
-*/
-struct Dwarf_Obj_Access_Methods_s {
- /**
- * get_section_info
- *
- * Get address, size, and name info about a section.
- *
- * Parameters
- * section_index - Zero-based index.
- * return_section - Pointer to a structure in which section info
- * will be placed. Caller must provide a valid pointer to a
- * structure area. The structure's contents will be overwritten
- * by the call to get_section_info.
- * error - A pointer to an integer in which an error code may be stored.
- *
- * Return
- * DW_DLV_OK - Everything ok.
- * DW_DLV_ERROR - Error occurred. Use 'error' to determine the
- * libdwarf defined error.
- * DW_DLV_NO_ENTRY - No such section.
- */
- int (*get_section_info)(void* obj, Dwarf_Half section_index,
- Dwarf_Obj_Access_Section* return_section, int* error);
- /**
- * get_byte_order
- *
- * Get whether the object file represented by this interface is big-endian
- * (DW_OBJECT_MSB) or little endian (DW_OBJECT_LSB).
- *
- * Parameters
- * obj - Equivalent to 'this' in OO languages.
- *
- * Return
- * Endianness of object. Cannot fail.
- */
- Dwarf_Endianness (*get_byte_order)(void* obj);
- /**
- * get_length_size
- *
- * Get the size of a length field in the underlying object file.
- * libdwarf currently supports * 4 and 8 byte sizes, but may
- * support larger in the future.
- * Perhaps the return type should be an enumeration?
- *
- * Parameters
- * obj - Equivalent to 'this' in OO languages.
- *
- * Return
- * Size of length. Cannot fail.
- */
- Dwarf_Small (*get_length_size)(void* obj);
- /**
- * get_pointer_size
- *
- * Get the size of a pointer field in the underlying object file.
- * libdwarf currently supports 4 and 8 byte sizes.
- * Perhaps the return type should be an enumeration?
-
- * Return
- * Size of pointer. Cannot fail.
- */
- Dwarf_Small (*get_pointer_size)(void* obj);
- /**
- * get_section_count
- *
- * Get the number of sections in the object file.
- *
- * Parameters
- *
- * Return
- * Number of sections
- */
- Dwarf_Unsigned (*get_section_count)(void* obj);
- /**
- * load_section
- *
- * Get a pointer to an array of bytes that represent the section.
- *
- * Parameters
- * section_index - Zero-based index.
- * return_data - The address of a pointer to which the section data block
- * will be assigned.
- * error - Pointer to an integer for returning libdwarf-defined
- * error numbers.
- *
- * Return
- * DW_DLV_OK - No error.
- * DW_DLV_ERROR - Error. Use 'error' to indicate a libdwarf-defined
- * error number.
- * DW_DLV_NO_ENTRY - No such section.
- */
- int (*load_section)(void* obj, Dwarf_Half section_index,
- Dwarf_Small** return_data, int* error);
-
- /**
- * relocate_a_section
- * If relocations are not supported leave this pointer NULL.
- *
- * Get a pointer to an array of bytes that represent the section.
- *
- * Parameters
- * section_index - Zero-based index of the section to be relocated.
- * error - Pointer to an integer for returning libdwarf-defined
- * error numbers.
- *
- * Return
- * DW_DLV_OK - No error.
- * DW_DLV_ERROR - Error. Use 'error' to indicate a libdwarf-defined
- * error number.
- * DW_DLV_NO_ENTRY - No such section.
- */
- int (*relocate_a_section)(void* obj, Dwarf_Half section_index,
- Dwarf_Debug dbg,
- int* error);
-
-};
-
-
-
-/* These structures are allocated and deallocated by your code
- when you are using the libdwarf Object File Interface
- [dwarf_object_init() and dwarf_object_finish()] directly.
- dwarf_object_finish() does not free
- struct Dwarf_Obj_Access_Interface_s or its content.
- (libdwarf does record a pointer to this struct: you must
- ensure that pointer remains valid for as long as
- a libdwarf instance is open (meaning
- after dwarf_init() and before dwarf_finish()).
-
- If you are reading Elf objects and libelf use dwarf_init()
- or dwarf_elf_init() which take care of these details.
-*/
-struct Dwarf_Obj_Access_Interface_s {
- /* object is a void* as it hides the data the object access routines
- need (which varies by library in use and object format).
- */
- void* object;
- const Dwarf_Obj_Access_Methods * methods;
-};
-
-/* End libdwarf Object File Interface */
-
-/*
- Dwarf_dealloc() alloc_type arguments.
- Argument points to:
-*/
-#define DW_DLA_STRING 0x01 /* char* */
-#define DW_DLA_LOC 0x02 /* Dwarf_Loc */
-#define DW_DLA_LOCDESC 0x03 /* Dwarf_Locdesc */
-#define DW_DLA_ELLIST 0x04 /* Dwarf_Ellist (not used)*/
-#define DW_DLA_BOUNDS 0x05 /* Dwarf_Bounds (not used) */
-#define DW_DLA_BLOCK 0x06 /* Dwarf_Block */
-#define DW_DLA_DEBUG 0x07 /* Dwarf_Debug */
-#define DW_DLA_DIE 0x08 /* Dwarf_Die */
-#define DW_DLA_LINE 0x09 /* Dwarf_Line */
-#define DW_DLA_ATTR 0x0a /* Dwarf_Attribute */
-#define DW_DLA_TYPE 0x0b /* Dwarf_Type (not used) */
-#define DW_DLA_SUBSCR 0x0c /* Dwarf_Subscr (not used) */
-#define DW_DLA_GLOBAL 0x0d /* Dwarf_Global */
-#define DW_DLA_ERROR 0x0e /* Dwarf_Error */
-#define DW_DLA_LIST 0x0f /* a list */
-#define DW_DLA_LINEBUF 0x10 /* Dwarf_Line* (not used) */
-#define DW_DLA_ARANGE 0x11 /* Dwarf_Arange */
-#define DW_DLA_ABBREV 0x12 /* Dwarf_Abbrev */
-#define DW_DLA_FRAME_OP 0x13 /* Dwarf_Frame_Op */
-#define DW_DLA_CIE 0x14 /* Dwarf_Cie */
-#define DW_DLA_FDE 0x15 /* Dwarf_Fde */
-#define DW_DLA_LOC_BLOCK 0x16 /* Dwarf_Loc Block (not used) */
-#define DW_DLA_FRAME_BLOCK 0x17 /* Dwarf_Frame Block (not used) */
-#define DW_DLA_FUNC 0x18 /* Dwarf_Func */
-#define DW_DLA_TYPENAME 0x19 /* Dwarf_Type */
-#define DW_DLA_VAR 0x1a /* Dwarf_Var */
-#define DW_DLA_WEAK 0x1b /* Dwarf_Weak */
-#define DW_DLA_ADDR 0x1c /* Dwarf_Addr sized entries */
-#define DW_DLA_RANGES 0x1d /* Dwarf_Ranges */
-
-/* The augmenter string for CIE */
-#define DW_CIE_AUGMENTER_STRING_V0 "z"
-
-/* dwarf_init() access arguments
-*/
-#define DW_DLC_READ 0 /* read only access */
-#define DW_DLC_WRITE 1 /* write only access */
-#define DW_DLC_RDWR 2 /* read/write access NOT SUPPORTED*/
-
-/* pro_init() access flag modifiers
- If HAVE_DWARF2_99_EXTENSION is defined at libdwarf build time
- and DW_DLC_OFFSET_SIZE_64 is passed in pro_init() flags then the DWARF3
- 64 bit offset extension is used to generate 64 bit offsets.
-*/
-#define DW_DLC_SIZE_64 0x40000000 /* 32-bit address-size target */
-#define DW_DLC_SIZE_32 0x20000000 /* 64-bit address-size target */
-#define DW_DLC_OFFSET_SIZE_64 0x10000000 /* 64-bit offset-size DWARF */
-
-/* dwarf_pro_init() access flag modifiers
-*/
-#define DW_DLC_ISA_MIPS 0x00000000 /* MIPS target */
-#define DW_DLC_ISA_IA64 0x01000000 /* IA64 target */
-#define DW_DLC_STREAM_RELOCATIONS 0x02000000 /* Old style binary relocs */
-
- /* Usable with assembly output because it is up to the producer to
- deal with locations in whatever manner the producer code wishes.
- Possibly emitting text an assembler will recognize. */
-#define DW_DLC_SYMBOLIC_RELOCATIONS 0x04000000
-
-#define DW_DLC_TARGET_BIGENDIAN 0x08000000 /* Big endian target */
-#define DW_DLC_TARGET_LITTLEENDIAN 0x00100000 /* Little endian target */
-
-#if 0
- /*
- The libdwarf producer interfaces jumble these two semantics together in
- confusing ways. We *should* have flags like these...
- But changing the code means a lot of diffs. So for now,
- we leave things as they are
- */
- #define DW_DLC_SUN_OFFSET32 0x00010000 /* use 32-bit sec offsets */
- #define DW_DLC_SUN_OFFSET64 0x00020000 /* use 64-bit sec offsets */
- #define DW_DLC_SUN_POINTER32 0x00040000 /* use 4 for address_size */
- #define DW_DLC_SUN_POINTER64 0x00080000 /* use 8 for address_size */
-#endif
-
-/* dwarf_pcline() slide arguments
-*/
-#define DW_DLS_BACKWARD -1 /* slide backward to find line */
-#define DW_DLS_NOSLIDE 0 /* match exactly without sliding */
-#define DW_DLS_FORWARD 1 /* slide forward to find line */
-
-/* libdwarf error numbers
-*/
-#define DW_DLE_NE 0 /* no error */
-#define DW_DLE_VMM 1 /* dwarf format/library version mismatch */
-#define DW_DLE_MAP 2 /* memory map failure */
-#define DW_DLE_LEE 3 /* libelf error */
-#define DW_DLE_NDS 4 /* no debug section */
-#define DW_DLE_NLS 5 /* no line section */
-#define DW_DLE_ID 6 /* invalid descriptor for query */
-#define DW_DLE_IOF 7 /* I/O failure */
-#define DW_DLE_MAF 8 /* memory allocation failure */
-#define DW_DLE_IA 9 /* invalid argument */
-#define DW_DLE_MDE 10 /* mangled debugging entry */
-#define DW_DLE_MLE 11 /* mangled line number entry */
-#define DW_DLE_FNO 12 /* file not open */
-#define DW_DLE_FNR 13 /* file not a regular file */
-#define DW_DLE_FWA 14 /* file open with wrong access */
-#define DW_DLE_NOB 15 /* not an object file */
-#define DW_DLE_MOF 16 /* mangled object file header */
-#define DW_DLE_EOLL 17 /* end of location list entries */
-#define DW_DLE_NOLL 18 /* no location list section */
-#define DW_DLE_BADOFF 19 /* Invalid offset */
-#define DW_DLE_EOS 20 /* end of section */
-#define DW_DLE_ATRUNC 21 /* abbreviations section appears truncated*/
-#define DW_DLE_BADBITC 22 /* Address size passed to dwarf bad*/
- /* It is not an allowed size (64 or 32) */
- /* Error codes defined by the current Libdwarf Implementation. */
-#define DW_DLE_DBG_ALLOC 23
-#define DW_DLE_FSTAT_ERROR 24
-#define DW_DLE_FSTAT_MODE_ERROR 25
-#define DW_DLE_INIT_ACCESS_WRONG 26
-#define DW_DLE_ELF_BEGIN_ERROR 27
-#define DW_DLE_ELF_GETEHDR_ERROR 28
-#define DW_DLE_ELF_GETSHDR_ERROR 29
-#define DW_DLE_ELF_STRPTR_ERROR 30
-#define DW_DLE_DEBUG_INFO_DUPLICATE 31
-#define DW_DLE_DEBUG_INFO_NULL 32
-#define DW_DLE_DEBUG_ABBREV_DUPLICATE 33
-#define DW_DLE_DEBUG_ABBREV_NULL 34
-#define DW_DLE_DEBUG_ARANGES_DUPLICATE 35
-#define DW_DLE_DEBUG_ARANGES_NULL 36
-#define DW_DLE_DEBUG_LINE_DUPLICATE 37
-#define DW_DLE_DEBUG_LINE_NULL 38
-#define DW_DLE_DEBUG_LOC_DUPLICATE 39
-#define DW_DLE_DEBUG_LOC_NULL 40
-#define DW_DLE_DEBUG_MACINFO_DUPLICATE 41
-#define DW_DLE_DEBUG_MACINFO_NULL 42
-#define DW_DLE_DEBUG_PUBNAMES_DUPLICATE 43
-#define DW_DLE_DEBUG_PUBNAMES_NULL 44
-#define DW_DLE_DEBUG_STR_DUPLICATE 45
-#define DW_DLE_DEBUG_STR_NULL 46
-#define DW_DLE_CU_LENGTH_ERROR 47
-#define DW_DLE_VERSION_STAMP_ERROR 48
-#define DW_DLE_ABBREV_OFFSET_ERROR 49
-#define DW_DLE_ADDRESS_SIZE_ERROR 50
-#define DW_DLE_DEBUG_INFO_PTR_NULL 51
-#define DW_DLE_DIE_NULL 52
-#define DW_DLE_STRING_OFFSET_BAD 53
-#define DW_DLE_DEBUG_LINE_LENGTH_BAD 54
-#define DW_DLE_LINE_PROLOG_LENGTH_BAD 55
-#define DW_DLE_LINE_NUM_OPERANDS_BAD 56
-#define DW_DLE_LINE_SET_ADDR_ERROR 57 /* No longer used. */
-#define DW_DLE_LINE_EXT_OPCODE_BAD 58
-#define DW_DLE_DWARF_LINE_NULL 59
-#define DW_DLE_INCL_DIR_NUM_BAD 60
-#define DW_DLE_LINE_FILE_NUM_BAD 61
-#define DW_DLE_ALLOC_FAIL 62
-#define DW_DLE_NO_CALLBACK_FUNC 63
-#define DW_DLE_SECT_ALLOC 64
-#define DW_DLE_FILE_ENTRY_ALLOC 65
-#define DW_DLE_LINE_ALLOC 66
-#define DW_DLE_FPGM_ALLOC 67
-#define DW_DLE_INCDIR_ALLOC 68
-#define DW_DLE_STRING_ALLOC 69
-#define DW_DLE_CHUNK_ALLOC 70
-#define DW_DLE_BYTEOFF_ERR 71
-#define DW_DLE_CIE_ALLOC 72
-#define DW_DLE_FDE_ALLOC 73
-#define DW_DLE_REGNO_OVFL 74
-#define DW_DLE_CIE_OFFS_ALLOC 75
-#define DW_DLE_WRONG_ADDRESS 76
-#define DW_DLE_EXTRA_NEIGHBORS 77
-#define DW_DLE_WRONG_TAG 78
-#define DW_DLE_DIE_ALLOC 79
-#define DW_DLE_PARENT_EXISTS 80
-#define DW_DLE_DBG_NULL 81
-#define DW_DLE_DEBUGLINE_ERROR 82
-#define DW_DLE_DEBUGFRAME_ERROR 83
-#define DW_DLE_DEBUGINFO_ERROR 84
-#define DW_DLE_ATTR_ALLOC 85
-#define DW_DLE_ABBREV_ALLOC 86
-#define DW_DLE_OFFSET_UFLW 87
-#define DW_DLE_ELF_SECT_ERR 88
-#define DW_DLE_DEBUG_FRAME_LENGTH_BAD 89
-#define DW_DLE_FRAME_VERSION_BAD 90
-#define DW_DLE_CIE_RET_ADDR_REG_ERROR 91
-#define DW_DLE_FDE_NULL 92
-#define DW_DLE_FDE_DBG_NULL 93
-#define DW_DLE_CIE_NULL 94
-#define DW_DLE_CIE_DBG_NULL 95
-#define DW_DLE_FRAME_TABLE_COL_BAD 96
-#define DW_DLE_PC_NOT_IN_FDE_RANGE 97
-#define DW_DLE_CIE_INSTR_EXEC_ERROR 98
-#define DW_DLE_FRAME_INSTR_EXEC_ERROR 99
-#define DW_DLE_FDE_PTR_NULL 100
-#define DW_DLE_RET_OP_LIST_NULL 101
-#define DW_DLE_LINE_CONTEXT_NULL 102
-#define DW_DLE_DBG_NO_CU_CONTEXT 103
-#define DW_DLE_DIE_NO_CU_CONTEXT 104
-#define DW_DLE_FIRST_DIE_NOT_CU 105
-#define DW_DLE_NEXT_DIE_PTR_NULL 106
-#define DW_DLE_DEBUG_FRAME_DUPLICATE 107
-#define DW_DLE_DEBUG_FRAME_NULL 108
-#define DW_DLE_ABBREV_DECODE_ERROR 109
-#define DW_DLE_DWARF_ABBREV_NULL 110
-#define DW_DLE_ATTR_NULL 111
-#define DW_DLE_DIE_BAD 112
-#define DW_DLE_DIE_ABBREV_BAD 113
-#define DW_DLE_ATTR_FORM_BAD 114
-#define DW_DLE_ATTR_NO_CU_CONTEXT 115
-#define DW_DLE_ATTR_FORM_SIZE_BAD 116
-#define DW_DLE_ATTR_DBG_NULL 117
-#define DW_DLE_BAD_REF_FORM 118
-#define DW_DLE_ATTR_FORM_OFFSET_BAD 119
-#define DW_DLE_LINE_OFFSET_BAD 120
-#define DW_DLE_DEBUG_STR_OFFSET_BAD 121
-#define DW_DLE_STRING_PTR_NULL 122
-#define DW_DLE_PUBNAMES_VERSION_ERROR 123
-#define DW_DLE_PUBNAMES_LENGTH_BAD 124
-#define DW_DLE_GLOBAL_NULL 125
-#define DW_DLE_GLOBAL_CONTEXT_NULL 126
-#define DW_DLE_DIR_INDEX_BAD 127
-#define DW_DLE_LOC_EXPR_BAD 128
-#define DW_DLE_DIE_LOC_EXPR_BAD 129
-#define DW_DLE_ADDR_ALLOC 130
-#define DW_DLE_OFFSET_BAD 131
-#define DW_DLE_MAKE_CU_CONTEXT_FAIL 132
-#define DW_DLE_REL_ALLOC 133
-#define DW_DLE_ARANGE_OFFSET_BAD 134
-#define DW_DLE_SEGMENT_SIZE_BAD 135
-#define DW_DLE_ARANGE_LENGTH_BAD 136
-#define DW_DLE_ARANGE_DECODE_ERROR 137
-#define DW_DLE_ARANGES_NULL 138
-#define DW_DLE_ARANGE_NULL 139
-#define DW_DLE_NO_FILE_NAME 140
-#define DW_DLE_NO_COMP_DIR 141
-#define DW_DLE_CU_ADDRESS_SIZE_BAD 142
-#define DW_DLE_INPUT_ATTR_BAD 143
-#define DW_DLE_EXPR_NULL 144
-#define DW_DLE_BAD_EXPR_OPCODE 145
-#define DW_DLE_EXPR_LENGTH_BAD 146
-#define DW_DLE_MULTIPLE_RELOC_IN_EXPR 147
-#define DW_DLE_ELF_GETIDENT_ERROR 148
-#define DW_DLE_NO_AT_MIPS_FDE 149
-#define DW_DLE_NO_CIE_FOR_FDE 150
-#define DW_DLE_DIE_ABBREV_LIST_NULL 151
-#define DW_DLE_DEBUG_FUNCNAMES_DUPLICATE 152
-#define DW_DLE_DEBUG_FUNCNAMES_NULL 153
-#define DW_DLE_DEBUG_FUNCNAMES_VERSION_ERROR 154
-#define DW_DLE_DEBUG_FUNCNAMES_LENGTH_BAD 155
-#define DW_DLE_FUNC_NULL 156
-#define DW_DLE_FUNC_CONTEXT_NULL 157
-#define DW_DLE_DEBUG_TYPENAMES_DUPLICATE 158
-#define DW_DLE_DEBUG_TYPENAMES_NULL 159
-#define DW_DLE_DEBUG_TYPENAMES_VERSION_ERROR 160
-#define DW_DLE_DEBUG_TYPENAMES_LENGTH_BAD 161
-#define DW_DLE_TYPE_NULL 162
-#define DW_DLE_TYPE_CONTEXT_NULL 163
-#define DW_DLE_DEBUG_VARNAMES_DUPLICATE 164
-#define DW_DLE_DEBUG_VARNAMES_NULL 165
-#define DW_DLE_DEBUG_VARNAMES_VERSION_ERROR 166
-#define DW_DLE_DEBUG_VARNAMES_LENGTH_BAD 167
-#define DW_DLE_VAR_NULL 168
-#define DW_DLE_VAR_CONTEXT_NULL 169
-#define DW_DLE_DEBUG_WEAKNAMES_DUPLICATE 170
-#define DW_DLE_DEBUG_WEAKNAMES_NULL 171
-#define DW_DLE_DEBUG_WEAKNAMES_VERSION_ERROR 172
-#define DW_DLE_DEBUG_WEAKNAMES_LENGTH_BAD 173
-#define DW_DLE_WEAK_NULL 174
-#define DW_DLE_WEAK_CONTEXT_NULL 175
-#define DW_DLE_LOCDESC_COUNT_WRONG 176
-#define DW_DLE_MACINFO_STRING_NULL 177
-#define DW_DLE_MACINFO_STRING_EMPTY 178
-#define DW_DLE_MACINFO_INTERNAL_ERROR_SPACE 179
-#define DW_DLE_MACINFO_MALLOC_FAIL 180
-#define DW_DLE_DEBUGMACINFO_ERROR 181
-#define DW_DLE_DEBUG_MACRO_LENGTH_BAD 182
-#define DW_DLE_DEBUG_MACRO_MAX_BAD 183
-#define DW_DLE_DEBUG_MACRO_INTERNAL_ERR 184
-#define DW_DLE_DEBUG_MACRO_MALLOC_SPACE 185
-#define DW_DLE_DEBUG_MACRO_INCONSISTENT 186
-#define DW_DLE_DF_NO_CIE_AUGMENTATION 187
-#define DW_DLE_DF_REG_NUM_TOO_HIGH 188
-#define DW_DLE_DF_MAKE_INSTR_NO_INIT 189
-#define DW_DLE_DF_NEW_LOC_LESS_OLD_LOC 190
-#define DW_DLE_DF_POP_EMPTY_STACK 191
-#define DW_DLE_DF_ALLOC_FAIL 192
-#define DW_DLE_DF_FRAME_DECODING_ERROR 193
-#define DW_DLE_DEBUG_LOC_SECTION_SHORT 194
-#define DW_DLE_FRAME_AUGMENTATION_UNKNOWN 195
-#define DW_DLE_PUBTYPE_CONTEXT 196 /* Unused. */
-#define DW_DLE_DEBUG_PUBTYPES_LENGTH_BAD 197
-#define DW_DLE_DEBUG_PUBTYPES_VERSION_ERROR 198
-#define DW_DLE_DEBUG_PUBTYPES_DUPLICATE 199
-#define DW_DLE_FRAME_CIE_DECODE_ERROR 200
-#define DW_DLE_FRAME_REGISTER_UNREPRESENTABLE 201
-#define DW_DLE_FRAME_REGISTER_COUNT_MISMATCH 202
-#define DW_DLE_LINK_LOOP 203
-#define DW_DLE_STRP_OFFSET_BAD 204
-#define DW_DLE_DEBUG_RANGES_DUPLICATE 205
-#define DW_DLE_DEBUG_RANGES_OFFSET_BAD 206
-#define DW_DLE_DEBUG_RANGES_MISSING_END 207
-#define DW_DLE_DEBUG_RANGES_OUT_OF_MEM 208
-#define DW_DLE_DEBUG_SYMTAB_ERR 209
-#define DW_DLE_DEBUG_STRTAB_ERR 210
-#define DW_DLE_RELOC_MISMATCH_INDEX 211
-#define DW_DLE_RELOC_MISMATCH_RELOC_INDEX 212
-#define DW_DLE_RELOC_MISMATCH_STRTAB_INDEX 213
-#define DW_DLE_RELOC_SECTION_MISMATCH 214
-#define DW_DLE_RELOC_SECTION_MISSING_INDEX 215
-#define DW_DLE_RELOC_SECTION_LENGTH_ODD 216
-#define DW_DLE_RELOC_SECTION_PTR_NULL 217
-#define DW_DLE_RELOC_SECTION_MALLOC_FAIL 218
-#define DW_DLE_NO_ELF64_SUPPORT 219
-#define DW_DLE_MISSING_ELF64_SUPPORT 220
-#define DW_DLE_ORPHAN_FDE 221
-#define DW_DLE_DUPLICATE_INST_BLOCK 222
-#define DW_DLE_BAD_REF_SIG8_FORM 223
-#define DW_DLE_ATTR_EXPRLOC_FORM_BAD 224
-#define DW_DLE_FORM_SEC_OFFSET_LENGTH_BAD 225
-#define DW_DLE_NOT_REF_FORM 226
-#define DW_DLE_DEBUG_FRAME_LENGTH_NOT_MULTIPLE 227
-
-
-
- /* DW_DLE_LAST MUST EQUAL LAST ERROR NUMBER */
-#define DW_DLE_LAST 227
-#define DW_DLE_LO_USER 0x10000
-
- /* Taken as meaning 'undefined value', this is not
- a column or register number.
- Only present at libdwarf runtime. Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
- */
-#define DW_FRAME_UNDEFINED_VAL 1034
-
- /* Taken as meaning 'same value' as caller had, not a column
- or register number
- Only present at libdwarf runtime. Never on disk.
- DW_FRAME_* Values present on disk are in dwarf.h
- */
-#define DW_FRAME_SAME_VAL 1035
-
-
-
-/* error return values
-*/
-#define DW_DLV_BADADDR (~(Dwarf_Addr)0)
- /* for functions returning target address */
-
-#define DW_DLV_NOCOUNT ((Dwarf_Signed)-1)
- /* for functions returning count */
-
-#define DW_DLV_BADOFFSET (~(Dwarf_Off)0)
- /* for functions returning offset */
-
-/* standard return values for functions */
-#define DW_DLV_NO_ENTRY -1
-#define DW_DLV_OK 0
-#define DW_DLV_ERROR 1
-
-/* Special values for offset_into_exception_table field of dwarf fde's. */
-/* The following value indicates that there is no Exception table offset
- associated with a dwarf frame. */
-#define DW_DLX_NO_EH_OFFSET (-1LL)
-/* The following value indicates that the producer was unable to analyse the
- source file to generate Exception tables for this function. */
-#define DW_DLX_EH_OFFSET_UNAVAILABLE (-2LL)
-
-
-/*===========================================================================*/
-/* Dwarf consumer interface initialization and termination operations */
-
-/* Initialization based on Unix open fd (using libelf internally). */
-int dwarf_init(int /*fd*/,
- Dwarf_Unsigned /*access*/,
- Dwarf_Handler /*errhand*/,
- Dwarf_Ptr /*errarg*/,
- Dwarf_Debug* /*dbg*/,
- Dwarf_Error* /*error*/);
-
-/* Initialization based on libelf/sgi-fastlibelf open pointer. */
-int dwarf_elf_init(dwarf_elf_handle /*elf*/,
- Dwarf_Unsigned /*access*/,
- Dwarf_Handler /*errhand*/,
- Dwarf_Ptr /*errarg*/,
- Dwarf_Debug* /*dbg*/,
- Dwarf_Error* /*error*/);
-
-/* Undocumented function for memory allocator. */
-void dwarf_print_memory_stats(Dwarf_Debug /*dbg*/);
-
-int dwarf_get_elf(Dwarf_Debug /*dbg*/,
- dwarf_elf_handle* /*return_elfptr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_finish(Dwarf_Debug /*dbg*/, Dwarf_Error* /*error*/);
-
-
-int dwarf_object_init(Dwarf_Obj_Access_Interface* /* obj */,
- Dwarf_Handler /* errhand */,
- Dwarf_Ptr /* errarg */,
- Dwarf_Debug* /* dbg */,
- Dwarf_Error* /* error */);
-
-int dwarf_object_finish(Dwarf_Debug /* dbg */,
- Dwarf_Error* /* error */);
-
-/* die traversal operations */
-int dwarf_next_cu_header_b(Dwarf_Debug /*dbg*/,
- Dwarf_Unsigned* /*cu_header_length*/,
- Dwarf_Half* /*version_stamp*/,
- Dwarf_Off* /*abbrev_offset*/,
- Dwarf_Half* /*address_size*/,
- Dwarf_Half* /*length_size*/,
- Dwarf_Half* /*extension_size*/,
- Dwarf_Unsigned* /*next_cu_header_offset*/,
- Dwarf_Error* /*error*/);
-/* The following is now obsolete, though supported. November 2009. */
-int dwarf_next_cu_header(Dwarf_Debug /*dbg*/,
- Dwarf_Unsigned* /*cu_header_length*/,
- Dwarf_Half* /*version_stamp*/,
- Dwarf_Off* /*abbrev_offset*/,
- Dwarf_Half* /*address_size*/,
- Dwarf_Unsigned* /*next_cu_header_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_siblingof(Dwarf_Debug /*dbg*/,
- Dwarf_Die /*die*/,
- Dwarf_Die* /*return_siblingdie*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_child(Dwarf_Die /*die*/,
- Dwarf_Die* /*return_childdie*/,
- Dwarf_Error* /*error*/);
-
-/* Finding die given global (not CU-relative) offset */
-int dwarf_offdie(Dwarf_Debug /*dbg*/,
- Dwarf_Off /*offset*/,
- Dwarf_Die* /*return_die*/,
- Dwarf_Error* /*error*/);
-
-/* Higher level functions (Unimplemented) */
-int dwarf_pcfile(Dwarf_Debug /*dbg*/,
- Dwarf_Addr /*pc*/,
- Dwarf_Die* /*return_die*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented */
-int dwarf_pcsubr(Dwarf_Debug /*dbg*/,
- Dwarf_Addr /*pc*/,
- Dwarf_Die* /*return_die*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented */
-int dwarf_pcscope(Dwarf_Debug /*dbg*/,
- Dwarf_Addr /*pc*/,
- Dwarf_Die* /*return_die*/,
- Dwarf_Error* /*error*/);
-
-/* operations on DIEs */
-int dwarf_tag(Dwarf_Die /*die*/,
- Dwarf_Half* /*return_tag*/,
- Dwarf_Error* /*error*/);
-
-/* utility? */
-/* dwarf_dieoffset returns the global debug_info
- section offset, not the CU relative offset. */
-int dwarf_dieoffset(Dwarf_Die /*die*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_CU_dieoffset_given_die returns
- the global debug_info section offset of the CU die
- that is the CU containing the given_die
- (the passed in DIE can be any DIE).
- This information makes it possible for a consumer to
- find and print CU context information for any die.
- See also dwarf_get_cu_die_offset_given_cu_header_offset(). */
-int dwarf_CU_dieoffset_given_die(Dwarf_Die /*given_die*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_die_CU_offset returns the CU relative offset
- not the global debug_info section offset, given
- any DIE in the CU. See also dwarf_CU_dieoffset_given_die().
- */
-int dwarf_die_CU_offset(Dwarf_Die /*die*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_die_CU_offset_range(Dwarf_Die /*die*/,
- Dwarf_Off* /*return_CU_header_offset*/,
- Dwarf_Off* /*return_CU_length_bytes*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_attr (Dwarf_Die /*die*/,
- Dwarf_Half /*attr*/,
- Dwarf_Attribute * /*returned_attr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_diename(Dwarf_Die /*die*/,
- char ** /*diename*/,
- Dwarf_Error* /*error*/);
-
-/* Returns the abbrev code of the die. Cannot fail. */
-int dwarf_die_abbrev_code(Dwarf_Die /*die */);
-
-
-/* convenience functions, alternative to using dwarf_attrlist() */
-int dwarf_hasattr(Dwarf_Die /*die*/,
- Dwarf_Half /*attr*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_loclist_n preferred over dwarf_loclist */
-int dwarf_loclist_n(Dwarf_Attribute /*attr*/,
- Dwarf_Locdesc*** /*llbuf*/,
- Dwarf_Signed * /*locCount*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_loclist(Dwarf_Attribute /*attr*/, /* inflexible! */
- Dwarf_Locdesc** /*llbuf*/,
- Dwarf_Signed * /*locCount*/,
- Dwarf_Error* /*error*/);
-
-/* Extracts a dwarf expression from an expression byte stream.
- Useful to get expressions from DW_CFA_def_cfa_expression
- DW_CFA_expression DW_CFA_val_expression expression bytes.
- 27 April 2009: dwarf_loclist_from_expr() interface with
- no addr_size is obsolete but supported,
- use dwarf_loclist_from_expr_a() instead.
-*/
-int dwarf_loclist_from_expr(Dwarf_Debug dbg,
- Dwarf_Ptr expression_in,
- Dwarf_Unsigned expression_length,
- Dwarf_Locdesc ** llbuf,
- Dwarf_Signed * listlen, Dwarf_Error * error);
-
-/* dwarf_loclist_from_expr_a() new 27 Apr 2009: added addr_size argument. */
-int dwarf_loclist_from_expr_a(Dwarf_Debug dbg,
- Dwarf_Ptr expression_in,
- Dwarf_Unsigned expression_length,
- Dwarf_Half addr_size,
- Dwarf_Locdesc ** llbuf,
- Dwarf_Signed * listlen, Dwarf_Error * error);
-
-/* Unimplemented */
-int dwarf_stringlen(Dwarf_Die /*die*/,
- Dwarf_Locdesc ** /*returned_locdesc*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented */
-int dwarf_subscrcnt(Dwarf_Die /*die*/,
- Dwarf_Signed * /*returned_count*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented */
-int dwarf_nthsubscr(Dwarf_Die /*die*/,
- Dwarf_Unsigned /*ssndx*/,
- Dwarf_Die * /*returned_die*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_lowpc(Dwarf_Die /*die*/,
- Dwarf_Addr * /*returned_addr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_highpc(Dwarf_Die /*die*/,
- Dwarf_Addr * /*returned_addr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_bytesize(Dwarf_Die /*die*/,
- Dwarf_Unsigned * /*returned_size*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented */
-int dwarf_isbitfield(Dwarf_Die /*die*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_bitsize(Dwarf_Die /*die*/,
- Dwarf_Unsigned * /*returned_size*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_bitoffset(Dwarf_Die /*die*/,
- Dwarf_Unsigned * /*returned_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_srclang(Dwarf_Die /*die*/,
- Dwarf_Unsigned * /*returned_lang*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_arrayorder(Dwarf_Die /*die*/,
- Dwarf_Unsigned * /*returned_order*/,
- Dwarf_Error* /*error*/);
-
-/* end of convenience function list */
-
-/* this is the main interface to attributes of a DIE */
-int dwarf_attrlist(Dwarf_Die /*die*/,
- Dwarf_Attribute** /*attrbuf*/,
- Dwarf_Signed * /*attrcount*/,
- Dwarf_Error* /*error*/);
-
-/* query operations for attributes */
-int dwarf_hasform(Dwarf_Attribute /*attr*/,
- Dwarf_Half /*form*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_whatform(Dwarf_Attribute /*attr*/,
- Dwarf_Half * /*returned_form*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_whatform_direct(Dwarf_Attribute /*attr*/,
- Dwarf_Half * /*returned_form*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_whatattr(Dwarf_Attribute /*attr*/,
- Dwarf_Half * /*returned_attr_num*/,
- Dwarf_Error* /*error*/);
-
-/*
- The following are concerned with the Primary Interface: getting
- the actual data values. One function per 'kind' of FORM.
-*/
-/* dwarf_formref returns, thru return_offset, a CU-relative offset
- and does not allow DW_FORM_ref_addr*/
-int dwarf_formref(Dwarf_Attribute /*attr*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-/* dwarf_global_formref returns, thru return_offset,
- a debug_info-relative offset and does allow all reference forms*/
-int dwarf_global_formref(Dwarf_Attribute /*attr*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_formsig8 returns in the caller-provided 8 byte area
- the 8 bytes of a DW_FORM_ref_sig8. Not a string. */
-int dwarf_formsig8(Dwarf_Attribute /*attr*/,
- Dwarf_Sig8 * /*returned sig bytes*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formaddr(Dwarf_Attribute /*attr*/,
- Dwarf_Addr * /*returned_addr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formflag(Dwarf_Attribute /*attr*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formudata(Dwarf_Attribute /*attr*/,
- Dwarf_Unsigned * /*returned_val*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formsdata(Dwarf_Attribute /*attr*/,
- Dwarf_Signed * /*returned_val*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formblock(Dwarf_Attribute /*attr*/,
- Dwarf_Block ** /*returned_block*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formstring(Dwarf_Attribute /*attr*/,
- char ** /*returned_string*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_formexprloc(Dwarf_Attribute /*attr*/,
- Dwarf_Unsigned * /*return_exprlen*/,
- Dwarf_Ptr * /*block_ptr*/,
- Dwarf_Error * /*error*/);
-
-
-/* end attribute query operations. */
-
-/* line number operations */
-/* dwarf_srclines is the normal interface */
-int dwarf_srclines(Dwarf_Die /*die*/,
- Dwarf_Line** /*linebuf*/,
- Dwarf_Signed * /*linecount*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_srclines_dealloc, created July 2005, is the new
- method for deallocating what dwarf_srclines returns.
- More complete free than using dwarf_dealloc directly. */
-void dwarf_srclines_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Line* /*linebuf*/,
- Dwarf_Signed /*count */);
-
-
-int dwarf_srcfiles(Dwarf_Die /*die*/,
- char*** /*srcfiles*/,
- Dwarf_Signed * /*filecount*/,
- Dwarf_Error* /*error*/);
-
-/* Unimplemented. */
-int dwarf_dieline(Dwarf_Die /*die*/,
- Dwarf_Line * /*returned_line*/,
- Dwarf_Error * /*error*/);
-
-int dwarf_linebeginstatement(Dwarf_Line /*line*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_lineendsequence(Dwarf_Line /*line*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_lineno(Dwarf_Line /*line*/,
- Dwarf_Unsigned * /*returned_lineno*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_line_srcfileno(Dwarf_Line /*line*/,
- Dwarf_Unsigned * /*ret_fileno*/,
- Dwarf_Error * /*error*/);
-
-int dwarf_lineaddr(Dwarf_Line /*line*/,
- Dwarf_Addr * /*returned_addr*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_lineoff(Dwarf_Line /*line*/,
- Dwarf_Signed * /*returned_lineoffset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_linesrc(Dwarf_Line /*line*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_lineblock(Dwarf_Line /*line*/,
- Dwarf_Bool * /*returned_bool*/,
- Dwarf_Error* /*error*/);
-
-/* tertiary interface to line info */
-/* Unimplemented */
-int dwarf_pclines(Dwarf_Debug /*dbg*/,
- Dwarf_Addr /*pc*/,
- Dwarf_Line** /*linebuf*/,
- Dwarf_Signed * /*linecount*/,
- Dwarf_Signed /*slide*/,
- Dwarf_Error* /*error*/);
-/* end line number operations */
-
-/* global name space operations (.debug_pubnames access) */
-int dwarf_get_globals(Dwarf_Debug /*dbg*/,
- Dwarf_Global** /*globals*/,
- Dwarf_Signed * /*number_of_globals*/,
- Dwarf_Error* /*error*/);
-void dwarf_globals_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Global* /*globals*/,
- Dwarf_Signed /*number_of_globals*/);
-
-int dwarf_globname(Dwarf_Global /*glob*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_global_die_offset(Dwarf_Global /*global*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error * /*error*/);
-
-/* This returns the CU die global offset if one knows the
- CU header global offset.
- See also dwarf_CU_dieoffset_given_die(). */
-int dwarf_get_cu_die_offset_given_cu_header_offset(
- Dwarf_Debug /*dbg*/,
- Dwarf_Off /*in_cu_header_offset*/,
- Dwarf_Off * /*out_cu_die_offset*/,
- Dwarf_Error * /*err*/);
-#ifdef __sgi /* pragma is sgi MIPS only */
-#pragma optional dwarf_get_cu_die_offset_given_cu_header_offset
-#endif
-
-int dwarf_global_cu_offset(Dwarf_Global /*global*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_global_name_offsets(Dwarf_Global /*global*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* Static function name operations. */
-int dwarf_get_funcs(Dwarf_Debug /*dbg*/,
- Dwarf_Func** /*funcs*/,
- Dwarf_Signed * /*number_of_funcs*/,
- Dwarf_Error* /*error*/);
-void dwarf_funcs_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Func* /*funcs*/,
- Dwarf_Signed /*number_of_funcs*/);
-
-int dwarf_funcname(Dwarf_Func /*func*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_func_die_offset(Dwarf_Func /*func*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_func_cu_offset(Dwarf_Func /*func*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_func_name_offsets(Dwarf_Func /*func*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* User-defined type name operations, SGI IRIX .debug_typenames section.
- Same content as DWARF3 .debug_pubtypes, but defined years before
- .debug_pubtypes was defined. SGI IRIX only. */
-int dwarf_get_types(Dwarf_Debug /*dbg*/,
- Dwarf_Type** /*types*/,
- Dwarf_Signed * /*number_of_types*/,
- Dwarf_Error* /*error*/);
-void dwarf_types_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Type* /*types*/,
- Dwarf_Signed /*number_of_types*/);
-
-
-int dwarf_typename(Dwarf_Type /*type*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_type_die_offset(Dwarf_Type /*type*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_type_cu_offset(Dwarf_Type /*type*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_type_name_offsets(Dwarf_Type /*type*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* User-defined type name operations, DWARF3 .debug_pubtypes section.
-*/
-int dwarf_get_pubtypes(Dwarf_Debug /*dbg*/,
- Dwarf_Type** /*types*/,
- Dwarf_Signed * /*number_of_types*/,
- Dwarf_Error* /*error*/);
-void dwarf_pubtypes_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Type* /*pubtypes*/,
- Dwarf_Signed /*number_of_pubtypes*/);
-
-
-int dwarf_pubtypename(Dwarf_Type /*type*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_pubtype_die_offset(Dwarf_Type /*type*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_pubtype_cu_offset(Dwarf_Type /*type*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_pubtype_name_offsets(Dwarf_Type /*type*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* File-scope static variable name operations. */
-int dwarf_get_vars(Dwarf_Debug /*dbg*/,
- Dwarf_Var** /*vars*/,
- Dwarf_Signed * /*number_of_vars*/,
- Dwarf_Error* /*error*/);
-void dwarf_vars_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Var* /*vars*/,
- Dwarf_Signed /*number_of_vars*/);
-
-
-int dwarf_varname(Dwarf_Var /*var*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_var_die_offset(Dwarf_Var /*var*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_var_cu_offset(Dwarf_Var /*var*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_var_name_offsets(Dwarf_Var /*var*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* weak name operations. */
-int dwarf_get_weaks(Dwarf_Debug /*dbg*/,
- Dwarf_Weak** /*weaks*/,
- Dwarf_Signed * /*number_of_weaks*/,
- Dwarf_Error* /*error*/);
-void dwarf_weaks_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Weak* /*weaks*/,
- Dwarf_Signed /*number_of_weaks*/);
-
-
-int dwarf_weakname(Dwarf_Weak /*weak*/,
- char ** /*returned_name*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_weak_die_offset(Dwarf_Weak /*weak*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_weak_cu_offset(Dwarf_Weak /*weak*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_weak_name_offsets(Dwarf_Weak /*weak*/,
- char ** /*returned_name*/,
- Dwarf_Off* /*die_offset*/,
- Dwarf_Off* /*cu_offset*/,
- Dwarf_Error* /*error*/);
-
-/* location list section operation. (.debug_loc access) */
-int dwarf_get_loclist_entry(Dwarf_Debug /*dbg*/,
- Dwarf_Unsigned /*offset*/,
- Dwarf_Addr* /*hipc*/,
- Dwarf_Addr* /*lopc*/,
- Dwarf_Ptr* /*data*/,
- Dwarf_Unsigned* /*entry_len*/,
- Dwarf_Unsigned* /*next_entry*/,
- Dwarf_Error* /*error*/);
-
-/* abbreviation section operations */
-int dwarf_get_abbrev(Dwarf_Debug /*dbg*/,
- Dwarf_Unsigned /*offset*/,
- Dwarf_Abbrev * /*returned_abbrev*/,
- Dwarf_Unsigned* /*length*/,
- Dwarf_Unsigned* /*attr_count*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_abbrev_tag(Dwarf_Abbrev /*abbrev*/,
- Dwarf_Half* /*return_tag_number*/,
- Dwarf_Error* /*error*/);
-int dwarf_get_abbrev_code(Dwarf_Abbrev /*abbrev*/,
- Dwarf_Unsigned* /*return_code_number*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_abbrev_children_flag(Dwarf_Abbrev /*abbrev*/,
- Dwarf_Signed* /*return_flag*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_abbrev_entry(Dwarf_Abbrev /*abbrev*/,
- Dwarf_Signed /*index*/,
- Dwarf_Half * /*returned_attr_num*/,
- Dwarf_Signed* /*form*/,
- Dwarf_Off* /*offset*/,
- Dwarf_Error* /*error*/);
-
-/* consumer string section operation */
-int dwarf_get_str(Dwarf_Debug /*dbg*/,
- Dwarf_Off /*offset*/,
- char** /*string*/,
- Dwarf_Signed * /*strlen_of_string*/,
- Dwarf_Error* /*error*/);
-
-/* Consumer op on gnu .eh_frame info */
-int dwarf_get_fde_list_eh(
- Dwarf_Debug /*dbg*/,
- Dwarf_Cie** /*cie_data*/,
- Dwarf_Signed* /*cie_element_count*/,
- Dwarf_Fde** /*fde_data*/,
- Dwarf_Signed* /*fde_element_count*/,
- Dwarf_Error* /*error*/);
-
-
-/* consumer operations on frame info: .debug_frame */
-int dwarf_get_fde_list(Dwarf_Debug /*dbg*/,
- Dwarf_Cie** /*cie_data*/,
- Dwarf_Signed* /*cie_element_count*/,
- Dwarf_Fde** /*fde_data*/,
- Dwarf_Signed* /*fde_element_count*/,
- Dwarf_Error* /*error*/);
-
-/* Release storage gotten by dwarf_get_fde_list_eh() or
- dwarf_get_fde_list() */
-void dwarf_fde_cie_list_dealloc(Dwarf_Debug dbg,
- Dwarf_Cie *cie_data,
- Dwarf_Signed cie_element_count,
- Dwarf_Fde *fde_data,
- Dwarf_Signed fde_element_count);
-
-
-
-int dwarf_get_fde_range(Dwarf_Fde /*fde*/,
- Dwarf_Addr* /*low_pc*/,
- Dwarf_Unsigned* /*func_length*/,
- Dwarf_Ptr* /*fde_bytes*/,
- Dwarf_Unsigned* /*fde_byte_length*/,
- Dwarf_Off* /*cie_offset*/,
- Dwarf_Signed* /*cie_index*/,
- Dwarf_Off* /*fde_offset*/,
- Dwarf_Error* /*error*/);
-
-/* Useful for IRIX only: see dwarf_get_cie_augmentation_data()
- dwarf_get_fde_augmentation_data() for GNU .eh_frame. */
-int dwarf_get_fde_exception_info(Dwarf_Fde /*fde*/,
- Dwarf_Signed* /* offset_into_exception_tables */,
- Dwarf_Error* /*error*/);
-
-
-int dwarf_get_cie_of_fde(Dwarf_Fde /*fde*/,
- Dwarf_Cie * /*cie_returned*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_cie_info(Dwarf_Cie /*cie*/,
- Dwarf_Unsigned * /*bytes_in_cie*/,
- Dwarf_Small* /*version*/,
- char ** /*augmenter*/,
- Dwarf_Unsigned* /*code_alignment_factor*/,
- Dwarf_Signed* /*data_alignment_factor*/,
- Dwarf_Half* /*return_address_register_rule*/,
- Dwarf_Ptr* /*initial_instructions*/,
- Dwarf_Unsigned* /*initial_instructions_length*/,
- Dwarf_Error* /*error*/);
-
-/* dwarf_get_cie_index new September 2009. */
-int dwarf_get_cie_index(
- Dwarf_Cie /*cie*/,
- Dwarf_Signed* /*index*/,
- Dwarf_Error* /*error*/ );
-
-
-int dwarf_get_fde_instr_bytes(Dwarf_Fde /*fde*/,
- Dwarf_Ptr * /*outinstrs*/, Dwarf_Unsigned * /*outlen*/,
- Dwarf_Error * /*error*/);
-
-int dwarf_get_fde_info_for_all_regs(Dwarf_Fde /*fde*/,
- Dwarf_Addr /*pc_requested*/,
- Dwarf_Regtable* /*reg_table*/,
- Dwarf_Addr* /*row_pc*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_fde_info_for_all_regs3(Dwarf_Fde /*fde*/,
- Dwarf_Addr /*pc_requested*/,
- Dwarf_Regtable3* /*reg_table*/,
- Dwarf_Addr* /*row_pc*/,
- Dwarf_Error* /*error*/);
-
-/* In this older interface DW_FRAME_CFA_COL is a meaningful
- column (which does not work well with DWARF3 or
- non-MIPS architectures). */
-int dwarf_get_fde_info_for_reg(Dwarf_Fde /*fde*/,
- Dwarf_Half /*table_column*/,
- Dwarf_Addr /*pc_requested*/,
- Dwarf_Signed* /*offset_relevant*/,
- Dwarf_Signed* /*register*/,
- Dwarf_Signed* /*offset*/,
- Dwarf_Addr* /*row_pc*/,
- Dwarf_Error* /*error*/);
-
-/* See discussion of dw_value_type, libdwarf.h.
- Use of DW_FRAME_CFA_COL is not meaningful in this interface.
- See dwarf_get_fde_info_for_cfa_reg3().
-*/
-/* dwarf_get_fde_info_for_reg3 is useful on a single column, but
- it is inefficient to iterate across all table_columns using this
- function. Instead call dwarf_get_fde_info_for_all_regs3() and index
- into the table it fills in. */
-int dwarf_get_fde_info_for_reg3(Dwarf_Fde /*fde*/,
- Dwarf_Half /*table_column*/,
- Dwarf_Addr /*pc_requested*/,
- Dwarf_Small * /*value_type*/,
- Dwarf_Signed * /*offset_relevant*/,
- Dwarf_Signed* /*register*/,
- Dwarf_Signed* /*offset_or_block_len*/,
- Dwarf_Ptr * /*block_ptr */,
- Dwarf_Addr* /*row_pc_out*/,
- Dwarf_Error* /*error*/);
-
-/* Use this to get the cfa. */
-int dwarf_get_fde_info_for_cfa_reg3(Dwarf_Fde /*fde*/,
- Dwarf_Addr /*pc_requested*/,
- Dwarf_Small * /*value_type*/,
- Dwarf_Signed * /*offset_relevant*/,
- Dwarf_Signed* /*register*/,
- Dwarf_Signed* /*offset_or_block_len*/,
- Dwarf_Ptr * /*block_ptr */,
- Dwarf_Addr* /*row_pc_out*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_fde_for_die(Dwarf_Debug /*dbg*/,
- Dwarf_Die /*subr_die */,
- Dwarf_Fde * /*returned_fde*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_fde_n(Dwarf_Fde* /*fde_data*/,
- Dwarf_Unsigned /*fde_index*/,
- Dwarf_Fde * /*returned_fde*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_fde_at_pc(Dwarf_Fde* /*fde_data*/,
- Dwarf_Addr /*pc_of_interest*/,
- Dwarf_Fde * /*returned_fde*/,
- Dwarf_Addr* /*lopc*/,
- Dwarf_Addr* /*hipc*/,
- Dwarf_Error* /*error*/);
-
-/* GNU .eh_frame augmentation information, raw form, see
- Linux Standard Base Core Specification version 3.0 . */
-int dwarf_get_cie_augmentation_data(Dwarf_Cie /* cie*/,
- Dwarf_Small ** /* augdata */,
- Dwarf_Unsigned * /* augdata_len */,
- Dwarf_Error* /*error*/);
-/* GNU .eh_frame augmentation information, raw form, see
- Linux Standard Base Core Specification version 3.0 . */
-int dwarf_get_fde_augmentation_data(Dwarf_Fde /* fde*/,
- Dwarf_Small ** /* augdata */,
- Dwarf_Unsigned * /* augdata_len */,
- Dwarf_Error* /*error*/);
-
-int dwarf_expand_frame_instructions(Dwarf_Cie /*cie*/,
- Dwarf_Ptr /*instruction*/,
- Dwarf_Unsigned /*i_length*/,
- Dwarf_Frame_Op** /*returned_op_list*/,
- Dwarf_Signed* /*op_count*/,
- Dwarf_Error* /*error*/);
-
-/* Operations on .debug_aranges. */
-int dwarf_get_aranges(Dwarf_Debug /*dbg*/,
- Dwarf_Arange** /*aranges*/,
- Dwarf_Signed * /*arange_count*/,
- Dwarf_Error* /*error*/);
-
-
-
-int dwarf_get_arange(
- Dwarf_Arange* /*aranges*/,
- Dwarf_Unsigned /*arange_count*/,
- Dwarf_Addr /*address*/,
- Dwarf_Arange * /*returned_arange*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_cu_die_offset(
- Dwarf_Arange /*arange*/,
- Dwarf_Off* /*return_offset*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_arange_cu_header_offset(
- Dwarf_Arange /*arange*/,
- Dwarf_Off* /*return_cu_header_offset*/,
- Dwarf_Error* /*error*/);
-#ifdef __sgi /* pragma is sgi MIPS only */
-#pragma optional dwarf_get_arange_cu_header_offset
-#endif
-
-/* DWARF2,3 interface. No longer really adequate (it was never
- right for segmented address spaces, please switch
- to using dwarf_get_arange_info_b instead.
- There is no effective difference between these
- functions if the address space
- of the target is not segmented. */
-int dwarf_get_arange_info(
- Dwarf_Arange /*arange*/,
- Dwarf_Addr* /*start*/,
- Dwarf_Unsigned* /*length*/,
- Dwarf_Off* /*cu_die_offset*/,
- Dwarf_Error* /*error*/ );
-
-/* New for DWARF4, entries may have segment information.
- *segment is only meaningful if *segment_entry_size is non-zero. */
-int dwarf_get_arange_info_b(
- Dwarf_Arange /*arange*/,
- Dwarf_Unsigned* /*segment*/,
- Dwarf_Unsigned* /*segment_entry_size*/,
- Dwarf_Addr * /*start*/,
- Dwarf_Unsigned* /*length*/,
- Dwarf_Off * /*cu_die_offset*/,
- Dwarf_Error * /*error*/ );
-
-
-/* consumer .debug_macinfo information interface.
-*/
-struct Dwarf_Macro_Details_s {
- Dwarf_Off dmd_offset; /* offset, in the section,
- of this macro info */
- Dwarf_Small dmd_type; /* the type, DW_MACINFO_define etc*/
- Dwarf_Signed dmd_lineno; /* the source line number where
- applicable and vend_def # if
- vendor_extension op
- */
-
- Dwarf_Signed dmd_fileindex;/* the source file index:
- applies to define undef start_file
- */
- char * dmd_macro; /* macro name (with value for defineop)
- string from vendor ext
- */
-};
-
-/* dwarf_print_lines is for use by dwarfdump: it prints
- line info to stdout.
- The _dwarf name is obsolete. Use dwarf_ instead.
- Added extra argnument 2/2009 for better checking.
-*/
-int _dwarf_print_lines(Dwarf_Die /*cu_die*/,Dwarf_Error * /*error*/);
-int dwarf_print_lines(Dwarf_Die /*cu_die*/,Dwarf_Error * /*error*/,
- int * /*error_count_out */);
-
-/* dwarf_check_lineheader lets dwarfdump get detailed messages
- about some compiler errors we detect.
- We return the count of detected errors throught the
- pointer.
-*/
-void dwarf_check_lineheader(Dwarf_Die /*cu_die*/,int *errcount_out);
-
-/* dwarf_ld_sort_lines helps SGI IRIX ld
- rearrange lines in .debug_line in a .o created with a text
- section per function.
- -OPT:procedure_reorder=ON
- where ld-cord (cord(1)ing by ld,
- not by cord(1)) may have changed the function order.
- The _dwarf name is obsolete. Use dwarf_ instead.
-*/
-int _dwarf_ld_sort_lines(
- void * /*orig_buffer*/,
- unsigned long /* buffer_len*/,
- int /*is_64_bit*/,
- int * /*any_change*/,
- int * /*err_code*/);
-int dwarf_ld_sort_lines(
- void * /*orig_buffer*/,
- unsigned long /*buffer_len*/,
- int /*is_64_bit*/,
- int * /*any_change*/,
- int * /*err_code*/);
-
-/* Used by dwarfdump -v to print fde offsets from debugging
- info.
- The _dwarf name is obsolete. Use dwarf_ instead.
-*/
-int _dwarf_fde_section_offset(Dwarf_Debug dbg,
- Dwarf_Fde /*in_fde*/,
- Dwarf_Off * /*fde_off*/,
- Dwarf_Off * /*cie_off*/,
- Dwarf_Error * /*err*/);
-int dwarf_fde_section_offset(Dwarf_Debug dbg,
- Dwarf_Fde /*in_fde*/,
- Dwarf_Off * /*fde_off*/,
- Dwarf_Off * /*cie_off*/,
- Dwarf_Error * /*err*/);
-
-/* Used by dwarfdump -v to print cie offsets from debugging
- info.
- The _dwarf name is obsolete. Use dwarf_ instead.
-*/
-int dwarf_cie_section_offset(Dwarf_Debug /*dbg*/,
- Dwarf_Cie /*in_cie*/,
- Dwarf_Off * /*cie_off */,
- Dwarf_Error * /*err*/);
-int _dwarf_cie_section_offset(Dwarf_Debug /*dbg*/,
- Dwarf_Cie /*in_cie*/,
- Dwarf_Off * /*cie_off*/,
- Dwarf_Error * /*err*/);
-
-typedef struct Dwarf_Macro_Details_s Dwarf_Macro_Details;
-
-int dwarf_get_macro(Dwarf_Debug /*dbg*/,
- char * /*requested_macro_name*/,
- Dwarf_Addr /*pc_of_request*/,
- char ** /*returned_macro_value*/,
- Dwarf_Error * /*error*/);
-
-int dwarf_get_all_defined_macros(Dwarf_Debug /*dbg*/,
- Dwarf_Addr /*pc_of_request*/,
- Dwarf_Signed * /*returned_count*/,
- char *** /*returned_pointers_to_macros*/,
- Dwarf_Error * /*error*/);
-
-char *dwarf_find_macro_value_start(char * /*macro_string*/);
-
-int dwarf_get_macro_details(Dwarf_Debug /*dbg*/,
- Dwarf_Off /*macro_offset*/,
- Dwarf_Unsigned /*maximum_count*/,
- Dwarf_Signed * /*entry_count*/,
- Dwarf_Macro_Details ** /*details*/,
- Dwarf_Error * /*err*/);
-
-
-int dwarf_get_address_size(Dwarf_Debug /*dbg*/,
- Dwarf_Half * /*addr_size*/,
- Dwarf_Error * /*error*/);
-int dwarf_get_die_address_size(Dwarf_Die /*die*/,
- Dwarf_Half * /*addr_size*/,
- Dwarf_Error * /*error*/);
-
-/* The dwarf specification separates FORMs into
-different classes. To do the seperation properly
-requires 4 pieces of data as of DWARF4 (thus the
-function arguments listed here).
-The DWARF4 specification class definition suffices to
-describe all DWARF versions.
-See section 7.5.4, Attribute Encodings.
-A return of DW_FORM_CLASS_UNKNOWN means we could not properly figure
-out what form-class it is.
-
- DW_FORM_CLASS_FRAMEPTR is MIPS/IRIX only, and refers
- to the DW_AT_MIPS_fde attribute (a reference to the
- .debug_frame section).
-*/
-enum Dwarf_Form_Class {
- DW_FORM_CLASS_UNKNOWN, DW_FORM_CLASS_ADDRESS,
- DW_FORM_CLASS_BLOCK, DW_FORM_CLASS_CONSTANT,
- DW_FORM_CLASS_EXPRLOC, DW_FORM_CLASS_FLAG,
- DW_FORM_CLASS_LINEPTR, DW_FORM_CLASS_LOCLISTPTR,
- DW_FORM_CLASS_MACPTR, DW_FORM_CLASS_RANGELISTPTR,
- DW_FORM_CLASS_REFERENCE, DW_FORM_CLASS_STRING,
- DW_FORM_CLASS_FRAMEPTR
-};
-
-enum Dwarf_Form_Class dwarf_get_form_class(
- Dwarf_Half /* dwversion */,
- Dwarf_Half /* attrnum */,
- Dwarf_Half /*offset_size */,
- Dwarf_Half /*form*/);
-
-/* utility operations */
-Dwarf_Unsigned dwarf_errno(Dwarf_Error /*error*/);
-
-char* dwarf_errmsg(Dwarf_Error /*error*/);
-
-/* stringcheck zero is default and means do all
-** string length validity checks.
-** Call with parameter value 1 to turn off many such checks (and
-** increase performance).
-** Call with zero for safest running.
-** Actual value saved and returned is only 8 bits! Upper bits
-** ignored by libdwarf (and zero on return).
-** Returns previous value.
-*/
-int dwarf_set_stringcheck(int /*stringcheck*/);
-
-/* 'apply' defaults to 1 and means do all
- * 'rela' relocations on reading in a dwarf object section with
- * such relocations.
- * Call with parameter value 0 to turn off application of
- * such relocations.
- * Since the static linker leaves 'bogus' data in object sections
- * with a 'rela' relocation section such data cannot be read
- * sensibly without processing the relocations. Such relocations
- * do not exist in executables and shared objects (.so), the
- * relocations only exist in plain .o relocatable object files.
- * Actual value saved and returned is only 8 bits! Upper bits
- * ignored by libdwarf (and zero on return).
- * Returns previous value.
- * */
-int dwarf_set_reloc_application(int /*apply*/);
-
-
-/* Unimplemented */
-Dwarf_Handler dwarf_seterrhand(Dwarf_Debug /*dbg*/, Dwarf_Handler /*errhand*/);
-
-/* Unimplemented */
-Dwarf_Ptr dwarf_seterrarg(Dwarf_Debug /*dbg*/, Dwarf_Ptr /*errarg*/);
-
-void dwarf_dealloc(Dwarf_Debug /*dbg*/, void* /*space*/,
- Dwarf_Unsigned /*type*/);
-
-/* DWARF Producer Interface */
-
-typedef int (*Dwarf_Callback_Func)(
- char* /*name*/,
- int /*size*/,
- Dwarf_Unsigned /*type*/,
- Dwarf_Unsigned /*flags*/,
- Dwarf_Unsigned /*link*/,
- Dwarf_Unsigned /*info*/,
- int* /*sect name index*/,
- int* /*error*/);
-
-Dwarf_P_Debug dwarf_producer_init(
- Dwarf_Unsigned /*creation_flags*/,
- Dwarf_Callback_Func /*func*/,
- Dwarf_Handler /*errhand*/,
- Dwarf_Ptr /*errarg*/,
- Dwarf_Error* /*error*/);
-
-typedef int (*Dwarf_Callback_Func_b)(
- char* /*name*/,
- int /*size*/,
- Dwarf_Unsigned /*type*/,
- Dwarf_Unsigned /*flags*/,
- Dwarf_Unsigned /*link*/,
- Dwarf_Unsigned /*info*/,
- Dwarf_Unsigned* /*sect_name_index*/,
- int* /*error*/);
-
-
-Dwarf_P_Debug dwarf_producer_init_b(
- Dwarf_Unsigned /*flags*/,
- Dwarf_Callback_Func_b /*func*/,
- Dwarf_Handler /*errhand*/,
- Dwarf_Ptr /*errarg*/,
- Dwarf_Error * /*error*/);
-
-
-Dwarf_Signed dwarf_transform_to_disk_form(Dwarf_P_Debug /*dbg*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Ptr dwarf_get_section_bytes(Dwarf_P_Debug /*dbg*/,
- Dwarf_Signed /*dwarf_section*/,
- Dwarf_Signed* /*elf_section_index*/,
- Dwarf_Unsigned* /*length*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_relocation_info_count(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned * /*count_of_relocation_sections*/,
- int * /*drd_buffer_version*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_get_relocation_info(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_Signed * /*elf_section_index*/,
- Dwarf_Signed * /*elf_section_index_link*/,
- Dwarf_Unsigned * /*relocation_buffer_count*/,
- Dwarf_Relocation_Data * /*reldata_buffer*/,
- Dwarf_Error* /*error*/);
-
-/* v1: no drd_length field, enum explicit */
-/* v2: has the drd_length field, enum value in uchar member */
-#define DWARF_DRD_BUFFER_VERSION 2
-
-/* Markers are not written to DWARF2/3/4, they are user
- defined and may be used for any purpose.
-*/
-Dwarf_Signed dwarf_get_die_markers(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Marker * /*marker_list*/,
- Dwarf_Unsigned * /*marker_count*/,
- Dwarf_Error * /*error*/);
-
-int dwarf_get_string_attributes_count(Dwarf_P_Debug,
- Dwarf_Unsigned *,
- int *,
- Dwarf_Error *);
-
-int dwarf_get_string_attributes_info(Dwarf_P_Debug,
- Dwarf_Signed *,
- Dwarf_Unsigned *,
- Dwarf_P_String_Attr *,
- Dwarf_Error *);
-
-void dwarf_reset_section_bytes(Dwarf_P_Debug /*dbg*/);
-
-Dwarf_Unsigned dwarf_producer_finish(Dwarf_P_Debug /*dbg*/,
- Dwarf_Error* /*error*/);
-
-/* Producer attribute addition functions. */
-Dwarf_P_Attribute dwarf_add_AT_targ_address(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Unsigned /*pc_value*/,
- Dwarf_Signed /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_block(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Small* /*block_data*/,
- Dwarf_Unsigned /*block_len*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_targ_address_b(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Unsigned /*pc_value*/,
- Dwarf_Unsigned /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_ref_address(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Unsigned /*pc_value*/,
- Dwarf_Unsigned /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_unsigned_const(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Unsigned /*value*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_signed_const(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Signed /*value*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_reference(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_P_Die /*otherdie*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_dataref(
- Dwarf_P_Debug /* dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Unsigned /*pcvalue*/,
- Dwarf_Unsigned /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_const_value_string(Dwarf_P_Die /*ownerdie*/,
- char* /*string_value*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_location_expr(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_P_Expr /*loc_expr*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_string(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- char* /*string*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_flag(Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Half /*attr*/,
- Dwarf_Small /*flag*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_producer(Dwarf_P_Die /*ownerdie*/,
- char* /*producer_string*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_const_value_signedint(Dwarf_P_Die /*ownerdie*/,
- Dwarf_Signed /*signed_value*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_const_value_unsignedint(
- Dwarf_P_Die /*ownerdie*/,
- Dwarf_Unsigned /*unsigned_value*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_comp_dir(Dwarf_P_Die /*ownerdie*/,
- char* /*current_working_directory*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Attribute dwarf_add_AT_name(Dwarf_P_Die /*die*/,
- char* /*name*/,
- Dwarf_Error* /*error*/);
-
-/* Producer line creation functions (.debug_line) */
-Dwarf_Unsigned dwarf_add_directory_decl(Dwarf_P_Debug /*dbg*/,
- char* /*name*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_file_decl(Dwarf_P_Debug /*dbg*/,
- char* /*name*/,
- Dwarf_Unsigned /*dir_index*/,
- Dwarf_Unsigned /*time_last_modified*/,
- Dwarf_Unsigned /*length*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_line_entry(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*file_index*/,
- Dwarf_Addr /*code_address*/,
- Dwarf_Unsigned /*lineno*/,
- Dwarf_Signed /*column_number*/,
- Dwarf_Bool /*is_source_stmt_begin*/,
- Dwarf_Bool /*is_basic_block_begin*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_lne_set_address(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*offset*/,
- Dwarf_Unsigned /*symbol_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_lne_end_sequence(Dwarf_P_Debug /*dbg*/,
- Dwarf_Addr /*end_address*/,
- Dwarf_Error* /*error*/);
-
-/* Producer .debug_frame functions */
-Dwarf_Unsigned dwarf_add_frame_cie(Dwarf_P_Debug /*dbg*/,
- char* /*augmenter*/,
- Dwarf_Small /*code_alignent_factor*/,
- Dwarf_Small /*data_alignment_factor*/,
- Dwarf_Small /*return_address_reg*/,
- Dwarf_Ptr /*initialization_bytes*/,
- Dwarf_Unsigned /*init_byte_len*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_frame_fde(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Fde /*fde*/,
- Dwarf_P_Die /*corresponding subprogram die*/,
- Dwarf_Unsigned /*cie_to_use*/,
- Dwarf_Unsigned /*virt_addr_of_described_code*/,
- Dwarf_Unsigned /*length_of_code*/,
- Dwarf_Unsigned /*symbol_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_frame_fde_b(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Fde /*fde*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Unsigned /*cie*/,
- Dwarf_Addr /*virt_addr*/,
- Dwarf_Unsigned /*code_len*/,
- Dwarf_Unsigned /*sym_idx*/,
- Dwarf_Unsigned /*sym_idx_of_end*/,
- Dwarf_Addr /*offset_from_end_sym*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_frame_info_b(
- Dwarf_P_Debug dbg /*dbg*/,
- Dwarf_P_Fde /*fde*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Unsigned /*cie*/,
- Dwarf_Addr /*virt_addr*/,
- Dwarf_Unsigned /*code_len*/,
- Dwarf_Unsigned /*symidx*/,
- Dwarf_Unsigned /*end_symbol */,
- Dwarf_Addr /*offset_from_end_symbol */,
- Dwarf_Signed /*offset_into_exception_tables*/,
- Dwarf_Unsigned /*exception_table_symbol*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_frame_info(
- Dwarf_P_Debug dbg /*dbg*/,
- Dwarf_P_Fde /*fde*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Unsigned /*cie*/,
- Dwarf_Addr /*virt_addr*/,
- Dwarf_Unsigned /*code_len*/,
- Dwarf_Unsigned /*symidx*/,
- Dwarf_Signed /*offset_into_exception_tables*/,
- Dwarf_Unsigned /*exception_table_symbol*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_P_Fde dwarf_add_fde_inst(
- Dwarf_P_Fde /*fde*/,
- Dwarf_Small /*op*/,
- Dwarf_Unsigned /*val1*/,
- Dwarf_Unsigned /*val2*/,
- Dwarf_Error* /*error*/);
-
-/* New September 17, 2009 */
-int dwarf_insert_fde_inst_bytes(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Fde /*fde*/,
- Dwarf_Unsigned /*len*/,
- Dwarf_Ptr /*ibytes*/,
- Dwarf_Error* /*error*/);
-
-
-Dwarf_P_Fde dwarf_new_fde(Dwarf_P_Debug /*dbg*/, Dwarf_Error* /*error*/);
-
-Dwarf_P_Fde dwarf_fde_cfa_offset(
- Dwarf_P_Fde /*fde*/,
- Dwarf_Unsigned /*register_number*/,
- Dwarf_Signed /*offset*/,
- Dwarf_Error* /*error*/);
-
-/* die creation & addition routines */
-Dwarf_P_Die dwarf_new_die(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_Tag /*tag*/,
- Dwarf_P_Die /*parent*/,
- Dwarf_P_Die /*child*/,
- Dwarf_P_Die /*left */,
- Dwarf_P_Die /*right*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_die_to_debug(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Error* /*error*/);
-
-/* Markers are not written to DWARF2/3/4, they are user
- defined and may be used for any purpose.
-*/
-Dwarf_Unsigned dwarf_add_die_marker(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Unsigned /*marker*/,
- Dwarf_Error * /*error*/);
-
-Dwarf_Unsigned dwarf_get_die_marker(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- Dwarf_Unsigned * /*marker*/,
- Dwarf_Error * /*error*/);
-
-Dwarf_P_Die dwarf_die_link(
- Dwarf_P_Die /*die*/,
- Dwarf_P_Die /*parent*/,
- Dwarf_P_Die /*child*/,
- Dwarf_P_Die /*left*/,
- Dwarf_P_Die /*right*/,
- Dwarf_Error* /*error*/);
-
-void dwarf_dealloc_compressed_block(
- Dwarf_P_Debug,
- void *
-);
-
-/* Call this passing in return value from dwarf_uncompress_integer_block()
- * to free the space the decompression allocated. */
-void dwarf_dealloc_uncompressed_block(
- Dwarf_Debug,
- void *
-);
-
-void * dwarf_compress_integer_block(
- Dwarf_P_Debug, /* dbg */
- Dwarf_Bool, /* signed==true (or unsigned) */
- Dwarf_Small, /* size of integer units: 8, 16, 32, 64 */
- void*, /* data */
- Dwarf_Unsigned, /* number of elements */
- Dwarf_Unsigned*, /* number of bytes in output block */
- Dwarf_Error* /* error */
-);
-
-/* Decode an array of signed leb integers (so of course the
- * array is not composed of fixed length values, but is instead
- * a sequence of sleb values).
- * Returns a DW_DLV_BADADDR on error.
- * Otherwise returns a pointer to an array of 32bit integers.
- * The signed argument must be non-zero (the decode
- * assumes sleb integers in the input data) at this time.
- * Size of integer units must be 32 (32 bits each) at this time.
- * Number of bytes in block is a byte count (not array count).
- * Returns number of units in output block (ie, number of elements
- * of the array that the return value points to) thru the argument.
- */
-void * dwarf_uncompress_integer_block(
- Dwarf_Debug, /* dbg */
- Dwarf_Bool, /* signed==true (or unsigned) */
- Dwarf_Small, /* size of integer units: 8, 16, 32, 64 */
- void*, /* input data */
- Dwarf_Unsigned, /* number of bytes in input */
- Dwarf_Unsigned*, /* number of units in output block */
- Dwarf_Error* /* error */
-);
-
-/* Operations to create location expressions. */
-Dwarf_P_Expr dwarf_new_expr(Dwarf_P_Debug /*dbg*/, Dwarf_Error* /*error*/);
-
-void dwarf_expr_reset(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_expr_gen(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Small /*opcode*/,
- Dwarf_Unsigned /*val1*/,
- Dwarf_Unsigned /*val2*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_expr_addr(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Unsigned /*addr*/,
- Dwarf_Signed /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_expr_addr_b(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Unsigned /*addr*/,
- Dwarf_Unsigned /*sym_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_expr_current_offset(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Addr dwarf_expr_into_block(
- Dwarf_P_Expr /*expr*/,
- Dwarf_Unsigned* /*length*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_arange(Dwarf_P_Debug /*dbg*/,
- Dwarf_Addr /*begin_address*/,
- Dwarf_Unsigned /*length*/,
- Dwarf_Signed /*symbol_index*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_arange_b(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_Addr /*begin_address*/,
- Dwarf_Unsigned /*length*/,
- Dwarf_Unsigned /*symbol_index*/,
- Dwarf_Unsigned /*end_symbol_index*/,
- Dwarf_Addr /*offset_from_end_symbol*/,
- Dwarf_Error * /*error*/);
-
-Dwarf_Unsigned dwarf_add_pubname(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- char* /*pubname_name*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_funcname(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- char* /*func_name*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_typename(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- char* /*type_name*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_varname(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- char* /*var_name*/,
- Dwarf_Error* /*error*/);
-
-Dwarf_Unsigned dwarf_add_weakname(
- Dwarf_P_Debug /*dbg*/,
- Dwarf_P_Die /*die*/,
- char* /*weak_name*/,
- Dwarf_Error* /*error*/);
-
-/* .debug_macinfo producer functions
- Functions must be called in right order: the section is output
- In the order these are presented.
-*/
-int dwarf_def_macro(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*line*/,
- char * /*macname, with (arglist), no space before (*/,
- char * /*macvalue*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_undef_macro(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*line*/,
- char * /*macname, no arglist, of course*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_start_macro_file(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*fileindex*/,
- Dwarf_Unsigned /*linenumber*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_end_macro_file(Dwarf_P_Debug /*dbg*/,
- Dwarf_Error* /*error*/);
-
-int dwarf_vendor_ext(Dwarf_P_Debug /*dbg*/,
- Dwarf_Unsigned /*constant*/,
- char * /*string*/,
- Dwarf_Error* /*error*/);
-
-/* end macinfo producer functions */
-
-int dwarf_attr_offset(Dwarf_Die /*die*/,
- Dwarf_Attribute /*attr of above die*/,
- Dwarf_Off * /*returns offset thru this ptr */,
- Dwarf_Error * /*error*/);
-
-/* This is a hack so clients can verify offsets.
- Added April 2005 so that debugger can detect broken offsets
- (which happened in an IRIX executable larger than 2GB
- with MIPSpro 7.3.1.3 toolchain.).
-*/
-int
-dwarf_get_section_max_offsets(Dwarf_Debug /*dbg*/,
- Dwarf_Unsigned * /*debug_info_size*/,
- Dwarf_Unsigned * /*debug_abbrev_size*/,
- Dwarf_Unsigned * /*debug_line_size*/,
- Dwarf_Unsigned * /*debug_loc_size*/,
- Dwarf_Unsigned * /*debug_aranges_size*/,
- Dwarf_Unsigned * /*debug_macinfo_size*/,
- Dwarf_Unsigned * /*debug_pubnames_size*/,
- Dwarf_Unsigned * /*debug_str_size*/,
- Dwarf_Unsigned * /*debug_frame_size*/,
- Dwarf_Unsigned * /*debug_ranges_size*/,
- Dwarf_Unsigned * /*debug_pubtypes_size*/);
-
-/* Multiple releases spelled 'initial' as 'inital' .
- The 'inital' spelling should not be used. */
-Dwarf_Half dwarf_set_frame_rule_inital_value(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-/* Additional interface with correct 'initial' spelling. */
-/* It is likely you will want to call the following 5 functions
- before accessing any frame information. All are useful
- to tailor handling of pseudo-registers needed to turn
- frame operation references into simpler forms and to
- reflect ABI specific data. Of course altering libdwarf.h
- and dwarf.h allow the same capabilities, but such header changes
- do not let one change these values at runtime. */
-Dwarf_Half dwarf_set_frame_rule_initial_value(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-Dwarf_Half dwarf_set_frame_rule_table_size(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-Dwarf_Half dwarf_set_frame_cfa_value(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-Dwarf_Half dwarf_set_frame_same_value(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-Dwarf_Half dwarf_set_frame_undefined_value(Dwarf_Debug /*dbg*/,
- Dwarf_Half /*value*/);
-
-/* As of April 27, 2009, this version with no diepointer is
- obsolete though supported. Use dwarf_get_ranges_a() instead. */
-int dwarf_get_ranges(Dwarf_Debug /*dbg*/,
- Dwarf_Off /*rangesoffset*/,
- Dwarf_Ranges ** /*rangesbuf*/,
- Dwarf_Signed * /*listlen*/,
- Dwarf_Unsigned * /*bytecount*/,
- Dwarf_Error * /*error*/);
-
-/* This adds the address_size argument. New April 27, 2009 */
-int dwarf_get_ranges_a(Dwarf_Debug /*dbg*/,
- Dwarf_Off /*rangesoffset*/,
- Dwarf_Die /* diepointer */,
- Dwarf_Ranges ** /*rangesbuf*/,
- Dwarf_Signed * /*listlen*/,
- Dwarf_Unsigned * /*bytecount*/,
- Dwarf_Error * /*error*/);
-
-void dwarf_ranges_dealloc(Dwarf_Debug /*dbg*/,
- Dwarf_Ranges * /*rangesbuf*/,
- Dwarf_Signed /*rangecount*/);
-
-/* The harmless error list is a circular buffer of
- errors we note but which do not stop us from processing
- the object. Created so dwarfdump or other tools
- can report such inconsequential errors without causing
- anything to stop early. */
-#define DW_HARMLESS_ERROR_CIRCULAR_LIST_DEFAULT_SIZE 4
-#define DW_HARMLESS_ERROR_MSG_STRING_SIZE 200
-/* User code supplies size of array of pointers errmsg_ptrs_array
- in count and the array of pointers (the pointers themselves
- need not be initialized).
- The pointers returned in the array of pointers
- are invalidated by ANY call to libdwarf.
- Use them before making another libdwarf call!
- The array of string pointers passed in always has
- a final null pointer, so if there are N pointers the
- and M actual strings, then MIN(M,N-1) pointers are
- set to point to error strings. The array of pointers
- to strings always terminates with a NULL pointer.
- If 'count' is passed in zero then errmsg_ptrs_array
- is not touched.
-
- The function returns DW_DLV_NO_ENTRY if no harmless errors
- were noted so far. Returns DW_DLV_OK if there are errors.
- Never returns DW_DLV_ERROR.
-
- Each call empties the error list (discarding all current entries).
- If newerr_count is non-NULL the count of harmless errors
- since the last call is returned through the pointer
- (some may have been discarded or not returned, it is a circular
- list...).
- If DW_DLV_NO_ENTRY is returned none of the arguments
- here are touched or used.
- */
-int dwarf_get_harmless_error_list(Dwarf_Debug /*dbg*/,
- unsigned /*count*/,
- const char ** /*errmsg_ptrs_array*/,
- unsigned * /*newerr_count*/);
-
-/* Insertion is only for testing the harmless error code, it is not
- necessarily useful otherwise. */
-void dwarf_insert_harmless_error(Dwarf_Debug /*dbg*/,
- char * /*newerror*/);
-
-/* The size of the circular list of strings may be set
- and reset as needed. If it is shortened excess
- messages are simply dropped. It returns the previous
- size. If zero passed in the size is unchanged
- and it simply returns the current size */
-unsigned dwarf_set_harmless_error_list_size(Dwarf_Debug /*dbg*/,
- unsigned /*maxcount*/);
-/* The harmless error strings (if any) are freed when the dbg
- is dwarf_finish()ed. */
-
-/* When the val_in is known these dwarf_get_TAG_name (etc)
- functions return the string corresponding to the val_in passed in
- through the pointer s_out and the value returned is DW_DLV_OK.
- The strings are in static storage
- and must not be freed.
- If DW_DLV_NO_ENTRY is returned the val_in is not known and
- *s_out is not set. DW_DLV_ERROR is never returned.*/
-
-extern int dwarf_get_TAG_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_children_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_FORM_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_AT_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_OP_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ATE_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_DS_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_END_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ATCF_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ACCESS_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_VIS_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_VIRTUALITY_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_LANG_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ID_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_CC_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_INL_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ORD_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_DSC_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_LNS_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_LNE_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_MACINFO_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_CFA_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_EH_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_FRAME_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_CHILDREN_name(unsigned int /*val_in*/, const char ** /*s_out */);
-extern int dwarf_get_ADDR_name(unsigned int /*val_in*/, const char ** /*s_out */);
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _LIBDWARF_H */
-
-