diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e1347daa2e6..adad3030d83 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +Mon Apr 26 07:13:32 1993 Jim Kingdon (kingdon@cygnus.com) + + * rs6000-tdep.c (branch_dest): Deal with stepping through system call. + + * symtab.h, xcoffread.c: Revise linetable sorting comments. + Sun Apr 25 02:32:16 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) * valops.c (value_cast): A cast might also change the object diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c index 12d33619854..e783c1e4e43 100644 --- a/gdb/rs6000-tdep.c +++ b/gdb/rs6000-tdep.c @@ -106,8 +106,15 @@ branch_dest (opcode, instr, pc, safety) dest = read_register (LR_REGNUM) & ~3; else if (ext_op == 528) /* br cond to count reg */ - dest = read_register (CTR_REGNUM) & ~3; + { + dest = read_register (CTR_REGNUM) & ~3; + /* If we are about to execute a system call, dest is something + like 0x22fc or 0x3b00. Upon completion the system call + will return to the address in the link register. */ + if (dest < TEXT_SEGMENT_BASE) + dest = read_register (LR_REGNUM) & ~3; + } else return -1; break;