From f3a8267dabab20b095abe36e4a2be14ccc34b38e Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Mon, 22 Jun 2015 04:10:55 +0300 Subject: 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 --- libpthread/nptl/sysdeps/unix/sysv/linux/xtensa/sysdep-cancel.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'libpthread') 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; \ -- cgit v1.2.3