<div dir="ltr"><div>Hi David,</div><div><br></div><div>Do you remember why you made this change?</div><div><br></div><div>Peter</div><div><br></div><div>> Author: majnemer</div><div>> Date: Wed Feb 11 16:22:30 2015</div><div>> New Revision: 228879</div><div>> </div><div>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=228879&view=rev">http://llvm.org/viewvc/llvm-project?rev=228879&view=rev</a></div><div>> Log:</div><div>> MC, COFF: Align section contents to a four byte boundary</div><div>> </div><div>> Modified:</div><div>>     llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp</div><div>>     llvm/trunk/test/MC/COFF/directive-section-characteristics.ll</div><div>> </div><div>> Modified: llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp</div><div>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp?rev=228879&r1=228878&r2=228879&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp?rev=228879&r1=228878&r2=228879&view=diff</a></div><div>> ==============================================================================</div><div>> --- llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp (original)</div><div>> +++ llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp Wed Feb 11 16:22:30 2015</div><div>> @@ -939,7 +939,8 @@ void WinCOFFObjectWriter::WriteObject(MC</div><div>>      Sec->Header.SizeOfRawData = Layout.getSectionAddressSize(&Section);</div><div>>  </div><div>>      if (IsPhysicalSection(Sec)) {</div><div>> -      Sec->Header.PointerToRawData = offset;</div><div>> +      // Align the section data to a four byte boundary.</div><div>> +      Sec->Header.PointerToRawData = RoundUpToAlignment(offset, 4);</div><div>>  </div><div>>        offset += Sec->Header.SizeOfRawData;</div><div>>      }</div><div>> @@ -1009,9 +1010,15 @@ void WinCOFFObjectWriter::WriteObject(MC</div><div>>          continue;</div><div>>  </div><div>>        if ((*i)->Header.PointerToRawData != 0) {</div><div>> -        assert(OS.tell() == (*i)->Header.PointerToRawData &&</div><div>> +        assert(OS.tell() <= (*i)->Header.PointerToRawData &&</div><div>>                 "Section::PointerToRawData is insane!");</div><div>>  </div><div>> +        unsigned SectionDataPadding = (*i)->Header.PointerToRawData - OS.tell();</div><div>> +        assert(SectionDataPadding < 4 &&</div><div>> +               "Should only need at most three bytes of padding!");</div><div>> +</div><div>> +        WriteZeros(SectionDataPadding);</div><div>> +</div><div>>          Asm.writeSectionData(j, Layout);</div><div>>        }</div><div>>  </div><div>> </div><div>> Modified: llvm/trunk/test/MC/COFF/directive-section-characteristics.ll</div><div>> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/directive-section-characteristics.ll?rev=228879&r1=228878&r2=228879&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/COFF/directive-section-characteristics.ll?rev=228879&r1=228878&r2=228879&view=diff</a></div><div>> ==============================================================================</div><div>> --- llvm/trunk/test/MC/COFF/directive-section-characteristics.ll (original)</div><div>> +++ llvm/trunk/test/MC/COFF/directive-section-characteristics.ll Wed Feb 11 16:22:30 2015</div><div>> @@ -7,7 +7,13 @@ entry:</div><div>>  }</div><div>>  </div><div>>  ; CHECK: Section {</div><div>> +; CHECK:   Name: .text</div><div>> +; CHECK:   PointerToRawData: 0xB4</div><div>> +; CHECK: }</div><div>> +</div><div>> +; CHECK: Section {</div><div>>  ; CHECK:   Name: .drectve</div><div>> +; CHECK:   PointerToRawData: 0xB8</div><div>>  ; CHECK:   Characteristics [</div><div>>  ; CHECK:     IMAGE_SCN_ALIGN_1BYTES</div><div>>  ; CHECK:     IMAGE_SCN_LNK_INFO</div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div></div>