diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-16 12:41:38 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-04-16 12:41:38 +0000 |
commit | 0793eba56f0ea360620c1e8948899d00cb11a7b4 (patch) | |
tree | 630f3b21d444eb12ee9417639d119ed8165a6852 /gcc/ada/init.c | |
parent | 5b091c437a402dae7df69410b5da71bb47c11fad (diff) | |
download | gcc-0793eba56f0ea360620c1e8948899d00cb11a7b4.tar.gz |
2009-04-16 Tristan Gingold <gingold@adacore.com>
* s-intman-susv3.adb: New file.
* init.c, s-osinte-darwin.ads: Fix stack checking in tasking mode
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146179 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r-- | gcc/ada/init.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c index af9ae61d397..e86a975d237 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -2117,6 +2117,7 @@ __gnat_error_handler (int sig, siginfo_t * si, void * uc) switch (sig) { case SIGSEGV: + case SIGBUS: /* FIXME: we need to detect the case of a *real* SIGSEGV. */ exception = &storage_error; msg = "stack overflow or erroneous memory access"; @@ -2125,11 +2126,6 @@ __gnat_error_handler (int sig, siginfo_t * si, void * uc) sigreturn (NULL, UC_RESET_ALT_STACK); break; - case SIGBUS: - exception = &constraint_error; - msg = "SIGBUS"; - break; - case SIGFPE: exception = &constraint_error; msg = "SIGFPE"; @@ -2172,12 +2168,12 @@ __gnat_install_handler (void) sigaction (SIGFPE, &act, NULL); if (__gnat_get_interrupt_state (SIGILL) != 's') sigaction (SIGILL, &act, NULL); - if (__gnat_get_interrupt_state (SIGBUS) != 's') - sigaction (SIGBUS, &act, NULL); act.sa_flags |= SA_ONSTACK; if (__gnat_get_interrupt_state (SIGSEGV) != 's') sigaction (SIGSEGV, &act, NULL); + if (__gnat_get_interrupt_state (SIGBUS) != 's') + sigaction (SIGBUS, &act, NULL); __gnat_handler_installed = 1; } |