Resolve __dso_handle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29259 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2006-07-21 23:06:20 +00:00
parent e6389935a9
commit 5f42c55030

View File

@ -30,6 +30,11 @@
#include <iostream>
using namespace llvm;
#ifdef __APPLE__
// __dso_handle is resolved by Mac OS X dynamic linker.
extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
#endif
static struct RegisterJIT {
RegisterJIT() { JIT::Register(); }
} JITRegistrator;
@ -289,6 +294,9 @@ void *JIT::getOrEmitGlobalVariable(const GlobalVariable *GV) {
// If the global is external, just remember the address.
if (GV->isExternal()) {
// __dso_handle is resolved by the Mac OS X dynamic linker.
if (GV->getName() == "__dso_handle")
return (void*)&__dso_handle;
Ptr = sys::DynamicLibrary::SearchForAddressOfSymbol(GV->getName().c_str());
if (Ptr == 0) {
std::cerr << "Could not resolve external global address: "