[lld] r315270 - Simplify.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 9 21:45:48 PDT 2017


Author: ruiu
Date: Mon Oct  9 21:45:48 2017
New Revision: 315270

URL: http://llvm.org/viewvc/llvm-project?rev=315270&view=rev
Log:
Simplify.

Modified:
    lld/trunk/ELF/InputSection.cpp

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=315270&r1=315269&r2=315270&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Mon Oct  9 21:45:48 2017
@@ -670,6 +670,8 @@ static uint64_t getRelocTargetVA(uint32_
 // function as a performance optimization.
 template <class ELFT, class RelTy>
 void InputSection::relocateNonAlloc(uint8_t *Buf, ArrayRef<RelTy> Rels) {
+  const unsigned Bits = sizeof(typename ELFT::uint) * 8;
+
   for (const RelTy &Rel : Rels) {
     uint32_t Type = Rel.getType(Config->IsMips64EL);
     uint64_t Offset = getOffset(Rel.r_offset);
@@ -687,12 +689,10 @@ void InputSection::relocateNonAlloc(uint
       return;
     }
 
-    uint64_t AddrLoc = getParent()->Addr + Offset;
-    uint64_t SymVA = 0;
-    if (!Sym.isTls() || Out::TlsPhdr)
-      SymVA = SignExtend64<sizeof(typename ELFT::uint) * 8>(
-          getRelocTargetVA(Type, Addend, AddrLoc, Sym, R_ABS));
-    Target->relocateOne(BufLoc, Type, SymVA);
+    if (Sym.isTls() && !Out::TlsPhdr)
+      Target->relocateOne(BufLoc, Type, 0);
+    else
+      Target->relocateOne(BufLoc, Type, SignExtend64<Bits>(Sym.getVA(Addend)));
   }
 }
 




More information about the llvm-commits mailing list