atosl 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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 */