Index: llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp =================================================================== --- llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp +++ llvm/trunk/lib/MC/WinCOFFObjectWriter.cpp @@ -620,14 +620,9 @@ // Write the section contents. if (Sec.Header.PointerToRawData != 0) { - assert(W.OS.tell() <= Sec.Header.PointerToRawData && + assert(W.OS.tell() == Sec.Header.PointerToRawData && "Section::PointerToRawData is insane!"); - unsigned PaddingSize = Sec.Header.PointerToRawData - W.OS.tell(); - assert(PaddingSize < 4 && - "Should only need at most three bytes of padding!"); - W.OS.write_zeros(PaddingSize); - uint32_t CRC = writeSectionContents(Asm, Layout, MCSec); // Update the section definition auxiliary symbol to record the CRC. @@ -912,10 +907,7 @@ Sec->Header.SizeOfRawData = Layout.getSectionAddressSize(&Section); if (IsPhysicalSection(Sec)) { - // Align the section data to a four byte boundary. - Offset = alignTo(Offset, 4); Sec->Header.PointerToRawData = Offset; - Offset += Sec->Header.SizeOfRawData; } Index: llvm/trunk/test/MC/COFF/directive-section-characteristics.ll =================================================================== --- llvm/trunk/test/MC/COFF/directive-section-characteristics.ll +++ llvm/trunk/test/MC/COFF/directive-section-characteristics.ll @@ -13,7 +13,7 @@ ; CHECK: Section { ; CHECK: Name: .drectve -; CHECK: PointerToRawData: 0xB8 +; CHECK: PointerToRawData: 0xB5 ; CHECK: Characteristics [ ; CHECK: IMAGE_SCN_ALIGN_1BYTES ; CHECK: IMAGE_SCN_LNK_INFO