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__) \ #elif defined (linux) && (defined (i386) || defined (__x86_64__) \
|| defined (__ia64__)) || defined (__ia64__) || defined (__powerpc__))
#include <signal.h> #include <signal.h>
@ -624,7 +624,9 @@ static void __gnat_error_handler (int, siginfo_t *siginfo, void *ucontext);
void void
__gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext) __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
{ {
#ifndef __powerpc__
mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext; mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
#endif
/* On the i386 and x86-64 architectures, stack checking is performed by /* 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 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]++; mcontext->gregs[REG_RIP]++;
#elif defined (__ia64__) #elif defined (__ia64__)
mcontext->sc_ip++; mcontext->sc_ip++;
#elif defined (__powerpc__)
((ucontext_t *) ucontext)->uc_mcontext.regs->nip++;
#endif #endif
} }

View File

@ -7,7 +7,7 @@
-- S p e c -- -- S p e c --
-- (GNU-Linux/PPC Version) -- -- (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 -- -- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow -- -- GNAT. The copyright notice above, and the license provisions that follow --
@ -139,7 +139,7 @@ private
Preallocated_Stacks : constant Boolean := False; Preallocated_Stacks : constant Boolean := False;
Signed_Zeros : constant Boolean := True; Signed_Zeros : constant Boolean := True;
Stack_Check_Default : constant Boolean := False; Stack_Check_Default : constant Boolean := False;
Stack_Check_Probes : constant Boolean := False; Stack_Check_Probes : constant Boolean := True;
Stack_Check_Limits : constant Boolean := False; Stack_Check_Limits : constant Boolean := False;
Support_64_Bit_Divides : constant Boolean := True; Support_64_Bit_Divides : constant Boolean := True;
Support_Aggregates : constant Boolean := True; Support_Aggregates : constant Boolean := True;

View File

@ -6,8 +6,7 @@
* * * *
* C Implementation File * * C Implementation File *
* * * *
* Copyright (C) 2000-2007, AdaCore * * Copyright (C) 2000-2008, AdaCore *
* Copyright (C) 2008, Free Software Foundation, Inc. *
* * * *
* GNAT is free software; you can redistribute it and/or modify it under * * 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- * * terms of the GNU General Public License as published by the Free Soft- *
@ -230,9 +229,10 @@ struct layout
#define BASE_SKIP 1 #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 #define USE_GENERIC_UNWINDER