x86: Add feature_1 to tcbhead_t [BZ #22563]
commitcba595c350e52194e10c0006732e1991e3d0803b
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 19 Dec 2017 10:45:16 +0000 (19 02:45 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 19 Dec 2017 10:45:34 +0000 (19 02:45 -0800)
tree833da57e0eae667c21ce447aa9502a64e3c05527
parentf81ddabffd76ac9dd600b02adbf3e1dac4bb10ec
x86: Add feature_1 to tcbhead_t [BZ #22563]

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.
ChangeLog
sysdeps/i386/nptl/tcb-offsets.sym
sysdeps/i386/nptl/tls.h
sysdeps/x86_64/nptl/tcb-offsets.sym
sysdeps/x86_64/nptl/tls.h