[lld] r183816 - [ELF] NMAGIC support : Find the BSS section to setup the virtual address of _end.

Shankar Easwaran shankare at codeaurora.org
Tue Jun 11 17:32:35 PDT 2013


Author: shankare
Date: Tue Jun 11 19:32:35 2013
New Revision: 183816

URL: http://llvm.org/viewvc/llvm-project?rev=183816&view=rev
Log:
[ELF] NMAGIC support :  Find the BSS section to setup the virtual address of _end.

Modified:
    lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h

Modified: lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h?rev=183816&r1=183815&r2=183816&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/ExecutableWriter.h Tue Jun 11 19:32:35 2013
@@ -118,16 +118,13 @@ template <class ELFT> void ExecutableWri
            endAtomIter == this->_layout->absoluteAtoms().end()) &&
          "Unable to find the absolute atoms that have been added by lld");
 
-  auto phe = this->_programHeader
-      ->findProgramHeader(llvm::ELF::PT_LOAD, llvm::ELF::PF_W, llvm::ELF::PF_X);
+  auto bssSection = this->_layout->findOutputSection(".bss");
 
-  assert(!(phe == this->_programHeader->rend()) &&
-         "Can't find a data segment in the program header!");
-
-  (*bssStartAtomIter)->_virtualAddr = (*phe)->p_vaddr + (*phe)->p_filesz;
-  (*bssEndAtomIter)->_virtualAddr = (*phe)->p_vaddr + (*phe)->p_memsz;
-  (*underScoreEndAtomIter)->_virtualAddr = (*phe)->p_vaddr + (*phe)->p_memsz;
-  (*endAtomIter)->_virtualAddr = (*phe)->p_vaddr + (*phe)->p_memsz;
+  (*bssStartAtomIter)->_virtualAddr = bssSection->virtualAddr();
+  (*bssEndAtomIter)->_virtualAddr =
+      bssSection->virtualAddr() + bssSection->memSize();
+  (*underScoreEndAtomIter)->_virtualAddr = (*bssEndAtomIter)->_virtualAddr;
+  (*endAtomIter)->_virtualAddr = (*bssEndAtomIter)->_virtualAddr;
 
   // Give a chance for the target to finalize its atom values
   this->_targetHandler.finalizeSymbolValues();





More information about the llvm-commits mailing list