aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2023-04-20 15:06:48 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-04-20 15:06:48 +0000
commite393d48bc73e3de9eff3cdb234909de33f318634 (patch)
tree26f21a74effb87d157a1557d9d396ade2df837fa
parent182cebf61274f9f563bf510869203febf7da7444 (diff)
parent0cf311c53b6fe7249d71d067787ad58056a49700 (diff)
downloadbionic-e393d48bc73e3de9eff3cdb234909de33f318634.tar.gz
Merge "Clarify dlfcn.dladdr_libc slightly."
-rw-r--r--tests/dlfcn_test.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index 0c71b2ab7..b68ee7b51 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -987,24 +987,25 @@ TEST(dlfcn, dladdr_libc) {
#endif
Dl_info info;
- void* addr = reinterpret_cast<void*>(puts); // well-known libc function
+ void* addr = reinterpret_cast<void*>(puts); // An arbitrary libc function.
ASSERT_TRUE(dladdr(addr, &info) != 0);
- char libc_realpath[PATH_MAX];
-
// Check if libc is in canonical path or in alternate path.
+ const char* expected_path;
if (strncmp(ALTERNATE_PATH_TO_SYSTEM_LIB,
info.dli_fname,
sizeof(ALTERNATE_PATH_TO_SYSTEM_LIB) - 1) == 0) {
// Platform with emulated architecture. Symlink on ARC++.
- ASSERT_TRUE(realpath(ALTERNATE_PATH_TO_LIBC, libc_realpath) == libc_realpath);
+ expected_path = ALTERNATE_PATH_TO_LIBC;
} else if (strncmp(PATH_TO_BOOTSTRAP_LIBC, info.dli_fname,
sizeof(PATH_TO_BOOTSTRAP_LIBC) - 1) == 0) {
- ASSERT_TRUE(realpath(PATH_TO_BOOTSTRAP_LIBC, libc_realpath) == libc_realpath);
+ expected_path = PATH_TO_BOOTSTRAP_LIBC;
} else {
// /system/lib is symlink when this test is executed on host.
- ASSERT_TRUE(realpath(PATH_TO_LIBC, libc_realpath) == libc_realpath);
+ expected_path = PATH_TO_LIBC;
}
+ char libc_realpath[PATH_MAX];
+ ASSERT_TRUE(realpath(expected_path, libc_realpath) != nullptr) << strerror(errno);
ASSERT_STREQ(libc_realpath, info.dli_fname);
// TODO: add check for dfi_fbase