Commit 6da2ca7d by Rainer Orth Committed by Rainer Orth

init.c (__gnat_error_handler): Cast reason to int.

	* init.c (__gnat_error_handler): Cast reason to int.
	(__gnat_install_handler): Explain sa_sigaction use.

From-SVN: r176870
parent 40b9321d
2011-07-28 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* init.c (__gnat_error_handler): Cast reason to int.
(__gnat_install_handler): Explain sa_sigaction use.
2011-07-24 Eric Botcazou <ebotcazou@adacore.com> 2011-07-24 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: If the * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Subprogram_Type>: If the
......
...@@ -787,7 +787,11 @@ extern struct Exception_Data _abort_signal; ...@@ -787,7 +787,11 @@ extern struct Exception_Data _abort_signal;
static void static void
__gnat_error_handler (int sig, siginfo_t *reason, void *uc ATTRIBUTE_UNUSED) __gnat_error_handler (int sig, siginfo_t *reason, void *uc ATTRIBUTE_UNUSED)
{ {
int code = reason == NULL ? 0 : reason->si_code; /* This handler is installed with SA_SIGINFO cleared, but there's no
prototype for the resulting alternative three-argument form, so we
have to hack around this by casting reason to the int actually
passed. */
int code = (int) reason;
struct Exception_Data *exception; struct Exception_Data *exception;
const char *msg; const char *msg;
...@@ -872,7 +876,11 @@ __gnat_install_handler (void) ...@@ -872,7 +876,11 @@ __gnat_install_handler (void)
/* Setup signal handler to map synchronous signals to appropriate /* Setup signal handler to map synchronous signals to appropriate
exceptions. Make sure that the handler isn't interrupted by another exceptions. Make sure that the handler isn't interrupted by another
signal that might cause a scheduling event! */ signal that might cause a scheduling event!
The handler is installed with SA_SIGINFO cleared, but there's no
C++ prototype for the three-argument form, so fake it by using
sa_sigaction and casting the arguments instead. */
act.sa_sigaction = __gnat_error_handler; act.sa_sigaction = __gnat_error_handler;
act.sa_flags = SA_NODEFER + SA_RESTART; act.sa_flags = SA_NODEFER + SA_RESTART;
......
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