summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/libdl/libdl.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c
index 233722382..4630a5942 100644
--- a/ldso/libdl/libdl.c
+++ b/ldso/libdl/libdl.c
@@ -296,11 +296,10 @@ static ptrdiff_t _dl_build_local_scope (struct elf_resolve **list,
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;
@@ -320,8 +319,6 @@ static void *do_dlopen(const char *libname, int flag)
return NULL;
}
- from = (ElfW(Addr)) __builtin_return_address(0);
-
if (!_dl_init) {
_dl_init = true;
_dl_malloc_function = malloc;
@@ -661,7 +658,8 @@ void *dlopen(const char *libname, int flag)
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;