Move test libraries under /data/nativetests
Move libraries used in bionic-unit-tests out of system partition to
/data/nativetests../bionic-loader-test-libs
Bug: http://b/22182538
Test: build bionic and run bionic-unit-tests
Change-Id: I170177bef782839d0b4970ae4418bf54d0a77836
diff --git a/tests/libs/Android.bp b/tests/libs/Android.bp
index 0303138..9ca1476 100644
--- a/tests/libs/Android.bp
+++ b/tests/libs/Android.bp
@@ -17,6 +17,12 @@
cc_defaults {
name: "bionic_testlib_defaults",
host_supported: true,
+ ldflags: [
+ "-Wl,--rpath,\\$${ORIGIN}",
+ "-Wl,--enable-new-dtags",
+ ],
+ relative_install_path: "bionic-loader-test-libs",
+ gtest: false,
sanitize: {
never: true,
},
@@ -30,7 +36,7 @@
// -----------------------------------------------------------------------------
// Library to test gnu-styled hash
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libgnu-hash-table-library",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlext_test_library.cpp"],
@@ -48,7 +54,7 @@
// -----------------------------------------------------------------------------
// Library to test sysv-styled hash
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libsysv-hash-table-library",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlext_test_library.cpp"],
@@ -63,8 +69,9 @@
// -----------------------------------------------------------------------------
// Library used by dlext tests - without GNU RELRO program header
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libdlext_test_norelro",
+ defaults: ["bionic_testlib_defaults"],
srcs: ["dlext_test_library.cpp"],
ldflags: ["-Wl,-z,norelro"],
shared_libs = ["libtest_simple"],
@@ -93,7 +100,7 @@
// -----------------------------------------------------------------------------
// Library used by dlfcn tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_simple",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_simple.cpp"],
@@ -102,7 +109,7 @@
// -----------------------------------------------------------------------------
// Library used by dlfcn nodelete tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_nodelete_1",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_nodelete_1.cpp"],
@@ -111,7 +118,7 @@
// -----------------------------------------------------------------------------
// Library used by dlfcn nodelete tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_nodelete_2",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_nodelete_2.cpp"],
@@ -120,7 +127,7 @@
// -----------------------------------------------------------------------------
// Library used by dlfcn nodelete tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_nodelete_dt_flags_1",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_nodelete_dt_flags_1.cpp"],
@@ -172,7 +179,7 @@
//
// libtest_with_dependency_loop -> a -> b -> c -> a
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_with_dependency_loop",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_loopy_root.cpp"],
@@ -182,7 +189,7 @@
// -----------------------------------------------------------------------------
// libtest_with_dependency_loop_a.so
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_with_dependency_loop_a",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_loopy_a.cpp"],
@@ -194,7 +201,7 @@
//
// this is temporary placeholder - will be removed
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_with_dependency_loop_b_tmp",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_loopy_invalid.cpp"],
@@ -204,7 +211,7 @@
// -----------------------------------------------------------------------------
// libtest_with_dependency_loop_b.so
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_with_dependency_loop_b",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_loopy_b.cpp"],
@@ -214,7 +221,7 @@
// -----------------------------------------------------------------------------
// libtest_with_dependency_loop_c.so
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_with_dependency_loop_c",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_loopy_c.cpp"],
@@ -230,7 +237,7 @@
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_relo_check_dt_needed_order",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_relo_check_dt_needed_order.cpp"],
@@ -240,13 +247,13 @@
],
}
-cc_library {
+cc_test_library {
name: "libtest_relo_check_dt_needed_order_1",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_relo_check_dt_needed_order_1.cpp"],
}
-cc_library {
+cc_test_library {
name: "libtest_relo_check_dt_needed_order_2",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_relo_check_dt_needed_order_2.cpp"],
@@ -260,7 +267,7 @@
// -----------------------------------------------------------------------------
// Library used by ifunc tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_ifunc",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_ifunc.c"],
@@ -281,7 +288,7 @@
// Library used by atexit tests
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_atexit",
defaults: ["bionic_testlib_defaults"],
srcs: ["atexit_testlib.cpp"],
@@ -291,7 +298,7 @@
// This library is used by dl_load test to check symbol preempting
// by main executable
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libdl_preempt_test_1",
defaults: ["bionic_testlib_defaults"],
srcs: ["dl_preempt_library_1.cpp"],
@@ -301,7 +308,7 @@
// This library is used by dl_load test to check symbol preempting
// by libdl_preempt_test_1.so
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libdl_preempt_test_2",
defaults: ["bionic_testlib_defaults"],
srcs: ["dl_preempt_library_2.cpp"],
@@ -310,7 +317,7 @@
// -----------------------------------------------------------------------------
// Library with DF_1_GLOBAL
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libdl_test_df_1_global",
defaults: ["bionic_testlib_defaults"],
srcs: ["dl_df_1_global.cpp"],
@@ -328,7 +335,7 @@
// -----------------------------------------------------------------------------
// Library using symbol from libdl_test_df_1_global
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlsym_df_1_global",
defaults: ["bionic_testlib_defaults"],
srcs: ["dl_df_1_use_global.cpp"],
@@ -337,7 +344,7 @@
// -----------------------------------------------------------------------------
// Library with weak function
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlsym_weak_func",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlsym_weak_function.cpp"],
@@ -346,7 +353,7 @@
// -----------------------------------------------------------------------------
// Library to check RTLD_LOCAL with dlsym in 'this'
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlsym_from_this",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlsym_from_this_symbol.cpp"],
@@ -360,7 +367,7 @@
}
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlsym_from_this_child",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlsym_from_this_functions.cpp"],
@@ -368,7 +375,7 @@
}
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlsym_from_this_grandchild",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlsym_from_this_symbol2.cpp"],
@@ -377,7 +384,7 @@
// -----------------------------------------------------------------------------
// Empty library
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_empty",
defaults: ["bionic_testlib_defaults"],
srcs: ["empty.cpp"],
@@ -386,7 +393,7 @@
// -----------------------------------------------------------------------------
// Library with weak undefined function
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlopen_weak_undefined_func",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_weak_undefined.cpp"],
@@ -395,7 +402,7 @@
// -----------------------------------------------------------------------------
// Library with constructor that calls dlopen() b/7941716
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlopen_from_ctor",
defaults: ["bionic_testlib_defaults"],
srcs: ["dlopen_testlib_dlopen_from_ctor.cpp"],
@@ -409,7 +416,7 @@
// -----------------------------------------------------------------------------
// Library that depends on the library with constructor that calls dlopen() b/7941716
// -----------------------------------------------------------------------------
-cc_library {
+cc_test_library {
name: "libtest_dlopen_from_ctor_main",
defaults: ["bionic_testlib_defaults"],
srcs: ["empty.cpp"],
diff --git a/tests/libs/Android.build.dlext_testzip.mk b/tests/libs/Android.build.dlext_testzip.mk
index 56be1e2..37499ba 100644
--- a/tests/libs/Android.build.dlext_testzip.mk
+++ b/tests/libs/Android.build.dlext_testzip.mk
@@ -26,7 +26,7 @@
LOCAL_MODULE := libdlext_test_zip_zipaligned
LOCAL_MODULE_SUFFIX := .zip
LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/libdlext_test_zip
+LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test_zip
LOCAL_2ND_ARCH_VAR_PREFIX := $(bionic_2nd_arch_prefix)
include $(BUILD_SYSTEM)/base_rules.mk
@@ -48,7 +48,7 @@
LOCAL_MODULE := libdlext_test_runpath_zip_zipaligned
LOCAL_MODULE_SUFFIX := .zip
LOCAL_MODULE_TAGS := tests
-LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/libdlext_test_runpath_zip
+LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test_runpath_zip
LOCAL_2ND_ARCH_VAR_PREFIX := $(bionic_2nd_arch_prefix)
include $(BUILD_SYSTEM)/base_rules.mk
diff --git a/tests/libs/Android.build.linker_namespaces.mk b/tests/libs/Android.build.linker_namespaces.mk
index f913780..df6428c 100644
--- a/tests/libs/Android.build.linker_namespaces.mk
+++ b/tests/libs/Android.build.linker_namespaces.mk
@@ -35,24 +35,24 @@
# -----------------------------------------------------------------------------
libnstest_root_src_files := namespaces_root.cpp
libnstest_root_shared_libraries := libnstest_public libnstest_private
-libnstest_root_install_to_out_data_dir := private_namespace_libs
+libnstest_root_relative_install_path := private_namespace_libs
module := libnstest_root
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
libnstest_public_src_files := namespaces_public.cpp
module := libnstest_public
-libnstest_public_install_to_out_data_dir := public_namespace_libs
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+libnstest_public_relative_install_path := public_namespace_libs
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
libnstest_private_src_files := namespaces_private.cpp
-libnstest_private_install_to_out_data_dir := private_namespace_libs
+libnstest_private_relative_install_path := private_namespace_libs
module := libnstest_private
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
libnstest_dlopened_src_files := namespaces_dlopened.cpp
-libnstest_dlopened_install_to_out_data_dir := private_namespace_libs
+libnstest_dlopened_relative_install_path := private_namespace_libs
module := libnstest_dlopened
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
# -----------------------------------------------------------------------------
# This set of libraries is to test isolated namespaces
@@ -71,14 +71,14 @@
# -----------------------------------------------------------------------------
libnstest_root_not_isolated_src_files := namespaces_root.cpp
libnstest_root_not_isolated_shared_libraries := libnstest_public libnstest_private_external
-libnstest_root_not_isolated_install_to_out_data_dir := private_namespace_libs
+libnstest_root_not_isolated_relative_install_path := private_namespace_libs
libnstest_root_not_isolated_ldflags := -Wl,--rpath,\$$ORIGIN/../private_namespace_libs_external \
-Wl,--enable-new-dtags
module := libnstest_root_not_isolated
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
libnstest_private_external_src_files := namespaces_private.cpp
-libnstest_private_external_install_to_out_data_dir := private_namespace_libs_external
+libnstest_private_external_relative_install_path := private_namespace_libs_external
module := libnstest_private_external
-include $(LOCAL_PATH)/Android.build.target.testlib.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
diff --git a/tests/libs/Android.build.testlib.mk b/tests/libs/Android.build.testlib.mk
index 5b688e4..407a389 100644
--- a/tests/libs/Android.build.testlib.mk
+++ b/tests/libs/Android.build.testlib.mk
@@ -17,6 +17,7 @@
build_target := SHARED_LIBRARY
build_type := host
include $(TEST_PATH)/Android.build.mk
-build_type := target
-include $(TEST_PATH)/Android.build.mk
+bionic-loader-test-libs-host: $(LOCAL_MODULE)
+
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
diff --git a/tests/libs/Android.build.testlib.target.mk b/tests/libs/Android.build.testlib.target.mk
new file mode 100644
index 0000000..143be5b
--- /dev/null
+++ b/tests/libs/Android.build.testlib.target.mk
@@ -0,0 +1,30 @@
+#
+# Copyright (C) 2014 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.
+#
+
+build_type := target
+# 1. Install test libraries to /data/nativetests../bionic-loader-test-libs/
+# by default.
+ifeq ($($(module)_relative_install_path),)
+ $(module)_install_to_out_data_dir := bionic-loader-test-libs
+else
+ $(module)_install_to_out_data_dir := bionic-loader-test-libs/$($(module)_relative_install_path)
+endif
+# 2. Set dt_runpath to origin to resolve dependencies
+$(module)_ldflags += -Wl,--rpath,\$${ORIGIN} -Wl,--enable-new-dtags
+include $(TEST_PATH)/Android.build.mk
+
+bionic-loader-test-libs-target: $(LOCAL_MODULE)
+
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
index 3c3d78b..94cc516 100644
--- a/tests/libs/Android.mk
+++ b/tests/libs/Android.mk
@@ -29,6 +29,7 @@
$(LOCAL_PATH)/Android.build.linker_namespaces.mk \
$(LOCAL_PATH)/Android.build.pthread_atfork.mk \
$(LOCAL_PATH)/Android.build.testlib.mk \
+ $(LOCAL_PATH)/Android.build.testlib.target.mk \
$(LOCAL_PATH)/Android.build.versioned_lib.mk \
$(TEST_PATH)/Android.build.mk
@@ -51,12 +52,12 @@
# create symlink to libdlext_test.so for symlink test
# -----------------------------------------------------------------------------
# Use = instead of := to defer the evaluation of $@
-$(TARGET_OUT)/lib/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \
+$(TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \
$(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so
ifneq ($(TARGET_2ND_ARCH),)
# link 64 bit .so
-$(TARGET_OUT)/lib64/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \
+$($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test.so: PRIVATE_POST_INSTALL_CMD = \
$(hide) cd $(dir $@) && ln -sf $(notdir $@) libdlext_test_v2.so
endif
@@ -77,11 +78,12 @@
libdlext_test_fd_shared_libraries := libtest_simple
-libdlext_test_fd_install_to_out_data_dir := $(module)
+libdlext_test_fd_relative_install_path := $(module)
+
+libdlext_test_fd_ldflags := -Wl,--rpath,\$${ORIGIN}/.. -Wl,--enable-new-dtags
+
module_tag := optional
-build_type := target
-build_target := SHARED_LIBRARY
-include $(TEST_PATH)/Android.build.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
# -----------------------------------------------------------------------------
@@ -94,22 +96,18 @@
libdlext_test_zip_shared_libraries := libatest_simple_zip
-libdlext_test_zip_install_to_out_data_dir := $(module)
+libdlext_test_zip_relative_install_path := $(module)
module_tag := optional
-build_type := target
-build_target := SHARED_LIBRARY
-include $(TEST_PATH)/Android.build.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
module := libatest_simple_zip
libatest_simple_zip_src_files := \
dlopen_testlib_simple.cpp
-libatest_simple_zip_install_to_out_data_dir := $(module)
+libatest_simple_zip_relative_install_path := $(module)
module_tag := optional
-build_type := target
-build_target := SHARED_LIBRARY
-include $(TEST_PATH)/Android.build.mk
+include $(LOCAL_PATH)/Android.build.testlib.target.mk
# ----------------------------------------------------------------------------
# Library with soname which does not match filename