From 2043a58abeacda130b01fba8f53aacc0915e6b25 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Wed, 10 Oct 2018 00:15:36 +0000 Subject: [PATCH] Adapt OptTable::PrintHelp change in D51009 Summary: Before, OptTable::PrintHelp append "[options] " to its parameter `Help`. It is more flexible to change its semantic to `Usage` and let user customize the usage line. Reviewers: rupprecht, ruiu, espindola Reviewed By: rupprecht Subscribers: emaste, sbc100, arichardson, aheejin, llvm-commits Differential Revision: https://reviews.llvm.org/D53054 llvm-svn: 344099 --- lld/COFF/DriverUtils.cpp | 4 +++- lld/ELF/DriverUtils.cpp | 6 ++++-- lld/lib/Driver/DarwinLdDriver.cpp | 10 +++++++--- lld/wasm/Driver.cpp | 4 +++- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/lld/COFF/DriverUtils.cpp b/lld/COFF/DriverUtils.cpp index f7d8fe5..9bb8348 100644 --- a/lld/COFF/DriverUtils.cpp +++ b/lld/COFF/DriverUtils.cpp @@ -28,6 +28,7 @@ #include "llvm/Option/Option.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileUtilities.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/Process.h" #include "llvm/Support/Program.h" @@ -863,7 +864,8 @@ std::vector ArgParser::tokenize(StringRef S) { } void printHelp(const char *Argv0) { - COFFOptTable().PrintHelp(outs(), Argv0, "LLVM Linker", false); + std::string Usage = formatv("{0} [options] file...", Argv0).str(); + COFFOptTable().PrintHelp(outs(), Usage.c_str(), "LLVM Linker", false); } } // namespace coff diff --git a/lld/ELF/DriverUtils.cpp b/lld/ELF/DriverUtils.cpp index 698e06e..d8d317a 100644 --- a/lld/ELF/DriverUtils.cpp +++ b/lld/ELF/DriverUtils.cpp @@ -24,6 +24,7 @@ #include "llvm/Option/Option.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" @@ -139,8 +140,9 @@ opt::InputArgList ELFOptTable::parse(ArrayRef Argv) { } void elf::printHelp() { - ELFOptTable().PrintHelp(outs(), Config->ProgName.data(), "lld", - false /*ShowHidden*/, true /*ShowAllAliases*/); + std::string Usage = formatv("{0} [options] file...", Config->ProgName).str(); + ELFOptTable().PrintHelp(outs(), Usage.c_str(), "lld", false /*ShowHidden*/, + true /*ShowAllAliases*/); outs() << "\n"; // Scripts generated by Libtool versions up to at least 2.4.6 (the most diff --git a/lld/lib/Driver/DarwinLdDriver.cpp b/lld/lib/Driver/DarwinLdDriver.cpp index 289b300..7521d6e 100644 --- a/lld/lib/Driver/DarwinLdDriver.cpp +++ b/lld/lib/Driver/DarwinLdDriver.cpp @@ -44,6 +44,7 @@ #include "llvm/Support/Error.h" #include "llvm/Support/ErrorOr.h" #include "llvm/Support/Format.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Path.h" @@ -382,10 +383,13 @@ bool parse(llvm::ArrayRef args, MachOLinkingContext &ctx) { if (arch == MachOLinkingContext::arch_unknown && !parsedArgs.getLastArg(OPT_test_file_usage)) { // If no -arch and no options at all, print usage message. - if (parsedArgs.size() == 0) - table.PrintHelp(llvm::outs(), args[0], "LLVM Linker", false); - else + if (parsedArgs.size() == 0) { + std::string Usage = + llvm::formatv("{0} [options] file...", args[0]).str(); + table.PrintHelp(llvm::outs(), Usage.c_str(), "LLVM Linker", false); + } else { error("-arch not specified and could not be inferred"); + } return false; } } diff --git a/lld/wasm/Driver.cpp b/lld/wasm/Driver.cpp index 2a34b44..bbf9bcd 100644 --- a/lld/wasm/Driver.cpp +++ b/lld/wasm/Driver.cpp @@ -24,6 +24,7 @@ #include "llvm/Object/Wasm.h" #include "llvm/Option/ArgList.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/FormatVariadic.h" #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" #include "llvm/Support/TargetSelect.h" @@ -349,7 +350,8 @@ void LinkerDriver::link(ArrayRef ArgsArr) { // Handle --help if (Args.hasArg(OPT_help)) { - Parser.PrintHelp(outs(), ArgsArr[0], "LLVM Linker", false); + std::string Usage = formatv("{0} [options] file...", ArgsArr[0]).str(); + Parser.PrintHelp(outs(), Usage.c_str(), "LLVM Linker", false); return; } -- 2.7.4