[lld/WebAssembly] Slightly nicer error message for malformed input files
authorKeno Fischer <keno@alumni.harvard.edu>
Wed, 26 Jun 2019 00:52:46 +0000 (00:52 +0000)
committerKeno Fischer <keno@alumni.harvard.edu>
Wed, 26 Jun 2019 00:52:46 +0000 (00:52 +0000)
Summary:
Before:
```
wasm-ld: error: Relocations not in offset order
```
After
```
wasm-ld: error: While processing `libjulia.so`: Relocations not in offset order
```

At least this way you get to find out which input file is malformed.

Reviewers: sbc100
Differential Revision: https://reviews.llvm.org/D63694

llvm-svn: 364368

lld/test/wasm/corrupted.wasm.test [new file with mode: 0644]
lld/wasm/InputFiles.cpp

diff --git a/lld/test/wasm/corrupted.wasm.test b/lld/test/wasm/corrupted.wasm.test
new file mode 100644 (file)
index 0000000..988e0d5
Binary files /dev/null and b/lld/test/wasm/corrupted.wasm.test differ
index 10a5e22c7201683eff82d8e2460f7b058d31d6db..956d0f5b6052114988e1fb2b86d42dd50f09fb3d 100644 (file)
@@ -52,7 +52,8 @@ InputFile *lld::wasm::createObjectFile(MemoryBufferRef MB,
                                        StringRef ArchiveName) {
   file_magic Magic = identify_magic(MB.getBuffer());
   if (Magic == file_magic::wasm_object) {
-    std::unique_ptr<Binary> Bin = check(createBinary(MB));
+    std::unique_ptr<Binary> Bin =
+        CHECK(createBinary(MB), MB.getBufferIdentifier());
     auto *Obj = cast<WasmObjectFile>(Bin.get());
     if (Obj->isSharedObject())
       return make<SharedFile>(MB);