[lld] r366944 - [LLD] Do not print additional newlines after reaching error limit
Alexander Richardson via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 24 13:56:24 PDT 2019
Author: arichardson
Date: Wed Jul 24 13:56:23 2019
New Revision: 366944
URL: http://llvm.org/viewvc/llvm-project?rev=366944&view=rev
Log:
[LLD] Do not print additional newlines after reaching error limit
Summary:
This could previously happen if errors that are emitted after reaching the
error limit. In that case, the flag inside the newline() function will be
set to true which causes the next call to print a newline even though the
actual message will be discarded.
Reviewers: ruiu, grimar, MaskRay, espindola
Reviewed By: ruiu
Subscribers: emaste, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D65198
Added:
lld/trunk/test/ELF/error-limit-no-newlines.s (with props)
Modified:
lld/trunk/Common/ErrorHandler.cpp
Modified: lld/trunk/Common/ErrorHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/Common/ErrorHandler.cpp?rev=366944&r1=366943&r2=366944&view=diff
==============================================================================
--- lld/trunk/Common/ErrorHandler.cpp (original)
+++ lld/trunk/Common/ErrorHandler.cpp Wed Jul 24 13:56:23 2019
@@ -157,12 +157,13 @@ void ErrorHandler::warn(const Twine &msg
void ErrorHandler::error(const Twine &msg) {
std::lock_guard<std::mutex> lock(mu);
- newline(errorOS, msg);
if (errorLimit == 0 || errorCount < errorLimit) {
+ newline(errorOS, msg);
printHeader("error: ", raw_ostream::RED, msg);
*errorOS << msg << "\n";
} else if (errorCount == errorLimit) {
+ newline(errorOS, msg);
printHeader("error: ", raw_ostream::RED, msg);
*errorOS << errorLimitExceededMsg << "\n";
if (exitEarly)
Added: lld/trunk/test/ELF/error-limit-no-newlines.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/error-limit-no-newlines.s?rev=366944&view=auto
==============================================================================
--- lld/trunk/test/ELF/error-limit-no-newlines.s (added)
+++ lld/trunk/test/ELF/error-limit-no-newlines.s Wed Jul 24 13:56:23 2019
@@ -0,0 +1,24 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t1.o
+# RUN: not ld.lld --error-limit=1 %t1.o %t1.o %t1.o -o /dev/null 2>%t.output
+# RUN: echo "END" >> %t.output
+# RUN: FileCheck %s -input-file=%t.output
+
+# CHECK: error: duplicate symbol: _start
+# CHECK-NEXT: >>> defined at {{.*}}1.o:(.text+0x0)
+# CHECK-NEXT: >>> defined at {{.*}}1.o:(.text+0x0)
+# CHECK-EMPTY:
+# CHECK-NEXT: ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
+## Ensure that there isn't an additional newline before the next message:
+# CHECK-NEXT: END
+.globl _start
+_start:
+ nop
+
+.globl foo
+foo:
+ nop
+
+.globl bar
+bar:
+ nop
Propchange: lld/trunk/test/ELF/error-limit-no-newlines.s
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: lld/trunk/test/ELF/error-limit-no-newlines.s
------------------------------------------------------------------------------
svn:keywords = FreeBSD=%H
Propchange: lld/trunk/test/ELF/error-limit-no-newlines.s
------------------------------------------------------------------------------
svn:mime-type = text/plain
More information about the llvm-commits
mailing list