diff options
author | Rui Ueyama <ruiu@google.com> | 2017-04-13 21:37:56 +0000 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2017-04-13 21:37:56 +0000 |
commit | 3e1fc3f6fe2db16c531ea09983fdd8f59e6f89ba (patch) | |
tree | 8d4beec3566ce874c5578330b57e2f3ea3862961 | |
parent | 1389418e18407da990cc5c503eb78d1bc8532fc8 (diff) | |
download | bcm5719-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.cpp | 8 | ||||
-rw-r--r-- | lld/ELF/Symbols.h | 18 | ||||
-rw-r--r-- | lld/ELF/Writer.cpp | 18 |
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"); |