[lld] r261668 - Simplify. NFC.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 23 10:53:32 PST 2016


Author: rafael
Date: Tue Feb 23 12:53:29 2016
New Revision: 261668

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

Modified:
    lld/trunk/ELF/InputSection.cpp
    lld/trunk/ELF/Target.cpp
    lld/trunk/ELF/Target.h
    lld/trunk/ELF/Writer.cpp

Modified: lld/trunk/ELF/InputSection.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputSection.cpp?rev=261668&r1=261667&r2=261668&view=diff
==============================================================================
--- lld/trunk/ELF/InputSection.cpp (original)
+++ lld/trunk/ELF/InputSection.cpp Tue Feb 23 12:53:29 2016
@@ -218,7 +218,7 @@ void InputSectionBase<ELFT>::relocate(ui
         SymVA = Body->getGotVA<ELFT>();
       if (Body->IsTls)
         Type = Target->getTlsGotRel(Type);
-    } else if (!Target->needsCopyRel(Type, *Body) &&
+    } else if (!Target->needsCopyRel<ELFT>(Type, *Body) &&
                isa<SharedSymbol<ELFT>>(*Body)) {
       continue;
     } else if (Target->isTlsDynRel(Type, *Body)) {

Modified: lld/trunk/ELF/Target.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=261668&r1=261667&r2=261668&view=diff
==============================================================================
--- lld/trunk/ELF/Target.cpp (original)
+++ lld/trunk/ELF/Target.cpp Tue Feb 23 12:53:29 2016
@@ -275,25 +275,9 @@ template <typename ELFT> static bool may
   return SS->Sym.getType() == STT_OBJECT;
 }
 
+template <class ELFT>
 bool TargetInfo::needsCopyRel(uint32_t Type, const SymbolBody &S) const {
-  bool MayNeed;
-  switch (Config->EKind) {
-  case ELF32LEKind:
-    MayNeed = mayNeedCopy<ELF32LE>(S);
-    break;
-  case ELF64LEKind:
-    MayNeed = mayNeedCopy<ELF64LE>(S);
-    break;
-  case ELF32BEKind:
-    MayNeed = mayNeedCopy<ELF32BE>(S);
-    break;
-  case ELF64BEKind:
-    MayNeed = mayNeedCopy<ELF64BE>(S);
-    break;
-  default:
-    llvm_unreachable("Invalid ELF kind");
-  }
-  return MayNeed && needsCopyRelImpl(Type);
+  return mayNeedCopy<ELFT>(S) && needsCopyRelImpl(Type);
 }
 
 bool TargetInfo::isTlsDynRel(unsigned Type, const SymbolBody &S) const {
@@ -725,7 +709,7 @@ bool X86_64TargetInfo::isTlsDynRel(unsig
 
 TargetInfo::PltNeed X86_64TargetInfo::needsPlt(uint32_t Type,
                                                const SymbolBody &S) const {
-  if (needsCopyRel(Type, S))
+  if (needsCopyRel<ELF64LE>(Type, S))
     return Plt_No;
   if (isGnuIFunc<ELF64LE>(S))
     return Plt_Explicit;
@@ -1714,7 +1698,7 @@ bool MipsTargetInfo<ELFT>::needsGot(uint
 template <class ELFT>
 TargetInfo::PltNeed MipsTargetInfo<ELFT>::needsPlt(uint32_t Type,
                                                    const SymbolBody &S) const {
-  if (needsCopyRel(Type, S))
+  if (needsCopyRel<ELFT>(Type, S))
     return Plt_No;
   if (Type == R_MIPS_26 && canBePreempted(&S, false))
     return Plt_Explicit;
@@ -1859,5 +1843,14 @@ template uint32_t getMipsGpAddr<ELF32LE>
 template uint32_t getMipsGpAddr<ELF32BE>();
 template uint64_t getMipsGpAddr<ELF64LE>();
 template uint64_t getMipsGpAddr<ELF64BE>();
+
+template bool TargetInfo::needsCopyRel<ELF32LE>(uint32_t,
+                                                const SymbolBody &) const;
+template bool TargetInfo::needsCopyRel<ELF32BE>(uint32_t,
+                                                const SymbolBody &) const;
+template bool TargetInfo::needsCopyRel<ELF64LE>(uint32_t,
+                                                const SymbolBody &) const;
+template bool TargetInfo::needsCopyRel<ELF64BE>(uint32_t,
+                                                const SymbolBody &) const;
 }
 }

Modified: lld/trunk/ELF/Target.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.h?rev=261668&r1=261667&r2=261668&view=diff
==============================================================================
--- lld/trunk/ELF/Target.h (original)
+++ lld/trunk/ELF/Target.h Tue Feb 23 12:53:29 2016
@@ -63,6 +63,7 @@ public:
                            uint8_t *PairedLoc = nullptr) const = 0;
   virtual bool isGotRelative(uint32_t Type) const;
   virtual bool canRelaxTls(unsigned Type, const SymbolBody *S) const;
+  template <class ELFT>
   bool needsCopyRel(uint32_t Type, const SymbolBody &S) const;
   virtual unsigned relaxTls(uint8_t *Loc, uint8_t *BufEnd, uint32_t Type,
                             uint64_t P, uint64_t SA, const SymbolBody *S) const;

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=261668&r1=261667&r2=261668&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Tue Feb 23 12:53:29 2016
@@ -335,7 +335,7 @@ void Writer<ELFT>::scanRelocs(
     if (auto *B = dyn_cast_or_null<SharedSymbol<ELFT>>(Body)) {
       if (B->needsCopy())
         continue;
-      if (Target->needsCopyRel(Type, *B)) {
+      if (Target->needsCopyRel<ELFT>(Type, *B)) {
         B->NeedsCopyOrPltAddr = true;
         Out<ELFT>::RelaDyn->addReloc(
             {Target->CopyRel, DynamicReloc<ELFT>::Off_Bss, B});




More information about the llvm-commits mailing list