re PR target/50678 (FAIL: c52104y on x86_64-apple-darwin10)
gcc/ada: PR target/50678 * init.c (__gnat_error_handler) [Darwin]: Move work-around to the bug filed as radar #10302855 from __gnat_error_handler ... ... to (__gnat_adjust_context_for_raise) [Darwin]: New. (HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define. (__gnat_error_handler) [Darwin]: Use __gnat_adjust_context_for_raise. From-SVN: r181474
This commit is contained in:
parent
72f1c34bd4
commit
590175d228
@ -1,3 +1,12 @@
|
||||
2011-11-18 Iain Sandoe <iains@gcc.gnu.org>
|
||||
|
||||
PR target/50678
|
||||
* init.c (__gnat_error_handler) [Darwin]: Move work-around to the
|
||||
bug filed as radar #10302855 from __gnat_error_handler ...
|
||||
... to (__gnat_adjust_context_for_raise) [Darwin]: New.
|
||||
(HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE) [Darwin]: Define.
|
||||
(__gnat_error_handler) [Darwin]: Use __gnat_adjust_context_for_raise.
|
||||
|
||||
2011-11-18 Tristan Gingold <gingold@adacore.com>
|
||||
Iain Sandoe <iains@gcc.gnu.org>
|
||||
|
||||
|
@ -2282,11 +2282,12 @@ __gnat_is_stack_guard (mach_vm_address_t addr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
__gnat_error_handler (int sig, siginfo_t *si, void *ucontext ATTRIBUTE_UNUSED)
|
||||
#define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
|
||||
|
||||
void
|
||||
__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED,
|
||||
void *ucontext ATTRIBUTE_UNUSED)
|
||||
{
|
||||
struct Exception_Data *exception;
|
||||
const char *msg;
|
||||
#if defined (__x86_64__)
|
||||
/* Work around radar #10302855/pr50678, where the unwinders (libunwind or
|
||||
libgcc_s depending on the system revision) and the DWARF unwind data for
|
||||
@ -2294,9 +2295,19 @@ __gnat_error_handler (int sig, siginfo_t *si, void *ucontext ATTRIBUTE_UNUSED)
|
||||
and rdx to be transposed).. */
|
||||
ucontext_t *uc = (ucontext_t *)ucontext ;
|
||||
unsigned long t = uc->uc_mcontext->__ss.__rbx;
|
||||
|
||||
uc->uc_mcontext->__ss.__rbx = uc->uc_mcontext->__ss.__rdx;
|
||||
uc->uc_mcontext->__ss.__rdx = t;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
__gnat_error_handler (int sig, siginfo_t *si, void *ucontext)
|
||||
{
|
||||
struct Exception_Data *exception;
|
||||
const char *msg;
|
||||
|
||||
__gnat_adjust_context_for_raise (sig, ucontext);
|
||||
|
||||
switch (sig)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user