From: Peter Schauer Date: Fri, 8 Oct 1993 09:54:32 +0000 (+0000) Subject: * blockframe.c (get_frame_block): Do not adjust pc if the frame X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=747a632937be7247faf5546916056b8d24de4bd0;p=binutils-gdb.git * blockframe.c (get_frame_block): Do not adjust pc if the frame function was interrupted by a signal. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 38500719afd..13ba1afd4bd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Fri Oct 8 02:34:21 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) + + * blockframe.c (get_frame_block): Do not adjust pc if the frame + function was interrupted by a signal. + Thu Oct 7 19:20:11 1993 Jim Kingdon (kingdon@lioth.cygnus.com) * config/h8300/tm-h8300.h: Don't define sr_get_debug. @@ -50,7 +55,7 @@ Thu Oct 7 06:22:43 1993 Jim Kingdon (kingdon@lioth.cygnus.com) * config/sparc/sun4os4.mh: Add comment saying why we don't use -lresolv. -Thu Oct 07 09:29:11 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) +Thu Oct 7 09:29:11 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) * breakpoint.c, breakpoint.h (breakpoint_init_inferior): New function that clears the `inserted' flag for all breakpoints and deletes @@ -62,7 +67,7 @@ Thu Oct 07 09:29:11 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) uses it in a completely different context. * breakpoint.c (breakpoint_re_set_one): Add bp_call_dummy case. -Thu Oct 07 09:29:11 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) +Thu Oct 7 09:29:11 1993 Peter Schauer (pes@regent.e-technik.tu-muenchen.de) * Makefile.in (REGEX, REGEX1): Always use our own version of regex.c to be consistent across hosts. diff --git a/gdb/blockframe.c b/gdb/blockframe.c index 71c905798c6..c1af2806e2e 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -446,12 +446,13 @@ get_frame_block (frame) fi = get_frame_info (frame); pc = fi->pc; - if (fi->next != 0) - /* We are not in the innermost frame. We need to subtract one to - get the correct block, in case the call instruction was the - last instruction of the block. If there are any machines on - which the saved pc does not point to after the call insn, we - probably want to make fi->pc point after the call insn anyway. */ + if (fi->next != 0 && fi->next->signal_handler_caller == 0) + /* We are not in the innermost frame and we were not interrupted + by a signal. We need to subtract one to get the correct block, + in case the call instruction was the last instruction of the block. + If there are any machines on which the saved pc does not point to + after the call insn, we probably want to make fi->pc point after + the call insn anyway. */ --pc; return block_for_pc (pc); }