Merge "Add test for --hash-style=sysv"
This commit is contained in:
commit
898aab282c
@ -301,9 +301,7 @@ bionic-unit-tests-glibc_shared_libraries := \
|
||||
libdl_preempt_test_1 \
|
||||
libdl_preempt_test_2
|
||||
|
||||
ifneq ($(filter $(TARGET_ARCH),arm arm64),$(TARGET_ARCH))
|
||||
bionic-unit-tests-glibc_shared_libraries += libdl_test_df_1_global
|
||||
endif
|
||||
|
||||
bionic-unit-tests-glibc_whole_static_libraries := \
|
||||
libBionicStandardTests \
|
||||
|
@ -669,12 +669,32 @@ TEST(dlfcn, dlopen_library_with_only_gnu_hash) {
|
||||
|
||||
ASSERT_TRUE(fn == dlinfo.dli_saddr);
|
||||
ASSERT_STREQ("getRandomNumber", dlinfo.dli_sname);
|
||||
ASSERT_STREQ("libgnu-hash-table-library.so", dlinfo.dli_fname);
|
||||
ASSERT_SUBSTR("libgnu-hash-table-library.so", dlinfo.dli_fname);
|
||||
#else
|
||||
GTEST_LOG_(INFO) << "This test does nothing for mips/mips64; mips toolchain does not support '--hash-style=gnu'\n";
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(dlfcn, dlopen_library_with_only_sysv_hash) {
|
||||
void* handle = dlopen("libsysv-hash-table-library.so", RTLD_NOW);
|
||||
ASSERT_TRUE(handle != nullptr) << dlerror();
|
||||
auto guard = make_scope_guard([&]() {
|
||||
dlclose(handle);
|
||||
});
|
||||
void* sym = dlsym(handle, "getRandomNumber");
|
||||
ASSERT_TRUE(sym != nullptr) << dlerror();
|
||||
int (*fn)(void);
|
||||
fn = reinterpret_cast<int (*)(void)>(sym);
|
||||
EXPECT_EQ(4, fn());
|
||||
|
||||
Dl_info dlinfo;
|
||||
ASSERT_TRUE(0 != dladdr(reinterpret_cast<void*>(fn), &dlinfo));
|
||||
|
||||
ASSERT_TRUE(fn == dlinfo.dli_saddr);
|
||||
ASSERT_STREQ("getRandomNumber", dlinfo.dli_sname);
|
||||
ASSERT_SUBSTR("libsysv-hash-table-library.so", dlinfo.dli_fname);
|
||||
}
|
||||
|
||||
TEST(dlfcn, dlopen_bad_flags) {
|
||||
dlerror(); // Clear any pending errors.
|
||||
void* handle;
|
||||
|
@ -28,7 +28,7 @@ common_additional_dependencies := \
|
||||
$(TEST_PATH)/Android.build.mk
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Library used by dlfcn tests.
|
||||
# Library to test gnu-styled hash
|
||||
# -----------------------------------------------------------------------------
|
||||
ifneq ($(TARGET_ARCH),$(filter $(TARGET_ARCH),mips mips64))
|
||||
libgnu-hash-table-library_src_files := \
|
||||
@ -42,6 +42,19 @@ module_tag := optional
|
||||
include $(LOCAL_PATH)/Android.build.testlib.mk
|
||||
endif
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Library to test sysv-styled hash
|
||||
# -----------------------------------------------------------------------------
|
||||
libsysv-hash-table-library_src_files := \
|
||||
dlext_test_library.cpp \
|
||||
|
||||
libsysv-hash-table-library_ldflags := \
|
||||
-Wl,--hash-style=sysv \
|
||||
|
||||
module := libsysv-hash-table-library
|
||||
module_tag := optional
|
||||
include $(LOCAL_PATH)/Android.build.testlib.mk
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Library used by dlext tests - with GNU RELRO program header
|
||||
# -----------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user