diff options
author | Tristan Gingold <gingold@adacore.com> | 2008-05-20 14:47:13 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2008-05-20 14:47:13 +0200 |
commit | 36cee502f345b8b64a08c57c1ac3237cb5c7d5e3 (patch) | |
tree | 7afc4ecc2e446df31ae6ed137913cc363e5cca78 /gcc | |
parent | 8bfa6c2fa3ce03a2d76028f6c2cee96653bfc26a (diff) | |
download | gcc-36cee502f345b8b64a08c57c1ac3237cb5c7d5e3.zip gcc-36cee502f345b8b64a08c57c1ac3237cb5c7d5e3.tar.gz gcc-36cee502f345b8b64a08c57c1ac3237cb5c7d5e3.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/init.c | 6 | ||||
-rw-r--r-- | gcc/ada/system-linux-ppc.ads | 4 | ||||
-rw-r--r-- | gcc/ada/tracebak.c | 8 |
3 files changed, 11 insertions, 7 deletions
diff --git a/gcc/ada/init.c b/gcc/ada/init.c index 5dd7815..24a6437 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -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 } diff --git a/gcc/ada/system-linux-ppc.ads b/gcc/ada/system-linux-ppc.ads index 599bdcc..08c08a3 100644 --- a/gcc/ada/system-linux-ppc.ads +++ b/gcc/ada/system-linux-ppc.ads @@ -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; diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c index 65c1828..8a69057 100644 --- a/gcc/ada/tracebak.c +++ b/gcc/ada/tracebak.c @@ -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 |