[PATCH] D14776: Fix bug where WinCOFFObjectWriter would assume starting from an empty output.
Manuel Klimek via llvm-commits
llvm-commits at lists.llvm.org
Wed Nov 18 07:18:40 PST 2015
klimek created this revision.
klimek added a reviewer: bkramer.
klimek added a subscriber: llvm-commits.
Starting on an input stream that is not at offset 0 would trigger the
assert in WinCOFFObjectWriter.cpp:1065:
assert(getStream().tell() <= (*i)->Header.PointerToRawData &&
"Section::PointerToRawData is insane!");
http://reviews.llvm.org/D14776
Files:
include/llvm/MC/MCObjectWriter.h
lib/MC/WinCOFFObjectWriter.cpp
test/MC/COFF/stdin.s
Index: test/MC/COFF/stdin.s
===================================================================
--- /dev/null
+++ test/MC/COFF/stdin.s
@@ -0,0 +1,3 @@
+// REQUIRES: shell
+// RUN: ( echo "test"; llvm-mc -filetype=obj -triple i686-pc-win32 %s ) > %t
+
Index: lib/MC/WinCOFFObjectWriter.cpp
===================================================================
--- lib/MC/WinCOFFObjectWriter.cpp
+++ lib/MC/WinCOFFObjectWriter.cpp
@@ -962,7 +962,7 @@
// Assign file offsets to COFF object file structures.
- unsigned offset = 0;
+ unsigned offset = getInitialOffset();
if (UseBigObj)
offset += COFF::Header32Size;
Index: include/llvm/MC/MCObjectWriter.h
===================================================================
--- include/llvm/MC/MCObjectWriter.h
+++ include/llvm/MC/MCObjectWriter.h
@@ -49,6 +49,10 @@
MCObjectWriter(raw_pwrite_stream &OS, bool IsLittleEndian)
: OS(&OS), IsLittleEndian(IsLittleEndian) {}
+ unsigned getInitialOffset() {
+ return OS->tell();
+ }
+
public:
virtual ~MCObjectWriter();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14776.40507.patch
Type: text/x-patch
Size: 1051 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20151118/eb61666b/attachment.bin>
More information about the llvm-commits
mailing list