mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-28 08:02:08 +00:00
Make the behavior of the -v option more closer to GNU linkers.
Previously, lld exited with an error status if the only option given to the command was -v. GNU linkers gracefully exit in that case. This patch makes lld behave like GNU. Note that even with this patch, lld's -v and --version options behave slightly differently than GNU linkers' counterparts. For example, if you run `ld.bfd -v -v`, the version string is printed out twice. But that is an edge case that I don't think we need to take care of. Fixes https://bugs.llvm.org/show_bug.cgi?id=31582 Differential Revision: https://reviews.llvm.org/D40810 llvm-svn: 319717
This commit is contained in:
parent
08803f6b7d
commit
be61cc90c4
@ -337,9 +337,10 @@ void LinkerDriver::main(ArrayRef<const char *> ArgsArr, bool CanExitEarly) {
|
||||
if (Args.hasArg(OPT_v) || Args.hasArg(OPT_version))
|
||||
message(getLLDVersion() + " (compatible with GNU linkers)");
|
||||
|
||||
// ld.bfd always exits after printing out the version string.
|
||||
// ld.gold proceeds if a given option is -v. Because gold's behavior
|
||||
// is more permissive than ld.bfd, we chose what gold does here.
|
||||
// The behavior of -v or --version is a bit strange, but this is
|
||||
// needed for compatibility with GNU linkers.
|
||||
if (Args.hasArg(OPT_v) && !Args.hasArg(OPT_INPUT))
|
||||
return;
|
||||
if (Args.hasArg(OPT_version))
|
||||
return;
|
||||
|
||||
|
@ -18,10 +18,10 @@
|
||||
# HELP: : supported targets:{{.*}} elf
|
||||
|
||||
# RUN: ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||
# RUN: ld.lld -v 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||
# RUN: not ld.lld -v xyz 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||
# VERSION: LLD {{.*}} (compatible with GNU linkers)
|
||||
|
||||
# RUN: not ld.lld -v 2>&1 | FileCheck -check-prefix=VERSION %s
|
||||
|
||||
## Attempt to link DSO with -r
|
||||
# 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
|
||||
|
Loading…
Reference in New Issue
Block a user