-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Also restructure patches for simpler build code
- Loading branch information
Showing
11 changed files
with
123 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
-v1.11.0.3921-f2e3fac | ||
-v1.11.0.3921-f2e3fac,-v1.11.1.3932-88c26f4,-v1.11.3.3937-2edb570,-v1.11.4.3940-e66d85f |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
From f9e2b20a12a230efa30f1d479563ae07d276a94b Mon Sep 17 00:00:00 2001 | ||
From: Paul Eggert <[email protected]> | ||
Date: Wed, 30 Sep 2020 13:50:36 -0700 | ||
Subject: [PATCH] c-stack: stop using SIGSTKSZ | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=utf8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
It's been proposed to stop making SIGSTKSZ an integer constant: | ||
https://sourceware.org/pipermail/libc-alpha/2020-September/118028.html | ||
Also, using SIGSTKSZ in #if did not conform to current POSIX. | ||
Also, avoiding SIGSTKSZ makes the code simpler and easier to grok. | ||
* lib/c-stack.c (SIGSTKSZ): Remove. | ||
(alternate_signal_stack): Now a 64 KiB array, for simplicity. | ||
All uses changed. | ||
|
||
(Note for Ubuntu: The patch originates from gnulib, not m4, and has been | ||
heavily edited to fit the older version used in our current version of m4) | ||
|
||
--- a/lib/c-stack.c | ||
+++ b/lib/c-stack.c | ||
@@ -50,15 +50,16 @@ | ||
#if ! HAVE_STACK_T && ! defined stack_t | ||
typedef struct sigaltstack stack_t; | ||
#endif | ||
-#ifndef SIGSTKSZ | ||
-# define SIGSTKSZ 16384 | ||
-#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384 | ||
-/* libsigsegv 2.6 through 2.8 have a bug where some architectures use | ||
- more than the Linux default of an 8k alternate stack when deciding | ||
- if a fault was caused by stack overflow. */ | ||
-# undef SIGSTKSZ | ||
-# define SIGSTKSZ 16384 | ||
-#endif | ||
+/* Storage for the alternate signal stack. | ||
+ 64 KiB is not too large for Gnulib-using apps, and is large enough | ||
+ for all known platforms. Smaller sizes may run into trouble. | ||
+ For example, libsigsegv 2.6 through 2.8 have a bug where some | ||
+ architectures use more than the Linux default of an 8 KiB alternate | ||
+ stack when deciding if a fault was caused by stack overflow. */ | ||
+static max_align_t alternate_signal_stack[(64 * 1024 | ||
+ + sizeof (max_align_t) - 1) | ||
+ / sizeof (max_align_t)]; | ||
+ | ||
|
||
#include <stdlib.h> | ||
#include <string.h> | ||
@@ -128,18 +129,6 @@ | ||
#if (HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK \ | ||
&& HAVE_STACK_OVERFLOW_HANDLING) || HAVE_LIBSIGSEGV | ||
|
||
-/* Storage for the alternate signal stack. */ | ||
-static union | ||
-{ | ||
- char buffer[SIGSTKSZ]; | ||
- | ||
- /* These other members are for proper alignment. There's no | ||
- standard way to guarantee stack alignment, but this seems enough | ||
- in practice. */ | ||
- long double ld; | ||
- long l; | ||
- void *p; | ||
-} alternate_signal_stack; | ||
|
||
static void | ||
null_action (int signo __attribute__ ((unused))) | ||
@@ -205,8 +194,8 @@ | ||
|
||
/* Always install the overflow handler. */ | ||
if (stackoverflow_install_handler (overflow_handler, | ||
- alternate_signal_stack.buffer, | ||
- sizeof alternate_signal_stack.buffer)) | ||
+ alternate_signal_stack, | ||
+ sizeof alternate_signal_stack)) | ||
{ | ||
errno = ENOTSUP; | ||
return -1; | ||
@@ -279,14 +268,14 @@ | ||
stack_t st; | ||
struct sigaction act; | ||
st.ss_flags = 0; | ||
+ st.ss_sp = alternate_signal_stack; | ||
+ st.ss_size = sizeof alternate_signal_stack; | ||
# if SIGALTSTACK_SS_REVERSED | ||
/* Irix mistakenly treats ss_sp as the upper bound, rather than | ||
lower bound, of the alternate stack. */ | ||
- st.ss_sp = alternate_signal_stack.buffer + SIGSTKSZ - sizeof (void *); | ||
- st.ss_size = sizeof alternate_signal_stack.buffer - sizeof (void *); | ||
-# else | ||
- st.ss_sp = alternate_signal_stack.buffer; | ||
- st.ss_size = sizeof alternate_signal_stack.buffer; | ||
+ st.ss_size -= sizeof (void *); | ||
+ char *ss_sp = st.ss_sp; | ||
+ st.ss_sp = ss_sp + st.ss_size; | ||
# endif | ||
r = sigaltstack (&st, NULL); | ||
if (r != 0) | ||
--- a/lib/c-stack.h | ||
+++ b/lib/c-stack.h | ||
@@ -34,7 +34,7 @@ | ||
A null ACTION acts like an action that does nothing. | ||
|
||
ACTION must be async-signal-safe. ACTION together with its callees | ||
- must not require more than SIGSTKSZ bytes of stack space. Also, | ||
+ must not require more than 64 KiB of stack space. Also, | ||
ACTION should not call longjmp, because this implementation does | ||
not guarantee that it is safe to return to the original stack. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes.