init.c: Enable stack probing on ppc-linux.

2008-05-20  Tristan Gingold  <gingold@adacore.com>

	* init.c: Enable stack probing on ppc-linux.

	* tracebak.c: Add symbolic traceback for ppc-linux.

	* system-linux-ppc.ads: Enable stack probing on ppc-linux.

From-SVN: r135630
This commit is contained in:
Tristan Gingold 2008-05-20 14:47:13 +02:00 committed by Arnaud Charlet
parent 8bfa6c2fa3
commit 36cee502f3
3 changed files with 11 additions and 7 deletions

View File

@ -568,7 +568,7 @@ __gnat_install_handler (void)
/*********************/
#elif defined (linux) && (defined (i386) || defined (__x86_64__) \
|| defined (__ia64__))
|| defined (__ia64__) || defined (__powerpc__))
#include <signal.h>
@ -624,7 +624,9 @@ static void __gnat_error_handler (int, siginfo_t *siginfo, void *ucontext);
void
__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
{
#ifndef __powerpc__
mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
#endif
/* On the i386 and x86-64 architectures, stack checking is performed by
means of probes with moving stack pointer, that is to say the probed
@ -657,6 +659,8 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
mcontext->gregs[REG_RIP]++;
#elif defined (__ia64__)
mcontext->sc_ip++;
#elif defined (__powerpc__)
((ucontext_t *) ucontext)->uc_mcontext.regs->nip++;
#endif
}

View File

@ -7,7 +7,7 @@
-- S p e c --
-- (GNU-Linux/PPC Version) --
-- --
-- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
-- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
@ -139,7 +139,7 @@ private
Preallocated_Stacks : constant Boolean := False;
Signed_Zeros : constant Boolean := True;
Stack_Check_Default : constant Boolean := False;
Stack_Check_Probes : constant Boolean := False;
Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False;
Support_64_Bit_Divides : constant Boolean := True;
Support_Aggregates : constant Boolean := True;

View File

@ -6,8 +6,7 @@
* *
* C Implementation File *
* *
* Copyright (C) 2000-2007, AdaCore *
* Copyright (C) 2008, Free Software Foundation, Inc. *
* Copyright (C) 2000-2008, AdaCore *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@ -230,9 +229,10 @@ struct layout
#define BASE_SKIP 1
/*---------------------------- PPC VxWorks------------------------------*/
/*-------------------- PPC ELF (GNU/Linux & VxWorks) ---------------------*/
#elif defined (_ARCH_PPC) && defined (__vxworks)
#elif (defined (_ARCH_PPC) && defined (__vxworks)) || \
(defined (linux) && defined (__powerpc__))
#define USE_GENERIC_UNWINDER