[PATCH] D18302: [ELF][MIPS] Delete GotSection::addMipsLocalEntry method
Simon Atanasyan via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 21 11:26:03 PDT 2016
atanasyan updated this revision to Diff 51195.
atanasyan added a comment.
- Simplified condition in the `GotSection::addEntry` method.
- Move the `Sym.MustBeInDynSym = true` to the `GotSection::addEntry` method.
Repository:
rL LLVM
http://reviews.llvm.org/D18302
Files:
ELF/OutputSections.cpp
ELF/OutputSections.h
ELF/Writer.cpp
Index: ELF/Writer.cpp
===================================================================
--- ELF/Writer.cpp
+++ ELF/Writer.cpp
@@ -335,14 +335,6 @@
Out<ELFT>::RelaDyn->addReloc({Target->RelativeRel, &C, RI.r_offset, true,
&Body, getAddend<ELFT>(RI)});
- // MIPS has a special rule to create GOTs for local symbols.
- if (Config->EMachine == EM_MIPS && !Preemptible &&
- Target->needsGot(Type, Body)) {
- // FIXME (simon): Do not add so many redundant entries.
- Out<ELFT>::Got->addMipsLocalEntry();
- continue;
- }
-
// If a symbol in a DSO is referenced directly instead of through GOT,
// we need to create a copy relocation for the symbol.
if (auto *B = dyn_cast<SharedSymbol<ELFT>>(&Body)) {
@@ -407,15 +399,13 @@
continue;
Out<ELFT>::Got->addEntry(Body);
- if (Config->EMachine == EM_MIPS) {
+ if (Config->EMachine == EM_MIPS)
// MIPS ABI has special rules to process GOT entries
// and doesn't require relocation entries for them.
// See "Global Offset Table" in Chapter 5 in the following document
// for detailed description:
// ftp://www.linux-mips.org/pub/linux/mips/doc/ABI/mipsabi.pdf
- Body.MustBeInDynSym = true;
continue;
- }
bool Dynrel = Config->Pic && !Target->isRelRelative(Type) &&
!Target->isSizeRel(Type);
Index: ELF/OutputSections.h
===================================================================
--- ELF/OutputSections.h
+++ ELF/OutputSections.h
@@ -100,7 +100,6 @@
void finalize() override;
void writeTo(uint8_t *Buf) override;
void addEntry(SymbolBody &Sym);
- void addMipsLocalEntry();
bool addDynTlsEntry(SymbolBody &Sym);
bool addTlsIndex();
bool empty() const { return MipsLocalEntries == 0 && Entries.empty(); }
Index: ELF/OutputSections.cpp
===================================================================
--- ELF/OutputSections.cpp
+++ ELF/OutputSections.cpp
@@ -90,14 +90,19 @@
}
template <class ELFT> void GotSection<ELFT>::addEntry(SymbolBody &Sym) {
+ if (Config->EMachine == EM_MIPS) {
+ if (Sym.isPreemptible())
+ Sym.MustBeInDynSym = true;
+ else {
+ // FIXME (simon): Do not add so many redundant entries.
+ ++MipsLocalEntries;
+ return;
+ }
+ }
Sym.GotIndex = Entries.size();
Entries.push_back(&Sym);
}
-template <class ELFT> void GotSection<ELFT>::addMipsLocalEntry() {
- ++MipsLocalEntries;
-}
-
template <class ELFT> bool GotSection<ELFT>::addDynTlsEntry(SymbolBody &Sym) {
if (Sym.hasGlobalDynIndex())
return false;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18302.51195.patch
Type: text/x-patch
Size: 2659 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160321/a0f358f5/attachment.bin>
More information about the llvm-commits
mailing list