From 36fcaa096ebc22ac40dd03cbcd45f8cbf4b65cde Mon Sep 17 00:00:00 2001
From: Anders Roxell <anders.roxell@linaro.org>
Date: Fri, 7 Nov 2025 13:54:33 +0100
Subject: [PATCH 2/5] selftests: vdso: Fix format strings for 32-bit time_t

Fix format string warnings in vdso_test_getrandom.c when building for
32-bit ARM. On 32-bit systems, tv_sec is __time64_t (long long int) not
long int, which causes type mismatches with %lu format specifiers.

Change all printf format specifiers from %lu to %lld and add explicit
(long long) casts for tv_sec and tv_nsec fields. This ensures correct
formatting on both 32-bit and 64-bit architectures without warnings.

Fixes warnings like:
- warning: format '%lu' expects argument of type 'long unsigned int',
- but argument has type '__time64_t' {aka 'long long int'}

Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
---
 tools/testing/selftests/vDSO/vdso_test_getrandom.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/vDSO/vdso_test_getrandom.c b/tools/testing/selftests/vDSO/vdso_test_getrandom.c
index ef402001e898..69f11c2d1647 100644
--- a/tools/testing/selftests/vDSO/vdso_test_getrandom.c
+++ b/tools/testing/selftests/vDSO/vdso_test_getrandom.c
@@ -181,19 +181,19 @@ static void bench_single(void)
 	test_vdso_getrandom(NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("   vdso: %u times in %lu.%09lu seconds\n", TRIALS, diff.tv_sec, diff.tv_nsec);
+	printf("   vdso: %u times in %lld.%09lld seconds\n", TRIALS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 
 	clock_gettime(CLOCK_MONOTONIC, &start);
 	test_libc_getrandom(NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("   libc: %u times in %lu.%09lu seconds\n", TRIALS, diff.tv_sec, diff.tv_nsec);
+	printf("   libc: %u times in %lld.%09lld seconds\n", TRIALS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 
 	clock_gettime(CLOCK_MONOTONIC, &start);
 	test_syscall_getrandom(NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("syscall: %u times in %lu.%09lu seconds\n", TRIALS, diff.tv_sec, diff.tv_nsec);
+	printf("syscall: %u times in %lld.%09lld seconds\n", TRIALS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 }
 
 static void bench_multi(void)
@@ -208,7 +208,7 @@ static void bench_multi(void)
 		pthread_join(threads[i], NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("   vdso: %u x %u times in %lu.%09lu seconds\n", TRIALS, THREADS, diff.tv_sec, diff.tv_nsec);
+	printf("   vdso: %u x %u times in %lld.%09lld seconds\n", TRIALS, THREADS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 
 	clock_gettime(CLOCK_MONOTONIC, &start);
 	for (size_t i = 0; i < THREADS; ++i)
@@ -217,7 +217,7 @@ static void bench_multi(void)
 		pthread_join(threads[i], NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("   libc: %u x %u times in %lu.%09lu seconds\n", TRIALS, THREADS, diff.tv_sec, diff.tv_nsec);
+	printf("   libc: %u x %u times in %lld.%09lld seconds\n", TRIALS, THREADS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 
 	clock_gettime(CLOCK_MONOTONIC, &start);
 	for (size_t i = 0; i < THREADS; ++i)
@@ -226,7 +226,7 @@ static void bench_multi(void)
 		pthread_join(threads[i], NULL);
 	clock_gettime(CLOCK_MONOTONIC, &end);
 	timespecsub(&end, &start, &diff);
-	printf("   syscall: %u x %u times in %lu.%09lu seconds\n", TRIALS, THREADS, diff.tv_sec, diff.tv_nsec);
+	printf("   syscall: %u x %u times in %lld.%09lld seconds\n", TRIALS, THREADS, (long long)diff.tv_sec, (long long)diff.tv_nsec);
 }
 
 static void fill(void)
-- 
2.51.0

