summaryrefslogtreecommitdiff
path: root/gcc/ada/tracebak.c
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-09-02 09:47:42 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2011-09-02 09:47:42 +0000
commit229c2354d5315ae45932c64ce51fa35e7ad3436a (patch)
treef672ad321d9814186c763be811b55b8bc82bf7dd /gcc/ada/tracebak.c
parent045fdaf67d4b2df361848bd6e7a95cc513c51935 (diff)
downloadgcc-229c2354d5315ae45932c64ce51fa35e7ad3436a.tar.gz
2011-09-02 Robert Dewar <dewar@adacore.com>
* exp_ch4.adb, exp_ch6.adb, prj-nmsc.adb: Minor reformatting. 2011-09-02 Hristian Kirtchev <kirtchev@adacore.com> * exp_util.adb (Extract_Renamed_Object): Renamed to Find_Renamed_Object. This routine has been reimplemented and now uses tree traversal to locate a renamed object. (Is_Aliased): Replace call to Extract_Renamed_Object with Find_Renamed_Object. 2011-09-02 Tristan Gingold <gingold@adacore.com> * init.c: (__gnat_is_vms_v7): New function. 2011-09-02 Olivier Hainque <hainque@adacore.com> * tracebak.c (STOP_FRAME, ppc elf/vxworks case): Stop on frames that have a misaligned backchain, necessarily bogus. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@178457 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/tracebak.c')
-rw-r--r--gcc/ada/tracebak.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index eedc715a2e5..a8a200d4486 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -259,7 +259,13 @@ struct layout
#define FRAME_OFFSET(FP) 0
#define PC_ADJUST -4
-#define STOP_FRAME(CURRENT, TOP_STACK) ((CURRENT)->next == 0)
+
+/* According to the base PPC ABI, a toplevel frame entry should feature
+ a null backchain. What happens at signal handler frontiers isn't so
+ well specified, so we add a safety guard on top. */
+
+#define STOP_FRAME(CURRENT, TOP_STACK) \
+ ((CURRENT)->next == 0 || ((long)(CURRENT)->next % __alignof__(void*)) != 0)
#define BASE_SKIP 1