Skip to content

Commit 64c1734

Browse files
committed
[lld/mac] Write -v output to stderr
This matches ld64, and it's conceivable that projects try to read this information off stderr for that reason. --version keeps writing to stdout. Differential Revision: https://reviews.llvm.org/D113020
1 parent 5a892be commit 64c1734

File tree

4 files changed

+46
-33
lines changed

4 files changed

+46
-33
lines changed

lld/Common/ErrorHandler.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,12 @@ void ErrorHandler::log(const Twine &msg) {
192192
reportDiagnostic(logName, Colors::RESET, "", msg);
193193
}
194194

195-
void ErrorHandler::message(const Twine &msg) {
195+
void ErrorHandler::message(const Twine &msg, llvm::raw_ostream &s) {
196196
if (disableOutput)
197197
return;
198198
std::lock_guard<std::mutex> lock(mu);
199-
lld::outs() << msg << "\n";
200-
lld::outs().flush();
199+
s << msg << "\n";
200+
s.flush();
201201
}
202202

203203
void ErrorHandler::warn(const Twine &msg) {

lld/MachO/Driver.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,15 +1364,17 @@ bool macho::link(ArrayRef<const char *> argsArr, bool canExitEarly,
13641364
config->platform() == PlatformKind::macOS);
13651365

13661366
if (args.hasArg(OPT_v)) {
1367-
message(getLLDVersion());
1367+
message(getLLDVersion(), lld::errs());
13681368
message(StringRef("Library search paths:") +
1369-
(config->librarySearchPaths.empty()
1370-
? ""
1371-
: "\n\t" + join(config->librarySearchPaths, "\n\t")));
1369+
(config->librarySearchPaths.empty()
1370+
? ""
1371+
: "\n\t" + join(config->librarySearchPaths, "\n\t")),
1372+
lld::errs());
13721373
message(StringRef("Framework search paths:") +
1373-
(config->frameworkSearchPaths.empty()
1374-
? ""
1375-
: "\n\t" + join(config->frameworkSearchPaths, "\n\t")));
1374+
(config->frameworkSearchPaths.empty()
1375+
? ""
1376+
: "\n\t" + join(config->frameworkSearchPaths, "\n\t")),
1377+
lld::errs());
13761378
}
13771379

13781380
config->progName = argsArr[0];

