mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-31 23:11:09 +00:00
f81ddabffd
On x86, padding in struct __jmp_buf_tag is used for shadow stack pointer to support shadow stack in Intel Control-flow Enforcemen Technology. Since the cancel_jmp_buf array is passed to setjmp and longjmp by casting it to pointer to struct __jmp_buf_tag, it should be as large as struct __jmp_buf_tag. Otherwise when shadow stack is enabled, setjmp and longjmp will write and read beyond cancel_jmp_buf when saving and restoring shadow stack pointer. This patch adds bits/types/__cancel_jmp_buf_tag.h to define struct __cancel_jmp_buf_tag so that Linux/x86 can add saved_mask to cancel_jmp_buf. Tested natively on i386, x86_64 and x32. Tested hppa-linux-gnu with build-many-glibcs.py. [BZ #22563] * bits/types/__cancel_jmp_buf_tag.h: New file. * sysdeps/unix/sysv/linux/x86/bits/types/__cancel_jmp_buf_tag.h * sysdeps/unix/sysv/linux/x86/pthreaddef.h: Likewise. * sysdeps/unix/sysv/linux/x86/nptl/pthreadP.h: Likewise. * nptl/Makefile (headers): Add bits/types/__cancel_jmp_buf_tag.h. * nptl/descr.h [NEED_SAVED_MASK_IN_CANCEL_JMP_BUF] (pthread_unwind_buf): Add saved_mask to cancel_jmp_buf. * sysdeps/nptl/pthread.h: Include <bits/types/__cancel_jmp_buf_tag.h>. (__pthread_unwind_buf_t): Use struct __cancel_jmp_buf_tag with __cancel_jmp_buf. * sysdeps/unix/sysv/linux/hppa/pthread.h: Likewise. |
||
---|---|---|
.. | ||
bits | ||
sys | ||
____longjmp_chk.c | ||
arch-fork.h | ||
atomic-machine.h | ||
brk.c | ||
c++-types.data | ||
clone.S | ||
fxstat.c | ||
fxstatat.c | ||
getcontext.S | ||
getdents64.c | ||
Implies | ||
ipc_priv.h | ||
jmp_buf-macros.h | ||
kernel_sigaction.h | ||
kernel_stat.h | ||
kernel-features.h | ||
ld.abilist | ||
libanl.abilist | ||
libBrokenLocale.abilist | ||
libc.abilist | ||
libcrypt.abilist | ||
libdl.abilist | ||
libm.abilist | ||
libnsl.abilist | ||
libpthread.abilist | ||
libresolv.abilist | ||
librt.abilist | ||
libthread_db.abilist | ||
libutil.abilist | ||
localplt.data | ||
lxstat.c | ||
makecontext.c | ||
Makefile | ||
profil-counter.h | ||
pt-vfork.S | ||
pthread.h | ||
pthreadP.h | ||
setcontext.S | ||
shlib-versions | ||
swapcontext.c | ||
syscall.c | ||
syscalls.list | ||
sysdep.c | ||
sysdep.h | ||
ucontext_i.sym | ||
umount.c | ||
utimes.c | ||
Versions | ||
xstat.c |