summaryrefslogtreecommitdiffstats
path: root/lld/utils/linker-script-test
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2013-03-01 00:03:36 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2013-03-01 00:03:36 +0000
commita55e37f477f718dd5948c23d6d30389085f375e3 (patch)
treedae94e5ead801342c3cf5d506606a71a854a8039 /lld/utils/linker-script-test
parenta1b9b3f5996fa07b77ae64b7902060b04a573172 (diff)
downloadbcm5719-llvm-a55e37f477f718dd5948c23d6d30389085f375e3.tar.gz
bcm5719-llvm-a55e37f477f718dd5948c23d6d30389085f375e3.zip
Add basic linker script parsing.
llvm-svn: 176309
Diffstat (limited to 'lld/utils/linker-script-test')
-rw-r--r--lld/utils/linker-script-test/CMakeLists.txt8
-rw-r--r--lld/utils/linker-script-test/linker-script-test.cpp55
2 files changed, 63 insertions, 0 deletions
diff --git a/lld/utils/linker-script-test/CMakeLists.txt b/lld/utils/linker-script-test/CMakeLists.txt
new file mode 100644
index 00000000000..dd540a77f0e
--- /dev/null
+++ b/lld/utils/linker-script-test/CMakeLists.txt
@@ -0,0 +1,8 @@
+add_lld_executable(linker-script-test
+ linker-script-test.cpp
+ )
+
+target_link_libraries(linker-script-test
+ LLVMSupport
+ lldReaderWriter
+ )
diff --git a/lld/utils/linker-script-test/linker-script-test.cpp b/lld/utils/linker-script-test/linker-script-test.cpp
new file mode 100644
index 00000000000..4df0ff95bc4
--- /dev/null
+++ b/lld/utils/linker-script-test/linker-script-test.cpp
@@ -0,0 +1,55 @@
+//===- utils/linker-script-test/linker-script-test.cpp --------------------===//
+//
+// The LLVM Linker
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief Tool for testing linker script parsing.
+///
+//===----------------------------------------------------------------------===//
+
+#include "lld/ReaderWriter/LinkerScript.h"
+
+#include "llvm/Support/PrettyStackTrace.h"
+#include "llvm/Support/Signals.h"
+
+using namespace llvm;
+using namespace lld;
+using namespace script;
+
+int main(int argc, const char **argv) {
+ llvm::sys::PrintStackTraceOnErrorSignal();
+ llvm::PrettyStackTraceProgram X(argc, argv);
+
+ {
+ llvm::OwningPtr<MemoryBuffer> mb;
+ if (error_code ec = MemoryBuffer::getFileOrSTDIN(argv[1], mb)) {
+ llvm::errs() << ec.message() << "\n";
+ return 1;
+ }
+ Lexer l(std::unique_ptr<MemoryBuffer>(mb.take()));
+ Token tok;
+ while (true) {
+ l.lex(tok);
+ tok.dump(llvm::outs());
+ if (tok._kind == Token::eof || tok._kind == Token::unknown)
+ break;
+ }
+ }
+ {
+ llvm::OwningPtr<MemoryBuffer> mb;
+ if (error_code ec = MemoryBuffer::getFileOrSTDIN(argv[1], mb)) {
+ llvm::errs() << ec.message() << "\n";
+ return 1;
+ }
+ Lexer l(std::unique_ptr<MemoryBuffer>(mb.take()));
+ Parser p(l);
+ LinkerScript *ls = p.parse();
+ if (ls)
+ ls->dump(llvm::outs());
+ }
+}
OpenPOWER on IntegriCloud