Index: lld/trunk/ELF/Driver.cpp =================================================================== --- lld/trunk/ELF/Driver.cpp +++ lld/trunk/ELF/Driver.cpp @@ -337,9 +337,10 @@ 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; Index: lld/trunk/test/ELF/driver.test =================================================================== --- lld/trunk/test/ELF/driver.test +++ lld/trunk/test/ELF/driver.test @@ -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