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.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/Rakefile +14 -0
- data/atosl.gemspec +25 -0
- data/bin/atosl +48 -0
- data/ext/atosl/atosl.c +153 -0
- data/ext/atosl/atosl.h +4 -0
- data/ext/atosl/converter.c +411 -0
- data/ext/atosl/converter.h +9 -0
- data/ext/atosl/cputype.h +347 -0
- data/ext/atosl/debug.h +11 -0
- data/ext/atosl/dwarf2.h +844 -0
- data/ext/atosl/extconf.rb +9 -0
- data/ext/atosl/fat.h +25 -0
- data/ext/atosl/loader.h +1440 -0
- data/ext/atosl/macho.c +3333 -0
- data/ext/atosl/macho.h +602 -0
- data/ext/atosl/main.h +4 -0
- data/ext/atosl/nlist.h +312 -0
- data/lib/atosl.rb +8 -0
- data/lib/atosl/version.rb +3 -0
- data/test/test_atosl.rb +8 -0
- metadata +114 -0
data/ext/atosl/cputype.h
ADDED
@@ -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
data/ext/atosl/dwarf2.h
ADDED
@@ -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 */
|