forked from OSchip/llvm-project
[ELF] - Exit on --version call.
GNU linkers disagree here. Though both -version and -v are mentioned in help to print the version information, GNU ld just normally exits, while gold can continue linking. We are compatible with ld.bfd here. This fixes PR31057. Differential revision: https://reviews.llvm.org/D26865 llvm-svn: 287448
This commit is contained in:
parent
f011f7e160
commit
0a94bffe12
|
@ -290,8 +290,15 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr, bool CanExitEarly) {
|
||||||
printHelp(ArgsArr[0]);
|
printHelp(ArgsArr[0]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Args.hasArg(OPT_version))
|
|
||||||
|
// GNU linkers disagree here. Though both -version and -v are mentioned
|
||||||
|
// in help to print the version information, GNU ld just normally exits,
|
||||||
|
// while gold can continue linking. We are compatible with ld.bfd here.
|
||||||
|
if (Args.hasArg(OPT_version) || Args.hasArg(OPT_v))
|
||||||
outs() << getLLDVersion() << "\n";
|
outs() << getLLDVersion() << "\n";
|
||||||
|
if (Args.hasArg(OPT_version))
|
||||||
|
return;
|
||||||
|
|
||||||
Config->ExitEarly = CanExitEarly && !Args.hasArg(OPT_full_shutdown);
|
Config->ExitEarly = CanExitEarly && !Args.hasArg(OPT_full_shutdown);
|
||||||
|
|
||||||
if (const char *Path = getReproduceOption(Args)) {
|
if (const char *Path = getReproduceOption(Args)) {
|
||||||
|
|
|
@ -206,9 +206,11 @@ def unresolved_symbols: J<"unresolved-symbols=">,
|
||||||
def rsp_quoting: J<"rsp-quoting=">,
|
def rsp_quoting: J<"rsp-quoting=">,
|
||||||
HelpText<"Quoting style for response files. Values supported: windows|posix">;
|
HelpText<"Quoting style for response files. Values supported: windows|posix">;
|
||||||
|
|
||||||
|
def v: Flag<["-"], "v">, HelpText<"Display the version number">;
|
||||||
|
|
||||||
def verbose: F<"verbose">, HelpText<"Verbose mode">;
|
def verbose: F<"verbose">, HelpText<"Verbose mode">;
|
||||||
|
|
||||||
def version: F<"version">, HelpText<"Display the version number">;
|
def version: F<"version">, HelpText<"Display the version number and exit">;
|
||||||
|
|
||||||
def version_script: S<"version-script">,
|
def version_script: S<"version-script">,
|
||||||
HelpText<"Read a version script">;
|
HelpText<"Read a version script">;
|
||||||
|
@ -266,7 +268,6 @@ def alias_Ttext: J<"Ttext=">, Alias<Ttext>;
|
||||||
def alias_undefined_eq: J<"undefined=">, Alias<undefined>;
|
def alias_undefined_eq: J<"undefined=">, Alias<undefined>;
|
||||||
def alias_undefined_u: JoinedOrSeparate<["-"], "u">, Alias<undefined>;
|
def alias_undefined_u: JoinedOrSeparate<["-"], "u">, Alias<undefined>;
|
||||||
def alias_version_V: Flag<["-"], "V">, Alias<version>;
|
def alias_version_V: Flag<["-"], "V">, Alias<version>;
|
||||||
def alias_version_v: Flag<["-"], "v">, Alias<version>;
|
|
||||||
def alias_wrap_wrap: J<"wrap=">, Alias<wrap>;
|
def alias_wrap_wrap: J<"wrap=">, Alias<wrap>;
|
||||||
|
|
||||||
// Our symbol resolution algorithm handles symbols in archive files differently
|
// Our symbol resolution algorithm handles symbols in archive files differently
|
||||||
|
|
|
@ -16,9 +16,11 @@
|
||||||
# RUN: ld.lld --help 2>&1 | FileCheck -check-prefix=HELP %s
|
# RUN: ld.lld --help 2>&1 | FileCheck -check-prefix=HELP %s
|
||||||
# HELP: USAGE:
|
# HELP: USAGE:
|
||||||
|
|
||||||
# RUN: not ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s
|
# RUN: ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||||
# VERSION: LLD
|
# VERSION: LLD
|
||||||
|
|
||||||
|
# RUN: not ld.lld -v 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||||
|
|
||||||
## Attempt to link DSO with -r
|
## Attempt to link DSO with -r
|
||||||
# RUN: ld.lld -shared %t -o %t.so
|
# RUN: ld.lld -shared %t -o %t.so
|
||||||
# RUN: not ld.lld -r %t.so %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR %s
|
# RUN: not ld.lld -r %t.so %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR %s
|
||||||
|
|
Loading…
Reference in New Issue