Commit 19a0be3d by Richard Henderson Committed by Richard Henderson

Enable __gnat_alternate_stack for most linux

	* init.c [__linux__] (HAVE_GNAT_ALTERNATE_STACK): New define.
	(__gnat_alternate_stack): Enable for all linux except ia64.

From-SVN: r209653
parent 793c625f
2014-04-22 Richard Henderson <rth@redhat.com>
* init.c [__linux__] (HAVE_GNAT_ALTERNATE_STACK): New define.
(__gnat_alternate_stack): Enable for all linux except ia64.
2014-04-22 Eric Botcazou <ebotcazou@adacore.com>
* fe.h (Compiler_Abort): Replace Fat_Pointer with String_Pointer.
......
......@@ -556,9 +556,14 @@ __gnat_error_handler (int sig, siginfo_t *si ATTRIBUTE_UNUSED, void *ucontext)
Raise_From_Signal_Handler (exception, msg);
}
#if defined (i386) || defined (__x86_64__) || defined (__powerpc__)
/* This must be in keeping with System.OS_Interface.Alternate_Stack_Size. */
char __gnat_alternate_stack[16 * 1024]; /* 2 * SIGSTKSZ */
#ifndef __ia64__
#define HAVE_GNAT_ALTERNATE_STACK 1
/* This must be in keeping with System.OS_Interface.Alternate_Stack_Size.
It must be larger than MINSIGSTKSZ and hopefully near 2 * SIGSTKSZ. */
# if 16 * 1024 < MINSIGSTKSZ
# error "__gnat_alternate_stack too small"
# endif
char __gnat_alternate_stack[16 * 1024];
#endif
#ifdef __XENO__
......@@ -612,7 +617,7 @@ __gnat_install_handler (void)
sigaction (SIGBUS, &act, NULL);
if (__gnat_get_interrupt_state (SIGSEGV) != 's')
{
#if defined (i386) || defined (__x86_64__) || defined (__powerpc__)
#ifdef HAVE_GNAT_ALTERNATE_STACK
/* Setup an alternate stack region for the handler execution so that
stack overflows can be handled properly, avoiding a SEGV generation
from stack usage by the handler itself. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment