[<prev] [next>] [day] [month] [year] [list]
Message-ID: <948937bfe461cf0fb6ade2623e51f673f845fa51.1768298756.git.chleroy@kernel.org>
Date: Tue, 13 Jan 2026 11:08:14 +0100
From: "Christophe Leroy (CS GROUP)" <chleroy@...nel.org>
To: Kees Cook <kees@...nel.org>,
Andy Lutomirski <luto@...capital.net>,
Will Drewry <wad@...omium.org>,
Shuah Khan <shuah@...nel.org>,
"Dmitry V. Levin" <ldv@...ace.io>
Cc: "Christophe Leroy (CS GROUP)" <chleroy@...nel.org>,
linux-kselftest@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: [PATCH] selftests: harness: fix again 32-bit build warnings in __EXPECT()
/home/chleroy/linux-powerpc/tools/testing/selftests/../../../tools/testing/selftests/kselftest_harness.h:770:49: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
770 | uintmax_t __exp_print = (uintmax_t)__exp; \
| ^
/home/chleroy/linux-powerpc/tools/testing/selftests/../../../tools/testing/selftests/kselftest_harness.h:530:9: note: in expansion of macro '__EXPECT'
530 | __EXPECT(expected, #expected, seen, #seen, !=, 1)
| ^~~~~~~~
test-pcmtest-driver.c:137:9: note: in expansion of macro 'ASSERT_NE'
137 | ASSERT_NE(card_name, NULL);
| ^~~~~~~~~
/home/chleroy/linux-powerpc/tools/testing/selftests/../../../tools/testing/selftests/kselftest_harness.h:771:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
771 | uintmax_t __seen_print = (uintmax_t)__seen; \
| ^
/home/chleroy/linux-powerpc/tools/testing/selftests/../../../tools/testing/selftests/kselftest_harness.h:530:9: note: in expansion of macro '__EXPECT'
530 | __EXPECT(expected, #expected, seen, #seen, !=, 1)
| ^~~~~~~~
test-pcmtest-driver.c:137:9: note: in expansion of macro 'ASSERT_NE'
137 | ASSERT_NE(card_name, NULL);
| ^~~~~~~~~
...
Those warnings were fixed by commit b5bb6d3068ea ("selftests/seccomp:
fix 32-bit build warnings") but then reintroduced by
commit 02bc220dc6dc ("selftests: harness: fix printing of mismatch
values in __EXPECT()")
Fix them for good this time, without re-introducing the printing
mismatch.
Fixes: 02bc220dc6dc ("selftests: harness: fix printing of mismatch values in __EXPECT()")
Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@...nel.org>
---
tools/testing/selftests/kselftest_harness.h | 37 ++++++++++++---------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h
index 16a119a4656c7..80a81f96fd5bf 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -759,6 +759,11 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
#define is_signed_var(var) (!!(((__typeof__(var))(-1)) < (__typeof__(var))1))
+#define __ulong_type(x) \
+ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0UL), 0ULL, 0UL))
+#define __long_type(x) \
+ __typeof__(__builtin_choose_expr(sizeof(x) > sizeof(0L), 0LL, 0L))
+
#define __EXPECT(_expected, _expected_str, _seen, _seen_str, _t, _assert) do { \
/* Avoid multiple evaluation of the cases */ \
__typeof__(_expected) __exp = (_expected); \
@@ -767,35 +772,35 @@ static inline void __kselftest_memset_safe(void *s, int c, size_t n)
/* Report with actual signedness to avoid weird output. */ \
switch (is_signed_var(__exp) * 2 + is_signed_var(__seen)) { \
case 0: { \
- uintmax_t __exp_print = (uintmax_t)__exp; \
- uintmax_t __seen_print = (uintmax_t)__seen; \
+ __ulong_type(__exp) __exp_print = (__ulong_type(__exp))__exp; \
+ __ulong_type(__seen) __seen_print = (__ulong_type(__seen))__seen; \
__TH_LOG("Expected %s (%ju) %s %s (%ju)", \
- _expected_str, __exp_print, #_t, \
- _seen_str, __seen_print); \
+ _expected_str, (uintmax_t)__exp_print, #_t, \
+ _seen_str, (uintmax_t)__seen_print); \
break; \
} \
case 1: { \
- uintmax_t __exp_print = (uintmax_t)__exp; \
- intmax_t __seen_print = (intmax_t)__seen; \
+ __ulong_type(__exp) __exp_print = (__ulong_type(__exp))__exp; \
+ __long_type(__seen) __seen_print = (__long_type(__seen))__seen; \
__TH_LOG("Expected %s (%ju) %s %s (%jd)", \
- _expected_str, __exp_print, #_t, \
- _seen_str, __seen_print); \
+ _expected_str, (uintmax_t)__exp_print, #_t, \
+ _seen_str, (intmax_t)__seen_print); \
break; \
} \
case 2: { \
- intmax_t __exp_print = (intmax_t)__exp; \
- uintmax_t __seen_print = (uintmax_t)__seen; \
+ __long_type(__exp) __exp_print = (__long_type(__exp))__exp; \
+ __ulong_type(__seen) __seen_print = (__ulong_type(__seen))__seen; \
__TH_LOG("Expected %s (%jd) %s %s (%ju)", \
- _expected_str, __exp_print, #_t, \
- _seen_str, __seen_print); \
+ _expected_str, (intmax_t)__exp_print, #_t, \
+ _seen_str, (uintmax_t)__seen_print); \
break; \
} \
case 3: { \
- intmax_t __exp_print = (intmax_t)__exp; \
- intmax_t __seen_print = (intmax_t)__seen; \
+ __long_type(__exp) __exp_print = (__long_type(__exp))__exp; \
+ __long_type(__seen) __seen_print = (__long_type(__seen))__seen; \
__TH_LOG("Expected %s (%jd) %s %s (%jd)", \
- _expected_str, __exp_print, #_t, \
- _seen_str, __seen_print); \
+ _expected_str, (intmax_t)__exp_print, #_t, \
+ _seen_str, (intmax_t)__seen_print); \
break; \
} \
} \
--
2.49.0
Powered by blists - more mailing lists