diff options
author | Dimitry Ivanov <dimitry@google.com> | 2017-02-03 14:07:34 -0800 |
---|---|---|
committer | Dimitry Ivanov <dimitry@google.com> | 2017-02-09 23:26:44 -0800 |
commit | 7a34b9d57a762ca7cd6b8d6b9f9fb45c2b991da7 (patch) | |
tree | 8dad357eee8d7672069abd75a63717d65b5f8ae6 /libdl | |
parent | 7d429d3c480166e1013bcdf68f4be479209aa509 (diff) | |
download | bionic-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.map | 3 | ||||
-rw-r--r-- | libdl/libdl.arm64.map | 3 | ||||
-rw-r--r-- | libdl/libdl.c | 22 | ||||
-rw-r--r-- | libdl/libdl.map.txt | 3 | ||||
-rw-r--r-- | libdl/libdl.mips.map | 3 | ||||
-rw-r--r-- | libdl/libdl.mips64.map | 3 | ||||
-rw-r--r-- | libdl/libdl.x86.map | 3 | ||||
-rw-r--r-- | libdl/libdl.x86_64.map | 3 |
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; |