summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/Linker/Linker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/lib/Linker/Linker.cpp')
-rw-r--r--contrib/llvm/lib/Linker/Linker.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/contrib/llvm/lib/Linker/Linker.cpp b/contrib/llvm/lib/Linker/Linker.cpp
new file mode 100644
index 0000000..74d24f2
--- /dev/null
+++ b/contrib/llvm/lib/Linker/Linker.cpp
@@ -0,0 +1,70 @@
+//===- lib/Linker/Linker.cpp - Basic Linker functionality ----------------===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file contains basic Linker functionality that all usages will need.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Linker.h"
+#include "llvm/Bitcode/ReaderWriter.h"
+#include "llvm/IR/Module.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/raw_ostream.h"
+#include "llvm/Support/system_error.h"
+using namespace llvm;
+
+Linker::Linker(StringRef progname, StringRef modname,
+ LLVMContext& C, unsigned flags):
+ Context(C),
+ Composite(new Module(modname, C)),
+ Flags(flags),
+ Error(),
+ ProgramName(progname) { }
+
+Linker::Linker(StringRef progname, Module* aModule, unsigned flags) :
+ Context(aModule->getContext()),
+ Composite(aModule),
+ Flags(flags),
+ Error(),
+ ProgramName(progname) { }
+
+Linker::~Linker() {
+ delete Composite;
+}
+
+bool
+Linker::error(StringRef message) {
+ Error = message;
+ if (!(Flags&QuietErrors))
+ errs() << ProgramName << ": error: " << message << "\n";
+ return true;
+}
+
+bool
+Linker::warning(StringRef message) {
+ Error = message;
+ if (!(Flags&QuietWarnings))
+ errs() << ProgramName << ": warning: " << message << "\n";
+ return false;
+}
+
+void
+Linker::verbose(StringRef message) {
+ if (Flags&Verbose)
+ errs() << " " << message << "\n";
+}
+
+Module*
+Linker::releaseModule() {
+ Module* result = Composite;
+ Error.clear();
+ Composite = 0;
+ Flags = 0;
+ return result;
+}
OpenPOWER on IntegriCloud