diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-03-10 18:06:25 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-03-10 18:06:25 +0000 |
commit | 2acc53b1f290336beebb97183f5b1e3cecb01024 (patch) | |
tree | 4ecdd38808335d243d8abc39f27d3a63395dd688 /gdb/dwarf2-frame-tailcall.c | |
parent | c6a096ee35dde11ab7e29015020753927b187e6d (diff) | |
download | gdb-2acc53b1f290336beebb97183f5b1e3cecb01024.tar.gz |
gdb/
Fix entry-values if the callee called a noreturn function.
* dwarf2-frame-tailcall.c (dwarf2_tailcall_sniffer_first): Use
get_frame_address_in_block. Add new comment.
gdb/testsuite/
Fix entry-values if the callee called a noreturn function.
* gdb.arch/amd64-tailcall-noret.S: New file.
* gdb.arch/amd64-tailcall-noret.c: New file.
* gdb.arch/amd64-tailcall-noret.exp: New file.
Diffstat (limited to 'gdb/dwarf2-frame-tailcall.c')
-rw-r--r-- | gdb/dwarf2-frame-tailcall.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gdb/dwarf2-frame-tailcall.c b/gdb/dwarf2-frame-tailcall.c index b5f95c37349..b82a0517dc5 100644 --- a/gdb/dwarf2-frame-tailcall.c +++ b/gdb/dwarf2-frame-tailcall.c @@ -374,7 +374,9 @@ dwarf2_tailcall_sniffer_first (struct frame_info *this_frame, gdb_assert (*tailcall_cachep == NULL); - this_pc = get_frame_pc (this_frame); + /* PC may be after the function if THIS_FRAME calls noreturn function, + get_frame_address_in_block will decrease it by 1 in such case. */ + this_pc = get_frame_address_in_block (this_frame); /* Catch any unwinding errors. */ TRY_CATCH (except, RETURN_MASK_ERROR) |