aboutsummaryrefslogtreecommitdiff
path: root/lib/ExecutionEngine/Interpreter/UserInput.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-10-27 04:15:57 +0000
committerChris Lattner <sabre@nondot.org>2001-10-27 04:15:57 +0000
commite43db88b2d12f2aebbe62aca8465a46c92292fce (patch)
tree5000957a2f8f861cbf457dd2b916ff6cb3103409 /lib/ExecutionEngine/Interpreter/UserInput.cpp
parent7dcd61209a1575e82ea23430cf9099a8b8086dbb (diff)
* Implement exit() builtin function
* Implement linked in runtime library with puts(char*) in it * implement builtin putchar(int) function git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@985 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/Interpreter/UserInput.cpp')
-rw-r--r--lib/ExecutionEngine/Interpreter/UserInput.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/lib/ExecutionEngine/Interpreter/UserInput.cpp b/lib/ExecutionEngine/Interpreter/UserInput.cpp
index f579ef1a9b..2989ae95e8 100644
--- a/lib/ExecutionEngine/Interpreter/UserInput.cpp
+++ b/lib/ExecutionEngine/Interpreter/UserInput.cpp
@@ -8,6 +8,7 @@
#include "llvm/Bytecode/Reader.h"
#include "llvm/Assembly/Writer.h"
#include "llvm/DerivedTypes.h"
+#include "llvm/Transforms/Linker.h"
#include <algorithm>
enum CommandID {
@@ -129,15 +130,25 @@ void Interpreter::handleUserInput() {
// loadModule - Load a new module to execute...
//
void Interpreter::loadModule(const string &Filename) {
+ string ErrorMsg;
if (CurMod && !flushModule()) return; // Kill current execution
- CurMod = ParseBytecodeFile(Filename);
+ CurMod = ParseBytecodeFile(Filename, &ErrorMsg);
if (CurMod == 0) {
- cout << "Error parsing '" << Filename << "': No module loaded.\n";
+ cout << "Error parsing '" << Filename << "': No module loaded: "
+ << ErrorMsg << "\n";
return;
}
- // TODO: link in support library...
+ string RuntimeLib = getCurrentExecutablePath() + "/RuntimeLib.bc";
+ if (Module *SupportLib = ParseBytecodeFile(RuntimeLib, &ErrorMsg)) {
+ if (LinkModules(CurMod, SupportLib, &ErrorMsg))
+ cerr << "Error Linking runtime library into current module: "
+ << ErrorMsg << endl;
+ } else {
+ cerr << "Error loading runtime library '"+RuntimeLib+"': "
+ << ErrorMsg << "\n";
+ }
}