[lld] r259127 - Update comments.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 28 16:20:09 PST 2016

Author: ruiu
Date: Thu Jan 28 18:20:09 2016
New Revision: 259127

URL: http://llvm.org/viewvc/llvm-project?rev=259127&view=rev
Update comments.


Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=259127&r1=259126&r2=259127&view=diff
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Thu Jan 28 18:20:09 2016
@@ -781,16 +781,14 @@ template <class ELFT> void Writer<ELFT>:
   // If the "_end" symbol is referenced, it is expected to point to the address
   // right after the data segment. Usually, this symbol points to the end
   // of .bss section or to the end of .data section if .bss section is absent.
-  // The order of the sections can be affected by linker script,
-  // so it is hard to predict which section will be the last one.
-  // So, if this symbol is referenced, we just add the placeholder here
-  // and update its value later.
+  // We don't know the final address of _end yet, so just add a symbol here,
+  // and fix ElfSym<ELFT>::End.st_value later.
   if (Symtab.find("_end"))
     Symtab.addAbsolute("_end", ElfSym<ELFT>::End);
-  // If there is an undefined symbol "end", we should initialize it
-  // with the same value as "_end". In any other case it should stay intact,
-  // because it is an allowable name for a user symbol.
+  // Define "end" as an alias to "_end" if it is used but not defined.
+  // We don't want to define that unconditionally because we don't want to
+  // break programs that uses "end" as a regular symbol.
   if (SymbolBody *B = Symtab.find("end"))
     if (B->isUndefined())
       Symtab.addAbsolute("end", ElfSym<ELFT>::End);

More information about the llvm-commits mailing list