* config/a29k/tm-a29k.h (FRAME_CHAIN): If rsize is zero, return zero.
authorJim Kingdon <jkingdon@engr.sgi.com>
Fri, 17 Sep 1993 04:54:52 +0000 (04:54 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Fri, 17 Sep 1993 04:54:52 +0000 (04:54 +0000)
gdb/ChangeLog
gdb/config/a29k/tm-a29k.h

index b0902ad0db09d07c4e4fa9144b3a5387510ed263..3dff28e8b51f18951b0bbb5270e3ba85abef8fb5 100644 (file)
@@ -1,3 +1,7 @@
+Thu Sep 16 20:37:06 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)
+
+       * config/a29k/tm-a29k.h (FRAME_CHAIN): If rsize is zero, return zero.
+
 Thu Sep 16 13:16:22 1993  Stu Grossman  (grossman at cygnus.com)
 
        * infrun.c (wait_for_inferior):  Allow user to single step within
index 0b027bebb46beefb79a82b581c93dca17a6e8596..ac102da06ce65cedda36be04c5c9aa72569bcdff 100644 (file)
@@ -482,7 +482,12 @@ void init_frame_pc ();
 
 /* These are mostly dummies for the a29k because INIT_FRAME_PC
    sets prev->frame instead.  */
-#define FRAME_CHAIN(thisframe) ((thisframe)->frame + (thisframe)->rsize)
+/* If rsize is zero, we must be at end of stack (or otherwise hosed).
+   If we don't check rsize, we loop forever if we see rsize == 0.  */
+#define FRAME_CHAIN(thisframe) \
+  ((thisframe)->rsize == 0 \
+   ? 0 \
+   : (thisframe)->frame + (thisframe)->rsize)
 
 /* Determine if the frame has a 'previous' and back-traceable frame. */
 #define FRAME_IS_UNCHAINED(frame)      ((frame)->flags & TRANSPARENT)