[llvm] r305314 - Improve error messages in order to help with fixing a big-endian bug.

Eric Beckmann via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 13 11:17:37 PDT 2017


Author: ecbeckmann
Date: Tue Jun 13 13:17:36 2017
New Revision: 305314

URL: http://llvm.org/viewvc/llvm-project?rev=305314&view=rev
Log:
Improve error messages in order to help with fixing a big-endian bug.

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

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

Modified: llvm/trunk/include/llvm/Object/WindowsResource.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/WindowsResource.h?rev=305314&r1=305313&r2=305314&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/WindowsResource.h (original)
+++ llvm/trunk/include/llvm/Object/WindowsResource.h Tue Jun 13 13:17:36 2017
@@ -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 {

Modified: llvm/trunk/lib/Object/WindowsResource.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/WindowsResource.cpp?rev=305314&r1=305313&r2=305314&view=diff
==============================================================================
--- llvm/trunk/lib/Object/WindowsResource.cpp (original)
+++ llvm/trunk/lib/Object/WindowsResource.cpp Tue Jun 13 13:17:36 2017
@@ -70,7 +70,7 @@ ResourceEntryRef::ResourceEntryRef(Binar
                                    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(Windo
   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");
 }
 

Modified: llvm/trunk/test/tools/llvm-cvtres/combined.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cvtres/combined.test?rev=305314&r1=305313&r2=305314&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cvtres/combined.test (original)
+++ llvm/trunk/test/tools/llvm-cvtres/combined.test Tue Jun 13 13:17:36 2017
@@ -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 [

Modified: llvm/trunk/test/tools/llvm-cvtres/object.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cvtres/object.test?rev=305314&r1=305313&r2=305314&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-cvtres/object.test (original)
+++ llvm/trunk/test/tools/llvm-cvtres/object.test Tue Jun 13 13:17:36 2017
@@ -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 [

Modified: llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpp?rev=305314&r1=305313&r2=305314&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpp (original)
+++ llvm/trunk/tools/llvm-cvtres/llvm-cvtres.cpp Tue Jun 13 13:17:36 2017
@@ -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;
 }




More information about the llvm-commits mailing list