[llvm] r230823 - [dsymutil] Add a LinkOptions struct to pass to the DwarfLinker. NFC.

Frederic Riss friss at apple.com
Fri Feb 27 16:29:07 PST 2015


Author: friss
Date: Fri Feb 27 18:29:07 2015
New Revision: 230823

URL: http://llvm.org/viewvc/llvm-project?rev=230823&view=rev
Log:
[dsymutil] Add a LinkOptions struct to pass to the DwarfLinker. NFC.

The only option we have to pass down currently is verbosity, but there
are more to come.

Modified:
    llvm/trunk/tools/dsymutil/DwarfLinker.cpp
    llvm/trunk/tools/dsymutil/dsymutil.cpp
    llvm/trunk/tools/dsymutil/dsymutil.h

Modified: llvm/trunk/tools/dsymutil/DwarfLinker.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/DwarfLinker.cpp?rev=230823&r1=230822&r2=230823&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/DwarfLinker.cpp (original)
+++ llvm/trunk/tools/dsymutil/DwarfLinker.cpp Fri Feb 27 18:29:07 2015
@@ -71,8 +71,9 @@ private:
 /// first step when we start processing a DebugMapObject.
 class DwarfLinker {
 public:
-  DwarfLinker(StringRef OutputFilename, bool Verbose)
-      : OutputFilename(OutputFilename), Verbose(Verbose), BinHolder(Verbose) {}
+  DwarfLinker(StringRef OutputFilename, const LinkOptions &Options)
+      : OutputFilename(OutputFilename), Options(Options),
+        BinHolder(Options.Verbose) {}
 
   /// \brief Link the contents of the DebugMap.
   bool link(const DebugMap &);
@@ -181,7 +182,7 @@ private:
 
 private:
   std::string OutputFilename;
-  bool Verbose;
+  LinkOptions Options;
   BinaryHolder BinHolder;
 
   /// The units of the current debug map object.
@@ -229,7 +230,7 @@ void DwarfLinker::reportWarning(const Tw
     Context = CurrentDebugObject->getObjectFilename();
   warn(Warning, Context);
 
-  if (!Verbose || !DIE)
+  if (!Options.Verbose || !DIE)
     return;
 
   errs() << "    in DIE:\n";
@@ -383,7 +384,7 @@ bool DwarfLinker::hasValidRelocation(uin
     return false;
 
   const auto &ValidReloc = ValidRelocs[NextValidReloc++];
-  if (Verbose)
+  if (Options.Verbose)
     outs() << "Found valid debug map entry: " << ValidReloc.Mapping->getKey()
            << " " << format("\t%016" PRIx64 " => %016" PRIx64,
                             ValidReloc.Mapping->getValue().ObjectAddress,
@@ -447,7 +448,7 @@ unsigned DwarfLinker::shouldKeepVariable
       (Flags & TF_InFunctionScope))
     return Flags;
 
-  if (Verbose)
+  if (Options.Verbose)
     DIE.dump(outs(), const_cast<DWARFUnit *>(&OrigUnit), 0, 8 /* Indent */);
 
   return Flags | TF_Keep;
@@ -479,7 +480,7 @@ unsigned DwarfLinker::shouldKeepSubprogr
       !hasValidRelocation(LowPcOffset, LowPcEndOffset, MyInfo))
     return Flags;
 
-  if (Verbose)
+  if (Options.Verbose)
     DIE.dump(outs(), const_cast<DWARFUnit *>(&OrigUnit), 0, 8 /* Indent */);
 
   return Flags | TF_Keep;
@@ -616,7 +617,7 @@ bool DwarfLinker::link(const DebugMap &M
   for (const auto &Obj : Map.objects()) {
     CurrentDebugObject = Obj.get();
 
-    if (Verbose)
+    if (Options.Verbose)
       outs() << "DEBUG MAP OBJECT: " << Obj->getObjectFilename() << "\n";
     auto ErrOrObj = BinHolder.GetObjectFile(Obj->getObjectFilename());
     if (std::error_code EC = ErrOrObj.getError()) {
@@ -626,7 +627,7 @@ bool DwarfLinker::link(const DebugMap &M
 
     // Look for relocations that correspond to debug map entries.
     if (!findValidRelocsInDebugInfo(*ErrOrObj, *Obj)) {
-      if (Verbose)
+      if (Options.Verbose)
         outs() << "No valid relocations found. Skipping.\n";
       continue;
     }
@@ -639,7 +640,7 @@ bool DwarfLinker::link(const DebugMap &M
     // parent links that we will use during the next phase.
     for (const auto &CU : DwarfContext.compile_units()) {
       auto *CUDie = CU->getCompileUnitDIE(false);
-      if (Verbose) {
+      if (Options.Verbose) {
         outs() << "Input compilation unit:";
         CUDie->dump(outs(), CU.get(), 0);
       }
@@ -664,8 +665,9 @@ bool DwarfLinker::link(const DebugMap &M
 }
 }
 
-bool linkDwarf(StringRef OutputFilename, const DebugMap &DM, bool Verbose) {
-  DwarfLinker Linker(OutputFilename, Verbose);
+bool linkDwarf(StringRef OutputFilename, const DebugMap &DM,
+               const LinkOptions &Options) {
+  DwarfLinker Linker(OutputFilename, Options);
   return Linker.link(DM);
 }
 }

Modified: llvm/trunk/tools/dsymutil/dsymutil.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.cpp?rev=230823&r1=230822&r2=230823&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/dsymutil.cpp (original)
+++ llvm/trunk/tools/dsymutil/dsymutil.cpp Fri Feb 27 18:29:07 2015
@@ -51,10 +51,13 @@ int main(int argc, char **argv) {
   llvm::sys::PrintStackTraceOnErrorSignal();
   llvm::PrettyStackTraceProgram StackPrinter(argc, argv);
   llvm::llvm_shutdown_obj Shutdown;
+  LinkOptions Options;
 
   llvm::cl::ParseCommandLineOptions(argc, argv, "llvm dsymutil\n");
   auto DebugMapPtrOrErr = parseDebugMap(InputFile, OsoPrependPath, Verbose);
 
+  Options.Verbose = Verbose;
+
   if (auto EC = DebugMapPtrOrErr.getError()) {
     llvm::errs() << "error: cannot parse the debug map for \"" << InputFile
                  << "\": " << EC.message() << '\n';
@@ -77,5 +80,5 @@ int main(int argc, char **argv) {
     OutputFile = OutputFileOpt;
   }
 
-  return !linkDwarf(OutputFile, **DebugMapPtrOrErr, Verbose);
+  return !linkDwarf(OutputFile, **DebugMapPtrOrErr, Options);
 }

Modified: llvm/trunk/tools/dsymutil/dsymutil.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/dsymutil/dsymutil.h?rev=230823&r1=230822&r2=230823&view=diff
==============================================================================
--- llvm/trunk/tools/dsymutil/dsymutil.h (original)
+++ llvm/trunk/tools/dsymutil/dsymutil.h Fri Feb 27 18:29:07 2015
@@ -23,6 +23,13 @@
 
 namespace llvm {
 namespace dsymutil {
+
+struct LinkOptions {
+  bool Verbose;
+
+  LinkOptions() : Verbose(false) {}
+};
+
 /// \brief Extract the DebugMap from the given file.
 /// The file has to be a MachO object file.
 llvm::ErrorOr<std::unique_ptr<DebugMap>>
@@ -33,7 +40,7 @@ parseDebugMap(StringRef InputFile, Strin
 /// \p DM into a DwarfFile named \p OutputFilename.
 /// \returns false if the link failed.
 bool linkDwarf(StringRef OutputFilename, const DebugMap &DM,
-               bool Verbose = false);
+               const LinkOptions &Options);
 }
 }
 #endif // LLVM_TOOLS_DSYMUTIL_DSYMUTIL_H





More information about the llvm-commits mailing list