1 #include <android/api-level.h>
2 #include <dlfcn.h>
3
4 #include <minitest/minitest.h>
5
6 #if __ANDROID_API__ >= 8
7 Dl_info info;
8 extern "C" int my_dladdr(const void* addr, Dl_info *info);
9 #else
10 void *info;
11 extern "C" int my_dladdr(const void* addr, void **info);
12 #endif
13
TEST(libdl,my_dladdr)14 TEST(libdl, my_dladdr) {
15 void *h, *libdl = dlopen("libc.so", RTLD_NOW);
16 EXPECT_NE(0, libdl);
17 h = dlsym(libdl, "printf");
18 EXPECT_NE(0, h);
19 int r = my_dladdr((char*)h+1, &info);
20 #if __ANDROID_API__ >= 8
21 EXPECT_NE(0, r);
22 EXPECT_EQ(h, info.dli_saddr);
23 EXPECT_EQ(0, strcmp("libc.so", info.dli_fname));
24 #else
25 EXPECT_EQ(0, r);
26 #endif
27 }
28