]>
Commit | Line | Data |
---|---|---|
d696c285 A |
1 | /* |
2 | * Copyright (c) 2006 Apple Computer, Inc. All rights reserved. | |
3 | * | |
4 | * @APPLE_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. Please obtain a copy of the License at | |
10 | * http://www.opensource.apple.com/apsl/ and read it before using this | |
11 | * file. | |
12 | * | |
13 | * The Original Code and all software distributed under the License are | |
14 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER | |
15 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, | |
16 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, | |
17 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. | |
18 | * Please see the License for the specific language governing rights and | |
19 | * limitations under the License. | |
20 | * | |
21 | * @APPLE_LICENSE_HEADER_END@ | |
22 | */ | |
23 | /* These constants were taken from version 3 of the DWARF standard, | |
24 | which is Copyright (c) 2005 Free Standards Group, and | |
25 | Copyright (c) 1992, 1993 UNIX International, Inc. */ | |
26 | ||
55e3d2f6 A |
27 | #ifndef __DWARF2_H__ |
28 | #define __DWARF2_H__ | |
29 | ||
d696c285 A |
30 | /* This is not a complete list. */ |
31 | enum { | |
32 | DW_TAG_compile_unit = 17, | |
33 | DW_TAG_partial_unit = 60 | |
34 | }; | |
35 | ||
36 | /* This is not a complete list. */ | |
37 | enum { | |
38 | DW_AT_sibling = 1, | |
39 | DW_AT_name = 3, | |
40 | DW_AT_stmt_list = 16, | |
41 | DW_AT_comp_dir = 27 | |
42 | }; | |
43 | ||
44 | enum { | |
45 | DW_FORM_addr = 1, | |
46 | DW_FORM_block2 = 3, | |
47 | DW_FORM_block4, | |
48 | DW_FORM_data2, | |
49 | DW_FORM_data4, | |
50 | DW_FORM_data8, | |
51 | DW_FORM_string, | |
52 | DW_FORM_block, | |
53 | DW_FORM_block1, | |
54 | DW_FORM_data1, | |
55 | DW_FORM_flag, | |
56 | DW_FORM_sdata, | |
57 | DW_FORM_strp, | |
58 | DW_FORM_udata, | |
59 | DW_FORM_ref_addr, | |
60 | DW_FORM_ref1, | |
61 | DW_FORM_ref2, | |
62 | DW_FORM_ref4, | |
63 | DW_FORM_ref8, | |
64 | DW_FORM_ref_udata, | |
65 | DW_FORM_indirect /* 22 */ | |
66 | }; | |
67 | ||
68 | enum { | |
69 | DW_LNS_extended_op = 0, | |
70 | DW_LNS_copy, | |
71 | DW_LNS_advance_pc, | |
72 | DW_LNS_advance_line, | |
73 | DW_LNS_set_file, | |
74 | DW_LNS_set_column, | |
75 | DW_LNS_negate_stmt, | |
76 | DW_LNS_set_basic_block, | |
77 | DW_LNS_const_add_pc, | |
78 | DW_LNS_fixed_advance_pc, | |
79 | DW_LNS_set_prologue_end, | |
80 | DW_LNS_set_epilogue_begin, | |
81 | DW_LNS_set_isa | |
82 | }; | |
83 | ||
84 | enum { | |
85 | DW_LNE_end_sequence = 1, | |
86 | DW_LNE_set_address, | |
87 | DW_LNE_define_file | |
88 | }; | |
55e3d2f6 | 89 | |
afe874b1 A |
90 | |
91 | // dwarf unwind instructions | |
92 | enum { | |
93 | DW_CFA_nop = 0x0, | |
94 | DW_CFA_set_loc = 0x1, | |
95 | DW_CFA_advance_loc1 = 0x2, | |
96 | DW_CFA_advance_loc2 = 0x3, | |
97 | DW_CFA_advance_loc4 = 0x4, | |
98 | DW_CFA_offset_extended = 0x5, | |
99 | DW_CFA_restore_extended = 0x6, | |
100 | DW_CFA_undefined = 0x7, | |
101 | DW_CFA_same_value = 0x8, | |
102 | DW_CFA_register = 0x9, | |
103 | DW_CFA_remember_state = 0xA, | |
104 | DW_CFA_restore_state = 0xB, | |
105 | DW_CFA_def_cfa = 0xC, | |
106 | DW_CFA_def_cfa_register = 0xD, | |
107 | DW_CFA_def_cfa_offset = 0xE, | |
108 | DW_CFA_def_cfa_expression = 0xF, | |
109 | DW_CFA_expression = 0x10, | |
110 | DW_CFA_offset_extended_sf = 0x11, | |
111 | DW_CFA_def_cfa_sf = 0x12, | |
112 | DW_CFA_def_cfa_offset_sf = 0x13, | |
113 | DW_CFA_val_offset = 0x14, | |
114 | DW_CFA_val_offset_sf = 0x15, | |
115 | DW_CFA_val_expression = 0x16, | |
116 | DW_CFA_advance_loc = 0x40, // high 2 bits are 0x1, lower 6 bits are delta | |
117 | DW_CFA_offset = 0x80, // high 2 bits are 0x2, lower 6 bits are register | |
118 | DW_CFA_restore = 0xC0, // high 2 bits are 0x3, lower 6 bits are register | |
119 | ||
120 | // GNU extensions | |
121 | DW_CFA_GNU_window_save = 0x2D, | |
122 | DW_CFA_GNU_args_size = 0x2E, | |
123 | DW_CFA_GNU_negative_offset_extended = 0x2F | |
124 | }; | |
125 | ||
126 | ||
127 | // FSF exception handling Pointer-Encoding constants | |
128 | // Used in CFI augmentation by gcc compiler | |
129 | enum { | |
130 | DW_EH_PE_ptr = 0x00, | |
131 | DW_EH_PE_uleb128 = 0x01, | |
132 | DW_EH_PE_udata2 = 0x02, | |
133 | DW_EH_PE_udata4 = 0x03, | |
134 | DW_EH_PE_udata8 = 0x04, | |
135 | DW_EH_PE_signed = 0x08, | |
136 | DW_EH_PE_sleb128 = 0x09, | |
137 | DW_EH_PE_sdata2 = 0x0A, | |
138 | DW_EH_PE_sdata4 = 0x0B, | |
139 | DW_EH_PE_sdata8 = 0x0C, | |
140 | DW_EH_PE_absptr = 0x00, | |
141 | DW_EH_PE_pcrel = 0x10, | |
142 | DW_EH_PE_textrel = 0x20, | |
143 | DW_EH_PE_datarel = 0x30, | |
144 | DW_EH_PE_funcrel = 0x40, | |
145 | DW_EH_PE_aligned = 0x50, | |
146 | DW_EH_PE_indirect = 0x80, | |
147 | DW_EH_PE_omit = 0xFF | |
148 | }; | |
149 | ||
150 | ||
151 | // DWARF expressions | |
152 | enum { | |
153 | DW_OP_addr = 0x03, // constant address (size target specific) | |
154 | DW_OP_deref = 0x06, | |
155 | DW_OP_const1u = 0x08, // 1-byte constant | |
156 | DW_OP_const1s = 0x09, // 1-byte constant | |
157 | DW_OP_const2u = 0x0A, // 2-byte constant | |
158 | DW_OP_const2s = 0x0B, // 2-byte constant | |
159 | DW_OP_const4u = 0x0C, // 4-byte constant | |
160 | DW_OP_const4s = 0x0D, // 4-byte constant | |
161 | DW_OP_const8u = 0x0E, // 8-byte constant | |
162 | DW_OP_const8s = 0x0F, // 8-byte constant | |
163 | DW_OP_constu = 0x10, // ULEB128 constant | |
164 | DW_OP_consts = 0x11, // SLEB128 constant | |
165 | DW_OP_dup = 0x12, | |
166 | DW_OP_drop = 0x13, | |
167 | DW_OP_over = 0x14, | |
168 | DW_OP_pick = 0x15, // 1-byte stack index | |
169 | DW_OP_swap = 0x16, | |
170 | DW_OP_rot = 0x17, | |
171 | DW_OP_xderef = 0x18, | |
172 | DW_OP_abs = 0x19, | |
173 | DW_OP_and = 0x1A, | |
174 | DW_OP_div = 0x1B, | |
175 | DW_OP_minus = 0x1C, | |
176 | DW_OP_mod = 0x1D, | |
177 | DW_OP_mul = 0x1E, | |
178 | DW_OP_neg = 0x1F, | |
179 | DW_OP_not = 0x20, | |
180 | DW_OP_or = 0x21, | |
181 | DW_OP_plus = 0x22, | |
182 | DW_OP_plus_uconst = 0x23, // ULEB128 addend | |
183 | DW_OP_shl = 0x24, | |
184 | DW_OP_shr = 0x25, | |
185 | DW_OP_shra = 0x26, | |
186 | DW_OP_xor = 0x27, | |
187 | DW_OP_skip = 0x2F, // signed 2-byte constant | |
188 | DW_OP_bra = 0x28, // signed 2-byte constant | |
189 | DW_OP_eq = 0x29, | |
190 | DW_OP_ge = 0x2A, | |
191 | DW_OP_gt = 0x2B, | |
192 | DW_OP_le = 0x2C, | |
193 | DW_OP_lt = 0x2D, | |
194 | DW_OP_ne = 0x2E, | |
195 | DW_OP_lit0 = 0x30, // Literal 0 | |
196 | DW_OP_lit1 = 0x31, // Literal 1 | |
197 | DW_OP_lit2 = 0x32, // Literal 2 | |
198 | DW_OP_lit3 = 0x33, // Literal 3 | |
199 | DW_OP_lit4 = 0x34, // Literal 4 | |
200 | DW_OP_lit5 = 0x35, // Literal 5 | |
201 | DW_OP_lit6 = 0x36, // Literal 6 | |
202 | DW_OP_lit7 = 0x37, // Literal 7 | |
203 | DW_OP_lit8 = 0x38, // Literal 8 | |
204 | DW_OP_lit9 = 0x39, // Literal 9 | |
205 | DW_OP_lit10 = 0x3A, // Literal 10 | |
206 | DW_OP_lit11 = 0x3B, // Literal 11 | |
207 | DW_OP_lit12 = 0x3C, // Literal 12 | |
208 | DW_OP_lit13 = 0x3D, // Literal 13 | |
209 | DW_OP_lit14 = 0x3E, // Literal 14 | |
210 | DW_OP_lit15 = 0x3F, // Literal 15 | |
211 | DW_OP_lit16 = 0x40, // Literal 16 | |
212 | DW_OP_lit17 = 0x41, // Literal 17 | |
213 | DW_OP_lit18 = 0x42, // Literal 18 | |
214 | DW_OP_lit19 = 0x43, // Literal 19 | |
215 | DW_OP_lit20 = 0x44, // Literal 20 | |
216 | DW_OP_lit21 = 0x45, // Literal 21 | |
217 | DW_OP_lit22 = 0x46, // Literal 22 | |
218 | DW_OP_lit23 = 0x47, // Literal 23 | |
219 | DW_OP_lit24 = 0x48, // Literal 24 | |
220 | DW_OP_lit25 = 0x49, // Literal 25 | |
221 | DW_OP_lit26 = 0x4A, // Literal 26 | |
222 | DW_OP_lit27 = 0x4B, // Literal 27 | |
223 | DW_OP_lit28 = 0x4C, // Literal 28 | |
224 | DW_OP_lit29 = 0x4D, // Literal 29 | |
225 | DW_OP_lit30 = 0x4E, // Literal 30 | |
226 | DW_OP_lit31 = 0x4F, // Literal 31 | |
227 | DW_OP_reg0 = 0x50, // Contents of reg0 | |
228 | DW_OP_reg1 = 0x51, // Contents of reg1 | |
229 | DW_OP_reg2 = 0x52, // Contents of reg2 | |
230 | DW_OP_reg3 = 0x53, // Contents of reg3 | |
231 | DW_OP_reg4 = 0x54, // Contents of reg4 | |
232 | DW_OP_reg5 = 0x55, // Contents of reg5 | |
233 | DW_OP_reg6 = 0x56, // Contents of reg6 | |
234 | DW_OP_reg7 = 0x57, // Contents of reg7 | |
235 | DW_OP_reg8 = 0x58, // Contents of reg8 | |
236 | DW_OP_reg9 = 0x59, // Contents of reg9 | |
237 | DW_OP_reg10 = 0x5A, // Contents of reg10 | |
238 | DW_OP_reg11 = 0x5B, // Contents of reg11 | |
239 | DW_OP_reg12 = 0x5C, // Contents of reg12 | |
240 | DW_OP_reg13 = 0x5D, // Contents of reg13 | |
241 | DW_OP_reg14 = 0x5E, // Contents of reg14 | |
242 | DW_OP_reg15 = 0x5F, // Contents of reg15 | |
243 | DW_OP_reg16 = 0x60, // Contents of reg16 | |
244 | DW_OP_reg17 = 0x61, // Contents of reg17 | |
245 | DW_OP_reg18 = 0x62, // Contents of reg18 | |
246 | DW_OP_reg19 = 0x63, // Contents of reg19 | |
247 | DW_OP_reg20 = 0x64, // Contents of reg20 | |
248 | DW_OP_reg21 = 0x65, // Contents of reg21 | |
249 | DW_OP_reg22 = 0x66, // Contents of reg22 | |
250 | DW_OP_reg23 = 0x67, // Contents of reg23 | |
251 | DW_OP_reg24 = 0x68, // Contents of reg24 | |
252 | DW_OP_reg25 = 0x69, // Contents of reg25 | |
253 | DW_OP_reg26 = 0x6A, // Contents of reg26 | |
254 | DW_OP_reg27 = 0x6B, // Contents of reg27 | |
255 | DW_OP_reg28 = 0x6C, // Contents of reg28 | |
256 | DW_OP_reg29 = 0x6D, // Contents of reg29 | |
257 | DW_OP_reg30 = 0x6E, // Contents of reg30 | |
258 | DW_OP_reg31 = 0x6F, // Contents of reg31 | |
259 | DW_OP_breg0 = 0x70, // base register 0 + SLEB128 offset | |
260 | DW_OP_breg1 = 0x71, // base register 1 + SLEB128 offset | |
261 | DW_OP_breg2 = 0x72, // base register 2 + SLEB128 offset | |
262 | DW_OP_breg3 = 0x73, // base register 3 + SLEB128 offset | |
263 | DW_OP_breg4 = 0x74, // base register 4 + SLEB128 offset | |
264 | DW_OP_breg5 = 0x75, // base register 5 + SLEB128 offset | |
265 | DW_OP_breg6 = 0x76, // base register 6 + SLEB128 offset | |
266 | DW_OP_breg7 = 0x77, // base register 7 + SLEB128 offset | |
267 | DW_OP_breg8 = 0x78, // base register 8 + SLEB128 offset | |
268 | DW_OP_breg9 = 0x79, // base register 9 + SLEB128 offset | |
269 | DW_OP_breg10 = 0x7A, // base register 10 + SLEB128 offset | |
270 | DW_OP_breg11 = 0x7B, // base register 11 + SLEB128 offset | |
271 | DW_OP_breg12 = 0x7C, // base register 12 + SLEB128 offset | |
272 | DW_OP_breg13 = 0x7D, // base register 13 + SLEB128 offset | |
273 | DW_OP_breg14 = 0x7E, // base register 14 + SLEB128 offset | |
274 | DW_OP_breg15 = 0x7F, // base register 15 + SLEB128 offset | |
275 | DW_OP_breg16 = 0x80, // base register 16 + SLEB128 offset | |
276 | DW_OP_breg17 = 0x81, // base register 17 + SLEB128 offset | |
277 | DW_OP_breg18 = 0x82, // base register 18 + SLEB128 offset | |
278 | DW_OP_breg19 = 0x83, // base register 19 + SLEB128 offset | |
279 | DW_OP_breg20 = 0x84, // base register 20 + SLEB128 offset | |
280 | DW_OP_breg21 = 0x85, // base register 21 + SLEB128 offset | |
281 | DW_OP_breg22 = 0x86, // base register 22 + SLEB128 offset | |
282 | DW_OP_breg23 = 0x87, // base register 23 + SLEB128 offset | |
283 | DW_OP_breg24 = 0x88, // base register 24 + SLEB128 offset | |
284 | DW_OP_breg25 = 0x89, // base register 25 + SLEB128 offset | |
285 | DW_OP_breg26 = 0x8A, // base register 26 + SLEB128 offset | |
286 | DW_OP_breg27 = 0x8B, // base register 27 + SLEB128 offset | |
287 | DW_OP_breg28 = 0x8C, // base register 28 + SLEB128 offset | |
288 | DW_OP_breg29 = 0x8D, // base register 29 + SLEB128 offset | |
289 | DW_OP_breg30 = 0x8E, // base register 30 + SLEB128 offset | |
290 | DW_OP_breg31 = 0x8F, // base register 31 + SLEB128 offset | |
291 | DW_OP_regx = 0x90, // ULEB128 register | |
292 | DW_OP_fbreg = 0x91, // SLEB128 offset | |
293 | DW_OP_bregx = 0x92, // ULEB128 register followed by SLEB128 offset | |
294 | DW_OP_piece = 0x93, // ULEB128 size of piece addressed | |
295 | DW_OP_deref_size = 0x94, // 1-byte size of data retrieved | |
296 | DW_OP_xderef_size = 0x95, // 1-byte size of data retrieved | |
297 | DW_OP_nop = 0x96, | |
298 | DW_OP_push_object_addres = 0x97, | |
299 | DW_OP_call2 = 0x98, // 2-byte offset of DIE | |
300 | DW_OP_call4 = 0x99, // 4-byte offset of DIE | |
301 | DW_OP_call_ref = 0x9A, // 4- or 8-byte offset of DIE | |
302 | DW_OP_lo_user = 0xE0, | |
303 | DW_OP_APPLE_uninit = 0xF0, | |
304 | DW_OP_hi_user = 0xFF | |
305 | }; | |
306 | ||
307 | ||
308 | ||
55e3d2f6 | 309 | #endif |