summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2014-11-03 22:08:31 -0800
committerDmitriy Ivanov <dimitry@google.com>2014-11-03 22:15:26 -0800
commit69c5d108a5cb44167a04d42ffdad6a39648ed235 (patch)
treeb7ace0acb01a45fac7c9927a214a93740d64a1b9 /tests
parent00dce525530c5d26c20750863f3e9890b468787a (diff)
downloadbionic-69c5d108a5cb44167a04d42ffdad6a39648ed235.zip
bionic-69c5d108a5cb44167a04d42ffdad6a39648ed235.tar.gz
bionic-69c5d108a5cb44167a04d42ffdad6a39648ed235.tar.bz2
Revert "Add RTLD_NODELETE flag support"
This reverts commit c87f65d2cd0690d81665f8b241c1d763f72b6f80. Bug: 18222321 Bug: 18211780 Change-Id: I00252e26a28a41ab9f1e2dd3b32f0f80d86297f1
Diffstat (limited to 'tests')
-rw-r--r--tests/dlfcn_test.cpp80
-rw-r--r--tests/libs/Android.mk29
-rw-r--r--tests/libs/dlopen_nodelete_1.cpp31
-rw-r--r--tests/libs/dlopen_nodelete_2.cpp31
-rw-r--r--tests/libs/dlopen_nodelete_dt_flags_1.cpp30
5 files changed, 0 insertions, 201 deletions
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index f1ec0f1..c9c856a 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -232,15 +232,10 @@ TEST(dlfcn, dlopen_check_rtld_global) {
ASSERT_TRUE(sym == nullptr);
void* handle = dlopen("libtest_simple.so", RTLD_NOW | RTLD_GLOBAL);
- ASSERT_TRUE(handle != nullptr) << dlerror();
sym = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
ASSERT_TRUE(sym != nullptr) << dlerror();
ASSERT_TRUE(reinterpret_cast<bool (*)(void)>(sym)());
dlclose(handle);
-
- // RTLD_GLOBAL implies RTLD_NODELETE, let's check that
- void* sym_after_dlclose = dlsym(RTLD_DEFAULT, "dlopen_testlib_simple_func");
- ASSERT_EQ(sym, sym_after_dlclose);
}
// libtest_with_dependency_loop.so -> libtest_with_dependency_loop_a.so ->
@@ -268,81 +263,6 @@ TEST(dlfcn, dlopen_check_loop) {
#endif
}
-TEST(dlfcn, dlopen_nodelete) {
- static bool is_unloaded = false;
-
- void* handle = dlopen("libtest_nodelete_1.so", RTLD_NOW | RTLD_NODELETE);
- ASSERT_TRUE(handle != nullptr) << dlerror();
- void (*set_unload_flag_ptr)(bool*);
- set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_1_set_unload_flag_ptr"));
- ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
- set_unload_flag_ptr(&is_unloaded);
-
- uint32_t* taxicab_number = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
- ASSERT_TRUE(taxicab_number != nullptr) << dlerror();
- ASSERT_EQ(1729U, *taxicab_number);
- *taxicab_number = 2;
-
- dlclose(handle);
- ASSERT_TRUE(!is_unloaded);
-
- uint32_t* taxicab_number_after_dlclose = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
- ASSERT_EQ(taxicab_number_after_dlclose, taxicab_number);
- ASSERT_EQ(2U, *taxicab_number_after_dlclose);
-
-
- handle = dlopen("libtest_nodelete_1.so", RTLD_NOW);
- uint32_t* taxicab_number2 = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_1_taxicab_number"));
- ASSERT_EQ(taxicab_number2, taxicab_number);
-
- ASSERT_EQ(2U, *taxicab_number2);
-
- dlclose(handle);
- ASSERT_TRUE(!is_unloaded);
-}
-
-TEST(dlfcn, dlopen_nodelete_on_second_dlopen) {
- static bool is_unloaded = false;
-
- void* handle = dlopen("libtest_nodelete_2.so", RTLD_NOW);
- ASSERT_TRUE(handle != nullptr) << dlerror();
- void (*set_unload_flag_ptr)(bool*);
- set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_2_set_unload_flag_ptr"));
- ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
- set_unload_flag_ptr(&is_unloaded);
-
- uint32_t* taxicab_number = reinterpret_cast<uint32_t*>(dlsym(handle, "dlopen_nodelete_2_taxicab_number"));
- ASSERT_TRUE(taxicab_number != nullptr) << dlerror();
-
- ASSERT_EQ(1729U, *taxicab_number);
- *taxicab_number = 2;
-
- // This RTLD_NODELETE should be ignored
- void* handle1 = dlopen("libtest_nodelete_2.so", RTLD_NOW | RTLD_NODELETE);
- ASSERT_TRUE(handle1 != nullptr) << dlerror();
- ASSERT_EQ(handle, handle1);
-
- dlclose(handle1);
- dlclose(handle);
-
- ASSERT_TRUE(is_unloaded);
-}
-
-TEST(dlfcn, dlopen_nodelete_dt_flags_1) {
- static bool is_unloaded = false;
-
- void* handle = dlopen("libtest_nodelete_dt_flags_1.so", RTLD_NOW);
- ASSERT_TRUE(handle != nullptr) << dlerror();
- void (*set_unload_flag_ptr)(bool*);
- set_unload_flag_ptr = reinterpret_cast<void (*)(bool*)>(dlsym(handle, "dlopen_nodelete_dt_flags_1_set_unload_flag_ptr"));
- ASSERT_TRUE(set_unload_flag_ptr != nullptr) << dlerror();
- set_unload_flag_ptr(&is_unloaded);
-
- dlclose(handle);
- ASSERT_TRUE(!is_unloaded);
-}
-
-
TEST(dlfcn, dlopen_failure) {
void* self = dlopen("/does/not/exist", RTLD_NOW);
ASSERT_TRUE(self == NULL);
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
index 175a635..af3e070 100644
--- a/tests/libs/Android.mk
+++ b/tests/libs/Android.mk
@@ -121,35 +121,6 @@ module := libtest_simple
include $(LOCAL_PATH)/Android.build.testlib.mk
# -----------------------------------------------------------------------------
-# Library used by dlfcn nodelete tests
-# -----------------------------------------------------------------------------
-libtest_nodelete_1_src_files := \
- dlopen_nodelete_1.cpp
-
-module := libtest_nodelete_1
-include $(LOCAL_PATH)/Android.build.testlib.mk
-
-# -----------------------------------------------------------------------------
-# Library used by dlfcn nodelete tests
-# -----------------------------------------------------------------------------
-libtest_nodelete_2_src_files := \
- dlopen_nodelete_2.cpp
-
-module := libtest_nodelete_2
-include $(LOCAL_PATH)/Android.build.testlib.mk
-
-# -----------------------------------------------------------------------------
-# Library used by dlfcn nodelete tests
-# -----------------------------------------------------------------------------
-libtest_nodelete_dt_flags_1_src_files := \
- dlopen_nodelete_dt_flags_1.cpp
-
-libtest_nodelete_dt_flags_1_ldflags := -Wl,-z,nodelete
-
-module := libtest_nodelete_dt_flags_1
-include $(LOCAL_PATH)/Android.build.testlib.mk
-
-# -----------------------------------------------------------------------------
# Libraries used by dlfcn tests to verify correct load order:
# libtest_check_order_2_right.so
# -----------------------------------------------------------------------------
diff --git a/tests/libs/dlopen_nodelete_1.cpp b/tests/libs/dlopen_nodelete_1.cpp
deleted file mode 100644
index 9438978..0000000
--- a/tests/libs/dlopen_nodelete_1.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-
-uint32_t dlopen_nodelete_1_taxicab_number = 1729;
-static bool* unload_flag_ptr = nullptr;
-
-extern "C" void dlopen_nodelete_1_set_unload_flag_ptr(bool* ptr) {
- unload_flag_ptr = ptr;
-}
-
-static void __attribute__((destructor)) unload_guard() {
- if (unload_flag_ptr != nullptr) {
- *unload_flag_ptr = true;
- }
-}
diff --git a/tests/libs/dlopen_nodelete_2.cpp b/tests/libs/dlopen_nodelete_2.cpp
deleted file mode 100644
index b5ab5c1..0000000
--- a/tests/libs/dlopen_nodelete_2.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-
-uint32_t dlopen_nodelete_2_taxicab_number = 1729;
-static bool* unload_flag_ptr = nullptr;
-
-extern "C" void dlopen_nodelete_2_set_unload_flag_ptr(bool* ptr) {
- unload_flag_ptr = ptr;
-}
-
-static void __attribute__((destructor)) unload_guard() {
- if (unload_flag_ptr != nullptr) {
- *unload_flag_ptr = true;
- }
-}
diff --git a/tests/libs/dlopen_nodelete_dt_flags_1.cpp b/tests/libs/dlopen_nodelete_dt_flags_1.cpp
deleted file mode 100644
index 39c0a7e..0000000
--- a/tests/libs/dlopen_nodelete_dt_flags_1.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.
- */
-
-#include <stdint.h>
-#include <stdlib.h>
-
-static bool* unload_flag_ptr = nullptr;
-
-extern "C" void dlopen_nodelete_dt_flags_1_set_unload_flag_ptr(bool* ptr) {
- unload_flag_ptr = ptr;
-}
-
-static void __attribute__((destructor)) unload_guard() {
- if (unload_flag_ptr != nullptr) {
- *unload_flag_ptr = true;
- }
-}