diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/s390/s390-32')
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-32/clone.S | 4 |
2 files changed, 6 insertions, 8 deletions
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S index 887d841a87..ba38a303ee 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/__makecontext_ret.S @@ -17,15 +17,9 @@ #include <sysdep.h> -/* We do not want .eh_frame info so that __makecontext_ret stops unwinding - if backtrace was called within a context created by makecontext. (There - is also no .eh_frame info for _start or thread_start.) */ -#undef cfi_startproc -#define cfi_startproc -#undef cfi_endproc -#define cfi_endproc - ENTRY(__makecontext_ret) + /* Mark r14 as undefined in order to stop unwinding here! */ + cfi_undefined (r14) basr %r14,%r7 ltr %r8,%r8 /* Check whether uc_link is 0. */ jz 1f diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S index a8b4dbc90f..91f8ede966 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -54,12 +54,16 @@ error: PSEUDO_END (__clone) thread_start: + cfi_startproc + /* Mark r14 as undefined in order to stop unwinding here! */ + cfi_undefined (r14) /* fn is in gpr 1, arg in gpr 0 */ lr %r2,%r0 /* set first parameter to void *arg */ ahi %r15,-96 /* make room on the stack for the save area */ xc 0(4,%r15),0(%r15) basr %r14,%r1 /* jump to fn */ DO_CALL (exit, 1) + cfi_endproc libc_hidden_def (__clone) weak_alias (__clone, clone) |