mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-15 05:20:05 +00:00
cba595c350
On x86, padding in struct __jmp_buf_tag is used for shadow stack pointer to support Shadow Stack in Intel Control-flow Enforcemen Technology. cancel_jmp_buf has been updated to include saved_mask so that it is as large as struct __jmp_buf_tag. We must suport the old cancel_jmp_buf in existing binaries. Since symbol versioning doesn't work on cancel_jmp_buf, feature_1 is added to tcbhead_t so that setjmp and longjmp can check if shadow stack is enabled. NB: Shadow stack is enabled only if all modules are shadow stack enabled. [BZ #22563] * sysdeps/i386/nptl/tcb-offsets.sym (FEATURE_1_OFFSET): New. * sysdeps/i386/nptl/tls.h (tcbhead_t): Add feature_1. * sysdeps/x86_64/nptl/tcb-offsets.sym (FEATURE_1_OFFSET): New. * sysdeps/x86_64/nptl/tls.h (tcbhead_t): Rename __glibc_unused1 to feature_1.
19 lines
727 B
Plaintext
19 lines
727 B
Plaintext
#include <sysdep.h>
|
|
#include <tls.h>
|
|
#include <kernel-features.h>
|
|
|
|
RESULT offsetof (struct pthread, result)
|
|
TID offsetof (struct pthread, tid)
|
|
CANCELHANDLING offsetof (struct pthread, cancelhandling)
|
|
CLEANUP_JMP_BUF offsetof (struct pthread, cleanup_jmp_buf)
|
|
MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads)
|
|
SYSINFO_OFFSET offsetof (tcbhead_t, sysinfo)
|
|
CLEANUP offsetof (struct pthread, cleanup)
|
|
CLEANUP_PREV offsetof (struct _pthread_cleanup_buffer, __prev)
|
|
MUTEX_FUTEX offsetof (pthread_mutex_t, __data.__lock)
|
|
POINTER_GUARD offsetof (tcbhead_t, pointer_guard)
|
|
#ifndef __ASSUME_PRIVATE_FUTEX
|
|
PRIVATE_FUTEX offsetof (tcbhead_t, private_futex)
|
|
#endif
|
|
FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1)
|