[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