[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