aboutsummaryrefslogtreecommitdiff
path: root/gdb/blockframe.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1993-10-08 09:54:32 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1993-10-08 09:54:32 +0000
commit747a632937be7247faf5546916056b8d24de4bd0 (patch)
tree2f7e286b46d6932665106b3e8fd034984a3662a1 /gdb/blockframe.c
parentbb959d0ab9d9f80e1da62c8f2c5181d1118c10fc (diff)
downloadgdb-747a632937be7247faf5546916056b8d24de4bd0.zip
gdb-747a632937be7247faf5546916056b8d24de4bd0.tar.gz
gdb-747a632937be7247faf5546916056b8d24de4bd0.tar.bz2
* blockframe.c (get_frame_block): Do not adjust pc if the frame
function was interrupted by a signal.
Diffstat (limited to 'gdb/blockframe.c')
-rw-r--r--gdb/blockframe.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 71c9057..c1af280 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);
}