diff --git a/llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
index bcd584a..973cca6 100644
--- a/llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
+++ b/llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
@@ -18,6 +18,24 @@
 typedef GenericValue (*ExFunc)(MethodType *, const vector<GenericValue> &);
 static map<const Method *, ExFunc> Functions;
 
+static Interpreter *TheInterpreter;
+
+// getCurrentExecutablePath() - Return the directory that the lli executable
+// lives in.
+//
+string Interpreter::getCurrentExecutablePath() const {
+  Dl_info Info;
+  if (dladdr(&TheInterpreter, &Info) == 0) return "";
+  
+  string LinkAddr(Info.dli_fname);
+  unsigned SlashPos = LinkAddr.rfind('/');
+  if (SlashPos != string::npos)
+    LinkAddr.resize(SlashPos);    // Trim the executable name off...
+
+  return LinkAddr;
+}
+
+
 static char getTypeID(const Type *Ty) {
   switch (Ty->getPrimitiveID()) {
   case Type::VoidTyID:    return 'V';
@@ -61,6 +79,8 @@
 
 void Interpreter::callExternalMethod(Method *M,
 				     const vector<GenericValue> &ArgVals) {
+  TheInterpreter = this;
+
   // Do a lookup to see if the method is in our cache... this should just be a
   // defered annotation!
   map<const Method *, ExFunc>::iterator FI = Functions.find(M);
@@ -127,10 +147,16 @@
   return GenericValue();
 }
 
+// int "putchar"(int)
+GenericValue lle_ii_putchar(MethodType *M, const vector<GenericValue> &Args) {
+  cout << ((char)Args[0].IntVal) << flush;
+  return Args[0];
+}
+
 // void "putchar"(ubyte)
 GenericValue lle_VB_putchar(MethodType *M, const vector<GenericValue> &Args) {
-  cout << Args[0].UByteVal;
-  return GenericValue();
+  cout << Args[0].SByteVal << flush;
+  return Args[0];
 }
 
 // void "__main"()
@@ -138,4 +164,10 @@
   return GenericValue();
 }
 
+// void "exit"(int)
+GenericValue lle_Vi_exit(MethodType *M, const vector<GenericValue> &Args) {
+  TheInterpreter->exitCalled(Args[0]);
+  return GenericValue();
+}
+
 } // End extern "C"
