[llvm-commits] [lld] r160736 - /lld/trunk/tools/lld-core/lld-core.cpp

Sid Manning sidneym at codeaurora.org
Wed Jul 25 10:13:14 PDT 2012


Author: sidneym
Date: Wed Jul 25 12:13:13 2012
New Revision: 160736

URL: http://llvm.org/viewvc/llvm-project?rev=160736&view=rev
Log:

Add a new option, -reader which will select formats other than YAML for
reading.  YAML is still the default.

Modified:
    lld/trunk/tools/lld-core/lld-core.cpp

Modified: lld/trunk/tools/lld-core/lld-core.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/tools/lld-core/lld-core.cpp?rev=160736&r1=160735&r2=160736&view=diff
==============================================================================
--- lld/trunk/tools/lld-core/lld-core.cpp (original)
+++ lld/trunk/tools/lld-core/lld-core.cpp Wed Jul 25 12:13:13 2012
@@ -14,6 +14,9 @@
 #include "lld/ReaderWriter/Reader.h"
 #include "lld/ReaderWriter/ReaderNative.h"
 #include "lld/ReaderWriter/ReaderYAML.h"
+#include "lld/ReaderWriter/ReaderELF.h"
+#include "lld/ReaderWriter/ReaderPECOFF.h"
+#include "lld/ReaderWriter/ReaderMachO.h"
 #include "lld/ReaderWriter/Writer.h"
 #include "lld/ReaderWriter/WriterELF.h"
 #include "lld/ReaderWriter/WriterMachO.h"
@@ -97,6 +100,19 @@
     clEnumValN(writePECOFF, "PECOFF", "link as windows would"),
     clEnumValN(writeELF,    "ELF",    "link as linux would"),
     clEnumValEnd));
+
+enum ReaderChoice {
+  readerYAML, readerMachO, readerPECOFF, readerELF
+};
+llvm::cl::opt<ReaderChoice> 
+readerSelected("reader",
+  llvm::cl::desc("Select reader"),
+  llvm::cl::values(
+    clEnumValN(readerYAML,   "YAML",   "read assuming YAML format"),
+    clEnumValN(readerMachO,  "mach-o", "read as darwin would"),
+    clEnumValN(readerPECOFF, "PECOFF", "read as windows would"),
+    clEnumValN(readerELF,    "ELF",    "read as linux would"),
+    clEnumValEnd));
     
 
 
@@ -156,15 +172,36 @@
   InputFiles inputFiles;
 
   // read input files into in-memory File objects
+
   TestingReaderOptionsYAML  readerOptionsYAML;
-  Reader *reader = createReaderYAML(readerOptionsYAML);
+  Reader *reader = nullptr;
+  switch ( readerSelected ) {
+    case readerYAML:
+      reader = createReaderYAML(readerOptionsYAML);
+      break;
+#if 0 
+    case readerMachO:
+      reader = createReaderMachO(lld::readerOptionsMachO);
+      break;
+#endif
+    case readerPECOFF:
+      reader = createReaderPECOFF(lld::ReaderOptionsPECOFF());
+      break;
+    case readerELF:
+      reader = createReaderELF(lld::ReaderOptionsELF());
+      break;
+    default:
+      reader = createReaderYAML(readerOptionsYAML);
+      break;
+  }
+
   for (auto path : cmdLineInputFilePaths) {
     std::vector<std::unique_ptr<File>> files;
     if ( error(reader->readFile(path, files)) )
       return 1;
     inputFiles.appendFiles(files);
   }
-    
+
   // given writer a chance to add files
   writer->addFiles(inputFiles);
 





More information about the llvm-commits mailing list