diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2016-03-10 19:30:18 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2016-03-10 19:30:18 +0000 |
commit | aba16fca5de0aeb61d35c4e9261fa8feec639d94 (patch) | |
tree | 5e6fd1456c9e58d2c5305adeabdc1ac483bfa504 | |
parent | 4d3d785e3f9713e700c94d6d78b5a695daa98f1d (diff) | |
download | llvm-aba16fca5de0aeb61d35c4e9261fa8feec639d94.zip llvm-aba16fca5de0aeb61d35c4e9261fa8feec639d94.tar.gz llvm-aba16fca5de0aeb61d35c4e9261fa8feec639d94.tar.bz2 |
ARM: Support relative references using the PREL31 symbol variant.
Differential Revision: http://reviews.llvm.org/D17937
llvm-svn: 263156
-rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp | 3 | ||||
-rw-r--r-- | llvm/test/MC/ARM/symbol-variants.s | 14 |
2 files changed, 13 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp index 388ce799..9001ad3 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp @@ -98,6 +98,9 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target, case MCSymbolRefExpr::VK_ARM_GOT_PREL: Type = ELF::R_ARM_GOT_PREL; break; + case MCSymbolRefExpr::VK_ARM_PREL31: + Type = ELF::R_ARM_PREL31; + break; } break; case ARM::fixup_arm_blx: diff --git a/llvm/test/MC/ARM/symbol-variants.s b/llvm/test/MC/ARM/symbol-variants.s index af1bc07..c5419058 100644 --- a/llvm/test/MC/ARM/symbol-variants.s +++ b/llvm/test/MC/ARM/symbol-variants.s @@ -84,8 +84,14 @@ bl f05(plt) @ CHECK: 60 R_ARM_TLS_GOTDESC f24 @ CHECK: 64 R_ARM_TLS_GOTDESC f25 +@ prel31 (relative) +.word f26(PREL31)-. +.word f27(prel31)-. +@CHECK: 68 R_ARM_PREL31 f26 +@CHECK: 6c R_ARM_PREL31 f27 + @ got_prel -.word f26(GOT_PREL) + (. - .Lsym) - ldr r3, =f27(GOT_PREL) -@ CHECK: 68 R_ARM_GOT_PREL f26 -@ CHECK: 70 R_ARM_GOT_PREL f27 +.word f28(GOT_PREL) + (. - .Lsym) + ldr r3, =f29(GOT_PREL) +@ CHECK: 70 R_ARM_GOT_PREL f28 +@ CHECK: 78 R_ARM_GOT_PREL f29 |