diff options
author | Brian Gaeke <gaeke@uiuc.edu> | 2003-10-10 17:02:42 +0000 |
---|---|---|
committer | Brian Gaeke <gaeke@uiuc.edu> | 2003-10-10 17:02:42 +0000 |
commit | 322cdb2e63ef29d2c00c9aa3118482eda5fdf637 (patch) | |
tree | 65686110c2c66a0d8891694287ee87e29024f0e9 /lib/ExecutionEngine/JIT/Intercept.cpp | |
parent | 56d86168720849e94cb39809a29e7c391300460d (diff) |
Change to use GetAddressOfSymbol instead of dlsym.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9012 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/JIT/Intercept.cpp')
-rw-r--r-- | lib/ExecutionEngine/JIT/Intercept.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/lib/ExecutionEngine/JIT/Intercept.cpp b/lib/ExecutionEngine/JIT/Intercept.cpp index 09cbe28740..6df6088a3a 100644 --- a/lib/ExecutionEngine/JIT/Intercept.cpp +++ b/lib/ExecutionEngine/JIT/Intercept.cpp @@ -1,7 +1,7 @@ //===-- Intercept.cpp - System function interception routines -------------===// // // If a function call occurs to an external function, the JIT is designed to use -// dlsym on the current process to find a function to call. This is useful for +// the dynamic loader interface to find a function to call. This is useful for // calling system calls and library functions that are not available in LLVM. // Some system calls, however, need to be handled specially. For this reason, // we intercept some of them here and use our own stubs to handle them. @@ -9,7 +9,7 @@ //===----------------------------------------------------------------------===// #include "VM.h" -#include "Config/dlfcn.h" // dlsym access +#include "Support/DynamicLinker.h" #include <iostream> // AtExitHandlers - List of functions to call when the program exits, @@ -50,8 +50,8 @@ static int jit_atexit(void (*Fn)(void)) { //===----------------------------------------------------------------------===// // /// getPointerToNamedFunction - This method returns the address of the specified -/// function by using the dlsym function call. As such it is only useful for -/// resolving library symbols, not code generated symbols. +/// function by using the dynamic loader interface. As such it is only useful +/// for resolving library symbols, not code generated symbols. /// void *VM::getPointerToNamedFunction(const std::string &Name) { // Check to see if this is one of the functions we want to intercept... @@ -59,12 +59,7 @@ void *VM::getPointerToNamedFunction(const std::string &Name) { if (Name == "atexit") return (void*)&jit_atexit; // If it's an external function, look it up in the process image... - // On Sparc, RTLD_SELF is already defined and it's not zero - // Linux/x86 wants to use a 0, other systems may differ -#ifndef RTLD_SELF -#define RTLD_SELF 0 -#endif - void *Ptr = dlsym(RTLD_SELF, Name.c_str()); + void *Ptr = GetAddressOfSymbol(Name); if (Ptr == 0) { std::cerr << "WARNING: Cannot resolve fn '" << Name << "' using a dummy noop function instead!\n"; |