summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-24 12:12:10 +0000
committerTim Northover <tnorthover@apple.com>2014-04-24 12:12:10 +0000
commit79ec019261e44ad5c03194aa124e4a5b1be04f7d (patch)
treedfecc805095d966b2839f8e68f902fcc6ecc384b /llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
parentcf16ec238e469dcc83d335fddaa25a713231a2aa (diff)
downloadbcm5719-llvm-79ec019261e44ad5c03194aa124e4a5b1be04f7d.tar.gz
bcm5719-llvm-79ec019261e44ad5c03194aa124e4a5b1be04f7d.zip
AArch64/ARM64: disentangle the "B.CC" and "LDR lit" operands
These can have different relocations in ELF. In particular both: b.eq global ldr x0, global are valid, giving different relocations. The only possible way to distinguish them is via a different fixup, so the operands had to be separated throughout the backend. llvm-svn: 207105
Diffstat (limited to 'llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp')
-rw-r--r--llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
index fe3070c019e..718501f918e 100644
--- a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
+++ b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
@@ -82,11 +82,11 @@ unsigned ARM64ELFObjectWriter::GetRelocType(const MCValue &Target,
return ELF::R_AARCH64_JUMP26;
case ARM64::fixup_arm64_pcrel_call26:
return ELF::R_AARCH64_CALL26;
- case ARM64::fixup_arm64_pcrel_imm19:
- // A bit of an oddity here: shared by both "ldr x0, :gottprel:var" and
- // "b.eq var".
+ case ARM64::fixup_arm64_ldr_pcrel_imm19:
if (SymLoc == ARM64MCExpr::VK_GOTTPREL)
return ELF::R_AARCH64_TLSIE_LD_GOTTPREL_PREL19;
+ return ELF::R_AARCH64_LD_PREL_LO19;
+ case ARM64::fixup_arm64_pcrel_branch19:
return ELF::R_AARCH64_CONDBR19;
default:
llvm_unreachable("Unsupported pc-relative fixup kind");
OpenPOWER on IntegriCloud