Look into ld_preloads before current library
Change lookup order during relocation so that ld_preloads always precede caller (unless caller is main executable). Asan needs this change in order to intercept libc->libc calls. Bug: 15432753 Change-Id: If69aa16efe59aa35bb30e96feb83d08f1efbec86
This commit is contained in:
parent
67f1f3b171
commit
05e190c093
@ -495,6 +495,15 @@ static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi, s
|
||||
*lsi = si;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Next, look for it in the preloads list */
|
||||
for (int i = 0; g_ld_preloads[i] != NULL; i++) {
|
||||
s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
|
||||
if (s != NULL) {
|
||||
*lsi = g_ld_preloads[i];
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/* Order of symbol lookup is controlled by DT_SYMBOLIC flag */
|
||||
|
||||
@ -512,6 +521,15 @@ static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi, s
|
||||
*lsi = somain;
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Next, look for it in the preloads list */
|
||||
for (int i = 0; g_ld_preloads[i] != NULL; i++) {
|
||||
s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
|
||||
if (s != NULL) {
|
||||
*lsi = g_ld_preloads[i];
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Look for symbols in the local scope (the object who is
|
||||
@ -543,16 +561,16 @@ static ElfW(Sym)* soinfo_do_lookup(soinfo* si, const char* name, soinfo** lsi, s
|
||||
*lsi = somain;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Next, look for it in the preloads list */
|
||||
for (int i = 0; g_ld_preloads[i] != NULL; i++) {
|
||||
s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
|
||||
if (s != NULL) {
|
||||
*lsi = g_ld_preloads[i];
|
||||
goto done;
|
||||
/* Next, look for it in the preloads list */
|
||||
for (int i = 0; g_ld_preloads[i] != NULL; i++) {
|
||||
s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
|
||||
if (s != NULL) {
|
||||
*lsi = g_ld_preloads[i];
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user