From: Andrew Cagney Date: Fri, 2 Apr 2004 22:57:32 +0000 (+0000) Subject: 2004-04-02 Joel Brobecker X-Git-Tag: gdb_6_1-2004-04-05-release~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6ed24ee7566b5de523137a020cb622387f897b04;p=thirdparty%2Fbinutils-gdb.git 2004-04-02 Joel Brobecker Committed by Andrew Cagney * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ae126eea15..edc7c7f69d4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2004-04-02 Joel Brobecker + + Committed by Andrew Cagney + * 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 * hppa-tdep.c (hppa32_push_dummy_call): Set the Stack Pointer. diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c index 44b85d1c300..1599eb2a371 100644 --- a/gdb/alpha-tdep.c +++ b/gdb/alpha-tdep.c @@ -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;