diff options
author | Akira Hatanaka <ahatanaka@mips.com> | 2011-12-22 01:05:17 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@mips.com> | 2011-12-22 01:05:17 +0000 |
commit | e2eed9649ebebc1be33f51bdb09b66a85f5f0d3d (patch) | |
tree | 39e6a584040f2eb61406448a1645861a6e1b884a /llvm/lib/MC | |
parent | 32a756b7ce91ee0debd0274d7fd308d92b774020 (diff) | |
download | bcm5719-llvm-e2eed9649ebebc1be33f51bdb09b66a85f5f0d3d.tar.gz bcm5719-llvm-e2eed9649ebebc1be33f51bdb09b66a85f5f0d3d.zip |
Local dynamic TLS model for direct object output. Create the correct TLS MIPS
ELF relocations.
Patch by Jack Carter.
llvm-svn: 147118
Diffstat (limited to 'llvm/lib/MC')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/MC/MCExpr.cpp | 18 |
2 files changed, 27 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index ae29753582f..d0b3372b5de 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -1474,6 +1474,15 @@ unsigned MipsELFObjectWriter::GetRelocType(const MCValue &Target, case Mips::fixup_Mips_TPREL_LO: Type = ELF::R_MIPS_TLS_TPREL_LO16; break; + case Mips::fixup_Mips_TLSLDM: + Type = ELF::R_MIPS_TLS_LDM; + break; + case Mips::fixup_Mips_DTPREL_HI: + Type = ELF::R_MIPS_TLS_DTPREL_HI16; + break; + case Mips::fixup_Mips_DTPREL_LO: + Type = ELF::R_MIPS_TLS_DTPREL_LO16; + break; case Mips::fixup_Mips_Branch_PCRel: case Mips::fixup_Mips_PC16: Type = ELF::R_MIPS_PC16; diff --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp index da297fb1d95..4ebd71a5839 100644 --- a/llvm/lib/MC/MCExpr.cpp +++ b/llvm/lib/MC/MCExpr.cpp @@ -200,6 +200,24 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) { case VK_PPC_DARWIN_LO16: return "lo16"; case VK_PPC_GAS_HA16: return "ha"; case VK_PPC_GAS_LO16: return "l"; + case VK_Mips_GPREL: return "GPREL"; + case VK_Mips_GOT_CALL: return "GOT_CALL"; + case VK_Mips_GOT16: return "GOT16"; + case VK_Mips_GOT: return "GOT"; + case VK_Mips_ABS_HI: return "ABS_HI"; + case VK_Mips_ABS_LO: return "ABS_LO"; + case VK_Mips_TLSGD: return "TLSGD"; + case VK_Mips_TLSLDM: return "TLSLDM"; + case VK_Mips_DTPREL_HI: return "DTPREL_HI"; + case VK_Mips_DTPREL_LO: return "DTPREL_LO"; + case VK_Mips_GOTTPREL: return "GOTTPREL"; + case VK_Mips_TPREL_HI: return "TPREL_HI"; + case VK_Mips_TPREL_LO: return "TPREL_LO"; + case VK_Mips_GPOFF_HI: return "GPOFF_HI"; + case VK_Mips_GPOFF_LO: return "GPOFF_LO"; + case VK_Mips_GOT_DISP: return "GOT_DISP"; + case VK_Mips_GOT_PAGE: return "GOT_PAGE"; + case VK_Mips_GOT_OFST: return "GOT_OFST"; } } |