]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2004-04-02 Joel Brobecker <brobecker@gnat.com>
authorAndrew Cagney <cagney@redhat.com>
Fri, 2 Apr 2004 22:57:32 +0000 (22:57 +0000)
committerAndrew Cagney <cagney@redhat.com>
Fri, 2 Apr 2004 22:57:32 +0000 (22:57 +0000)
Committed by Andrew Cagney <cagney@redhat.com>
        * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Do not take
        into account an instruction saving a register if we have already
        seen an earlier instruction saving that same register.

gdb/ChangeLog
gdb/alpha-tdep.c

index 5ae126eea15cc9d54d8217dbd5f62daed80d7377..edc7c7f69d41ec90b3d15bff3535844c513c678c 100644 (file)
@@ -1,3 +1,10 @@
+2004-04-02  Joel Brobecker  <brobecker@gnat.com>
+
+       Committed by Andrew Cagney <cagney@redhat.com>
+        * alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Do not take
+        into account an instruction saving a register if we have already
+        seen an earlier instruction saving that same register.
+
 2004-04-31  J. Brobecker  <brobecker@gnat.com>
 
        * hppa-tdep.c (hppa32_push_dummy_call): Set the Stack Pointer.
index 44b85d1c300bfa3ff082b0e3a1f41d8d0ea5ff95..1599eb2a3719fe7b36006d76c88f03f04c25ca82 100644 (file)
@@ -1029,6 +1029,16 @@ alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
            {
              reg = (word & 0x03e00000) >> 21;
 
+              /* Ignore this instruction if we have already encountered
+                 an instruction saving the same register earlier in the
+                 function code.  The current instruction does not tell
+                 us where the original value upon function entry is saved.
+                 All it says is that the function we are scanning reused
+                 that register for some computation of its own, and is now
+                 saving its result.  */
+              if (info->saved_regs[reg])
+                continue;
+
              if (reg == 31)
                continue;