5f265ff1c6
* Wed Jun 8 2022 Florian Weimer <fweimer@redhat.com> - 2.34-37 - Enable rseq by default and add GLIBC_2.35 rseq symbols (#2085529) * Wed Jun 8 2022 Florian Weimer <fweimer@redhat.com> - 2.34-36 - Sync with upstream branch release/2.34/master, commit 4c92a1041257c0155c6aa7a182fe5f78e477b0e6: - powerpc: Fix VSX register number on __strncpy_power9 [BZ #29197] - socket: Fix mistyped define statement in socket/sys/socket.h (BZ #29225) - iconv: Use 64 bit stat for gconv_parseconfdir (BZ# 29213) - catgets: Use 64 bit stat for __open_catalog (BZ# 29211) - inet: Use 64 bit stat for ruserpass (BZ# 29210) - socket: Use 64 bit stat for isfdtype (BZ# 29209) - posix: Use 64 bit stat for fpathconf (_PC_ASYNC_IO) (BZ# 29208) - posix: Use 64 bit stat for posix_fallocate fallback (BZ# 29207) - misc: Use 64 bit stat for getusershell (BZ# 29204) - misc: Use 64 bit stat for daemon (BZ# 29203) Resolves: #2085529 Resolves: #2091549 Related: #2091541
60 lines
2.2 KiB
Diff
60 lines
2.2 KiB
Diff
commit 4b527650e0d559a5f693275c598667e06cd6455c
|
|
Author: Florian Weimer <fweimer@redhat.com>
|
|
Date: Thu Jun 2 16:29:55 2022 +0200
|
|
|
|
Linux: Adjust struct rseq definition to current kernel version
|
|
|
|
This definition is only used as a fallback with old kernel headers.
|
|
The change follows kernel commit bfdf4e6208051ed7165b2e92035b4bf11
|
|
("rseq: Remove broken uapi field layout on 32-bit little endian").
|
|
|
|
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
|
|
|
diff --git a/sysdeps/unix/sysv/linux/sys/rseq.h b/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
index 791ed83176b61fe4..56550329db962cc8 100644
|
|
--- a/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
+++ b/sysdeps/unix/sysv/linux/sys/rseq.h
|
|
@@ -24,7 +24,6 @@
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <sys/cdefs.h>
|
|
-#include <bits/endian.h>
|
|
|
|
#ifdef __has_include
|
|
# if __has_include ("linux/rseq.h")
|
|
@@ -129,28 +128,13 @@ struct rseq
|
|
targeted by the rseq_cs. Also needs to be set to NULL by user-space
|
|
before reclaiming memory that contains the targeted struct rseq_cs.
|
|
|
|
- Read and set by the kernel. Set by user-space with single-copy
|
|
- atomicity semantics. This field should only be updated by the
|
|
- thread which registered this data structure. Aligned on 64-bit. */
|
|
- union
|
|
- {
|
|
- uint64_t ptr64;
|
|
-# ifdef __LP64__
|
|
- uint64_t ptr;
|
|
-# else /* __LP64__ */
|
|
- struct
|
|
- {
|
|
-#if __BYTE_ORDER == __BIG_ENDIAN
|
|
- uint32_t padding; /* Initialized to zero. */
|
|
- uint32_t ptr32;
|
|
-# else /* LITTLE */
|
|
- uint32_t ptr32;
|
|
- uint32_t padding; /* Initialized to zero. */
|
|
-# endif /* ENDIAN */
|
|
- } ptr;
|
|
-# endif /* __LP64__ */
|
|
- } rseq_cs;
|
|
+ Read and set by the kernel. Set by user-space with single-copy
|
|
+ atomicity semantics. This field should only be updated by the
|
|
+ thread which registered this data structure. Aligned on 64-bit.
|
|
|
|
+ 32-bit architectures should update the low order bits of the
|
|
+ rseq_cs field, leaving the high order bits initialized to 0. */
|
|
+ uint64_t rseq_cs;
|
|
/* Restartable sequences flags field.
|
|
|
|
This field should only be updated by the thread which
|