* s390-tdep.c (s390_pop_frame_regular): Make sure the saved_regs
authorJim Blandy <jimb@codesourcery.com>
Thu, 20 Dec 2001 08:55:31 +0000 (08:55 +0000)
committerJim Blandy <jimb@codesourcery.com>
Thu, 20 Dec 2001 08:55:31 +0000 (08:55 +0000)
array is actually set before we try to use it.

gdb/ChangeLog
gdb/s390-tdep.c

index 432c507acf611619b433466c891de22a7cde6992..b3823897d745c25483b9a76e940eb5697843a9b3 100644 (file)
@@ -1,5 +1,8 @@
 2001-12-19  Jim Blandy  <jimb@redhat.com>
 
+       * s390-tdep.c (s390_pop_frame_regular): Make sure the saved_regs
+       array is actually set before we try to use it.
+
        * s390-tdep.c (s390_frame_saved_pc_nofix): If we get the saved PC
        out of the return address register, cache that in the frame's
        extra info, just as if we'd gotten it from the saved regs array;
index c524657a57acdf72affb267466434b84a60e9f84..7b4972b097d35d4f2af2c8c857c08f9b3d6e4a93 100644 (file)
@@ -1225,20 +1225,23 @@ s390_pop_frame_regular (struct frame_info *frame)
   write_register (S390_PC_REGNUM, FRAME_SAVED_PC (frame));
 
   /* Restore any saved registers.  */
-  for (regnum = 0; regnum < NUM_REGS; regnum++)
-    if (frame->saved_regs[regnum] != 0)
-      {
-        ULONGEST value;
-
-        value = read_memory_unsigned_integer (frame->saved_regs[regnum],
-                                              REGISTER_RAW_SIZE (regnum));
-        write_register (regnum, value);
-      }
+  if (frame->saved_regs)
+    {
+      for (regnum = 0; regnum < NUM_REGS; regnum++)
+        if (frame->saved_regs[regnum] != 0)
+          {
+            ULONGEST value;
+            
+            value = read_memory_unsigned_integer (frame->saved_regs[regnum],
+                                                  REGISTER_RAW_SIZE (regnum));
+            write_register (regnum, value);
+          }
 
-  /* Actually cut back the stack.  Remember that the SP's element of
-     saved_regs is the old SP itself, not the address at which it is
-     saved.  */
-  write_register (S390_SP_REGNUM, frame->saved_regs[S390_SP_REGNUM]);
+      /* Actually cut back the stack.  Remember that the SP's element of
+         saved_regs is the old SP itself, not the address at which it is
+         saved.  */
+      write_register (S390_SP_REGNUM, frame->saved_regs[S390_SP_REGNUM]);
+    }
 
   /* Throw away any cached frame information.  */
   flush_cached_frames ();