From 1eb9f44118b4d1ebe9337a6fe05f25bbe31f0dcc Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Sun, 28 Feb 2016 03:18:09 +0000 Subject: [PATCH] ELF: Add --help option. llvm-svn: 262168 --- lld/ELF/Driver.cpp | 8 ++++++-- lld/ELF/Driver.h | 1 + lld/ELF/DriverUtils.cpp | 5 +++++ lld/ELF/Options.td | 3 +++ lld/test/ELF/driver.test | 3 +++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index 474e6ca..4719651 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -41,7 +41,7 @@ bool elf::link(ArrayRef Args, raw_ostream &Error) { Config = &C; Driver = &D; Script = &LS; - Driver->main(Args.slice(1)); + Driver->main(Args); return !HasError; } @@ -163,7 +163,11 @@ static bool hasZOption(opt::InputArgList &Args, StringRef Key) { void LinkerDriver::main(ArrayRef ArgsArr) { initSymbols(); - opt::InputArgList Args = parseArgs(&Alloc, ArgsArr); + opt::InputArgList Args = parseArgs(&Alloc, ArgsArr.slice(1)); + if (Args.hasArg(OPT_help)) { + printHelp(ArgsArr[0]); + return; + } if (Args.hasArg(OPT_version)) { printVersion(); return; diff --git a/lld/ELF/Driver.h b/lld/ELF/Driver.h index 3f81534..e77f946 100644 --- a/lld/ELF/Driver.h +++ b/lld/ELF/Driver.h @@ -53,6 +53,7 @@ enum { #undef OPTION }; +void printHelp(const char *Argv0); void printVersion(); std::string findFromSearchPaths(StringRef Path); diff --git a/lld/ELF/DriverUtils.cpp b/lld/ELF/DriverUtils.cpp index cf7e7dd..a662b3c 100644 --- a/lld/ELF/DriverUtils.cpp +++ b/lld/ELF/DriverUtils.cpp @@ -79,6 +79,11 @@ opt::InputArgList elf::parseArgs(llvm::BumpPtrAllocator *A, return Args; } +void elf::printHelp(const char *Argv0) { + ELFOptTable Table; + Table.PrintHelp(outs(), Argv0, "lld", false); +} + void elf::printVersion() { outs() << "LLD " << getLLDVersion(); std::string S = getLLDRepositoryVersion(); diff --git a/lld/ELF/Options.td b/lld/ELF/Options.td index db21530..21d201a 100644 --- a/lld/ELF/Options.td +++ b/lld/ELF/Options.td @@ -57,6 +57,9 @@ def fini : Separate<["-"], "fini">, MetaVarName<"">, def hash_style : Separate<["--", "-"], "hash-style">, HelpText<"Specify hash style (sysv, gnu or both)">; +def help : Flag<["--", "-"], "help">, + HelpText<"Print option help">; + def icf : Flag<["--"], "icf=all">, HelpText<"Enable Identical Code Folding.">; diff --git a/lld/test/ELF/driver.test b/lld/test/ELF/driver.test index d9c293c..1691c2a 100644 --- a/lld/test/ELF/driver.test +++ b/lld/test/ELF/driver.test @@ -14,6 +14,9 @@ # RUN: not ld.lld %t -o /no/such/file 2>&1 | FileCheck -check-prefix=MISSING %s # MISSING: failed to open /no/such/file +# RUN: ld.lld --help 2>&1 | FileCheck -check-prefix=HELP %s +# HELP: USAGE: + # RUN: ld.lld --version 2>&1 | FileCheck -check-prefix=VERSION %s # VERSION: LLD -- 2.7.4