[PATCH] selftests: proc: mark vsyscall strings maybe-unused

Bala-Vignesh-Reddy posted 1 patch 1 month, 2 weeks ago
tools/testing/selftests/proc/proc-pid-vm.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
[PATCH] selftests: proc: mark vsyscall strings maybe-unused
Posted by Bala-Vignesh-Reddy 1 month, 2 weeks ago
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__
-- 
2.43.0

Re: [PATCH] selftests: proc: mark vsyscall strings maybe-unused
Posted by Andrew Morton 1 month, 2 weeks ago
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.
Re: [PATCH] selftests: proc: mark vsyscall strings maybe-unused
Posted by Bala-Vignesh-Reddy 1 month, 1 week ago
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@gmail.com/

Will also look into build system, to tackle including kselftest.h everywhere

Thanks,
Bala Vignesh