selftests/timens: Fix gettime_perf to work on powerpc

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
This commit is contained in:
Christophe Leroy 2021-03-31 13:59:17 +00:00 committed by Michael Ellerman
parent 92d9d61be5
commit f56607e85e

View file

@ -25,12 +25,20 @@ static void fill_function_pointers(void)
if (!vdso) if (!vdso)
vdso = dlopen("linux-gate.so.1", vdso = dlopen("linux-gate.so.1",
RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD); 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) { if (!vdso) {
pr_err("[WARN]\tfailed to find vDSO\n"); pr_err("[WARN]\tfailed to find vDSO\n");
return; return;
} }
vdso_clock_gettime = (vgettime_t)dlsym(vdso, "__vdso_clock_gettime"); 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) if (!vdso_clock_gettime)
pr_err("Warning: failed to find clock_gettime in vDSO\n"); pr_err("Warning: failed to find clock_gettime in vDSO\n");