[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