glibc/sysdeps/unix/sysv/linux/powerpc/powerpc64
Ulrich Weigand 5162e7dd96 PowerPC64: Fix incorrect CFI in *context routines
The context established by "makecontext" has a link register pointing
back to an error path within the makecontext routine.  This is currently
covered by the CFI FDE for makecontext itself, which is simply wrong
for the stack frame *inside* the context.  When trying to unwind (e.g.
doing a backtrace) in a routine inside a context created by makecontext,
this can lead to uninitialized stack slots being accessed, causing the
unwinder to crash in the worst case.

Similarly, during parts of the "setcontext" routine, when the stack
pointer has already been switched to point to the new context, the
address range is still covered by the CFI FDE for setcontext.  When
trying to unwind in that situation (e.g. backtrace from an async
signal handler for profiling), it is again possible that the unwinder
crashes.

Theses are all problems in existing code, but the changes in stack
frame layout appear to make the "worst case" much more likely in
the ELFv2 ABI context.  This causes regressions e.g. in the libgo
testsuite on ELFv2.

This patch fixes this by ending the makecontext/setcontext FDEs
before those problematic parts of the assembler, similar to what
is already done on other platforms.   This fixes the libgo
regression on ELFv2.
2013-12-04 07:41:37 -06:00
..
970 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
a2 powerpc: PPCA2/A2 optimized memcpy function 2010-10-24 21:47:33 -04:00
cell powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
fpu PowerPC: Fix __fe_nomask_env missing symbol 2013-11-26 07:25:08 -06:00
nptl New API to set default thread attributes 2013-06-15 12:24:15 +05:30
power4 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power5 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power5+ powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power6 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power6x powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power7 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
power8 PowerPC: Enable POWER8 platform sans hwcap bits. 2013-06-24 15:33:32 -05:00
____longjmp_chk.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
brk.S Remove powerpc64 bounded-pointers code. 2013-03-06 00:10:21 +00:00
clone.S Remove powerpc64 bounded-pointers code. 2013-03-06 00:10:21 +00:00
dl-cache.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fcntl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
getcontext.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Implies Revert "Use ieee754/dbl-64/wordsize-64 on powerpc64" 2013-01-10 10:44:05 +01:00
kernel_stat.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
ldsodefs.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
makecontext.S PowerPC64: Fix incorrect CFI in *context routines 2013-12-04 07:41:37 -06:00
Makefile Add default-abi definitions for powerpc, s390 and sparc. 2012-06-01 21:19:28 +00:00
pread64.c Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
pread.c Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
pwrite64.c Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
pwrite.c Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
setcontext.S PowerPC64: Fix incorrect CFI in *context routines 2013-12-04 07:41:37 -06:00
socket.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
swapcontext.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sync_file_range.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
syscalls.list * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Add open 2008-03-27 16:23:55 +00:00
sysdep.h PowerPC: Rename __kernel_vdso_get_tbfreq to __kernel_get_tbfreq. 2013-01-18 07:44:38 -06:00
ucontext_i.sym * sysdeps/unix/sysv/linux/i386/ucontext_i.h: File removed. 2005-12-22 05:18:34 +00:00
umount.c * sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: Include x86_64 2006-02-28 19:07:44 +00:00
Versions Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
vfork.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00