Dwarf.def 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. //===- llvm/Support/Dwarf.def - Dwarf definitions ---------------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // Macros for running through Dwarf enumerators.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #if !(defined HANDLE_DW_TAG || defined HANDLE_DW_OP || \
  14. defined HANDLE_DW_LANG || defined HANDLE_DW_ATE || \
  15. defined HANDLE_DW_VIRTUALITY)
  16. #error "Missing macro definition of HANDLE_DW*"
  17. #endif
  18. #ifndef HANDLE_DW_TAG
  19. #define HANDLE_DW_TAG(ID, NAME)
  20. #endif
  21. #ifndef HANDLE_DW_OP
  22. #define HANDLE_DW_OP(ID, NAME)
  23. #endif
  24. #ifndef HANDLE_DW_LANG
  25. #define HANDLE_DW_LANG(ID, NAME)
  26. #endif
  27. #ifndef HANDLE_DW_ATE
  28. #define HANDLE_DW_ATE(ID, NAME)
  29. #endif
  30. #ifndef HANDLE_DW_VIRTUALITY
  31. #define HANDLE_DW_VIRTUALITY(ID, NAME)
  32. #endif
  33. HANDLE_DW_TAG(0x0001, array_type)
  34. HANDLE_DW_TAG(0x0002, class_type)
  35. HANDLE_DW_TAG(0x0003, entry_point)
  36. HANDLE_DW_TAG(0x0004, enumeration_type)
  37. HANDLE_DW_TAG(0x0005, formal_parameter)
  38. HANDLE_DW_TAG(0x0008, imported_declaration)
  39. HANDLE_DW_TAG(0x000a, label)
  40. HANDLE_DW_TAG(0x000b, lexical_block)
  41. HANDLE_DW_TAG(0x000d, member)
  42. HANDLE_DW_TAG(0x000f, pointer_type)
  43. HANDLE_DW_TAG(0x0010, reference_type)
  44. HANDLE_DW_TAG(0x0011, compile_unit)
  45. HANDLE_DW_TAG(0x0012, string_type)
  46. HANDLE_DW_TAG(0x0013, structure_type)
  47. HANDLE_DW_TAG(0x0015, subroutine_type)
  48. HANDLE_DW_TAG(0x0016, typedef)
  49. HANDLE_DW_TAG(0x0017, union_type)
  50. HANDLE_DW_TAG(0x0018, unspecified_parameters)
  51. HANDLE_DW_TAG(0x0019, variant)
  52. HANDLE_DW_TAG(0x001a, common_block)
  53. HANDLE_DW_TAG(0x001b, common_inclusion)
  54. HANDLE_DW_TAG(0x001c, inheritance)
  55. HANDLE_DW_TAG(0x001d, inlined_subroutine)
  56. HANDLE_DW_TAG(0x001e, module)
  57. HANDLE_DW_TAG(0x001f, ptr_to_member_type)
  58. HANDLE_DW_TAG(0x0020, set_type)
  59. HANDLE_DW_TAG(0x0021, subrange_type)
  60. HANDLE_DW_TAG(0x0022, with_stmt)
  61. HANDLE_DW_TAG(0x0023, access_declaration)
  62. HANDLE_DW_TAG(0x0024, base_type)
  63. HANDLE_DW_TAG(0x0025, catch_block)
  64. HANDLE_DW_TAG(0x0026, const_type)
  65. HANDLE_DW_TAG(0x0027, constant)
  66. HANDLE_DW_TAG(0x0028, enumerator)
  67. HANDLE_DW_TAG(0x0029, file_type)
  68. HANDLE_DW_TAG(0x002a, friend)
  69. HANDLE_DW_TAG(0x002b, namelist)
  70. HANDLE_DW_TAG(0x002c, namelist_item)
  71. HANDLE_DW_TAG(0x002d, packed_type)
  72. HANDLE_DW_TAG(0x002e, subprogram)
  73. HANDLE_DW_TAG(0x002f, template_type_parameter)
  74. HANDLE_DW_TAG(0x0030, template_value_parameter)
  75. HANDLE_DW_TAG(0x0031, thrown_type)
  76. HANDLE_DW_TAG(0x0032, try_block)
  77. HANDLE_DW_TAG(0x0033, variant_part)
  78. HANDLE_DW_TAG(0x0034, variable)
  79. HANDLE_DW_TAG(0x0035, volatile_type)
  80. HANDLE_DW_TAG(0x0036, dwarf_procedure)
  81. HANDLE_DW_TAG(0x0037, restrict_type)
  82. HANDLE_DW_TAG(0x0038, interface_type)
  83. HANDLE_DW_TAG(0x0039, namespace)
  84. HANDLE_DW_TAG(0x003a, imported_module)
  85. HANDLE_DW_TAG(0x003b, unspecified_type)
  86. HANDLE_DW_TAG(0x003c, partial_unit)
  87. HANDLE_DW_TAG(0x003d, imported_unit)
  88. HANDLE_DW_TAG(0x003f, condition)
  89. HANDLE_DW_TAG(0x0040, shared_type)
  90. HANDLE_DW_TAG(0x0041, type_unit)
  91. HANDLE_DW_TAG(0x0042, rvalue_reference_type)
  92. HANDLE_DW_TAG(0x0043, template_alias)
  93. // Mock tags we use as discriminators.
  94. HANDLE_DW_TAG(0x0100, auto_variable) // Tag for local (auto) variables.
  95. HANDLE_DW_TAG(0x0101, arg_variable) // Tag for argument variables.
  96. // New in DWARF v5.
  97. HANDLE_DW_TAG(0x0044, coarray_type)
  98. HANDLE_DW_TAG(0x0045, generic_subrange)
  99. HANDLE_DW_TAG(0x0046, dynamic_type)
  100. // User-defined tags.
  101. HANDLE_DW_TAG(0x4081, MIPS_loop)
  102. HANDLE_DW_TAG(0x4101, format_label)
  103. HANDLE_DW_TAG(0x4102, function_template)
  104. HANDLE_DW_TAG(0x4103, class_template)
  105. HANDLE_DW_TAG(0x4106, GNU_template_template_param)
  106. HANDLE_DW_TAG(0x4107, GNU_template_parameter_pack)
  107. HANDLE_DW_TAG(0x4108, GNU_formal_parameter_pack)
  108. HANDLE_DW_TAG(0x4200, APPLE_property)
  109. HANDLE_DW_OP(0x03, addr)
  110. HANDLE_DW_OP(0x06, deref)
  111. HANDLE_DW_OP(0x08, const1u)
  112. HANDLE_DW_OP(0x09, const1s)
  113. HANDLE_DW_OP(0x0a, const2u)
  114. HANDLE_DW_OP(0x0b, const2s)
  115. HANDLE_DW_OP(0x0c, const4u)
  116. HANDLE_DW_OP(0x0d, const4s)
  117. HANDLE_DW_OP(0x0e, const8u)
  118. HANDLE_DW_OP(0x0f, const8s)
  119. HANDLE_DW_OP(0x10, constu)
  120. HANDLE_DW_OP(0x11, consts)
  121. HANDLE_DW_OP(0x12, dup)
  122. HANDLE_DW_OP(0x13, drop)
  123. HANDLE_DW_OP(0x14, over)
  124. HANDLE_DW_OP(0x15, pick)
  125. HANDLE_DW_OP(0x16, swap)
  126. HANDLE_DW_OP(0x17, rot)
  127. HANDLE_DW_OP(0x18, xderef)
  128. HANDLE_DW_OP(0x19, abs)
  129. HANDLE_DW_OP(0x1a, and)
  130. HANDLE_DW_OP(0x1b, div)
  131. HANDLE_DW_OP(0x1c, minus)
  132. HANDLE_DW_OP(0x1d, mod)
  133. HANDLE_DW_OP(0x1e, mul)
  134. HANDLE_DW_OP(0x1f, neg)
  135. HANDLE_DW_OP(0x20, not)
  136. HANDLE_DW_OP(0x21, or )
  137. HANDLE_DW_OP(0x22, plus)
  138. HANDLE_DW_OP(0x23, plus_uconst)
  139. HANDLE_DW_OP(0x24, shl)
  140. HANDLE_DW_OP(0x25, shr)
  141. HANDLE_DW_OP(0x26, shra)
  142. HANDLE_DW_OP(0x27, xor)
  143. HANDLE_DW_OP(0x2f, skip)
  144. HANDLE_DW_OP(0x28, bra)
  145. HANDLE_DW_OP(0x29, eq)
  146. HANDLE_DW_OP(0x2a, ge)
  147. HANDLE_DW_OP(0x2b, gt)
  148. HANDLE_DW_OP(0x2c, le)
  149. HANDLE_DW_OP(0x2d, lt)
  150. HANDLE_DW_OP(0x2e, ne)
  151. HANDLE_DW_OP(0x30, lit0)
  152. HANDLE_DW_OP(0x31, lit1)
  153. HANDLE_DW_OP(0x32, lit2)
  154. HANDLE_DW_OP(0x33, lit3)
  155. HANDLE_DW_OP(0x34, lit4)
  156. HANDLE_DW_OP(0x35, lit5)
  157. HANDLE_DW_OP(0x36, lit6)
  158. HANDLE_DW_OP(0x37, lit7)
  159. HANDLE_DW_OP(0x38, lit8)
  160. HANDLE_DW_OP(0x39, lit9)
  161. HANDLE_DW_OP(0x3a, lit10)
  162. HANDLE_DW_OP(0x3b, lit11)
  163. HANDLE_DW_OP(0x3c, lit12)
  164. HANDLE_DW_OP(0x3d, lit13)
  165. HANDLE_DW_OP(0x3e, lit14)
  166. HANDLE_DW_OP(0x3f, lit15)
  167. HANDLE_DW_OP(0x40, lit16)
  168. HANDLE_DW_OP(0x41, lit17)
  169. HANDLE_DW_OP(0x42, lit18)
  170. HANDLE_DW_OP(0x43, lit19)
  171. HANDLE_DW_OP(0x44, lit20)
  172. HANDLE_DW_OP(0x45, lit21)
  173. HANDLE_DW_OP(0x46, lit22)
  174. HANDLE_DW_OP(0x47, lit23)
  175. HANDLE_DW_OP(0x48, lit24)
  176. HANDLE_DW_OP(0x49, lit25)
  177. HANDLE_DW_OP(0x4a, lit26)
  178. HANDLE_DW_OP(0x4b, lit27)
  179. HANDLE_DW_OP(0x4c, lit28)
  180. HANDLE_DW_OP(0x4d, lit29)
  181. HANDLE_DW_OP(0x4e, lit30)
  182. HANDLE_DW_OP(0x4f, lit31)
  183. HANDLE_DW_OP(0x50, reg0)
  184. HANDLE_DW_OP(0x51, reg1)
  185. HANDLE_DW_OP(0x52, reg2)
  186. HANDLE_DW_OP(0x53, reg3)
  187. HANDLE_DW_OP(0x54, reg4)
  188. HANDLE_DW_OP(0x55, reg5)
  189. HANDLE_DW_OP(0x56, reg6)
  190. HANDLE_DW_OP(0x57, reg7)
  191. HANDLE_DW_OP(0x58, reg8)
  192. HANDLE_DW_OP(0x59, reg9)
  193. HANDLE_DW_OP(0x5a, reg10)
  194. HANDLE_DW_OP(0x5b, reg11)
  195. HANDLE_DW_OP(0x5c, reg12)
  196. HANDLE_DW_OP(0x5d, reg13)
  197. HANDLE_DW_OP(0x5e, reg14)
  198. HANDLE_DW_OP(0x5f, reg15)
  199. HANDLE_DW_OP(0x60, reg16)
  200. HANDLE_DW_OP(0x61, reg17)
  201. HANDLE_DW_OP(0x62, reg18)
  202. HANDLE_DW_OP(0x63, reg19)
  203. HANDLE_DW_OP(0x64, reg20)
  204. HANDLE_DW_OP(0x65, reg21)
  205. HANDLE_DW_OP(0x66, reg22)
  206. HANDLE_DW_OP(0x67, reg23)
  207. HANDLE_DW_OP(0x68, reg24)
  208. HANDLE_DW_OP(0x69, reg25)
  209. HANDLE_DW_OP(0x6a, reg26)
  210. HANDLE_DW_OP(0x6b, reg27)
  211. HANDLE_DW_OP(0x6c, reg28)
  212. HANDLE_DW_OP(0x6d, reg29)
  213. HANDLE_DW_OP(0x6e, reg30)
  214. HANDLE_DW_OP(0x6f, reg31)
  215. HANDLE_DW_OP(0x70, breg0)
  216. HANDLE_DW_OP(0x71, breg1)
  217. HANDLE_DW_OP(0x72, breg2)
  218. HANDLE_DW_OP(0x73, breg3)
  219. HANDLE_DW_OP(0x74, breg4)
  220. HANDLE_DW_OP(0x75, breg5)
  221. HANDLE_DW_OP(0x76, breg6)
  222. HANDLE_DW_OP(0x77, breg7)
  223. HANDLE_DW_OP(0x78, breg8)
  224. HANDLE_DW_OP(0x79, breg9)
  225. HANDLE_DW_OP(0x7a, breg10)
  226. HANDLE_DW_OP(0x7b, breg11)
  227. HANDLE_DW_OP(0x7c, breg12)
  228. HANDLE_DW_OP(0x7d, breg13)
  229. HANDLE_DW_OP(0x7e, breg14)
  230. HANDLE_DW_OP(0x7f, breg15)
  231. HANDLE_DW_OP(0x80, breg16)
  232. HANDLE_DW_OP(0x81, breg17)
  233. HANDLE_DW_OP(0x82, breg18)
  234. HANDLE_DW_OP(0x83, breg19)
  235. HANDLE_DW_OP(0x84, breg20)
  236. HANDLE_DW_OP(0x85, breg21)
  237. HANDLE_DW_OP(0x86, breg22)
  238. HANDLE_DW_OP(0x87, breg23)
  239. HANDLE_DW_OP(0x88, breg24)
  240. HANDLE_DW_OP(0x89, breg25)
  241. HANDLE_DW_OP(0x8a, breg26)
  242. HANDLE_DW_OP(0x8b, breg27)
  243. HANDLE_DW_OP(0x8c, breg28)
  244. HANDLE_DW_OP(0x8d, breg29)
  245. HANDLE_DW_OP(0x8e, breg30)
  246. HANDLE_DW_OP(0x8f, breg31)
  247. HANDLE_DW_OP(0x90, regx)
  248. HANDLE_DW_OP(0x91, fbreg)
  249. HANDLE_DW_OP(0x92, bregx)
  250. HANDLE_DW_OP(0x93, piece)
  251. HANDLE_DW_OP(0x94, deref_size)
  252. HANDLE_DW_OP(0x95, xderef_size)
  253. HANDLE_DW_OP(0x96, nop)
  254. HANDLE_DW_OP(0x97, push_object_address)
  255. HANDLE_DW_OP(0x98, call2)
  256. HANDLE_DW_OP(0x99, call4)
  257. HANDLE_DW_OP(0x9a, call_ref)
  258. HANDLE_DW_OP(0x9b, form_tls_address)
  259. HANDLE_DW_OP(0x9c, call_frame_cfa)
  260. HANDLE_DW_OP(0x9d, bit_piece)
  261. HANDLE_DW_OP(0x9e, implicit_value)
  262. HANDLE_DW_OP(0x9f, stack_value)
  263. // Extensions for GNU-style thread-local storage.
  264. HANDLE_DW_OP(0xe0, GNU_push_tls_address)
  265. // Extensions for Fission proposal.
  266. HANDLE_DW_OP(0xfb, GNU_addr_index)
  267. HANDLE_DW_OP(0xfc, GNU_const_index)
  268. // DWARF languages.
  269. HANDLE_DW_LANG(0x0001, C89)
  270. HANDLE_DW_LANG(0x0002, C)
  271. HANDLE_DW_LANG(0x0003, Ada83)
  272. HANDLE_DW_LANG(0x0004, C_plus_plus)
  273. HANDLE_DW_LANG(0x0005, Cobol74)
  274. HANDLE_DW_LANG(0x0006, Cobol85)
  275. HANDLE_DW_LANG(0x0007, Fortran77)
  276. HANDLE_DW_LANG(0x0008, Fortran90)
  277. HANDLE_DW_LANG(0x0009, Pascal83)
  278. HANDLE_DW_LANG(0x000a, Modula2)
  279. HANDLE_DW_LANG(0x000b, Java)
  280. HANDLE_DW_LANG(0x000c, C99)
  281. HANDLE_DW_LANG(0x000d, Ada95)
  282. HANDLE_DW_LANG(0x000e, Fortran95)
  283. HANDLE_DW_LANG(0x000f, PLI)
  284. HANDLE_DW_LANG(0x0010, ObjC)
  285. HANDLE_DW_LANG(0x0011, ObjC_plus_plus)
  286. HANDLE_DW_LANG(0x0012, UPC)
  287. HANDLE_DW_LANG(0x0013, D)
  288. // New in DWARF 5:
  289. HANDLE_DW_LANG(0x0014, Python)
  290. HANDLE_DW_LANG(0x0015, OpenCL)
  291. HANDLE_DW_LANG(0x0016, Go)
  292. HANDLE_DW_LANG(0x0017, Modula3)
  293. HANDLE_DW_LANG(0x0018, Haskell)
  294. HANDLE_DW_LANG(0x0019, C_plus_plus_03)
  295. HANDLE_DW_LANG(0x001a, C_plus_plus_11)
  296. HANDLE_DW_LANG(0x001b, OCaml)
  297. HANDLE_DW_LANG(0x001c, Rust)
  298. HANDLE_DW_LANG(0x001d, C11)
  299. HANDLE_DW_LANG(0x001e, Swift)
  300. HANDLE_DW_LANG(0x001f, Julia)
  301. HANDLE_DW_LANG(0x0020, Dylan)
  302. HANDLE_DW_LANG(0x0021, C_plus_plus_14)
  303. HANDLE_DW_LANG(0x0022, Fortran03)
  304. HANDLE_DW_LANG(0x0023, Fortran08)
  305. HANDLE_DW_LANG(0x8001, Mips_Assembler)
  306. // DWARF attribute type encodings.
  307. HANDLE_DW_ATE(0x01, address)
  308. HANDLE_DW_ATE(0x02, boolean)
  309. HANDLE_DW_ATE(0x03, complex_float)
  310. HANDLE_DW_ATE(0x04, float)
  311. HANDLE_DW_ATE(0x05, signed)
  312. HANDLE_DW_ATE(0x06, signed_char)
  313. HANDLE_DW_ATE(0x07, unsigned)
  314. HANDLE_DW_ATE(0x08, unsigned_char)
  315. HANDLE_DW_ATE(0x09, imaginary_float)
  316. HANDLE_DW_ATE(0x0a, packed_decimal)
  317. HANDLE_DW_ATE(0x0b, numeric_string)
  318. HANDLE_DW_ATE(0x0c, edited)
  319. HANDLE_DW_ATE(0x0d, signed_fixed)
  320. HANDLE_DW_ATE(0x0e, unsigned_fixed)
  321. HANDLE_DW_ATE(0x0f, decimal_float)
  322. HANDLE_DW_ATE(0x10, UTF)
  323. // DWARF virtuality codes.
  324. HANDLE_DW_VIRTUALITY(0x00, none)
  325. HANDLE_DW_VIRTUALITY(0x01, virtual)
  326. HANDLE_DW_VIRTUALITY(0x02, pure_virtual)
  327. #undef HANDLE_DW_TAG
  328. #undef HANDLE_DW_OP
  329. #undef HANDLE_DW_LANG
  330. #undef HANDLE_DW_ATE
  331. #undef HANDLE_DW_VIRTUALITY