linker: don't pass dlextinfo to dependent loads.
Don't pass the parent load's dlextinfo to dependent loads, since this causes the linker to try to load the dependencies using the same addresses/relro/fds/etc as the main library, which is never going to work. This was how it worked before ae69a95 which broke this. Bug: 23742664 Change-Id: I53d8cdf0982d8758e6d2ced4864c704cdf74118f
This commit is contained in:
parent
4f3e3591ac
commit
a828a2f8e6
@ -1468,13 +1468,14 @@ static bool find_libraries(soinfo* start_with, const char* const library_names[]
|
|||||||
// Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
|
// Step 1: load and pre-link all DT_NEEDED libraries in breadth first order.
|
||||||
for (LoadTask::unique_ptr task(load_tasks.pop_front());
|
for (LoadTask::unique_ptr task(load_tasks.pop_front());
|
||||||
task.get() != nullptr; task.reset(load_tasks.pop_front())) {
|
task.get() != nullptr; task.reset(load_tasks.pop_front())) {
|
||||||
soinfo* si = find_library_internal(load_tasks, task->get_name(), rtld_flags, extinfo);
|
soinfo* needed_by = task->get_needed_by();
|
||||||
|
|
||||||
|
soinfo* si = find_library_internal(load_tasks, task->get_name(),
|
||||||
|
rtld_flags, needed_by == nullptr ? extinfo : nullptr);
|
||||||
if (si == nullptr) {
|
if (si == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
soinfo* needed_by = task->get_needed_by();
|
|
||||||
|
|
||||||
if (needed_by != nullptr) {
|
if (needed_by != nullptr) {
|
||||||
needed_by->add_child(si);
|
needed_by->add_child(si);
|
||||||
}
|
}
|
||||||
|
@ -67,6 +67,8 @@ libdlext_test_src_files := \
|
|||||||
libdlext_test_ldflags := \
|
libdlext_test_ldflags := \
|
||||||
-Wl,-z,relro \
|
-Wl,-z,relro \
|
||||||
|
|
||||||
|
libdlext_test_shared_libraries := libtest_simple
|
||||||
|
|
||||||
module := libdlext_test
|
module := libdlext_test
|
||||||
module_tag := optional
|
module_tag := optional
|
||||||
include $(LOCAL_PATH)/Android.build.testlib.mk
|
include $(LOCAL_PATH)/Android.build.testlib.mk
|
||||||
|
Loading…
x
Reference in New Issue
Block a user