9ee4591cb4
This commit allows users to create a link without soname filters between two linker namespaces. The motivation is to establish one-way shared library isolation. For example, assume that there are two linker namespaces `default` and `vndk`. We would like to limit the shared libraries that can be used by the `default` namespace. In the meanwhile, we would like to allow the `vndk` namespace to use shared libs from the `default` namespace if the soname cannot be find in the search path or loaded sonames of the `vndk` namespace. shared_libs = %VNDK_CORE_LIBRARIES% shared_libs += %VNDK_SAMEPROCESS_LIBRARIES% vndk <-------------------------------------------- default \_______________________________________________/^ allow_all_shared_libs = true android_link_namespaces_all_libs() is added to libdl, but it is versioned as LIBC_PRIVATE. android_link_namespaces_all_libs() is only for unit tests. Bug: 69824336 Test: adb shell /data/nativetest/linker-unit-tests/linker-unit-tests32 Test: adb shell /data/nativetest64/linker-unit-tests/linker-unit-tests64 Test: adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests Test: adb shell /data/nativetest64/bionic-unit-tests/bionic-unit-tests Test: Update /system/etc/ld.config*.txt and check whether the vndk linker namespace of the vendor process can access the shared libs from the default linker namespace. Change-Id: I2879f0c5f5af60c7e56f8f743ebd2872e552286b
61 lines
1.5 KiB
Text
61 lines
1.5 KiB
Text
# Generated by genversion-scripts.py. Do not edit.
|
|
#
|
|
# Copyright (C) 2015 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
LIBC {
|
|
global:
|
|
android_dlopen_ext; # introduced=21
|
|
dl_iterate_phdr; # introduced-arm=21
|
|
dl_unwind_find_exidx; # arm
|
|
dladdr;
|
|
dlclose;
|
|
dlerror;
|
|
dlopen;
|
|
dlsym;
|
|
local:
|
|
*;
|
|
};
|
|
|
|
LIBC_N {
|
|
global:
|
|
dlvsym; # introduced=24
|
|
} LIBC;
|
|
|
|
LIBC_OMR1 { # introduced=27
|
|
global:
|
|
__cfi_shadow_size;
|
|
__cfi_slowpath;
|
|
__cfi_slowpath_diag;
|
|
} LIBC_N;
|
|
|
|
LIBC_PRIVATE {
|
|
global:
|
|
android_link_namespaces_all_libs;
|
|
} LIBC_OMR1;
|
|
|
|
LIBC_PLATFORM {
|
|
global:
|
|
__cfi_init;
|
|
android_dlwarning;
|
|
android_get_application_target_sdk_version;
|
|
android_set_application_target_sdk_version;
|
|
android_get_LD_LIBRARY_PATH;
|
|
android_update_LD_LIBRARY_PATH;
|
|
android_init_anonymous_namespace;
|
|
android_create_namespace;
|
|
android_link_namespaces;
|
|
android_get_exported_namespace;
|
|
} LIBC_OMR1;
|