[PATCH] D133607: Improve ArchiveWriter diagnostics
Yi Kong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 9 12:55:35 PDT 2022
kongyi created this revision.
kongyi added a reviewer: srhines.
Herald added subscribers: JDevlieghere, hiraditya.
Herald added a project: All.
kongyi requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Print out the archive member that failed, to make debugging easier.
Before:
error: failed to build archive: Not an int attribute (Producer: 'LLVM15.0.1git' Reader: 'LLVM 14.0.5-rust-dev')
After:
error: failed to build archive: 'fake_bt_keystore.o': Not an int attribute (Producer: 'LLVM15.0.1git' Reader: 'LLVM 14.0.5-rust-dev')
https://reviews.llvm.org/D133607
Files:
llvm/lib/Object/ArchiveWriter.cpp
llvm/test/Object/archive-malformed-object.test
Index: llvm/test/Object/archive-malformed-object.test
===================================================================
--- llvm/test/Object/archive-malformed-object.test
+++ llvm/test/Object/archive-malformed-object.test
@@ -10,13 +10,13 @@
# RUN: %python -c "with open('input.bc', 'a') as f: f.truncate(10)"
# RUN: not llvm-ar rc bad.a input.bc 2>&1 | FileCheck %s --check-prefix=ERR1
-# ERR1: error: bad.a: Invalid bitcode signature
+# ERR1: error: bad.a: 'input.bc': Invalid bitcode signature
## Non-bitcode malformed file.
# RUN: yaml2obj input.yaml -o input.o
# RUN: not llvm-ar rc bad.a input.o 2>&1 | FileCheck %s --check-prefix=ERR2
-# ERR2: error: bad.a: section header table goes past the end of the file: e_shoff = 0x9999
+# ERR2: error: bad.a: 'input.o': section header table goes past the end of the file: e_shoff = 0x9999
## Don't emit an error if the symbol table is not required.
# RUN: llvm-ar rcS good.a input.o input.bc
Index: llvm/lib/Object/ArchiveWriter.cpp
===================================================================
--- llvm/lib/Object/ArchiveWriter.cpp
+++ llvm/lib/Object/ArchiveWriter.cpp
@@ -598,8 +598,8 @@
if (NeedSymbols) {
Expected<std::vector<unsigned>> SymbolsOrErr =
getSymbols(Buf, SymNames, HasObject);
- if (auto E = SymbolsOrErr.takeError())
- return std::move(E);
+ if (!SymbolsOrErr)
+ return createFileError(M.MemberName, SymbolsOrErr.takeError());
Symbols = std::move(*SymbolsOrErr);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133607.459172.patch
Type: text/x-patch
Size: 1516 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220909/7d98f7a0/attachment.bin>
More information about the llvm-commits
mailing list