[PATCH] tst-clone3[-internal].c: Add _Atomic to silence Clang
Sam James
sam@gentoo.org
Tue Dec 17 15:07:28 GMT 2024
"H.J. Lu" <hjl.tools@gmail.com> writes:
> Add _Atomic to futex_wait argument and ctid in tst-clone3[-internal].c to
> silence Clang error:
>
> ../sysdeps/unix/sysv/linux/tst-clone3-internal.c:93:3: error: address argument to atomic operation must be a pointer to _Atomic type ('pid_t *' (aka 'int *') invalid)
> 93 | wait_tid (&ctid, CTID_INIT_VAL);
> | ^ ~~~~~
> ../sysdeps/unix/sysv/linux/tst-clone3-internal.c:51:21: note: expanded from macro 'wait_tid'
> 51 | while ((__tid = atomic_load_explicit (ctid_ptr, \
> | ^ ~~~~~~~~
> /usr/bin/../lib/clang/19/include/stdatomic.h:145:30: note: expanded from macro 'atomic_load_explicit'
> 145 | #define atomic_load_explicit __c11_atomic_load
> | ^
>
> Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
OK
> ---
> sysdeps/unix/sysv/linux/tst-clone3-internal.c | 4 ++--
> sysdeps/unix/sysv/linux/tst-clone3.c | 4 ++--
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/sysdeps/unix/sysv/linux/tst-clone3-internal.c b/sysdeps/unix/sysv/linux/tst-clone3-internal.c
> index 2f0b20029e..387f673da7 100644
> --- a/sysdeps/unix/sysv/linux/tst-clone3-internal.c
> +++ b/sysdeps/unix/sysv/linux/tst-clone3-internal.c
> @@ -54,7 +54,7 @@ f (void *a)
> } while (0)
>
> static inline int
> -futex_wait (int *futexp, int val)
> +futex_wait (_Atomic int *futexp, int val)
> {
> #ifdef __NR_futex
> return syscall (__NR_futex, futexp, FUTEX_WAIT, val);
> @@ -75,7 +75,7 @@ do_test (void)
> /* Initialize with a known value. ctid is set to zero by the kernel after the
> cloned thread has exited. */
> #define CTID_INIT_VAL 1
> - pid_t ctid = CTID_INIT_VAL;
> + _Atomic pid_t ctid = CTID_INIT_VAL;
> pid_t tid;
>
> struct clone_args clone_args =
> diff --git a/sysdeps/unix/sysv/linux/tst-clone3.c b/sysdeps/unix/sysv/linux/tst-clone3.c
> index 77b8731c08..a32d649d6e 100644
> --- a/sysdeps/unix/sysv/linux/tst-clone3.c
> +++ b/sysdeps/unix/sysv/linux/tst-clone3.c
> @@ -54,7 +54,7 @@ f (void *a)
> } while (0)
>
> static inline int
> -futex_wait (int *futexp, int val)
> +futex_wait (_Atomic int *futexp, int val)
> {
> #ifdef __NR_futex
> return syscall (__NR_futex, futexp, FUTEX_WAIT, val);
> @@ -75,7 +75,7 @@ do_test (void)
> /* Initialize with a known value. ctid is set to zero by the kernel after the
> cloned thread has exited. */
> #define CTID_INIT_VAL 1
> - pid_t ctid = CTID_INIT_VAL;
> + _Atomic pid_t ctid = CTID_INIT_VAL;
> pid_t tid;
>
> #if _STACK_GROWS_DOWN
More information about the Libc-alpha
mailing list