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 | 24c8b04d5fb4fee3745822553c035dcf9a97957b (patch) | |
tree | 21dd05e1fa17a6865ad79163215034aeff2a1164 /llvm/lib/MC/ELFObjectWriter.cpp | |
parent | e0fb32c261624cbdebc5ba6511b159814b333613 (diff) | |
download | bcm5719-llvm-24c8b04d5fb4fee3745822553c035dcf9a97957b.tar.gz bcm5719-llvm-24c8b04d5fb4fee3745822553c035dcf9a97957b.zip |
Implement R_X86_64_GOTTPOFF, R_X86_64_TLSGD and R_X86_64_TPOFF32.
llvm-svn: 117481
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index addda8a02b0..90473dbac9c 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/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: |