From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753889AbdJaV3E (ORCPT ); Tue, 31 Oct 2017 17:29:04 -0400 Received: from mail-io0-f194.google.com ([209.85.223.194]:48217 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753853AbdJaV3D (ORCPT ); Tue, 31 Oct 2017 17:29:03 -0400 X-Google-Smtp-Source: ABhQp+T/mSf7lFbL0/rTyPMvYKkaFlY28C8USbTahyodHF9Vlj0wtKUPDuYWpqZm5SA93CKR8PUrYg== From: Greg Hackmann To: Shuah Khan Cc: Steve Muckle , linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Hackmann Subject: [PATCH] selftests: vdso_test: support ARM64 targets Date: Tue, 31 Oct 2017 14:28:46 -0700 Message-Id: <20171031212846.17301-1-ghackmann@google.com> X-Mailer: git-send-email 2.15.0.403.gc27cc4dac6-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ARM64's vDSO exports its gettimeofday() implementation with a different name (__kernel_gettimeofday) and version (LINUX_2.6.39) from other architectures. Add a corresponding special-case to vdso_test. Signed-off-by: Greg Hackmann --- tools/testing/selftests/vDSO/vdso_test.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/vDSO/vdso_test.c b/tools/testing/selftests/vDSO/vdso_test.c index 8daeb7d7032c..f0f8cc59c195 100644 --- a/tools/testing/selftests/vDSO/vdso_test.c +++ b/tools/testing/selftests/vDSO/vdso_test.c @@ -21,6 +21,17 @@ extern void vdso_init_from_auxv(void *auxv); int main(int argc, char **argv) { + const char *version; + const char *name; + +#if defined(__aarch64__) + version = "LINUX_2.6.39"; + name = "__kernel_gettimeofday"; +#else + version = "LINUX_2.6"; + name = "__vdso_gettimeofday"; +#endif + unsigned long sysinfo_ehdr = getauxval(AT_SYSINFO_EHDR); if (!sysinfo_ehdr) { printf("AT_SYSINFO_EHDR is not present!\n"); @@ -31,10 +42,10 @@ int main(int argc, char **argv) /* Find gettimeofday. */ typedef long (*gtod_t)(struct timeval *tv, struct timezone *tz); - gtod_t gtod = (gtod_t)vdso_sym("LINUX_2.6", "__vdso_gettimeofday"); + gtod_t gtod = (gtod_t)vdso_sym(version, name); if (!gtod) { - printf("Could not find __vdso_gettimeofday\n"); + printf("Could not find %s\n", name); return 1; } @@ -45,7 +56,7 @@ int main(int argc, char **argv) printf("The time is %lld.%06lld\n", (long long)tv.tv_sec, (long long)tv.tv_usec); } else { - printf("__vdso_gettimeofday failed\n"); + printf("%s failed\n", name); } return 0; -- 2.15.0.403.gc27cc4dac6-goog