diff options
author | Michael Jeanson <mjeanson@efficios.com> | 2024-07-10 15:48:49 -0400 |
---|---|---|
committer | Michael Jeanson <mjeanson@efficios.com> | 2025-01-10 20:20:27 +0000 |
commit | 93d0bfbe8ffa9c3dcbfc8e953216542f500dac07 (patch) | |
tree | e7e47bb8b3f6202e13f0a32f71c375ba1e4e9dcd /sysdeps/unix/sysv/linux/dl-parse_auxv.h | |
parent | 494d65129ed5ae1154b75cc189bbdde5e9ecf1df (diff) | |
download | glibc-93d0bfbe8ffa9c3dcbfc8e953216542f500dac07.zip glibc-93d0bfbe8ffa9c3dcbfc8e953216542f500dac07.tar.gz glibc-93d0bfbe8ffa9c3dcbfc8e953216542f500dac07.tar.bz2 |
nptl: Move the rseq area to the 'extra TLS' block
Move the rseq area to the newly added 'extra TLS' block, this is the
last step in adding support for the rseq extended ABI. The size of the
rseq area is now dynamic and depends on the rseq features reported by
the kernel through the elf auxiliary vector. This will allow
applications to use rseq features past the 32 bytes of the original rseq
ABI as they become available in future kernels.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Reviewed-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'sysdeps/unix/sysv/linux/dl-parse_auxv.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/dl-parse_auxv.h | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/sysdeps/unix/sysv/linux/dl-parse_auxv.h b/sysdeps/unix/sysv/linux/dl-parse_auxv.h index 2d42437..41250c9 100644 --- a/sysdeps/unix/sysv/linux/dl-parse_auxv.h +++ b/sysdeps/unix/sysv/linux/dl-parse_auxv.h @@ -61,15 +61,9 @@ void _dl_parse_auxv (ElfW(auxv_t) *av, dl_parse_auxv_t auxv_values) #endif /* Get the rseq feature size, with a minimum of RSEQ_AREA_SIZE_INITIAL_USED - (20) for kernels that don't have AT_RSEQ_FEATURE_SIZE. Limit the feature - size to RSEQ_AREA_SIZE_MAX_USED (28) which fits the rseq area in 'struct - pthread' and represents the maximum feature size of currently released - kernels. Since no kernels currently cross the 32 bytes of the original - ABI, the semantics of a feature size of 32 or more are still undetermined. - */ - _rseq_size = MIN (MAX (auxv_values[AT_RSEQ_FEATURE_SIZE], - RSEQ_AREA_SIZE_INITIAL_USED), - RSEQ_AREA_SIZE_MAX_USED); + (20) for kernels that don't have AT_RSEQ_FEATURE_SIZE. */ + _rseq_size = MAX (auxv_values[AT_RSEQ_FEATURE_SIZE], + RSEQ_AREA_SIZE_INITIAL_USED); _rseq_align = MAX (auxv_values[AT_RSEQ_ALIGN], RSEQ_MIN_ALIGN); DL_PLATFORM_AUXV |