Use System/DynamicLibrary instead of Support/DynamicLinker
authorReid Spencer <rspencer@reidspencer.com>
Mon, 29 Nov 2004 14:11:29 +0000 (14:11 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Mon, 29 Nov 2004 14:11:29 +0000 (14:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18357 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/ExecutionEngine.cpp
lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp
lib/ExecutionEngine/JIT/Intercept.cpp
lib/ExecutionEngine/JIT/JIT.cpp

index 812bec184d9b8d4d95f30c3eaa4555b043a699af..e4ff7d4c4b9333769e40a4037c177d0d5515c719 100644 (file)
 #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 @@ ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP,
     }
   }
 
-  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 @@ void ExecutionEngine::emitGlobals() {
     } 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: "
index 2f3469ca854d20b2157aea4e0bf802efc6869138..91975547e5f0cba5b94302eaf2f6f2018d30970b 100644 (file)
@@ -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 @@ static ExFunc lookupFunction(const Function *F) {
 
   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;
index 2eafb75cd0e8896f792d9fbdeda2d1c473e1e3f3..93d349ffa5d8e72245d9c25dba85afb07e7b8b09 100644 (file)
@@ -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 @@ void *JIT::getPointerToNamedFunction(const std::string &Name) {
   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
index 56625d691d898e81da515b7c8d82b335c9b33181..537ca56e024839b4e3930fb344ad5eff6cd262a8 100644 (file)
@@ -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 @@ void *JIT::getOrEmitGlobalVariable(const GlobalVariable *GV) {
 
   // 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";