diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-27 20:28:07 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-10-27 20:28:07 +0000 |
commit | bc82d8b84f6ae15985d1b01e720ed5c37d714012 (patch) | |
tree | ec4a76e3a919005b37d40c5b35d69ff983b16d2c /lib/MC/ELFObjectWriter.cpp | |
parent | f31430f6ecea74681a53d1e4cb64b0f93635fc58 (diff) |
Implement R_X86_64_GOTTPOFF, R_X86_64_TLSGD and R_X86_64_TPOFF32.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117481 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | lib/MC/ELFObjectWriter.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp index addda8a02b..90473dbac9 100644 --- a/lib/MC/ELFObjectWriter.cpp +++ b/lib/MC/ELFObjectWriter.cpp @@ -85,6 +85,9 @@ static bool RelocNeedsGOT(unsigned Type) { case ELF::R_X86_64_GOT32: case ELF::R_X86_64_PLT32: case ELF::R_X86_64_GOTPCREL: + case ELF::R_X86_64_TPOFF32: + case ELF::R_X86_64_TLSGD: + case ELF::R_X86_64_GOTTPOFF: return true; } } @@ -687,6 +690,12 @@ void ELFObjectWriterImpl::RecordRelocation(const MCAssembler &Asm, case llvm::MCSymbolRefExpr::VK_GOTPCREL: Type = ELF::R_X86_64_GOTPCREL; break; + case MCSymbolRefExpr::VK_GOTTPOFF: + Type = ELF::R_X86_64_GOTTPOFF; + break; + case MCSymbolRefExpr::VK_TLSGD: + Type = ELF::R_X86_64_TLSGD; + break; } } else { switch ((unsigned)Fixup.getKind()) { @@ -707,6 +716,9 @@ void ELFObjectWriterImpl::RecordRelocation(const MCAssembler &Asm, case MCSymbolRefExpr::VK_GOTPCREL: Type = ELF::R_X86_64_GOTPCREL; break; + case MCSymbolRefExpr::VK_TPOFF: + Type = ELF::R_X86_64_TPOFF32; + break; } break; case FK_Data_4: |