diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-09 15:27:22 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-07-09 15:27:22 +0200 |
commit | c1107fa376b716f93c9c6f349bb46e1e767d41d6 (patch) | |
tree | 3116306d0d98adfdfd391185637bd4a43a7a293d /gcc/ada/init.c | |
parent | d27f3ff4c3165d5decf103e63336095730745f82 (diff) | |
download | gcc-c1107fa376b716f93c9c6f349bb46e1e767d41d6.zip gcc-c1107fa376b716f93c9c6f349bb46e1e767d41d6.tar.gz gcc-c1107fa376b716f93c9c6f349bb46e1e767d41d6.tar.bz2 |
[multiple changes]
2012-07-09 Vincent Pucci <pucci@adacore.com>
* sem_ch9.adb (Check_Node): Allow attributes
that denote static function for lock-free implementation.
(Is_Static_Function): New routine.
2012-07-09 Tristan Gingold <gingold@adacore.com>
* tracebak.c: Adjust skip_frames on Win64.
2012-07-09 Tristan Gingold <gingold@adacore.com>
* init.c: Add __gnat_adjust_context_for_raise for ia64/hpux.
* raise-gcc.c: __gnat_cleanupunwind_handler: Do not call
_Unwind_GetGR on hpux when using libgcc unwinder. Part of
2012-07-09 Vincent Pucci <pucci@adacore.com>
* exp_attr.adb, sem_attr.adb: Minor reformatting.
* par-ch13.adb, par-ch4.adb, par-util.adb: Reformatting
considering that internal attribute names are not defined anymore
in the main attribute names list.
* snames.adb-tmpl (Get_Attribute_Id): Special processinf
for names CPU, Dispatching_Domain and Interrupt_Priority.
(Is_Internal_Attribute_Name): Minor reformatting.
* snames.ads-tmpl: New list of internal attribute names. Internal
attributes moved at the end of the attribute Id list.
From-SVN: r189380
Diffstat (limited to 'gcc/ada/init.c')
-rw-r--r-- | gcc/ada/init.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 4db5789..e28b264 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -304,6 +304,25 @@ __gnat_install_handler (void) #include <signal.h> #include <sys/ucontext.h> +#if defined(__ia64__) +#include <sys/uc_access.h> +#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE + +void +__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext) +{ + ucontext_t *uc = (ucontext_t *) ucontext; + uint64_t ip; + + /* Adjust on itanium, as GetIPInfo is not supported. */ + __uc_get_ip (uc, &ip); + __uc_set_ip (uc, ip + 1); +} +#endif /* __ia64__ */ + +/* Tasking and Non-tasking signal handler. Map SIGnal to Ada exception + propagation after the required low level adjustments. */ + static void __gnat_error_handler (int sig, siginfo_t *si ATTRIBUTE_UNUSED, @@ -312,6 +331,10 @@ __gnat_error_handler (int sig, struct Exception_Data *exception; const char *msg; +#if defined(__ia64__) + __gnat_adjust_context_for_raise (sig, ucontext); +#endif + switch (sig) { case SIGSEGV: |