return p - list;
}
-static void *do_dlopen(const char *libname, int flag)
+static void *do_dlopen(const char *libname, int flag, ElfW(Addr) from)
{
struct elf_resolve *tpnt, *tfrom;
struct dyn_elf *dyn_chain, *rpnt = NULL, *dyn_ptr, *relro_ptr, *handle;
- ElfW(Addr) from;
struct elf_resolve *tpnt1;
void (*dl_brk) (void);
int now_flag;
return NULL;
}
- from = (ElfW(Addr)) __builtin_return_address(0);
-
if (!_dl_init) {
_dl_init = true;
_dl_malloc_function = malloc;
void *ret;
__UCLIBC_MUTEX_CONDITIONAL_LOCK(_dl_mutex, 1);
- ret = do_dlopen(libname, flag);
+ ret = do_dlopen(libname, flag,
+ (ElfW(Addr)) __builtin_return_address(0));
__UCLIBC_MUTEX_CONDITIONAL_UNLOCK(_dl_mutex, 1);
return ret;