mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 00:20:11 +00:00
* 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
This commit is contained in:
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user