aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/init.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2013-04-22 12:44:46 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2013-04-22 12:44:46 +0200
commitf6820c2d0eb622884ac873db8d0e360c2ff4480e (patch)
treed0a41249d44138bcc6fb4de33ba0fc5937bac577 /gcc/ada/init.c
parent16d3a85360dde6290cd043d6da3f6b5adb1b98e6 (diff)
downloadgcc-f6820c2d0eb622884ac873db8d0e360c2ff4480e.zip
gcc-f6820c2d0eb622884ac873db8d0e360c2ff4480e.tar.gz
gcc-f6820c2d0eb622884ac873db8d0e360c2ff4480e.tar.bz2
[multiple changes]
2013-04-22 Pascal Obry <obry@adacore.com> * gnat_ugn.texi, prj-nmsc.adb, projects.texi: Add check for Library_Standalone and Library_Kind. 2013-04-22 Ed Schonberg <schonberg@adacore.com> * exp_ch6.adb (Expand_Actuals): If the call is to an inherited operation and the actual is a by-reference type with predicates, add predicate call to post-call actions. * sem_util.adb (Is_Inherited_Operation_For_Type): Fix coding error: a type declaration has a defining identifier, not an Etype. * sem_res.adb: Restore code removed because of above error. 2013-04-22 Doug Rupp <rupp@adacore.com> * init.c (__gnat_handle_vms_condition): Also match C$_SIGINT. From-SVN: r198130
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r--gcc/ada/init.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 8408225..030cb5c 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -833,6 +833,7 @@ void (*__gnat_ctrl_c_handler) (void) = 0;
/* These codes are in standard message libraries. */
extern int C$_SIGKILL;
+extern int C$_SIGINT;
extern int SS$_DEBUG;
extern int LIB$_KEYNOTFOU;
extern int LIB$_ACTIMAGE;
@@ -1221,14 +1222,18 @@ __gnat_handle_vms_condition (int *sigargs, void *mechargs)
system_cond_except_table,
0};
unsigned int ctrlc = SS$_CONTROLC;
+ unsigned int *sigint = &C$_SIGINT;
int ctrlc_match = LIB$MATCH_COND (&sigargs [1], &ctrlc);
+ int sigint_match = LIB$MATCH_COND (&sigargs [1], &sigint);
extern int SYS$DCLAST (void (*astadr)(), unsigned long long astprm,
unsigned int acmode);
/* If SS$_CONTROLC has been imported as an exception, it will take
- priority over a a Ctrl/C handler. See above. */
- if (ctrlc_match && __gnat_ctrl_c_handler)
+ priority over a a Ctrl/C handler. See above. SIGINT has a
+ different condition value due to it's DECCCRTL roots and it's
+ the condition that gets raised for a "kill -INT". */
+ if ((ctrlc_match || sigint_match) && __gnat_ctrl_c_handler)
{
SYS$DCLAST (__gnat_ctrl_c_handler, 0, 0);
return SS$_CONTINUE;