The str_vsyscall_* constants in proc-pid-vm.c triggers -Wunused-const-variable warnings with gcc-13.32 and clang 18.1.
Define and apply __maybe_unused locally to suppress the warnings. No functional change
Fixes compiler warning: warning: ‘str_vsyscall_*’ defined but not used[-Wunused-const-variable]
Signed-off-by: Bala-Vignesh-Reddy reddybalavignesh9979@gmail.com --- tools/testing/selftests/proc/proc-pid-vm.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/proc/proc-pid-vm.c b/tools/testing/selftests/proc/proc-pid-vm.c index d04685771952..978cbcb3eb11 100644 --- a/tools/testing/selftests/proc/proc-pid-vm.c +++ b/tools/testing/selftests/proc/proc-pid-vm.c @@ -47,6 +47,10 @@ #include <sys/resource.h> #include <linux/fs.h>
+#ifndef __maybe_unused +#define __maybe_unused __attribute__((__unused__)) +#endif + #include "../kselftest.h"
static inline long sys_execveat(int dirfd, const char *pathname, char **argv, char **envp, int flags) @@ -218,12 +222,12 @@ static int make_exe(const uint8_t *payload, size_t len) * 2: vsyscall VMA is r-xp vsyscall=emulate */ static volatile int g_vsyscall; -static const char *str_vsyscall; +static const char *str_vsyscall __maybe_unused;
-static const char str_vsyscall_0[] = ""; -static const char str_vsyscall_1[] = +static const char str_vsyscall_0[] __maybe_unused = ""; +static const char str_vsyscall_1[] __maybe_unused = "ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall]\n"; -static const char str_vsyscall_2[] = +static const char str_vsyscall_2[] __maybe_unused = "ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]\n";
#ifdef __x86_64__
On Wed, 20 Aug 2025 23:26:10 +0530 Bala-Vignesh-Reddy reddybalavignesh9979@gmail.com wrote:
The str_vsyscall_* constants in proc-pid-vm.c triggers -Wunused-const-variable warnings with gcc-13.32 and clang 18.1.
OT but lol. My head is spinning at the term "const-variable". I understand what they mean, but it's oxymoronic.
Define and apply __maybe_unused locally to suppress the warnings. No functional change
Fixes compiler warning: warning: ‘str_vsyscall_*’ defined but not used[-Wunused-const-variable]
...
--- a/tools/testing/selftests/proc/proc-pid-vm.c +++ b/tools/testing/selftests/proc/proc-pid-vm.c @@ -47,6 +47,10 @@ #include <sys/resource.h> #include <linux/fs.h> +#ifndef __maybe_unused +#define __maybe_unused __attribute__((__unused__)) +#endif
This would be approximately the seventh definition of __maybe_unused under tools/testing/selftests. And there's another in tools/testing/memblock, which, as if admitting that its directory is in the wrong place, had to go and include ../selftests/kselftest.h.
So it would be pleasing if some kind soul were to define __maybe_unused in a common place, which looks to be tools/testing/selftests/kselftest.h. Then go zap all those private definitions.
This could be done either before or after your patch.
#include "../kselftest.h"
And we have 350 occurrences of "../kselftest.h". Shouldn't the build system be providing -Itools/testing/selftests?
Anyway, patch looks OK - I'll add it to mm.git, thanks.
Hi Andrew,
Thanks for your feedback, I didn't notice that __maybe_unused is defined repeatedly in selftests directory.
Following your suggestions, I've submitted a cleanup patch that centralise the __maybe_unused definition in tools/testing/selftests/kselftest.h and removed the redundant copies across the selftests subdirectories. I've tested it with gcc and clang, and it builds cleanly.
Patch Link: https://lore.kernel.org/lkml/20250821101159.2238-1-reddybalavignesh9979@gmai...
Will also look into build system, to tackle including kselftest.h everywhere
Thanks, Bala Vignesh
linux-kselftest-mirror@lists.linaro.org