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 | e8bbcfc298d8e515a3fed6ad863bb3d7b113d415 (patch) | |
tree | 2047b3e4eb7f50838109ddd093d36bbab927f274 /llvm/lib/ExecutionEngine/JIT/Intercept.cpp | |
parent | 0cf2da2b03b1784f8aed674fbd399d79740a9738 (diff) | |
download | bcm5719-llvm-e8bbcfc298d8e515a3fed6ad863bb3d7b113d415.tar.gz bcm5719-llvm-e8bbcfc298d8e515a3fed6ad863bb3d7b113d415.zip |
Change to use GetAddressOfSymbol instead of dlsym.
llvm-svn: 9012
Diffstat (limited to 'llvm/lib/ExecutionEngine/JIT/Intercept.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/JIT/Intercept.cpp | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/llvm/lib/ExecutionEngine/JIT/Intercept.cpp b/llvm/lib/ExecutionEngine/JIT/Intercept.cpp index 09cbe28740a..6df6088a3a8 100644 --- a/llvm/lib/ExecutionEngine/JIT/Intercept.cpp +++ b/llvm/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"; |