summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2017-04-13 21:37:56 +0000
committerRui Ueyama <ruiu@google.com>2017-04-13 21:37:56 +0000
commit3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba (patch)
tree8d4beec3566ce874c5578330b57e2f3ea3862961
parent1389418e18407da990cc5c503eb78d1bc8532fc8 (diff)
downloadbcm5719-llvm-3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba.tar.gz
bcm5719-llvm-3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba.zip
Add "1" suffix if there's varaible ends with "2".
If we knew that we'd add End2, Edata2 and Etext2, we'd name their original symbols with "1". This patch does it. llvm-svn: 300263
-rw-r--r--lld/ELF/Symbols.cpp8
-rw-r--r--lld/ELF/Symbols.h18
-rw-r--r--lld/ELF/Writer.cpp18
3 files changed, 22 insertions, 22 deletions
diff --git a/lld/ELF/Symbols.cpp b/lld/ELF/Symbols.cpp
index 7c939dea321..86f3162cae2 100644
--- a/lld/ELF/Symbols.cpp
+++ b/lld/ELF/Symbols.cpp
@@ -29,15 +29,15 @@ using namespace lld;
using namespace lld::elf;
DefinedRegular *ElfSym::Bss;
-DefinedRegular *ElfSym::Etext;
+DefinedRegular *ElfSym::Etext1;
DefinedRegular *ElfSym::Etext2;
-DefinedRegular *ElfSym::Edata;
+DefinedRegular *ElfSym::Edata1;
DefinedRegular *ElfSym::Edata2;
-DefinedRegular *ElfSym::End;
+DefinedRegular *ElfSym::End1;
DefinedRegular *ElfSym::End2;
+DefinedRegular *ElfSym::MipsGp;
DefinedRegular *ElfSym::MipsGpDisp;
DefinedRegular *ElfSym::MipsLocalGp;
-DefinedRegular *ElfSym::MipsGp;
static uint64_t getSymVA(const SymbolBody &Body, int64_t &Addend) {
switch (Body.kind()) {
diff --git a/lld/ELF/Symbols.h b/lld/ELF/Symbols.h
index dc2eec58fd1..39a0c0f7b4d 100644
--- a/lld/ELF/Symbols.h
+++ b/lld/ELF/Symbols.h
@@ -302,25 +302,25 @@ public:
// Some linker-generated symbols need to be created as
// DefinedRegular symbols.
struct ElfSym {
- // The content for __bss_start symbol.
+ // __bss_start
static DefinedRegular *Bss;
- // The content for _etext and etext symbols.
- static DefinedRegular *Etext;
+ // etext and _etext
+ static DefinedRegular *Etext1;
static DefinedRegular *Etext2;
- // The content for _edata and edata symbols.
- static DefinedRegular *Edata;
+ // edata and _edata
+ static DefinedRegular *Edata1;
static DefinedRegular *Edata2;
- // The content for _end and end symbols.
- static DefinedRegular *End;
+ // end and _end
+ static DefinedRegular *End1;
static DefinedRegular *End2;
- // The content for _gp_disp/__gnu_local_gp symbols for MIPS target.
+ // _gp, _gp_disp and __gnu_local_gp symbols. Only for MIPS.
+ static DefinedRegular *MipsGp;
static DefinedRegular *MipsGpDisp;
static DefinedRegular *MipsLocalGp;
- static DefinedRegular *MipsGp;
};
// A real symbol object, SymbolBody, is usually stored within a Symbol. There's
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 94515fc341c..3ded0c675b8 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -879,12 +879,12 @@ template <class ELFT> void Writer<ELFT>::addReservedSymbols() {
};
ElfSym::Bss = Add("__bss_start");
- ElfSym::End = Add("_end");
- ElfSym::End2 = Add("end");
- ElfSym::Etext = Add("_etext");
- ElfSym::Etext2 = Add("etext");
- ElfSym::Edata = Add("_edata");
- ElfSym::Edata2 = Add("edata");
+ ElfSym::End1 = Add("end");
+ ElfSym::End2 = Add("_end");
+ ElfSym::Etext1 = Add("etext");
+ ElfSym::Etext2 = Add("_etext");
+ ElfSym::Edata1 = Add("edata");
+ ElfSym::Edata2 = Add("_edata");
}
// Sort input sections by section name suffixes for
@@ -1692,11 +1692,11 @@ template <class ELFT> void Writer<ELFT>::fixPredefinedSymbols() {
LastRO = &P;
}
if (Last)
- Set(ElfSym::End, ElfSym::End2, Last->First, Last->p_memsz);
+ Set(ElfSym::End1, ElfSym::End2, Last->First, Last->p_memsz);
if (LastRO)
- Set(ElfSym::Etext, ElfSym::Etext2, LastRO->First, LastRO->p_filesz);
+ Set(ElfSym::Etext1, ElfSym::Etext2, LastRO->First, LastRO->p_filesz);
if (LastRW)
- Set(ElfSym::Edata, ElfSym::Edata2, LastRW->First, LastRW->p_filesz);
+ Set(ElfSym::Edata1, ElfSym::Edata2, LastRW->First, LastRW->p_filesz);
if (ElfSym::Bss)
ElfSym::Bss->Section = findSection(".bss");
OpenPOWER on IntegriCloud