aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/tracebak.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-04-16 14:52:28 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-16 14:52:28 +0200
commitd15d61c671cb02b6dce9d583962750875e3178e9 (patch)
tree30c6a373132e5d4e1de4bb03bdf7beda67d1d2a3 /gcc/ada/tracebak.c
parent0a0a18c30fbacdade52fa538575ff4889e145275 (diff)
downloadgcc-d15d61c671cb02b6dce9d583962750875e3178e9.zip
gcc-d15d61c671cb02b6dce9d583962750875e3178e9.tar.gz
gcc-d15d61c671cb02b6dce9d583962750875e3178e9.tar.bz2
[multiple changes]
2009-04-16 Tristan Gingold <gingold@adacore.com> * init.c: Detect real stack overflow on Darwin. * system-darwin-x86.ads: Use stack probing on darwin x86. 2009-04-16 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Analyze_Attribute, case 'Address): It is illegal to take the address of an intrinsic subprogram. 2009-04-16 Vincent Celier <celier@adacore.com> * g-trasym-unimplemented.ads, g-trasym-unimplemented.adb: New file. * g-trasym.ads: Update comments. 2009-04-16 Vasiliy Fofanov <fofanov@adacore.com> * tracebak.c (STOP_FRAME): Verify validity of the current address before dereferencing. From-SVN: r146182
Diffstat (limited to 'gcc/ada/tracebak.c')
-rw-r--r--gcc/ada/tracebak.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index 8a69057..8f3c4cc 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -317,7 +317,8 @@ struct layout
#define FRAME_OFFSET(FP) 0
#define PC_ADJUST -2
#define STOP_FRAME(CURRENT, TOP_STACK) \
- (IS_BAD_PTR((long)(CURRENT)->return_address) \
+ (IS_BAD_PTR((long)(CURRENT)) \
+ || IS_BAD_PTR((long)(CURRENT)->return_address) \
|| (CURRENT)->return_address == 0|| (CURRENT)->next == 0 \
|| (void *) (CURRENT) < (TOP_STACK))