diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-09-17 07:15:47 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-09-17 07:15:47 +0000 |
commit | d73b8edd178c15180f2ce0f64067bd4235200201 (patch) | |
tree | 880b5ee5b49404daec832802a6de1f71558051c8 /gdb/infcmd.c | |
parent | cfe1428889e3a7dc197421972e108f624e166c33 (diff) | |
download | gdb-d73b8edd178c15180f2ce0f64067bd4235200201.tar.gz |
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.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c index 8e2f74eddba..cce624e464f 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))); |