Fix orthography of GetTestLibRoot().

Change-Id: Ib052329b3ebced12a7e2d75b3628b33c7043e0d8
This commit is contained in:
Elliott Hughes 2024-03-12 22:37:13 +00:00
parent 5cc10a9a0d
commit 8d8138aad1
9 changed files with 96 additions and 96 deletions

View file

@ -160,7 +160,7 @@ TEST(cfi_test, invalid) {
// cfi_test_helper exports __cfi_check, which triggers CFI initialization at startup.
TEST(cfi_test, early_init) {
#if defined(__BIONIC__)
std::string helper = GetTestlibRoot() + "/cfi_test_helper";
std::string helper = GetTestLibRoot() + "/cfi_test_helper";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -172,7 +172,7 @@ TEST(cfi_test, early_init) {
// at startup.
TEST(cfi_test, early_init2) {
#if defined(__BIONIC__)
std::string helper = GetTestlibRoot() + "/cfi_test_helper2";
std::string helper = GetTestLibRoot() + "/cfi_test_helper2";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });

View file

@ -118,7 +118,7 @@ TEST(dl, exec_linker) {
TEST(dl, exec_linker_load_file) {
#if defined(__BIONIC__)
const char* path_to_linker = PathToLinker();
std::string helper = GetTestlibRoot() + "/exec_linker_helper";
std::string helper = GetTestLibRoot() + "/exec_linker_helper";
std::string expected_output =
"ctor: argc=1 argv[0]=" + helper + "\n" +
"main: argc=1 argv[0]=" + helper + "\n" +
@ -134,7 +134,7 @@ TEST(dl, exec_linker_load_file) {
TEST(dl, exec_linker_load_from_zip) {
#if defined(__BIONIC__)
const char* path_to_linker = PathToLinker();
std::string helper = GetTestlibRoot() +
std::string helper = GetTestLibRoot() +
"/libdlext_test_zip/libdlext_test_zip_zipaligned.zip!/libdir/exec_linker_helper";
std::string expected_output =
"ctor: argc=1 argv[0]=" + helper + "\n" +
@ -161,7 +161,7 @@ TEST(dl, exec_linker_load_self) {
TEST(dl, preinit_system_calls) {
#if defined(__BIONIC__)
SKIP_WITH_HWASAN << "hwasan not initialized in preinit_array, b/124007027";
std::string helper = GetTestlibRoot() + "/preinit_syscall_test_helper";
std::string helper = GetTestLibRoot() + "/preinit_syscall_test_helper";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -172,7 +172,7 @@ TEST(dl, preinit_system_calls) {
TEST(dl, preinit_getauxval) {
#if defined(__BIONIC__)
SKIP_WITH_HWASAN << "hwasan not initialized in preinit_array, b/124007027";
std::string helper = GetTestlibRoot() + "/preinit_getauxval_test_helper";
std::string helper = GetTestLibRoot() + "/preinit_getauxval_test_helper";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -186,7 +186,7 @@ TEST(dl, preinit_getauxval) {
TEST(dl, exec_without_ld_preload) {
#if defined(__BIONIC__)
std::string helper = GetTestlibRoot() + "/ld_preload_test_helper";
std::string helper = GetTestLibRoot() + "/ld_preload_test_helper";
chmod(helper.c_str(), 0755);
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -196,8 +196,8 @@ TEST(dl, exec_without_ld_preload) {
TEST(dl, exec_with_ld_preload) {
#if defined(__BIONIC__)
std::string helper = GetTestlibRoot() + "/ld_preload_test_helper";
std::string env = std::string("LD_PRELOAD=") + GetTestlibRoot() + "/ld_preload_test_helper_lib2.so";
std::string helper = GetTestLibRoot() + "/ld_preload_test_helper";
std::string env = std::string("LD_PRELOAD=") + GetTestLibRoot() + "/ld_preload_test_helper_lib2.so";
chmod(helper.c_str(), 0755);
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -222,10 +222,10 @@ TEST(dl, exec_with_ld_preload) {
// The two libs are in ns2/ subdir.
TEST(dl, exec_without_ld_config_file) {
#if defined(__BIONIC__)
std::string error_message = "CANNOT LINK EXECUTABLE \"" + GetTestlibRoot() +
std::string error_message = "CANNOT LINK EXECUTABLE \"" + GetTestLibRoot() +
"/ld_config_test_helper\": library \"ld_config_test_helper_lib1.so\" "
"not found: needed by main executable\n";
std::string helper = GetTestlibRoot() + "/ld_config_test_helper";
std::string helper = GetTestLibRoot() + "/ld_config_test_helper";
chmod(helper.c_str(), 0755);
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -240,15 +240,15 @@ static void create_ld_config_file(const char* config_file) {
android_get_LD_LIBRARY_PATH(default_search_paths, sizeof(default_search_paths));
std::ofstream fout(config_file, std::ios::out);
fout << "dir.test = " << GetTestlibRoot() << "/" << std::endl
fout << "dir.test = " << GetTestLibRoot() << "/" << std::endl
<< "[test]" << std::endl
<< "additional.namespaces = ns2" << std::endl
<< "namespace.default.search.paths = " << GetTestlibRoot() << std::endl
<< "namespace.default.search.paths = " << GetTestLibRoot() << std::endl
<< "namespace.default.links = ns2" << std::endl
<< "namespace.default.link.ns2.shared_libs = "
"libc.so:libm.so:libdl.so:ld_config_test_helper_lib1.so"
<< std::endl
<< "namespace.ns2.search.paths = " << default_search_paths << ":" << GetTestlibRoot()
<< "namespace.ns2.search.paths = " << default_search_paths << ":" << GetTestLibRoot()
<< "/ns2" << std::endl;
fout.close();
}
@ -279,7 +279,7 @@ TEST(dl, exec_with_ld_config_file) {
if (is_user_build()) {
GTEST_SKIP() << "LD_CONFIG_FILE is not supported on user build";
}
std::string helper = GetTestlibRoot() + "/ld_config_test_helper";
std::string helper = GetTestLibRoot() + "/ld_config_test_helper";
TemporaryFile config_file;
create_ld_config_file(config_file.path);
std::string env = std::string("LD_CONFIG_FILE=") + config_file.path;
@ -315,11 +315,11 @@ TEST(dl, exec_with_ld_config_file_with_ld_preload) {
if (is_user_build()) {
GTEST_SKIP() << "LD_CONFIG_FILE is not supported on user build";
}
std::string helper = GetTestlibRoot() + "/ld_config_test_helper";
std::string helper = GetTestLibRoot() + "/ld_config_test_helper";
TemporaryFile config_file;
create_ld_config_file(config_file.path);
std::string env = std::string("LD_CONFIG_FILE=") + config_file.path;
std::string env2 = std::string("LD_PRELOAD=") + GetTestlibRoot() + "/ld_config_test_helper_lib3.so";
std::string env2 = std::string("LD_PRELOAD=") + GetTestLibRoot() + "/ld_config_test_helper_lib3.so";
chmod(helper.c_str(), 0755);
ExecTestHelper eth;
eth.SetArgs({ helper.c_str(), nullptr });
@ -353,10 +353,10 @@ TEST(dl, disable_ld_config_file) {
}
std::string error_message =
std::string("CANNOT LINK EXECUTABLE ") + "\"" + GetTestlibRoot() +
std::string("CANNOT LINK EXECUTABLE ") + "\"" + GetTestLibRoot() +
"/ld_config_test_helper\": " +
"library \"ld_config_test_helper_lib1.so\" not found: needed by main executable\n";
std::string helper = GetTestlibRoot() + "/ld_config_test_helper";
std::string helper = GetTestLibRoot() + "/ld_config_test_helper";
TemporaryFile config_file;
create_ld_config_file(config_file.path);
std::string env = std::string("LD_CONFIG_FILE=") + config_file.path;
@ -371,7 +371,7 @@ TEST(dl, disable_ld_config_file) {
static void RelocationsTest(const char* lib, const char* expectation) {
#if defined(__BIONIC__)
// Does readelf think the .so file looks right?
const std::string path = GetTestlibRoot() + "/" + lib;
const std::string path = GetTestLibRoot() + "/" + lib;
ExecTestHelper eth;
eth.SetArgs({ "readelf", "-SW", path.c_str(), nullptr });
eth.Run([&]() { execvpe("readelf", eth.GetArgs(), eth.GetEnv()); }, 0, nullptr);

View file

@ -107,7 +107,7 @@ TEST_F(DlExtTest, ExtInfoNoFlags) {
}
TEST_F(DlExtTest, ExtInfoUseFd) {
const std::string lib_path = GetTestlibRoot() + "/libdlext_test_fd/libdlext_test_fd.so";
const std::string lib_path = GetTestLibRoot() + "/libdlext_test_fd/libdlext_test_fd.so";
android_dlextinfo extinfo;
extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD;
@ -125,7 +125,7 @@ TEST_F(DlExtTest, ExtInfoUseFd) {
}
TEST_F(DlExtTest, ExtInfoUseFdWithOffset) {
const std::string lib_path = GetTestlibRoot() + "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
const std::string lib_path = GetTestLibRoot() + "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
android_dlextinfo extinfo;
extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
@ -148,7 +148,7 @@ TEST_F(DlExtTest, ExtInfoUseFdWithOffset) {
}
TEST_F(DlExtTest, ExtInfoUseFdWithInvalidOffset) {
const std::string lib_path = GetTestlibRoot() + "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
const std::string lib_path = GetTestLibRoot() + "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
android_dlextinfo extinfo;
extinfo.flags = ANDROID_DLEXT_USE_LIBRARY_FD | ANDROID_DLEXT_USE_LIBRARY_FD_OFFSET;
@ -258,7 +258,7 @@ TEST(dlfcn, dlopen_system_libicuuc_android_api_level_current) {
TEST(dlfcn, dlopen_from_zip_absolute_path) {
const std::string lib_zip_path = "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
const std::string lib_path = GetTestlibRoot() + lib_zip_path;
const std::string lib_path = GetTestLibRoot() + lib_zip_path;
void* handle = dlopen((lib_path + "!/libdir/libatest_simple_zip.so").c_str(), RTLD_NOW);
ASSERT_TRUE(handle != nullptr) << dlerror();
@ -272,7 +272,7 @@ TEST(dlfcn, dlopen_from_zip_absolute_path) {
TEST(dlfcn, dlopen_from_zip_with_dt_runpath) {
const std::string lib_zip_path = "/libdlext_test_runpath_zip/libdlext_test_runpath_zip_zipaligned.zip";
const std::string lib_path = GetTestlibRoot() + lib_zip_path;
const std::string lib_path = GetTestLibRoot() + lib_zip_path;
void* handle = dlopen((lib_path + "!/libdir/libtest_dt_runpath_d_zip.so").c_str(), RTLD_NOW);
@ -291,7 +291,7 @@ TEST(dlfcn, dlopen_from_zip_with_dt_runpath) {
TEST(dlfcn, dlopen_from_zip_ld_library_path) {
const std::string lib_zip_path = "/libdlext_test_zip/libdlext_test_zip_zipaligned.zip";
const std::string lib_path = GetTestlibRoot() + lib_zip_path + "!/libdir";
const std::string lib_path = GetTestLibRoot() + lib_zip_path + "!/libdir";
typedef void (*fn_t)(const char*);
fn_t android_update_LD_LIBRARY_PATH =
@ -742,7 +742,7 @@ TEST(dlext, ns_smoke) {
" \"(anonymous)\"->\"(default)\": the list of shared libraries is empty.",
dlerror());
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs/" + g_public_lib;
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs/" + g_public_lib;
void* handle_public = dlopen(lib_public_path.c_str(), RTLD_NOW);
ASSERT_TRUE(handle_public != nullptr) << dlerror();
@ -762,7 +762,7 @@ TEST(dlext, ns_smoke) {
android_namespace_t* ns1 =
android_create_namespace("private",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_REGULAR,
nullptr,
nullptr);
@ -772,7 +772,7 @@ TEST(dlext, ns_smoke) {
android_namespace_t* ns2 =
android_create_namespace("private_isolated",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -916,10 +916,10 @@ TEST(dlext, ns_smoke) {
}
TEST(dlext, dlopen_ext_use_o_tmpfile_fd) {
const std::string lib_path = GetTestlibRoot() + "/libtest_simple.so";
const std::string lib_path = GetTestLibRoot() + "/libtest_simple.so";
int tmpfd = TEMP_FAILURE_RETRY(
open(GetTestlibRoot().c_str(), O_TMPFILE | O_CLOEXEC | O_RDWR | O_EXCL, 0));
open(GetTestLibRoot().c_str(), O_TMPFILE | O_CLOEXEC | O_RDWR | O_EXCL, 0));
// Ignore kernels without O_TMPFILE flag support
if (tmpfd == -1 && (errno == EISDIR || errno == EINVAL || errno == EOPNOTSUPP)) {
@ -931,7 +931,7 @@ TEST(dlext, dlopen_ext_use_o_tmpfile_fd) {
android_namespace_t* ns =
android_create_namespace("testing-o_tmpfile",
nullptr,
GetTestlibRoot().c_str(),
GetTestLibRoot().c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -960,7 +960,7 @@ TEST(dlext, dlopen_ext_use_o_tmpfile_fd) {
}
TEST(dlext, dlopen_ext_use_memfd) {
const std::string lib_path = GetTestlibRoot() + "/libtest_simple.so";
const std::string lib_path = GetTestLibRoot() + "/libtest_simple.so";
// create memfd
int memfd = memfd_create("foobar", MFD_CLOEXEC);
@ -975,7 +975,7 @@ TEST(dlext, dlopen_ext_use_memfd) {
android_namespace_t* ns =
android_create_namespace("testing-memfd",
nullptr,
GetTestlibRoot().c_str(),
GetTestLibRoot().c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1008,8 +1008,8 @@ TEST(dlext, ns_symbol_visibilty_one_namespace) {
static const char* root_lib = "libnstest_root.so";
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string ns_search_path = GetTestlibRoot() + "/public_namespace_libs:" +
GetTestlibRoot() + "/private_namespace_libs";
const std::string ns_search_path = GetTestLibRoot() + "/public_namespace_libs:" +
GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns =
android_create_namespace("one",
@ -1046,8 +1046,8 @@ TEST(dlext, ns_symbol_visibilty_between_namespaces) {
static const char* root_lib = "libnstest_root.so";
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string public_ns_search_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string public_ns_search_path = GetTestLibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns_public =
android_create_namespace("public",
@ -1097,8 +1097,8 @@ TEST(dlext, ns_unload_between_namespaces) {
static const char* root_lib = "libnstest_root.so";
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string public_ns_search_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string public_ns_search_path = GetTestLibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns_public =
android_create_namespace("public",
@ -1146,8 +1146,8 @@ TEST(dlext, ns_unload_between_namespaces) {
TEST(dlext, ns_unload_between_namespaces_missing_symbol_direct) {
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string public_ns_search_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string public_ns_search_path = GetTestLibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns_public =
android_create_namespace("public",
@ -1186,8 +1186,8 @@ TEST(dlext, ns_unload_between_namespaces_missing_symbol_direct) {
TEST(dlext, ns_unload_between_namespaces_missing_symbol_indirect) {
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string public_ns_search_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string public_ns_search_path = GetTestLibRoot() + "/public_namespace_libs";
const std::string private_ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns_public =
android_create_namespace("public",
@ -1227,7 +1227,7 @@ TEST(dlext, ns_unload_between_namespaces_missing_symbol_indirect) {
TEST(dlext, ns_exempt_list_enabled) {
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns =
android_create_namespace("namespace",
@ -1265,7 +1265,7 @@ TEST(dlext, ns_exempt_list_enabled) {
TEST(dlext, ns_exempt_list_disabled_by_default) {
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string ns_search_path = GetTestlibRoot() + "/private_namespace_libs";
const std::string ns_search_path = GetTestLibRoot() + "/private_namespace_libs";
android_namespace_t* ns =
android_create_namespace("namespace",
@ -1292,7 +1292,7 @@ TEST(dlext, ns_cyclic_namespaces) {
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
std::string shared_libs = g_core_shared_libs + ":libthatdoesnotexist.so";
const std::string ns_search_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string ns_search_path = GetTestLibRoot() + "/public_namespace_libs";
android_namespace_t* ns1 =
android_create_namespace("ns1",
@ -1330,7 +1330,7 @@ TEST(dlext, ns_isolated) {
static const char* root_lib = "libnstest_root_not_isolated.so";
std::string shared_libs = g_core_shared_libs + ":" + g_public_lib;
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs/" + g_public_lib;
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs/" + g_public_lib;
void* handle_public = dlopen(lib_public_path.c_str(), RTLD_NOW);
ASSERT_TRUE(handle_public != nullptr) << dlerror();
@ -1341,7 +1341,7 @@ TEST(dlext, ns_isolated) {
android_namespace_t* ns_not_isolated =
android_create_namespace("private",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_REGULAR,
nullptr,
nullptr);
@ -1351,7 +1351,7 @@ TEST(dlext, ns_isolated) {
android_namespace_t* ns_isolated =
android_create_namespace("private_isolated1",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1360,10 +1360,10 @@ TEST(dlext, ns_isolated) {
android_namespace_t* ns_isolated2 =
android_create_namespace("private_isolated2",
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
nullptr,
ANDROID_NAMESPACE_TYPE_ISOLATED,
GetTestlibRoot().c_str(),
GetTestLibRoot().c_str(),
nullptr);
ASSERT_TRUE(ns_isolated2 != nullptr) << dlerror();
ASSERT_TRUE(android_link_namespaces(ns_isolated2, nullptr, shared_libs.c_str())) << dlerror();
@ -1372,7 +1372,7 @@ TEST(dlext, ns_isolated) {
ASSERT_STREQ("dlopen failed: library \"libnstest_root_not_isolated.so\" not found", dlerror());
std::string lib_private_external_path =
GetTestlibRoot() + "/private_namespace_libs_external/libnstest_private_external.so";
GetTestLibRoot() + "/private_namespace_libs_external/libnstest_private_external.so";
// Load lib_private_external_path to default namespace
// (it should remain invisible for the isolated namespaces after this)
@ -1404,7 +1404,7 @@ TEST(dlext, ns_isolated) {
extinfo.library_namespace = ns_isolated2;
// this should work because isolation_path for private_isolated2 includes GetTestlibRoot()
// this should work because isolation_path for private_isolated2 includes GetTestLibRoot()
handle2 = android_dlopen_ext(root_lib, RTLD_NOW, &extinfo);
ASSERT_TRUE(handle2 != nullptr) << dlerror();
dlclose(handle2);
@ -1463,7 +1463,7 @@ TEST(dlext, ns_shared) {
extinfo.flags = ANDROID_DLEXT_USE_NAMESPACE;
extinfo.library_namespace = ns_parent;
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs/" + g_public_lib;
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs/" + g_public_lib;
void* handle_public = android_dlopen_ext(lib_public_path.c_str(), RTLD_NOW, &extinfo);
ASSERT_TRUE(handle_public != nullptr) << dlerror();
@ -1474,7 +1474,7 @@ TEST(dlext, ns_shared) {
// preload this library to the parent namespace to check if it
// is shared later on.
void* handle_dlopened =
android_dlopen_ext((GetTestlibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(), RTLD_NOW, &extinfo);
android_dlopen_ext((GetTestLibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(), RTLD_NOW, &extinfo);
ASSERT_TRUE(handle_dlopened != nullptr) << dlerror();
// create two child namespaces of 'ns_parent'. One with regular, the other
@ -1482,7 +1482,7 @@ TEST(dlext, ns_shared) {
android_namespace_t* ns_not_isolated =
android_create_namespace("private",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_REGULAR,
nullptr,
ns_parent);
@ -1493,7 +1493,7 @@ TEST(dlext, ns_shared) {
android_namespace_t* ns_isolated_shared =
android_create_namespace("private_isolated_shared",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED | ANDROID_NAMESPACE_TYPE_SHARED,
nullptr,
ns_parent);
@ -1505,7 +1505,7 @@ TEST(dlext, ns_shared) {
ASSERT_STREQ("dlopen failed: library \"libnstest_root_not_isolated.so\" not found", dlerror());
std::string lib_private_external_path =
GetTestlibRoot() + "/private_namespace_libs_external/libnstest_private_external.so";
GetTestLibRoot() + "/private_namespace_libs_external/libnstest_private_external.so";
// Load lib_private_external_path to the parent namespace
// (it should remain invisible for the isolated namespaces after this)
@ -1591,9 +1591,9 @@ TEST(dlext, ns_shared_links_and_paths) {
android_namespace_t* ns_isolated =
android_create_namespace("private_isolated",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
(GetTestlibRoot() + "/public_namespace_libs").c_str(),
(GetTestLibRoot() + "/public_namespace_libs").c_str(),
nullptr);
ASSERT_TRUE(ns_isolated != nullptr) << dlerror();
ASSERT_TRUE(android_link_namespaces(ns_isolated, nullptr, g_core_shared_libs.c_str())) << dlerror();
@ -1627,7 +1627,7 @@ TEST(dlext, ns_shared_links_and_paths) {
// it has inherited permitted_when_isolated_path
{
void* handle = android_dlopen_ext(
(GetTestlibRoot() + "/public_namespace_libs/libnstest_public.so").c_str(),
(GetTestLibRoot() + "/public_namespace_libs/libnstest_public.so").c_str(),
RTLD_NOW,
&extinfo);
@ -1642,7 +1642,7 @@ TEST(dlext, ns_shared_links_and_paths) {
// 3. Check that it is still isolated.
{
void* handle = android_dlopen_ext(
(GetTestlibRoot() + "/libtest_empty.so").c_str(),
(GetTestLibRoot() + "/libtest_empty.so").c_str(),
RTLD_NOW,
&extinfo);
@ -1658,13 +1658,13 @@ TEST(dlext, ns_shared_dlclose) {
// preload this library to the default namespace to check if it
// is shared later on.
void* handle_dlopened =
dlopen((GetTestlibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(), RTLD_NOW);
dlopen((GetTestLibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(), RTLD_NOW);
ASSERT_TRUE(handle_dlopened != nullptr) << dlerror();
android_namespace_t* ns_isolated_shared =
android_create_namespace("private_isolated_shared",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED | ANDROID_NAMESPACE_TYPE_SHARED,
nullptr,
nullptr);
@ -1687,7 +1687,7 @@ TEST(dlext, ns_shared_dlclose) {
ASSERT_TRUE(handle == nullptr)
<< "Error: libnstest_dlopened.so is still accessible in shared namespace";
handle = android_dlopen_ext((GetTestlibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(),
handle = android_dlopen_ext((GetTestLibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(),
RTLD_NOW | RTLD_NOLOAD, &extinfo);
ASSERT_TRUE(handle == nullptr)
<< "Error: libnstest_dlopened.so is still accessible in shared namespace";
@ -1696,14 +1696,14 @@ TEST(dlext, ns_shared_dlclose) {
ASSERT_TRUE(handle == nullptr)
<< "Error: libnstest_dlopened.so is still accessible in default namespace";
handle = dlopen((GetTestlibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(),
handle = dlopen((GetTestLibRoot() + "/private_namespace_libs/libnstest_dlopened.so").c_str(),
RTLD_NOW | RTLD_NOLOAD);
ASSERT_TRUE(handle == nullptr)
<< "Error: libnstest_dlopened.so is still accessible in default namespace";
// Now lets see if the soinfo area gets reused in the wrong way:
// load a library to default namespace.
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs/" + g_public_lib;
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs/" + g_public_lib;
void* handle_public = dlopen(lib_public_path.c_str(), RTLD_NOW);
ASSERT_TRUE(handle_public != nullptr) << dlerror();
@ -1717,12 +1717,12 @@ TEST(dlext, ns_isolated_rtld_global) {
static const char* root_lib = "libnstest_root.so";
ASSERT_TRUE(android_init_anonymous_namespace(g_core_shared_libs.c_str(), nullptr));
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs";
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs";
android_namespace_t* ns1 =
android_create_namespace("isolated1",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
lib_public_path.c_str(),
nullptr);
@ -1732,7 +1732,7 @@ TEST(dlext, ns_isolated_rtld_global) {
android_namespace_t* ns2 =
android_create_namespace("isolated2",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
lib_public_path.c_str(),
nullptr);
@ -1752,7 +1752,7 @@ TEST(dlext, ns_isolated_rtld_global) {
android_namespace_t* ns1_child =
android_create_namespace("isolated1_child",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
ns1);
@ -1802,7 +1802,7 @@ TEST(dlext, ns_inaccessible_error_message) {
android_namespace_t* ns_a =
android_create_namespace("ns_a",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1812,7 +1812,7 @@ TEST(dlext, ns_inaccessible_error_message) {
android_namespace_t* ns_b =
android_create_namespace("ns_b",
nullptr,
GetTestlibRoot().c_str(),
GetTestLibRoot().c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1825,7 +1825,7 @@ TEST(dlext, ns_inaccessible_error_message) {
extinfo.flags = ANDROID_DLEXT_USE_NAMESPACE;
extinfo.library_namespace = ns_a;
std::string library_path = GetTestlibRoot() + "/inaccessible_libs/libtestshared.so";
std::string library_path = GetTestLibRoot() + "/inaccessible_libs/libtestshared.so";
void* handle = android_dlopen_ext(library_path.c_str(), RTLD_NOW, &extinfo);
ASSERT_TRUE(handle == nullptr);
@ -1846,7 +1846,7 @@ TEST(dlext, ns_link_namespaces_invalid_arguments) {
android_namespace_t* ns =
android_create_namespace("private",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_REGULAR,
nullptr,
nullptr);
@ -1887,7 +1887,7 @@ TEST(dlext, ns_allow_all_shared_libs) {
android_namespace_t* ns_a =
android_create_namespace("ns_a",
nullptr,
(GetTestlibRoot() + "/ns_a").c_str(),
(GetTestLibRoot() + "/ns_a").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1897,7 +1897,7 @@ TEST(dlext, ns_allow_all_shared_libs) {
android_namespace_t* ns_b =
android_create_namespace("ns_b",
nullptr,
(GetTestlibRoot() + "/ns_b").c_str(),
(GetTestLibRoot() + "/ns_b").c_str(),
ANDROID_NAMESPACE_TYPE_ISOLATED,
nullptr,
nullptr);
@ -1961,20 +1961,20 @@ TEST(dlext, ns_anonymous) {
static const char* root_lib = "libnstest_root.so";
std::string shared_libs = g_core_shared_libs + ":" + g_public_lib;
const std::string lib_public_path = GetTestlibRoot() + "/public_namespace_libs/" + g_public_lib;
const std::string lib_public_path = GetTestLibRoot() + "/public_namespace_libs/" + g_public_lib;
void* handle_public = dlopen(lib_public_path.c_str(), RTLD_NOW);
ASSERT_TRUE(handle_public != nullptr) << dlerror();
ASSERT_TRUE(
android_init_anonymous_namespace(shared_libs.c_str(),
(GetTestlibRoot() + "/private_namespace_libs").c_str())
(GetTestLibRoot() + "/private_namespace_libs").c_str())
) << dlerror();
android_namespace_t* ns =
android_create_namespace("private",
nullptr,
(GetTestlibRoot() + "/private_namespace_libs").c_str(),
(GetTestLibRoot() + "/private_namespace_libs").c_str(),
ANDROID_NAMESPACE_TYPE_REGULAR,
nullptr,
nullptr);
@ -1982,7 +1982,7 @@ TEST(dlext, ns_anonymous) {
ASSERT_TRUE(ns != nullptr) << dlerror();
ASSERT_TRUE(android_link_namespaces(ns, nullptr, shared_libs.c_str())) << dlerror();
std::string private_library_absolute_path = GetTestlibRoot() + "/private_namespace_libs/" + root_lib;
std::string private_library_absolute_path = GetTestLibRoot() + "/private_namespace_libs/" + root_lib;
android_dlextinfo extinfo;
extinfo.flags = ANDROID_DLEXT_USE_NAMESPACE;
@ -2073,13 +2073,13 @@ TEST(dlext, ns_anonymous) {
TEST(dlext, ns_hidden_child) {
ExecTestHelper eth;
std::string helper = GetTestlibRoot() + "/ns_hidden_child_helper";
std::string helper = GetTestLibRoot() + "/ns_hidden_child_helper";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
std::string app_ns_dir = GetTestlibRoot() + "/ns_hidden_child_app";
std::string app_ns_dir = GetTestLibRoot() + "/ns_hidden_child_app";
eth.SetArgs({ helper.c_str(), app_ns_dir.c_str(), nullptr });
// Add the main libns_hidden_child_*.so libraries to the search path of the default namespace.
std::string env = "LD_LIBRARY_PATH=" + GetTestlibRoot();
std::string env = "LD_LIBRARY_PATH=" + GetTestLibRoot();
eth.SetEnv({ env.c_str(), nullptr });
eth.Run([&]() { execve(helper.c_str(), eth.GetArgs(), eth.GetEnv()); }, 0,

View file

@ -1301,7 +1301,7 @@ TEST(dlfcn, dt_runpath_smoke) {
}
TEST(dlfcn, dt_runpath_absolute_path) {
std::string libpath = GetTestlibRoot() + "/libtest_dt_runpath_d.so";
std::string libpath = GetTestLibRoot() + "/libtest_dt_runpath_d.so";
void* handle = dlopen(libpath.c_str(), RTLD_NOW);
ASSERT_TRUE(handle != nullptr) << dlerror();

View file

@ -68,9 +68,9 @@ TEST(elftls_dl, dlopen_shared_var_ie) {
}
TEST(elftls_dl, dlopen_ie_error) {
std::string helper = GetTestlibRoot() + "/elftls_dlopen_ie_error_helper";
std::string src_path = GetTestlibRoot() + "/libtest_elftls_shared_var_ie.so";
std::string dst_path = GetTestlibRoot() + "/libtest_elftls_shared_var.so";
std::string helper = GetTestLibRoot() + "/elftls_dlopen_ie_error_helper";
std::string src_path = GetTestLibRoot() + "/libtest_elftls_shared_var_ie.so";
std::string dst_path = GetTestLibRoot() + "/libtest_elftls_shared_var.so";
#if defined(__BIONIC__)
std::string error =
"dlerror: dlopen failed: TLS symbol \"elftls_shared_var\" in dlopened \"" + dst_path + "\" " +
@ -154,7 +154,7 @@ TEST(elftls_dl, tlsdesc_missing_weak) {
TEST(elftls_dl, dtv_resize) {
#if defined(__BIONIC__)
std::string helper = GetTestlibRoot() + "/elftls_dtv_resize_helper";
std::string helper = GetTestLibRoot() + "/elftls_dtv_resize_helper";
chmod(helper.c_str(), 0755); // TODO: "x" lost in CTS, b/34945607
ExecTestHelper eth;
eth.SetArgs({helper.c_str(), nullptr});
@ -273,7 +273,7 @@ TEST(elftls_dl, dladdr_skip_tls_symbol) {
Dl_info info;
ASSERT_NE(0, dladdr(local_addr, &info));
std::string libpath = GetTestlibRoot() + "/libtest_elftls_dynamic.so";
std::string libpath = GetTestLibRoot() + "/libtest_elftls_dynamic.so";
char dli_realpath[PATH_MAX];
ASSERT_TRUE(realpath(info.dli_fname, dli_realpath));
ASSERT_STREQ(libpath.c_str(), dli_realpath);

View file

@ -23,7 +23,7 @@
#include <string>
std::string GetTestlibRoot() {
std::string GetTestLibRoot() {
// Typically the executable is /data/nativetest[64]/bionic-unit-tests/bionic-unit-tests, and the
// test libraries are in /data/nativetest[64]/bionic-unit-tests/bionic-loader-test-libs.
std::string path = android::base::GetExecutableDirectory();

View file

@ -19,10 +19,10 @@
#include <string>
std::string GetTestlibRoot();
std::string GetTestLibRoot();
inline std::string GetPrebuiltElfDir() {
return GetTestlibRoot() + "/prebuilt-elf-files";
return GetTestLibRoot() + "/prebuilt-elf-files";
}
#endif // _BIONIC_TESTS_GTEST_GLOBALS_H

View file

@ -247,7 +247,7 @@ TEST_P(MemtagNoteTest, SEGV) {
bool isStatic = std::get<1>(GetParam());
std::string helper_base = std::string("heap_tagging_") + (isStatic ? "static_" : "") +
kNoteSuffix[static_cast<int>(note)] + "_helper";
std::string helper = GetTestlibRoot() + "/" + helper_base;
std::string helper = GetTestLibRoot() + "/" + helper_base;
chmod(helper.c_str(), 0755);
ExecTestHelper eth;
eth.SetArgs({helper.c_str(), nullptr});

View file

@ -33,7 +33,7 @@ TEST_P(MemtagStackTest, test) {
}
bool is_static = std::get<1>(GetParam());
std::string helper =
GetTestlibRoot() + (is_static ? "/stack_tagging_static_helper" : "/stack_tagging_helper");
GetTestLibRoot() + (is_static ? "/stack_tagging_static_helper" : "/stack_tagging_helper");
const char* arg = std::get<0>(GetParam());
chmod(helper.c_str(), 0755);
ExecTestHelper eth;