mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-27 19:53:32 +08:00
d524fa6c35
Linkers group input note sections with the same name into one output note section with the same name. One output note section is placed in one PT_NOTE segment. Since new linkers merge input .note.gnu.property sections into one output .note.gnu.property section, there is only one NT_GNU_PROPERTY_TYPE_0 note in one PT_NOTE segment with new linkers. Since older linkers treat input .note.gnu.property section as a generic note section and just concatenate all input .note.gnu.property sections into one output .note.gnu.property section without merging them, we may see multiple NT_GNU_PROPERTY_TYPE_0 notes in one PT_NOTE segment with older linkers. When an older linker is used to created the program on CET-enabled OS, the linker output has a single .note.gnu.property section with multiple NT_GNU_PROPERTY_TYPE_0 notes, some of which have IBT and SHSTK enable bits set even if the program isn't CET enabled. Such programs will crash on CET-enabled machines. This patch updates the note parser: 1. Skip note parsing if a NT_GNU_PROPERTY_TYPE_0 note has been processed. 2. Check multiple NT_GNU_PROPERTY_TYPE_0 notes. [BZ #23509] * sysdeps/x86/dl-prop.h (_dl_process_cet_property_note): Skip note parsing if a NT_GNU_PROPERTY_TYPE_0 note has been processed. Update the l_cet field when processing NT_GNU_PROPERTY_TYPE_0 note. Check multiple NT_GNU_PROPERTY_TYPE_0 notes. * sysdeps/x86/link_map.h (l_cet): Expand to 3 bits, Add lc_unknown. |
||
---|---|---|
.. | ||
bits | ||
fpu | ||
nptl | ||
__longjmp_cancel.S | ||
cacheinfo.c | ||
cet-tunables.h | ||
check-cet.awk | ||
configure | ||
configure.ac | ||
cpu-features-offsets.sym | ||
cpu-features.c | ||
cpu-features.h | ||
cpu-tunables.c | ||
dl-cet.c | ||
dl-get-cpu-features.c | ||
dl-hwcap.h | ||
dl-procinfo.c | ||
dl-procinfo.h | ||
dl-procruntime.c | ||
dl-prop.h | ||
dl-tunables.list | ||
elide.h | ||
float128-abi.h | ||
fpu_control.h | ||
hp-timing.h | ||
init-arch.h | ||
jmp_buf-ssp.sym | ||
ldsodefs.h | ||
libc-start.c | ||
libc-start.h | ||
link_map.h | ||
linkmap.h | ||
longjmp.c | ||
Makeconfig | ||
Makefile | ||
string_private.h | ||
sysdep.h | ||
tininess.h | ||
tst-cet-legacy-1.c | ||
tst-cet-legacy-2.c | ||
tst-cet-legacy-2a.c | ||
tst-cet-legacy-3.c | ||
tst-cet-legacy-4.c | ||
tst-cet-legacy-4a.c | ||
tst-cet-legacy-4b.c | ||
tst-cet-legacy-4c.c | ||
tst-cet-legacy-mod-1.c | ||
tst-cet-legacy-mod-2.c | ||
tst-cet-legacy-mod-4.c | ||
tst-get-cpu-features-static.c | ||
tst-get-cpu-features.c | ||
Versions |