[lld] r324418 - Store just argv[0] in Config.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 6 14:37:06 PST 2018


Author: rafael
Date: Tue Feb  6 14:37:05 2018
New Revision: 324418

URL: http://llvm.org/viewvc/llvm-project?rev=324418&view=rev
Log:
Store just argv[0] in Config.

Having the full argv there seems in conflict with the desire to parse
all command line options in the Driver.

Modified:
    lld/trunk/ELF/Config.h
    lld/trunk/ELF/Driver.cpp
    lld/trunk/ELF/Driver.h
    lld/trunk/ELF/DriverUtils.cpp

Modified: lld/trunk/ELF/Config.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Config.h?rev=324418&r1=324417&r2=324418&view=diff
==============================================================================
--- lld/trunk/ELF/Config.h (original)
+++ lld/trunk/ELF/Config.h Tue Feb  6 14:37:05 2018
@@ -89,12 +89,12 @@ struct Configuration {
   llvm::StringRef MapFile;
   llvm::StringRef OutputFile;
   llvm::StringRef OptRemarksFilename;
+  llvm::StringRef ProgName;
   llvm::StringRef SoName;
   llvm::StringRef Sysroot;
   llvm::StringRef ThinLTOCacheDir;
   std::string Rpath;
   std::vector<VersionDefinition> VersionDefinitions;
-  std::vector<llvm::StringRef> Argv;
   std::vector<llvm::StringRef> AuxiliaryList;
   std::vector<llvm::StringRef> FilterList;
   std::vector<llvm::StringRef> SearchPaths;

Modified: lld/trunk/ELF/Driver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.cpp?rev=324418&r1=324417&r2=324418&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.cpp (original)
+++ lld/trunk/ELF/Driver.cpp Tue Feb  6 14:37:05 2018
@@ -89,7 +89,7 @@ bool elf::link(ArrayRef<const char *> Ar
   Driver = make<LinkerDriver>();
   Script = make<LinkerScript>();
   Symtab = make<SymbolTable>();
-  Config->Argv = {Args.begin(), Args.end()};
+  Config->ProgName = Args[0];
 
   Driver->main(Args, CanExitEarly);
 
@@ -317,7 +317,7 @@ void LinkerDriver::main(ArrayRef<const c
 
   // Handle -help
   if (Args.hasArg(OPT_help)) {
-    printHelp(ArgsArr[0]);
+    printHelp();
     return;
   }
 
@@ -690,7 +690,7 @@ void LinkerDriver::readConfigs(opt::Inpu
   Config->ZWxneeded = hasZOption(Args, "wxneeded");
 
   // Parse LTO plugin-related options for compatibility with gold.
-  std::vector<const char *> LTOOptions({Config->Argv[0].data()});
+  std::vector<const char *> LTOOptions({Config->ProgName.data()});
   for (auto *Arg : Args.filtered(OPT_plugin_opt)) {
     StringRef S = Arg->getValue();
     if (S == "disable-verify")

Modified: lld/trunk/ELF/Driver.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Driver.h?rev=324418&r1=324417&r2=324418&view=diff
==============================================================================
--- lld/trunk/ELF/Driver.h (original)
+++ lld/trunk/ELF/Driver.h Tue Feb  6 14:37:05 2018
@@ -63,7 +63,7 @@ enum {
 #undef OPTION
 };
 
-void printHelp(const char *Argv0);
+void printHelp();
 std::string createResponseFile(const llvm::opt::InputArgList &Args);
 
 llvm::Optional<std::string> findFromSearchPaths(StringRef Path);

Modified: lld/trunk/ELF/DriverUtils.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/DriverUtils.cpp?rev=324418&r1=324417&r2=324418&view=diff
==============================================================================
--- lld/trunk/ELF/DriverUtils.cpp (original)
+++ lld/trunk/ELF/DriverUtils.cpp Tue Feb  6 14:37:05 2018
@@ -114,9 +114,9 @@ opt::InputArgList ELFOptTable::parse(Arr
   return Args;
 }
 
-void elf::printHelp(const char *Argv0) {
-  ELFOptTable().PrintHelp(outs(), Argv0, "lld", false /*ShowHidden*/,
-                          true /*ShowAllAliases*/);
+void elf::printHelp() {
+  ELFOptTable().PrintHelp(outs(), Config->ProgName.data(), "lld",
+                          false /*ShowHidden*/, true /*ShowAllAliases*/);
   outs() << "\n";
 
   // Scripts generated by Libtool versions up to at least 2.4.6 (the most
@@ -125,7 +125,7 @@ void elf::printHelp(const char *Argv0) {
   // assume that the linker doesn't support very basic features such as
   // shared libraries. Therefore, we need to print out at least "elf".
   // Here, we print out all the targets that we support.
-  outs() << Argv0 << ": supported targets: "
+  outs() << Config->ProgName << ": supported targets: "
          << "elf32-i386 elf32-iamcu elf32-littlearm elf32-ntradbigmips "
          << "elf32-ntradlittlemips elf32-powerpc elf32-tradbigmips "
          << "elf32-tradlittlemips elf32-x86-64 "




More information about the llvm-commits mailing list