selftests/timens: Fix gettime_perf to work on powerpc
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Wed, 31 Mar 2021 13:59:17 +0000 (13:59 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 21 Apr 2021 12:52:32 +0000 (22:52 +1000)
On powerpc:
- VDSO library is named linux-vdso32.so.1 or linux-vdso64.so.1
- clock_gettime is named __kernel_clock_gettime()

Ensure gettime_perf tries these names before giving up.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/469f37ab91984309eb68c0fb47e8438cdf5b6463.1617198956.git.christophe.leroy@csgroup.eu
tools/testing/selftests/timens/gettime_perf.c

index 7bf841a..6b13dc2 100644 (file)
@@ -25,6 +25,12 @@ static void fill_function_pointers(void)
        if (!vdso)
                vdso = dlopen("linux-gate.so.1",
                              RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
+       if (!vdso)
+               vdso = dlopen("linux-vdso32.so.1",
+                             RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
+       if (!vdso)
+               vdso = dlopen("linux-vdso64.so.1",
+                             RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
        if (!vdso) {
                pr_err("[WARN]\tfailed to find vDSO\n");
                return;
@@ -32,6 +38,8 @@ static void fill_function_pointers(void)
 
        vdso_clock_gettime = (vgettime_t)dlsym(vdso, "__vdso_clock_gettime");
        if (!vdso_clock_gettime)
+               vdso_clock_gettime = (vgettime_t)dlsym(vdso, "__kernel_clock_gettime");
+       if (!vdso_clock_gettime)
                pr_err("Warning: failed to find clock_gettime in vDSO\n");
 
 }