* s390-tdep.c (s390_frame_saved_pc_nofix): If we get the saved PC
authorJim Blandy <jimb@codesourcery.com>
Thu, 20 Dec 2001 08:54:02 +0000 (08:54 +0000)
committerJim Blandy <jimb@codesourcery.com>
Thu, 20 Dec 2001 08:54:02 +0000 (08:54 +0000)
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;
that way, it's not a lie to set the saved_pc_valid flag.

gdb/ChangeLog
gdb/s390-tdep.c

index 6246f80495076dd5c75543d5c672dad1702f89f6..432c507acf611619b433466c891de22a7cde6992 100644 (file)
@@ -1,5 +1,10 @@
 2001-12-19  Jim Blandy  <jimb@redhat.com>
 
+       * 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;
+       that way, it's not a lie to set the saved_pc_valid flag.
+
        * s390-tdep.c (s390_get_frame_info): Give orig_sp a reasonable
        value, even when fextra_info->stack_bought can't be trusted,
 
index 555d05f2a7112b8f173331e8f6ba3a9c9c47749f..c524657a57acdf72affb267466434b84a60e9f84 100644 (file)
@@ -960,18 +960,16 @@ s390_frame_saved_pc_nofix (struct frame_info *fi)
   if (fi->extra_info)
     {
       fi->extra_info->saved_pc_valid = 1;
-      if (fi->extra_info->good_prologue)
-       {
-         if (fi->saved_regs[S390_RETADDR_REGNUM])
-           {
-             return (fi->extra_info->saved_pc =
-                     ADDR_BITS_REMOVE (read_memory_integer
-                                       (fi->saved_regs[S390_RETADDR_REGNUM],
-                                        S390_GPR_SIZE)));
-           }
-          else
-            return read_register (S390_RETADDR_REGNUM);
-       }
+      if (fi->extra_info->good_prologue
+          && fi->saved_regs[S390_RETADDR_REGNUM])
+        fi->extra_info->saved_pc
+          = ADDR_BITS_REMOVE (read_memory_integer
+                              (fi->saved_regs[S390_RETADDR_REGNUM],
+                               S390_GPR_SIZE));
+      else
+        fi->extra_info->saved_pc
+          = ADDR_BITS_REMOVE (read_register (S390_RETADDR_REGNUM));
+      return fi->extra_info->saved_pc;
     }
   return 0;
 }