init.c: Enable stack probing on ppc-linux.
authorTristan Gingold <gingold@adacore.com>
Tue, 20 May 2008 12:47:13 +0000 (14:47 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 20 May 2008 12:47:13 +0000 (14:47 +0200)
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

gcc/ada/init.c
gcc/ada/system-linux-ppc.ads
gcc/ada/tracebak.c

index 5dd781556882f4cbe3bd83c9b9087295ca4b91c8..24a6437f26b6ecf04cb84a13b20dda3c0128e335 100644 (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
 }
 
index 599bdcc9dc3efbb9aa14fbcc7327f33b55ec93c1..08c08a3606855e60be0a42bcee963d290276fa11 100644 (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;
index 65c1828baddd40e076489259e52193722e0b8e06..8a69057ed77ce4f370b102ae2c2e1dbd87b57346 100644 (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