From 9b896086980f2ba59fefc30898892d33c4096e3c Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 3 Nov 2015 14:34:11 +0000 Subject: [PATCH] Remove a redundant boolean. llvm-svn: 251921 --- lld/ELF/OutputSections.cpp | 4 ++-- lld/ELF/Symbols.h | 4 ++-- lld/ELF/Writer.cpp | 7 ++++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp index 190d5543f12f..e3e3fef8be54 100644 --- a/lld/ELF/OutputSections.cpp +++ b/lld/ELF/OutputSections.cpp @@ -650,7 +650,7 @@ typename ELFFile::uintX_t lld::elf2::getSymVA(const SymbolBody &S) { return Out::Bss->getVA() + cast>(S).OffsetInBSS; case SymbolBody::SharedKind: { auto &SS = cast>(S); - if (SS.NeedsCopy) + if (SS.needsCopy()) return Out::Bss->getVA() + SS.OffsetInBSS; return 0; } @@ -1005,7 +1005,7 @@ void SymbolTableSection::writeGlobalSymbols(uint8_t *Buf) { OutSec = Out::Bss; break; case SymbolBody::SharedKind: { - if (cast>(Body)->NeedsCopy) + if (cast>(Body)->needsCopy()) OutSec = Out::Bss; break; } diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h index 61ffdfab8f34..98533cf3cbe6 100644 --- a/lld/ELF/Symbols.h +++ b/lld/ELF/Symbols.h @@ -284,8 +284,8 @@ public: SharedFile *File; // Can have offset if requires copy relocation. - uintX_t OffsetInBSS = 0; - bool NeedsCopy = false; + uintX_t OffsetInBSS = -1; + bool needsCopy() const { return OffsetInBSS != (uintX_t)-1; } }; // This class represents a symbol defined in an archive file. It is diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index 426fd8b7bd69..c01a354105e7 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -201,9 +201,10 @@ void Writer::scanRelocs( bool NeedsPlt = false; if (Body) { if (auto *E = dyn_cast>(Body)) { - if (E->NeedsCopy) + if (E->needsCopy()) continue; - E->NeedsCopy = Target->relocNeedsCopy(Type, *Body); + if (Target->relocNeedsCopy(Type, *Body)) + E->OffsetInBSS = 0; } NeedsPlt = Target->relocNeedsPlt(Type, *Body); if (NeedsPlt) { @@ -535,7 +536,7 @@ template void Writer::createSections() { if (auto *C = dyn_cast>(Body)) CommonSymbols.push_back(C); if (auto *SC = dyn_cast>(Body)) - if (SC->NeedsCopy) + if (SC->needsCopy()) SharedCopySymbols.push_back(SC); if (!includeInSymtab(*Body))