atosl 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,9 @@
1
+ #ifndef CONVERTER_H
2
+ #define CONVERTER_H
3
+
4
+ #include "dwarf2.h"
5
+
6
+ const char* dwarf_attr_name(unsigned int attr);
7
+ const char * dwarf_form_name (unsigned form);
8
+ const char * dwarf_tag_name (unsigned tag);
9
+ #endif /* CONVERTER_H */
@@ -0,0 +1,347 @@
1
+ /*
2
+ * Copyright (c) 2000-2007 Apple Computer, Inc. All rights reserved.
3
+ *
4
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5
+ *
6
+ * This file contains Original Code and/or Modifications of Original Code
7
+ * as defined in and that are subject to the Apple Public Source License
8
+ * Version 2.0 (the 'License'). You may not use this file except in
9
+ * compliance with the License. The rights granted to you under the License
10
+ * may not be used to create, or enable the creation or redistribution of,
11
+ * unlawful or unlicensed copies of an Apple operating system, or to
12
+ * circumvent, violate, or enable the circumvention or violation of, any
13
+ * terms of an Apple operating system software license agreement.
14
+ *
15
+ * Please obtain a copy of the License at
16
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
17
+ *
18
+ * The Original Code and all software distributed under the License are
19
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23
+ * Please see the License for the specific language governing rights and
24
+ * limitations under the License.
25
+ *
26
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27
+ */
28
+ /*
29
+ * Mach Operating System
30
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
31
+ * All Rights Reserved.
32
+ *
33
+ * Permission to use, copy, modify and distribute this software and its
34
+ * documentation is hereby granted, provided that both the copyright
35
+ * notice and this permission notice appear in all copies of the
36
+ * software, derivative works or modified versions, and any portions
37
+ * thereof, and that both notices appear in supporting documentation.
38
+ *
39
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
40
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
41
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
42
+ *
43
+ * Carnegie Mellon requests users of this software to return to
44
+ *
45
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
46
+ * School of Computer Science
47
+ * Carnegie Mellon University
48
+ * Pittsburgh PA 15213-3890
49
+ *
50
+ * any improvements or extensions that they make and grant Carnegie Mellon
51
+ * the rights to redistribute these changes.
52
+ */
53
+ /* File: machine.h
54
+ * Author: Avadis Tevanian, Jr.
55
+ * Date: 1986
56
+ *
57
+ * Machine independent machine abstraction.
58
+ */
59
+
60
+ #ifndef _MACH_MACHINE_H_
61
+ #define _MACH_MACHINE_H_
62
+
63
+ #ifndef __ASSEMBLER__
64
+
65
+ #define CPU_STATE_MAX 4
66
+
67
+ #define CPU_STATE_USER 0
68
+ #define CPU_STATE_SYSTEM 1
69
+ #define CPU_STATE_IDLE 2
70
+ #define CPU_STATE_NICE 3
71
+
72
+
73
+
74
+ /*
75
+ * Capability bits used in the definition of cpu_type.
76
+ */
77
+ #define CPU_ARCH_MASK 0xff000000 /* mask for architecture bits */
78
+ #define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
79
+
80
+ /*
81
+ * Machine types known by all.
82
+ */
83
+
84
+ #define CPU_TYPE_ANY ((cpu_type_t) -1)
85
+
86
+ #define CPU_TYPE_VAX ((cpu_type_t) 1)
87
+ /* skip ((cpu_type_t) 2) */
88
+ /* skip ((cpu_type_t) 3) */
89
+ /* skip ((cpu_type_t) 4) */
90
+ /* skip ((cpu_type_t) 5) */
91
+ #define CPU_TYPE_MC680x0 ((cpu_type_t) 6)
92
+ #define CPU_TYPE_X86 ((cpu_type_t) 7)
93
+ #define CPU_TYPE_I386 CPU_TYPE_X86 /* compatibility */
94
+ #define CPU_TYPE_X86_64 (CPU_TYPE_X86 | CPU_ARCH_ABI64)
95
+
96
+ /* skip CPU_TYPE_MIPS ((cpu_type_t) 8) */
97
+ /* skip ((cpu_type_t) 9) */
98
+ #define CPU_TYPE_MC98000 ((cpu_type_t) 10)
99
+ #define CPU_TYPE_HPPA ((cpu_type_t) 11)
100
+ #define CPU_TYPE_ARM ((cpu_type_t) 12)
101
+ #define CPU_TYPE_MC88000 ((cpu_type_t) 13)
102
+ #define CPU_TYPE_SPARC ((cpu_type_t) 14)
103
+ #define CPU_TYPE_I860 ((cpu_type_t) 15)
104
+ /* skip CPU_TYPE_ALPHA ((cpu_type_t) 16) */
105
+ /* skip ((cpu_type_t) 17) */
106
+ #define CPU_TYPE_POWERPC ((cpu_type_t) 18)
107
+ #define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
108
+
109
+ /*
110
+ * Machine subtypes (these are defined here, instead of in a machine
111
+ * dependent directory, so that any program can get all definitions
112
+ * regardless of where is it compiled).
113
+ */
114
+
115
+ /*
116
+ * Capability bits used in the definition of cpu_subtype.
117
+ */
118
+ #define CPU_SUBTYPE_MASK 0xff000000 /* mask for feature flags */
119
+ #define CPU_SUBTYPE_LIB64 0x80000000 /* 64 bit libraries */
120
+
121
+
122
+ /*
123
+ * Object files that are hand-crafted to run on any
124
+ * implementation of an architecture are tagged with
125
+ * CPU_SUBTYPE_MULTIPLE. This functions essentially the same as
126
+ * the "ALL" subtype of an architecture except that it allows us
127
+ * to easily find object files that may need to be modified
128
+ * whenever a new implementation of an architecture comes out.
129
+ *
130
+ * It is the responsibility of the implementor to make sure the
131
+ * software handles unsupported implementations elegantly.
132
+ */
133
+ #define CPU_SUBTYPE_MULTIPLE ((cpu_subtype_t) -1)
134
+ #define CPU_SUBTYPE_LITTLE_ENDIAN ((cpu_subtype_t) 0)
135
+ #define CPU_SUBTYPE_BIG_ENDIAN ((cpu_subtype_t) 1)
136
+
137
+ /*
138
+ * Machine threadtypes.
139
+ * This is none - not defined - for most machine types/subtypes.
140
+ */
141
+ #define CPU_THREADTYPE_NONE ((cpu_threadtype_t) 0)
142
+
143
+ /*
144
+ * VAX subtypes (these do *not* necessary conform to the actual cpu
145
+ * ID assigned by DEC available via the SID register).
146
+ */
147
+
148
+ #define CPU_SUBTYPE_VAX_ALL ((cpu_subtype_t) 0)
149
+ #define CPU_SUBTYPE_VAX780 ((cpu_subtype_t) 1)
150
+ #define CPU_SUBTYPE_VAX785 ((cpu_subtype_t) 2)
151
+ #define CPU_SUBTYPE_VAX750 ((cpu_subtype_t) 3)
152
+ #define CPU_SUBTYPE_VAX730 ((cpu_subtype_t) 4)
153
+ #define CPU_SUBTYPE_UVAXI ((cpu_subtype_t) 5)
154
+ #define CPU_SUBTYPE_UVAXII ((cpu_subtype_t) 6)
155
+ #define CPU_SUBTYPE_VAX8200 ((cpu_subtype_t) 7)
156
+ #define CPU_SUBTYPE_VAX8500 ((cpu_subtype_t) 8)
157
+ #define CPU_SUBTYPE_VAX8600 ((cpu_subtype_t) 9)
158
+ #define CPU_SUBTYPE_VAX8650 ((cpu_subtype_t) 10)
159
+ #define CPU_SUBTYPE_VAX8800 ((cpu_subtype_t) 11)
160
+ #define CPU_SUBTYPE_UVAXIII ((cpu_subtype_t) 12)
161
+
162
+ /*
163
+ * 680x0 subtypes
164
+ *
165
+ * The subtype definitions here are unusual for historical reasons.
166
+ * NeXT used to consider 68030 code as generic 68000 code. For
167
+ * backwards compatability:
168
+ *
169
+ * CPU_SUBTYPE_MC68030 symbol has been preserved for source code
170
+ * compatability.
171
+ *
172
+ * CPU_SUBTYPE_MC680x0_ALL has been defined to be the same
173
+ * subtype as CPU_SUBTYPE_MC68030 for binary comatability.
174
+ *
175
+ * CPU_SUBTYPE_MC68030_ONLY has been added to allow new object
176
+ * files to be tagged as containing 68030-specific instructions.
177
+ */
178
+
179
+ #define CPU_SUBTYPE_MC680x0_ALL ((cpu_subtype_t) 1)
180
+ #define CPU_SUBTYPE_MC68030 ((cpu_subtype_t) 1) /* compat */
181
+ #define CPU_SUBTYPE_MC68040 ((cpu_subtype_t) 2)
182
+ #define CPU_SUBTYPE_MC68030_ONLY ((cpu_subtype_t) 3)
183
+
184
+ /*
185
+ * I386 subtypes
186
+ */
187
+
188
+ #define CPU_SUBTYPE_INTEL(f, m) ((cpu_subtype_t) (f) + ((m) << 4))
189
+
190
+ #define CPU_SUBTYPE_I386_ALL CPU_SUBTYPE_INTEL(3, 0)
191
+ #define CPU_SUBTYPE_386 CPU_SUBTYPE_INTEL(3, 0)
192
+ #define CPU_SUBTYPE_486 CPU_SUBTYPE_INTEL(4, 0)
193
+ #define CPU_SUBTYPE_486SX CPU_SUBTYPE_INTEL(4, 8) // 8 << 4 = 128
194
+ #define CPU_SUBTYPE_586 CPU_SUBTYPE_INTEL(5, 0)
195
+ #define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
196
+ #define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
197
+ #define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
198
+ #define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
199
+ #define CPU_SUBTYPE_CELERON CPU_SUBTYPE_INTEL(7, 6)
200
+ #define CPU_SUBTYPE_CELERON_MOBILE CPU_SUBTYPE_INTEL(7, 7)
201
+ #define CPU_SUBTYPE_PENTIUM_3 CPU_SUBTYPE_INTEL(8, 0)
202
+ #define CPU_SUBTYPE_PENTIUM_3_M CPU_SUBTYPE_INTEL(8, 1)
203
+ #define CPU_SUBTYPE_PENTIUM_3_XEON CPU_SUBTYPE_INTEL(8, 2)
204
+ #define CPU_SUBTYPE_PENTIUM_M CPU_SUBTYPE_INTEL(9, 0)
205
+ #define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
206
+ #define CPU_SUBTYPE_PENTIUM_4_M CPU_SUBTYPE_INTEL(10, 1)
207
+ #define CPU_SUBTYPE_ITANIUM CPU_SUBTYPE_INTEL(11, 0)
208
+ #define CPU_SUBTYPE_ITANIUM_2 CPU_SUBTYPE_INTEL(11, 1)
209
+ #define CPU_SUBTYPE_XEON CPU_SUBTYPE_INTEL(12, 0)
210
+ #define CPU_SUBTYPE_XEON_MP CPU_SUBTYPE_INTEL(12, 1)
211
+
212
+ #define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
213
+ #define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
214
+
215
+ #define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
216
+ #define CPU_SUBTYPE_INTEL_MODEL_ALL 0
217
+
218
+ /*
219
+ * X86 subtypes.
220
+ */
221
+
222
+ #define CPU_SUBTYPE_X86_ALL ((cpu_subtype_t)3)
223
+ #define CPU_SUBTYPE_X86_64_ALL ((cpu_subtype_t)3)
224
+ #define CPU_SUBTYPE_X86_ARCH1 ((cpu_subtype_t)4)
225
+
226
+
227
+ #define CPU_THREADTYPE_INTEL_HTT ((cpu_threadtype_t) 1)
228
+
229
+ /*
230
+ * Mips subtypes.
231
+ */
232
+
233
+ #define CPU_SUBTYPE_MIPS_ALL ((cpu_subtype_t) 0)
234
+ #define CPU_SUBTYPE_MIPS_R2300 ((cpu_subtype_t) 1)
235
+ #define CPU_SUBTYPE_MIPS_R2600 ((cpu_subtype_t) 2)
236
+ #define CPU_SUBTYPE_MIPS_R2800 ((cpu_subtype_t) 3)
237
+ #define CPU_SUBTYPE_MIPS_R2000a ((cpu_subtype_t) 4) /* pmax */
238
+ #define CPU_SUBTYPE_MIPS_R2000 ((cpu_subtype_t) 5)
239
+ #define CPU_SUBTYPE_MIPS_R3000a ((cpu_subtype_t) 6) /* 3max */
240
+ #define CPU_SUBTYPE_MIPS_R3000 ((cpu_subtype_t) 7)
241
+
242
+ /*
243
+ * MC98000 (PowerPC) subtypes
244
+ */
245
+ #define CPU_SUBTYPE_MC98000_ALL ((cpu_subtype_t) 0)
246
+ #define CPU_SUBTYPE_MC98601 ((cpu_subtype_t) 1)
247
+
248
+ /*
249
+ * HPPA subtypes for Hewlett-Packard HP-PA family of
250
+ * risc processors. Port by NeXT to 700 series.
251
+ */
252
+
253
+ #define CPU_SUBTYPE_HPPA_ALL ((cpu_subtype_t) 0)
254
+ #define CPU_SUBTYPE_HPPA_7100 ((cpu_subtype_t) 0) /* compat */
255
+ #define CPU_SUBTYPE_HPPA_7100LC ((cpu_subtype_t) 1)
256
+
257
+ /*
258
+ * MC88000 subtypes.
259
+ */
260
+ #define CPU_SUBTYPE_MC88000_ALL ((cpu_subtype_t) 0)
261
+ #define CPU_SUBTYPE_MC88100 ((cpu_subtype_t) 1)
262
+ #define CPU_SUBTYPE_MC88110 ((cpu_subtype_t) 2)
263
+
264
+ /*
265
+ * SPARC subtypes
266
+ */
267
+ #define CPU_SUBTYPE_SPARC_ALL ((cpu_subtype_t) 0)
268
+
269
+ /*
270
+ * I860 subtypes
271
+ */
272
+ #define CPU_SUBTYPE_I860_ALL ((cpu_subtype_t) 0)
273
+ #define CPU_SUBTYPE_I860_860 ((cpu_subtype_t) 1)
274
+
275
+ /*
276
+ * PowerPC subtypes
277
+ */
278
+ #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)
279
+ #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)
280
+ #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)
281
+ #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)
282
+ #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)
283
+ #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)
284
+ #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)
285
+ #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)
286
+ #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)
287
+ #define CPU_SUBTYPE_POWERPC_750 ((cpu_subtype_t) 9)
288
+ #define CPU_SUBTYPE_POWERPC_7400 ((cpu_subtype_t) 10)
289
+ #define CPU_SUBTYPE_POWERPC_7450 ((cpu_subtype_t) 11)
290
+ #define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
291
+
292
+ /*
293
+ * ARM subtypes
294
+ */
295
+ #define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
296
+ #define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
297
+ #define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
298
+ #define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
299
+ #define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
300
+ #define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9)
301
+ #define CPU_SUBTYPE_ARM_V7F ((cpu_subtype_t) 10) /* Cortex A9 */
302
+ #define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t) 11)
303
+ #define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t) 12) /* Kirkwood40 */
304
+ #define CPU_SUBTYPE_ARM_V8 ((cpu_subtype_t) 13)
305
+
306
+ #endif /* !__ASSEMBLER__ */
307
+
308
+ /*
309
+ * CPU families (sysctl hw.cpufamily)
310
+ *
311
+ * These are meant to identify the CPU's marketing name - an
312
+ * application can map these to (possibly) localized strings.
313
+ * NB: the encodings of the CPU families are intentionally arbitrary.
314
+ * There is no ordering, and you should never try to deduce whether
315
+ * or not some feature is available based on the family.
316
+ * Use feature flags (eg, hw.optional.altivec) to test for optional
317
+ * functionality.
318
+ */
319
+ #define CPUFAMILY_UNKNOWN 0
320
+ #define CPUFAMILY_POWERPC_G3 0xcee41549
321
+ #define CPUFAMILY_POWERPC_G4 0x77c184ae
322
+ #define CPUFAMILY_POWERPC_G5 0xed76d8aa
323
+ #define CPUFAMILY_INTEL_6_13 0xaa33392b
324
+ #define CPUFAMILY_INTEL_YONAH 0x73d67300
325
+ #define CPUFAMILY_INTEL_MEROM 0x426f69ef
326
+ #define CPUFAMILY_INTEL_PENRYN 0x78ea4fbc
327
+ #define CPUFAMILY_INTEL_NEHALEM 0x6b5a4cd2
328
+ #define CPUFAMILY_INTEL_WESTMERE 0x573b5eec
329
+ #define CPUFAMILY_INTEL_SANDYBRIDGE 0x5490b78c
330
+ #define CPUFAMILY_INTEL_IVYBRIDGE 0x1f65e835
331
+ #define CPUFAMILY_ARM_9 0xe73283ae
332
+ #define CPUFAMILY_ARM_11 0x8ff620d8
333
+ #define CPUFAMILY_ARM_XSCALE 0x53b005f5
334
+ #define CPUFAMILY_ARM_13 0x0cc90e64
335
+ #define CPUFAMILY_ARM_14 0x96077ef1
336
+
337
+ /* The following synonyms are deprecated: */
338
+ #define CPUFAMILY_INTEL_6_14 CPUFAMILY_INTEL_YONAH
339
+ #define CPUFAMILY_INTEL_6_15 CPUFAMILY_INTEL_MEROM
340
+ #define CPUFAMILY_INTEL_6_23 CPUFAMILY_INTEL_PENRYN
341
+ #define CPUFAMILY_INTEL_6_26 CPUFAMILY_INTEL_NEHALEM
342
+
343
+ #define CPUFAMILY_INTEL_CORE CPUFAMILY_INTEL_YONAH
344
+ #define CPUFAMILY_INTEL_CORE2 CPUFAMILY_INTEL_MEROM
345
+
346
+
347
+ #endif /* _MACH_MACHINE_H_ */
data/ext/atosl/debug.h ADDED
@@ -0,0 +1,11 @@
1
+ #ifndef DEBUG_H
2
+ #define DEBUG_H
3
+
4
+ #ifdef DEBUG
5
+ #define debug(format,...) printf("File: "__FILE__", Line: %05d: "format"\n", __LINE__, ##__VA_ARGS__)
6
+ #else
7
+ #define debug(format,...)
8
+ #endif
9
+
10
+ #endif /* DEBUG_H */
11
+
@@ -0,0 +1,844 @@
1
+ /* Declarations and definitions of codes relating to the DWARF2 and
2
+ DWARF3 symbolic debugging information formats.
3
+ Copyright (C) 1992, 1993, 1995, 1996, 1997, 1999, 2000, 2001, 2002,
4
+ 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
5
+
6
+ Written by Gary Funck (gary@intrepid.com) The Ada Joint Program
7
+ Office (AJPO), Florida State University and Silicon Graphics Inc.
8
+ provided support for this effort -- June 21, 1995.
9
+
10
+ Derived from the DWARF 1 implementation written by Ron Guilmette
11
+ (rfg@netcom.com), November 1990.
12
+
13
+ This file is part of GCC.
14
+
15
+ GCC is free software; you can redistribute it and/or modify it under
16
+ the terms of the GNU General Public License as published by the Free
17
+ Software Foundation; either version 2, or (at your option) any later
18
+ version.
19
+
20
+ GCC is distributed in the hope that it will be useful, but WITHOUT
21
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
22
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
23
+ License for more details.
24
+
25
+ You should have received a copy of the GNU General Public License
26
+ along with GCC; see the file COPYING. If not, write to the Free
27
+ Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
28
+ 02110-1301, USA. */
29
+
30
+ /* This file is derived from the DWARF specification (a public document)
31
+ Revision 2.0.0 (July 27, 1993) developed by the UNIX International
32
+ Programming Languages Special Interest Group (UI/PLSIG) and distributed
33
+ by UNIX International. Copies of this specification are available from
34
+ UNIX International, 20 Waterview Boulevard, Parsippany, NJ, 07054.
35
+
36
+ This file also now contains definitions from the DWARF 3 specification. */
37
+
38
+ /* This file is shared between GCC and GDB, and should not contain
39
+ prototypes. */
40
+
41
+ #ifndef _ELF_DWARF2_H
42
+ #define _ELF_DWARF2_H
43
+
44
+ /* Structure found in the .debug_line section. */
45
+ typedef struct
46
+ {
47
+ unsigned char li_length [4];
48
+ unsigned char li_version [2];
49
+ unsigned char li_prologue_length [4];
50
+ unsigned char li_min_insn_length [1];
51
+ unsigned char li_default_is_stmt [1];
52
+ unsigned char li_line_base [1];
53
+ unsigned char li_line_range [1];
54
+ unsigned char li_opcode_base [1];
55
+ }
56
+ DWARF2_External_LineInfo;
57
+
58
+ typedef struct
59
+ {
60
+ unsigned long li_length;
61
+ unsigned short li_version;
62
+ unsigned int li_prologue_length;
63
+ unsigned char li_min_insn_length;
64
+ unsigned char li_default_is_stmt;
65
+ int li_line_base;
66
+ unsigned char li_line_range;
67
+ unsigned char li_opcode_base;
68
+ }
69
+ DWARF2_Internal_LineInfo;
70
+
71
+ /* Structure found in .debug_pubnames section. */
72
+ typedef struct
73
+ {
74
+ unsigned char pn_length [4];
75
+ unsigned char pn_version [2];
76
+ unsigned char pn_offset [4];
77
+ unsigned char pn_size [4];
78
+ }
79
+ DWARF2_External_PubNames;
80
+
81
+ typedef struct
82
+ {
83
+ unsigned long pn_length;
84
+ unsigned short pn_version;
85
+ unsigned long pn_offset;
86
+ unsigned long pn_size;
87
+ }
88
+ DWARF2_Internal_PubNames;
89
+
90
+ /* Structure found in .debug_info section. */
91
+ typedef struct
92
+ {
93
+ unsigned char cu_length [4];
94
+ unsigned char cu_version [2];
95
+ unsigned char cu_abbrev_offset [4];
96
+ unsigned char cu_pointer_size [1];
97
+ }
98
+ DWARF2_External_CompUnit;
99
+
100
+ typedef struct
101
+ {
102
+ unsigned long cu_length;
103
+ unsigned short cu_version;
104
+ unsigned long cu_abbrev_offset;
105
+ unsigned char cu_pointer_size;
106
+ }
107
+ DWARF2_Internal_CompUnit;
108
+
109
+ typedef struct
110
+ {
111
+ unsigned char ar_length [4];
112
+ unsigned char ar_version [2];
113
+ unsigned char ar_info_offset [4];
114
+ unsigned char ar_pointer_size [1];
115
+ unsigned char ar_segment_size [1];
116
+ }
117
+ DWARF2_External_ARange;
118
+
119
+ typedef struct
120
+ {
121
+ unsigned long ar_length;
122
+ unsigned short ar_version;
123
+ unsigned long ar_info_offset;
124
+ unsigned char ar_pointer_size;
125
+ unsigned char ar_segment_size;
126
+ }
127
+ DWARF2_Internal_ARange;
128
+
129
+
130
+ /* Tag names and codes. */
131
+ enum dwarf_tag
132
+ {
133
+ DW_TAG_padding = 0x00,
134
+ DW_TAG_array_type = 0x01,
135
+ DW_TAG_class_type = 0x02,
136
+ DW_TAG_entry_point = 0x03,
137
+ DW_TAG_enumeration_type = 0x04,
138
+ DW_TAG_formal_parameter = 0x05,
139
+ DW_TAG_imported_declaration = 0x08,
140
+ DW_TAG_label = 0x0a,
141
+ DW_TAG_lexical_block = 0x0b,
142
+ DW_TAG_member = 0x0d,
143
+ DW_TAG_pointer_type = 0x0f,
144
+ DW_TAG_reference_type = 0x10,
145
+ DW_TAG_compile_unit = 0x11,
146
+ DW_TAG_string_type = 0x12,
147
+ DW_TAG_structure_type = 0x13,
148
+ DW_TAG_subroutine_type = 0x15,
149
+ DW_TAG_typedef = 0x16,
150
+ DW_TAG_union_type = 0x17,
151
+ DW_TAG_unspecified_parameters = 0x18,
152
+ DW_TAG_variant = 0x19,
153
+ DW_TAG_common_block = 0x1a,
154
+ DW_TAG_common_inclusion = 0x1b,
155
+ DW_TAG_inheritance = 0x1c,
156
+ DW_TAG_inlined_subroutine = 0x1d,
157
+ DW_TAG_module = 0x1e,
158
+ DW_TAG_ptr_to_member_type = 0x1f,
159
+ DW_TAG_set_type = 0x20,
160
+ DW_TAG_subrange_type = 0x21,
161
+ DW_TAG_with_stmt = 0x22,
162
+ DW_TAG_access_declaration = 0x23,
163
+ DW_TAG_base_type = 0x24,
164
+ DW_TAG_catch_block = 0x25,
165
+ DW_TAG_const_type = 0x26,
166
+ DW_TAG_constant = 0x27,
167
+ DW_TAG_enumerator = 0x28,
168
+ DW_TAG_file_type = 0x29,
169
+ DW_TAG_friend = 0x2a,
170
+ DW_TAG_namelist = 0x2b,
171
+ DW_TAG_namelist_item = 0x2c,
172
+ DW_TAG_packed_type = 0x2d,
173
+ DW_TAG_subprogram = 0x2e,
174
+ DW_TAG_template_type_param = 0x2f,
175
+ DW_TAG_template_value_param = 0x30,
176
+ DW_TAG_thrown_type = 0x31,
177
+ DW_TAG_try_block = 0x32,
178
+ DW_TAG_variant_part = 0x33,
179
+ DW_TAG_variable = 0x34,
180
+ DW_TAG_volatile_type = 0x35,
181
+ /* DWARF 3. */
182
+ DW_TAG_dwarf_procedure = 0x36,
183
+ DW_TAG_restrict_type = 0x37,
184
+ DW_TAG_interface_type = 0x38,
185
+ DW_TAG_namespace = 0x39,
186
+ DW_TAG_imported_module = 0x3a,
187
+ DW_TAG_unspecified_type = 0x3b,
188
+ DW_TAG_partial_unit = 0x3c,
189
+ DW_TAG_imported_unit = 0x3d,
190
+ DW_TAG_condition = 0x3f,
191
+ DW_TAG_shared_type = 0x40,
192
+ /* SGI/MIPS Extensions. */
193
+ DW_TAG_MIPS_loop = 0x4081,
194
+ /* HP extensions. See: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz . */
195
+ DW_TAG_HP_array_descriptor = 0x4090,
196
+ /* GNU extensions. */
197
+ DW_TAG_format_label = 0x4101, /* For FORTRAN 77 and Fortran 90. */
198
+ DW_TAG_function_template = 0x4102, /* For C++. */
199
+ DW_TAG_class_template = 0x4103, /* For C++. */
200
+ DW_TAG_GNU_BINCL = 0x4104,
201
+ DW_TAG_GNU_EINCL = 0x4105,
202
+ /* Extensions for UPC. See: http://upc.gwu.edu/~upc. */
203
+ DW_TAG_upc_shared_type = 0x8765,
204
+ DW_TAG_upc_strict_type = 0x8766,
205
+ DW_TAG_upc_relaxed_type = 0x8767,
206
+ /* PGI (STMicroelectronics) extensions. No documentation available. */
207
+ DW_TAG_PGI_kanji_type = 0xA000,
208
+ DW_TAG_PGI_interface_block = 0xA020
209
+ };
210
+
211
+ #define DW_TAG_lo_user 0x4080
212
+ #define DW_TAG_hi_user 0xffff
213
+
214
+ /* Flag that tells whether entry has a child or not. */
215
+ #define DW_children_no 0
216
+ #define DW_children_yes 1
217
+
218
+ /* Form names and codes. */
219
+ enum dwarf_form
220
+ {
221
+ DW_FORM_addr = 0x01,
222
+ DW_FORM_block2 = 0x03,
223
+ DW_FORM_block4 = 0x04,
224
+ DW_FORM_data2 = 0x05,
225
+ DW_FORM_data4 = 0x06,
226
+ DW_FORM_data8 = 0x07,
227
+ DW_FORM_string = 0x08,
228
+ DW_FORM_block = 0x09,
229
+ DW_FORM_block1 = 0x0a,
230
+ DW_FORM_data1 = 0x0b,
231
+ DW_FORM_flag = 0x0c,
232
+ DW_FORM_sdata = 0x0d,
233
+ DW_FORM_strp = 0x0e,
234
+ DW_FORM_udata = 0x0f,
235
+ DW_FORM_ref_addr = 0x10,
236
+ DW_FORM_ref1 = 0x11,
237
+ DW_FORM_ref2 = 0x12,
238
+ DW_FORM_ref4 = 0x13,
239
+ DW_FORM_ref8 = 0x14,
240
+ DW_FORM_ref_udata = 0x15,
241
+ DW_FORM_indirect = 0x16,
242
+ DW_FORM_APPLE_db_str = 0x50
243
+ };
244
+
245
+ /* Attribute names and codes. */
246
+ enum dwarf_attribute
247
+ {
248
+ DW_AT_sibling = 0x01,
249
+ DW_AT_location = 0x02,
250
+ DW_AT_name = 0x03,
251
+ DW_AT_ordering = 0x09,
252
+ DW_AT_subscr_data = 0x0a,
253
+ DW_AT_byte_size = 0x0b,
254
+ DW_AT_bit_offset = 0x0c,
255
+ DW_AT_bit_size = 0x0d,
256
+ DW_AT_element_list = 0x0f,
257
+ DW_AT_stmt_list = 0x10,
258
+ DW_AT_low_pc = 0x11,
259
+ DW_AT_high_pc = 0x12,
260
+ DW_AT_language = 0x13,
261
+ DW_AT_member = 0x14,
262
+ DW_AT_discr = 0x15,
263
+ DW_AT_discr_value = 0x16,
264
+ DW_AT_visibility = 0x17,
265
+ DW_AT_import = 0x18,
266
+ DW_AT_string_length = 0x19,
267
+ DW_AT_common_reference = 0x1a,
268
+ DW_AT_comp_dir = 0x1b,
269
+ DW_AT_const_value = 0x1c,
270
+ DW_AT_containing_type = 0x1d,
271
+ DW_AT_default_value = 0x1e,
272
+ DW_AT_inline = 0x20,
273
+ DW_AT_is_optional = 0x21,
274
+ DW_AT_lower_bound = 0x22,
275
+ DW_AT_producer = 0x25,
276
+ DW_AT_prototyped = 0x27,
277
+ DW_AT_return_addr = 0x2a,
278
+ DW_AT_start_scope = 0x2c,
279
+ DW_AT_stride_size = 0x2e,
280
+ DW_AT_upper_bound = 0x2f,
281
+ DW_AT_abstract_origin = 0x31,
282
+ DW_AT_accessibility = 0x32,
283
+ DW_AT_address_class = 0x33,
284
+ DW_AT_artificial = 0x34,
285
+ DW_AT_base_types = 0x35,
286
+ DW_AT_calling_convention = 0x36,
287
+ DW_AT_count = 0x37,
288
+ DW_AT_data_member_location = 0x38,
289
+ DW_AT_decl_column = 0x39,
290
+ DW_AT_decl_file = 0x3a,
291
+ DW_AT_decl_line = 0x3b,
292
+ DW_AT_declaration = 0x3c,
293
+ DW_AT_discr_list = 0x3d,
294
+ DW_AT_encoding = 0x3e,
295
+ DW_AT_external = 0x3f,
296
+ DW_AT_frame_base = 0x40,
297
+ DW_AT_friend = 0x41,
298
+ DW_AT_identifier_case = 0x42,
299
+ DW_AT_macro_info = 0x43,
300
+ DW_AT_namelist_items = 0x44,
301
+ DW_AT_priority = 0x45,
302
+ DW_AT_segment = 0x46,
303
+ DW_AT_specification = 0x47,
304
+ DW_AT_static_link = 0x48,
305
+ DW_AT_type = 0x49,
306
+ DW_AT_use_location = 0x4a,
307
+ DW_AT_variable_parameter = 0x4b,
308
+ DW_AT_virtuality = 0x4c,
309
+ DW_AT_vtable_elem_location = 0x4d,
310
+ /* DWARF 3 values. */
311
+ DW_AT_allocated = 0x4e,
312
+ DW_AT_associated = 0x4f,
313
+ DW_AT_data_location = 0x50,
314
+ DW_AT_stride = 0x51,
315
+ DW_AT_entry_pc = 0x52,
316
+ DW_AT_use_UTF8 = 0x53,
317
+ DW_AT_extension = 0x54,
318
+ DW_AT_ranges = 0x55,
319
+ DW_AT_trampoline = 0x56,
320
+ DW_AT_call_column = 0x57,
321
+ DW_AT_call_file = 0x58,
322
+ DW_AT_call_line = 0x59,
323
+ DW_AT_description = 0x5a,
324
+ DW_AT_binary_scale = 0x5b,
325
+ DW_AT_decimal_scale = 0x5c,
326
+ DW_AT_small = 0x5d,
327
+ DW_AT_decimal_sign = 0x5e,
328
+ DW_AT_digit_count = 0x5f,
329
+ DW_AT_picture_string = 0x60,
330
+ DW_AT_mutable = 0x61,
331
+ DW_AT_threads_scaled = 0x62,
332
+ DW_AT_explicit = 0x63,
333
+ DW_AT_object_pointer = 0x64,
334
+ DW_AT_endianity = 0x65,
335
+ DW_AT_elemental = 0x66,
336
+ DW_AT_pure = 0x67,
337
+ DW_AT_recursive = 0x68,
338
+ /* SGI/MIPS extensions. */
339
+ DW_AT_MIPS_fde = 0x2001,
340
+ DW_AT_MIPS_loop_begin = 0x2002,
341
+ DW_AT_MIPS_tail_loop_begin = 0x2003,
342
+ DW_AT_MIPS_epilog_begin = 0x2004,
343
+ DW_AT_MIPS_loop_unroll_factor = 0x2005,
344
+ DW_AT_MIPS_software_pipeline_depth = 0x2006,
345
+ DW_AT_MIPS_linkage_name = 0x2007,
346
+ DW_AT_MIPS_stride = 0x2008,
347
+ DW_AT_MIPS_abstract_name = 0x2009,
348
+ DW_AT_MIPS_clone_origin = 0x200a,
349
+ DW_AT_MIPS_has_inlines = 0x200b,
350
+ /* HP extensions. */
351
+ DW_AT_HP_block_index = 0x2000,
352
+ DW_AT_HP_unmodifiable = 0x2001, /* Same as DW_AT_MIPS_fde. */
353
+ DW_AT_HP_actuals_stmt_list = 0x2010,
354
+ DW_AT_HP_proc_per_section = 0x2011,
355
+ DW_AT_HP_raw_data_ptr = 0x2012,
356
+ DW_AT_HP_pass_by_reference = 0x2013,
357
+ DW_AT_HP_opt_level = 0x2014,
358
+ DW_AT_HP_prof_version_id = 0x2015,
359
+ DW_AT_HP_opt_flags = 0x2016,
360
+ DW_AT_HP_cold_region_low_pc = 0x2017,
361
+ DW_AT_HP_cold_region_high_pc = 0x2018,
362
+ DW_AT_HP_all_variables_modifiable = 0x2019,
363
+ DW_AT_HP_linkage_name = 0x201a,
364
+ DW_AT_HP_prof_flags = 0x201b, /* In comp unit of procs_info for -g. */
365
+ /* GNU extensions. */
366
+ DW_AT_sf_names = 0x2101,
367
+ DW_AT_src_info = 0x2102,
368
+ DW_AT_mac_info = 0x2103,
369
+ DW_AT_src_coords = 0x2104,
370
+ DW_AT_body_begin = 0x2105,
371
+ DW_AT_body_end = 0x2106,
372
+ DW_AT_GNU_vector = 0x2107,
373
+ /* VMS extensions. */
374
+ DW_AT_VMS_rtnbeg_pd_address = 0x2201,
375
+ /* Apple repository extensions. */
376
+ DW_AT_APPLE_repository_file = 0x2501,
377
+ DW_AT_APPLE_repository_type = 0x2502,
378
+ DW_AT_APPLE_repository_name = 0x2503,
379
+ DW_AT_APPLE_repository_specification = 0x2504,
380
+ DW_AT_APPLE_repository_import = 0x2505,
381
+ DW_AT_APPLE_repository_abstract_origin = 0x2506,
382
+ /* UPC extension. */
383
+ DW_AT_upc_threads_scaled = 0x3210,
384
+ /* PGI (STMicroelectronics) extensions. */
385
+ DW_AT_PGI_lbase = 0x3a00,
386
+ DW_AT_PGI_soffset = 0x3a01,
387
+ DW_AT_PGI_lstride = 0x3a02
388
+ };
389
+
390
+ #define DW_AT_lo_user 0x2000 /* Implementation-defined range start. */
391
+ #define DW_AT_hi_user 0x3ff0 /* Implementation-defined range end. */
392
+
393
+ /* Location atom names and codes. */
394
+ enum dwarf_location_atom
395
+ {
396
+ DW_OP_addr = 0x03,
397
+ DW_OP_deref = 0x06,
398
+ DW_OP_const1u = 0x08,
399
+ DW_OP_const1s = 0x09,
400
+ DW_OP_const2u = 0x0a,
401
+ DW_OP_const2s = 0x0b,
402
+ DW_OP_const4u = 0x0c,
403
+ DW_OP_const4s = 0x0d,
404
+ DW_OP_const8u = 0x0e,
405
+ DW_OP_const8s = 0x0f,
406
+ DW_OP_constu = 0x10,
407
+ DW_OP_consts = 0x11,
408
+ DW_OP_dup = 0x12,
409
+ DW_OP_drop = 0x13,
410
+ DW_OP_over = 0x14,
411
+ DW_OP_pick = 0x15,
412
+ DW_OP_swap = 0x16,
413
+ DW_OP_rot = 0x17,
414
+ DW_OP_xderef = 0x18,
415
+ DW_OP_abs = 0x19,
416
+ DW_OP_and = 0x1a,
417
+ DW_OP_div = 0x1b,
418
+ DW_OP_minus = 0x1c,
419
+ DW_OP_mod = 0x1d,
420
+ DW_OP_mul = 0x1e,
421
+ DW_OP_neg = 0x1f,
422
+ DW_OP_not = 0x20,
423
+ DW_OP_or = 0x21,
424
+ DW_OP_plus = 0x22,
425
+ DW_OP_plus_uconst = 0x23,
426
+ DW_OP_shl = 0x24,
427
+ DW_OP_shr = 0x25,
428
+ DW_OP_shra = 0x26,
429
+ DW_OP_xor = 0x27,
430
+ DW_OP_bra = 0x28,
431
+ DW_OP_eq = 0x29,
432
+ DW_OP_ge = 0x2a,
433
+ DW_OP_gt = 0x2b,
434
+ DW_OP_le = 0x2c,
435
+ DW_OP_lt = 0x2d,
436
+ DW_OP_ne = 0x2e,
437
+ DW_OP_skip = 0x2f,
438
+ DW_OP_lit0 = 0x30,
439
+ DW_OP_lit1 = 0x31,
440
+ DW_OP_lit2 = 0x32,
441
+ DW_OP_lit3 = 0x33,
442
+ DW_OP_lit4 = 0x34,
443
+ DW_OP_lit5 = 0x35,
444
+ DW_OP_lit6 = 0x36,
445
+ DW_OP_lit7 = 0x37,
446
+ DW_OP_lit8 = 0x38,
447
+ DW_OP_lit9 = 0x39,
448
+ DW_OP_lit10 = 0x3a,
449
+ DW_OP_lit11 = 0x3b,
450
+ DW_OP_lit12 = 0x3c,
451
+ DW_OP_lit13 = 0x3d,
452
+ DW_OP_lit14 = 0x3e,
453
+ DW_OP_lit15 = 0x3f,
454
+ DW_OP_lit16 = 0x40,
455
+ DW_OP_lit17 = 0x41,
456
+ DW_OP_lit18 = 0x42,
457
+ DW_OP_lit19 = 0x43,
458
+ DW_OP_lit20 = 0x44,
459
+ DW_OP_lit21 = 0x45,
460
+ DW_OP_lit22 = 0x46,
461
+ DW_OP_lit23 = 0x47,
462
+ DW_OP_lit24 = 0x48,
463
+ DW_OP_lit25 = 0x49,
464
+ DW_OP_lit26 = 0x4a,
465
+ DW_OP_lit27 = 0x4b,
466
+ DW_OP_lit28 = 0x4c,
467
+ DW_OP_lit29 = 0x4d,
468
+ DW_OP_lit30 = 0x4e,
469
+ DW_OP_lit31 = 0x4f,
470
+ DW_OP_reg0 = 0x50,
471
+ DW_OP_reg1 = 0x51,
472
+ DW_OP_reg2 = 0x52,
473
+ DW_OP_reg3 = 0x53,
474
+ DW_OP_reg4 = 0x54,
475
+ DW_OP_reg5 = 0x55,
476
+ DW_OP_reg6 = 0x56,
477
+ DW_OP_reg7 = 0x57,
478
+ DW_OP_reg8 = 0x58,
479
+ DW_OP_reg9 = 0x59,
480
+ DW_OP_reg10 = 0x5a,
481
+ DW_OP_reg11 = 0x5b,
482
+ DW_OP_reg12 = 0x5c,
483
+ DW_OP_reg13 = 0x5d,
484
+ DW_OP_reg14 = 0x5e,
485
+ DW_OP_reg15 = 0x5f,
486
+ DW_OP_reg16 = 0x60,
487
+ DW_OP_reg17 = 0x61,
488
+ DW_OP_reg18 = 0x62,
489
+ DW_OP_reg19 = 0x63,
490
+ DW_OP_reg20 = 0x64,
491
+ DW_OP_reg21 = 0x65,
492
+ DW_OP_reg22 = 0x66,
493
+ DW_OP_reg23 = 0x67,
494
+ DW_OP_reg24 = 0x68,
495
+ DW_OP_reg25 = 0x69,
496
+ DW_OP_reg26 = 0x6a,
497
+ DW_OP_reg27 = 0x6b,
498
+ DW_OP_reg28 = 0x6c,
499
+ DW_OP_reg29 = 0x6d,
500
+ DW_OP_reg30 = 0x6e,
501
+ DW_OP_reg31 = 0x6f,
502
+ DW_OP_breg0 = 0x70,
503
+ DW_OP_breg1 = 0x71,
504
+ DW_OP_breg2 = 0x72,
505
+ DW_OP_breg3 = 0x73,
506
+ DW_OP_breg4 = 0x74,
507
+ DW_OP_breg5 = 0x75,
508
+ DW_OP_breg6 = 0x76,
509
+ DW_OP_breg7 = 0x77,
510
+ DW_OP_breg8 = 0x78,
511
+ DW_OP_breg9 = 0x79,
512
+ DW_OP_breg10 = 0x7a,
513
+ DW_OP_breg11 = 0x7b,
514
+ DW_OP_breg12 = 0x7c,
515
+ DW_OP_breg13 = 0x7d,
516
+ DW_OP_breg14 = 0x7e,
517
+ DW_OP_breg15 = 0x7f,
518
+ DW_OP_breg16 = 0x80,
519
+ DW_OP_breg17 = 0x81,
520
+ DW_OP_breg18 = 0x82,
521
+ DW_OP_breg19 = 0x83,
522
+ DW_OP_breg20 = 0x84,
523
+ DW_OP_breg21 = 0x85,
524
+ DW_OP_breg22 = 0x86,
525
+ DW_OP_breg23 = 0x87,
526
+ DW_OP_breg24 = 0x88,
527
+ DW_OP_breg25 = 0x89,
528
+ DW_OP_breg26 = 0x8a,
529
+ DW_OP_breg27 = 0x8b,
530
+ DW_OP_breg28 = 0x8c,
531
+ DW_OP_breg29 = 0x8d,
532
+ DW_OP_breg30 = 0x8e,
533
+ DW_OP_breg31 = 0x8f,
534
+ DW_OP_regx = 0x90,
535
+ DW_OP_fbreg = 0x91,
536
+ DW_OP_bregx = 0x92,
537
+ DW_OP_piece = 0x93,
538
+ DW_OP_deref_size = 0x94,
539
+ DW_OP_xderef_size = 0x95,
540
+ DW_OP_nop = 0x96,
541
+ /* DWARF 3 extensions. */
542
+ DW_OP_push_object_address = 0x97,
543
+ DW_OP_call2 = 0x98,
544
+ DW_OP_call4 = 0x99,
545
+ DW_OP_call_ref = 0x9a,
546
+ DW_OP_form_tls_address = 0x9b,
547
+ DW_OP_call_frame_cfa = 0x9c,
548
+ DW_OP_bit_piece = 0x9d,
549
+ /* GNU extensions. */
550
+ DW_OP_GNU_push_tls_address = 0xe0,
551
+ /* HP extensions. */
552
+ DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */
553
+ DW_OP_HP_is_value = 0xe1,
554
+ DW_OP_HP_fltconst4 = 0xe2,
555
+ DW_OP_HP_fltconst8 = 0xe3,
556
+ DW_OP_HP_mod_range = 0xe4,
557
+ DW_OP_HP_unmod_range = 0xe5,
558
+ DW_OP_HP_tls = 0xe6
559
+ };
560
+
561
+ #define DW_OP_lo_user 0xe0 /* Implementation-defined range start. */
562
+ #define DW_OP_hi_user 0xff /* Implementation-defined range end. */
563
+
564
+ /* Type encodings. */
565
+ enum dwarf_type
566
+ {
567
+ DW_ATE_void = 0x0,
568
+ DW_ATE_address = 0x1,
569
+ DW_ATE_boolean = 0x2,
570
+ DW_ATE_complex_float = 0x3,
571
+ DW_ATE_float = 0x4,
572
+ DW_ATE_signed = 0x5,
573
+ DW_ATE_signed_char = 0x6,
574
+ DW_ATE_unsigned = 0x7,
575
+ DW_ATE_unsigned_char = 0x8,
576
+ /* DWARF 3. */
577
+ DW_ATE_imaginary_float = 0x9,
578
+ DW_ATE_packed_decimal = 0xa,
579
+ DW_ATE_numeric_string = 0xb,
580
+ DW_ATE_edited = 0xc,
581
+ DW_ATE_signed_fixed = 0xd,
582
+ DW_ATE_unsigned_fixed = 0xe,
583
+ DW_ATE_decimal_float = 0xf,
584
+ /* HP extensions. */
585
+ DW_ATE_HP_float80 = 0x80, /* Floating-point (80 bit). */
586
+ DW_ATE_HP_complex_float80 = 0x81, /* Complex floating-point (80 bit). */
587
+ DW_ATE_HP_float128 = 0x82, /* Floating-point (128 bit). */
588
+ DW_ATE_HP_complex_float128 = 0x83, /* Complex floating-point (128 bit). */
589
+ DW_ATE_HP_floathpintel = 0x84, /* Floating-point (82 bit IA64). */
590
+ DW_ATE_HP_imaginary_float80 = 0x85,
591
+ DW_ATE_HP_imaginary_float128 = 0x86
592
+ };
593
+
594
+ #define DW_ATE_lo_user 0x80
595
+ #define DW_ATE_hi_user 0xff
596
+
597
+ /* Decimal sign encodings. */
598
+ enum dwarf_decimal_sign_encoding
599
+ {
600
+ /* DWARF 3. */
601
+ DW_DS_unsigned = 0x01,
602
+ DW_DS_leading_overpunch = 0x02,
603
+ DW_DS_trailing_overpunch = 0x03,
604
+ DW_DS_leading_separate = 0x04,
605
+ DW_DS_trailing_separate = 0x05
606
+ };
607
+
608
+ /* Endianity encodings. */
609
+ enum dwarf_endianity_encoding
610
+ {
611
+ /* DWARF 3. */
612
+ DW_END_default = 0x00,
613
+ DW_END_big = 0x01,
614
+ DW_END_little = 0x02
615
+ };
616
+
617
+ #define DW_END_lo_user 0x40
618
+ #define DW_END_hi_user 0xff
619
+
620
+ /* Array ordering names and codes. */
621
+ enum dwarf_array_dim_ordering
622
+ {
623
+ DW_ORD_row_major = 0,
624
+ DW_ORD_col_major = 1
625
+ };
626
+
627
+ /* Access attribute. */
628
+ enum dwarf_access_attribute
629
+ {
630
+ DW_ACCESS_public = 1,
631
+ DW_ACCESS_protected = 2,
632
+ DW_ACCESS_private = 3
633
+ };
634
+
635
+ /* Visibility. */
636
+ enum dwarf_visibility_attribute
637
+ {
638
+ DW_VIS_local = 1,
639
+ DW_VIS_exported = 2,
640
+ DW_VIS_qualified = 3
641
+ };
642
+
643
+ /* Virtuality. */
644
+ enum dwarf_virtuality_attribute
645
+ {
646
+ DW_VIRTUALITY_none = 0,
647
+ DW_VIRTUALITY_virtual = 1,
648
+ DW_VIRTUALITY_pure_virtual = 2
649
+ };
650
+
651
+ /* Case sensitivity. */
652
+ enum dwarf_id_case
653
+ {
654
+ DW_ID_case_sensitive = 0,
655
+ DW_ID_up_case = 1,
656
+ DW_ID_down_case = 2,
657
+ DW_ID_case_insensitive = 3
658
+ };
659
+
660
+ /* Calling convention. */
661
+ enum dwarf_calling_convention
662
+ {
663
+ DW_CC_normal = 0x1,
664
+ DW_CC_program = 0x2,
665
+ DW_CC_nocall = 0x3,
666
+ DW_CC_GNU_renesas_sh = 0x40
667
+ };
668
+
669
+ #define DW_CC_lo_user 0x40
670
+ #define DW_CC_hi_user 0xff
671
+
672
+ /* Inline attribute. */
673
+ enum dwarf_inline_attribute
674
+ {
675
+ DW_INL_not_inlined = 0,
676
+ DW_INL_inlined = 1,
677
+ DW_INL_declared_not_inlined = 2,
678
+ DW_INL_declared_inlined = 3
679
+ };
680
+
681
+ /* Discriminant lists. */
682
+ enum dwarf_discrim_list
683
+ {
684
+ DW_DSC_label = 0,
685
+ DW_DSC_range = 1
686
+ };
687
+
688
+ /* Line number opcodes. */
689
+ enum dwarf_line_number_ops
690
+ {
691
+ DW_LNS_extended_op = 0,
692
+ DW_LNS_copy = 1,
693
+ DW_LNS_advance_pc = 2,
694
+ DW_LNS_advance_line = 3,
695
+ DW_LNS_set_file = 4,
696
+ DW_LNS_set_column = 5,
697
+ DW_LNS_negate_stmt = 6,
698
+ DW_LNS_set_basic_block = 7,
699
+ DW_LNS_const_add_pc = 8,
700
+ DW_LNS_fixed_advance_pc = 9,
701
+ /* DWARF 3. */
702
+ DW_LNS_set_prologue_end = 10,
703
+ DW_LNS_set_epilogue_begin = 11,
704
+ DW_LNS_set_isa = 12
705
+ };
706
+
707
+ /* Line number extended opcodes. */
708
+ enum dwarf_line_number_x_ops
709
+ {
710
+ DW_LNE_end_sequence = 1,
711
+ DW_LNE_set_address = 2,
712
+ DW_LNE_define_file = 3,
713
+ /* HP extensions. */
714
+ DW_LNE_HP_negate_is_UV_update = 0x11,
715
+ DW_LNE_HP_push_context = 0x12,
716
+ DW_LNE_HP_pop_context = 0x13,
717
+ DW_LNE_HP_set_file_line_column = 0x14,
718
+ DW_LNE_HP_set_routine_name = 0x15,
719
+ DW_LNE_HP_set_sequence = 0x16,
720
+ DW_LNE_HP_negate_post_semantics = 0x17,
721
+ DW_LNE_HP_negate_function_exit = 0x18,
722
+ DW_LNE_HP_negate_front_end_logical = 0x19,
723
+ DW_LNE_HP_define_proc = 0x20
724
+ };
725
+
726
+ #define DW_LNE_lo_user 0x80
727
+ #define DW_LNE_hi_user 0xff
728
+
729
+ /* Call frame information. */
730
+ enum dwarf_call_frame_info
731
+ {
732
+ DW_CFA_advance_loc = 0x40,
733
+ DW_CFA_offset = 0x80,
734
+ DW_CFA_restore = 0xc0,
735
+ DW_CFA_nop = 0x00,
736
+ DW_CFA_set_loc = 0x01,
737
+ DW_CFA_advance_loc1 = 0x02,
738
+ DW_CFA_advance_loc2 = 0x03,
739
+ DW_CFA_advance_loc4 = 0x04,
740
+ DW_CFA_offset_extended = 0x05,
741
+ DW_CFA_restore_extended = 0x06,
742
+ DW_CFA_undefined = 0x07,
743
+ DW_CFA_same_value = 0x08,
744
+ DW_CFA_register = 0x09,
745
+ DW_CFA_remember_state = 0x0a,
746
+ DW_CFA_restore_state = 0x0b,
747
+ DW_CFA_def_cfa = 0x0c,
748
+ DW_CFA_def_cfa_register = 0x0d,
749
+ DW_CFA_def_cfa_offset = 0x0e,
750
+ /* DWARF 3. */
751
+ DW_CFA_def_cfa_expression = 0x0f,
752
+ DW_CFA_expression = 0x10,
753
+ DW_CFA_offset_extended_sf = 0x11,
754
+ DW_CFA_def_cfa_sf = 0x12,
755
+ DW_CFA_def_cfa_offset_sf = 0x13,
756
+ DW_CFA_val_offset = 0x14,
757
+ DW_CFA_val_offset_sf = 0x15,
758
+ DW_CFA_val_expression = 0x16,
759
+ /* SGI/MIPS specific. */
760
+ DW_CFA_MIPS_advance_loc8 = 0x1d,
761
+ /* GNU extensions. */
762
+ DW_CFA_GNU_window_save = 0x2d,
763
+ DW_CFA_GNU_args_size = 0x2e,
764
+ DW_CFA_GNU_negative_offset_extended = 0x2f
765
+ };
766
+
767
+ #define DW_CIE_ID 0xffffffff
768
+ #define DW_CIE_VERSION 1
769
+
770
+ #define DW_CFA_extended 0
771
+ #define DW_CFA_lo_user 0x1c
772
+ #define DW_CFA_hi_user 0x3f
773
+
774
+ #define DW_CHILDREN_no 0x00
775
+ #define DW_CHILDREN_yes 0x01
776
+
777
+ #define DW_ADDR_none 0
778
+
779
+ /* Source language names and codes. */
780
+ enum dwarf_source_language
781
+ {
782
+ DW_LANG_C89 = 0x0001,
783
+ DW_LANG_C = 0x0002,
784
+ DW_LANG_Ada83 = 0x0003,
785
+ DW_LANG_C_plus_plus = 0x0004,
786
+ DW_LANG_Cobol74 = 0x0005,
787
+ DW_LANG_Cobol85 = 0x0006,
788
+ DW_LANG_Fortran77 = 0x0007,
789
+ DW_LANG_Fortran90 = 0x0008,
790
+ DW_LANG_Pascal83 = 0x0009,
791
+ DW_LANG_Modula2 = 0x000a,
792
+ /* DWARF 3. */
793
+ DW_LANG_Java = 0x000b,
794
+ DW_LANG_C99 = 0x000c,
795
+ DW_LANG_Ada95 = 0x000d,
796
+ DW_LANG_Fortran95 = 0x000e,
797
+ DW_LANG_PLI = 0x000f,
798
+ DW_LANG_ObjC = 0x0010,
799
+ DW_LANG_ObjC_plus_plus = 0x0011,
800
+ DW_LANG_UPC = 0x0012,
801
+ DW_LANG_D = 0x0013,
802
+ /* MIPS. */
803
+ DW_LANG_Mips_Assembler = 0x8001,
804
+ /* UPC. */
805
+ DW_LANG_Upc = 0x8765
806
+ };
807
+
808
+ #define DW_LANG_lo_user 0x8000 /* Implementation-defined range start. */
809
+ #define DW_LANG_hi_user 0xffff /* Implementation-defined range start. */
810
+
811
+ /* Names and codes for macro information. */
812
+ enum dwarf_macinfo_record_type
813
+ {
814
+ DW_MACINFO_define = 1,
815
+ DW_MACINFO_undef = 2,
816
+ DW_MACINFO_start_file = 3,
817
+ DW_MACINFO_end_file = 4,
818
+ DW_MACINFO_vendor_ext = 255
819
+ };
820
+
821
+ /* @@@ For use with GNU frame unwind information. */
822
+
823
+ #define DW_EH_PE_absptr 0x00
824
+ #define DW_EH_PE_omit 0xff
825
+
826
+ #define DW_EH_PE_uleb128 0x01
827
+ #define DW_EH_PE_udata2 0x02
828
+ #define DW_EH_PE_udata4 0x03
829
+ #define DW_EH_PE_udata8 0x04
830
+ #define DW_EH_PE_sleb128 0x09
831
+ #define DW_EH_PE_sdata2 0x0A
832
+ #define DW_EH_PE_sdata4 0x0B
833
+ #define DW_EH_PE_sdata8 0x0C
834
+ #define DW_EH_PE_signed 0x08
835
+
836
+ #define DW_EH_PE_pcrel 0x10
837
+ #define DW_EH_PE_textrel 0x20
838
+ #define DW_EH_PE_datarel 0x30
839
+ #define DW_EH_PE_funcrel 0x40
840
+ #define DW_EH_PE_aligned 0x50
841
+
842
+ #define DW_EH_PE_indirect 0x80
843
+
844
+ #endif /* _ELF_DWARF2_H */