AArch64.def 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. #ifndef ELF_RELOC
  2. #error "ELF_RELOC must be defined"
  3. #endif
  4. // Based on ABI release 1.1-beta, dated 6 November 2013. NB: The cover page of
  5. // this document, IHI0056C_beta_aaelf64.pdf, on infocenter.arm.com, still
  6. // labels this as release 1.0.
  7. ELF_RELOC(R_AARCH64_NONE, 0)
  8. ELF_RELOC(R_AARCH64_ABS64, 0x101)
  9. ELF_RELOC(R_AARCH64_ABS32, 0x102)
  10. ELF_RELOC(R_AARCH64_ABS16, 0x103)
  11. ELF_RELOC(R_AARCH64_PREL64, 0x104)
  12. ELF_RELOC(R_AARCH64_PREL32, 0x105)
  13. ELF_RELOC(R_AARCH64_PREL16, 0x106)
  14. ELF_RELOC(R_AARCH64_MOVW_UABS_G0, 0x107)
  15. ELF_RELOC(R_AARCH64_MOVW_UABS_G0_NC, 0x108)
  16. ELF_RELOC(R_AARCH64_MOVW_UABS_G1, 0x109)
  17. ELF_RELOC(R_AARCH64_MOVW_UABS_G1_NC, 0x10a)
  18. ELF_RELOC(R_AARCH64_MOVW_UABS_G2, 0x10b)
  19. ELF_RELOC(R_AARCH64_MOVW_UABS_G2_NC, 0x10c)
  20. ELF_RELOC(R_AARCH64_MOVW_UABS_G3, 0x10d)
  21. ELF_RELOC(R_AARCH64_MOVW_SABS_G0, 0x10e)
  22. ELF_RELOC(R_AARCH64_MOVW_SABS_G1, 0x10f)
  23. ELF_RELOC(R_AARCH64_MOVW_SABS_G2, 0x110)
  24. ELF_RELOC(R_AARCH64_LD_PREL_LO19, 0x111)
  25. ELF_RELOC(R_AARCH64_ADR_PREL_LO21, 0x112)
  26. ELF_RELOC(R_AARCH64_ADR_PREL_PG_HI21, 0x113)
  27. ELF_RELOC(R_AARCH64_ADR_PREL_PG_HI21_NC, 0x114)
  28. ELF_RELOC(R_AARCH64_ADD_ABS_LO12_NC, 0x115)
  29. ELF_RELOC(R_AARCH64_LDST8_ABS_LO12_NC, 0x116)
  30. ELF_RELOC(R_AARCH64_TSTBR14, 0x117)
  31. ELF_RELOC(R_AARCH64_CONDBR19, 0x118)
  32. ELF_RELOC(R_AARCH64_JUMP26, 0x11a)
  33. ELF_RELOC(R_AARCH64_CALL26, 0x11b)
  34. ELF_RELOC(R_AARCH64_LDST16_ABS_LO12_NC, 0x11c)
  35. ELF_RELOC(R_AARCH64_LDST32_ABS_LO12_NC, 0x11d)
  36. ELF_RELOC(R_AARCH64_LDST64_ABS_LO12_NC, 0x11e)
  37. ELF_RELOC(R_AARCH64_MOVW_PREL_G0, 0x11f)
  38. ELF_RELOC(R_AARCH64_MOVW_PREL_G0_NC, 0x120)
  39. ELF_RELOC(R_AARCH64_MOVW_PREL_G1, 0x121)
  40. ELF_RELOC(R_AARCH64_MOVW_PREL_G1_NC, 0x122)
  41. ELF_RELOC(R_AARCH64_MOVW_PREL_G2, 0x123)
  42. ELF_RELOC(R_AARCH64_MOVW_PREL_G2_NC, 0x124)
  43. ELF_RELOC(R_AARCH64_MOVW_PREL_G3, 0x125)
  44. ELF_RELOC(R_AARCH64_LDST128_ABS_LO12_NC, 0x12b)
  45. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G0, 0x12c)
  46. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G0_NC, 0x12d)
  47. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G1, 0x12e)
  48. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G1_NC, 0x12f)
  49. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G2, 0x130)
  50. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G2_NC, 0x131)
  51. ELF_RELOC(R_AARCH64_MOVW_GOTOFF_G3, 0x132)
  52. ELF_RELOC(R_AARCH64_GOTREL64, 0x133)
  53. ELF_RELOC(R_AARCH64_GOTREL32, 0x134)
  54. ELF_RELOC(R_AARCH64_GOT_LD_PREL19, 0x135)
  55. ELF_RELOC(R_AARCH64_LD64_GOTOFF_LO15, 0x136)
  56. ELF_RELOC(R_AARCH64_ADR_GOT_PAGE, 0x137)
  57. ELF_RELOC(R_AARCH64_LD64_GOT_LO12_NC, 0x138)
  58. ELF_RELOC(R_AARCH64_LD64_GOTPAGE_LO15, 0x139)
  59. ELF_RELOC(R_AARCH64_PLT32, 0x13a)
  60. ELF_RELOC(R_AARCH64_TLSGD_ADR_PREL21, 0x200)
  61. ELF_RELOC(R_AARCH64_TLSGD_ADR_PAGE21, 0x201)
  62. ELF_RELOC(R_AARCH64_TLSGD_ADD_LO12_NC, 0x202)
  63. ELF_RELOC(R_AARCH64_TLSGD_MOVW_G1, 0x203)
  64. ELF_RELOC(R_AARCH64_TLSGD_MOVW_G0_NC, 0x204)
  65. ELF_RELOC(R_AARCH64_TLSLD_ADR_PREL21, 0x205)
  66. ELF_RELOC(R_AARCH64_TLSLD_ADR_PAGE21, 0x206)
  67. ELF_RELOC(R_AARCH64_TLSLD_ADD_LO12_NC, 0x207)
  68. ELF_RELOC(R_AARCH64_TLSLD_MOVW_G1, 0x208)
  69. ELF_RELOC(R_AARCH64_TLSLD_MOVW_G0_NC, 0x209)
  70. ELF_RELOC(R_AARCH64_TLSLD_LD_PREL19, 0x20a)
  71. ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G2, 0x20b)
  72. ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1, 0x20c)
  73. ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC, 0x20d)
  74. ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0, 0x20e)
  75. ELF_RELOC(R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC, 0x20f)
  76. ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_HI12, 0x210)
  77. ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_LO12, 0x211)
  78. ELF_RELOC(R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC, 0x212)
  79. ELF_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12, 0x213)
  80. ELF_RELOC(R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC, 0x214)
  81. ELF_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12, 0x215)
  82. ELF_RELOC(R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC, 0x216)
  83. ELF_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12, 0x217)
  84. ELF_RELOC(R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC, 0x218)
  85. ELF_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12, 0x219)
  86. ELF_RELOC(R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC, 0x21a)
  87. ELF_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G1, 0x21b)
  88. ELF_RELOC(R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC, 0x21c)
  89. ELF_RELOC(R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21, 0x21d)
  90. ELF_RELOC(R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC, 0x21e)
  91. ELF_RELOC(R_AARCH64_TLSIE_LD_GOTTPREL_PREL19, 0x21f)
  92. ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G2, 0x220)
  93. ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1, 0x221)
  94. ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G1_NC, 0x222)
  95. ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0, 0x223)
  96. ELF_RELOC(R_AARCH64_TLSLE_MOVW_TPREL_G0_NC, 0x224)
  97. ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_HI12, 0x225)
  98. ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12, 0x226)
  99. ELF_RELOC(R_AARCH64_TLSLE_ADD_TPREL_LO12_NC, 0x227)
  100. ELF_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12, 0x228)
  101. ELF_RELOC(R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC, 0x229)
  102. ELF_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12, 0x22a)
  103. ELF_RELOC(R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, 0x22b)
  104. ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12, 0x22c)
  105. ELF_RELOC(R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, 0x22d)
  106. ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12, 0x22e)
  107. ELF_RELOC(R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, 0x22f)
  108. ELF_RELOC(R_AARCH64_TLSDESC_LD_PREL19, 0x230)
  109. ELF_RELOC(R_AARCH64_TLSDESC_ADR_PREL21, 0x231)
  110. ELF_RELOC(R_AARCH64_TLSDESC_ADR_PAGE21, 0x232)
  111. ELF_RELOC(R_AARCH64_TLSDESC_LD64_LO12, 0x233)
  112. ELF_RELOC(R_AARCH64_TLSDESC_ADD_LO12, 0x234)
  113. ELF_RELOC(R_AARCH64_TLSDESC_OFF_G1, 0x235)
  114. ELF_RELOC(R_AARCH64_TLSDESC_OFF_G0_NC, 0x236)
  115. ELF_RELOC(R_AARCH64_TLSDESC_LDR, 0x237)
  116. ELF_RELOC(R_AARCH64_TLSDESC_ADD, 0x238)
  117. ELF_RELOC(R_AARCH64_TLSDESC_CALL, 0x239)
  118. ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12, 0x23a)
  119. ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC, 0x23b)
  120. ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12, 0x23c)
  121. ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC, 0x23d)
  122. // Dynamic relocations start
  123. ELF_RELOC(R_AARCH64_COPY, 0x400)
  124. ELF_RELOC(R_AARCH64_GLOB_DAT, 0x401)
  125. ELF_RELOC(R_AARCH64_JUMP_SLOT, 0x402)
  126. ELF_RELOC(R_AARCH64_RELATIVE, 0x403)
  127. // 0x404 and 0x405 are now R_AARCH64_TLS_IMPDEF1 and R_AARCH64_TLS_IMPDEF2
  128. // We follow GNU and define TLS_IMPDEF1 as TLS_DTPMOD64 and TLS_IMPDEF2 as
  129. // TLS_DTPREL64
  130. ELF_RELOC(R_AARCH64_TLS_DTPMOD64, 0x404)
  131. ELF_RELOC(R_AARCH64_TLS_DTPREL64, 0x405)
  132. ELF_RELOC(R_AARCH64_TLS_TPREL64, 0x406)
  133. ELF_RELOC(R_AARCH64_TLSDESC, 0x407)
  134. ELF_RELOC(R_AARCH64_IRELATIVE, 0x408)
  135. // ELF_RELOC(R_AARCH64_P32_NONE, 0)
  136. ELF_RELOC(R_AARCH64_P32_ABS32, 0x001)
  137. ELF_RELOC(R_AARCH64_P32_ABS16, 0x002)
  138. ELF_RELOC(R_AARCH64_P32_PREL32, 0x003)
  139. ELF_RELOC(R_AARCH64_P32_PREL16, 0x004)
  140. ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G0, 0x005)
  141. ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G0_NC, 0x006)
  142. ELF_RELOC(R_AARCH64_P32_MOVW_UABS_G1, 0x007)
  143. ELF_RELOC(R_AARCH64_P32_MOVW_SABS_G0, 0x008)
  144. ELF_RELOC(R_AARCH64_P32_LD_PREL_LO19, 0x009)
  145. ELF_RELOC(R_AARCH64_P32_ADR_PREL_LO21, 0x00a)
  146. ELF_RELOC(R_AARCH64_P32_ADR_PREL_PG_HI21, 0x00b)
  147. ELF_RELOC(R_AARCH64_P32_ADD_ABS_LO12_NC, 0x00c)
  148. ELF_RELOC(R_AARCH64_P32_LDST8_ABS_LO12_NC, 0x00d)
  149. ELF_RELOC(R_AARCH64_P32_LDST16_ABS_LO12_NC, 0x00e)
  150. ELF_RELOC(R_AARCH64_P32_LDST32_ABS_LO12_NC, 0x00f)
  151. ELF_RELOC(R_AARCH64_P32_LDST64_ABS_LO12_NC, 0x010)
  152. ELF_RELOC(R_AARCH64_P32_LDST128_ABS_LO12_NC, 0x011)
  153. ELF_RELOC(R_AARCH64_P32_TSTBR14, 0x012)
  154. ELF_RELOC(R_AARCH64_P32_CONDBR19, 0x013)
  155. ELF_RELOC(R_AARCH64_P32_JUMP26, 0x014)
  156. ELF_RELOC(R_AARCH64_P32_CALL26, 0x015)
  157. ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G0, 0x016)
  158. ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G0_NC, 0x017)
  159. ELF_RELOC(R_AARCH64_P32_MOVW_PREL_G1, 0x018)
  160. ELF_RELOC(R_AARCH64_P32_GOT_LD_PREL19, 0x019)
  161. ELF_RELOC(R_AARCH64_P32_ADR_GOT_PAGE, 0x01a)
  162. ELF_RELOC(R_AARCH64_P32_LD32_GOT_LO12_NC, 0x01b)
  163. ELF_RELOC(R_AARCH64_P32_LD32_GOTPAGE_LO14, 0x01c)
  164. ELF_RELOC(R_AARCH64_P32_PLT32, 0x01d)
  165. ELF_RELOC(R_AARCH64_P32_TLSGD_ADR_PREL21, 0x050)
  166. ELF_RELOC(R_AARCH64_P32_TLSGD_ADR_PAGE21, 0x051)
  167. ELF_RELOC(R_AARCH64_P32_TLSGD_ADD_LO12_NC, 0x052)
  168. ELF_RELOC(R_AARCH64_P32_TLSLD_ADR_PREL21, 0x053)
  169. ELF_RELOC(R_AARCH64_P32_TLSLD_ADR_PAGE21, 0x054)
  170. ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_LO12_NC, 0x055)
  171. ELF_RELOC(R_AARCH64_P32_TLSLD_LD_PREL19, 0x056)
  172. ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G1, 0x057)
  173. ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0, 0x058)
  174. ELF_RELOC(R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0_NC, 0x059)
  175. ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_HI12, 0x05a)
  176. ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12, 0x05b)
  177. ELF_RELOC(R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12_NC, 0x05c)
  178. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST8_DTPREL_LO12, 0x05d)
  179. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST8_DTPREL_LO12_NC, 0x05e)
  180. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST16_DTPREL_LO12, 0x05f)
  181. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST16_DTPREL_LO12_NC, 0x060)
  182. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST32_DTPREL_LO12, 0x061)
  183. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST32_DTPREL_LO12_NC, 0x062)
  184. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST64_DTPREL_LO12, 0x063)
  185. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST64_DTPREL_LO12_NC, 0x064)
  186. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST128_DTPREL_LO12, 0x065)
  187. ELF_RELOC(R_AARCH64_P32_TLSLD_LDST128_DTPREL_LO12_NC,0x066)
  188. ELF_RELOC(R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21, 0x067)
  189. ELF_RELOC(R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC, 0x068)
  190. ELF_RELOC(R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19, 0x069)
  191. ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G1, 0x06a)
  192. ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G0, 0x06b)
  193. ELF_RELOC(R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC, 0x06c)
  194. ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_HI12, 0x06d)
  195. ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_LO12, 0x06e)
  196. ELF_RELOC(R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC, 0x06f)
  197. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12, 0x070)
  198. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST8_TPREL_LO12_NC, 0x071)
  199. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12, 0x072)
  200. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST16_TPREL_LO12_NC, 0x073)
  201. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12, 0x074)
  202. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST32_TPREL_LO12_NC, 0x075)
  203. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12, 0x076)
  204. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST64_TPREL_LO12_NC, 0x077)
  205. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST128_TPREL_LO12, 0x078)
  206. ELF_RELOC(R_AARCH64_P32_TLSLE_LDST128_TPREL_LO12_NC, 0x079)
  207. ELF_RELOC(R_AARCH64_P32_TLSDESC_LD_PREL19, 0x07a)
  208. ELF_RELOC(R_AARCH64_P32_TLSDESC_ADR_PREL21, 0x07b)
  209. ELF_RELOC(R_AARCH64_P32_TLSDESC_ADR_PAGE21, 0x07c)
  210. ELF_RELOC(R_AARCH64_P32_TLSDESC_LD32_LO12, 0x07d)
  211. ELF_RELOC(R_AARCH64_P32_TLSDESC_ADD_LO12, 0x07e)
  212. ELF_RELOC(R_AARCH64_P32_TLSDESC_CALL, 0x07f)
  213. // Dynamic relocations start
  214. ELF_RELOC(R_AARCH64_P32_COPY, 0x0b4)
  215. ELF_RELOC(R_AARCH64_P32_GLOB_DAT, 0x0b5)
  216. ELF_RELOC(R_AARCH64_P32_JUMP_SLOT, 0x0b6)
  217. ELF_RELOC(R_AARCH64_P32_RELATIVE, 0x0b7)
  218. ELF_RELOC(R_AARCH64_P32_TLS_DTPREL, 0x0b8)
  219. ELF_RELOC(R_AARCH64_P32_TLS_DTPMOD, 0x0b9)
  220. ELF_RELOC(R_AARCH64_P32_TLS_TPREL, 0x0ba)
  221. ELF_RELOC(R_AARCH64_P32_TLSDESC, 0x0bb)
  222. ELF_RELOC(R_AARCH64_P32_IRELATIVE, 0x0bc)