rdwarf 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.travis.yml +4 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +28 -0
  6. data/README.md +39 -0
  7. data/Rakefile +8 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +7 -0
  10. data/ext/rdwarf/depend +5 -0
  11. data/ext/rdwarf/extconf.rb +29 -0
  12. data/ext/rdwarf/libdwarf/CHANGES +102 -0
  13. data/ext/rdwarf/libdwarf/CODINGSTYLE +71 -0
  14. data/ext/rdwarf/libdwarf/COPYING +28 -0
  15. data/ext/rdwarf/libdwarf/ChangeLog +619 -0
  16. data/ext/rdwarf/libdwarf/ChangeLog2006 +835 -0
  17. data/ext/rdwarf/libdwarf/ChangeLog2007 +217 -0
  18. data/ext/rdwarf/libdwarf/ChangeLog2008 +263 -0
  19. data/ext/rdwarf/libdwarf/ChangeLog2009 +348 -0
  20. data/ext/rdwarf/libdwarf/ChangeLog2010 +175 -0
  21. data/ext/rdwarf/libdwarf/ChangeLog2011 +297 -0
  22. data/ext/rdwarf/libdwarf/ChangeLog2012 +131 -0
  23. data/ext/rdwarf/libdwarf/ChangeLog2013 +238 -0
  24. data/ext/rdwarf/libdwarf/ChangeLog2014 +399 -0
  25. data/ext/rdwarf/libdwarf/LGPL.txt +504 -0
  26. data/ext/rdwarf/libdwarf/LIBDWARFCOPYRIGHT +40 -0
  27. data/ext/rdwarf/libdwarf/Makefile.in +220 -0
  28. data/ext/rdwarf/libdwarf/NEWS +535 -0
  29. data/ext/rdwarf/libdwarf/README +235 -0
  30. data/ext/rdwarf/libdwarf/checkexamples.c +1179 -0
  31. data/ext/rdwarf/libdwarf/cmplrs/dwarf_addr_finder.h +55 -0
  32. data/ext/rdwarf/libdwarf/common.c +62 -0
  33. data/ext/rdwarf/libdwarf/common.h +38 -0
  34. data/ext/rdwarf/libdwarf/config.h.in +146 -0
  35. data/ext/rdwarf/libdwarf/configure +5581 -0
  36. data/ext/rdwarf/libdwarf/configure.in +167 -0
  37. data/ext/rdwarf/libdwarf/dw-linetableheader.txt +39 -0
  38. data/ext/rdwarf/libdwarf/dwarf.h +1342 -0
  39. data/ext/rdwarf/libdwarf/dwarf_abbrev.c +291 -0
  40. data/ext/rdwarf/libdwarf/dwarf_abbrev.h +45 -0
  41. data/ext/rdwarf/libdwarf/dwarf_addr_finder.c +676 -0
  42. data/ext/rdwarf/libdwarf/dwarf_alloc.c +685 -0
  43. data/ext/rdwarf/libdwarf/dwarf_alloc.h +38 -0
  44. data/ext/rdwarf/libdwarf/dwarf_arange.c +595 -0
  45. data/ext/rdwarf/libdwarf/dwarf_arange.h +62 -0
  46. data/ext/rdwarf/libdwarf/dwarf_base_types.h +157 -0
  47. data/ext/rdwarf/libdwarf/dwarf_die_deliv.c +1802 -0
  48. data/ext/rdwarf/libdwarf/dwarf_die_deliv.h +46 -0
  49. data/ext/rdwarf/libdwarf/dwarf_elf_access.c +1348 -0
  50. data/ext/rdwarf/libdwarf/dwarf_elf_access.h +46 -0
  51. data/ext/rdwarf/libdwarf/dwarf_error.c +492 -0
  52. data/ext/rdwarf/libdwarf/dwarf_error.h +53 -0
  53. data/ext/rdwarf/libdwarf/dwarf_form.c +1302 -0
  54. data/ext/rdwarf/libdwarf/dwarf_frame.c +2454 -0
  55. data/ext/rdwarf/libdwarf/dwarf_frame.h +418 -0
  56. data/ext/rdwarf/libdwarf/dwarf_frame2.c +1533 -0
  57. data/ext/rdwarf/libdwarf/dwarf_frame3.c +282 -0
  58. data/ext/rdwarf/libdwarf/dwarf_funcs.c +123 -0
  59. data/ext/rdwarf/libdwarf/dwarf_funcs.h +33 -0
  60. data/ext/rdwarf/libdwarf/dwarf_gdbindex.c +520 -0
  61. data/ext/rdwarf/libdwarf/dwarf_gdbindex.h +97 -0
  62. data/ext/rdwarf/libdwarf/dwarf_global.c +612 -0
  63. data/ext/rdwarf/libdwarf/dwarf_global.h +117 -0
  64. data/ext/rdwarf/libdwarf/dwarf_harmless.c +228 -0
  65. data/ext/rdwarf/libdwarf/dwarf_harmless.h +31 -0
  66. data/ext/rdwarf/libdwarf/dwarf_incl.h +61 -0
  67. data/ext/rdwarf/libdwarf/dwarf_init_finish.c +1263 -0
  68. data/ext/rdwarf/libdwarf/dwarf_leb.c +159 -0
  69. data/ext/rdwarf/libdwarf/dwarf_line.c +1822 -0
  70. data/ext/rdwarf/libdwarf/dwarf_line.h +446 -0
  71. data/ext/rdwarf/libdwarf/dwarf_line2.c +98 -0
  72. data/ext/rdwarf/libdwarf/dwarf_line_table_reader_common.c +1583 -0
  73. data/ext/rdwarf/libdwarf/dwarf_loc.c +1525 -0
  74. data/ext/rdwarf/libdwarf/dwarf_loc.h +149 -0
  75. data/ext/rdwarf/libdwarf/dwarf_loc2.c +833 -0
  76. data/ext/rdwarf/libdwarf/dwarf_macro.c +479 -0
  77. data/ext/rdwarf/libdwarf/dwarf_macro.h +35 -0
  78. data/ext/rdwarf/libdwarf/dwarf_opaque.h +778 -0
  79. data/ext/rdwarf/libdwarf/dwarf_original_elf_init.c +219 -0
  80. data/ext/rdwarf/libdwarf/dwarf_print_lines.c +631 -0
  81. data/ext/rdwarf/libdwarf/dwarf_pubtypes.c +132 -0
  82. data/ext/rdwarf/libdwarf/dwarf_query.c +1594 -0
  83. data/ext/rdwarf/libdwarf/dwarf_ranges.c +194 -0
  84. data/ext/rdwarf/libdwarf/dwarf_reloc_arm.h +308 -0
  85. data/ext/rdwarf/libdwarf/dwarf_reloc_mips.h +117 -0
  86. data/ext/rdwarf/libdwarf/dwarf_reloc_ppc.h +242 -0
  87. data/ext/rdwarf/libdwarf/dwarf_reloc_ppc64.h +272 -0
  88. data/ext/rdwarf/libdwarf/dwarf_reloc_x86_64.h +127 -0
  89. data/ext/rdwarf/libdwarf/dwarf_sort_line.c +665 -0
  90. data/ext/rdwarf/libdwarf/dwarf_string.c +82 -0
  91. data/ext/rdwarf/libdwarf/dwarf_stubs.c +38 -0
  92. data/ext/rdwarf/libdwarf/dwarf_tied.c +423 -0
  93. data/ext/rdwarf/libdwarf/dwarf_tsearch.h +125 -0
  94. data/ext/rdwarf/libdwarf/dwarf_tsearchhash.c +675 -0
  95. data/ext/rdwarf/libdwarf/dwarf_types.c +121 -0
  96. data/ext/rdwarf/libdwarf/dwarf_types.h +32 -0
  97. data/ext/rdwarf/libdwarf/dwarf_util.c +913 -0
  98. data/ext/rdwarf/libdwarf/dwarf_util.h +324 -0
  99. data/ext/rdwarf/libdwarf/dwarf_vars.c +125 -0
  100. data/ext/rdwarf/libdwarf/dwarf_vars.h +29 -0
  101. data/ext/rdwarf/libdwarf/dwarf_weaks.c +123 -0
  102. data/ext/rdwarf/libdwarf/dwarf_weaks.h +29 -0
  103. data/ext/rdwarf/libdwarf/dwarf_xu_index.c +579 -0
  104. data/ext/rdwarf/libdwarf/dwarf_xu_index.h +68 -0
  105. data/ext/rdwarf/libdwarf/dwgetopt.c +181 -0
  106. data/ext/rdwarf/libdwarf/dwgetopt.h +51 -0
  107. data/ext/rdwarf/libdwarf/gennames.c +531 -0
  108. data/ext/rdwarf/libdwarf/install.sh +119 -0
  109. data/ext/rdwarf/libdwarf/libdwarf.h.in +3746 -0
  110. data/ext/rdwarf/libdwarf/libdwarf2.1.mm +9805 -0
  111. data/ext/rdwarf/libdwarf/libdwarf2.1.pdf +0 -0
  112. data/ext/rdwarf/libdwarf/libdwarf2p.1.mm +2807 -0
  113. data/ext/rdwarf/libdwarf/libdwarf2p.1.pdf +0 -0
  114. data/ext/rdwarf/libdwarf/libdwarfdefs.h +81 -0
  115. data/ext/rdwarf/libdwarf/malloc_check.c +327 -0
  116. data/ext/rdwarf/libdwarf/malloc_check.h +52 -0
  117. data/ext/rdwarf/libdwarf/mips_extensions.mm +1266 -0
  118. data/ext/rdwarf/libdwarf/mips_extensions.pdf +0 -0
  119. data/ext/rdwarf/libdwarf/pro_alloc.c +179 -0
  120. data/ext/rdwarf/libdwarf/pro_alloc.h +33 -0
  121. data/ext/rdwarf/libdwarf/pro_arange.c +310 -0
  122. data/ext/rdwarf/libdwarf/pro_arange.h +51 -0
  123. data/ext/rdwarf/libdwarf/pro_die.c +431 -0
  124. data/ext/rdwarf/libdwarf/pro_die.h +59 -0
  125. data/ext/rdwarf/libdwarf/pro_encode_nm.c +108 -0
  126. data/ext/rdwarf/libdwarf/pro_encode_nm.h +39 -0
  127. data/ext/rdwarf/libdwarf/pro_error.c +96 -0
  128. data/ext/rdwarf/libdwarf/pro_error.h +43 -0
  129. data/ext/rdwarf/libdwarf/pro_expr.c +575 -0
  130. data/ext/rdwarf/libdwarf/pro_expr.h +36 -0
  131. data/ext/rdwarf/libdwarf/pro_finish.c +45 -0
  132. data/ext/rdwarf/libdwarf/pro_forms.c +1271 -0
  133. data/ext/rdwarf/libdwarf/pro_frame.c +572 -0
  134. data/ext/rdwarf/libdwarf/pro_frame.h +120 -0
  135. data/ext/rdwarf/libdwarf/pro_funcs.c +50 -0
  136. data/ext/rdwarf/libdwarf/pro_incl.h +91 -0
  137. data/ext/rdwarf/libdwarf/pro_init.c +327 -0
  138. data/ext/rdwarf/libdwarf/pro_line.c +373 -0
  139. data/ext/rdwarf/libdwarf/pro_line.h +112 -0
  140. data/ext/rdwarf/libdwarf/pro_macinfo.c +457 -0
  141. data/ext/rdwarf/libdwarf/pro_macinfo.h +31 -0
  142. data/ext/rdwarf/libdwarf/pro_opaque.h +513 -0
  143. data/ext/rdwarf/libdwarf/pro_pubnames.c +60 -0
  144. data/ext/rdwarf/libdwarf/pro_reloc.c +253 -0
  145. data/ext/rdwarf/libdwarf/pro_reloc.h +38 -0
  146. data/ext/rdwarf/libdwarf/pro_reloc_stream.c +256 -0
  147. data/ext/rdwarf/libdwarf/pro_reloc_stream.h +52 -0
  148. data/ext/rdwarf/libdwarf/pro_reloc_symbolic.c +245 -0
  149. data/ext/rdwarf/libdwarf/pro_reloc_symbolic.h +45 -0
  150. data/ext/rdwarf/libdwarf/pro_section.c +2233 -0
  151. data/ext/rdwarf/libdwarf/pro_section.h +100 -0
  152. data/ext/rdwarf/libdwarf/pro_types.c +274 -0
  153. data/ext/rdwarf/libdwarf/pro_types.h +34 -0
  154. data/ext/rdwarf/libdwarf/pro_util.h +38 -0
  155. data/ext/rdwarf/libdwarf/pro_vars.c +52 -0
  156. data/ext/rdwarf/libdwarf/pro_weaks.c +51 -0
  157. data/ext/rdwarf/rdwarf.c +765 -0
  158. data/ext/rdwarf/rdwarf.h +52 -0
  159. data/ext/rdwarf/rdwarf_names_gen.rb +109 -0
  160. data/lib/rdwarf.rb +181 -0
  161. data/lib/rdwarf/version.rb +3 -0
  162. data/rdwarf.gemspec +30 -0
  163. metadata +251 -0
