149d3bc91SRichard Lowe /*
249d3bc91SRichard Lowe 
307dc1947SRichard Lowe   Copyright (C) 2000,2005 Silicon Graphics, Inc.  All Rights Reserved.
4*4d9fdb46SRobert Mustacchi   Portions Copyright (C) 2008-2012  David Anderson. All Rights Reserved.
549d3bc91SRichard Lowe 
649d3bc91SRichard Lowe   This program is free software; you can redistribute it and/or modify it
7*4d9fdb46SRobert Mustacchi   under the terms of version 2.1 of the GNU Lesser General Public License
849d3bc91SRichard Lowe   as published by the Free Software Foundation.
949d3bc91SRichard Lowe 
1049d3bc91SRichard Lowe   This program is distributed in the hope that it would be useful, but
1149d3bc91SRichard Lowe   WITHOUT ANY WARRANTY; without even the implied warranty of
12*4d9fdb46SRobert Mustacchi   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1349d3bc91SRichard Lowe 
1449d3bc91SRichard Lowe   Further, this software is distributed without any warranty that it is
15*4d9fdb46SRobert Mustacchi   free of the rightful claim of any third person regarding infringement
16*4d9fdb46SRobert Mustacchi   or the like.  Any license provided herein, whether implied or
1749d3bc91SRichard Lowe   otherwise, applies only to this software file.  Patent licenses, if
18*4d9fdb46SRobert Mustacchi   any, provided herein do not apply to combinations of this program with
19*4d9fdb46SRobert Mustacchi   other software, or any other product whatsoever.
2049d3bc91SRichard Lowe 
2107dc1947SRichard Lowe   You should have received a copy of the GNU Lesser General Public
2207dc1947SRichard Lowe   License along with this program; if not, write the Free Software
2307dc1947SRichard Lowe   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
2449d3bc91SRichard Lowe   USA.
2549d3bc91SRichard Lowe 
2649d3bc91SRichard Lowe */
2749d3bc91SRichard Lowe 
2849d3bc91SRichard Lowe #define true                    1
2949d3bc91SRichard Lowe #define false                   0
3049d3bc91SRichard Lowe 
31*4d9fdb46SRobert Mustacchi /* .debug_addr new in DWARF5 */
32*4d9fdb46SRobert Mustacchi #define DW_ADDR_VERSION5   5
33*4d9fdb46SRobert Mustacchi 
34*4d9fdb46SRobert Mustacchi /* To identify a cie. That is, for .debug_frame */
3549d3bc91SRichard Lowe #define DW_CIE_ID 		~(0x0)
3607dc1947SRichard Lowe #define DW_CIE_VERSION		1 /* DWARF2 */
3707dc1947SRichard Lowe #define DW_CIE_VERSION3		3 /* DWARF3 */
3807dc1947SRichard Lowe #define DW_CIE_VERSION4		4 /* DWARF4 */
39*4d9fdb46SRobert Mustacchi #define DW_CIE_VERSION5		5 /* DWARF5 */
4007dc1947SRichard Lowe 
41*4d9fdb46SRobert Mustacchi /*  For .debug_info DWARF2,3,4,5.
42*4d9fdb46SRobert Mustacchi     .debug_types in DWARF4 only,  and gets DW_CU_VERSION4.  */
4307dc1947SRichard Lowe #define DW_CU_VERSION2 2
4407dc1947SRichard Lowe #define DW_CU_VERSION3 3
4507dc1947SRichard Lowe #define DW_CU_VERSION4 4
46*4d9fdb46SRobert Mustacchi #define DW_CU_VERSION5 5
4707dc1947SRichard Lowe 
48*4d9fdb46SRobert Mustacchi /* DWARF2,3, 4  and 5.*/
4907dc1947SRichard Lowe #define DW_ARANGES_VERSION2 2
5007dc1947SRichard Lowe 
5107dc1947SRichard Lowe #define DW_LINE_VERSION2   2
5207dc1947SRichard Lowe #define DW_LINE_VERSION3   3
5307dc1947SRichard Lowe #define DW_LINE_VERSION4   4
54*4d9fdb46SRobert Mustacchi #define DW_LINE_VERSION5   5
5549d3bc91SRichard Lowe 
56*4d9fdb46SRobert Mustacchi /* .debug_line_str (and .dwo) new in DWARF5. */
57*4d9fdb46SRobert Mustacchi #define DW_LINE_STR_VERSION5   5
58*4d9fdb46SRobert Mustacchi #define EXPERIMENTAL_LINE_TABLES_VERSION  0xf006 /* Experimental two-level line tables */
5949d3bc91SRichard Lowe 
60*4d9fdb46SRobert Mustacchi /* .debug_loc (and .dwo) First header version number is  DWARF5. */
61*4d9fdb46SRobert Mustacchi #define DW_LOC_VERSION5   5
62*4d9fdb46SRobert Mustacchi 
63*4d9fdb46SRobert Mustacchi 
64*4d9fdb46SRobert Mustacchi 
65*4d9fdb46SRobert Mustacchi /* .debug_macro (and .dwo) new in DWARF5. */
66*4d9fdb46SRobert Mustacchi #define DW_MACRO_VERSION5   5
67*4d9fdb46SRobert Mustacchi /* .debug_names new in DWARF5. */
68*4d9fdb46SRobert Mustacchi #define DW_NAMES_VERSION5   5
69*4d9fdb46SRobert Mustacchi 
70*4d9fdb46SRobert Mustacchi /* .debug_pubnames in DWARF2,3,4. */
71*4d9fdb46SRobert Mustacchi #define DW_PUBNAMES_VERSION2 2
72*4d9fdb46SRobert Mustacchi /* .debug_pubnames in DWARF3,4. */
73*4d9fdb46SRobert Mustacchi #define DW_PUBTYPES_VERSION2 2
74*4d9fdb46SRobert Mustacchi 
75*4d9fdb46SRobert Mustacchi /* .debug_ranges gets a version number in header in DWARF5. */
76*4d9fdb46SRobert Mustacchi #define DW_RANGES_VERSION5 5
7749d3bc91SRichard Lowe 
78*4d9fdb46SRobert Mustacchi 
79*4d9fdb46SRobert Mustacchi /* .debug_str_offsets (and .dwo) new in DWARF5. */
80*4d9fdb46SRobert Mustacchi #define DW_STR_OFFSETS_VERSION5   5
81*4d9fdb46SRobert Mustacchi 
82*4d9fdb46SRobert Mustacchi /* .debug_sup new in DWARF5. */
83*4d9fdb46SRobert Mustacchi #define DW_SUP_VERSION5 5
84*4d9fdb46SRobert Mustacchi 
85*4d9fdb46SRobert Mustacchi /* .debug_cu_index new in DWARF5. */
86*4d9fdb46SRobert Mustacchi #define DW_CU_INDEX_VERSION5 5
87*4d9fdb46SRobert Mustacchi /* .debug_tu_index new in DWARF5. */
88*4d9fdb46SRobert Mustacchi #define DW_TU_INDEX_VERSION5 5
89*4d9fdb46SRobert Mustacchi 
90*4d9fdb46SRobert Mustacchi 
91*4d9fdb46SRobert Mustacchi 
92*4d9fdb46SRobert Mustacchi 
93*4d9fdb46SRobert Mustacchi 
94*4d9fdb46SRobert Mustacchi /*  These are allocation type codes for structs that
95*4d9fdb46SRobert Mustacchi     are internal to the Libdwarf Consumer library.  */
96*4d9fdb46SRobert Mustacchi #define DW_DLA_ABBREV_LIST      0x1e
97*4d9fdb46SRobert Mustacchi #define DW_DLA_CHAIN            0x1f
98*4d9fdb46SRobert Mustacchi #define DW_DLA_CU_CONTEXT       0x20
99*4d9fdb46SRobert Mustacchi #define DW_DLA_FRAME            0x21
100*4d9fdb46SRobert Mustacchi #define DW_DLA_GLOBAL_CONTEXT   0x22
101*4d9fdb46SRobert Mustacchi #define DW_DLA_FILE_ENTRY       0x23
102*4d9fdb46SRobert Mustacchi #define DW_DLA_LINE_CONTEXT     0x24
103*4d9fdb46SRobert Mustacchi #define DW_DLA_LOC_CHAIN        0x25
104*4d9fdb46SRobert Mustacchi #define DW_DLA_HASH_TABLE       0x26
105*4d9fdb46SRobert Mustacchi #define DW_DLA_FUNC_CONTEXT     0x27
106*4d9fdb46SRobert Mustacchi #define DW_DLA_TYPENAME_CONTEXT 0x28
107*4d9fdb46SRobert Mustacchi #define DW_DLA_VAR_CONTEXT      0x29
108*4d9fdb46SRobert Mustacchi #define DW_DLA_WEAK_CONTEXT     0x2a
109*4d9fdb46SRobert Mustacchi #define DW_DLA_PUBTYPES_CONTEXT 0x2b  /* DWARF3 */
110*4d9fdb46SRobert Mustacchi #define DW_DLA_HASH_TABLE_ENTRY 0x2c
111*4d9fdb46SRobert Mustacchi #define DW_DLA_FISSION_PERCU    0x2d
112*4d9fdb46SRobert Mustacchi #define DW_DLA_CHAIN_2          0x3d
113*4d9fdb46SRobert Mustacchi /* Thru 0x36 reserved for internal future use. */
114*4d9fdb46SRobert Mustacchi 
115*4d9fdb46SRobert Mustacchi /*  Maximum number of allocation types for allocation routines.
116*4d9fdb46SRobert Mustacchi     Only used with malloc_check.c and that is basically obsolete. */
117*4d9fdb46SRobert Mustacchi #define MAX_DW_DLA		0x3a
11849d3bc91SRichard Lowe 
11949d3bc91SRichard Lowe typedef signed char Dwarf_Sbyte;
12049d3bc91SRichard Lowe typedef unsigned char Dwarf_Ubyte;
12149d3bc91SRichard Lowe typedef signed short Dwarf_Shalf;
12249d3bc91SRichard Lowe typedef Dwarf_Small *Dwarf_Byte_Ptr;
12349d3bc91SRichard Lowe 
124*4d9fdb46SRobert Mustacchi #define DWARF_HALF_SIZE 2
125*4d9fdb46SRobert Mustacchi #define DWARF_32BIT_SIZE 4
126*4d9fdb46SRobert Mustacchi #define DWARF_64BIT_SIZE 8
12749d3bc91SRichard Lowe 
12849d3bc91SRichard Lowe typedef struct Dwarf_Abbrev_List_s *Dwarf_Abbrev_List;
12949d3bc91SRichard Lowe typedef struct Dwarf_File_Entry_s *Dwarf_File_Entry;
13049d3bc91SRichard Lowe typedef struct Dwarf_CU_Context_s *Dwarf_CU_Context;
13149d3bc91SRichard Lowe typedef struct Dwarf_Hash_Table_s *Dwarf_Hash_Table;
13207dc1947SRichard Lowe typedef struct Dwarf_Hash_Table_Entry_s *Dwarf_Hash_Table_Entry;
13349d3bc91SRichard Lowe 
13449d3bc91SRichard Lowe 
13549d3bc91SRichard Lowe typedef struct Dwarf_Alloc_Hdr_s *Dwarf_Alloc_Hdr;
136