1//===- AArch64RelocationFunction.h ----------------------------------------===// 2// 3// The MCLinker Project 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#define DECL_AARCH64_APPLY_RELOC_FUNC(Name) \ 11static AArch64Relocator::Result Name (Relocation& pEntry, AArch64Relocator& pParent); 12 13#define DECL_AARCH64_APPLY_RELOC_FUNCS \ 14DECL_AARCH64_APPLY_RELOC_FUNC(none) \ 15DECL_AARCH64_APPLY_RELOC_FUNC(abs) \ 16DECL_AARCH64_APPLY_RELOC_FUNC(rel) \ 17DECL_AARCH64_APPLY_RELOC_FUNC(call) \ 18DECL_AARCH64_APPLY_RELOC_FUNC(condbr) \ 19DECL_AARCH64_APPLY_RELOC_FUNC(adr_prel_pg_hi21) \ 20DECL_AARCH64_APPLY_RELOC_FUNC(add_abs_lo12) \ 21DECL_AARCH64_APPLY_RELOC_FUNC(adr_got_page) \ 22DECL_AARCH64_APPLY_RELOC_FUNC(ld64_got_lo12) \ 23DECL_AARCH64_APPLY_RELOC_FUNC(ldst_abs_lo12) \ 24DECL_AARCH64_APPLY_RELOC_FUNC(unsupport) 25 26#define DECL_AARCH64_APPLY_RELOC_FUNC_PTRS(ValueType, MappedType) \ 27 ValueType(0x0, MappedType(&none, "R_AARCH64_NULL")), \ 28 ValueType(0x100, MappedType(&none, "R_AARCH64_NONE")), \ 29 ValueType(0x101, MappedType(&abs, "R_AARCH64_ABS64", 64)), \ 30 ValueType(0x102, MappedType(&abs, "R_AARCH64_ABS32", 32)), \ 31 ValueType(0x103, MappedType(&abs, "R_AARCH64_ABS16", 16)), \ 32 ValueType(0x104, MappedType(&rel, "R_AARCH64_PREL64", 64)), \ 33 ValueType(0x105, MappedType(&rel, "R_AARCH64_PREL32", 32)), \ 34 ValueType(0x106, MappedType(&rel, "R_AARCH64_PREL16", 16)), \ 35 ValueType(0x107, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G0")), \ 36 ValueType(0x108, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G0_NC")), \ 37 ValueType(0x109, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G1")), \ 38 ValueType(0x10a, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G1_NC")), \ 39 ValueType(0x10b, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G2")), \ 40 ValueType(0x10c, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G2_NC")), \ 41 ValueType(0x10d, MappedType(&unsupport, "R_AARCH64_MOVW_UABS_G3")), \ 42 ValueType(0x10e, MappedType(&unsupport, "R_AARCH64_MOVW_SABS_G0")), \ 43 ValueType(0x10f, MappedType(&unsupport, "R_AARCH64_MOVW_SABS_G1")), \ 44 ValueType(0x110, MappedType(&unsupport, "R_AARCH64_MOVW_SABS_G2")), \ 45 ValueType(0x111, MappedType(&unsupport, "R_AARCH64_LD_PREL_LO19")), \ 46 ValueType(0x112, MappedType(&unsupport, "R_AARCH64_ADR_PREL_LO21")), \ 47 ValueType(0x113, MappedType(&adr_prel_pg_hi21, "R_AARCH64_ADR_PREL_PG_HI21", 32)), \ 48 ValueType(0x114, MappedType(&adr_prel_pg_hi21, "R_AARCH64_ADR_PREL_PG_HI21_NC", 32)), \ 49 ValueType(0x115, MappedType(&add_abs_lo12, "R_AARCH64_ADD_ABS_LO12_NC", 32)), \ 50 ValueType(0x116, MappedType(&ldst_abs_lo12, "R_AARCH64_LDST8_ABS_LO12_NC", 32)), \ 51 ValueType(0x117, MappedType(&unsupport, "R_AARCH64_TSTBR14")), \ 52 ValueType(0x118, MappedType(&condbr, "R_AARCH64_CONDBR19", 32)), \ 53 ValueType(0x11a, MappedType(&call, "R_AARCH64_JUMP26", 32)), \ 54 ValueType(0x11b, MappedType(&call, "R_AARCH64_CALL26", 32)), \ 55 ValueType(0x11c, MappedType(&ldst_abs_lo12, "R_AARCH64_LDST16_ABS_LO12_NC", 32)), \ 56 ValueType(0x11d, MappedType(&ldst_abs_lo12, "R_AARCH64_LDST32_ABS_LO12_NC", 32)), \ 57 ValueType(0x11e, MappedType(&ldst_abs_lo12, "R_AARCH64_LDST64_ABS_LO12_NC", 32)), \ 58 ValueType(0x12b, MappedType(&ldst_abs_lo12, "R_AARCH64_LDST128_ABS_LO12_NC", 32)), \ 59 ValueType(0x137, MappedType(&adr_got_page, "R_AARCH64_ADR_GOT_PAGE", 32)), \ 60 ValueType(0x138, MappedType(&ld64_got_lo12, "R_AARCH64_LD64_GOT_LO12_NC", 32)), \ 61 ValueType(0x20b, MappedType(&unsupport, "R_AARCH64_TLSLD_MOVW_DTPREL_G2")), \ 62 ValueType(0x20c, MappedType(&unsupport, "R_AARCH64_TLSLD_MOVW_DTPREL_G1")), \ 63 ValueType(0x20d, MappedType(&unsupport, "R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC")), \ 64 ValueType(0x20e, MappedType(&unsupport, "R_AARCH64_TLSLD_MOVW_DTPREL_G0")), \ 65 ValueType(0x20f, MappedType(&unsupport, "R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC")), \ 66 ValueType(0x210, MappedType(&unsupport, "R_AARCH64_TLSLD_ADD_DTPREL_HI12")), \ 67 ValueType(0x211, MappedType(&unsupport, "R_AARCH64_TLSLD_ADD_DTPREL_LO12")), \ 68 ValueType(0x212, MappedType(&unsupport, "R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC")), \ 69 ValueType(0x213, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST8_DTPREL_LO12")), \ 70 ValueType(0x214, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC")), \ 71 ValueType(0x215, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST16_DTPREL_LO12")), \ 72 ValueType(0x216, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC")), \ 73 ValueType(0x217, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST32_DTPREL_LO12")), \ 74 ValueType(0x218, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC")), \ 75 ValueType(0x219, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST64_DTPREL_LO12")), \ 76 ValueType(0x21a, MappedType(&unsupport, "R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC")), \ 77 ValueType(0x21b, MappedType(&unsupport, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1")), \ 78 ValueType(0x21c, MappedType(&unsupport, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC")), \ 79 ValueType(0x21d, MappedType(&unsupport, "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21")), \ 80 ValueType(0x21e, MappedType(&unsupport, "R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC")), \ 81 ValueType(0x21f, MappedType(&unsupport, "R_AARCH64_TLSIE_LD_GOTTPREL_PREL19")), \ 82 ValueType(0x220, MappedType(&unsupport, "R_AARCH64_TLSLE_MOVW_TPREL_G2")), \ 83 ValueType(0x221, MappedType(&unsupport, "R_AARCH64_TLSLE_MOVW_TPREL_G1")), \ 84 ValueType(0x222, MappedType(&unsupport, "R_AARCH64_TLSLE_MOVW_TPREL_G1_NC")), \ 85 ValueType(0x223, MappedType(&unsupport, "R_AARCH64_TLSLE_MOVW_TPREL_G0")), \ 86 ValueType(0x224, MappedType(&unsupport, "R_AARCH64_TLSLE_MOVW_TPREL_G0_NC")), \ 87 ValueType(0x225, MappedType(&unsupport, "R_AARCH64_TLSLE_ADD_TPREL_HI12")), \ 88 ValueType(0x226, MappedType(&unsupport, "R_AARCH64_TLSLE_ADD_TPREL_LO12")), \ 89 ValueType(0x227, MappedType(&unsupport, "R_AARCH64_TLSLE_ADD_TPREL_LO12_NC")), \ 90 ValueType(0x228, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST8_TPREL_LO12")), \ 91 ValueType(0x229, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC")), \ 92 ValueType(0x22a, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST16_TPREL_LO12")), \ 93 ValueType(0x22b, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC")), \ 94 ValueType(0x22c, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST32_TPREL_LO12")), \ 95 ValueType(0x22d, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC")), \ 96 ValueType(0x22e, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST64_TPREL_LO12")), \ 97 ValueType(0x22f, MappedType(&unsupport, "R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC")), \ 98 ValueType(0x232, MappedType(&unsupport, "R_AARCH64_TLSDESC_ADR_PAGE")), \ 99 ValueType(0x233, MappedType(&unsupport, "R_AARCH64_TLSDESC_LD64_LO12_NC")), \ 100 ValueType(0x234, MappedType(&unsupport, "R_AARCH64_TLSDESC_ADD_LO12_NC")), \ 101 ValueType(0x239, MappedType(&unsupport, "R_AARCH64_TLSDESC_CALL")), \ 102 ValueType( 1024, MappedType(&unsupport, "R_AARCH64_COPY")), \ 103 ValueType( 1025, MappedType(&unsupport, "R_AARCH64_GLOB_DAT")), \ 104 ValueType( 1026, MappedType(&unsupport, "R_AARCH64_JUMP_SLOT")), \ 105 ValueType( 1027, MappedType(&unsupport, "R_AARCH64_RELATIVE")), \ 106 ValueType( 1028, MappedType(&unsupport, "R_AARCH64_TLS_DTPREL64")), \ 107 ValueType( 1029, MappedType(&unsupport, "R_AARCH64_TLS_DTPMOD64")), \ 108 ValueType( 1030, MappedType(&unsupport, "R_AARCH64_TLS_TPREL64")), \ 109 ValueType( 1031, MappedType(&unsupport, "R_AARCH64_TLSDESC")), \ 110 ValueType( 1032, MappedType(&unsupport, "R_AARCH64_IRELATIVE")) 111