diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp
index 812bec1..e4ff7d4 100644
--- a/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -19,13 +19,13 @@
 #include "llvm/DerivedTypes.h"
 #include "llvm/Module.h"
 #include "llvm/ModuleProvider.h"
+#include "llvm/ADT/Statistic.h"
 #include "llvm/CodeGen/IntrinsicLowering.h"
 #include "llvm/ExecutionEngine/ExecutionEngine.h"
 #include "llvm/ExecutionEngine/GenericValue.h"
-#include "llvm/Target/TargetData.h"
 #include "llvm/Support/Debug.h"
-#include "llvm/ADT/Statistic.h"
-#include "llvm/Support/DynamicLinker.h"
+#include "llvm/System/DynamicLibrary.h"
+#include "llvm/Target/TargetData.h"
 using namespace llvm;
 
 namespace {
@@ -151,7 +151,13 @@
     }
   }
 
-  if (EE == 0) delete IL;
+  if (EE == 0) 
+    delete IL;
+  else
+    // Make sure we can resolve symbols in the program as well. The zero arg 
+    // to the function tells DynamicLibrary to load the program, not a library.
+    sys::DynamicLibrary::LoadLibraryPermanently(0);
+
   return EE;
 }
 
@@ -502,7 +508,8 @@
     } else {
       // External variable reference. Try to use the dynamic loader to
       // get a pointer to it.
-      if (void *SymAddr = GetAddressOfSymbol(I->getName().c_str()))
+      if (void *SymAddr = sys::DynamicLibrary::SearchForAddressOfSymbol(
+                            I->getName().c_str()))
         addGlobalMapping(I, SymAddr);
       else {
         std::cerr << "Could not resolve external global address: "
diff --git a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
index 2f3469c..9197554 100644
--- a/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
+++ b/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
@@ -22,8 +22,8 @@
 #include "Interpreter.h"
 #include "llvm/DerivedTypes.h"
 #include "llvm/Module.h"
+#include "llvm/System/DynamicLibrary.h"
 #include "llvm/Target/TargetData.h"
-#include "llvm/Support/DynamicLinker.h"
 #include <cmath>
 #include <csignal>
 #include <map>
@@ -71,11 +71,12 @@
 
   ExFunc FnPtr = FuncNames[ExtName];
   if (FnPtr == 0)
-    FnPtr = (ExFunc)GetAddressOfSymbol(ExtName);
+    FnPtr = (ExFunc)sys::DynamicLibrary::SearchForAddressOfSymbol(ExtName);
   if (FnPtr == 0)
     FnPtr = FuncNames["lle_X_"+F->getName()];
   if (FnPtr == 0)  // Try calling a generic function... if it exists...
-    FnPtr = (ExFunc)GetAddressOfSymbol(("lle_X_"+F->getName()).c_str());
+    FnPtr = (ExFunc)sys::DynamicLibrary::SearchForAddressOfSymbol(
+            ("lle_X_"+F->getName()).c_str());
   if (FnPtr != 0)
     Functions.insert(std::make_pair(F, FnPtr));  // Cache for later
   return FnPtr;
diff --git a/lib/ExecutionEngine/JIT/Intercept.cpp b/lib/ExecutionEngine/JIT/Intercept.cpp
index 2eafb75..93d349f 100644
--- a/lib/ExecutionEngine/JIT/Intercept.cpp
+++ b/lib/ExecutionEngine/JIT/Intercept.cpp
@@ -16,7 +16,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "JIT.h"
-#include "llvm/Support/DynamicLinker.h"
+#include "llvm/System/DynamicLibrary.h"
 #include <iostream>
 #include <sys/stat.h>
 using namespace llvm;
@@ -96,7 +96,7 @@
   if (Name == "__main") return (void*)&__mainFunc;
 
   // If it's an external function, look it up in the process image...
-  void *Ptr = GetAddressOfSymbol(Name);
+  void *Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(Name);
   if (Ptr) return Ptr;
 
   std::cerr << "ERROR: Program used external function '" << Name
diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp
index 56625d6..537ca56 100644
--- a/lib/ExecutionEngine/JIT/JIT.cpp
+++ b/lib/ExecutionEngine/JIT/JIT.cpp
@@ -22,9 +22,9 @@
 #include "llvm/CodeGen/MachineCodeEmitter.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/ExecutionEngine/GenericValue.h"
+#include "llvm/System/DynamicLibrary.h"
 #include "llvm/Target/TargetMachine.h"
 #include "llvm/Target/TargetJITInfo.h"
-#include "llvm/Support/DynamicLinker.h"
 #include <iostream>
 
 using namespace llvm;
@@ -287,7 +287,7 @@
 
   // If the global is external, just remember the address.
   if (GV->isExternal()) {
-    Ptr = GetAddressOfSymbol(GV->getName().c_str());
+    Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(GV->getName().c_str());
     if (Ptr == 0) {
       std::cerr << "Could not resolve external global address: "
                 << GV->getName() << "\n";
