]> git.feebdaed.xyz Git - 0xmirror/glibc.git/commit
Use 64-bit atomic on sem_t with 8-byte alignment [BZ #33632]
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 16 Nov 2025 02:28:36 +0000 (10:28 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 1 Dec 2025 22:50:49 +0000 (06:50 +0800)
commit3dd2cbfa35e0e6e0345633079bd5a83bb822c2d8
tree2a30bec19da3c19c084d1445130cb6b435b962d8
parentd605dea0a4a7cf7b5548fc7cc02b005dd42855db
Use 64-bit atomic on sem_t with 8-byte alignment [BZ #33632]

commit 7fec8a5de6826ef9ae440238d698f0fe5a5fb372
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Nov 13 14:26:08 2025 -0300

    Revert __HAVE_64B_ATOMICS configure check

uses 64-bit atomic operations on sem_t if 64-bit atomics are supported.
But sem_t may be aligned to 32-bit on 32-bit architectures.

1. Add a macro, SEM_T_ALIGN, for sem_t alignment.
2. Add a macro, HAVE_UNALIGNED_64B_ATOMICS.  Define it if unaligned 64-bit
atomic operations are supported.
3. Add a macro, USE_64B_ATOMICS_ON_SEM_T.  Define to 1 if 64-bit atomic
operations are supported and SEM_T_ALIGN is at least 8-byte aligned or
HAVE_UNALIGNED_64B_ATOMICS is defined.
4. Assert that size and alignment of sem_t are not lower than those of
the internal struct new_sem.
5. Check USE_64B_ATOMICS_ON_SEM_T, instead of USE_64B_ATOMICS, when using
64-bit atomic operations on sem_t.

This fixes BZ #33632.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
18 files changed:
config.h.in
csu/Makefile
csu/sem_t-align.sym [new file with mode: 0644]
htl/pt-internal.h
nptl/sem_getvalue.c
nptl/sem_init.c
nptl/sem_post.c
nptl/sem_waitcommon.c
nptl/semaphoreP.h
nptl/tst-sem11.c
nptl/tst-sem13.c
sysdeps/generic/atomic-sem_t.h [new file with mode: 0644]
sysdeps/htl/sem-destroy.c
sysdeps/htl/sem-getvalue.c
sysdeps/htl/sem-post.c
sysdeps/htl/sem-timedwait.c
sysdeps/htl/sem-waitfast.c
sysdeps/nptl/internaltypes.h