Skip to content

Commit 0764e55

Browse files
authored
[lld][WebAssembly] Improve -v/-V/--version flag compat (#113204)
Fixes: #112836
1 parent 62cb1a3 commit 0764e55

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

lld/test/wasm/version.test

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
## Copied from lld/test/ELF/version.test
2+
3+
## --version skips input file processing.
4+
# RUN: wasm-ld --version %t/not-exist 2>&1 | FileCheck %s
5+
6+
## -v/-V don't skip processing if there is any input.
7+
# RUN: wasm-ld -v 2>&1 | FileCheck %s
8+
# RUN: not wasm-ld -v %t/not-exist 2>&1 | FileCheck %s
9+
# RUN: wasm-ld -V 2>&1 | FileCheck %s
10+
# RUN: not wasm-ld -V %t/not-exist 2>&1 | FileCheck %s
11+
12+
# CHECK: LLD {{.+}}

lld/wasm/Driver.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,11 +1218,9 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
12181218
return;
12191219
}
12201220

1221-
// Handle --version
1222-
if (args.hasArg(OPT_version) || args.hasArg(OPT_v)) {
1221+
// Handle -v or -version.
1222+
if (args.hasArg(OPT_v) || args.hasArg(OPT_version))
12231223
lld::outs() << getLLDVersion() << "\n";
1224-
return;
1225-
}
12261224

12271225
// Handle --reproduce
12281226
if (const char *path = getReproduceOption(args)) {
@@ -1248,6 +1246,13 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
12481246
readConfigs(args);
12491247
setConfigs();
12501248

1249+
// The behavior of -v or --version is a bit strange, but this is
1250+
// needed for compatibility with GNU linkers.
1251+
if (args.hasArg(OPT_v) && !args.hasArg(OPT_INPUT))
1252+
return;
1253+
if (args.hasArg(OPT_version))
1254+
return;
1255+
12511256
createFiles(args);
12521257
if (errorCount())
12531258
return;

lld/wasm/Options.td

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,7 @@ def: Flag<["-"], "S">, Alias<strip_debug>, HelpText<"Alias for --strip-debug">;
288288
def: Flag<["-"], "t">, Alias<trace>, HelpText<"Alias for --trace">;
289289
def: JoinedOrSeparate<["-"], "y">, Alias<trace_symbol>, HelpText<"Alias for --trace-symbol">;
290290
def: JoinedOrSeparate<["-"], "u">, Alias<undefined>;
291+
def: Flag<["-"], "V">, Alias<v>, HelpText<"Alias for -v">;
291292

292293
// LTO-related options.
293294
def lto_O: JJ<"lto-O">, MetaVarName<"<opt-level>">,

0 commit comments

Comments
 (0)