summaryrefslogtreecommitdiff
path: root/gdb/dwarf2-frame-tailcall.c
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-03-10 18:06:25 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-03-10 18:06:25 +0000
commit2acc53b1f290336beebb97183f5b1e3cecb01024 (patch)
tree4ecdd38808335d243d8abc39f27d3a63395dd688 /gdb/dwarf2-frame-tailcall.c
parentc6a096ee35dde11ab7e29015020753927b187e6d (diff)
downloadgdb-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.c4
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)