musl/arch
Rich Felker 484194dbf4 fix stack protector crashes on x32 & powerpc due to misplaced TLS canary
i386, x86_64, x32, and powerpc all use TLS for stack protector canary
values in the default stack protector ABI, but the location only
matched the ABI on i386 and x86_64. on x32, the expected location for
the canary contained the tid, thus producing spurious mismatches
(resulting in process termination) upon fork. on powerpc, the expected
location contained the stdio_locks list head, so returning from a
function after calling flockfile produced spurious mismatches. in both
cases, the random canary was not present, and a predictable value was
used instead, making the stack protector hardening much less effective
than it should be.

in the current fix, the thread structure has been expanded to have
canary fields at all three possible locations, and archs that use a
non-default location must define a macro in pthread_arch.h to choose
which location is used. for most archs (which lack TLS canary ABI) the
choice does not matter.
2015-05-06 18:37:19 -04:00
..
aarch64 fix __syscall declaration with wrong visibility in syscall_arch.h 2015-04-30 16:22:57 -04:00
arm fix __syscall declaration with wrong visibility in syscall_arch.h 2015-04-30 16:22:57 -04:00
i386 use hidden visibility for i386 asm-internal __vsyscall symbol 2015-04-14 10:22:12 -04:00
microblaze fix __syscall declaration with wrong visibility in syscall_arch.h 2015-04-30 16:22:57 -04:00
mips fix __syscall declaration with wrong visibility in syscall_arch.h 2015-04-30 16:22:57 -04:00
or1k fix __syscall declaration with wrong visibility in syscall_arch.h 2015-04-30 16:22:57 -04:00
powerpc fix stack protector crashes on x32 & powerpc due to misplaced TLS canary 2015-05-06 18:37:19 -04:00
sh fix sh jmp_buf size to match ABI 2015-04-27 20:03:28 -04:00
x32 fix stack protector crashes on x32 & powerpc due to misplaced TLS canary 2015-05-06 18:37:19 -04:00
x86_64 dynamic linker bootstrap overhaul 2015-04-13 03:04:42 -04:00