You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.3 KiB
97 lines
3.3 KiB
7 years ago
|
#
|
||
|
# Upstream power patch to increase MINSIGSTKSZ and SIGSTKSZ to
|
||
|
# account for the kernel signal frame size increase.
|
||
|
#
|
||
|
# commit f7c399cff5bd04ee9dc117fb6b0f39597dc047c6
|
||
|
# Author: Alan Modra <amodra@gmail.com>
|
||
|
# Date: Sat Aug 17 18:37:18 2013 +0930
|
||
|
#
|
||
|
# PowerPC SIGSTKSZ
|
||
|
# http://sourceware.org/ml/libc-alpha/2013-08/msg00093.html
|
||
|
#
|
||
|
# This copies the sparc version of sigstack.h, which gives powerpc
|
||
|
# #define MINSIGSTKSZ 4096
|
||
|
# #define SIGSTKSZ 16384
|
||
|
#
|
||
|
# Before the VSX changes, struct rt_sigframe size was 1920 plus 128 for
|
||
|
# __SIGNAL_FRAMESIZE giving ppc64 exactly the default MINSIGSTKSZ of
|
||
|
# 2048.
|
||
|
#
|
||
|
# After VSX, ucontext increased by 256 bytes. Oops, we're over
|
||
|
# MINSIGSTKSZ, so powerpc has been using the wrong value for quite a
|
||
|
# while. Add another ucontext for TM and rt_sigframe is now at 3872,
|
||
|
# giving actual MINSIGSTKSZ of 4000.
|
||
|
#
|
||
|
# The glibc testcase that I was looking at was tst-cancel21, which
|
||
|
# allocates 2*SIGSTKSZ (not because the test is trying to be
|
||
|
# conservative, but because the test actually has nested signal stack
|
||
|
# frames). We blew the allocation by 48 bytes when using current
|
||
|
# mainline gcc to compile glibc (le ppc64).
|
||
|
#
|
||
|
# The required stack depth in _dl_lookup_symbol_x from the top of the
|
||
|
# next signal frame was 10944 bytes. I guess you'd want to add 288 to
|
||
|
# that, implying an actual SIGSTKSZ of 11232.
|
||
|
#
|
||
|
# * sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h: New file.
|
||
|
#
|
||
|
diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
|
||
|
new file mode 100644
|
||
|
index 0000000..33be9e8
|
||
|
--- /dev/null
|
||
|
+++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h
|
||
|
@@ -0,0 +1,54 @@
|
||
|
+/* sigstack, sigaltstack definitions.
|
||
|
+ Copyright (C) 1998-2013 Free Software Foundation, Inc.
|
||
|
+ This file is part of the GNU C Library.
|
||
|
+
|
||
|
+ The GNU C Library is free software; you can redistribute it and/or
|
||
|
+ modify it under the terms of the GNU Lesser General Public
|
||
|
+ License as published by the Free Software Foundation; either
|
||
|
+ version 2.1 of the License, or (at your option) any later version.
|
||
|
+
|
||
|
+ The GNU C Library is distributed in the hope that it will be useful,
|
||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
+ Lesser General Public License for more details.
|
||
|
+
|
||
|
+ You should have received a copy of the GNU Lesser General Public
|
||
|
+ License along with the GNU C Library; if not, see
|
||
|
+ <http://www.gnu.org/licenses/>. */
|
||
|
+
|
||
|
+#ifndef _SIGNAL_H
|
||
|
+# error "Never include this file directly. Use <signal.h> instead"
|
||
|
+#endif
|
||
|
+
|
||
|
+
|
||
|
+/* Structure describing a signal stack (obsolete). */
|
||
|
+struct sigstack
|
||
|
+ {
|
||
|
+ void *ss_sp; /* Signal stack pointer. */
|
||
|
+ int ss_onstack; /* Nonzero if executing on this stack. */
|
||
|
+ };
|
||
|
+
|
||
|
+
|
||
|
+/* Possible values for `ss_flags.'. */
|
||
|
+enum
|
||
|
+{
|
||
|
+ SS_ONSTACK = 1,
|
||
|
+#define SS_ONSTACK SS_ONSTACK
|
||
|
+ SS_DISABLE
|
||
|
+#define SS_DISABLE SS_DISABLE
|
||
|
+};
|
||
|
+
|
||
|
+/* Minimum stack size for a signal handler. */
|
||
|
+#define MINSIGSTKSZ 4096
|
||
|
+
|
||
|
+/* System default stack size. */
|
||
|
+#define SIGSTKSZ 16384
|
||
|
+
|
||
|
+
|
||
|
+/* Alternate, preferred interface. */
|
||
|
+typedef struct sigaltstack
|
||
|
+ {
|
||
|
+ void *ss_sp;
|
||
|
+ int ss_flags;
|
||
|
+ size_t ss_size;
|
||
|
+ } stack_t;
|