Subversion Repositories Kolibri OS

Rev

Rev 5191 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* AArch64 ELF support for BFD.
  2.  
  3.    Copyright (C) 2009-2015 Free Software Foundation, Inc.
  4.    Contributed by ARM Ltd.
  5.  
  6.    This file is part of GNU Binutils.
  7.  
  8.    This program is free software; you can redistribute it and/or modify
  9.    it under the terms of the GNU General Public License as published by
  10.    the Free Software Foundation; either version 3 of the license, or
  11.    (at your option) any later version.
  12.  
  13.    This program is distributed in the hope that it will be useful,
  14.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.    GNU General Public License for more details.
  17.  
  18.    You should have received a copy of the GNU General Public License
  19.    along with this program; see the file COPYING3. If not,
  20.    see <http://www.gnu.org/licenses/>.  */
  21.  
  22. #ifndef _ELF_AARCH64_H
  23. #define _ELF_AARCH64_H
  24.  
  25. #include "elf/reloc-macros.h"
  26.  
  27. /* Processor specific program header types.  */
  28. #define PT_AARCH64_ARCHEXT      (PT_LOPROC + 0)
  29.  
  30. /* Additional section types.  */
  31. #define SHT_AARCH64_ATTRIBUTES  0x70000003  /* Section holds attributes.  */
  32.  
  33. /* AArch64-specific values for sh_flags.  */
  34. #define SHF_ENTRYSECT           0x10000000   /* Section contains an
  35.                                                 entry point.  */
  36. #define SHF_COMDEF              0x80000000   /* Section may be multiply defined
  37.                                                 in the input to a link step.  */
  38.  
  39. /* Relocation types.  */
  40.  
  41. START_RELOC_NUMBERS (elf_aarch64_reloc_type)
  42.  
  43. /* Null relocations.  */
  44. RELOC_NUMBER (R_AARCH64_NONE, 0) /* No reloc */
  45.  
  46. /* Basic data relocations.  */
  47.  
  48. /* .word:  (S+A) */
  49. RELOC_NUMBER (R_AARCH64_P32_ABS32, 1)
  50.  
  51. /* .half: (S+A) */
  52. RELOC_NUMBER (R_AARCH64_P32_ABS16, 2)
  53.  
  54. /* .word: (S+A-P) */
  55. RELOC_NUMBER (R_AARCH64_P32_PREL32, 3)
  56.  
  57. /* .half:  (S+A-P) */
  58. RELOC_NUMBER (R_AARCH64_P32_PREL16, 4)
  59.  
  60. /* Group relocations to create a 16, 32, 48 or 64 bit
  61.    unsigned data or abs address inline.  */
  62.  
  63. /* MOV[ZK]:   ((S+A) >>  0) & 0xffff */
  64. RELOC_NUMBER (R_AARCH64_P32_MOVW_UABS_G0, 5)
  65.  
  66. /* MOV[ZK]:   ((S+A) >>  0) & 0xffff */
  67. RELOC_NUMBER (R_AARCH64_P32_MOVW_UABS_G0_NC, 6)
  68.  
  69. /* MOV[ZK]:   ((S+A) >> 16) & 0xffff */
  70. RELOC_NUMBER (R_AARCH64_P32_MOVW_UABS_G1, 7)
  71.  
  72. /* Group relocations to create high part of a 16, 32, 48 or 64 bit
  73.    signed data or abs address inline. Will change instruction
  74.    to MOVN or MOVZ depending on sign of calculated value.  */
  75.  
  76. /* MOV[ZN]:   ((S+A) >>  0) & 0xffff */
  77. RELOC_NUMBER (R_AARCH64_P32_MOVW_SABS_G0, 8)
  78.  
  79. /* Relocations to generate 19, 21 and 33 bit PC-relative load/store
  80.    addresses: PG(x) is (x & ~0xfff).  */
  81.  
  82. /* LD-lit: ((S+A-P) >> 2) & 0x7ffff */
  83. RELOC_NUMBER (R_AARCH64_P32_LD_PREL_LO19, 9)
  84.  
  85. /* ADR:    (S+A-P) & 0x1fffff */
  86. RELOC_NUMBER (R_AARCH64_P32_ADR_PREL_LO21, 10)
  87.  
  88. /* ADRH:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
  89. RELOC_NUMBER (R_AARCH64_P32_ADR_PREL_PG_HI21, 11)
  90.  
  91. /* ADD:    (S+A) & 0xfff */
  92. RELOC_NUMBER (R_AARCH64_P32_ADD_ABS_LO12_NC, 12)
  93.  
  94. /* LD/ST8: (S+A) & 0xfff */
  95. RELOC_NUMBER (R_AARCH64_P32_LDST8_ABS_LO12_NC, 13)
  96.  
  97. /* LD/ST16: (S+A) & 0xffe */
  98. RELOC_NUMBER (R_AARCH64_P32_LDST16_ABS_LO12_NC, 14)
  99.  
  100. /* LD/ST32: (S+A) & 0xffc */
  101. RELOC_NUMBER (R_AARCH64_P32_LDST32_ABS_LO12_NC, 15)
  102.  
  103. /* LD/ST64: (S+A) & 0xff8 */
  104. RELOC_NUMBER (R_AARCH64_P32_LDST64_ABS_LO12_NC, 16)
  105.  
  106. /* LD/ST128: (S+A) & 0xff0 */
  107. RELOC_NUMBER (R_AARCH64_P32_LDST128_ABS_LO12_NC, 17)
  108.  
  109. /* Relocations for control-flow instructions.  */
  110.  
  111. /* TBZ/NZ: ((S+A-P) >> 2) & 0x3fff.  */
  112. RELOC_NUMBER (R_AARCH64_P32_TSTBR14, 18)
  113.  
  114. /* B.cond: ((S+A-P) >> 2) & 0x7ffff.  */
  115. RELOC_NUMBER (R_AARCH64_P32_CONDBR19, 19)
  116.  
  117. /* B:      ((S+A-P) >> 2) & 0x3ffffff.  */
  118. RELOC_NUMBER (R_AARCH64_P32_JUMP26, 20)
  119.  
  120. /* BL:     ((S+A-P) >> 2) & 0x3ffffff.  */
  121. RELOC_NUMBER (R_AARCH64_P32_CALL26, 21)
  122.  
  123.  
  124. RELOC_NUMBER (R_AARCH64_P32_GOT_LD_PREL19, 25)
  125. RELOC_NUMBER (R_AARCH64_P32_ADR_GOT_PAGE, 26)
  126. RELOC_NUMBER (R_AARCH64_P32_LD32_GOT_LO12_NC, 27)
  127. RELOC_NUMBER (R_AARCH64_P32_LD32_GOTPAGE_LO14, 28)
  128.  
  129. RELOC_NUMBER (R_AARCH64_P32_TLSGD_ADR_PREL21, 80)
  130. RELOC_NUMBER (R_AARCH64_P32_TLSGD_ADR_PAGE21, 81)
  131. RELOC_NUMBER (R_AARCH64_P32_TLSGD_ADD_LO12_NC, 82)
  132. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADR_PREL21, 83)
  133. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADR_PAGE21, 84)
  134. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADD_LO12_NC, 85)
  135. RELOC_NUMBER (R_AARCH64_P32_TLSLD_MOVW_DTPREL_G1, 87)
  136. RELOC_NUMBER (R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0, 88)
  137. RELOC_NUMBER (R_AARCH64_P32_TLSLD_MOVW_DTPREL_G0_NC, 89)
  138. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADD_DTPREL_HI12, 90)
  139. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12, 91)
  140. RELOC_NUMBER (R_AARCH64_P32_TLSLD_ADD_DTPREL_LO12_NC, 92)
  141. RELOC_NUMBER (R_AARCH64_P32_TLSIE_ADR_GOTTPREL_PAGE21, 103)
  142. RELOC_NUMBER (R_AARCH64_P32_TLSIE_LD32_GOTTPREL_LO12_NC, 104)
  143. RELOC_NUMBER (R_AARCH64_P32_TLSIE_LD_GOTTPREL_PREL19, 105)
  144. RELOC_NUMBER (R_AARCH64_P32_TLSLE_MOVW_TPREL_G1, 106)
  145. RELOC_NUMBER (R_AARCH64_P32_TLSLE_MOVW_TPREL_G0, 107)
  146. RELOC_NUMBER (R_AARCH64_P32_TLSLE_MOVW_TPREL_G0_NC, 108)
  147. RELOC_NUMBER (R_AARCH64_P32_TLSLE_ADD_TPREL_HI12, 109)
  148. RELOC_NUMBER (R_AARCH64_P32_TLSLE_ADD_TPREL_LO12, 110)
  149. RELOC_NUMBER (R_AARCH64_P32_TLSLE_ADD_TPREL_LO12_NC, 111)
  150.  
  151. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_LD_PREL19, 122)
  152. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_ADR_PREL21, 123)
  153. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_ADR_PAGE21, 124)
  154. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_LD32_LO12_NC, 125)
  155. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_ADD_LO12_NC, 126)
  156. RELOC_NUMBER (R_AARCH64_P32_TLSDESC_CALL, 127)
  157.  
  158. /* Dynamic relocations */
  159.  
  160. /* Copy symbol at runtime.  */
  161. RELOC_NUMBER (R_AARCH64_P32_COPY, 180)
  162.  
  163. /* Create GOT entry.  */
  164. RELOC_NUMBER (R_AARCH64_P32_GLOB_DAT, 181)
  165.  
  166.  /* Create PLT entry.  */
  167. RELOC_NUMBER (R_AARCH64_P32_JUMP_SLOT, 182)
  168.  
  169. /* Adjust by program base.  */
  170. RELOC_NUMBER (R_AARCH64_P32_RELATIVE, 183)
  171. RELOC_NUMBER (R_AARCH64_P32_TLS_DTPMOD, 184)
  172. RELOC_NUMBER (R_AARCH64_P32_TLS_DTPREL, 185)
  173. RELOC_NUMBER (R_AARCH64_P32_TLS_TPREL, 186)
  174. RELOC_NUMBER (R_AARCH64_P32_TLSDESC, 187)
  175. RELOC_NUMBER (R_AARCH64_P32_IRELATIVE, 188)
  176.  
  177. RELOC_NUMBER (R_AARCH64_NULL, 256) /* No reloc */
  178.  
  179. /* Basic data relocations.  */
  180.  
  181. /* .xword: (S+A) */
  182. RELOC_NUMBER (R_AARCH64_ABS64, 257)
  183.  
  184. /* .word:  (S+A) */
  185. RELOC_NUMBER (R_AARCH64_ABS32, 258)
  186.  
  187. /* .half: (S+A) */
  188. RELOC_NUMBER (R_AARCH64_ABS16, 259)
  189.  
  190. /* .xword: (S+A-P) */
  191. RELOC_NUMBER (R_AARCH64_PREL64, 260)
  192.  
  193. /* .word: (S+A-P) */
  194. RELOC_NUMBER (R_AARCH64_PREL32, 261)
  195.  
  196. /* .half:  (S+A-P) */
  197. RELOC_NUMBER (R_AARCH64_PREL16, 262)
  198.  
  199. /* Group relocations to create a 16, 32, 48 or 64 bit
  200.    unsigned data or abs address inline.  */
  201.  
  202. /* MOV[ZK]:   ((S+A) >>  0) & 0xffff */
  203. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G0,           263)
  204.  
  205. /* MOV[ZK]:   ((S+A) >>  0) & 0xffff */
  206. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G0_NC, 264)
  207.  
  208. /* MOV[ZK]:   ((S+A) >> 16) & 0xffff */
  209. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G1, 265)
  210.  
  211. /* MOV[ZK]:   ((S+A) >> 16) & 0xffff */
  212. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G1_NC, 266)
  213.  
  214. /* MOV[ZK]:   ((S+A) >> 32) & 0xffff */
  215. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G2, 267)
  216.  
  217. /* MOV[ZK]:   ((S+A) >> 32) & 0xffff */
  218. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G2_NC, 268)
  219.  
  220. /* MOV[ZK]:   ((S+A) >> 48) & 0xffff */
  221. RELOC_NUMBER (R_AARCH64_MOVW_UABS_G3, 269)
  222.  
  223. /* Group relocations to create high part of a 16, 32, 48 or 64 bit
  224.    signed data or abs address inline. Will change instruction
  225.    to MOVN or MOVZ depending on sign of calculated value.  */
  226.  
  227. /* MOV[ZN]:   ((S+A) >>  0) & 0xffff */
  228. RELOC_NUMBER (R_AARCH64_MOVW_SABS_G0, 270)
  229.  
  230. /* MOV[ZN]:   ((S+A) >> 16) & 0xffff */
  231. RELOC_NUMBER (R_AARCH64_MOVW_SABS_G1, 271)
  232.  
  233. /* MOV[ZN]:   ((S+A) >> 32) & 0xffff */
  234. RELOC_NUMBER (R_AARCH64_MOVW_SABS_G2, 272)
  235.  
  236. /* Relocations to generate 19, 21 and 33 bit PC-relative load/store
  237.    addresses: PG(x) is (x & ~0xfff).  */
  238.  
  239. /* LD-lit: ((S+A-P) >> 2) & 0x7ffff */
  240. RELOC_NUMBER (R_AARCH64_LD_PREL_LO19, 273)
  241.  
  242. /* ADR:    (S+A-P) & 0x1fffff */
  243. RELOC_NUMBER (R_AARCH64_ADR_PREL_LO21, 274)
  244.  
  245. /* ADRH:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
  246. RELOC_NUMBER (R_AARCH64_ADR_PREL_PG_HI21, 275)
  247.  
  248. /* ADRH:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
  249. RELOC_NUMBER (R_AARCH64_ADR_PREL_PG_HI21_NC, 276)
  250.  
  251. /* ADD:    (S+A) & 0xfff */
  252. RELOC_NUMBER (R_AARCH64_ADD_ABS_LO12_NC, 277)
  253.  
  254. /* LD/ST8: (S+A) & 0xfff */
  255. RELOC_NUMBER (R_AARCH64_LDST8_ABS_LO12_NC, 278)
  256.  
  257. /* Relocations for control-flow instructions.  */
  258.  
  259. /* TBZ/NZ: ((S+A-P) >> 2) & 0x3fff.  */
  260. RELOC_NUMBER (R_AARCH64_TSTBR14, 279)
  261.  
  262. /* B.cond: ((S+A-P) >> 2) & 0x7ffff.  */
  263. RELOC_NUMBER (R_AARCH64_CONDBR19, 280)
  264.  
  265. /* 281 unused */
  266.  
  267. /* B:      ((S+A-P) >> 2) & 0x3ffffff.  */
  268. RELOC_NUMBER (R_AARCH64_JUMP26, 282)
  269.  
  270. /* BL:     ((S+A-P) >> 2) & 0x3ffffff.  */
  271. RELOC_NUMBER (R_AARCH64_CALL26, 283)
  272.  
  273. /* LD/ST16: (S+A) & 0xffe */
  274. RELOC_NUMBER (R_AARCH64_LDST16_ABS_LO12_NC, 284)
  275.  
  276. /* LD/ST32: (S+A) & 0xffc */
  277. RELOC_NUMBER (R_AARCH64_LDST32_ABS_LO12_NC, 285)
  278.  
  279. /* LD/ST64: (S+A) & 0xff8 */
  280. RELOC_NUMBER (R_AARCH64_LDST64_ABS_LO12_NC, 286)
  281.  
  282. /* Group relocations to create a 16, 32, 48, or 64 bit PC-relative
  283.    offset inline.  */
  284.  
  285. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G0, 287)
  286. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G0_NC, 288)
  287. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G1, 289)
  288. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G1_NC, 290)
  289. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G2, 291)
  290. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G2_NC, 292)
  291. RELOC_NUMBER (R_AARCH64_MOVW_PREL_G3, 293)
  292.  
  293. /* LD/ST128: (S+A) & 0xff0 */
  294. RELOC_NUMBER (R_AARCH64_LDST128_ABS_LO12_NC, 299)
  295.  
  296. /* Group relocations to create a 16, 32, 48, or 64 bit GOT-relative
  297.    offset inline.  */
  298.  
  299. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G0, 300)
  300. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G0_NC, 301)
  301. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G1, 302)
  302. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G1_NC, 303)
  303. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G2, 304)
  304. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G2_NC, 305)
  305. RELOC_NUMBER (R_AARCH64_MOVW_GOTOFF_G3, 306)
  306.  
  307. /* GOT-relative data relocations.  */
  308.  
  309. RELOC_NUMBER (R_AARCH64_GOTREL64, 307)
  310. RELOC_NUMBER (R_AARCH64_GOTREL32, 308)
  311.  
  312. /* GOT-relative instruction relocations.  */
  313.  
  314. RELOC_NUMBER (R_AARCH64_GOT_LD_PREL19, 309)
  315. RELOC_NUMBER (R_AARCH64_LD64_GOTOFF_LO15, 310)
  316. RELOC_NUMBER (R_AARCH64_ADR_GOT_PAGE, 311)
  317. RELOC_NUMBER (R_AARCH64_LD64_GOT_LO12_NC, 312)
  318. RELOC_NUMBER (R_AARCH64_LD64_GOTPAGE_LO15, 313)
  319.  
  320. /* General Dynamic TLS relocations.  */
  321.  
  322. RELOC_NUMBER (R_AARCH64_TLSGD_ADR_PREL21, 512)
  323. RELOC_NUMBER (R_AARCH64_TLSGD_ADR_PAGE21, 513)
  324. RELOC_NUMBER (R_AARCH64_TLSGD_ADD_LO12_NC, 514)
  325. RELOC_NUMBER (R_AARCH64_TLSGD_MOVW_G1, 515)
  326. RELOC_NUMBER (R_AARCH64_TLSGD_MOVW_G0_NC, 516)
  327.  
  328. /* Local Dynamic TLS relocations.  */
  329.  
  330. RELOC_NUMBER (R_AARCH64_TLSLD_ADR_PREL21, 517)
  331. RELOC_NUMBER (R_AARCH64_TLSLD_ADR_PAGE21, 518)
  332. RELOC_NUMBER (R_AARCH64_TLSLD_ADD_LO12_NC, 519)
  333. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_G1, 520)
  334. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_G0_NC, 521)
  335. RELOC_NUMBER (R_AARCH64_TLSLD_LD_PREL19, 522)
  336. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_DTPREL_G2, 523)
  337. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_DTPREL_G1, 524)
  338. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC, 525)
  339. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_DTPREL_G0, 526)
  340. RELOC_NUMBER (R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC, 527)
  341. RELOC_NUMBER (R_AARCH64_TLSLD_ADD_DTPREL_HI12, 528)
  342. RELOC_NUMBER (R_AARCH64_TLSLD_ADD_DTPREL_LO12, 529)
  343. RELOC_NUMBER (R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC, 530)
  344. RELOC_NUMBER (R_AARCH64_TLSLD_LDST8_DTPREL_LO12, 531)
  345. RELOC_NUMBER (R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC, 532)
  346. RELOC_NUMBER (R_AARCH64_TLSLD_LDST16_DTPREL_LO12, 533)
  347. RELOC_NUMBER (R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC, 534)
  348. RELOC_NUMBER (R_AARCH64_TLSLD_LDST32_DTPREL_LO12, 535)
  349. RELOC_NUMBER (R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC, 536)
  350. RELOC_NUMBER (R_AARCH64_TLSLD_LDST64_DTPREL_LO12, 537)
  351. RELOC_NUMBER (R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC, 538)
  352.  
  353. /* Initial Exec TLS relocations.  */
  354.  
  355. RELOC_NUMBER (R_AARCH64_TLSIE_MOVW_GOTTPREL_G1, 539)
  356. RELOC_NUMBER (R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC, 540)
  357. RELOC_NUMBER (R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21, 541)
  358. RELOC_NUMBER (R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC, 542)
  359. RELOC_NUMBER (R_AARCH64_TLSIE_LD_GOTTPREL_PREL19, 543)
  360.  
  361. /* Local Exec TLS relocations.  */
  362.  
  363. RELOC_NUMBER (R_AARCH64_TLSLE_MOVW_TPREL_G2, 544)
  364. RELOC_NUMBER (R_AARCH64_TLSLE_MOVW_TPREL_G1, 545)
  365. RELOC_NUMBER (R_AARCH64_TLSLE_MOVW_TPREL_G1_NC, 546)
  366. RELOC_NUMBER (R_AARCH64_TLSLE_MOVW_TPREL_G0, 547)
  367. RELOC_NUMBER (R_AARCH64_TLSLE_MOVW_TPREL_G0_NC, 548)
  368. RELOC_NUMBER (R_AARCH64_TLSLE_ADD_TPREL_HI12, 549)
  369. RELOC_NUMBER (R_AARCH64_TLSLE_ADD_TPREL_LO12, 550)
  370. RELOC_NUMBER (R_AARCH64_TLSLE_ADD_TPREL_LO12_NC, 551)
  371. RELOC_NUMBER (R_AARCH64_TLSLE_LDST8_TPREL_LO12, 552)
  372. RELOC_NUMBER (R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC, 553)
  373. RELOC_NUMBER (R_AARCH64_TLSLE_LDST16_TPREL_LO12, 554)
  374. RELOC_NUMBER (R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC, 555)
  375. RELOC_NUMBER (R_AARCH64_TLSLE_LDST32_TPREL_LO12, 556)
  376. RELOC_NUMBER (R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC, 557)
  377. RELOC_NUMBER (R_AARCH64_TLSLE_LDST64_TPREL_LO12, 558)
  378. RELOC_NUMBER (R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC, 559)
  379.  
  380. /* TLS descriptor relocations.  */
  381.  
  382. RELOC_NUMBER (R_AARCH64_TLSDESC_LD_PREL19, 560)
  383. RELOC_NUMBER (R_AARCH64_TLSDESC_ADR_PREL21, 561)
  384. RELOC_NUMBER (R_AARCH64_TLSDESC_ADR_PAGE21, 562)
  385. RELOC_NUMBER (R_AARCH64_TLSDESC_LD64_LO12_NC, 563)
  386. RELOC_NUMBER (R_AARCH64_TLSDESC_ADD_LO12_NC, 564)
  387. RELOC_NUMBER (R_AARCH64_TLSDESC_OFF_G1, 565)
  388. RELOC_NUMBER (R_AARCH64_TLSDESC_OFF_G0_NC, 566)
  389. RELOC_NUMBER (R_AARCH64_TLSDESC_LDR, 567)
  390. RELOC_NUMBER (R_AARCH64_TLSDESC_ADD, 568)
  391. RELOC_NUMBER (R_AARCH64_TLSDESC_CALL, 569)
  392.  
  393. RELOC_NUMBER (R_AARCH64_TLSLE_LDST128_TPREL_LO12, 570)
  394. RELOC_NUMBER (R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC, 571)
  395. RELOC_NUMBER (R_AARCH64_TLSLD_LDST128_DTPREL_LO12, 572)
  396. RELOC_NUMBER (R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC, 573)
  397.  
  398. /* Dynamic relocations */
  399.  
  400. /* Copy symbol at runtime.  */
  401. RELOC_NUMBER (R_AARCH64_COPY, 1024)
  402.  
  403. /* Create GOT entry.  */
  404. RELOC_NUMBER (R_AARCH64_GLOB_DAT, 1025)
  405.  
  406.  /* Create PLT entry.  */
  407. RELOC_NUMBER (R_AARCH64_JUMP_SLOT, 1026)
  408.  
  409. /* Adjust by program base.  */
  410. RELOC_NUMBER (R_AARCH64_RELATIVE, 1027)
  411. RELOC_NUMBER (R_AARCH64_TLS_DTPMOD64, 1028)
  412. RELOC_NUMBER (R_AARCH64_TLS_DTPREL64, 1029)
  413. RELOC_NUMBER (R_AARCH64_TLS_TPREL64, 1030)
  414. /* Aliasing relocs are guarded by RELOC_MACROS_GEN_FUNC
  415.    so that readelf.c won't generate duplicated case
  416.    statements.  */
  417. #ifndef RELOC_MACROS_GEN_FUNC
  418. RELOC_NUMBER (R_AARCH64_TLS_DTPMOD, 1028)
  419. RELOC_NUMBER (R_AARCH64_TLS_DTPREL, 1029)
  420. RELOC_NUMBER (R_AARCH64_TLS_TPREL, 1030)
  421. #endif
  422. RELOC_NUMBER (R_AARCH64_TLSDESC, 1031)
  423. RELOC_NUMBER (R_AARCH64_IRELATIVE, 1032)
  424.  
  425. END_RELOC_NUMBERS (R_AARCH64_end)
  426.  
  427. #endif /* _ELF_AARCH64_H */
  428.