ELF: Add --help option.
llvm-svn: 262168
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 @@
   Config = &C;
   Driver = &D;
   Script = &LS;
-  Driver->main(Args.slice(1));
+  Driver->main(Args);
   return !HasError;
 }
 
@@ -163,7 +163,11 @@
 void LinkerDriver::main(ArrayRef<const char *> 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 @@
 #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 @@
   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 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