[lld] r192930 - Fill gap in .text with NOP.

Rui Ueyama ruiu at google.com
Thu Oct 17 16:01:24 PDT 2013


Ideally we should call PECOFFLinkingContext::getMachineType() to dispatch
to support ARM, but I didn't bother to do that because ARM Windows support
is very very distant goal. There's no code for Windows on non-x86
architecture written at this moment yet.


On Thu, Oct 17, 2013 at 3:51 PM, Sean Silva <silvas at purdue.edu> wrote:

> WIll this code realistically one ever have to deal with x86? Is there some
> target flag you need to check?
>
> -- Sean Silva
>
>
> On Thu, Oct 17, 2013 at 6:45 PM, Rui Ueyama <ruiu at google.com> wrote:
>
>> Author: ruiu
>> Date: Thu Oct 17 17:45:16 2013
>> New Revision: 192930
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=192930&view=rev
>> Log:
>> Fill gap in .text with NOP.
>>
>> Modified:
>>     lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
>>
>> Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp?rev=192930&r1=192929&r2=192930&view=diff
>>
>> ==============================================================================
>> --- lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp (original)
>> +++ lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp Thu Oct 17
>> 17:45:16 2013
>> @@ -585,6 +585,20 @@ void SectionHeaderTableChunk::write(uint
>>  // \brief A TextSectionChunk represents a .text section.
>>  class TextSectionChunk : public SectionChunk {
>>  public:
>> +  virtual void write(uint8_t *fileBuffer) {
>> +    if (_atomLayouts.empty())
>> +      return;
>> +    // Fill the section with NOP (0x90) rather than NUL, so that the
>> +    // disassembler will not interpret a garbage between atoms as the
>> beginning
>> +    // of multi-byte machine code. This does not change the behavior of
>> +    // resulting binary but help debugging.
>> +    uint8_t *start = fileBuffer + _atomLayouts.front()->_fileOffset;
>> +    uint8_t *end = fileBuffer + _atomLayouts.back()->_fileOffset;
>> +    memset(start, 0x90, end - start);
>> +
>> +    SectionChunk::write(fileBuffer);
>> +  }
>> +
>>    TextSectionChunk(const File &linkedFile)
>>        : SectionChunk(".text", characteristics) {
>>      buildContents(linkedFile, [](const DefinedAtom *atom) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131017/552ec9c4/attachment.html>


More information about the llvm-commits mailing list