diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2015-06-22 04:10:55 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@openadk.org> | 2015-06-23 21:40:54 +0200 |
commit | f3a8267dabab20b095abe36e4a2be14ccc34b38e (patch) | |
tree | dbe704d9abc19aaf58f99a6436b46323ebeaa315 /libpthread | |
parent | d551a039ad443e1ba1c29461b43ca865785fbb68 (diff) |
xtensa: fix stack frame size for NPTL
Cancellable syscalls use call8 to call functions that enable/disable
cancellation, thus they cannot use the default FRAMESIZE.
Redefine FRAMESIZE for such syscalls.
This fixes the following testsuite failure:
.... tst-mqueue8
FAIL tst-mqueue8 got 1 expected 0
going to cancel mq_receive in-time
in-time mq_receive cancellation succeeded
going to cancel mq_receive early
Didn't expect signal from child: got `Segmentation fault'
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'libpthread')
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h b/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h index 6bb2aeb56..f82957d15 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h +++ b/libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h @@ -24,7 +24,15 @@ #endif #if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt -// FIXME: ENTRY includes an entry instruction, here we'd want entry sp, 48! + +/* CENABLE/CDISABLE in PSEUDO below use call8, stack frame size must be + * at least 32. + */ +#if FRAMESIZE < 32 +#undef FRAMESIZE +#define FRAMESIZE 32 +#endif + # undef PSEUDO # define PSEUDO(name, syscall_name, args) \ .text; \ |