|
1 /* |
|
2 Copyright (C) 2000,2001,2003,2004,2005,2006 Silicon Graphics, Inc. All Rights Reserved. |
|
3 Portions Copyright 2002,2007 Sun Microsystems, Inc. All rights reserved. |
|
4 Portions Copyright 2007 David Anderson. All rights reserved. |
|
5 |
|
6 This program is free software; you can redistribute it and/or modify it |
|
7 under the terms of version 2.1 of the GNU Lesser General Public License |
|
8 as published by the Free Software Foundation. |
|
9 |
|
10 This program is distributed in the hope that it would be useful, but |
|
11 WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
13 |
|
14 Further, this software is distributed without any warranty that it is |
|
15 free of the rightful claim of any third person regarding infringement |
|
16 or the like. Any license provided herein, whether implied or |
|
17 otherwise, applies only to this software file. Patent licenses, if |
|
18 any, provided herein do not apply to combinations of this program with |
|
19 other software, or any other product whatsoever. |
|
20 |
|
21 You should have received a copy of the GNU Lesser General Public |
|
22 License along with this program; if not, write the Free Software |
|
23 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301, |
|
24 USA. |
|
25 |
|
26 Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane, |
|
27 Mountain View, CA 94043, or: |
|
28 |
|
29 http://www.sgi.com |
|
30 |
|
31 For further information regarding this notice, see: |
|
32 |
|
33 http://oss.sgi.com/projects/GenInfo/NoticeExplan |
|
34 |
|
35 */ |
|
36 |
|
37 |
|
38 #ifndef __DWARF_H |
|
39 #define __DWARF_H |
|
40 #ifdef __cplusplus |
|
41 extern "C" { |
|
42 #endif |
|
43 |
|
44 /* |
|
45 dwarf.h DWARF debugging information values |
|
46 $Revision: 1.41 $ $Date: 2006/04/17 00:09:56 $ |
|
47 |
|
48 The comment "DWARF3" appears where there are |
|
49 new entries from DWARF3 as of 2004, "DWARF3f" |
|
50 where there are new entries as of the November 2005 |
|
51 public review document and other comments apply |
|
52 where extension entries appear. |
|
53 |
|
54 Extensions part of DWARF4 are marked DWARF4. |
|
55 |
|
56 A few extension names have omitted the 'vendor id' |
|
57 (See chapter 7, "Vendor Extensibility"). Please |
|
58 always use a 'vendor id' string in extension names. |
|
59 |
|
60 Vendors should use a vendor string in names and |
|
61 whereever possible avoid duplicating values used by |
|
62 other vendor extensions |
|
63 |
|
64 */ |
|
65 |
|
66 |
|
67 #define DW_TAG_array_type 0x01 |
|
68 #define DW_TAG_class_type 0x02 |
|
69 #define DW_TAG_entry_point 0x03 |
|
70 #define DW_TAG_enumeration_type 0x04 |
|
71 #define DW_TAG_formal_parameter 0x05 |
|
72 #define DW_TAG_imported_declaration 0x08 |
|
73 #define DW_TAG_label 0x0a |
|
74 #define DW_TAG_lexical_block 0x0b |
|
75 #define DW_TAG_member 0x0d |
|
76 #define DW_TAG_pointer_type 0x0f |
|
77 #define DW_TAG_reference_type 0x10 |
|
78 #define DW_TAG_compile_unit 0x11 |
|
79 #define DW_TAG_string_type 0x12 |
|
80 #define DW_TAG_structure_type 0x13 |
|
81 #define DW_TAG_subroutine_type 0x15 |
|
82 #define DW_TAG_typedef 0x16 |
|
83 #define DW_TAG_union_type 0x17 |
|
84 #define DW_TAG_unspecified_parameters 0x18 |
|
85 #define DW_TAG_variant 0x19 |
|
86 #define DW_TAG_common_block 0x1a |
|
87 #define DW_TAG_common_inclusion 0x1b |
|
88 #define DW_TAG_inheritance 0x1c |
|
89 #define DW_TAG_inlined_subroutine 0x1d |
|
90 #define DW_TAG_module 0x1e |
|
91 #define DW_TAG_ptr_to_member_type 0x1f |
|
92 #define DW_TAG_set_type 0x20 |
|
93 #define DW_TAG_subrange_type 0x21 |
|
94 #define DW_TAG_with_stmt 0x22 |
|
95 #define DW_TAG_access_declaration 0x23 |
|
96 #define DW_TAG_base_type 0x24 |
|
97 #define DW_TAG_catch_block 0x25 |
|
98 #define DW_TAG_const_type 0x26 |
|
99 #define DW_TAG_constant 0x27 |
|
100 #define DW_TAG_enumerator 0x28 |
|
101 #define DW_TAG_file_type 0x29 |
|
102 #define DW_TAG_friend 0x2a |
|
103 #define DW_TAG_namelist 0x2b |
|
104 /* Early releases of this header had the following |
|
105 misspelled with a trailing 's' */ |
|
106 #define DW_TAG_namelist_item 0x2c /* DWARF3/2 spelling */ |
|
107 #define DW_TAG_namelist_items 0x2c /* SGI misspelling/typo */ |
|
108 #define DW_TAG_packed_type 0x2d |
|
109 #define DW_TAG_subprogram 0x2e |
|
110 /* The DWARF2 document had two spellings of the following |
|
111 two TAGs, DWARF3 specifies the longer spelling. */ |
|
112 #define DW_TAG_template_type_parameter 0x2f /* DWARF3/2 spelling*/ |
|
113 #define DW_TAG_template_type_param 0x2f /* DWARF2 spelling*/ |
|
114 #define DW_TAG_template_value_parameter 0x30 /* DWARF3/2 spelling*/ |
|
115 #define DW_TAG_template_value_param 0x30 /* DWARF2 spelling*/ |
|
116 #define DW_TAG_thrown_type 0x31 |
|
117 #define DW_TAG_try_block 0x32 |
|
118 #define DW_TAG_variant_part 0x33 |
|
119 #define DW_TAG_variable 0x34 |
|
120 #define DW_TAG_volatile_type 0x35 |
|
121 #define DW_TAG_dwarf_procedure 0x36 /* DWARF3 */ |
|
122 #define DW_TAG_restrict_type 0x37 /* DWARF3 */ |
|
123 #define DW_TAG_interface_type 0x38 /* DWARF3 */ |
|
124 #define DW_TAG_namespace 0x39 /* DWARF3 */ |
|
125 #define DW_TAG_imported_module 0x3a /* DWARF3 */ |
|
126 #define DW_TAG_unspecified_type 0x3b /* DWARF3 */ |
|
127 #define DW_TAG_partial_unit 0x3c /* DWARF3 */ |
|
128 #define DW_TAG_imported_unit 0x3d /* DWARF3 */ |
|
129 /* Do not use DW_TAG_mutable_type */ |
|
130 #define DW_TAG_mutable_type 0x3e /* Withdrawn from DWARF3 by DWARF3f. */ |
|
131 #define DW_TAG_condition 0x3f /* DWARF3f */ |
|
132 #define DW_TAG_shared_type 0x40 /* DWARF3f */ |
|
133 #define DW_TAG_lo_user 0x4080 |
|
134 |
|
135 #define DW_TAG_MIPS_loop 0x4081 |
|
136 |
|
137 /* HP extensions: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz */ |
|
138 #define DW_TAG_HP_array_descriptor 0x4090 /* HP */ |
|
139 |
|
140 /* GNU extensions. The first 3 missing the GNU_. */ |
|
141 #define DW_TAG_format_label 0x4101 /* GNU. Fortran. */ |
|
142 #define DW_TAG_function_template 0x4102 /* GNU. For C++ */ |
|
143 #define DW_TAG_class_template 0x4103 /* GNU. For C++ */ |
|
144 #define DW_TAG_GNU_BINCL 0x4104 /* GNU */ |
|
145 #define DW_TAG_GNU_EINCL 0x4105 /* GNU */ |
|
146 |
|
147 /* ALTIUM extensions */ |
|
148 /* DSP-C/Starcore __circ qualifier */ |
|
149 #define DW_TAG_ALTIUM_circ_type 0x5101 /* ALTIUM */ |
|
150 /* Starcore __mwa_circ qualifier */ |
|
151 #define DW_TAG_ALTIUM_mwa_circ_type 0x5102 /* ALTIUM */ |
|
152 /* Starcore __rev_carry qualifier */ |
|
153 #define DW_TAG_ALTIUM_rev_carry_type 0x5103 /* ALTIUM */ |
|
154 /* M16 __rom qualifier */ |
|
155 #define DW_TAG_ALTIUM_rom 0x5111 /* ALTIUM */ |
|
156 |
|
157 /* The following 3 are extensions to support UPC */ |
|
158 #define DW_TAG_upc_shared_type 0x8765 /* UPC */ |
|
159 #define DW_TAG_upc_strict_type 0x8766 /* UPC */ |
|
160 #define DW_TAG_upc_relaxed_type 0x8767 /* UPC */ |
|
161 |
|
162 /* PGI (STMicroelectronics) extensions. */ |
|
163 #define DW_TAG_PGI_kanji_type 0xa000 /* PGI */ |
|
164 #define DW_TAG_PGI_interface_block 0xa020 /* PGI */ |
|
165 /* The following are SUN extensions */ |
|
166 #define DW_TAG_SUN_function_template 0x4201 /* SUN */ |
|
167 #define DW_TAG_SUN_class_template 0x4202 /* SUN */ |
|
168 #define DW_TAG_SUN_struct_template 0x4203 /* SUN */ |
|
169 #define DW_TAG_SUN_union_template 0x4204 /* SUN */ |
|
170 #define DW_TAG_SUN_indirect_inheritance 0x4205 /* SUN */ |
|
171 #define DW_TAG_SUN_codeflags 0x4206 /* SUN */ |
|
172 #define DW_TAG_SUN_memop_info 0x4207 /* SUN */ |
|
173 #define DW_TAG_SUN_omp_child_func 0x4208 /* SUN */ |
|
174 #define DW_TAG_SUN_rtti_descriptor 0x4209 /* SUN */ |
|
175 #define DW_TAG_SUN_dtor_info 0x420a /* SUN */ |
|
176 #define DW_TAG_SUN_dtor 0x420b /* SUN */ |
|
177 #define DW_TAG_SUN_f90_interface 0x420c /* SUN */ |
|
178 #define DW_TAG_SUN_fortran_vax_structure 0x420d /* SUN */ |
|
179 #define DW_TAG_SUN_hi 0x42ff /* SUN */ |
|
180 |
|
181 |
|
182 #define DW_TAG_hi_user 0xffff |
|
183 |
|
184 #define DW_children_no 0 |
|
185 #define DW_children_yes 1 |
|
186 |
|
187 |
|
188 |
|
189 #define DW_FORM_addr 0x01 |
|
190 #define DW_FORM_block2 0x03 |
|
191 #define DW_FORM_block4 0x04 |
|
192 #define DW_FORM_data2 0x05 |
|
193 #define DW_FORM_data4 0x06 |
|
194 #define DW_FORM_data8 0x07 |
|
195 #define DW_FORM_string 0x08 |
|
196 #define DW_FORM_block 0x09 |
|
197 #define DW_FORM_block1 0x0a |
|
198 #define DW_FORM_data1 0x0b |
|
199 #define DW_FORM_flag 0x0c |
|
200 #define DW_FORM_sdata 0x0d |
|
201 #define DW_FORM_strp 0x0e |
|
202 #define DW_FORM_udata 0x0f |
|
203 #define DW_FORM_ref_addr 0x10 |
|
204 #define DW_FORM_ref1 0x11 |
|
205 #define DW_FORM_ref2 0x12 |
|
206 #define DW_FORM_ref4 0x13 |
|
207 #define DW_FORM_ref8 0x14 |
|
208 #define DW_FORM_ref_udata 0x15 |
|
209 #define DW_FORM_indirect 0x16 |
|
210 |
|
211 #define DW_AT_sibling 0x01 |
|
212 #define DW_AT_location 0x02 |
|
213 #define DW_AT_name 0x03 |
|
214 #define DW_AT_ordering 0x09 |
|
215 #define DW_AT_subscr_data 0x0a |
|
216 #define DW_AT_byte_size 0x0b |
|
217 #define DW_AT_bit_offset 0x0c |
|
218 #define DW_AT_bit_size 0x0d |
|
219 #define DW_AT_element_list 0x0f |
|
220 #define DW_AT_stmt_list 0x10 |
|
221 #define DW_AT_low_pc 0x11 |
|
222 #define DW_AT_high_pc 0x12 |
|
223 #define DW_AT_language 0x13 |
|
224 #define DW_AT_member 0x14 |
|
225 #define DW_AT_discr 0x15 |
|
226 #define DW_AT_discr_value 0x16 |
|
227 #define DW_AT_visibility 0x17 |
|
228 #define DW_AT_import 0x18 |
|
229 #define DW_AT_string_length 0x19 |
|
230 #define DW_AT_common_reference 0x1a |
|
231 #define DW_AT_comp_dir 0x1b |
|
232 #define DW_AT_const_value 0x1c |
|
233 #define DW_AT_containing_type 0x1d |
|
234 #define DW_AT_default_value 0x1e |
|
235 #define DW_AT_inline 0x20 |
|
236 #define DW_AT_is_optional 0x21 |
|
237 #define DW_AT_lower_bound 0x22 |
|
238 #define DW_AT_producer 0x25 |
|
239 #define DW_AT_prototyped 0x27 |
|
240 #define DW_AT_return_addr 0x2a |
|
241 #define DW_AT_start_scope 0x2c |
|
242 #define DW_AT_bit_stride 0x2e /* DWARF3 name */ |
|
243 #define DW_AT_stride_size 0x2e /* DWARF2 name */ |
|
244 #define DW_AT_upper_bound 0x2f |
|
245 #define DW_AT_abstract_origin 0x31 |
|
246 #define DW_AT_accessibility 0x32 |
|
247 #define DW_AT_address_class 0x33 |
|
248 #define DW_AT_artificial 0x34 |
|
249 #define DW_AT_base_types 0x35 |
|
250 #define DW_AT_calling_convention 0x36 |
|
251 #define DW_AT_count 0x37 |
|
252 #define DW_AT_data_member_location 0x38 |
|
253 #define DW_AT_decl_column 0x39 |
|
254 #define DW_AT_decl_file 0x3a |
|
255 #define DW_AT_decl_line 0x3b |
|
256 #define DW_AT_declaration 0x3c |
|
257 #define DW_AT_discr_list 0x3d |
|
258 #define DW_AT_encoding 0x3e |
|
259 #define DW_AT_external 0x3f |
|
260 #define DW_AT_frame_base 0x40 |
|
261 #define DW_AT_friend 0x41 |
|
262 #define DW_AT_identifier_case 0x42 |
|
263 #define DW_AT_macro_info 0x43 |
|
264 #define DW_AT_namelist_item 0x44 |
|
265 #define DW_AT_priority 0x45 |
|
266 #define DW_AT_segment 0x46 |
|
267 #define DW_AT_specification 0x47 |
|
268 #define DW_AT_static_link 0x48 |
|
269 #define DW_AT_type 0x49 |
|
270 #define DW_AT_use_location 0x4a |
|
271 #define DW_AT_variable_parameter 0x4b |
|
272 #define DW_AT_virtuality 0x4c |
|
273 #define DW_AT_vtable_elem_location 0x4d |
|
274 #define DW_AT_allocated 0x4e /* DWARF3 */ |
|
275 #define DW_AT_associated 0x4f /* DWARF3 */ |
|
276 #define DW_AT_data_location 0x50 /* DWARF3 */ |
|
277 #define DW_AT_byte_stride 0x51 /* DWARF3f */ |
|
278 #define DW_AT_stride 0x51 /* DWARF3 (do not use) */ |
|
279 #define DW_AT_entry_pc 0x52 /* DWARF3 */ |
|
280 #define DW_AT_use_UTF8 0x53 /* DWARF3 */ |
|
281 #define DW_AT_extension 0x54 /* DWARF3 */ |
|
282 #define DW_AT_ranges 0x55 /* DWARF3 */ |
|
283 #define DW_AT_trampoline 0x56 /* DWARF3 */ |
|
284 #define DW_AT_call_column 0x57 /* DWARF3 */ |
|
285 #define DW_AT_call_file 0x58 /* DWARF3 */ |
|
286 #define DW_AT_call_line 0x59 /* DWARF3 */ |
|
287 #define DW_AT_description 0x5a /* DWARF3 */ |
|
288 #define DW_AT_binary_scale 0x5b /* DWARF3f */ |
|
289 #define DW_AT_decimal_scale 0x5c /* DWARF3f */ |
|
290 #define DW_AT_small 0x5d /* DWARF3f */ |
|
291 #define DW_AT_decimal_sign 0x5e /* DWARF3f */ |
|
292 #define DW_AT_digit_count 0x5f /* DWARF3f */ |
|
293 #define DW_AT_picture_string 0x60 /* DWARF3f */ |
|
294 #define DW_AT_mutable 0x61 /* DWARF3f */ |
|
295 #define DW_AT_threads_scaled 0x62 /* DWARF3f */ |
|
296 #define DW_AT_explicit 0x63 /* DWARF3f */ |
|
297 #define DW_AT_object_pointer 0x64 /* DWARF3f */ |
|
298 #define DW_AT_endianity 0x65 /* DWARF3f */ |
|
299 #define DW_AT_elemental 0x66 /* DWARF3f */ |
|
300 #define DW_AT_pure 0x67 /* DWARF3f */ |
|
301 #define DW_AT_recursive 0x68 /* DWARF3f */ |
|
302 |
|
303 |
|
304 /* HP extensions. */ |
|
305 #define DW_AT_HP_block_index 0x2000 /* HP */ |
|
306 |
|
307 /* Follows extension so dwarfdump prints the most-likely-useful name. */ |
|
308 #define DW_AT_lo_user 0x2000 |
|
309 |
|
310 #define DW_AT_MIPS_fde 0x2001 /* MIPS/SGI */ |
|
311 #define DW_AT_MIPS_loop_begin 0x2002 /* MIPS/SGI */ |
|
312 #define DW_AT_MIPS_tail_loop_begin 0x2003 /* MIPS/SGI */ |
|
313 #define DW_AT_MIPS_epilog_begin 0x2004 /* MIPS/SGI */ |
|
314 #define DW_AT_MIPS_loop_unroll_factor 0x2005 /* MIPS/SGI */ |
|
315 #define DW_AT_MIPS_software_pipeline_depth 0x2006 /* MIPS/SGI */ |
|
316 #define DW_AT_MIPS_linkage_name 0x2007 /* MIPS/SGI */ |
|
317 #define DW_AT_MIPS_stride 0x2008 /* MIPS/SGI */ |
|
318 #define DW_AT_MIPS_abstract_name 0x2009 /* MIPS/SGI */ |
|
319 #define DW_AT_MIPS_clone_origin 0x200a /* MIPS/SGI */ |
|
320 #define DW_AT_MIPS_has_inlines 0x200b /* MIPS/SGI */ |
|
321 #define DW_AT_MIPS_stride_byte 0x200c /* MIPS/SGI */ |
|
322 #define DW_AT_MIPS_stride_elem 0x200d /* MIPS/SGI */ |
|
323 #define DW_AT_MIPS_ptr_dopetype 0x200e /* MIPS/SGI */ |
|
324 #define DW_AT_MIPS_allocatable_dopetype 0x200f /* MIPS/SGI */ |
|
325 #define DW_AT_MIPS_assumed_shape_dopetype 0x2010 /* MIPS/SGI */ |
|
326 #define DW_AT_MIPS_assumed_size 0x2011 /* MIPS/SGI */ |
|
327 |
|
328 /* HP extensions. */ |
|
329 #define DW_AT_HP_unmodifiable 0x2001 /* conflict: MIPS */ |
|
330 #define DW_AT_HP_actuals_stmt_list 0x2010 /* conflict: MIPS */ |
|
331 #define DW_AT_HP_proc_per_section 0x2011 /* conflict: MIPS */ |
|
332 #define DW_AT_HP_raw_data_ptr 0x2012 /* HP */ |
|
333 #define DW_AT_HP_pass_by_reference 0x2013 /* HP */ |
|
334 #define DW_AT_HP_opt_level 0x2014 /* HP */ |
|
335 #define DW_AT_HP_prof_version_id 0x2015 /* HP */ |
|
336 #define DW_AT_HP_opt_flags 0x2016 /* HP */ |
|
337 #define DW_AT_HP_cold_region_low_pc 0x2017 /* HP */ |
|
338 #define DW_AT_HP_cold_region_high_pc 0x2018 /* HP */ |
|
339 #define DW_AT_HP_all_variables_modifiable 0x2019 /* HP */ |
|
340 #define DW_AT_HP_linkage_name 0x201a /* HP */ |
|
341 #define DW_AT_HP_prof_flags 0x201b /* HP */ |
|
342 |
|
343 |
|
344 /* GNU extensions. */ |
|
345 #define DW_AT_sf_names 0x2101 /* GNU */ |
|
346 #define DW_AT_src_info 0x2102 /* GNU */ |
|
347 #define DW_AT_mac_info 0x2103 /* GNU */ |
|
348 #define DW_AT_src_coords 0x2104 /* GNU */ |
|
349 #define DW_AT_body_begin 0x2105 /* GNU */ |
|
350 #define DW_AT_body_end 0x2106 /* GNU */ |
|
351 #define DW_AT_GNU_vector 0x2107 /* GNU */ |
|
352 |
|
353 |
|
354 /* ALTIUM extension: ALTIUM Compliant location lists (flag) */ |
|
355 #define DW_AT_ALTIUM_loclist 0x2300 /* ALTIUM */ |
|
356 |
|
357 /* PGI (STMicroelectronics) extensions. */ |
|
358 #define DW_AT_PGI_lbase 0x3a00 /* PGI */ |
|
359 #define DW_AT_PGI_soffset 0x3a01 /* PGI */ |
|
360 #define DW_AT_PGI_lstride 0x3a02 /* PGI */ |
|
361 |
|
362 |
|
363 /* UPC extension */ |
|
364 #define DW_AT_upc_threads_scaled 0x3210 /* UPC */ |
|
365 |
|
366 /* Sun extensions */ |
|
367 #define DW_AT_SUN_template 0x2201 /* SUN */ |
|
368 #define DW_AT_VMS_rtnbeg_pd_address 0x2201 /* VMS */ |
|
369 #define DW_AT_SUN_alignment 0x2202 /* SUN */ |
|
370 #define DW_AT_SUN_vtable 0x2203 /* SUN */ |
|
371 #define DW_AT_SUN_count_guarantee 0x2204 /* SUN */ |
|
372 #define DW_AT_SUN_command_line 0x2205 /* SUN */ |
|
373 #define DW_AT_SUN_vbase 0x2206 /* SUN */ |
|
374 #define DW_AT_SUN_compile_options 0x2207 /* SUN */ |
|
375 #define DW_AT_SUN_language 0x2208 /* SUN */ |
|
376 #define DW_AT_SUN_browser_file 0x2209 /* SUN */ |
|
377 #define DW_AT_SUN_vtable_abi 0x2210 /* SUN */ |
|
378 #define DW_AT_SUN_func_offsets 0x2211 /* SUN */ |
|
379 #define DW_AT_SUN_cf_kind 0x2212 /* SUN */ |
|
380 #define DW_AT_SUN_vtable_index 0x2213 /* SUN */ |
|
381 #define DW_AT_SUN_omp_tpriv_addr 0x2214 /* SUN */ |
|
382 #define DW_AT_SUN_omp_child_func 0x2215 /* SUN */ |
|
383 #define DW_AT_SUN_func_offset 0x2216 /* SUN */ |
|
384 #define DW_AT_SUN_memop_type_ref 0x2217 /* SUN */ |
|
385 #define DW_AT_SUN_profile_id 0x2218 /* SUN */ |
|
386 #define DW_AT_SUN_memop_signature 0x2219 /* SUN */ |
|
387 #define DW_AT_SUN_obj_dir 0x2220 /* SUN */ |
|
388 #define DW_AT_SUN_obj_file 0x2221 /* SUN */ |
|
389 #define DW_AT_SUN_original_name 0x2222 /* SUN */ |
|
390 #define DW_AT_SUN_hwcprof_signature 0x2223 /* SUN */ |
|
391 #define DW_AT_SUN_amd64_parmdump 0x2224 /* SUN */ |
|
392 #define DW_AT_SUN_part_link_name 0x2225 /* SUN */ |
|
393 #define DW_AT_SUN_link_name 0x2226 /* SUN */ |
|
394 #define DW_AT_SUN_pass_with_const 0x2227 /* SUN */ |
|
395 #define DW_AT_SUN_return_with_const 0x2228 /* SUN */ |
|
396 #define DW_AT_SUN_import_by_name 0x2229 /* SUN */ |
|
397 #define DW_AT_SUN_f90_pointer 0x222a /* SUN */ |
|
398 #define DW_AT_SUN_pass_by_ref 0x222b /* SUN */ |
|
399 #define DW_AT_SUN_f90_allocatable 0x222c /* SUN */ |
|
400 #define DW_AT_SUN_f90_assumed_shape_array 0x222d /* SUN */ |
|
401 #define DW_AT_SUN_c_vla 0x222e /* SUN */ |
|
402 #define DW_AT_SUN_return_value_ptr 0x2230 /* SUN */ |
|
403 #define DW_AT_SUN_dtor_start 0x2231 /* SUN */ |
|
404 #define DW_AT_SUN_dtor_length 0x2232 /* SUN */ |
|
405 #define DW_AT_SUN_dtor_state_initial 0x2233 /* SUN */ |
|
406 #define DW_AT_SUN_dtor_state_final 0x2234 /* SUN */ |
|
407 #define DW_AT_SUN_dtor_state_deltas 0x2235 /* SUN */ |
|
408 #define DW_AT_SUN_import_by_lname 0x2236 /* SUN */ |
|
409 #define DW_AT_SUN_f90_use_only 0x2237 /* SUN */ |
|
410 #define DW_AT_SUN_namelist_spec 0x2238 /* SUN */ |
|
411 #define DW_AT_SUN_is_omp_child_func 0x2239 /* SUN */ |
|
412 #define DW_AT_SUN_fortran_main_alias 0x223a /* SUN */ |
|
413 #define DW_AT_SUN_fortran_based 0x223b /* SUN */ |
|
414 |
|
415 |
|
416 #define DW_AT_hi_user 0x3fff |
|
417 |
|
418 #define DW_OP_addr 0x03 |
|
419 #define DW_OP_deref 0x06 |
|
420 #define DW_OP_const1u 0x08 |
|
421 #define DW_OP_const1s 0x09 |
|
422 #define DW_OP_const2u 0x0a |
|
423 #define DW_OP_const2s 0x0b |
|
424 #define DW_OP_const4u 0x0c |
|
425 #define DW_OP_const4s 0x0d |
|
426 #define DW_OP_const8u 0x0e |
|
427 #define DW_OP_const8s 0x0f |
|
428 #define DW_OP_constu 0x10 |
|
429 #define DW_OP_consts 0x11 |
|
430 #define DW_OP_dup 0x12 |
|
431 #define DW_OP_drop 0x13 |
|
432 #define DW_OP_over 0x14 |
|
433 #define DW_OP_pick 0x15 |
|
434 #define DW_OP_swap 0x16 |
|
435 #define DW_OP_rot 0x17 |
|
436 #define DW_OP_xderef 0x18 |
|
437 #define DW_OP_abs 0x19 |
|
438 #define DW_OP_and 0x1a |
|
439 #define DW_OP_div 0x1b |
|
440 #define DW_OP_minus 0x1c |
|
441 #define DW_OP_mod 0x1d |
|
442 #define DW_OP_mul 0x1e |
|
443 #define DW_OP_neg 0x1f |
|
444 #define DW_OP_not 0x20 |
|
445 #define DW_OP_or 0x21 |
|
446 #define DW_OP_plus 0x22 |
|
447 #define DW_OP_plus_uconst 0x23 |
|
448 #define DW_OP_shl 0x24 |
|
449 #define DW_OP_shr 0x25 |
|
450 #define DW_OP_shra 0x26 |
|
451 #define DW_OP_xor 0x27 |
|
452 #define DW_OP_bra 0x28 |
|
453 #define DW_OP_eq 0x29 |
|
454 #define DW_OP_ge 0x2a |
|
455 #define DW_OP_gt 0x2b |
|
456 #define DW_OP_le 0x2c |
|
457 #define DW_OP_lt 0x2d |
|
458 #define DW_OP_ne 0x2e |
|
459 #define DW_OP_skip 0x2f |
|
460 #define DW_OP_lit0 0x30 |
|
461 #define DW_OP_lit1 0x31 |
|
462 #define DW_OP_lit2 0x32 |
|
463 #define DW_OP_lit3 0x33 |
|
464 #define DW_OP_lit4 0x34 |
|
465 #define DW_OP_lit5 0x35 |
|
466 #define DW_OP_lit6 0x36 |
|
467 #define DW_OP_lit7 0x37 |
|
468 #define DW_OP_lit8 0x38 |
|
469 #define DW_OP_lit9 0x39 |
|
470 #define DW_OP_lit10 0x3a |
|
471 #define DW_OP_lit11 0x3b |
|
472 #define DW_OP_lit12 0x3c |
|
473 #define DW_OP_lit13 0x3d |
|
474 #define DW_OP_lit14 0x3e |
|
475 #define DW_OP_lit15 0x3f |
|
476 #define DW_OP_lit16 0x40 |
|
477 #define DW_OP_lit17 0x41 |
|
478 #define DW_OP_lit18 0x42 |
|
479 #define DW_OP_lit19 0x43 |
|
480 #define DW_OP_lit20 0x44 |
|
481 #define DW_OP_lit21 0x45 |
|
482 #define DW_OP_lit22 0x46 |
|
483 #define DW_OP_lit23 0x47 |
|
484 #define DW_OP_lit24 0x48 |
|
485 #define DW_OP_lit25 0x49 |
|
486 #define DW_OP_lit26 0x4a |
|
487 #define DW_OP_lit27 0x4b |
|
488 #define DW_OP_lit28 0x4c |
|
489 #define DW_OP_lit29 0x4d |
|
490 #define DW_OP_lit30 0x4e |
|
491 #define DW_OP_lit31 0x4f |
|
492 #define DW_OP_reg0 0x50 |
|
493 #define DW_OP_reg1 0x51 |
|
494 #define DW_OP_reg2 0x52 |
|
495 #define DW_OP_reg3 0x53 |
|
496 #define DW_OP_reg4 0x54 |
|
497 #define DW_OP_reg5 0x55 |
|
498 #define DW_OP_reg6 0x56 |
|
499 #define DW_OP_reg7 0x57 |
|
500 #define DW_OP_reg8 0x58 |
|
501 #define DW_OP_reg9 0x59 |
|
502 #define DW_OP_reg10 0x5a |
|
503 #define DW_OP_reg11 0x5b |
|
504 #define DW_OP_reg12 0x5c |
|
505 #define DW_OP_reg13 0x5d |
|
506 #define DW_OP_reg14 0x5e |
|
507 #define DW_OP_reg15 0x5f |
|
508 #define DW_OP_reg16 0x60 |
|
509 #define DW_OP_reg17 0x61 |
|
510 #define DW_OP_reg18 0x62 |
|
511 #define DW_OP_reg19 0x63 |
|
512 #define DW_OP_reg20 0x64 |
|
513 #define DW_OP_reg21 0x65 |
|
514 #define DW_OP_reg22 0x66 |
|
515 #define DW_OP_reg23 0x67 |
|
516 #define DW_OP_reg24 0x68 |
|
517 #define DW_OP_reg25 0x69 |
|
518 #define DW_OP_reg26 0x6a |
|
519 #define DW_OP_reg27 0x6b |
|
520 #define DW_OP_reg28 0x6c |
|
521 #define DW_OP_reg29 0x6d |
|
522 #define DW_OP_reg30 0x6e |
|
523 #define DW_OP_reg31 0x6f |
|
524 #define DW_OP_breg0 0x70 |
|
525 #define DW_OP_breg1 0x71 |
|
526 #define DW_OP_breg2 0x72 |
|
527 #define DW_OP_breg3 0x73 |
|
528 #define DW_OP_breg4 0x74 |
|
529 #define DW_OP_breg5 0x75 |
|
530 #define DW_OP_breg6 0x76 |
|
531 #define DW_OP_breg7 0x77 |
|
532 #define DW_OP_breg8 0x78 |
|
533 #define DW_OP_breg9 0x79 |
|
534 #define DW_OP_breg10 0x7a |
|
535 #define DW_OP_breg11 0x7b |
|
536 #define DW_OP_breg12 0x7c |
|
537 #define DW_OP_breg13 0x7d |
|
538 #define DW_OP_breg14 0x7e |
|
539 #define DW_OP_breg15 0x7f |
|
540 #define DW_OP_breg16 0x80 |
|
541 #define DW_OP_breg17 0x81 |
|
542 #define DW_OP_breg18 0x82 |
|
543 #define DW_OP_breg19 0x83 |
|
544 #define DW_OP_breg20 0x84 |
|
545 #define DW_OP_breg21 0x85 |
|
546 #define DW_OP_breg22 0x86 |
|
547 #define DW_OP_breg23 0x87 |
|
548 #define DW_OP_breg24 0x88 |
|
549 #define DW_OP_breg25 0x89 |
|
550 #define DW_OP_breg26 0x8a |
|
551 #define DW_OP_breg27 0x8b |
|
552 #define DW_OP_breg28 0x8c |
|
553 #define DW_OP_breg29 0x8d |
|
554 #define DW_OP_breg30 0x8e |
|
555 #define DW_OP_breg31 0x8f |
|
556 #define DW_OP_regx 0x90 |
|
557 #define DW_OP_fbreg 0x91 |
|
558 #define DW_OP_bregx 0x92 |
|
559 #define DW_OP_piece 0x93 |
|
560 #define DW_OP_deref_size 0x94 |
|
561 #define DW_OP_xderef_size 0x95 |
|
562 #define DW_OP_nop 0x96 |
|
563 #define DW_OP_push_object_address 0x97 /* DWARF3 */ |
|
564 #define DW_OP_call2 0x98 /* DWARF3 */ |
|
565 #define DW_OP_call4 0x99 /* DWARF3 */ |
|
566 #define DW_OP_call_ref 0x9a /* DWARF3 */ |
|
567 #define DW_OP_form_tls_address 0x9b /* DWARF3f */ |
|
568 #define DW_OP_call_frame_cfa 0x9c /* DWARF3f */ |
|
569 #define DW_OP_bit_piece 0x9d /* DWARF3f */ |
|
570 |
|
571 |
|
572 /* GNU extensions. */ |
|
573 #define DW_OP_GNU_push_tls_address 0xe0 /* GNU */ |
|
574 |
|
575 /* Follows extension so dwarfdump prints the most-likely-useful name. */ |
|
576 #define DW_OP_lo_user 0xe0 |
|
577 |
|
578 /* HP extensions. */ |
|
579 #define DW_OP_HP_unknown 0xe0 /* HP conflict: GNU */ |
|
580 #define DW_OP_HP_is_value 0xe1 /* HP */ |
|
581 #define DW_OP_HP_fltconst4 0xe2 /* HP */ |
|
582 #define DW_OP_HP_fltconst8 0xe3 /* HP */ |
|
583 #define DW_OP_HP_mod_range 0xe4 /* HP */ |
|
584 #define DW_OP_HP_unmod_range 0xe5 /* HP */ |
|
585 #define DW_OP_HP_tls 0xe6 /* HP */ |
|
586 |
|
587 #define DW_OP_hi_user 0xff |
|
588 |
|
589 #define DW_ATE_address 0x1 |
|
590 #define DW_ATE_boolean 0x2 |
|
591 #define DW_ATE_complex_float 0x3 |
|
592 #define DW_ATE_float 0x4 |
|
593 #define DW_ATE_signed 0x5 |
|
594 #define DW_ATE_signed_char 0x6 |
|
595 #define DW_ATE_unsigned 0x7 |
|
596 #define DW_ATE_unsigned_char 0x8 |
|
597 #define DW_ATE_imaginary_float 0x9 /* DWARF3 */ |
|
598 #define DW_ATE_packed_decimal 0xa /* DWARF3f */ |
|
599 #define DW_ATE_numeric_string 0xb /* DWARF3f */ |
|
600 #define DW_ATE_edited 0xc /* DWARF3f */ |
|
601 #define DW_ATE_signed_fixed 0xd /* DWARF3f */ |
|
602 #define DW_ATE_unsigned_fixed 0xe /* DWARF3f */ |
|
603 #define DW_ATE_decimal_float 0xf /* DWARF3f */ |
|
604 |
|
605 |
|
606 /* ALTIUM extensions. x80, x81 */ |
|
607 #define DW_ATE_ALTIUM_fract 0x80 /* ALTIUM __fract type */ |
|
608 |
|
609 /* Follows extension so dwarfdump prints the most-likely-useful name. */ |
|
610 #define DW_ATE_lo_user 0x80 |
|
611 |
|
612 /* Shown here to help dwarfdump build script. */ |
|
613 #define DW_ATE_ALTIUM_accum 0x81 /* ALTIUM __accum type */ |
|
614 |
|
615 /* HP Floating point extensions. */ |
|
616 #define DW_ATE_HP_float80 0x80 /* (80 bit). HP */ |
|
617 |
|
618 |
|
619 #define DW_ATE_HP_complex_float80 0x81 /* Complex (80 bit). HP */ |
|
620 #define DW_ATE_HP_float128 0x82 /* (128 bit). HP */ |
|
621 #define DW_ATE_HP_complex_float128 0x83 /* Complex (128 bit). HP */ |
|
622 #define DW_ATE_HP_floathpintel 0x84 /* (82 bit IA64). HP */ |
|
623 #define DW_ATE_HP_imaginary_float80 0x85 /* HP */ |
|
624 #define DW_ATE_HP_imaginary_float128 0x86 /* HP */ |
|
625 |
|
626 /* Sun extensions */ |
|
627 #define DW_ATE_SUN_interval_float 0x91 |
|
628 #define DW_ATE_SUN_imaginary_float 0x92 /* Obsolete: See DW_ATE_imaginary_float */ |
|
629 |
|
630 #define DW_ATE_hi_user 0xff |
|
631 |
|
632 |
|
633 /* Decimal Sign codes. */ |
|
634 #define DW_DS_unsigned 0x01 /* DWARF3f */ |
|
635 #define DW_DS_leading_overpunch 0x02 /* DWARF3f */ |
|
636 #define DW_DS_trailing_overpunch 0x03 /* DWARF3f */ |
|
637 #define DW_DS_leading_separate 0x04 /* DWARF3f */ |
|
638 |
|
639 #define DW_DS_trailing_separate 0x05 /* DWARF3f */ |
|
640 |
|
641 /* Endian code name. */ |
|
642 #define DW_END_default 0x00 /* DWARF3f */ |
|
643 #define DW_END_big 0x01 /* DWARF3f */ |
|
644 #define DW_END_little 0x02 /* DWARF3f */ |
|
645 |
|
646 #define DW_END_lo_user 0x40 /* DWARF3f */ |
|
647 #define DW_END_hi_user 0xff /* DWARF3f */ |
|
648 |
|
649 /* for use with DW_TAG_SUN_codeflags |
|
650 * If DW_TAG_SUN_codeflags is accepted as a dwarf standard, then |
|
651 * standard dwarf ATCF entries start at 0x01 |
|
652 */ |
|
653 #define DW_ATCF_lo_user 0x40 /* SUN */ |
|
654 #define DW_ATCF_SUN_mop_bitfield 0x41 /* SUN */ |
|
655 #define DW_ATCF_SUN_mop_spill 0x42 /* SUN */ |
|
656 #define DW_ATCF_SUN_mop_scopy 0x43 /* SUN */ |
|
657 #define DW_ATCF_SUN_func_start 0x44 /* SUN */ |
|
658 #define DW_ATCF_SUN_end_ctors 0x45 /* SUN */ |
|
659 #define DW_ATCF_SUN_branch_target 0x46 /* SUN */ |
|
660 #define DW_ATCF_SUN_mop_stack_probe 0x47 /* SUN */ |
|
661 #define DW_ATCF_SUN_func_epilog 0x48 /* SUN */ |
|
662 #define DW_ATCF_hi_user 0xff /* SUN */ |
|
663 |
|
664 /* Accessibility code name. */ |
|
665 #define DW_ACCESS_public 0x01 |
|
666 #define DW_ACCESS_protected 0x02 |
|
667 #define DW_ACCESS_private 0x03 |
|
668 |
|
669 /* Visibility code name. */ |
|
670 #define DW_VIS_local 0x01 |
|
671 #define DW_VIS_exported 0x02 |
|
672 #define DW_VIS_qualified 0x03 |
|
673 |
|
674 /* Virtuality code name. */ |
|
675 #define DW_VIRTUALITY_none 0x00 |
|
676 #define DW_VIRTUALITY_virtual 0x01 |
|
677 #define DW_VIRTUALITY_pure_virtual 0x02 |
|
678 |
|
679 #define DW_LANG_C89 0x0001 |
|
680 #define DW_LANG_C 0x0002 |
|
681 #define DW_LANG_Ada83 0x0003 |
|
682 #define DW_LANG_C_plus_plus 0x0004 |
|
683 #define DW_LANG_Cobol74 0x0005 |
|
684 #define DW_LANG_Cobol85 0x0006 |
|
685 #define DW_LANG_Fortran77 0x0007 |
|
686 #define DW_LANG_Fortran90 0x0008 |
|
687 #define DW_LANG_Pascal83 0x0009 |
|
688 #define DW_LANG_Modula2 0x000a |
|
689 #define DW_LANG_Java 0x000b /* DWARF3 */ |
|
690 #define DW_LANG_C99 0x000c /* DWARF3 */ |
|
691 #define DW_LANG_Ada95 0x000d /* DWARF3 */ |
|
692 #define DW_LANG_Fortran95 0x000e /* DWARF3 */ |
|
693 #define DW_LANG_PLI 0x000f /* DWARF3 */ |
|
694 #define DW_LANG_ObjC 0x0010 /* DWARF3f */ |
|
695 #define DW_LANG_ObjC_plus_plus 0x0011 /* DWARF3f */ |
|
696 #define DW_LANG_UPC 0x0012 /* DWARF3f */ |
|
697 #define DW_LANG_D 0x0013 /* DWARF3f */ |
|
698 #define DW_LANG_lo_user 0x8000 |
|
699 #define DW_LANG_Mips_Assembler 0x8001 /* MIPS */ |
|
700 #define DW_LANG_Upc 0x8765 /* UPC, use |
|
701 DW_LANG_UPC instead. */ |
|
702 /* ALTIUM extension */ |
|
703 #define DW_LANG_ALTIUM_Assembler 0x9101 /* ALTIUM */ |
|
704 |
|
705 /* Sun extensions */ |
|
706 #define DW_LANG_SUN_Assembler 0x9001 /* SUN */ |
|
707 |
|
708 #define DW_LANG_hi_user 0xffff |
|
709 |
|
710 /* Identifier case name. */ |
|
711 #define DW_ID_case_sensitive 0x00 |
|
712 #define DW_ID_up_case 0x01 |
|
713 #define DW_ID_down_case 0x02 |
|
714 #define DW_ID_case_insensitive 0x03 |
|
715 |
|
716 /* Calling Convention Name. */ |
|
717 #define DW_CC_normal 0x01 |
|
718 #define DW_CC_program 0x02 |
|
719 #define DW_CC_nocall 0x03 |
|
720 #define DW_CC_lo_user 0x40 |
|
721 |
|
722 /* ALTIUM extensions. */ |
|
723 /* Function is an interrupt handler, return address on system stack. */ |
|
724 #define DW_CC_ALTIUM_interrupt 0x65 /* ALTIUM*/ |
|
725 |
|
726 /* Near function model, return address on system stack. */ |
|
727 #define DW_CC_ALTIUM_near_system_stack 0x66 /*ALTIUM */ |
|
728 |
|
729 /* Near function model, return address on user stack. */ |
|
730 #define DW_CC_ALTIUM_near_user_stack 0x67 /* ALTIUM */ |
|
731 |
|
732 /* Huge function model, return address on user stack. */ |
|
733 #define DW_CC_ALTIUM_huge_user_stack 0x68 /* ALTIUM */ |
|
734 |
|
735 |
|
736 #define DW_CC_hi_user 0xff |
|
737 |
|
738 /* Inline Code Name. */ |
|
739 #define DW_INL_not_inlined 0x00 |
|
740 #define DW_INL_inlined 0x01 |
|
741 #define DW_INL_declared_not_inlined 0x02 |
|
742 #define DW_INL_declared_inlined 0x03 |
|
743 |
|
744 /* Ordering Name. */ |
|
745 #define DW_ORD_row_major 0x00 |
|
746 #define DW_ORD_col_major 0x01 |
|
747 |
|
748 /* Discriminant Descriptor Name. */ |
|
749 #define DW_DSC_label 0x00 |
|
750 #define DW_DSC_range 0x01 |
|
751 |
|
752 /* Line number standard opcode name. */ |
|
753 #define DW_LNS_copy 0x01 |
|
754 #define DW_LNS_advance_pc 0x02 |
|
755 #define DW_LNS_advance_line 0x03 |
|
756 #define DW_LNS_set_file 0x04 |
|
757 #define DW_LNS_set_column 0x05 |
|
758 #define DW_LNS_negate_stmt 0x06 |
|
759 #define DW_LNS_set_basic_block 0x07 |
|
760 #define DW_LNS_const_add_pc 0x08 |
|
761 #define DW_LNS_fixed_advance_pc 0x09 |
|
762 #define DW_LNS_set_prologue_end 0x0a /* DWARF3 */ |
|
763 #define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */ |
|
764 #define DW_LNS_set_isa 0x0c /* DWARF3 */ |
|
765 |
|
766 /* Line number extended opcode name. */ |
|
767 #define DW_LNE_end_sequence 0x01 |
|
768 #define DW_LNE_set_address 0x02 |
|
769 #define DW_LNE_define_file 0x03 |
|
770 |
|
771 /* HP extensions. */ |
|
772 #define DW_LNE_HP_negate_is_UV_update 0x11 /* 17 HP */ |
|
773 #define DW_LNE_HP_push_context 0x12 /* 18 HP */ |
|
774 #define DW_LNE_HP_pop_context 0x13 /* 19 HP */ |
|
775 #define DW_LNE_HP_set_file_line_column 0x14 /* 20 HP */ |
|
776 #define DW_LNE_HP_set_routine_name 0x15 /* 21 HP */ |
|
777 #define DW_LNE_HP_set_sequence 0x16 /* 22 HP */ |
|
778 #define DW_LNE_HP_negate_post_semantics 0x17 /* 23 HP */ |
|
779 #define DW_LNE_HP_negate_function_exit 0x18 /* 24 HP */ |
|
780 #define DW_LNE_HP_negate_front_end_logical 0x19 /* 25 HP */ |
|
781 #define DW_LNE_HP_define_proc 0x20 /* 32 HP */ |
|
782 |
|
783 #define DW_LNE_lo_user 0x80 /* DWARF3 */ |
|
784 #define DW_LNE_hi_user 0xff /* DWARF3 */ |
|
785 |
|
786 /* Macro information. */ |
|
787 #define DW_MACINFO_define 0x01 |
|
788 #define DW_MACINFO_undef 0x02 |
|
789 #define DW_MACINFO_start_file 0x03 |
|
790 #define DW_MACINFO_end_file 0x04 |
|
791 #define DW_MACINFO_vendor_ext 0xff |
|
792 |
|
793 #define DW_CFA_advance_loc 0x40 |
|
794 #define DW_CFA_offset 0x80 |
|
795 #define DW_CFA_restore 0xc0 |
|
796 #define DW_CFA_extended 0 |
|
797 |
|
798 #define DW_CFA_nop 0x00 |
|
799 #define DW_CFA_set_loc 0x01 |
|
800 #define DW_CFA_advance_loc1 0x02 |
|
801 #define DW_CFA_advance_loc2 0x03 |
|
802 #define DW_CFA_advance_loc4 0x04 |
|
803 #define DW_CFA_offset_extended 0x05 |
|
804 #define DW_CFA_restore_extended 0x06 |
|
805 #define DW_CFA_undefined 0x07 |
|
806 #define DW_CFA_same_value 0x08 |
|
807 #define DW_CFA_register 0x09 |
|
808 #define DW_CFA_remember_state 0x0a |
|
809 #define DW_CFA_restore_state 0x0b |
|
810 #define DW_CFA_def_cfa 0x0c |
|
811 #define DW_CFA_def_cfa_register 0x0d |
|
812 #define DW_CFA_def_cfa_offset 0x0e |
|
813 #define DW_CFA_def_cfa_expression 0x0f /* DWARF3 */ |
|
814 #define DW_CFA_expression 0x10 /* DWARF3 */ |
|
815 #define DW_CFA_cfa_offset_extended_sf 0x11 /* DWARF3 */ |
|
816 #define DW_CFA_def_cfa_sf 0x12 /* DWARF3 */ |
|
817 #define DW_CFA_def_cfa_offset_sf 0x13 /* DWARF3 */ |
|
818 #define DW_CFA_val_offset 0x14 /* DWARF3f */ |
|
819 #define DW_CFA_val_offset_sf 0x15 /* DWARF3f */ |
|
820 #define DW_CFA_val_expression 0x16 /* DWARF3f */ |
|
821 |
|
822 #define DW_CFA_lo_user 0x1c |
|
823 #define DW_CFA_low_user 0x1c /* Incorrect spelling, do not use. */ |
|
824 |
|
825 /* SGI/MIPS extension. */ |
|
826 #define DW_CFA_MIPS_advance_loc8 0x1d /* MIPS */ |
|
827 |
|
828 /* GNU extensions. */ |
|
829 #define DW_CFA_GNU_window_save 0x2d /* GNU */ |
|
830 #define DW_CFA_GNU_args_size 0x2e /* GNU */ |
|
831 #define DW_CFA_GNU_negative_offset_extended 0x2f /* GNU */ |
|
832 |
|
833 #define DW_CFA_high_user 0x3f |
|
834 |
|
835 /* GNU exception header encoding. See the Generic |
|
836 Elf Specification of the Linux Standard Base (LSB). |
|
837 http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/dwarfext.html |
|
838 The upper 4 bits indicate how the value is to be applied. |
|
839 The lower 4 bits indicate the format of the data. |
|
840 */ |
|
841 #define DW_EH_PE_absptr 0x00 /* GNU */ |
|
842 #define DW_EH_PE_uleb128 0x01 /* GNU */ |
|
843 #define DW_EH_PE_udata2 0x02 /* GNU */ |
|
844 #define DW_EH_PE_udata4 0x03 /* GNU */ |
|
845 #define DW_EH_PE_udata8 0x04 /* GNU */ |
|
846 #define DW_EH_PE_sleb128 0x09 /* GNU */ |
|
847 #define DW_EH_PE_sdata2 0x0A /* GNU */ |
|
848 #define DW_EH_PE_sdata4 0x0B /* GNU */ |
|
849 #define DW_EH_PE_sdata8 0x0C /* GNU */ |
|
850 |
|
851 #define DW_EH_PE_pcrel 0x10 /* GNU */ |
|
852 #define DW_EH_PE_textrel 0x20 /* GNU */ |
|
853 #define DW_EH_PE_datarel 0x30 /* GNU */ |
|
854 #define DW_EH_PE_funcrel 0x40 /* GNU */ |
|
855 #define DW_EH_PE_aligned 0x50 /* GNU */ |
|
856 |
|
857 #define DW_EH_PE_omit 0xff /* GNU. Means no value present. */ |
|
858 |
|
859 |
|
860 /* Mapping from machine registers and pseudo-regs into the .debug_frame table. |
|
861 DW_FRAME entries are machine specific. These describe |
|
862 MIPS/SGI R3000, R4K, R4400. |
|
863 And (simultaneously) a mapping from hardware register number to |
|
864 the number used in the table to identify that register. |
|
865 |
|
866 The CFA (Canonical Frame Address) described in DWARF is called |
|
867 the Virtual Frame Pointer on MIPS/SGI machines. |
|
868 |
|
869 Rule describes: |
|
870 */ |
|
871 /* Column used for CFA. Assumes reg 0 never appears as |
|
872 a register in DWARF info. */ |
|
873 #define DW_FRAME_CFA_COL 0 |
|
874 |
|
875 #define DW_FRAME_REG1 1 /* integer reg 1 */ |
|
876 #define DW_FRAME_REG2 2 /* integer reg 2 */ |
|
877 #define DW_FRAME_REG3 3 /* integer reg 3 */ |
|
878 #define DW_FRAME_REG4 4 /* integer reg 4 */ |
|
879 #define DW_FRAME_REG5 5 /* integer reg 5 */ |
|
880 #define DW_FRAME_REG6 6 /* integer reg 6 */ |
|
881 #define DW_FRAME_REG7 7 /* integer reg 7 */ |
|
882 #define DW_FRAME_REG8 8 /* integer reg 8 */ |
|
883 #define DW_FRAME_REG9 9 /* integer reg 9 */ |
|
884 #define DW_FRAME_REG10 10 /* integer reg 10 */ |
|
885 #define DW_FRAME_REG11 11 /* integer reg 11 */ |
|
886 #define DW_FRAME_REG12 12 /* integer reg 12 */ |
|
887 #define DW_FRAME_REG13 13 /* integer reg 13 */ |
|
888 #define DW_FRAME_REG14 14 /* integer reg 14 */ |
|
889 #define DW_FRAME_REG15 15 /* integer reg 15 */ |
|
890 #define DW_FRAME_REG16 16 /* integer reg 16 */ |
|
891 #define DW_FRAME_REG17 17 /* integer reg 17 */ |
|
892 #define DW_FRAME_REG18 18 /* integer reg 18 */ |
|
893 #define DW_FRAME_REG19 19 /* integer reg 19 */ |
|
894 #define DW_FRAME_REG20 20 /* integer reg 20 */ |
|
895 #define DW_FRAME_REG21 21 /* integer reg 21 */ |
|
896 #define DW_FRAME_REG22 22 /* integer reg 22 */ |
|
897 #define DW_FRAME_REG23 23 /* integer reg 23 */ |
|
898 #define DW_FRAME_REG24 24 /* integer reg 24 */ |
|
899 #define DW_FRAME_REG25 25 /* integer reg 25 */ |
|
900 #define DW_FRAME_REG26 26 /* integer reg 26 */ |
|
901 #define DW_FRAME_REG27 27 /* integer reg 27 */ |
|
902 #define DW_FRAME_REG28 28 /* integer reg 28 */ |
|
903 #define DW_FRAME_REG29 29 /* integer reg 29 */ |
|
904 #define DW_FRAME_REG30 30 /* integer reg 30 */ |
|
905 #define DW_FRAME_REG31 31 /* integer reg 31, aka ra */ |
|
906 |
|
907 /* MIPS1, 2 have only some of these 64-bit registers. |
|
908 ** MIPS1 save/restore takes 2 instructions per 64-bit reg, and |
|
909 ** in that case, the register is considered stored after the second |
|
910 ** swc1. |
|
911 */ |
|
912 #define DW_FRAME_FREG0 32 /* 64-bit floating point reg 0 */ |
|
913 #define DW_FRAME_FREG1 33 /* 64-bit floating point reg 1 */ |
|
914 #define DW_FRAME_FREG2 34 /* 64-bit floating point reg 2 */ |
|
915 #define DW_FRAME_FREG3 35 /* 64-bit floating point reg 3 */ |
|
916 #define DW_FRAME_FREG4 36 /* 64-bit floating point reg 4 */ |
|
917 #define DW_FRAME_FREG5 37 /* 64-bit floating point reg 5 */ |
|
918 #define DW_FRAME_FREG6 38 /* 64-bit floating point reg 6 */ |
|
919 #define DW_FRAME_FREG7 39 /* 64-bit floating point reg 7 */ |
|
920 #define DW_FRAME_FREG8 40 /* 64-bit floating point reg 8 */ |
|
921 #define DW_FRAME_FREG9 41 /* 64-bit floating point reg 9 */ |
|
922 #define DW_FRAME_FREG10 42 /* 64-bit floating point reg 10 */ |
|
923 #define DW_FRAME_FREG11 43 /* 64-bit floating point reg 11 */ |
|
924 #define DW_FRAME_FREG12 44 /* 64-bit floating point reg 12 */ |
|
925 #define DW_FRAME_FREG13 45 /* 64-bit floating point reg 13 */ |
|
926 #define DW_FRAME_FREG14 46 /* 64-bit floating point reg 14 */ |
|
927 #define DW_FRAME_FREG15 47 /* 64-bit floating point reg 15 */ |
|
928 #define DW_FRAME_FREG16 48 /* 64-bit floating point reg 16 */ |
|
929 #define DW_FRAME_FREG17 49 /* 64-bit floating point reg 17 */ |
|
930 #define DW_FRAME_FREG18 50 /* 64-bit floating point reg 18 */ |
|
931 #define DW_FRAME_FREG19 51 /* 64-bit floating point reg 19 */ |
|
932 #define DW_FRAME_FREG20 52 /* 64-bit floating point reg 20 */ |
|
933 #define DW_FRAME_FREG21 53 /* 64-bit floating point reg 21 */ |
|
934 #define DW_FRAME_FREG22 54 /* 64-bit floating point reg 22 */ |
|
935 #define DW_FRAME_FREG23 55 /* 64-bit floating point reg 23 */ |
|
936 #define DW_FRAME_FREG24 56 /* 64-bit floating point reg 24 */ |
|
937 #define DW_FRAME_FREG25 57 /* 64-bit floating point reg 25 */ |
|
938 #define DW_FRAME_FREG26 58 /* 64-bit floating point reg 26 */ |
|
939 #define DW_FRAME_FREG27 59 /* 64-bit floating point reg 27 */ |
|
940 #define DW_FRAME_FREG28 60 /* 64-bit floating point reg 28 */ |
|
941 #define DW_FRAME_FREG29 61 /* 64-bit floating point reg 29 */ |
|
942 #define DW_FRAME_FREG30 62 /* 64-bit floating point reg 30 */ |
|
943 #define DW_FRAME_FREG31 63 /* 64-bit floating point reg 31 */ |
|
944 |
|
945 /* ***IMPORTANT NOTE, TARGET DEPENDENCY **** |
|
946 The following 4 #defines are dependent on |
|
947 the target cpu(s) that you apply libdwarf to. |
|
948 Ensure that DW_FRAME_UNDEFINED_VAL and DW_FRAME_SAME_VAL |
|
949 do not conflict with the range [0-DW_FRAME_STATIC_LINK]. |
|
950 The value 63 works for MIPS cpus at least up to the R16000. |
|
951 |
|
952 For a cpu with more than 63 real registers |
|
953 DW_FRAME_HIGHEST_NORMAL_REGISTER |
|
954 must be increased for things to work properly! |
|
955 Also ensure that DW_FRAME_UNDEFINED_VAL DW_FRAME_SAME_VAL |
|
956 are not in the range [0-DW_FRAME_STATIC_LINK] |
|
957 |
|
958 Having DW_FRAME_HIGHEST_NORMAL_REGISTER be higher than |
|
959 is strictly needed is safe. |
|
960 |
|
961 */ |
|
962 |
|
963 #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER |
|
964 #define DW_FRAME_HIGHEST_NORMAL_REGISTER 63 |
|
965 #endif |
|
966 /* This is the number of columns in the Frame Table. |
|
967 This constant should |
|
968 be kept in sync with DW_REG_TABLE_SIZE defined in libdwarf.h |
|
969 It must also be large enough to be beyond the highest |
|
970 compiler-defined-register (meaning DW_FRAME_RA_COL DW_FRAME_STATIC_LINK |
|
971 in the MIPS/IRIX case */ |
|
972 #ifndef DW_FRAME_LAST_REG_NUM |
|
973 #define DW_FRAME_LAST_REG_NUM (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3) |
|
974 #endif |
|
975 |
|
976 |
|
977 /* Column recording ra (return addrress from a function call). |
|
978 This is common to many architectures, but as a 'simple register' |
|
979 is not necessarily adequate for all architectures. |
|
980 For MIPS/IRIX this register number is actually recorded on disk |
|
981 in the .debug_frame section. |
|
982 */ |
|
983 #define DW_FRAME_RA_COL (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1) |
|
984 |
|
985 /* Column recording static link applicable to up-level |
|
986 addressing, as in IRIX mp code, pascal, etc. |
|
987 This is common to many architectures but |
|
988 is not necessarily adequate for all architectures. |
|
989 For MIPS/IRIX this register number is actually recorded on disk |
|
990 in the .debug_frame section. |
|
991 */ |
|
992 #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2) |
|
993 |
|
994 |
|
995 |
|
996 /* |
|
997 DW_FRAME_UNDEFINED_VAL and DW_FRAME_SAME_VAL are |
|
998 never on disk, just generated by libdwarf. See libdwarf.h |
|
999 for their values. |
|
1000 */ |
|
1001 |
|
1002 |
|
1003 |
|
1004 #define DW_CHILDREN_no 0x00 |
|
1005 #define DW_CHILDREN_yes 0x01 |
|
1006 |
|
1007 #define DW_ADDR_none 0 |
|
1008 |
|
1009 #ifdef __cplusplus |
|
1010 } |
|
1011 #endif |
|
1012 #endif /* __DWARF_H */ |