From 1abcf370fd1dca329e354423007da5f4abd5a6ec Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Sun, 28 Feb 2016 03:18:07 +0000 Subject: [PATCH] ELF: Add --version option. llvm-svn: 262167 --- lld/ELF/Driver.cpp | 5 +++++ lld/ELF/Driver.h | 2 ++ lld/ELF/DriverUtils.cpp | 8 ++++++++ lld/ELF/Options.td | 3 +++ lld/lib/Config/Version.cpp | 2 -- lld/test/ELF/driver.test | 20 +++++++++++--------- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index b55f601..474e6ca 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -164,6 +164,11 @@ void LinkerDriver::main(ArrayRef ArgsArr) { initSymbols(); opt::InputArgList Args = parseArgs(&Alloc, ArgsArr); + if (Args.hasArg(OPT_version)) { + printVersion(); + return; + } + readConfigs(Args); createFiles(Args); checkOptions(Args); diff --git a/lld/ELF/Driver.h b/lld/ELF/Driver.h index 52bf22b..3f81534 100644 --- a/lld/ELF/Driver.h +++ b/lld/ELF/Driver.h @@ -53,6 +53,8 @@ enum { #undef OPTION }; +void printVersion(); + std::string findFromSearchPaths(StringRef Path); std::string searchLibrary(StringRef Path); std::string buildSysrootedPath(llvm::StringRef Dir, llvm::StringRef File); diff --git a/lld/ELF/DriverUtils.cpp b/lld/ELF/DriverUtils.cpp index 336d850..cf7e7dd 100644 --- a/lld/ELF/DriverUtils.cpp +++ b/lld/ELF/DriverUtils.cpp @@ -15,6 +15,7 @@ #include "Driver.h" #include "Error.h" +#include "lld/Config/Version.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" @@ -78,6 +79,13 @@ opt::InputArgList elf::parseArgs(llvm::BumpPtrAllocator *A, return Args; } +void elf::printVersion() { + outs() << "LLD " << getLLDVersion(); + std::string S = getLLDRepositoryVersion(); + if (!S.empty()) + outs() << " " << S << "\n"; +} + std::string elf::findFromSearchPaths(StringRef Path) { for (StringRef Dir : Config->SearchPaths) { std::string FullPath = buildSysrootedPath(Dir, Path); diff --git a/lld/ELF/Options.td b/lld/ELF/Options.td index 18c6fd9..db21530 100644 --- a/lld/ELF/Options.td +++ b/lld/ELF/Options.td @@ -119,6 +119,9 @@ def undefined : Joined<["--"], "undefined=">, def verbose : Flag<["--"], "verbose">; +def version : Flag<["--", "-"], "version">, + HelpText<"Display the version number">; + def whole_archive : Flag<["--", "-"], "whole-archive">, HelpText<"Force load of all members in a static library">; diff --git a/lld/lib/Config/Version.cpp b/lld/lib/Config/Version.cpp index b64ccef..2f06d20 100644 --- a/lld/lib/Config/Version.cpp +++ b/lld/lib/Config/Version.cpp @@ -13,8 +13,6 @@ #include "lld/Config/Version.h" #include "llvm/Support/raw_ostream.h" -#include -#include using namespace llvm; diff --git a/lld/test/ELF/driver.test b/lld/test/ELF/driver.test index 9572358..d9c293c 100644 --- a/lld/test/ELF/driver.test +++ b/lld/test/ELF/driver.test @@ -1,19 +1,21 @@ # REQUIRES: x86 # RUN: not ld.lld -unknown1 -unknown2 -m foo /no/such/file -lnosuchlib \ -# RUN: 2>&1 | FileCheck %s +# RUN: 2>&1 | FileCheck -check-prefix=UNKNOWN %s -# CHECK: warning: unknown argument: -unknown1 -# CHECK: warning: unknown argument: -unknown2 -# CHECK: unknown argument(s) found -# CHECK: Unknown emulation: foo -# CHECK: cannot open /no/such/file -# CHECK: Unable to find library -lnosuchlib +# UNKNOWN: warning: unknown argument: -unknown1 +# UNKNOWN: warning: unknown argument: -unknown2 +# UNKNOWN: unknown argument(s) found +# UNKNOWN: Unknown emulation: foo +# UNKNOWN: cannot open /no/such/file +# UNKNOWN: Unable to find library -lnosuchlib # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t -# RUN: not ld.lld %t -o /no/such/file 2>&1 | FileCheck -check-prefix=CHECK2 %s +# RUN: not ld.lld %t -o /no/such/file 2>&1 | FileCheck -check-prefix=MISSING %s +# MISSING: failed to open /no/such/file -# CHECK2: failed to open /no/such/file +# RUN: ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s +# VERSION: LLD .globl _start _start: -- 2.7.4