lld/include/lld/Common/ErrorHandler.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ class ErrorHandler {
109109
void error(const Twine &msg, ErrorTag tag, ArrayRef<StringRef> args);
110110
[[noreturn]] void fatal(const Twine &msg);
111111
void log(const Twine &msg);
112-
void message(const Twine &msg);
112+
void message(const Twine &msg, llvm::raw_ostream &s);
113113
void warn(const Twine &msg);
114114

115115
void reset() {
@@ -137,7 +137,9 @@ inline void error(const Twine &msg, ErrorTag tag, ArrayRef<StringRef> args) {
137137
}
138138
[[noreturn]] inline void fatal(const Twine &msg) { errorHandler().fatal(msg); }
139139
inline void log(const Twine &msg) { errorHandler().log(msg); }
140-
inline void message(const Twine &msg) { errorHandler().message(msg); }
140+
inline void message(const Twine &msg, llvm::raw_ostream &s = outs()) {
141+
errorHandler().message(msg, s);
142+
}
141143
inline void warn(const Twine &msg) { errorHandler().warn(msg); }
142144
inline uint64_t errorCount() { return errorHandler().errorCount; }
143145

lld/test/MachO/syslibroot.test

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,77 @@
11
# Ensure that a nonexistent path is ignored with a syslibroot
2+
# Don't use %lld to not pick up the default syslibroot flag.
23

3-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
4-
RUN: -syslibroot /var/empty | FileCheck %s -check-prefix CHECK-NONEXISTENT-SYSLIBROOT
4+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
5+
RUN: -o /dev/null -syslibroot /var/empty 2>&1 \
6+
RUN: | FileCheck %s -check-prefix CHECK-NONEXISTENT-SYSLIBROOT
57

68
CHECK-NONEXISTENT-SYSLIBROOT: Library search paths:
79
CHECK-NONEXISTENT-SYSLIBROOT-NEXT: Framework search paths:
810

911
RUN: mkdir -p %t/usr/lib
10-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
11-
RUN: -syslibroot %t 2>&1 | FileCheck %s -check-prefix CHECK-SYSLIBROOT -DROOT=%t
12+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
13+
RUN: -o /dev/null -syslibroot %t 2>&1 \
14+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT -DROOT=%t
1215

1316
CHECK-SYSLIBROOT-NOT: directory not found{{.*}}usr/local/lib
1417
CHECK-SYSLIBROOT: Library search paths:
1518
CHECK-SYSLIBROOT-NEXT: [[ROOT]]/usr/lib
1619

1720
RUN: mkdir -p %t/Library/libxml2-development
18-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
19-
RUN: -syslibroot %t -L /Library/libxml2-development | FileCheck %s -check-prefix CHECK-ABSOLUTE-PATH-REROOTED -DROOT=%t
21+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
22+
RUN: -o /dev/null -syslibroot %t -L /Library/libxml2-development 2>&1 \
23+
RUN: | FileCheck %s -check-prefix CHECK-ABSOLUTE-PATH-REROOTED -DROOT=%t
2024

2125
CHECK-ABSOLUTE-PATH-REROOTED: Library search paths:
2226
CHECK-ABSOLUTE-PATH-REROOTED: [[ROOT]]/Library/libxml2-development
2327
CHECK-ABSOLUTE-PATH-REROOTED: [[ROOT]]/usr/lib
2428

25-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
26-
RUN: -syslibroot %t -L %t/Library/libxml2-development | FileCheck %s -check-prefix CHECK-PATH-WITHOUT-REROOT -DPATH=%t/Library/libxml2-development
29+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
30+
RUN: -o /dev/null -syslibroot %t -L %t/Library/libxml2-development 2>&1 \
31+
RUN: | FileCheck %s -check-prefix CHECK-PATH-WITHOUT-REROOT -DPATH=%t/Library/libxml2-development
2732
CHECK-PATH-WITHOUT-REROOT: Library search paths:
2833
CHECK-PATH-WITHOUT-REROOT-NEXT: [[PATH]]
2934

3035
RUN: mkdir -p %t.2/usr/lib
31-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
32-
RUN: -syslibroot %t -syslibroot %t.2 | FileCheck %s -check-prefix CHECK-SYSLIBROOT-MATRIX -DROOT=%t
36+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
37+
RUN: -o /dev/null -syslibroot %t -syslibroot %t.2 2>&1 \
38+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT-MATRIX -DROOT=%t
3339

3440
CHECK-SYSLIBROOT-MATRIX: Library search paths:
3541
CHECK-SYSLIBROOT-MATRIX: [[ROOT]]/usr/lib
3642
CHECK-SYSLIBROOT-MATRIX: [[ROOT]].2/usr/lib
3743

38-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
39-
RUN: -syslibroot %t -syslibroot %t.2 -syslibroot / | \
40-
RUN: FileCheck %s -check-prefix CHECK-SYSLIBROOT-IGNORED -DROOT=%t
44+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
45+
RUN: -o /dev/null -syslibroot %t -syslibroot %t.2 -syslibroot / 2>&1 \
46+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT-IGNORED -DROOT=%t
4147

4248
CHECK-SYSLIBROOT-IGNORED: Library search paths:
4349
CHECK-SYSLIBROOT-IGNORED-NOT: [[ROOT]]/usr/lib
4450
CHECK-SYSLIBROOT-IGNORED-NOT: [[ROOT]].2/usr/lib
4551

4652
RUN: mkdir -p %t/System/Library/Frameworks
47-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
48-
RUN: -syslibroot %t | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK -DROOT=%t
53+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
54+
RUN: -o /dev/null -syslibroot %t 2>&1 \
55+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK -DROOT=%t
4956

5057
CHECK-SYSLIBROOT-FRAMEWORK: Framework search paths:
5158
CHECK-SYSLIBROOT-FRAMEWORK: [[ROOT]]/System/Library/Frameworks
5259

5360
RUN: mkdir -p %t/Library/Frameworks
5461
RUN: mkdir -p %t.2/Library/Frameworks
55-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
56-
RUN: -syslibroot %t -syslibroot %t.2 -F /Library/Frameworks | \
57-
RUN: FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-MATRIX -DROOT=%t
62+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
63+
RUN: -o /dev/null -syslibroot %t -syslibroot %t.2 \
64+
RUN: -F /Library/Frameworks 2>&1 \
65+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-MATRIX -DROOT=%t
5866

5967
CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: Framework search paths:
6068
CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: [[ROOT]]/Library/Frameworks
6169
CHECK-SYSLIBROOT-FRAMEWORK-MATRIX: [[ROOT]].2/Library/Frameworks
6270

63-
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib -o /dev/null \
64-
RUN: -syslibroot %t -syslibroot %t.2 -syslibroot / -F /Library/Frameworks | \
65-
RUN: FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-IGNORED -DROOT=%t
71+
RUN: ld64.lld -arch x86_64 -platform_version macos 10 11 -v -dylib \
72+
RUN: -o /dev/null -syslibroot %t -syslibroot %t.2 -syslibroot / \
73+
RUN: -F /Library/Frameworks 2>&1 \
74+
RUN: | FileCheck %s -check-prefix CHECK-SYSLIBROOT-FRAMEWORK-IGNORED -DROOT=%t
6675

6776
CHECK-SYSLIBROOT-FRAMEWORK-IGNORED: Framework search paths:
6877
CHECK-SYSLIBROOT-FRAMEWORK-IGNORED-NOT: [[ROOT]]/Library/Frameworks

0 commit comments

Comments
 (0)