blob: bb6e72751a88991d26ef2ed903f6fe25adf7a3c9 [file] [log] [blame]
//===- ARMRelocationFunction.h --------------------------------------------===//
//
// The MCLinker Project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#define DECL_ARM_APPLY_RELOC_FUNC(Name) \
static ARMRelocationFactory::Result Name (Relocation& pEntry, \
const MCLDInfo& pLDInfo, \
ARMRelocationFactory& pParent);
#define DECL_ARM_APPLY_RELOC_FUNCS \
DECL_ARM_APPLY_RELOC_FUNC(none) \
DECL_ARM_APPLY_RELOC_FUNC(abs32) \
DECL_ARM_APPLY_RELOC_FUNC(rel32) \
DECL_ARM_APPLY_RELOC_FUNC(gotoff32) \
DECL_ARM_APPLY_RELOC_FUNC(base_prel) \
DECL_ARM_APPLY_RELOC_FUNC(got_brel) \
DECL_ARM_APPLY_RELOC_FUNC(call) \
DECL_ARM_APPLY_RELOC_FUNC(thm_call) \
DECL_ARM_APPLY_RELOC_FUNC(movw_prel_nc) \
DECL_ARM_APPLY_RELOC_FUNC(movw_abs_nc) \
DECL_ARM_APPLY_RELOC_FUNC(movt_abs) \
DECL_ARM_APPLY_RELOC_FUNC(movt_prel) \
DECL_ARM_APPLY_RELOC_FUNC(thm_movw_abs_nc) \
DECL_ARM_APPLY_RELOC_FUNC(thm_movw_prel_nc) \
DECL_ARM_APPLY_RELOC_FUNC(thm_movw_brel) \
DECL_ARM_APPLY_RELOC_FUNC(thm_movt_abs) \
DECL_ARM_APPLY_RELOC_FUNC(thm_movt_prel) \
DECL_ARM_APPLY_RELOC_FUNC(prel31) \
DECL_ARM_APPLY_RELOC_FUNC(got_prel) \
DECL_ARM_APPLY_RELOC_FUNC(tls) \
DECL_ARM_APPLY_RELOC_FUNC(unsupport)
#define DECL_ARM_APPLY_RELOC_FUNC_PTRS \
{ &none, 0, "R_ARM_NONE" }, \
{ &unsupport, 1, "R_ARM_PC24" }, \
{ &abs32, 2, "R_ARM_ABS32" }, \
{ &rel32, 3, "R_ARM_REL32" }, \
{ &unsupport, 4, "R_ARM_LDR_PC_G0" }, \
{ &unsupport, 5, "R_ARM_ABS16" }, \
{ &unsupport, 6, "R_ARM_ABS12" }, \
{ &unsupport, 7, "R_ARM_THM_ABS5" }, \
{ &unsupport, 8, "R_ARM_ABS8" }, \
{ &unsupport, 9, "R_ARM_SBREL32" }, \
{ &thm_call, 10, "R_ARM_THM_CALL" }, \
{ &unsupport, 11, "R_ARM_THM_PC8" }, \
{ &unsupport, 12, "R_ARM_BREL_ADJ" }, \
{ &unsupport, 13, "R_ARM_TLS_DESC" }, \
{ &unsupport, 14, "R_ARM_THM_SWI8" }, \
{ &unsupport, 15, "R_ARM_XPC25" }, \
{ &unsupport, 16, "R_ARM_THM_XPC22" }, \
{ &unsupport, 17, "R_ARM_TLS_DTPMOD32" }, \
{ &unsupport, 18, "R_ARM_TLS_DTPOFF32" }, \
{ &unsupport, 19, "R_ARM_TLS_TPOFF32" }, \
{ &unsupport, 20, "R_ARM_COPY" }, \
{ &unsupport, 21, "R_ARM_GLOB_DAT" }, \
{ &unsupport, 22, "R_ARM_JUMP_SLOT" }, \
{ &unsupport, 23, "R_ARM_RELATIVE" }, \
{ &gotoff32, 24, "R_ARM_GOTOFF32" }, \
{ &base_prel, 25, "R_ARM_BASE_PREL" }, \
{ &got_brel, 26, "R_ARM_GOT_BREL" }, \
{ &call, 27, "R_ARM_PLT32" }, \
{ &call, 28, "R_ARM_CALL" }, \
{ &call, 29, "R_ARM_JUMP24" }, \
{ &thm_call, 30, "R_ARM_THM_JUMP24" }, \
{ &unsupport, 31, "R_ARM_BASE_ABS" }, \
{ &unsupport, 32, "R_ARM_ALU_PCREL_7_0" }, \
{ &unsupport, 33, "R_ARM_ALU_PCREL_15_8" }, \
{ &unsupport, 34, "R_ARM_ALU_PCREL_23_15" }, \
{ &unsupport, 35, "R_ARM_LDR_SBREL_11_0_NC" }, \
{ &unsupport, 36, "R_ARM_ALU_SBREL_19_12_NC"}, \
{ &unsupport, 37, "R_ARM_ALU_SBREL_27_20_CK"}, \
{ &abs32, 38, "R_ARM_TARGET1" }, \
{ &unsupport, 39, "R_ARM_SBREL31" }, \
{ &unsupport, 40, "R_ARM_V4BX" }, \
{ &got_prel, 41, "R_ARM_TARGET2" }, \
{ &prel31, 42, "R_ARM_PREL31" }, \
{ &movw_abs_nc, 43, "R_ARM_MOVW_ABS_NC" }, \
{ &movt_abs, 44, "R_ARM_MOVT_ABS" }, \
{ &movw_prel_nc, 45, "R_ARM_MOVW_PREL_NC" }, \
{ &movt_prel, 46, "R_ARM_MOVT_PREL" }, \
{ &thm_movw_abs_nc, 47, "R_ARM_THM_MOVW_ABS_NC" }, \
{ &thm_movt_abs, 48, "R_ARM_THM_MOVT_ABS" }, \
{ &thm_movw_prel_nc, 49, "R_ARM_THM_MOVW_PREL_NC" }, \
{ &thm_movt_prel, 50, "R_ARM_THM_MOVT_PREL" }, \
{ &unsupport, 51, "R_ARM_THM_JUMP19" }, \
{ &unsupport, 52, "R_ARM_THM_JUMP6" }, \
{ &unsupport, 53, "R_ARM_THM_ALU_PREL_11_0" }, \
{ &unsupport, 54, "R_ARM_THM_PC12" }, \
{ &unsupport, 55, "R_ARM_ABS32_NOI" }, \
{ &unsupport, 56, "R_ARM_REL32_NOI" }, \
{ &unsupport, 57, "R_ARM_ALU_PC_G0_NC" }, \
{ &unsupport, 58, "R_ARM_ALU_PC_G0" }, \
{ &unsupport, 59, "R_ARM_ALU_PC_G1_NC" }, \
{ &unsupport, 60, "R_ARM_ALU_PC_G1" }, \
{ &unsupport, 61, "R_ARM_ALU_PC_G2" }, \
{ &unsupport, 62, "R_ARM_LDR_PC_G1" }, \
{ &unsupport, 63, "R_ARM_LDR_PC_G2" }, \
{ &unsupport, 64, "R_ARM_LDRS_PC_G0" }, \
{ &unsupport, 65, "R_ARM_LDRS_PC_G1" }, \
{ &unsupport, 66, "R_ARM_LDRS_PC_G2" }, \
{ &unsupport, 67, "R_ARM_LDC_PC_G0" }, \
{ &unsupport, 68, "R_ARM_LDC_PC_G1" }, \
{ &unsupport, 69, "R_ARM_LDC_PC_G2" }, \
{ &unsupport, 70, "R_ARM_ALU_SB_G0_NC" }, \
{ &unsupport, 71, "R_ARM_ALU_SB_G0" }, \
{ &unsupport, 72, "R_ARM_ALU_SB_G1_NC" }, \
{ &unsupport, 73, "R_ARM_ALU_SB_G1" }, \
{ &unsupport, 74, "R_ARM_ALU_SB_G2" }, \
{ &unsupport, 75, "R_ARM_LDR_SB_G0" }, \
{ &unsupport, 76, "R_ARM_LDR_SB_G1" }, \
{ &unsupport, 77, "R_ARM_LDR_SB_G2" }, \
{ &unsupport, 78, "R_ARM_LDRS_SB_G0" }, \
{ &unsupport, 79, "R_ARM_LDRS_SB_G1" }, \
{ &unsupport, 80, "R_ARM_LDRS_SB_G2" }, \
{ &unsupport, 81, "R_ARM_LDC_SB_G0" }, \
{ &unsupport, 82, "R_ARM_LDC_SB_G1" }, \
{ &unsupport, 83, "R_ARM_LDC_SB_G2" }, \
{ &unsupport, 84, "R_ARM_MOVW_BREL_NC" }, \
{ &unsupport, 85, "R_ARM_MOVT_BREL" }, \
{ &unsupport, 86, "R_ARM_MOVW_BREL" }, \
{ &thm_movw_brel, 87, "R_ARM_THM_MOVW_BREL_NC" }, \
{ &thm_movt_prel, 88, "R_ARM_THM_MOVT_BREL" }, \
{ &thm_movw_brel, 89, "R_ARM_THM_MOVW_BREL" }, \
{ &unsupport, 90, "R_ARM_TLS_GOTDESC" }, \
{ &unsupport, 91, "R_ARM_TLS_CALL" }, \
{ &unsupport, 92, "R_ARM_TLS_DESCSEQ" }, \
{ &unsupport, 93, "R_ARM_THM_TLS_CALL" }, \
{ &unsupport, 94, "R_ARM_PLT32_ABS" }, \
{ &unsupport, 95, "R_ARM_GOT_ABS" }, \
{ &got_prel, 96, "R_ARM_GOT_PREL" }, \
{ &unsupport, 97, "R_ARM_GOT_PREL12" }, \
{ &unsupport, 98, "R_ARM_GOTOFF12" }, \
{ &unsupport, 99, "R_ARM_GOTRELAX" }, \
{ &unsupport, 100, "R_ARM_GNU_VTENTRY" }, \
{ &unsupport, 101, "R_ARM_GNU_VTINERIT" }, \
{ &unsupport, 102, "R_ARM_THM_JUMP11" }, \
{ &unsupport, 103, "R_ARM_THM_JUMP8" }, \
{ &tls, 104, "R_ARM_TLS_GD32" }, \
{ &unsupport, 105, "R_ARM_TLS_LDM32" }, \
{ &unsupport, 106, "R_ARM_TLS_LDO32" }, \
{ &tls, 107, "R_ARM_TLS_IE32" }, \
{ &tls, 108, "R_ARM_TLS_LE32" }, \
{ &unsupport, 109, "R_ARM_TLS_LDO12" }, \
{ &unsupport, 110, "R_ARM_TLS_LE12" }, \
{ &unsupport, 111, "R_ARM_TLS_IE12GP" }, \
{ &unsupport, 112, "R_ARM_PRIVATE_0" }, \
{ &unsupport, 113, "R_ARM_PRIVATE_1" }, \
{ &unsupport, 114, "R_ARM_PRIVATE_2" }, \
{ &unsupport, 115, "R_ARM_PRIVATE_3" }, \
{ &unsupport, 116, "R_ARM_PRIVATE_4" }, \
{ &unsupport, 117, "R_ARM_PRIVATE_5" }, \
{ &unsupport, 118, "R_ARM_PRIVATE_6" }, \
{ &unsupport, 119, "R_ARM_PRIVATE_7" }, \
{ &unsupport, 120, "R_ARM_PRIVATE_8" }, \
{ &unsupport, 121, "R_ARM_PRIVATE_9" }, \
{ &unsupport, 122, "R_ARM_PRIVATE_10" }, \
{ &unsupport, 123, "R_ARM_PRIVATE_11" }, \
{ &unsupport, 124, "R_ARM_PRIVATE_12" }, \
{ &unsupport, 125, "R_ARM_PRIVATE_13" }, \
{ &unsupport, 126, "R_ARM_PRIVATE_14" }, \
{ &unsupport, 127, "R_ARM_PRIVATE_15" }, \
{ &unsupport, 128, "R_ARM_ME_TOO" }, \
{ &unsupport, 129, "R_ARM_THM_TLS_DESCSEQ16" }, \
{ &unsupport, 130, "R_ARM_THM_TLS_DESCSEQ32" }