aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorVasiliy Fofanov <fofanov@adacore.com>2006-02-17 17:07:22 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2006-02-17 17:07:22 +0100
commit721a4f13e6527fec77c40a595c48be71942102f0 (patch)
treefc19407c92552791ee10bdb393d2aae4ebc91a62 /gcc
parent0e3e1f1559c7608c6b736fe9c6d30c07425dfd83 (diff)
downloadgcc-721a4f13e6527fec77c40a595c48be71942102f0.zip
gcc-721a4f13e6527fec77c40a595c48be71942102f0.tar.gz
gcc-721a4f13e6527fec77c40a595c48be71942102f0.tar.bz2
init.c (facility_resignal_table): new array
2006-02-17 Vasiliy Fofanov <fofanov@adacore.com> * init.c (facility_resignal_table): new array (__gnat_default_resignal_p): enhance default predicate to resignal if VMS condition has one of the predefined facility codes. From-SVN: r111189
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/init.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index eb10d636..11dc19d 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -1308,6 +1308,12 @@ const int *cond_resignal_table [] = {
0
};
+const int facility_resignal_table [] = {
+ 0x1380000, /* RDB */
+ 0x2220000, /* SQL */
+ 0
+};
+
/* Default GNAT predicate for resignaling conditions. */
static int
@@ -1315,6 +1321,10 @@ __gnat_default_resignal_p (int code)
{
int i, iexcept;
+ for (i = 0; facility_resignal_table [i]; i++)
+ if ((code & 0xfff0000) == facility_resignal_table [i])
+ return 1;
+
for (i = 0, iexcept = 0;
cond_resignal_table [i] &&
!(iexcept = LIB$MATCH_COND (&code, &cond_resignal_table [i]));