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

Rafael EspĂ­ndola rafael.espindola at gmail.com
Fri Jun 14 09:13:36 PDT 2013


So check-lld was failing before this patch?

On 14 June 2013 11:20, Shankar Easwaran <shankare at codeaurora.org> wrote:
> Hi Rafael,
>
> There are already lots of testcases for this.
>
> Thanks
>
> Shankar Easwaran
>
>
> On 6/13/2013 1:21 PM, Rafael EspĂ­ndola wrote:
>>
>> testcase?
>>
>> On 11 June 2013 20:32, Shankar Easwaran <shankare at codeaurora.org> wrote:
>>>
>>> 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();
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by
> the Linux Foundation
>




More information about the llvm-commits mailing list