[lld] r369445 - [COFF] Check errorCount before committing the output file
Martin Storsjo via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 20 14:08:15 PDT 2019
Author: mstorsjo
Date: Tue Aug 20 14:08:14 2019
New Revision: 369445
URL: http://llvm.org/viewvc/llvm-project?rev=369445&view=rev
Log:
[COFF] Check errorCount before committing the output file
This avoids producing an output file if errors appeared late in the
linking process (e.g. while fixing relocations, or as in the test,
while checking for multiple resources). If an output file is produced,
build tools might not retry building it on rebuilds, even if a previous
build failed due to the error return code.
Differential Revision: https://reviews.llvm.org/D66491
Modified:
lld/trunk/COFF/Writer.cpp
lld/trunk/test/COFF/multiple-resource-objs.test
Modified: lld/trunk/COFF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.cpp?rev=369445&r1=369444&r2=369445&view=diff
==============================================================================
--- lld/trunk/COFF/Writer.cpp (original)
+++ lld/trunk/COFF/Writer.cpp Tue Aug 20 14:08:14 2019
@@ -628,6 +628,9 @@ void Writer::run() {
writeMapFile(outputSections);
+ if (errorCount())
+ return;
+
ScopedTimer t2(diskCommitTimer);
if (auto e = buffer->commit())
fatal("failed to write the output file: " + toString(std::move(e)));
Modified: lld/trunk/test/COFF/multiple-resource-objs.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/multiple-resource-objs.test?rev=369445&r1=369444&r2=369445&view=diff
==============================================================================
--- lld/trunk/test/COFF/multiple-resource-objs.test (original)
+++ lld/trunk/test/COFF/multiple-resource-objs.test Tue Aug 20 14:08:14 2019
@@ -1,7 +1,9 @@
# RUN: llvm-cvtres /out:%t_resource.obj %S/Inputs/resource.res
# RUN: llvm-cvtres /out:%t_id.obj %S/Inputs/id.res
+# RUN: rm -f %t.exe
# RUN: not lld-link /out:%t.exe /dll /noentry %t_id.obj %t_resource.obj 2>&1 | \
# RUN: FileCheck --check-prefix=TWOOBJ %s
+# RUN: not test -f %t.exe
TWOOBJ: error: {{.*}}_resource.obj: more than one resource obj file not allowed, already got {{.*}}_id.obj
More information about the llvm-commits
mailing list