@@ -0,0 +1,167 @@
1
+ dnl Process this file with autoconf to produce a configure script.
2
+ dnlAC_INIT(libdwarf.h)
3
+ AC_INIT()
4
+ AC_CONFIG_HEADER(config.h)
5
+
6
+ AC_PROG_CC
7
+ AC_C_BIGENDIAN
8
+ AC_GCC_TRADITIONAL
9
+ AC_PROG_INSTALL
10
+ AC_CHECK_TOOL(RANLIB, ranlib, :)
11
+ AC_CHECK_TOOL(AR, ar)
12
+
13
+ dnl AC_ARFLAGS
14
+
15
+ AC_CHECK_HEADERS(alloca.h elf.h elfaccess.h libelf.h libelf/libelf.h sys/types.h sys/ia64/elf.h)
16
+
17
+ dnl The default libdwarf is the one with struct Elf
18
+ echo Assuming struct Elf for the default libdwarf.h
19
+ cp $srcdir/libdwarf.h.in libdwarf.h
20
+
21
+ AC_CHECK_LIB(elf,elf64_getehdr,
22
+ AC_DEFINE(HAVE_ELF64_GETEHDR,1,
23
+ [Define to 1 if the elf64_getehdr function is in libelf.a.]))
24
+ AC_CHECK_LIB(elf,elf64_getshdr,
25
+ AC_DEFINE(HAVE_ELF64_GETSHDR,1,
26
+ [Define to 1 if the elf64_getshdr function is in libelf.a.]))
27
+ AC_TRY_COMPILE( , __uint32_t p; p = 3; ,AC_DEFINE(HAVE___UINT32_T,1,
28
+ [See if __uint32_t is predefined in the compiler.]))
29
+ AC_TRY_COMPILE( , __uint64_t p; p = 3; ,AC_DEFINE(HAVE___UINT64_T,1,
30
+ [See if __uint64_t is predefined in the compiler.]))
31
+ AC_TRY_COMPILE([#include <sys/types.h>],[ __uint32_t p; p = 3;] ,
32
+ AC_DEFINE(HAVE___UINT32_T_IN_SYS_TYPES_H,1,
33
+ [Define 1 if sys/types.h defines __uint32_t.]))
34
+ AC_TRY_COMPILE([#include <sys/types.h>],[ __uint64_t p; p = 3;] ,
35
+ AC_DEFINE(HAVE___UINT64_T_IN_SYS_TYPES_H,1,
36
+ [Define 1 if sys/types.h defines __uint64_t.]))
37
+
38
+
39
+ dnl The following are for FreeBSD and others which
40
+ dnl use struct _Elf as the actual struct type.
41
+ AC_TRY_COMPILE([#include <libelf/libelf.h>
42
+ struct _Elf; typedef struct _Elf Elf; ],
43
+ [struct _Elf *a = 0; ],
44
+ [ sed 's/struct Elf/struct _Elf/g' <$srcdir/libdwarf.h.in >libdwarf.h ;
45
+ echo Found struct _Elf in libelf/libelf.h, using it in libdwarf.h ],
46
+ [echo libelf/libelf.h does not have struct _Elf])
47
+ AC_TRY_COMPILE([#include <libelf.h>
48
+ struct _Elf; typedef struct _Elf Elf; ],
49
+ [ struct _Elf *a = 0; ],
50
+ [ sed 's/struct Elf/struct _Elf/g' <$srcdir/libdwarf.h.in >libdwarf.h ;
51
+ echo Found struct _Elf in libelf.h, using it in libdwarf.h ],
52
+ [echo libelf.h does not have struct _Elf])
53
+
54
+
55
+ dnl checking for ia 64 types, which might be enums, using HAVE_R_IA_64_DIR32LSB
56
+ dnl to stand in for a small set.
57
+ AC_TRY_COMPILE([#include <elf.h>],[ int p; p = R_IA_64_DIR32LSB;] ,
58
+ AC_DEFINE(HAVE_R_IA_64_DIR32LSB,1,
59
+ [Define 1 if R_IA_64_DIR32LSB is defined (might be enum value).]))
60
+
61
+ AC_TRY_COMPILE([#include <libelf.h>],[ struct _Elf a; int i; i = 0; ] ,
62
+ AC_DEFINE(HAVE_STRUCT_UNDERSCORE_ELF,1,
63
+ [Define 1 if libelf.h defines struct _Elf ]))
64
+
65
+ AC_TRY_COMPILE([
66
+ #include <libelf.h>
67
+ ],[ int p; p = 0; ] ,
68
+ AC_DEFINE(HAVE_RAW_LIBELF_OK,1,
69
+ [Define 1 if plain libelf builds.]))
70
+ AC_TRY_COMPILE([
71
+ #define _GNU_SOURCE
72
+ #include <libelf.h>
73
+ ],[ off64_t p; p = 0;] ,
74
+ AC_DEFINE(HAVE_LIBELF_OFF64_OK,1,
75
+ [Define 1 if off64 is defined via libelf with GNU_SOURCE.]))
76
+
77
+ dnl the existence of sgidefs.h does not prove it's truly SGI, nor
78
+ dnl prove that __uint32_t or __uint64_t is defined therein.
79
+ AC_TRY_COMPILE([#include <sgidefs.h>],[ __uint32_t p; p = 27;] ,
80
+ AC_DEFINE(HAVE___UINT32_T_IN_SGIDEFS_H,1,
81
+ [Define 1 if __uint32_t is in sgidefs.h.]))
82
+ AC_TRY_COMPILE([#include <sgidefs.h>],[ __uint64_t p; p = 27;] ,
83
+ AC_DEFINE(HAVE___UINT64_T_IN_SGIDEFS_H,1,
84
+ [Define 1 if __uint64_t is in sgidefs.h.]))
85
+ AC_TRY_COMPILE([#include <sgidefs.h>],[ __uint64_t p; p = 27;] ,
86
+ AC_DEFINE(HAVE___UINT64_T_IN_SGIDEFS_H,1,
87
+ [Define 1 if is in sgidefs.h.]))
88
+ AC_TRY_COMPILE([#include <elf.h>],[ Elf64_Rela p; p.r_offset = 1; ],
89
+ AC_DEFINE(HAVE_ELF64_RELA,1,
90
+ [Define 1 if Elf64_Rela defined.]))
91
+ AC_TRY_COMPILE([#include <elf.h>],[ Elf64_Sym p; p.st_info = 1; ],
92
+ AC_DEFINE(HAVE_ELF64_SYM,1,
93
+ [Define 1 if Elf64_Sym defined.]))
94
+
95
+
96
+
97
+ dnl default-disabled shared
98
+ AC_SUBST(build_shared,[none])
99
+ AC_SUBST(dwfpic,[])
100
+ AC_ARG_ENABLE(shared,AC_HELP_STRING([--enable-shared],
101
+ [build shared library libdwarf.so]))
102
+ AS_IF([ test "x$enable_shared" = "xyes"], [
103
+ AC_SUBST(build_shared,[libdwarf.so])
104
+ AC_SUBST(dwfpic,[-fPIC])
105
+ ])
106
+
107
+ dnl default-enabled nonshared
108
+ AC_SUBST(build_nonshared,[libdwarf.a])
109
+ AC_ARG_ENABLE(nonshared,AC_HELP_STRING([--disable-nonshared],
110
+ [do not build archive library libdwarf.a]))
111
+ AS_IF([ test "x$enable_nonshared" = "xno"], [
112
+ dnl We could turn on shared here if not already on.
113
+ AC_SUBST(build_nonshared,[none])
114
+ ])
115
+
116
+ dnl This adds compiler option -Wall (gcc compiler warnings)
117
+ AC_SUBST(dwfwall,[])
118
+ AC_ARG_ENABLE(wall,AC_HELP_STRING([--enable-wall],
119
+ [Add -Wall (default is none)]),
120
+ [ AC_SUBST(dwfwall,[]) ]
121
+ [ AC_SUBST(dwfwall,["-Wall -O0"]) ])
122
+
123
+ dnl This changes the gennames option from -s to -t
124
+ AC_SUBST(dwarf_namestable,[-s])
125
+ AC_ARG_ENABLE(namestable,AC_HELP_STRING([--enable-namestable],
126
+ [Name string functions implemented as binary search (default is with C switch)]),
127
+ [ AC_SUBST(dwarf_namestable,[-s]) ]
128
+ [ AC_SUBST(dwarf_namestable,[-t]) ])
129
+
130
+ AC_ARG_ENABLE(nonstandardprintf,AS_HELP_STRING([--enable-nonstandardprintf],
131
+ [Use a special printf format for 64bit (default is NO)]),
132
+ [ AC_DEFINE([HAVE_NONSTANDARD_PRINTF_64_FORMAT],[1],
133
+ [Define 1 if need nonstandard printf format for 64bit] )],
134
+ [])
135
+
136
+ AC_ARG_ENABLE(windowspath,AC_HELP_STRING([--enable-windowspath],
137
+ [Detect certain Windows paths as full paths (default is NO)]),
138
+ [ AC_DEFINE([HAVE_WINDOWS_PATH],[1],
139
+ [Define 1 if want to allow Windows full path detection] )],
140
+ [])
141
+
142
+ AC_ARG_ENABLE(oldframecol,AC_HELP_STRING([--enable-oldframecol],
143
+ [Use HAVE_OLD_FRAME_CFA_COL (default is to use new DW_FRAME_CFA_COL3)]),
144
+ [ AC_DEFINE([HAVE_OLD_FRAME_CFA_COL],[1],
145
+ [Define 1 to default to old DW_FRAME_CFA_COL] )],
146
+ [])
147
+
148
+ AC_TRY_COMPILE([#include "stdafx.h"],[ int p; p = 27;] ,
149
+ AC_DEFINE(HAVE_STDAFX_H,1,
150
+ [Define 1 if we have the Windows specific header stdafx.h]))
151
+
152
+ dnl See pro_init(), HAVE_DWARF2_99_EXTENSION also generates
153
+ dnl 32bit offset dwarf unless DW_DLC_OFFSET_SIZE_64 flag passed to
154
+ dnl pro_init.
155
+ AC_ARG_ENABLE(dwarf_format_sgi_irix, AC_HELP_STRING([--enable-dwarf-format-sgi-irix],
156
+ [Force producer to SGI IRIX offset dwarf.]),
157
+ [AC_DEFINE(HAVE_SGI_IRIX_OFFSETS,1,
158
+ [Define 1 if want producer to build with IRIX offset sizes] )],
159
+
160
+ [AC_ARG_ENABLE(dwarf_format_strict_32bit, AC_HELP_STRING([--enable-dwarf-format-strict-32bit],
161
+ [Force producer to generate only DWARF format 32bit.]),
162
+ [AC_DEFINE(HAVE_STRICT_DWARF2_32BIT_OFFSET,1,
163
+ [Define 1 if want producer to build with only 32bit section offsets] )],
164
+ [AC_DEFINE(HAVE_DWARF2_99_EXTENSION,1,
165
+ [Define 1 if want to allow producer to build with 32/64bit section offsets per dwarf3] )])])
166
+
167
+ AC_OUTPUT(Makefile)
@@ -0,0 +1,39 @@
1
+ Line Table Header variations.
2
+ The experimental version has a distinct version
3
+ number of 0xf006 so cannot be confused with DWARF4 or 5.
4
+
5
+ DWversion
6
+ 2,3,4,5 meaning the DWARF standards
7
+ x meaning gcc's experimental two level line table.
8
+
9
+ 2345x 1. unit_length (4 or 12 bytes)
10
+ 2345x 2. version (2 bytes, for x is 0xF006)
11
+ 5 2.1 address_size
12
+ 5 2.2 segment_selector_size
13
+ 2345x 3. header_length (4 or 8 bytes)
14
+ 2345x 4. minimum_instruction_length (1 byte)
15
+ 45 x 5. maximum_operations_per_instruction (1 byte)
16
+ 2345x 6. default_is_stmt (1 byte)
17
+ 2345x 7. line_base (1 byte)
18
+ 2345x 8. line_range (1 byte)
19
+ 2345x 9. opcode_base (1 byte)
20
+ 2345x 10. standard_opcode_lengths (array of length opcode_base - 1)
21
+ 234 x 11. include directories (for x just one NUL byte(empty list))
22
+ 234 x 12. file_names (for x just one NUL byte(empty list))
23
+ x 13. fake_extended_op (5 bytes: 00 FF FF 7F 7F)
24
+ x 14. logicals_table_offset (4 or 8 bytes)
25
+ x 15. actuals_table_offset (4 or 8 bytes)
26
+ x5 16. directory_entry_format_count (1 byte)
27
+ x5 17. directory_entry_format (sequence of unsigned LEB128 pairs)
28
+ x5 18. directories_count (unsigned LEB128)
29
+ x5 19. directories (sequence of directory entries)
30
+ x5 20. file_name_entry_format_count (1 byte)
31
+ x5 21. file_name_entry_format (sequence of unsigned LEB128 pairs)
32
+ x5 22. file_names_count (unsigned LEB128)
33
+ x5 23. file_names (sequence of directory entries)
34
+ x 24. subprogram_entry_format_count (1 byte)
35
+ x 25. subprogram_entry_format (sequence of unsigned LEB128 pairs)
36
+ x 26. subprograms_count (unsigned LEB128)
37
+ x 27. subprograms (sequence of directory entries)
38
+
39
+
@@ -0,0 +1,1342 @@
1
+ /*
2
+ Copyright (C) 2000,2001,2003,2004,2005,2006 Silicon Graphics, Inc. All Rights Reserved.
3
+ Portions Copyright 2002-2010 Sun Microsystems, Inc. All rights reserved.
4
+ Portions Copyright 2007-2015 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
+ */
27
+
28
+
29
+ #ifndef __DWARF_H
30
+ #define __DWARF_H
31
+ #ifdef __cplusplus
32
+ extern "C" {
33
+ #endif
34
+
35
+ /*
36
+ dwarf.h DWARF debugging information values
37
+ $Revision: 1.41 $ $Date: 2006/04/17 00:09:56 $
38
+
39
+ The comment "DWARF3" appears where there are
40
+ new entries from DWARF3 as of 2004, "DWARF3f"
41
+ where there are new entries as of the November 2005
42
+ public review document and other comments apply
43
+ where extension entries appear.
44
+
45
+ Extensions part of DWARF4 are marked DWARF4.
46
+
47
+ A few extension names have omitted the 'vendor id'
48
+ (See chapter 7, "Vendor Extensibility"). Please
49
+ always use a 'vendor id' string in extension names.
50
+
51
+ Vendors should use a vendor string in names and
52
+ whereever possible avoid duplicating values used by
53
+ other vendor extensions
54
+ */
55
+
56
+
57
+ #define DW_TAG_array_type 0x01
58
+ #define DW_TAG_class_type 0x02
59
+ #define DW_TAG_entry_point 0x03
60
+ #define DW_TAG_enumeration_type 0x04
61
+ #define DW_TAG_formal_parameter 0x05
62
+ #define DW_TAG_imported_declaration 0x08
63
+ #define DW_TAG_label 0x0a
64
+ #define DW_TAG_lexical_block 0x0b
65
+ #define DW_TAG_member 0x0d
66
+ #define DW_TAG_pointer_type 0x0f
67
+ #define DW_TAG_reference_type 0x10
68
+ #define DW_TAG_compile_unit 0x11
69
+ #define DW_TAG_string_type 0x12
70
+ #define DW_TAG_structure_type 0x13
71
+ #define DW_TAG_subroutine_type 0x15
72
+ #define DW_TAG_typedef 0x16
73
+ #define DW_TAG_union_type 0x17
74
+ #define DW_TAG_unspecified_parameters 0x18
75
+ #define DW_TAG_variant 0x19
76
+ #define DW_TAG_common_block 0x1a
77
+ #define DW_TAG_common_inclusion 0x1b
78
+ #define DW_TAG_inheritance 0x1c
79
+ #define DW_TAG_inlined_subroutine 0x1d
80
+ #define DW_TAG_module 0x1e
81
+ #define DW_TAG_ptr_to_member_type 0x1f
82
+ #define DW_TAG_set_type 0x20
83
+ #define DW_TAG_subrange_type 0x21
84
+ #define DW_TAG_with_stmt 0x22
85
+ #define DW_TAG_access_declaration 0x23
86
+ #define DW_TAG_base_type 0x24
87
+ #define DW_TAG_catch_block 0x25
88
+ #define DW_TAG_const_type 0x26
89
+ #define DW_TAG_constant 0x27
90
+ #define DW_TAG_enumerator 0x28
91
+ #define DW_TAG_file_type 0x29
92
+ #define DW_TAG_friend 0x2a
93
+ #define DW_TAG_namelist 0x2b
94
+ /* Early releases of this header had the following
95
+ misspelled with a trailing 's' */
96
+ #define DW_TAG_namelist_item 0x2c /* DWARF3/2 spelling */
97
+ #define DW_TAG_namelist_items 0x2c /* SGI misspelling/typo */
98
+ #define DW_TAG_packed_type 0x2d
99
+ #define DW_TAG_subprogram 0x2e
100
+ /* The DWARF2 document had two spellings of the following
101
+ two TAGs, DWARF3 specifies the longer spelling. */
102
+ #define DW_TAG_template_type_parameter 0x2f /* DWARF3/2 spelling*/
103
+ #define DW_TAG_template_type_param 0x2f /* DWARF2 spelling*/
104
+ #define DW_TAG_template_value_parameter 0x30 /* DWARF3/2 spelling*/
105
+ #define DW_TAG_template_value_param 0x30 /* DWARF2 spelling*/
106
+ #define DW_TAG_thrown_type 0x31
107
+ #define DW_TAG_try_block 0x32
108
+ #define DW_TAG_variant_part 0x33
109
+ #define DW_TAG_variable 0x34
110
+ #define DW_TAG_volatile_type 0x35
111
+ #define DW_TAG_dwarf_procedure 0x36 /* DWARF3 */
112
+ #define DW_TAG_restrict_type 0x37 /* DWARF3 */
113
+ #define DW_TAG_interface_type 0x38 /* DWARF3 */
114
+ #define DW_TAG_namespace 0x39 /* DWARF3 */
115
+ #define DW_TAG_imported_module 0x3a /* DWARF3 */
116
+ #define DW_TAG_unspecified_type 0x3b /* DWARF3 */
117
+ #define DW_TAG_partial_unit 0x3c /* DWARF3 */
118
+ #define DW_TAG_imported_unit 0x3d /* DWARF3 */
119
+ /* Do not use DW_TAG_mutable_type */
120
+ #define DW_TAG_mutable_type 0x3e /* Withdrawn from DWARF3 by DWARF3f. */
121
+ #define DW_TAG_condition 0x3f /* DWARF3f */
122
+ #define DW_TAG_shared_type 0x40 /* DWARF3f */
123
+ #define DW_TAG_type_unit 0x41 /* DWARF4 */
124
+ #define DW_TAG_rvalue_reference_type 0x42 /* DWARF4 */
125
+ #define DW_TAG_template_alias 0x43 /* DWARF4 */
126
+ #define DW_TAG_coarray_type 0x44 /* DWARF5 */
127
+ #define DW_TAG_generic_subrange 0x45 /* DWARF5 */
128
+ #define DW_TAG_dynamic_type 0x46 /* DWARF5 */
129
+ #define DW_TAG_atomic_type 0x47 /* DWARF5 */
130
+ #define DW_TAG_call_site 0x48 /* DWARF5 */
131
+ #define DW_TAG_call_site_parameter 0x49 /* DWARF5 */
132
+ #define DW_TAG_lo_user 0x4080
133
+
134
+ #define DW_TAG_MIPS_loop 0x4081
135
+
136
+ /* HP extensions: ftp://ftp.hp.com/pub/lang/tools/WDB/wdb-4.0.tar.gz */
137
+ #define DW_TAG_HP_array_descriptor 0x4090 /* HP */
138
+
139
+ /* GNU extensions. The first 3 missing the GNU_. */
140
+ #define DW_TAG_format_label 0x4101 /* GNU. Fortran. */
141
+ #define DW_TAG_function_template 0x4102 /* GNU. For C++ */
142
+ #define DW_TAG_class_template 0x4103 /* GNU. For C++ */
143
+ #define DW_TAG_GNU_BINCL 0x4104 /* GNU */
144
+ #define DW_TAG_GNU_EINCL 0x4105 /* GNU */
145
+
146
+ /* GNU extension. http://gcc.gnu.org/wiki/TemplateParmsDwarf */
147
+ #define DW_TAG_GNU_template_template_parameter 0x4106 /* GNU */
148
+ #define DW_TAG_GNU_template_template_param 0x4106 /* GNU */
149
+ #define DW_TAG_GNU_template_parameter_pack 0x4107 /* GNU */
150
+ #define DW_TAG_GNU_formal_parameter_pack 0x4108 /* GNU */
151
+
152
+ #define DW_TAG_GNU_call_site 0x4109 /* GNU */
153
+ #define DW_TAG_GNU_call_site_parameter 0x410a /* GNU */
154
+
155
+ /* ALTIUM extensions */
156
+ /* DSP-C/Starcore __circ qualifier */
157
+ #define DW_TAG_ALTIUM_circ_type 0x5101 /* ALTIUM */
158
+ /* Starcore __mwa_circ qualifier */
159
+ #define DW_TAG_ALTIUM_mwa_circ_type 0x5102 /* ALTIUM */
160
+ /* Starcore __rev_carry qualifier */
161
+ #define DW_TAG_ALTIUM_rev_carry_type 0x5103 /* ALTIUM */
162
+ /* M16 __rom qualifier */
163
+ #define DW_TAG_ALTIUM_rom 0x5111 /* ALTIUM */
164
+
165
+ /* The following 3 are extensions to support UPC */
166
+ #define DW_TAG_upc_shared_type 0x8765 /* UPC */
167
+ #define DW_TAG_upc_strict_type 0x8766 /* UPC */
168
+ #define DW_TAG_upc_relaxed_type 0x8767 /* UPC */
169
+
170
+ /* PGI (STMicroelectronics) extensions. */
171
+ #define DW_TAG_PGI_kanji_type 0xa000 /* PGI */
172
+ #define DW_TAG_PGI_interface_block 0xa020 /* PGI */
173
+ /* The following are SUN extensions */
174
+ #define DW_TAG_SUN_function_template 0x4201 /* SUN */
175
+ #define DW_TAG_SUN_class_template 0x4202 /* SUN */
176
+ #define DW_TAG_SUN_struct_template 0x4203 /* SUN */
177
+ #define DW_TAG_SUN_union_template 0x4204 /* SUN */
178
+ #define DW_TAG_SUN_indirect_inheritance 0x4205 /* SUN */
179
+ #define DW_TAG_SUN_codeflags 0x4206 /* SUN */
180
+ #define DW_TAG_SUN_memop_info 0x4207 /* SUN */
181
+ #define DW_TAG_SUN_omp_child_func 0x4208 /* SUN */
182
+ #define DW_TAG_SUN_rtti_descriptor 0x4209 /* SUN */
183
+ #define DW_TAG_SUN_dtor_info 0x420a /* SUN */
184
+ #define DW_TAG_SUN_dtor 0x420b /* SUN */
185
+ #define DW_TAG_SUN_f90_interface 0x420c /* SUN */
186
+ #define DW_TAG_SUN_fortran_vax_structure 0x420d /* SUN */
187
+ #define DW_TAG_SUN_hi 0x42ff /* SUN */
188
+
189
+ #define DW_TAG_hi_user 0xffff
190
+
191
+ #define DW_children_no 0
192
+ #define DW_children_yes 1
193
+
194
+ #define DW_FORM_addr 0x01
195
+ #define DW_FORM_block2 0x03
196
+ #define DW_FORM_block4 0x04
197
+ #define DW_FORM_data2 0x05
198
+ #define DW_FORM_data4 0x06
199
+ #define DW_FORM_data8 0x07
200
+ #define DW_FORM_string 0x08
201
+ #define DW_FORM_block 0x09
202
+ #define DW_FORM_block1 0x0a
203
+ #define DW_FORM_data1 0x0b
204
+ #define DW_FORM_flag 0x0c
205
+ #define DW_FORM_sdata 0x0d
206
+ #define DW_FORM_strp 0x0e
207
+ #define DW_FORM_udata 0x0f
208
+ #define DW_FORM_ref_addr 0x10
209
+ #define DW_FORM_ref1 0x11
210
+ #define DW_FORM_ref2 0x12
211
+ #define DW_FORM_ref4 0x13
212
+ #define DW_FORM_ref8 0x14
213
+ #define DW_FORM_ref_udata 0x15
214
+ #define DW_FORM_indirect 0x16
215
+ #define DW_FORM_sec_offset 0x17 /* DWARF4 */
216
+ #define DW_FORM_exprloc 0x18 /* DWARF4 */
217
+ #define DW_FORM_flag_present 0x19 /* DWARF4 */
218
+ #define DW_FORM_strx 0x1a /* DWARF5 */
219
+ #define DW_FORM_addrx 0x1b /* DWARF5 */
220
+ #define DW_FORM_ref_sup 0x1c /* DWARF5 */
221
+ #define DW_FORM_strp_sup 0x1d /* DWARF5 */
222
+ #define DW_FORM_data16 0x1e /* DWARF5 */
223
+ #define DW_FORM_line_strp 0x1f /* DWARF5 */
224
+ #define DW_FORM_ref_sig8 0x20 /* DWARF4 */
225
+ #define DW_FORM_GNU_addr_index 0x1f01 /* GNU extension in debug_info.dwo.*/
226
+ #define DW_FORM_GNU_str_index 0x1f02 /* GNU extension, somewhat like DW_FORM_strp */
227
+ #define DW_FORM_GNU_ref_alt 0x1f20 /* GNU extension. Offset in .debug_info. */
228
+ #define DW_FORM_GNU_strp_alt 0x1f21 /* GNU extension. Offset in .debug_str of another object file. */
229
+
230
+ #define DW_AT_sibling 0x01
231
+ #define DW_AT_location 0x02
232
+ #define DW_AT_name 0x03
233
+ #define DW_AT_ordering 0x09
234
+ #define DW_AT_subscr_data 0x0a
235
+ #define DW_AT_byte_size 0x0b
236
+ #define DW_AT_bit_offset 0x0c
237
+ #define DW_AT_bit_size 0x0d
238
+ #define DW_AT_element_list 0x0f
239
+ #define DW_AT_stmt_list 0x10
240
+ #define DW_AT_low_pc 0x11
241
+ #define DW_AT_high_pc 0x12
242
+ #define DW_AT_language 0x13
243
+ #define DW_AT_member 0x14
244
+ #define DW_AT_discr 0x15
245
+ #define DW_AT_discr_value 0x16
246
+ #define DW_AT_visibility 0x17
247
+ #define DW_AT_import 0x18
248
+ #define DW_AT_string_length 0x19
249
+ #define DW_AT_common_reference 0x1a
250
+ #define DW_AT_comp_dir 0x1b
251
+ #define DW_AT_const_value 0x1c
252
+ #define DW_AT_containing_type 0x1d
253
+ #define DW_AT_default_value 0x1e
254
+ #define DW_AT_inline 0x20
255
+ #define DW_AT_is_optional 0x21
256
+ #define DW_AT_lower_bound 0x22
257
+ #define DW_AT_producer 0x25
258
+ #define DW_AT_prototyped 0x27
259
+ #define DW_AT_return_addr 0x2a
260
+ #define DW_AT_start_scope 0x2c
261
+ #define DW_AT_bit_stride 0x2e /* DWARF3 name */
262
+ #define DW_AT_stride_size 0x2e /* DWARF2 name */
263
+ #define DW_AT_upper_bound 0x2f
264
+ #define DW_AT_abstract_origin 0x31
265
+ #define DW_AT_accessibility 0x32
266
+ #define DW_AT_address_class 0x33
267
+ #define DW_AT_artificial 0x34
268
+ #define DW_AT_base_types 0x35
269
+ #define DW_AT_calling_convention 0x36
270
+ #define DW_AT_count 0x37
271
+ #define DW_AT_data_member_location 0x38
272
+ #define DW_AT_decl_column 0x39
273
+ #define DW_AT_decl_file 0x3a
274
+ #define DW_AT_decl_line 0x3b
275
+ #define DW_AT_declaration 0x3c
276
+ #define DW_AT_discr_list 0x3d
277
+ #define DW_AT_encoding 0x3e
278
+ #define DW_AT_external 0x3f
279
+ #define DW_AT_frame_base 0x40
280
+ #define DW_AT_friend 0x41
281
+ #define DW_AT_identifier_case 0x42
282
+ #define DW_AT_macro_info 0x43 /* DWARF2-DWARF4, not DWARF5 */
283
+ #define DW_AT_namelist_item 0x44
284
+ #define DW_AT_priority 0x45
285
+ #define DW_AT_segment 0x46
286
+ #define DW_AT_specification 0x47
287
+ #define DW_AT_static_link 0x48
288
+ #define DW_AT_type 0x49
289
+ #define DW_AT_use_location 0x4a
290
+ #define DW_AT_variable_parameter 0x4b
291
+ #define DW_AT_virtuality 0x4c
292
+ #define DW_AT_vtable_elem_location 0x4d
293
+ #define DW_AT_allocated 0x4e /* DWARF3 */
294
+ #define DW_AT_associated 0x4f /* DWARF3 */
295
+ #define DW_AT_data_location 0x50 /* DWARF3 */
296
+ #define DW_AT_byte_stride 0x51 /* DWARF3f */
297
+ #define DW_AT_stride 0x51 /* DWARF3 (do not use) */
298
+ #define DW_AT_entry_pc 0x52 /* DWARF3 */
299
+ #define DW_AT_use_UTF8 0x53 /* DWARF3 */
300
+ #define DW_AT_extension 0x54 /* DWARF3 */
301
+ #define DW_AT_ranges 0x55 /* DWARF3 */
302
+ #define DW_AT_trampoline 0x56 /* DWARF3 */
303
+ #define DW_AT_call_column 0x57 /* DWARF3 */
304
+ #define DW_AT_call_file 0x58 /* DWARF3 */
305
+ #define DW_AT_call_line 0x59 /* DWARF3 */
306
+ #define DW_AT_description 0x5a /* DWARF3 */
307
+ #define DW_AT_binary_scale 0x5b /* DWARF3f */
308
+ #define DW_AT_decimal_scale 0x5c /* DWARF3f */
309
+ #define DW_AT_small 0x5d /* DWARF3f */
310
+ #define DW_AT_decimal_sign 0x5e /* DWARF3f */
311
+ #define DW_AT_digit_count 0x5f /* DWARF3f */
312
+ #define DW_AT_picture_string 0x60 /* DWARF3f */
313
+ #define DW_AT_mutable 0x61 /* DWARF3f */
314
+ #define DW_AT_threads_scaled 0x62 /* DWARF3f */
315
+ #define DW_AT_explicit 0x63 /* DWARF3f */
316
+ #define DW_AT_object_pointer 0x64 /* DWARF3f */
317
+ #define DW_AT_endianity 0x65 /* DWARF3f */
318
+ #define DW_AT_elemental 0x66 /* DWARF3f */
319
+ #define DW_AT_pure 0x67 /* DWARF3f */
320
+ #define DW_AT_recursive 0x68 /* DWARF3f */
321
+ #define DW_AT_signature 0x69 /* DWARF4 */
322
+ #define DW_AT_main_subprogram 0x6a /* DWARF4 */
323
+ #define DW_AT_data_bit_offset 0x6b /* DWARF4 */
324
+ #define DW_AT_const_expr 0x6c /* DWARF4 */
325
+ #define DW_AT_enum_class 0x6d /* DWARF4 */
326
+ #define DW_AT_linkage_name 0x6e /* DWARF4 */
327
+ #define DW_AT_string_length_bit_size 0x6f /* DWARF5 */
328
+ #define DW_AT_string_length_byte_size 0x70 /* DWARF5 */
329
+ #define DW_AT_rank 0x71 /* DWARF5 */
330
+ #define DW_AT_str_offsets_base 0x72 /* DWARF5 */
331
+ #define DW_AT_addr_base 0x73 /* DWARF5 */
332
+ #define DW_AT_ranges_base 0x74 /* DWARF5 */
333
+ #define DW_AT_dwo_id 0x75 /* DWARF5 */
334
+ #define DW_AT_dwo_name 0x76 /* DWARF5 */
335
+ #define DW_AT_reference 0x77 /* DWARF5 */
336
+ #define DW_AT_rvalue_reference 0x78 /* DWARF5 */
337
+ #define DW_AT_macros 0x79 /* DWARF5 */
338
+ #define DW_AT_call_all_calls 0x7a /* DWARF5 */
339
+ #define DW_AT_call_all_source_calls 0x7b /* DWARF5 */
340
+ #define DW_AT_call_all_tail_calls 0x7c /* DWARF5 */
341
+ #define DW_AT_call_return_pc 0x7d /* DWARF5 */
342
+ #define DW_AT_call_value 0x7e /* DWARF5 */
343
+ #define DW_AT_call_origin 0x7f /* DWARF5 */
344
+ #define DW_AT_call_parameter 0x80 /* DWARF5 */
345
+ #define DW_AT_call_pc 0x81 /* DWARF5 */
346
+ #define DW_AT_call_tail_call 0x82 /* DWARF5 */
347
+ #define DW_AT_call_target 0x83 /* DWARF5 */
348
+ #define DW_AT_call_target_clobbered 0x84 /* DWARF5 */
349
+ #define DW_AT_call_data_location 0x85 /* DWARF5 */
350
+ #define DW_AT_call_data_value 0x86 /* DWARF5 */
351
+ #define DW_AT_noreturn 0x87 /* DWARF5 */
352
+ #define DW_AT_alignment 0x88 /* DWARF5 */
353
+ #define DW_AT_export_symbols 0x89 /* DWARF5 */
354
+
355
+ /* In extensions, we attempt to include the vendor extension
356
+ in the name even when the vendor leaves it out. */
357
+
358
+ /* HP extensions. */
359
+ #define DW_AT_HP_block_index 0x2000 /* HP */
360
+
361
+ /* Follows extension so dwarfdump prints the most-likely-useful name. */
362
+ #define DW_AT_lo_user 0x2000
363
+
364
+ #define DW_AT_MIPS_fde 0x2001 /* MIPS/SGI */
365
+ #define DW_AT_MIPS_loop_begin 0x2002 /* MIPS/SGI */
366
+ #define DW_AT_MIPS_tail_loop_begin 0x2003 /* MIPS/SGI */
367
+ #define DW_AT_MIPS_epilog_begin 0x2004 /* MIPS/SGI */
368
+ #define DW_AT_MIPS_loop_unroll_factor 0x2005 /* MIPS/SGI */
369
+ #define DW_AT_MIPS_software_pipeline_depth 0x2006 /* MIPS/SGI */
370
+ #define DW_AT_MIPS_linkage_name 0x2007 /* MIPS/SGI, GNU, and others.*/
371
+ #define DW_AT_MIPS_stride 0x2008 /* MIPS/SGI */
372
+ #define DW_AT_MIPS_abstract_name 0x2009 /* MIPS/SGI */
373
+ #define DW_AT_MIPS_clone_origin 0x200a /* MIPS/SGI */
374
+ #define DW_AT_MIPS_has_inlines 0x200b /* MIPS/SGI */
375
+ #define DW_AT_MIPS_stride_byte 0x200c /* MIPS/SGI */
376
+ #define DW_AT_MIPS_stride_elem 0x200d /* MIPS/SGI */
377
+ #define DW_AT_MIPS_ptr_dopetype 0x200e /* MIPS/SGI */
378
+ #define DW_AT_MIPS_allocatable_dopetype 0x200f /* MIPS/SGI */
379
+ #define DW_AT_MIPS_assumed_shape_dopetype 0x2010 /* MIPS/SGI */
380
+ #define DW_AT_MIPS_assumed_size 0x2011 /* MIPS/SGI */
381
+
382
+ /* HP extensions. */
383
+ #define DW_AT_HP_unmodifiable 0x2001 /* conflict: MIPS */
384
+ #define DW_AT_HP_actuals_stmt_list 0x2010 /* conflict: MIPS */
385
+ #define DW_AT_HP_proc_per_section 0x2011 /* conflict: MIPS */
386
+ #define DW_AT_HP_raw_data_ptr 0x2012 /* HP */
387
+ #define DW_AT_HP_pass_by_reference 0x2013 /* HP */
388
+ #define DW_AT_HP_opt_level 0x2014 /* HP */
389
+ #define DW_AT_HP_prof_version_id 0x2015 /* HP */
390
+ #define DW_AT_HP_opt_flags 0x2016 /* HP */
391
+ #define DW_AT_HP_cold_region_low_pc 0x2017 /* HP */
392
+ #define DW_AT_HP_cold_region_high_pc 0x2018 /* HP */
393
+ #define DW_AT_HP_all_variables_modifiable 0x2019 /* HP */
394
+ #define DW_AT_HP_linkage_name 0x201a /* HP */
395
+ #define DW_AT_HP_prof_flags 0x201b /* HP */
396
+
397
+ #define DW_AT_CPQ_discontig_ranges 0x2001 /* COMPAQ/HP */
398
+ #define DW_AT_CPQ_semantic_events 0x2002 /* COMPAQ/HP */
399
+ #define DW_AT_CPQ_split_lifetimes_var 0x2003 /* COMPAQ/HP */
400
+ #define DW_AT_CPQ_split_lifetimes_rtn 0x2004 /* COMPAQ/HP */
401
+ #define DW_AT_CPQ_prologue_length 0x2005 /* COMPAQ/HP */
402
+
403
+ #define DW_AT_INTEL_other_endian 0x2026 /* Intel, 1 if byte swapped. */
404
+
405
+ /* GNU extensions. */
406
+ #define DW_AT_sf_names 0x2101 /* GNU */
407
+ #define DW_AT_src_info 0x2102 /* GNU */
408
+ #define DW_AT_mac_info 0x2103 /* GNU */
409
+ #define DW_AT_src_coords 0x2104 /* GNU */
410
+ #define DW_AT_body_begin 0x2105 /* GNU */
411
+ #define DW_AT_body_end 0x2106 /* GNU */
412
+ #define DW_AT_GNU_vector 0x2107 /* GNU */
413
+
414
+ /* Thread safety, see http://gcc.gnu.org/wiki/ThreadSafetyAnnotation . */
415
+ /* The values here are from gcc-4.6.2 include/dwarf2.h. The
416
+ values are not given on the web page at all, nor on web pages
417
+ it refers to. */
418
+ #define DW_AT_GNU_guarded_by 0x2108 /* GNU */
419
+ #define DW_AT_GNU_pt_guarded_by 0x2109 /* GNU */
420
+ #define DW_AT_GNU_guarded 0x210a /* GNU */
421
+ #define DW_AT_GNU_pt_guarded 0x210b /* GNU */
422
+ #define DW_AT_GNU_locks_excluded 0x210c /* GNU */
423
+ #define DW_AT_GNU_exclusive_locks_required 0x210d /* GNU */
424
+ #define DW_AT_GNU_shared_locks_required 0x210e /* GNU */
425
+
426
+ /* See http://gcc.gnu.org/wiki/DwarfSeparateTypeInfo */
427
+ #define DW_AT_GNU_odr_signature 0x210f /* GNU */
428
+
429
+ /* See See http://gcc.gnu.org/wiki/TemplateParmsDwarf */
430
+ /* The value here is from gcc-4.6.2 include/dwarf2.h. The value is
431
+ not consistent with the web page as of December 2011. */
432
+ #define DW_AT_GNU_template_name 0x2110 /* GNU */
433
+ /* The GNU call site extension.
434
+ See http://www.dwarfstd.org/ShowIssue.php?issue=100909.2&type=open . */
435
+ #define DW_AT_GNU_call_site_value 0x2111 /* GNU */
436
+ #define DW_AT_GNU_call_site_data_value 0x2112 /* GNU */
437
+ #define DW_AT_GNU_call_site_target 0x2113 /* GNU */
438
+ #define DW_AT_GNU_call_site_target_clobbered 0x2114 /* GNU */
439
+ #define DW_AT_GNU_tail_call 0x2115 /* GNU */
440
+ #define DW_AT_GNU_all_tail_call_sites 0x2116 /* GNU */
441
+ #define DW_AT_GNU_all_call_sites 0x2117 /* GNU */
442
+ #define DW_AT_GNU_all_source_call_sites 0x2118 /* GNU */
443
+ /* Section offset to .debug_macro section. */
444
+ #define DW_AT_GNU_macros 0x2119 /* GNU */
445
+ /* The GNU DebugFission project: http://gcc.gnu.org/wiki/DebugFission */
446
+ #define DW_AT_GNU_dwo_name 0x2130 /* GNU */
447
+ #define DW_AT_GNU_dwo_id 0x2131 /* GNU */
448
+
449
+ #define DW_AT_GNU_ranges_base 0x2132 /* GNU */
450
+ #define DW_AT_GNU_addr_base 0x2133 /* GNU */
451
+ #define DW_AT_GNU_pubnames 0x2134 /* GNU */
452
+ #define DW_AT_GNU_pubtypes 0x2135 /* GNU */
453
+
454
+ /* To distinguish distinct basic blocks in a single source line. */
455
+ #define DW_AT_GNU_discriminator 0x2136 /* GNU */
456
+
457
+
458
+
459
+ /* ALTIUM extension: ALTIUM Compliant location lists (flag) */
460
+ #define DW_AT_ALTIUM_loclist 0x2300 /* ALTIUM */
461
+
462
+ /* Sun extensions */
463
+ #define DW_AT_SUN_template 0x2201 /* SUN */
464
+ #define DW_AT_VMS_rtnbeg_pd_address 0x2201 /* VMS */
465
+ #define DW_AT_SUN_alignment 0x2202 /* SUN */
466
+ #define DW_AT_SUN_vtable 0x2203 /* SUN */
467
+ #define DW_AT_SUN_count_guarantee 0x2204 /* SUN */
468
+ #define DW_AT_SUN_command_line 0x2205 /* SUN */
469
+ #define DW_AT_SUN_vbase 0x2206 /* SUN */
470
+ #define DW_AT_SUN_compile_options 0x2207 /* SUN */
471
+ #define DW_AT_SUN_language 0x2208 /* SUN */
472
+ #define DW_AT_SUN_browser_file 0x2209 /* SUN */
473
+ #define DW_AT_SUN_vtable_abi 0x2210 /* SUN */
474
+ #define DW_AT_SUN_func_offsets 0x2211 /* SUN */
475
+ #define DW_AT_SUN_cf_kind 0x2212 /* SUN */
476
+ #define DW_AT_SUN_vtable_index 0x2213 /* SUN */
477
+ #define DW_AT_SUN_omp_tpriv_addr 0x2214 /* SUN */
478
+ #define DW_AT_SUN_omp_child_func 0x2215 /* SUN */
479
+ #define DW_AT_SUN_func_offset 0x2216 /* SUN */
480
+ #define DW_AT_SUN_memop_type_ref 0x2217 /* SUN */
481
+ #define DW_AT_SUN_profile_id 0x2218 /* SUN */
482
+ #define DW_AT_SUN_memop_signature 0x2219 /* SUN */
483
+ #define DW_AT_SUN_obj_dir 0x2220 /* SUN */
484
+ #define DW_AT_SUN_obj_file 0x2221 /* SUN */
485
+ #define DW_AT_SUN_original_name 0x2222 /* SUN */
486
+ #define DW_AT_SUN_hwcprof_signature 0x2223 /* SUN */
487
+ #define DW_AT_SUN_amd64_parmdump 0x2224 /* SUN */
488
+ #define DW_AT_SUN_part_link_name 0x2225 /* SUN */
489
+ #define DW_AT_SUN_link_name 0x2226 /* SUN */
490
+ #define DW_AT_SUN_pass_with_const 0x2227 /* SUN */
491
+ #define DW_AT_SUN_return_with_const 0x2228 /* SUN */
492
+ #define DW_AT_SUN_import_by_name 0x2229 /* SUN */
493
+ #define DW_AT_SUN_f90_pointer 0x222a /* SUN */
494
+ #define DW_AT_SUN_pass_by_ref 0x222b /* SUN */
495
+ #define DW_AT_SUN_f90_allocatable 0x222c /* SUN */
496
+ #define DW_AT_SUN_f90_assumed_shape_array 0x222d /* SUN */
497
+ #define DW_AT_SUN_c_vla 0x222e /* SUN */
498
+ #define DW_AT_SUN_return_value_ptr 0x2230 /* SUN */
499
+ #define DW_AT_SUN_dtor_start 0x2231 /* SUN */
500
+ #define DW_AT_SUN_dtor_length 0x2232 /* SUN */
501
+ #define DW_AT_SUN_dtor_state_initial 0x2233 /* SUN */
502
+ #define DW_AT_SUN_dtor_state_final 0x2234 /* SUN */
503
+ #define DW_AT_SUN_dtor_state_deltas 0x2235 /* SUN */
504
+ #define DW_AT_SUN_import_by_lname 0x2236 /* SUN */
505
+ #define DW_AT_SUN_f90_use_only 0x2237 /* SUN */
506
+ #define DW_AT_SUN_namelist_spec 0x2238 /* SUN */
507
+ #define DW_AT_SUN_is_omp_child_func 0x2239 /* SUN */
508
+ #define DW_AT_SUN_fortran_main_alias 0x223a /* SUN */
509
+ #define DW_AT_SUN_fortran_based 0x223b /* SUN */
510
+
511
+ /* See http://gcc.gnu.org/wiki/DW_AT_GNAT_descriptive_type . */
512
+ #define DW_AT_use_GNAT_descriptive_type 0x2301 /* GNAT */
513
+ #define DW_AT_GNAT_descriptive_type 0x2302 /* GNAT */
514
+
515
+ /* UPC extension */
516
+ #define DW_AT_upc_threads_scaled 0x3210 /* UPC */
517
+
518
+ /* PGI (STMicroelectronics) extensions. */
519
+ #define DW_AT_PGI_lbase 0x3a00 /* PGI. Block, constant, reference. This attribute is an ASTPLAB extension used to describe the array local base. */
520
+ #define DW_AT_PGI_soffset 0x3a01 /* PGI. Block, constant, reference. ASTPLAB adds this attribute to describe the section offset, or the offset to the first element in the dimension. */
521
+ #define DW_AT_PGI_lstride 0x3a02 /* PGI. Block, constant, reference. ASTPLAB adds this attribute to describe the linear stride or the distance between elements in the dimension. */
522
+
523
+ /* There are two groups of Apple extensions here, it is
524
+ unclear what exactly is correct. */
525
+ #define DW_AT_APPLE_optimized 0x3fe1 /* Apple */
526
+ #define DW_AT_APPLE_flags 0x3fe2 /* Apple */
527
+ #define DW_AT_APPLE_isa 0x3fe3 /* Apple */
528
+ #define DW_AT_APPLE_block 0x3fe4 /* Apple */
529
+ #define DW_AT_APPLE_major_runtime_vers 0x3fe5 /* Apple */
530
+ #define DW_AT_APPLE_runtime_class 0x3fe6 /* Apple */
531
+ #define DW_AT_APPLE_omit_frame_ptr 0x3fe7 /* Apple */
532
+
533
+ /* Apple Extensions for closures */
534
+ #define DW_AT_APPLE_closure 0x3fe4 /* Apple */
535
+ /* Apple Extensions for Objective-C runtime info */
536
+ #define DW_AT_APPLE_major_runtime_vers 0x3fe5 /* Apple */
537
+ #define DW_AT_APPLE_runtime_class 0x3fe6 /* Apple */
538
+
539
+
540
+ #define DW_AT_hi_user 0x3fff
541
+
542
+ #define DW_OP_addr 0x03
543
+ #define DW_OP_deref 0x06
544
+ #define DW_OP_const1u 0x08
545
+ #define DW_OP_const1s 0x09
546
+ #define DW_OP_const2u 0x0a
547
+ #define DW_OP_const2s 0x0b
548
+ #define DW_OP_const4u 0x0c
549
+ #define DW_OP_const4s 0x0d
550
+ #define DW_OP_const8u 0x0e
551
+ #define DW_OP_const8s 0x0f
552
+ #define DW_OP_constu 0x10
553
+ #define DW_OP_consts 0x11
554
+ #define DW_OP_dup 0x12
555
+ #define DW_OP_drop 0x13
556
+ #define DW_OP_over 0x14
557
+ #define DW_OP_pick 0x15
558
+ #define DW_OP_swap 0x16
559
+ #define DW_OP_rot 0x17
560
+ #define DW_OP_xderef 0x18
561
+ #define DW_OP_abs 0x19
562
+ #define DW_OP_and 0x1a
563
+ #define DW_OP_div 0x1b
564
+ #define DW_OP_minus 0x1c
565
+ #define DW_OP_mod 0x1d
566
+ #define DW_OP_mul 0x1e
567
+ #define DW_OP_neg 0x1f
568
+ #define DW_OP_not 0x20
569
+ #define DW_OP_or 0x21
570
+ #define DW_OP_plus 0x22
571
+ #define DW_OP_plus_uconst 0x23
572
+ #define DW_OP_shl 0x24
573
+ #define DW_OP_shr 0x25
574
+ #define DW_OP_shra 0x26
575
+ #define DW_OP_xor 0x27
576
+ #define DW_OP_bra 0x28
577
+ #define DW_OP_eq 0x29
578
+ #define DW_OP_ge 0x2a
579
+ #define DW_OP_gt 0x2b
580
+ #define DW_OP_le 0x2c
581
+ #define DW_OP_lt 0x2d
582
+ #define DW_OP_ne 0x2e
583
+ #define DW_OP_skip 0x2f
584
+ #define DW_OP_lit0 0x30
585
+ #define DW_OP_lit1 0x31
586
+ #define DW_OP_lit2 0x32
587
+ #define DW_OP_lit3 0x33
588
+ #define DW_OP_lit4 0x34
589
+ #define DW_OP_lit5 0x35
590
+ #define DW_OP_lit6 0x36
591
+ #define DW_OP_lit7 0x37
592
+ #define DW_OP_lit8 0x38
593
+ #define DW_OP_lit9 0x39
594
+ #define DW_OP_lit10 0x3a
595
+ #define DW_OP_lit11 0x3b
596
+ #define DW_OP_lit12 0x3c
597
+ #define DW_OP_lit13 0x3d
598
+ #define DW_OP_lit14 0x3e
599
+ #define DW_OP_lit15 0x3f
600
+ #define DW_OP_lit16 0x40
601
+ #define DW_OP_lit17 0x41
602
+ #define DW_OP_lit18 0x42
603
+ #define DW_OP_lit19 0x43
604
+ #define DW_OP_lit20 0x44
605
+ #define DW_OP_lit21 0x45
606
+ #define DW_OP_lit22 0x46
607
+ #define DW_OP_lit23 0x47
608
+ #define DW_OP_lit24 0x48
609
+ #define DW_OP_lit25 0x49
610
+ #define DW_OP_lit26 0x4a
611
+ #define DW_OP_lit27 0x4b
612
+ #define DW_OP_lit28 0x4c
613
+ #define DW_OP_lit29 0x4d
614
+ #define DW_OP_lit30 0x4e
615
+ #define DW_OP_lit31 0x4f
616
+ #define DW_OP_reg0 0x50
617
+ #define DW_OP_reg1 0x51
618
+ #define DW_OP_reg2 0x52
619
+ #define DW_OP_reg3 0x53
620
+ #define DW_OP_reg4 0x54
621
+ #define DW_OP_reg5 0x55
622
+ #define DW_OP_reg6 0x56
623
+ #define DW_OP_reg7 0x57
624
+ #define DW_OP_reg8 0x58
625
+ #define DW_OP_reg9 0x59
626
+ #define DW_OP_reg10 0x5a
627
+ #define DW_OP_reg11 0x5b
628
+ #define DW_OP_reg12 0x5c
629
+ #define DW_OP_reg13 0x5d
630
+ #define DW_OP_reg14 0x5e
631
+ #define DW_OP_reg15 0x5f
632
+ #define DW_OP_reg16 0x60
633
+ #define DW_OP_reg17 0x61
634
+ #define DW_OP_reg18 0x62
635
+ #define DW_OP_reg19 0x63
636
+ #define DW_OP_reg20 0x64
637
+ #define DW_OP_reg21 0x65
638
+ #define DW_OP_reg22 0x66
639
+ #define DW_OP_reg23 0x67
640
+ #define DW_OP_reg24 0x68
641
+ #define DW_OP_reg25 0x69
642
+ #define DW_OP_reg26 0x6a
643
+ #define DW_OP_reg27 0x6b
644
+ #define DW_OP_reg28 0x6c
645
+ #define DW_OP_reg29 0x6d
646
+ #define DW_OP_reg30 0x6e
647
+ #define DW_OP_reg31 0x6f
648
+ #define DW_OP_breg0 0x70
649
+ #define DW_OP_breg1 0x71
650
+ #define DW_OP_breg2 0x72
651
+ #define DW_OP_breg3 0x73
652
+ #define DW_OP_breg4 0x74
653
+ #define DW_OP_breg5 0x75
654
+ #define DW_OP_breg6 0x76
655
+ #define DW_OP_breg7 0x77
656
+ #define DW_OP_breg8 0x78
657
+ #define DW_OP_breg9 0x79
658
+ #define DW_OP_breg10 0x7a
659
+ #define DW_OP_breg11 0x7b
660
+ #define DW_OP_breg12 0x7c
661
+ #define DW_OP_breg13 0x7d
662
+ #define DW_OP_breg14 0x7e
663
+ #define DW_OP_breg15 0x7f
664
+ #define DW_OP_breg16 0x80
665
+ #define DW_OP_breg17 0x81
666
+ #define DW_OP_breg18 0x82
667
+ #define DW_OP_breg19 0x83
668
+ #define DW_OP_breg20 0x84
669
+ #define DW_OP_breg21 0x85
670
+ #define DW_OP_breg22 0x86
671
+ #define DW_OP_breg23 0x87
672
+ #define DW_OP_breg24 0x88
673
+ #define DW_OP_breg25 0x89
674
+ #define DW_OP_breg26 0x8a
675
+ #define DW_OP_breg27 0x8b
676
+ #define DW_OP_breg28 0x8c
677
+ #define DW_OP_breg29 0x8d
678
+ #define DW_OP_breg30 0x8e
679
+ #define DW_OP_breg31 0x8f
680
+ #define DW_OP_regx 0x90
681
+ #define DW_OP_fbreg 0x91
682
+ #define DW_OP_bregx 0x92
683
+ #define DW_OP_piece 0x93
684
+ #define DW_OP_deref_size 0x94
685
+ #define DW_OP_xderef_size 0x95
686
+ #define DW_OP_nop 0x96
687
+ #define DW_OP_push_object_address 0x97 /* DWARF3 */
688
+ #define DW_OP_call2 0x98 /* DWARF3 */
689
+ #define DW_OP_call4 0x99 /* DWARF3 */
690
+ #define DW_OP_call_ref 0x9a /* DWARF3 */
691
+ #define DW_OP_form_tls_address 0x9b /* DWARF3f */
692
+ #define DW_OP_call_frame_cfa 0x9c /* DWARF3f */
693
+ #define DW_OP_bit_piece 0x9d /* DWARF3f */
694
+ #define DW_OP_implicit_value 0x9e /* DWARF4 */
695
+ #define DW_OP_stack_value 0x9f /* DWARF4 */
696
+ #define DW_OP_implicit_pointer 0xa0 /* DWARF5 */
697
+ #define DW_OP_addrx 0xa1 /* DWARF5 */
698
+ #define DW_OP_constx 0xa2 /* DWARF5 */
699
+ #define DW_OP_entry_value 0xa3 /* DWARF5 */
700
+ #define DW_OP_const_type 0xa4 /* DWARF5 */
701
+ #define DW_OP_regval_type 0xa5 /* DWARF5 */
702
+ #define DW_OP_deref_type 0xa6 /* DWARF5 */
703
+ #define DW_OP_xderef_type 0xa7 /* DWARF5 */
704
+ #define DW_OP_convert 0xa8 /* DWARF5 */
705
+ #define DW_OP_reinterpret 0xa9 /* DWARF5 */
706
+
707
+
708
+ /* GNU extensions. */
709
+ #define DW_OP_GNU_push_tls_address 0xe0 /* GNU */
710
+
711
+ /* Follows extension so dwarfdump prints the most-likely-useful name. */
712
+ #define DW_OP_lo_user 0xe0
713
+
714
+
715
+ #define DW_OP_GNU_uninit 0xf0 /* GNU */
716
+ #define DW_OP_GNU_encoded_addr 0xf1 /* GNU */
717
+ #define DW_OP_GNU_implicit_pointer 0xf2 /* GNU */
718
+ #define DW_OP_GNU_entry_value 0xf3 /* GNU */
719
+ #define DW_OP_GNU_const_type 0xf4 /* GNU */
720
+ #define DW_OP_GNU_regval_type 0xf5 /* GNU */
721
+ #define DW_OP_GNU_deref_type 0xf6 /* GNU */
722
+ #define DW_OP_GNU_convert 0xf7 /* GNU */
723
+ #define DW_OP_GNU_reinterpret 0xf9 /* GNU */
724
+ #define DW_OP_GNU_parameter_ref 0xfa /* GNU */
725
+ #define DW_OP_GNU_addr_index 0xfb /* GNU DebugFission */
726
+ #define DW_OP_GNU_const_index 0xfc /* GNU DebugFission */
727
+
728
+ /* HP extensions. */
729
+ #define DW_OP_HP_unknown 0xe0 /* HP conflict: GNU */
730
+ #define DW_OP_HP_is_value 0xe1 /* HP */
731
+ #define DW_OP_HP_fltconst4 0xe2 /* HP */
732
+ #define DW_OP_HP_fltconst8 0xe3 /* HP */
733
+ #define DW_OP_HP_mod_range 0xe4 /* HP */
734
+ #define DW_OP_HP_unmod_range 0xe5 /* HP */
735
+ #define DW_OP_HP_tls 0xe6 /* HP */
736
+
737
+ #define DW_OP_INTEL_bit_piece 0xe8 /* Intel: made obsolete by DW_OP_bit_piece above. */
738
+
739
+ /* Apple extension. */
740
+ #define DW_OP_APPLE_uninit 0xf0 /* Apple */
741
+ #define DW_OP_PGI_omp_thread_num 0xf8 /* PGI (STMicroelectronics) */
742
+
743
+ #define DW_OP_hi_user 0xff
744
+
745
+ #define DW_ATE_address 0x01
746
+ #define DW_ATE_boolean 0x02
747
+ #define DW_ATE_complex_float 0x03
748
+ #define DW_ATE_float 0x04
749
+ #define DW_ATE_signed 0x05
750
+ #define DW_ATE_signed_char 0x06
751
+ #define DW_ATE_unsigned 0x07
752
+ #define DW_ATE_unsigned_char 0x08
753
+ #define DW_ATE_imaginary_float 0x09 /* DWARF3 */
754
+ #define DW_ATE_packed_decimal 0x0a /* DWARF3f */
755
+ #define DW_ATE_numeric_string 0x0b /* DWARF3f */
756
+ #define DW_ATE_edited 0x0c /* DWARF3f */
757
+ #define DW_ATE_signed_fixed 0x0d /* DWARF3f */
758
+ #define DW_ATE_unsigned_fixed 0x0e /* DWARF3f */
759
+ #define DW_ATE_decimal_float 0x0f /* DWARF3f */
760
+ #define DW_ATE_UTF 0x10 /* DWARF4 */
761
+ #define DW_ATE_UCS 0x11 /* DWARF5 */
762
+ #define DW_ATE_ASCII 0x12 /* DWARF5 */
763
+
764
+
765
+ /* ALTIUM extensions. x80, x81 */
766
+ #define DW_ATE_ALTIUM_fract 0x80 /* ALTIUM __fract type */
767
+
768
+ /* Follows extension so dwarfdump prints the most-likely-useful name. */
769
+ #define DW_ATE_lo_user 0x80
770
+
771
+ /* Shown here to help dwarfdump build script. */
772
+ #define DW_ATE_ALTIUM_accum 0x81 /* ALTIUM __accum type */
773
+
774
+ /* HP Floating point extensions. */
775
+ #define DW_ATE_HP_float80 0x80 /* (80 bit). HP */
776
+
777
+
778
+ #define DW_ATE_HP_complex_float80 0x81 /* Complex (80 bit). HP */
779
+ #define DW_ATE_HP_float128 0x82 /* (128 bit). HP */
780
+ #define DW_ATE_HP_complex_float128 0x83 /* Complex (128 bit). HP */
781
+ #define DW_ATE_HP_floathpintel 0x84 /* (82 bit IA64). HP */
782
+ #define DW_ATE_HP_imaginary_float80 0x85 /* HP */
783
+ #define DW_ATE_HP_imaginary_float128 0x86 /* HP */
784
+
785
+ /* Sun extensions */
786
+ #define DW_ATE_SUN_interval_float 0x91
787
+ #define DW_ATE_SUN_imaginary_float 0x92 /* Obsolete: See DW_ATE_imaginary_float */
788
+
789
+ #define DW_ATE_hi_user 0xff
790
+
791
+
792
+ #define DW_DEFAULTED_no 0x0 /* DWARF5 */
793
+ #define DW_DEFAULTED_in_class 0x1 /* DWARF5 */
794
+ #define DW_DEFAULTED_out_of_class 0x2 /* DWARF5 */
795
+
796
+
797
+ #define DW_IDX_compile_unit 0x1 /* DWARF5 */
798
+ #define DW_IDX_type_unit 0x2 /* DWARF4 only */
799
+ #define DW_IDX_die_offset 0x3 /* DWARF5 */
800
+ #define DW_IDX_parent 0x4 /* DWARF5 */
801
+ #define DW_IDX_type_hash 0x5 /* DWARF5 */
802
+ #define DW_IDX_lo_user 0x2000 /* DWARF5 */
803
+ #define DW_IDX_hi_user 0x0fff /* DWARF5 */
804
+
805
+
806
+ /* DWARF5 Location List Entries in Split Objects */
807
+ #define DW_LLE_end_of_list_entry 0x0 /* DWARF5 */
808
+ #define DW_LLE_base_address_selection_entry 0x01 /* DWARF5 */
809
+ #define DW_LLE_start_end_entry 0x02 /* DWARF5 */
810
+ #define DW_LLE_start_length_entry 0x03 /* DWARF5 */
811
+ #define DW_LLE_offset_pair_entry 0x04 /* DWARF5 */
812
+
813
+ /* DWARF5 Unit header unit type encodings */
814
+ #define DW_UT_compile 0x01 /* DWARF5 */
815
+ #define DW_UT_type 0x02 /* DWARF5 */
816
+ #define DW_UT_partial 0x03 /* DWARF5 */
817
+
818
+
819
+ /* DWARF5 DebugFission object section id values
820
+ for .dwp object section offsets hash table.
821
+ 0 is reserved, not used.
822
+ 2 is actually reserved, not used in DWARF5.
823
+ But 2 may be seen in some DWARF4 objects.
824
+ */
825
+ #define DW_SECT_INFO 1 /* .debug_info.dwo DWARF5 */
826
+ #define DW_SECT_TYPES 2 /* .debug_types.dwo pre-DWARF5 */
827
+ #define DW_SECT_ABBREV 3 /* .debug_abbrev.dwo DWARF5 */
828
+ #define DW_SECT_LINE 4 /* .debug_line.dwo DWARF5 */
829
+ #define DW_SECT_LOC 5 /* .debug_loc.dwo DWARF5 */
830
+ #define DW_SECT_STR_OFFSETS 6 /* .debug_str_offsets.dwo DWARF5 */
831
+ #define DW_SECT_MACINFO 7 /* .debug_macinfo.dwo DWARF5 */
832
+ #define DW_SECT_MACRO 8 /* .debug_macro.dwo DWARF5 */
833
+
834
+
835
+ /* Decimal Sign codes. */
836
+ #define DW_DS_unsigned 0x01 /* DWARF3f */
837
+ #define DW_DS_leading_overpunch 0x02 /* DWARF3f */
838
+ #define DW_DS_trailing_overpunch 0x03 /* DWARF3f */
839
+ #define DW_DS_leading_separate 0x04 /* DWARF3f */
840
+
841
+ #define DW_DS_trailing_separate 0x05 /* DWARF3f */
842
+
843
+ /* Endian code name. */
844
+ #define DW_END_default 0x00 /* DWARF3f */
845
+ #define DW_END_big 0x01 /* DWARF3f */
846
+ #define DW_END_little 0x02 /* DWARF3f */
847
+
848
+ #define DW_END_lo_user 0x40 /* DWARF3f */
849
+ #define DW_END_hi_user 0xff /* DWARF3f */
850
+
851
+ /* For use with DW_TAG_SUN_codeflags
852
+ If DW_TAG_SUN_codeflags is accepted as a dwarf standard, then
853
+ standard dwarf ATCF entries start at 0x01 */
854
+ #define DW_ATCF_lo_user 0x40 /* SUN */
855
+ #define DW_ATCF_SUN_mop_bitfield 0x41 /* SUN */
856
+ #define DW_ATCF_SUN_mop_spill 0x42 /* SUN */
857
+ #define DW_ATCF_SUN_mop_scopy 0x43 /* SUN */
858
+ #define DW_ATCF_SUN_func_start 0x44 /* SUN */
859
+ #define DW_ATCF_SUN_end_ctors 0x45 /* SUN */
860
+ #define DW_ATCF_SUN_branch_target 0x46 /* SUN */
861
+ #define DW_ATCF_SUN_mop_stack_probe 0x47 /* SUN */
862
+ #define DW_ATCF_SUN_func_epilog 0x48 /* SUN */
863
+ #define DW_ATCF_hi_user 0xff /* SUN */
864
+
865
+ /* Accessibility code name. */
866
+ #define DW_ACCESS_public 0x01
867
+ #define DW_ACCESS_protected 0x02
868
+ #define DW_ACCESS_private 0x03
869
+
870
+ /* Visibility code name. */
871
+ #define DW_VIS_local 0x01
872
+ #define DW_VIS_exported 0x02
873
+ #define DW_VIS_qualified 0x03
874
+
875
+ /* Virtuality code name. */
876
+ #define DW_VIRTUALITY_none 0x00
877
+ #define DW_VIRTUALITY_virtual 0x01
878
+ #define DW_VIRTUALITY_pure_virtual 0x02
879
+
880
+ #define DW_LANG_C89 0x0001
881
+ #define DW_LANG_C 0x0002
882
+ #define DW_LANG_Ada83 0x0003
883
+ #define DW_LANG_C_plus_plus 0x0004
884
+ #define DW_LANG_Cobol74 0x0005
885
+ #define DW_LANG_Cobol85 0x0006
886
+ #define DW_LANG_Fortran77 0x0007
887
+ #define DW_LANG_Fortran90 0x0008
888
+ #define DW_LANG_Pascal83 0x0009
889
+ #define DW_LANG_Modula2 0x000a
890
+ #define DW_LANG_Java 0x000b /* DWARF3 */
891
+ #define DW_LANG_C99 0x000c /* DWARF3 */
892
+ #define DW_LANG_Ada95 0x000d /* DWARF3 */
893
+ #define DW_LANG_Fortran95 0x000e /* DWARF3 */
894
+ #define DW_LANG_PLI 0x000f /* DWARF3 */
895
+ #define DW_LANG_ObjC 0x0010 /* DWARF3f */
896
+ #define DW_LANG_ObjC_plus_plus 0x0011 /* DWARF3f */
897
+ #define DW_LANG_UPC 0x0012 /* DWARF3f */
898
+ #define DW_LANG_D 0x0013 /* DWARF3f */
899
+ #define DW_LANG_Python 0x0014 /* DWARF4 */
900
+ /* The following 2 are not yet formally approved October 2010, but
901
+ it seems extremely likely they will be approved as the committee
902
+ chair agrees these should be ok and no one on the committee
903
+ has objected. */
904
+ #define DW_LANG_OpenCL 0x0015 /* DWARF5 */
905
+ #define DW_LANG_Go 0x0016 /* DWARF5 */
906
+ #define DW_LANG_Modula3 0x0017 /* DWARF5 */
907
+ #define DW_LANG_Haskel 0x0018 /* DWARF5 */
908
+ #define DW_LANG_C_plus_plus_03 0x0019 /* DWARF5 */
909
+ #define DW_LANG_C_plus_plus_11 0x001a /* DWARF5 */
910
+ #define DW_LANG_OCaml 0x001b /* DWARF5 */
911
+ #define DW_LANG_Rust 0x001c /* DWARF5 */
912
+ #define DW_LANG_C11 0x001d /* DWARF5 */
913
+ #define DW_LANG_Swift 0x001e /* DWARF5 */
914
+ #define DW_LANG_Julia 0x001f /* DWARF5 */
915
+ #define DW_LANG_Dylan 0x0020 /* DWARF5 */
916
+ #define DW_LANG_C_plus_plus_14 0x0021 /* DWARF5 */
917
+ #define DW_LANG_Fortran03 0x0022 /* DWARF5 */
918
+ #define DW_LANG_Fortran08 0x0023 /* DWARF5 */
919
+ #define DW_LANG_lo_user 0x8000
920
+ #define DW_LANG_Mips_Assembler 0x8001 /* MIPS */
921
+ #define DW_LANG_Upc 0x8765 /* UPC, use
922
+ DW_LANG_UPC instead. */
923
+ /* ALTIUM extension */
924
+ #define DW_LANG_ALTIUM_Assembler 0x9101 /* ALTIUM */
925
+
926
+ /* Sun extensions */
927
+ #define DW_LANG_SUN_Assembler 0x9001 /* SUN */
928
+
929
+ #define DW_LANG_hi_user 0xffff
930
+
931
+ /* Identifier case name. */
932
+ #define DW_ID_case_sensitive 0x00
933
+ #define DW_ID_up_case 0x01
934
+ #define DW_ID_down_case 0x02
935
+ #define DW_ID_case_insensitive 0x03
936
+
937
+ /* Calling Convention Name. */
938
+ #define DW_CC_normal 0x01
939
+ #define DW_CC_program 0x02
940
+ #define DW_CC_nocall 0x03
941
+ #define DW_CC_lo_user 0x40
942
+
943
+ #define DW_CC_GNU_renesas_sh 0x40 /* GNU */
944
+ #define DW_CC_GNU_borland_fastcall_i386 0x41 /* GNU */
945
+
946
+
947
+
948
+ /* ALTIUM extensions. */
949
+ /* Function is an interrupt handler, return address on system stack. */
950
+ #define DW_CC_ALTIUM_interrupt 0x65 /* ALTIUM*/
951
+
952
+ /* Near function model, return address on system stack. */
953
+ #define DW_CC_ALTIUM_near_system_stack 0x66 /*ALTIUM */
954
+
955
+ /* Near function model, return address on user stack. */
956
+ #define DW_CC_ALTIUM_near_user_stack 0x67 /* ALTIUM */
957
+
958
+ /* Huge function model, return address on user stack. */
959
+ #define DW_CC_ALTIUM_huge_user_stack 0x68 /* ALTIUM */
960
+
961
+
962
+ #define DW_CC_hi_user 0xff
963
+
964
+ /* Inline Code Name. */
965
+ #define DW_INL_not_inlined 0x00
966
+ #define DW_INL_inlined 0x01
967
+ #define DW_INL_declared_not_inlined 0x02
968
+ #define DW_INL_declared_inlined 0x03
969
+
970
+ /* Ordering Name. */
971
+ #define DW_ORD_row_major 0x00
972
+ #define DW_ORD_col_major 0x01
973
+
974
+ /* Discriminant Descriptor Name. */
975
+ #define DW_DSC_label 0x00
976
+ #define DW_DSC_range 0x01
977
+
978
+ /* Line number standard opcode name. */
979
+ #define DW_LNS_copy 0x01
980
+ #define DW_LNS_advance_pc 0x02
981
+ #define DW_LNS_advance_line 0x03
982
+ #define DW_LNS_set_file 0x04
983
+ #define DW_LNS_set_column 0x05
984
+ #define DW_LNS_negate_stmt 0x06
985
+ #define DW_LNS_set_basic_block 0x07
986
+ #define DW_LNS_const_add_pc 0x08
987
+ #define DW_LNS_fixed_advance_pc 0x09
988
+ #define DW_LNS_set_prologue_end 0x0a /* DWARF3 */
989
+ #define DW_LNS_set_epilogue_begin 0x0b /* DWARF3 */
990
+ #define DW_LNS_set_isa 0x0c /* DWARF3 */
991
+
992
+ /* Experimental two-level line tables. NOT STD DWARF5 */
993
+ /* Not saying GNU or anything. There are no
994
+ DW_LNS_lo_user or DW_LNS_hi_user values though.
995
+ DW_LNS_set_address_from_logical and
996
+ DW_LNS_set_subprogram being both 0xd
997
+ to avoid using up more space in the special opcode table.
998
+ EXPERIMENTAL DW_LNS follow.
999
+ */
1000
+ #define DW_LNS_set_address_from_logical 0x0d /* Actuals table only */
1001
+ #define DW_LNS_set_subprogram 0x0d /* Logicals table only */
1002
+ #define DW_LNS_inlined_call 0x0e /* Logicals table only */
1003
+ #define DW_LNS_pop_context 0x0f /* Logicals table only */
1004
+
1005
+ /* Line number extended opcode name. */
1006
+ #define DW_LNE_end_sequence 0x01
1007
+ #define DW_LNE_set_address 0x02
1008
+ #define DW_LNE_define_file 0x03
1009
+ #define DW_LNE_set_discriminator 0x04 /* DWARF4 */
1010
+ #define DW_LNE_define_file_MD5 0x05 /* DWARF5 */
1011
+
1012
+ /* HP extensions. */
1013
+ #define DW_LNE_HP_negate_is_UV_update 0x11 /* 17 HP */
1014
+ #define DW_LNE_HP_push_context 0x12 /* 18 HP */
1015
+ #define DW_LNE_HP_pop_context 0x13 /* 19 HP */
1016
+ #define DW_LNE_HP_set_file_line_column 0x14 /* 20 HP */
1017
+ #define DW_LNE_HP_set_routine_name 0x15 /* 21 HP */
1018
+ #define DW_LNE_HP_set_sequence 0x16 /* 22 HP */
1019
+ #define DW_LNE_HP_negate_post_semantics 0x17 /* 23 HP */
1020
+ #define DW_LNE_HP_negate_function_exit 0x18 /* 24 HP */
1021
+ #define DW_LNE_HP_negate_front_end_logical 0x19 /* 25 HP */
1022
+ #define DW_LNE_HP_define_proc 0x20 /* 32 HP */
1023
+
1024
+ #define DW_LNE_HP_source_file_correlation 0x80 /* HP */
1025
+ #define DW_LNE_lo_user 0x80 /* DWARF3 */
1026
+ #define DW_LNE_hi_user 0xff /* DWARF3 */
1027
+
1028
+ /* Type codes for line number program content descriptors (DWARF 5). */
1029
+ #define DW_LNCT_path 0x1
1030
+ #define DW_LNCT_directory_index 0x2
1031
+ #define DW_LNCT_timestamp 0x3
1032
+ #define DW_LNCT_size 0x4
1033
+ #define DW_LNCT_MD5 0x5
1034
+ /* Experimental two-level line tables. */
1035
+ #define DW_LNCT_subprogram_name 0x6
1036
+ #define DW_LNCT_decl_file 0x7
1037
+ #define DW_LNCT_decl_line 0x8
1038
+
1039
+ /* These are known values for DW_LNS_set_isa. */
1040
+ #define DW_ISA_UNKNOWN 0
1041
+ /* The following two are ARM specific. */
1042
+ #define DW_ISA_ARM_thumb 1 /* ARM ISA */
1043
+ #define DW_ISA_ARM_arm 2 /* ARM ISA */
1044
+
1045
+
1046
+ /* Macro information, DWARF5 */
1047
+ #define DW_MACRO_define 0x01 /* DWARF5 */
1048
+ #define DW_MACRO_undef 0x02 /* DWARF5 */
1049
+ #define DW_MACRO_start_file 0x03 /* DWARF5 */
1050
+ #define DW_MACRO_end_file 0x04 /* DWARF5 */
1051
+ #define DW_MACRO_define_indirect 0x05 /* DWARF5 */
1052
+ #define DW_MACRO_undef_indirect 0x06 /* DWARF5 */
1053
+ #define DW_MACRO_transparent_include 0x07 /* DWARF5 */
1054
+ #define DW_MACRO_define_indirect_sup 0x08 /* DWARF5 */
1055
+ #define DW_MACRO_undef_indirect_sup 0x09 /* DWARF5 */
1056
+ #define DW_MACRO_transparent_include_sup 0x0a /* DWARF5 */
1057
+ #define DW_MACRO_define_indirectx 0x0b /* DWARF5 */
1058
+ #define DW_MACRO_undef_indirectx 0x0c /* DWARF5 */
1059
+ #define DW_MACRO_lo_user 0xe0
1060
+ #define DW_MACRO_hi_user 0xff
1061
+
1062
+ /* Macro information, DWARF2-DWARF4. */
1063
+ #define DW_MACINFO_define 0x01
1064
+ #define DW_MACINFO_undef 0x02
1065
+ #define DW_MACINFO_start_file 0x03
1066
+ #define DW_MACINFO_end_file 0x04
1067
+ #define DW_MACINFO_vendor_ext 0xff
1068
+
1069
+ /* CFA operator compaction (a space saving measure, see
1070
+ the DWARF standard) means DW_CFA_extended and DW_CFA_nop
1071
+ have the same value here. */
1072
+ #define DW_CFA_advance_loc 0x40
1073
+ #define DW_CFA_offset 0x80
1074
+ #define DW_CFA_restore 0xc0
1075
+ #define DW_CFA_extended 0
1076
+
1077
+ #define DW_CFA_nop 0x00
1078
+ #define DW_CFA_set_loc 0x01
1079
+ #define DW_CFA_advance_loc1 0x02
1080
+ #define DW_CFA_advance_loc2 0x03
1081
+ #define DW_CFA_advance_loc4 0x04
1082
+ #define DW_CFA_offset_extended 0x05
1083
+ #define DW_CFA_restore_extended 0x06
1084
+ #define DW_CFA_undefined 0x07
1085
+ #define DW_CFA_same_value 0x08
1086
+ #define DW_CFA_register 0x09
1087
+ #define DW_CFA_remember_state 0x0a
1088
+ #define DW_CFA_restore_state 0x0b
1089
+ #define DW_CFA_def_cfa 0x0c
1090
+ #define DW_CFA_def_cfa_register 0x0d
1091
+ #define DW_CFA_def_cfa_offset 0x0e
1092
+ #define DW_CFA_def_cfa_expression 0x0f /* DWARF3 */
1093
+ #define DW_CFA_expression 0x10 /* DWARF3 */
1094
+ #define DW_CFA_offset_extended_sf 0x11 /* DWARF3 */
1095
+ #define DW_CFA_def_cfa_sf 0x12 /* DWARF3 */
1096
+ #define DW_CFA_def_cfa_offset_sf 0x13 /* DWARF3 */
1097
+ #define DW_CFA_val_offset 0x14 /* DWARF3f */
1098
+ #define DW_CFA_val_offset_sf 0x15 /* DWARF3f */
1099
+ #define DW_CFA_val_expression 0x16 /* DWARF3f */
1100
+ #define DW_CFA_lo_user 0x1c
1101
+ #define DW_CFA_low_user 0x1c /* Incorrect spelling, do not use. */
1102
+
1103
+ /* SGI/MIPS extension. */
1104
+ #define DW_CFA_MIPS_advance_loc8 0x1d /* MIPS */
1105
+
1106
+ /* GNU extensions. */
1107
+ #define DW_CFA_GNU_window_save 0x2d /* GNU */
1108
+ #define DW_CFA_GNU_args_size 0x2e /* GNU */
1109
+ #define DW_CFA_GNU_negative_offset_extended 0x2f /* GNU */
1110
+
1111
+ #define DW_CFA_high_user 0x3f
1112
+
1113
+ /* GNU exception header encoding. See the Generic
1114
+ Elf Specification of the Linux Standard Base (LSB).
1115
+ http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/dwarfext.html
1116
+ The upper 4 bits indicate how the value is to be applied.
1117
+ The lower 4 bits indicate the format of the data.
1118
+ */
1119
+ #define DW_EH_PE_absptr 0x00 /* GNU */
1120
+ #define DW_EH_PE_uleb128 0x01 /* GNU */
1121
+ #define DW_EH_PE_udata2 0x02 /* GNU */
1122
+ #define DW_EH_PE_udata4 0x03 /* GNU */
1123
+ #define DW_EH_PE_udata8 0x04 /* GNU */
1124
+ #define DW_EH_PE_sleb128 0x09 /* GNU */
1125
+ #define DW_EH_PE_sdata2 0x0A /* GNU */
1126
+ #define DW_EH_PE_sdata4 0x0B /* GNU */
1127
+ #define DW_EH_PE_sdata8 0x0C /* GNU */
1128
+
1129
+ #define DW_EH_PE_pcrel 0x10 /* GNU */
1130
+ #define DW_EH_PE_textrel 0x20 /* GNU */
1131
+ #define DW_EH_PE_datarel 0x30 /* GNU */
1132
+ #define DW_EH_PE_funcrel 0x40 /* GNU */
1133
+ #define DW_EH_PE_aligned 0x50 /* GNU */
1134
+
1135
+ #define DW_EH_PE_omit 0xff /* GNU. Means no value present. */
1136
+
1137
+
1138
+ /* Mapping from machine registers and pseudo-regs into the
1139
+ .debug_frame table. DW_FRAME entries are machine specific.
1140
+ These describe MIPS/SGI R3000, R4K, R4400 and all later
1141
+ MIPS/SGI IRIX machines. They describe a mapping from
1142
+ hardware register number to the number used in the table
1143
+ to identify that register.
1144
+
1145
+ The CFA (Canonical Frame Address) described in DWARF is
1146
+ called the Virtual Frame Pointer on MIPS/SGI machines.
1147
+
1148
+ The DW_FRAME* names here are MIPS/SGI specific.
1149
+ Libdwarf interfaces defined in 2008 make the
1150
+ frame definitions here (and the fixed table sizes
1151
+ they imply) obsolete. They are left here for compatibility.
1152
+ */
1153
+ /* Default column used for CFA in the libdwarf reader client.
1154
+ Assumes reg 0 never appears as
1155
+ a register in DWARF information. Usable for MIPS,
1156
+ but never a good idea, really. */
1157
+ #define DW_FRAME_CFA_COL 0
1158
+
1159
+ #define DW_FRAME_REG1 1 /* integer reg 1 */
1160
+ #define DW_FRAME_REG2 2 /* integer reg 2 */
1161
+ #define DW_FRAME_REG3 3 /* integer reg 3 */
1162
+ #define DW_FRAME_REG4 4 /* integer reg 4 */
1163
+ #define DW_FRAME_REG5 5 /* integer reg 5 */
1164
+ #define DW_FRAME_REG6 6 /* integer reg 6 */
1165
+ #define DW_FRAME_REG7 7 /* integer reg 7 */
1166
+ #define DW_FRAME_REG8 8 /* integer reg 8 */
1167
+ #define DW_FRAME_REG9 9 /* integer reg 9 */
1168
+ #define DW_FRAME_REG10 10 /* integer reg 10 */
1169
+ #define DW_FRAME_REG11 11 /* integer reg 11 */
1170
+ #define DW_FRAME_REG12 12 /* integer reg 12 */
1171
+ #define DW_FRAME_REG13 13 /* integer reg 13 */
1172
+ #define DW_FRAME_REG14 14 /* integer reg 14 */
1173
+ #define DW_FRAME_REG15 15 /* integer reg 15 */
1174
+ #define DW_FRAME_REG16 16 /* integer reg 16 */
1175
+ #define DW_FRAME_REG17 17 /* integer reg 17 */
1176
+ #define DW_FRAME_REG18 18 /* integer reg 18 */
1177
+ #define DW_FRAME_REG19 19 /* integer reg 19 */
1178
+ #define DW_FRAME_REG20 20 /* integer reg 20 */
1179
+ #define DW_FRAME_REG21 21 /* integer reg 21 */
1180
+ #define DW_FRAME_REG22 22 /* integer reg 22 */
1181
+ #define DW_FRAME_REG23 23 /* integer reg 23 */
1182
+ #define DW_FRAME_REG24 24 /* integer reg 24 */
1183
+ #define DW_FRAME_REG25 25 /* integer reg 25 */
1184
+ #define DW_FRAME_REG26 26 /* integer reg 26 */
1185
+ #define DW_FRAME_REG27 27 /* integer reg 27 */
1186
+ #define DW_FRAME_REG28 28 /* integer reg 28 */
1187
+ #define DW_FRAME_REG29 29 /* integer reg 29 */
1188
+ #define DW_FRAME_REG30 30 /* integer reg 30 */
1189
+ #define DW_FRAME_REG31 31 /* integer reg 31, aka ra */
1190
+
1191
+ /* MIPS1, 2 have only some of these 64-bit registers.
1192
+ ** MIPS1 save/restore takes 2 instructions per 64-bit reg, and
1193
+ ** in that case, the register is considered stored after the second
1194
+ ** swc1.
1195
+ */
1196
+ #define DW_FRAME_FREG0 32 /* 64-bit floating point reg 0 */
1197
+ #define DW_FRAME_FREG1 33 /* 64-bit floating point reg 1 */
1198
+ #define DW_FRAME_FREG2 34 /* 64-bit floating point reg 2 */
1199
+ #define DW_FRAME_FREG3 35 /* 64-bit floating point reg 3 */
1200
+ #define DW_FRAME_FREG4 36 /* 64-bit floating point reg 4 */
1201
+ #define DW_FRAME_FREG5 37 /* 64-bit floating point reg 5 */
1202
+ #define DW_FRAME_FREG6 38 /* 64-bit floating point reg 6 */
1203
+ #define DW_FRAME_FREG7 39 /* 64-bit floating point reg 7 */
1204
+ #define DW_FRAME_FREG8 40 /* 64-bit floating point reg 8 */
1205
+ #define DW_FRAME_FREG9 41 /* 64-bit floating point reg 9 */
1206
+ #define DW_FRAME_FREG10 42 /* 64-bit floating point reg 10 */
1207
+ #define DW_FRAME_FREG11 43 /* 64-bit floating point reg 11 */
1208
+ #define DW_FRAME_FREG12 44 /* 64-bit floating point reg 12 */
1209
+ #define DW_FRAME_FREG13 45 /* 64-bit floating point reg 13 */
1210
+ #define DW_FRAME_FREG14 46 /* 64-bit floating point reg 14 */
1211
+ #define DW_FRAME_FREG15 47 /* 64-bit floating point reg 15 */
1212
+ #define DW_FRAME_FREG16 48 /* 64-bit floating point reg 16 */
1213
+ #define DW_FRAME_FREG17 49 /* 64-bit floating point reg 17 */
1214
+ #define DW_FRAME_FREG18 50 /* 64-bit floating point reg 18 */
1215
+ #define DW_FRAME_FREG19 51 /* 64-bit floating point reg 19 */
1216
+ #define DW_FRAME_FREG20 52 /* 64-bit floating point reg 20 */
1217
+ #define DW_FRAME_FREG21 53 /* 64-bit floating point reg 21 */
1218
+ #define DW_FRAME_FREG22 54 /* 64-bit floating point reg 22 */
1219
+ #define DW_FRAME_FREG23 55 /* 64-bit floating point reg 23 */
1220
+ #define DW_FRAME_FREG24 56 /* 64-bit floating point reg 24 */
1221
+ #define DW_FRAME_FREG25 57 /* 64-bit floating point reg 25 */
1222
+ #define DW_FRAME_FREG26 58 /* 64-bit floating point reg 26 */
1223
+ #define DW_FRAME_FREG27 59 /* 64-bit floating point reg 27 */
1224
+ #define DW_FRAME_FREG28 60 /* 64-bit floating point reg 28 */
1225
+ #define DW_FRAME_FREG29 61 /* 64-bit floating point reg 29 */
1226
+ #define DW_FRAME_FREG30 62 /* 64-bit floating point reg 30 */
1227
+ #define DW_FRAME_FREG31 63 /* 64-bit floating point reg 31 */
1228
+
1229
+ #define DW_FRAME_FREG32 64 /* 64-bit floating point reg 32 */
1230
+ #define DW_FRAME_FREG33 65 /* 64-bit floating point reg 33 */
1231
+ #define DW_FRAME_FREG34 66 /* 64-bit floating point reg 34 */
1232
+ #define DW_FRAME_FREG35 67 /* 64-bit floating point reg 35 */
1233
+ #define DW_FRAME_FREG36 68 /* 64-bit floating point reg 36 */
1234
+ #define DW_FRAME_FREG37 69 /* 64-bit floating point reg 37 */
1235
+ #define DW_FRAME_FREG38 70 /* 64-bit floating point reg 38 */
1236
+ #define DW_FRAME_FREG39 71 /* 64-bit floating point reg 39 */
1237
+ #define DW_FRAME_FREG40 72 /* 64-bit floating point reg 40 */
1238
+ #define DW_FRAME_FREG41 73 /* 64-bit floating point reg 41 */
1239
+ #define DW_FRAME_FREG42 74 /* 64-bit floating point reg 42 */
1240
+ #define DW_FRAME_FREG43 75 /* 64-bit floating point reg 43 */
1241
+ #define DW_FRAME_FREG44 76 /* 64-bit floating point reg 44 */
1242
+ #define DW_FRAME_FREG45 77 /* 64-bit floating point reg 45 */
1243
+ #define DW_FRAME_FREG46 78 /* 64-bit floating point reg 46 */
1244
+ #define DW_FRAME_FREG47 79 /* 64-bit floating point reg 47 */
1245
+ #define DW_FRAME_FREG48 80 /* 64-bit floating point reg 48 */
1246
+ #define DW_FRAME_FREG49 81 /* 64-bit floating point reg 49 */
1247
+ #define DW_FRAME_FREG50 82 /* 64-bit floating point reg 50 */
1248
+ #define DW_FRAME_FREG51 83 /* 64-bit floating point reg 51 */
1249
+ #define DW_FRAME_FREG52 84 /* 64-bit floating point reg 52 */
1250
+ #define DW_FRAME_FREG53 85 /* 64-bit floating point reg 53 */
1251
+ #define DW_FRAME_FREG54 86 /* 64-bit floating point reg 54 */
1252
+ #define DW_FRAME_FREG55 87 /* 64-bit floating point reg 55 */
1253
+ #define DW_FRAME_FREG56 88 /* 64-bit floating point reg 56 */
1254
+ #define DW_FRAME_FREG57 89 /* 64-bit floating point reg 57 */
1255
+ #define DW_FRAME_FREG58 90 /* 64-bit floating point reg 58 */
1256
+ #define DW_FRAME_FREG59 91 /* 64-bit floating point reg 59 */
1257
+ #define DW_FRAME_FREG60 92 /* 64-bit floating point reg 60 */
1258
+ #define DW_FRAME_FREG61 93 /* 64-bit floating point reg 61 */
1259
+ #define DW_FRAME_FREG62 94 /* 64-bit floating point reg 62 */
1260
+ #define DW_FRAME_FREG63 95 /* 64-bit floating point reg 63 */
1261
+ #define DW_FRAME_FREG64 96 /* 64-bit floating point reg 64 */
1262
+ #define DW_FRAME_FREG65 97 /* 64-bit floating point reg 65 */
1263
+ #define DW_FRAME_FREG66 98 /* 64-bit floating point reg 66 */
1264
+ #define DW_FRAME_FREG67 99 /* 64-bit floating point reg 67 */
1265
+ #define DW_FRAME_FREG68 100 /* 64-bit floating point reg 68 */
1266
+ #define DW_FRAME_FREG69 101 /* 64-bit floating point reg 69 */
1267
+ #define DW_FRAME_FREG70 102 /* 64-bit floating point reg 70 */
1268
+ #define DW_FRAME_FREG71 103 /* 64-bit floating point reg 71 */
1269
+ #define DW_FRAME_FREG72 104 /* 64-bit floating point reg 72 */
1270
+ #define DW_FRAME_FREG73 105 /* 64-bit floating point reg 73 */
1271
+ #define DW_FRAME_FREG74 106 /* 64-bit floating point reg 74 */
1272
+ #define DW_FRAME_FREG75 107 /* 64-bit floating point reg 75 */
1273
+ #define DW_FRAME_FREG76 108 /* 64-bit floating point reg 76 */
1274
+
1275
+ /* ***IMPORTANT NOTE, TARGET DEPENDENCY ****
1276
+ The following 4 #defines are dependent on
1277
+ the target cpu(s) that you apply libdwarf to.
1278
+ Ensure that DW_FRAME_UNDEFINED_VAL and DW_FRAME_SAME_VAL
1279
+ do not conflict with the range [0-DW_FRAME_STATIC_LINK].
1280
+ The value 63 works for MIPS cpus at least up to the R16000.
1281
+
1282
+ For a cpu with more than 63 real registers
1283
+ DW_FRAME_HIGHEST_NORMAL_REGISTER
1284
+ must be increased for things to work properly!
1285
+ Also ensure that DW_FRAME_UNDEFINED_VAL DW_FRAME_SAME_VAL
1286
+ are not in the range [0-DW_FRAME_STATIC_LINK]
1287
+
1288
+ Having DW_FRAME_HIGHEST_NORMAL_REGISTER be higher than
1289
+ is strictly needed is safe.
1290
+
1291
+ */
1292
+
1293
+ #ifndef DW_FRAME_HIGHEST_NORMAL_REGISTER
1294
+ #define DW_FRAME_HIGHEST_NORMAL_REGISTER 188
1295
+ #endif
1296
+ /* This is the number of columns in the Frame Table.
1297
+ This constant should
1298
+ be kept in sync with DW_REG_TABLE_SIZE defined in libdwarf.h
1299
+ It must also be large enough to be beyond the highest
1300
+ compiler-defined-register (meaning DW_FRAME_RA_COL DW_FRAME_STATIC_LINK
1301
+ in the MIPS/IRIX case */
1302
+ #ifndef DW_FRAME_LAST_REG_NUM
1303
+ #define DW_FRAME_LAST_REG_NUM (DW_FRAME_HIGHEST_NORMAL_REGISTER + 3)
1304
+ #endif
1305
+
1306
+
1307
+ /* Column recording ra (return address from a function call).
1308
+ This is common to many architectures, but as a 'simple register'
1309
+ is not necessarily adequate for all architectures.
1310
+ For MIPS/IRIX this register number is actually recorded on disk
1311
+ in the .debug_frame section.
1312
+ */
1313
+ #define DW_FRAME_RA_COL (DW_FRAME_HIGHEST_NORMAL_REGISTER + 1)
1314
+
1315
+ /* Column recording static link applicable to up-level
1316
+ addressing, as in IRIX mp code, pascal, etc.
1317
+ This is common to many architectures but
1318
+ is not necessarily adequate for all architectures.
1319
+ For MIPS/IRIX this register number is actually recorded on disk
1320
+ in the .debug_frame section.
1321
+ */
1322
+ #define DW_FRAME_STATIC_LINK (DW_FRAME_HIGHEST_NORMAL_REGISTER + 2)
1323
+
1324
+
1325
+
1326
+ /*
1327
+ DW_FRAME_UNDEFINED_VAL and DW_FRAME_SAME_VAL are
1328
+ never on disk, just generated by libdwarf. See libdwarf.h
1329
+ for their values.
1330
+ */
1331
+
1332
+
1333
+
1334
+ #define DW_CHILDREN_no 0x00
1335
+ #define DW_CHILDREN_yes 0x01
1336
+
1337
+ #define DW_ADDR_none 0
1338
+
1339
+ #ifdef __cplusplus
1340
+ }
1341
+ #endif
1342
+ #endif /* __DWARF_H */