aboutsummaryrefslogtreecommitdiff
path: root/libdl
diff options
context:
space:
mode:
authorDimitry Ivanov <dimitry@google.com>2017-02-03 14:07:34 -0800
committerDimitry Ivanov <dimitry@google.com>2017-02-09 23:26:44 -0800
commit7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7 (patch)
tree8dad357eee8d7672069abd75a63717d65b5f8ae6 /libdl
parent7d429d3c480166e1013bcdf68f4be479209aa509 (diff)
downloadbionic-7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7.tar.gz
Replace public library list with shared lib sonames (part 2/2)
This commit updates interface of libdl.c. 1. android_init_namespaces is replaces with android_init_anonymous_namespace 2. added 2 arguments to android_create_namespace to specify linked namespace and the list of shared libraries sonames. 3. symbol lookup does not get past boundary libraries (added check and test for it). Bug: http://b/26833548 Bug: http://b/21879602 Test: bionic-unit-tests --gtest_filter=dl*:Dl* Change-Id: I32921da487a02e5bd0d2fc528904d1228394bfb9
Diffstat (limited to 'libdl')
-rw-r--r--libdl/libdl.arm.map3
-rw-r--r--libdl/libdl.arm64.map3
-rw-r--r--libdl/libdl.c22
-rw-r--r--libdl/libdl.map.txt3
-rw-r--r--libdl/libdl.mips.map3
-rw-r--r--libdl/libdl.mips64.map3
-rw-r--r--libdl/libdl.x86.map3
-rw-r--r--libdl/libdl.x86_64.map3
8 files changed, 31 insertions, 12 deletions
diff --git a/libdl/libdl.arm.map b/libdl/libdl.arm.map
index f452641ee..c0dcd5d98 100644
--- a/libdl/libdl.arm.map
+++ b/libdl/libdl.arm.map
@@ -44,6 +44,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.arm64.map b/libdl/libdl.arm64.map
index 62f5ff45a..3b797f79e 100644
--- a/libdl/libdl.arm64.map
+++ b/libdl/libdl.arm64.map
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.c b/libdl/libdl.c
index 3fbd7e54b..6a95629db 100644
--- a/libdl/libdl.c
+++ b/libdl/libdl.c
@@ -72,8 +72,8 @@ __attribute__((__weak__, visibility("default")))
uint32_t __loader_android_get_application_target_sdk_version();
__attribute__((__weak__, visibility("default")))
-bool __loader_android_init_namespaces(const char* public_ns_sonames,
- const char* anon_ns_library_path);
+bool __loader_android_init_anonymous_namespace(const char* shared_libs_sonames,
+ const char* library_search_path);
__attribute__((__weak__, visibility("default")))
struct android_namespace_t* __loader_android_create_namespace(
@@ -86,6 +86,12 @@ struct android_namespace_t* __loader_android_create_namespace(
const void* caller_addr);
__attribute__((__weak__, visibility("default")))
+bool __loader_android_link_namespaces(
+ struct android_namespace_t* namespace_from,
+ struct android_namespace_t* namespace_to,
+ const char* shared_libs_sonames);
+
+__attribute__((__weak__, visibility("default")))
void __loader_android_dlwarning(void* obj, void (*f)(void*, const char*));
// Proxy calls to bionic loader
@@ -146,9 +152,9 @@ uint32_t android_get_application_target_sdk_version() {
return __loader_android_get_application_target_sdk_version();
}
-bool android_init_namespaces(const char* public_ns_sonames,
- const char* anon_ns_library_path) {
- return __loader_android_init_namespaces(public_ns_sonames, anon_ns_library_path);
+bool android_init_anonymous_namespace(const char* shared_libs_sonames,
+ const char* library_search_path) {
+ return __loader_android_init_anonymous_namespace(shared_libs_sonames, library_search_path);
}
struct android_namespace_t* android_create_namespace(const char* name,
@@ -167,6 +173,12 @@ struct android_namespace_t* android_create_namespace(const char* name,
caller_addr);
}
+bool android_link_namespaces(struct android_namespace_t* namespace_from,
+ struct android_namespace_t* namespace_to,
+ const char* shared_libs_sonames) {
+ return __loader_android_link_namespaces(namespace_from, namespace_to, shared_libs_sonames);
+}
+
void android_dlwarning(void* obj, void (*f)(void*, const char*)) {
__loader_android_dlwarning(obj, f);
}
diff --git a/libdl/libdl.map.txt b/libdl/libdl.map.txt
index cc044fe3f..245e016ee 100644
--- a/libdl/libdl.map.txt
+++ b/libdl/libdl.map.txt
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.mips.map b/libdl/libdl.mips.map
index 62f5ff45a..3b797f79e 100644
--- a/libdl/libdl.mips.map
+++ b/libdl/libdl.mips.map
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.mips64.map b/libdl/libdl.mips64.map
index 62f5ff45a..3b797f79e 100644
--- a/libdl/libdl.mips64.map
+++ b/libdl/libdl.mips64.map
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.x86.map b/libdl/libdl.x86.map
index 62f5ff45a..3b797f79e 100644
--- a/libdl/libdl.x86.map
+++ b/libdl/libdl.x86.map
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;
diff --git a/libdl/libdl.x86_64.map b/libdl/libdl.x86_64.map
index 62f5ff45a..3b797f79e 100644
--- a/libdl/libdl.x86_64.map
+++ b/libdl/libdl.x86_64.map
@@ -43,6 +43,7 @@ LIBC_PLATFORM {
android_set_application_target_sdk_version;
android_get_LD_LIBRARY_PATH;
android_update_LD_LIBRARY_PATH;
- android_init_namespaces;
+ android_init_anonymous_namespace;
android_create_namespace;
+ android_link_namespaces;
} LIBC_N;