summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2014-04-30 16:13:26 +0000
committerTim Northover <tnorthover@apple.com>2014-04-30 16:13:26 +0000
commit7346f062b639a20164f15da77f2989c22aca349b (patch)
tree8b9fb9dbeb775078183caa2161c7613fbdbbeb94 /llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
parentb8fb7f41938a4c5635eba25762d1dd216986003b (diff)
downloadbcm5719-llvm-7346f062b639a20164f15da77f2989c22aca349b.tar.gz
bcm5719-llvm-7346f062b639a20164f15da77f2989c22aca349b.zip
AArch64/ARM64: implement remaining TLS relocations (purely MC).
llvm-svn: 207668
Diffstat (limited to 'llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp')
-rw-r--r--llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
index b775dd332fe..0990a701bc8 100644
--- a/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
+++ b/llvm/lib/Target/ARM64/MCTargetDesc/ARM64ELFObjectWriter.cpp
@@ -103,15 +103,19 @@ unsigned ARM64ELFObjectWriter::GetRelocType(const MCValue &Target,
case FK_Data_8:
return ELF::R_AARCH64_ABS64;
case ARM64::fixup_arm64_add_imm12:
- if (SymLoc == ARM64MCExpr::VK_DTPREL && IsNC)
+ if (RefKind == ARM64MCExpr::VK_DTPREL_HI12)
+ return ELF::R_AARCH64_TLSLD_ADD_DTPREL_HI12;
+ if (RefKind == ARM64MCExpr::VK_TPREL_HI12)
+ return ELF::R_AARCH64_TLSLE_ADD_TPREL_HI12;
+ if (RefKind == ARM64MCExpr::VK_DTPREL_LO12_NC)
return ELF::R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC;
- if (SymLoc == ARM64MCExpr::VK_DTPREL && !IsNC)
+ if (RefKind == ARM64MCExpr::VK_DTPREL_LO12)
return ELF::R_AARCH64_TLSLD_ADD_DTPREL_LO12;
- if (SymLoc == ARM64MCExpr::VK_TPREL && IsNC)
+ if (RefKind == ARM64MCExpr::VK_TPREL_LO12_NC)
return ELF::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC;
- if (SymLoc == ARM64MCExpr::VK_TPREL && !IsNC)
+ if (RefKind == ARM64MCExpr::VK_TPREL_LO12)
return ELF::R_AARCH64_TLSLE_ADD_TPREL_LO12;
- if (SymLoc == ARM64MCExpr::VK_TLSDESC && IsNC)
+ if (RefKind == ARM64MCExpr::VK_TLSDESC_LO12)
return ELF::R_AARCH64_TLSDESC_ADD_LO12_NC;
if (SymLoc == ARM64MCExpr::VK_ABS && IsNC)
return ELF::R_AARCH64_ADD_ABS_LO12_NC;
OpenPOWER on IntegriCloud