Add "1" suffix if there's varaible ends with "2".
authorRui Ueyama <ruiu@google.com>
Thu, 13 Apr 2017 21:37:56 +0000 (21:37 +0000)
committerRui Ueyama <ruiu@google.com>
Thu, 13 Apr 2017 21:37:56 +0000 (21:37 +0000)
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

lld/ELF/Symbols.cpp
lld/ELF/Symbols.h
lld/ELF/Writer.cpp

index 7c939de..86f3162 100644 (file)
@@ -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()) {
index dc2eec5..39a0c0f 100644 (file)
@@ -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
index 94515fc..3ded0c6 100644 (file)
@@ -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");