mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 22:26:14 +00:00
Limit the symbol search in DynamicLibrary to the module that was opened.
Differential Revision: http://reviews.llvm.org/D5030 Reviewed By: Reid Kleckner, Rafael Espindola git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216563 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e487f8dc7
commit
70d2d3cd45
@ -56,8 +56,15 @@ static DenseSet<void *> *OpenedHandles = nullptr;
|
||||
DynamicLibrary DynamicLibrary::getPermanentLibrary(const char *filename,
|
||||
std::string *errMsg) {
|
||||
SmartScopedLock<true> lock(*SymbolsMutex);
|
||||
|
||||
void *handle = dlopen(filename, RTLD_LAZY|RTLD_GLOBAL);
|
||||
int flags = RTLD_LAZY | RTLD_GLOBAL;
|
||||
#if defined(__APPLE__)
|
||||
// RTLD_FIRST is an apple specific flag which causes dlsym() to search only
|
||||
// the module specified in |filename|, and not dependent modules. This
|
||||
// behavior would be desirable for other platforms as well, except that
|
||||
// there's not a good way to implement it.
|
||||
flags |= RTLD_FIRST;
|
||||
#endif
|
||||
void *handle = dlopen(filename, flags);
|
||||
if (!handle) {
|
||||
if (errMsg) *errMsg = dlerror();
|
||||
return DynamicLibrary();
|
||||
|
Loading…
Reference in New Issue
Block a user