aboutsummaryrefslogtreecommitdiff
path: root/gdb/infcmd.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2012-09-17 07:15:48 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2012-09-17 07:15:48 +0000
commit1ab3b62c9dabd92c26377f25146f1d58e3c766a6 (patch)
tree1d45213a35cc797b007258d309be890307f39de3 /gdb/infcmd.c
parentacf9414f48577b03f303c70f504383709db6a249 (diff)
downloadgdb-1ab3b62c9dabd92c26377f25146f1d58e3c766a6.zip
gdb-1ab3b62c9dabd92c26377f25146f1d58e3c766a6.tar.gz
gdb-1ab3b62c9dabd92c26377f25146f1d58e3c766a6.tar.bz2
gdb/
PR 14119 * frame.c (skip_inlined_frames): Skip also TAILCALL_FRAME frames. (frame_pop): Drop also TAILCALL_FRAME frames. * infcmd.c (finish_command): Ignore also TAILCALL_FRAME frames. gdb/testsuite/ PR 14119 * gdb.arch/amd64-tailcall-ret.S: New file. * gdb.arch/amd64-tailcall-ret.c: New file. * gdb.arch/amd64-tailcall-ret.exp: New file. * gdb.reverse/amd64-tailcall-reverse.S: New file. * gdb.reverse/amd64-tailcall-reverse.c: New file. * gdb.reverse/amd64-tailcall-reverse.exp: New file.
Diffstat (limited to 'gdb/infcmd.c')
-rw-r--r--gdb/infcmd.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 8e2f74e..cce624e 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1777,6 +1777,11 @@ finish_command (char *arg, int from_tty)
return;
}
+ /* Ignore TAILCALL_FRAME type frames, they were executed already before
+ entering THISFRAME. */
+ while (get_frame_type (frame) == TAILCALL_FRAME)
+ frame = get_prev_frame (frame);
+
/* Find the function we will return from. */
function = find_pc_function (get_frame_pc (get_selected_frame (NULL)));