aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/raise-gcc.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-02-24 18:06:34 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2014-02-24 18:06:34 +0100
commit158d55fa393867c794df5aa43b693f61e5916b83 (patch)
tree7b2b58757fa8dde2e0d1161f993fb42856cfee7f /gcc/ada/raise-gcc.c
parent5c20e503ba3644e0037b09db9384f70aaa1daaa5 (diff)
downloadgcc-158d55fa393867c794df5aa43b693f61e5916b83.zip
gcc-158d55fa393867c794df5aa43b693f61e5916b83.tar.gz
gcc-158d55fa393867c794df5aa43b693f61e5916b83.tar.bz2
[multiple changes]
2014-02-24 Robert Dewar <dewar@adacore.com> * a-tags.adb, s-os_lib.adb: Minor reformatting. 2014-02-24 Thomas Quinot <quinot@adacore.com> * g-sercom-mingw.adb, g-sercom-linux.adb (Raise_Error): Include strerror message, not just numeric errno value. 2014-02-24 Doug Rupp <rupp@adacore.com> * raise-gcc.c (exception_class_eq): Make endian neutral. 2014-02-24 Ed Schonberg <schonberg@adacore.com> * atree.ads, atree,adb (Copy_Separate_Tree): Remove Syntax_Only flag, and reset Etype and Analyzed attributes unconditionally when copying a tree that may be partly analyzed. * freeze.adb: Change calls to Copy_Separate_Tree accordingly. * sem_ch6.adb (Check_Inline_Pragma): If the Inline pragma appears within a subprogram body and applies to it, remove it from the body before making a copy of it, to prevent spurious errors when analyzing the copied body. From-SVN: r208086
Diffstat (limited to 'gcc/ada/raise-gcc.c')
-rw-r--r--gcc/ada/raise-gcc.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/gcc/ada/raise-gcc.c b/gcc/ada/raise-gcc.c
index fda51cc..f33fd1f 100644
--- a/gcc/ada/raise-gcc.c
+++ b/gcc/ada/raise-gcc.c
@@ -84,8 +84,13 @@ extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
/* The known and handled exception classes. */
+#ifdef __ARM_EABI_UNWINDER__
+#define CXX_EXCEPTION_CLASS "GNUCC++"
+#define GNAT_EXCEPTION_CLASS "GNU-Ada"
+#else
#define CXX_EXCEPTION_CLASS 0x474e5543432b2b00ULL
#define GNAT_EXCEPTION_CLASS 0x474e552d41646100ULL
+#endif
/* Structure of a C++ exception, represented as a C structure... See
unwind-cxx.h for the full definition. */
@@ -863,16 +868,10 @@ extern struct Exception_Data Non_Ada_Error;
/* Return true iff the exception class of EXCEPT is EC. */
static int
-exception_class_eq (const _GNAT_Exception *except, unsigned long long ec)
+exception_class_eq (const _GNAT_Exception *except, _Unwind_Exception_Class ec)
{
#ifdef __ARM_EABI_UNWINDER__
- union {
- char exception_class[8];
- unsigned long long ec;
- } u;
-
- u.ec = ec;
- return memcmp (except->common.exception_class, u.exception_class, 8) == 0;
+ return memcmp (except->common.exception_class, ec, 8) == 0;
#else
return except->common.exception_class == ec;
#endif