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.
96 lines
3.3 KiB
96 lines
3.3 KiB
# |
|
# 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;
|
|
|