[lld] r366888 - [mips] Assign R_TLS type to the R_MIPS_TLS_TPREL_XXX relocations. NFC

Simon Atanasyan via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 24 04:37:13 PDT 2019


Author: atanasyan
Date: Wed Jul 24 04:37:13 2019
New Revision: 366888

URL: http://llvm.org/viewvc/llvm-project?rev=366888&view=rev
Log:
[mips] Assign R_TLS type to the R_MIPS_TLS_TPREL_XXX relocations. NFC

That allows to remove duplicated code which subtracts 0x7000 from the
R_MIPS_TLS_TPREL_XXX relocations values in the `MIPS::relocateOne`
function.

Modified:
    lld/trunk/ELF/Arch/Mips.cpp
    lld/trunk/ELF/InputSection.cpp

Modified: lld/trunk/ELF/Arch/Mips.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Arch/Mips.cpp?rev=366888&r1=366887&r2=366888&view=diff
==============================================================================
--- lld/trunk/ELF/Arch/Mips.cpp (original)
+++ lld/trunk/ELF/Arch/Mips.cpp Wed Jul 24 04:37:13 2019
@@ -120,15 +120,16 @@ RelExpr MIPS<ELFT>::getRelExpr(RelType t
   case R_MIPS_TLS_DTPREL_LO16:
   case R_MIPS_TLS_DTPREL32:
   case R_MIPS_TLS_DTPREL64:
+  case R_MICROMIPS_TLS_DTPREL_HI16:
+  case R_MICROMIPS_TLS_DTPREL_LO16:
+    return R_ABS;
   case R_MIPS_TLS_TPREL_HI16:
   case R_MIPS_TLS_TPREL_LO16:
   case R_MIPS_TLS_TPREL32:
   case R_MIPS_TLS_TPREL64:
-  case R_MICROMIPS_TLS_DTPREL_HI16:
-  case R_MICROMIPS_TLS_DTPREL_LO16:
   case R_MICROMIPS_TLS_TPREL_HI16:
   case R_MICROMIPS_TLS_TPREL_LO16:
-    return R_ABS;
+    return R_TLS;
   case R_MIPS_PC32:
   case R_MIPS_PC16:
   case R_MIPS_PC19_S2:
@@ -538,11 +539,6 @@ void MIPS<ELFT>::relocateOne(uint8_t *lo
       type == R_MICROMIPS_TLS_DTPREL_HI16 ||
       type == R_MICROMIPS_TLS_DTPREL_LO16) {
     val -= 0x8000;
-  } else if (type == R_MIPS_TLS_TPREL_HI16 || type == R_MIPS_TLS_TPREL_LO16 ||
-             type == R_MIPS_TLS_TPREL32 || type == R_MIPS_TLS_TPREL64 ||
-             type == R_MICROMIPS_TLS_TPREL_HI16 ||
-             type == R_MICROMIPS_TLS_TPREL_LO16) {
-    val -= 0x7000;
   }
 
   switch (type) {

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=366888&r1=366887&r2=366888&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Wed Jul 24 04:37:13 2019
@@ -619,6 +619,7 @@ static int64_t getTlsTpOffset(const Symb
   case EM_X86_64:
     // Variant 2. The TLS segment is located just before the thread pointer.
     return s.getVA(0) - alignTo(Out::tlsPhdr->p_memsz, Out::tlsPhdr->p_align);
+  case EM_MIPS:
   case EM_PPC:
   case EM_PPC64:
     // The thread pointer points to a fixed offset from the start of the




More information about the llvm-commits mailing list