diff --git a/lld/COFF/Options.td b/lld/COFF/Options.td --- a/lld/COFF/Options.td +++ b/lld/COFF/Options.td @@ -240,7 +240,7 @@ "lto-obj-path", "output native object for merged LTO unit to this path">; def dash_dash_version : Flag<["--"], "version">, - HelpText<"Print version information">; + HelpText<"Display the version number and exit">; def threads : P<"threads", "Number of threads. '1' disables multi-threading. By " "default all available hardware threads are used">; diff --git a/lld/MachO/Driver.cpp b/lld/MachO/Driver.cpp --- a/lld/MachO/Driver.cpp +++ b/lld/MachO/Driver.cpp @@ -690,10 +690,15 @@ if (args.hasArg(OPT_help_hidden)) { parser.printHelp(argsArr[0], /*showHidden=*/true); return true; - } else if (args.hasArg(OPT_help)) { + } + if (args.hasArg(OPT_help)) { parser.printHelp(argsArr[0], /*showHidden=*/false); return true; } + if (args.hasArg(OPT_version)) { + message(getLLDVersion()); + return true; + } if (const char *path = getReproduceOption(args)) { // Note that --reproduce is a debug option so you can ignore it diff --git a/lld/MachO/Options.td b/lld/MachO/Options.td --- a/lld/MachO/Options.td +++ b/lld/MachO/Options.td @@ -18,6 +18,8 @@ def reproduce_eq: Joined<["--"], "reproduce=">, Alias(reproduce)>, HelpText<"Write tar file containing inputs and command to reproduce link">; +def version: Flag<["--"], "version">, + HelpText<"Display the version number and exit">; // This is a complete Options.td compiled from Apple's ld(1) manpage @@ -508,7 +510,7 @@ def grp_rare : OptionGroup<"rare">, HelpText<"RARELY USED">; def v : Flag<["-"], "v">, - HelpText<"Print the linker version">, + HelpText<"Print the linker version and search paths and exit">, Group; def version_details : Flag<["-"], "version_details">, HelpText<"Print the linker version in JSON form">, diff --git a/lld/test/MachO/driver.test b/lld/test/MachO/driver.test --- a/lld/test/MachO/driver.test +++ b/lld/test/MachO/driver.test @@ -1,5 +1,7 @@ -# RUN: not %lld ---help 2>&1 | FileCheck -check-prefix=SPELLHELP %s +# RUN: %lld --version | FileCheck -check-prefix=VERSION %s +VERSION: {{LLD [0-9]+\.[0-9]+}} +# RUN: not %lld ---help 2>&1 | FileCheck -check-prefix=SPELLHELP %s SPELLHELP: error: unknown argument '---help', did you mean '--help' # FIXME: This should say "no input files" instead SPELLHELP: error: undefined symbol: _main