linker: Support dlopen(NULL, ...) properly.
Change-Id: Icba37823cb350c34848cc466d144c3a0af87c94c
This commit is contained in:
parent
9d1f5afc34
commit
6774809b62
@ -70,6 +70,8 @@ Differences between current and Android 2.2:
|
||||
- <sys/vfs.h>: fixed implementation of fstatfs() (also fixes fpathconf()
|
||||
which uses it).
|
||||
|
||||
- <dlfcn.h>: fixed dlopen() implementation to support dlopen(NULL, ...).
|
||||
This allows one to look at the dynamic symbols exported by an executable.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
Differences between Android 2.2. and Android 2.1:
|
||||
|
@ -1200,7 +1200,17 @@ init_library(soinfo *si)
|
||||
soinfo *find_library(const char *name)
|
||||
{
|
||||
soinfo *si;
|
||||
const char *bname = strrchr(name, '/');
|
||||
const char *bname;
|
||||
|
||||
#if ALLOW_SYMBOLS_FROM_MAIN
|
||||
if (name == NULL)
|
||||
return somain;
|
||||
#else
|
||||
if (name == NULL)
|
||||
return NULL;
|
||||
#endif
|
||||
|
||||
bname = strrchr(name, '/');
|
||||
bname = bname ? bname + 1 : name;
|
||||
|
||||
for(si = solist; si != 0; si = si->next){
|
||||
@ -2193,6 +2203,7 @@ unsigned __linker_init(unsigned **elfdata)
|
||||
si->dynamic = (unsigned *)-1;
|
||||
si->wrprotect_start = 0xffffffff;
|
||||
si->wrprotect_end = 0;
|
||||
si->refcount = 1;
|
||||
|
||||
/* Use LD_LIBRARY_PATH if we aren't setuid/setgid */
|
||||
if (ldpath_env && getuid() == geteuid() && getgid() == getegid())
|
||||
|
Loading…
x
Reference in New Issue
Block a user