diff options
Diffstat (limited to 'src/wrapped')
| -rw-r--r-- | src/wrapped/wrappedlibdl.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/wrapped/wrappedlibdl.c b/src/wrapped/wrappedlibdl.c index 81ee1ff6..2687b7ad 100644 --- a/src/wrapped/wrappedlibdl.c +++ b/src/wrapped/wrappedlibdl.c @@ -370,7 +370,7 @@ void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) return NULL; } if(handle==(void*)~0LL) { - // special case, look globably but no self (RTLD_NEXT) + // special case, look globably after self in the lm chain (RTLD_NEXT) uintptr_t ret_addr = 0; #ifdef BOX32 if(box64_is32bits) @@ -379,7 +379,7 @@ void* my_dlsym(x64emu_t* emu, void *handle, void *symbol) #endif ret_addr = *(uintptr_t*)R_RSP; elfheader_t *elf = FindElfAddress(my_context, ret_addr); // use return address to guess "self" - if(GetNoSelfSymbolStartEnd(my_context->maplib, rsymbol, &start, &end, elf, 0, -1, NULL, 0, NULL)) { + if(GetNextSymbolStartEnd(my_context->maplib, rsymbol, &start, &end, elf, 0, -1, NULL, 0, NULL)) { printf_dlsym(LOG_NEVER, "%p\n", (void*)start); pthread_mutex_unlock(&mutex); return (void*)start; |