[tip: locking/futex] selftests/rseq: Replace glibc-specific __GNUC_PREREQ with portable check

From: tip-bot2 for Hisam Mehboob

Date: Thu Jul 02 2026 - 18:20:02 EST


The following commit has been merged into the locking/futex branch of tip:

Commit-ID: d7b2769f8dba3e5f40d2a8a11988812d51160b17
Gitweb: https://git.kernel.org/tip/d7b2769f8dba3e5f40d2a8a11988812d51160b17
Author: Hisam Mehboob <hisamshar@xxxxxxxxx>
AuthorDate: Fri, 19 Jun 2026 00:37:25 +05:00
Committer: Thomas Gleixner <tglx@xxxxxxxxxx>
CommitterDate: Fri, 03 Jul 2026 00:15:01 +02:00

selftests/rseq: Replace glibc-specific __GNUC_PREREQ with portable check

Building the rseq selftests against musl libc fails because musl's
<features.h> does not provide the glibc-specific __GNUC_PREREQ macro:

error: missing binary operator before token '('

Replace __GNUC_PREREQ(11, 1) with an equivalent check using __GNUC__
and __GNUC_MINOR__ directly. This pattern is portable across all C
library implementations and is already used elsewhere in the tools/
tree (e.g., tools/include/linux/string.h).

This also allows removing the #include <features.h>, which was only
needed for __GNUC_PREREQ.

Fixes: 886ddfba933f ("selftests/rseq: Introduce thread pointer getters")
Signed-off-by: Hisam Mehboob <hisamshar@xxxxxxxxx>
Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxx>
Link: https://patch.msgid.link/20260618193724.589113-2-hisamshar@xxxxxxxxx
---
tools/testing/selftests/rseq/rseq-x86-thread-pointer.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/tools/testing/selftests/rseq/rseq-x86-thread-pointer.h b/tools/testing/selftests/rseq/rseq-x86-thread-pointer.h
index d313358..5a29d6b 100644
--- a/tools/testing/selftests/rseq/rseq-x86-thread-pointer.h
+++ b/tools/testing/selftests/rseq/rseq-x86-thread-pointer.h
@@ -8,13 +8,11 @@
#ifndef _RSEQ_X86_THREAD_POINTER
#define _RSEQ_X86_THREAD_POINTER

-#include <features.h>
-
#ifdef __cplusplus
extern "C" {
#endif

-#if __GNUC_PREREQ (11, 1)
+#if __GNUC__ > 11 || (__GNUC__ == 11 && __GNUC_MINOR__ >= 1)
static inline void *rseq_thread_pointer(void)
{
return __builtin_thread_pointer();