diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-27 21:23:52 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-27 21:23:52 +0000 |
commit | f8537165bd32cf43f53e131e1c4031a4cd7312bf (patch) | |
tree | 4c7152196806d134c01216de0eeed86c31b6d02c /llvm/lib | |
parent | 7b9da4a550341d29056fadec8b0491e73b07871b (diff) | |
download | bcm5719-llvm-f8537165bd32cf43f53e131e1c4031a4cd7312bf.tar.gz bcm5719-llvm-f8537165bd32cf43f53e131e1c4031a4cd7312bf.zip |
Add support for R_386_TLS_GD, R_386_TLS_LE_32, R_386_TLS_IE and R_386_TLS_LE.
llvm-svn: 117494
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index 90473dbac9c..1e4484d91b8 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -79,6 +79,7 @@ static bool isFixupKindX86PCRel(unsigned Kind) { } static bool RelocNeedsGOT(unsigned Type) { + // FIXME: Can we use the VariantKind? switch (Type) { default: return false; @@ -88,6 +89,10 @@ static bool RelocNeedsGOT(unsigned Type) { case ELF::R_X86_64_TPOFF32: case ELF::R_X86_64_TLSGD: case ELF::R_X86_64_GOTTPOFF: + case ELF::R_386_TLS_GD: + case ELF::R_386_TLS_LE_32: + case ELF::R_386_TLS_IE: + case ELF::R_386_TLS_LE: return true; } } @@ -766,6 +771,18 @@ void ELFObjectWriterImpl::RecordRelocation(const MCAssembler &Asm, case MCSymbolRefExpr::VK_GOTOFF: Type = ELF::R_386_GOTOFF; break; + case MCSymbolRefExpr::VK_TLSGD: + Type = ELF::R_386_TLS_GD; + break; + case MCSymbolRefExpr::VK_TPOFF: + Type = ELF::R_386_TLS_LE_32; + break; + case MCSymbolRefExpr::VK_INDNTPOFF: + Type = ELF::R_386_TLS_IE; + break; + case MCSymbolRefExpr::VK_NTPOFF: + Type = ELF::R_386_TLS_LE; + break; } break; case FK_Data_2: Type = ELF::R_386_16; break; |