aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/init.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-10-13 12:22:28 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-10-13 12:22:28 +0200
commit8097203fc3a4cbd63b668dac627739abd2b40445 (patch)
tree55ac24cad2bc7f6de6233500cd26d00143a0d077 /gcc/ada/init.c
parente192a2cd62f2ed824f93edab18d9a5aabf764784 (diff)
downloadgcc-8097203fc3a4cbd63b668dac627739abd2b40445.zip
gcc-8097203fc3a4cbd63b668dac627739abd2b40445.tar.gz
gcc-8097203fc3a4cbd63b668dac627739abd2b40445.tar.bz2
[multiple changes]
2011-10-13 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Analyze_Formal_{Floating_Type, Signed_Integer_Type, Decimal_Fixed_Point_Type, Discrete_Type}): Use sloc of defining identifier of farmal type declaration, as sloc of generated internal entity, to prevent misplaced references in ali. 2011-10-13 Ed Schonberg <schonberg@adacore.com> * sem_intr.adb (Check_Intrinsic_Operator): Check that type is fully defined before checking that it is a numeric type. 2011-10-13 Ed Schonberg <schonberg@adacore.com> * sem_aggr.adb (Resolve_Record_Aggregate): If a component association for component X has a box, then X is covered in the aggregate even if there is not default value for X in the type declaration, and X has to be default-initialized. 2011-10-13 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Check_Enum_Image, Analyze_Attribute case 'Value): Mark literals as referenced only if reference is in current source unit. 2011-10-13 Matthew Heaney <heaney@adacore.com> * a-csquin.ads (Enque, Dequeue): Mark interface operations as entries. 2011-10-13 Olivier Hainque <hainque@adacore.com> * sigtramp.h: New file. Prototype and spec of the signal trampoline to be called by an established handler to provide dwarf call frame info before the real signal processing code. * sigtramp-ppcvxw.c: New file. Implementation of the signal trampoline for ppc-vxworks. * init.c (vxworks section): Use it for ppc. From-SVN: r179899
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r--gcc/ada/init.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 0cf32e8..9b24395 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -1906,7 +1906,8 @@ __gnat_clear_exception_count (void)
/* Handle different SIGnal to exception mappings in different VxWorks
versions. */
static void
-__gnat_map_signal (int sig)
+__gnat_map_signal (int sig, void *si ATTRIBUTE_UNUSED,
+ struct sigcontext *sc ATTRIBUTE_UNUSED)
{
struct Exception_Data *exception;
const char *msg;
@@ -2001,9 +2002,7 @@ __gnat_map_signal (int sig)
propagation after the required low level adjustments. */
void
-__gnat_error_handler (int sig,
- void *si ATTRIBUTE_UNUSED,
- struct sigcontext *sc ATTRIBUTE_UNUSED)
+__gnat_error_handler (int sig, void *si, struct sigcontext *sc)
{
sigset_t mask;
@@ -2015,7 +2014,17 @@ __gnat_error_handler (int sig,
sigdelset (&mask, sig);
sigprocmask (SIG_SETMASK, &mask, NULL);
- __gnat_map_signal (sig);
+#if defined (__PPC__)
+ /* We process signals through a Call Frame Info trampoline, voiding
+ the need for myriads of fallback_frame_state variants. */
+
+ #include "sigtramp.h"
+
+ __gnat_sigtramp (sig, si, sc, &__gnat_map_signal);
+
+#else
+ __gnat_map_signal (sig, si, sc);
+#endif
}
void