From 72df0bd1a034f0e7f85b4d778f78ba2e542f5148 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Wed, 15 Jan 2025 11:48:58 +0100 Subject: Fixed dlsym with RTLD_NEXT and preloaded libs --- src/wrapped/wrappedlibdl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/wrapped') 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; -- cgit 1.4.1