]> granicus.if.org Git - llvm/commitdiff
Improve error messages in order to help with fixing a big-endian bug.
authorEric Beckmann <ecbeckmann@google.com>
Tue, 13 Jun 2017 18:17:36 +0000 (18:17 +0000)
committerEric Beckmann <ecbeckmann@google.com>
Tue, 13 Jun 2017 18:17:36 +0000 (18:17 +0000)
Summary: Added output to stderr so that we can actually see what is happening when the test fails on big endian.

Reviewers: zturner

Subscribers: llvm-commits, hiraditya

Differential Revision: https://reviews.llvm.org/D34155

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305314 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/WindowsResource.h
lib/Object/WindowsResource.cpp
test/tools/llvm-cvtres/combined.test
test/tools/llvm-cvtres/object.test
tools/llvm-cvtres/llvm-cvtres.cpp

index 33f396cc6f238acbec2246a7a15e10d3a4c128f3..4839013c8228c1b772f8e9f2aaa0c209cfcc30c3 100644 (file)
@@ -118,7 +118,7 @@ public:
   class TreeNode;
   WindowsResourceParser();
   Error parse(WindowsResource *WR);
-  void printTree() const;
+  void printTree(raw_ostream &OS) const;
   const TreeNode &getTree() const { return Root; }
   const ArrayRef<std::vector<uint8_t>> getData() const { return Data; }
   const ArrayRef<std::vector<UTF16>> getStringTable() const {
index 3d689fe1e9a640b51b79e84253ac4a3e035be3a0..b1452e8d5e95a40d49edf3338e4ea15df9ae1696 100644 (file)
@@ -70,7 +70,7 @@ ResourceEntryRef::ResourceEntryRef(BinaryStreamRef Ref,
                                    const WindowsResource *Owner, Error &Err)
     : Reader(Ref), OwningRes(Owner) {
   if (loadNext())
-    Err = make_error<GenericBinaryError>("Could not read first entry.",
+    Err = make_error<GenericBinaryError>("Could not read first entry.\n",
                                          object_error::unexpected_eof);
 }
 
@@ -156,8 +156,8 @@ Error WindowsResourceParser::parse(WindowsResource *WR) {
   return Error::success();
 }
 
-void WindowsResourceParser::printTree() const {
-  ScopedPrinter Writer(outs());
+void WindowsResourceParser::printTree(raw_ostream &OS) const {
+  ScopedPrinter Writer(OS);
   Root.print(Writer, "Resource Tree");
 }
 
index bb3b4dbc7365b60b44aef8f00ff82d056475d787..084a0ea0cdeccd4f05b4feb73ced3a50e03253bc 100644 (file)
@@ -8,7 +8,7 @@
 // > cvtres /machine:X86 /readonly /nologo /out:combined.obj.coff \
 //   languages.res test_resource.res
 
-RUN: llvm-cvtres /out:%t %p/Inputs/languages.res %p/Inputs/test_resource.res
+RUN: llvm-cvtres /verbose /out:%t %p/Inputs/languages.res %p/Inputs/test_resource.res
 RUN: llvm-readobj -coff-resources -section-data %t | FileCheck %s
 
 CHECK:     Resources [
index 12373e0ac7fea2b09620159fb34ff5cc03d297e3..95522b17bd07adb9bf95fbb34acb5dea41858920 100644 (file)
@@ -7,7 +7,7 @@
 // > cvtres /machine:X86 /readonly /nologo /out:test_resource.obj.coff \
 //   test_resource.res
 
-RUN: llvm-cvtres /out:%t %p/Inputs/test_resource.res
+RUN: llvm-cvtres /verbose /out:%t %p/Inputs/test_resource.res
 RUN: llvm-readobj -coff-resources -section-data %t | FileCheck %s
 
 CHECK:     Resources [
index eaba02c16f3965776d894e0d3b53cd732919a9dd..1e463399a5983ea969235d3f6674d94490d62a0a 100644 (file)
@@ -191,11 +191,23 @@ int main(int argc_, const char *argv_[]) {
     error(Parser.parse(RF));
   }
 
-  if (Verbose)
-    Parser.printTree();
+  if (Verbose) {
+    Parser.printTree(outs());
+    Parser.printTree(errs());
+  }
 
   error(
       llvm::object::writeWindowsResourceCOFF(OutputFile, MachineType, Parser));
 
+  if (Verbose) {
+    Expected<object::OwningBinary<object::Binary>> BinaryOrErr =
+        object::createBinary(OutputFile);
+    if (!BinaryOrErr)
+      reportError(OutputFile, errorToErrorCode(BinaryOrErr.takeError()));
+    Binary &Binary = *BinaryOrErr.get().getBinary();
+    ScopedPrinter W(errs());
+    W.printBinaryBlock("Output File Raw Data", Binary.getData());
+  }
+
   return 0;
 }