aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorGuinevere Larsen <blarsen@redhat.com>2024-08-14 12:03:57 -0300
committerGuinevere Larsen <blarsen@redhat.com>2024-08-19 09:12:05 -0300
commita0780848529d9f820786e231629f43f4801b2f8a (patch)
treed40df6396b121d640cb0d0ea636fb9622c0137b9 /gdb
parentd71c16aec2a5d9a34791563a48b7347b02718b0e (diff)
downloadbinutils-a0780848529d9f820786e231629f43f4801b2f8a.zip
binutils-a0780848529d9f820786e231629f43f4801b2f8a.tar.gz
binutils-a0780848529d9f820786e231629f43f4801b2f8a.tar.bz2
gdb: Fix printing frame when reversing out of a recursive call with clang
Commit bf2813aff8f2988ad3d53e819a0415abf295c91f introduced some logic to not refresh the step frame id if it detects that the inferior is reverse stepping out of a recursive call, so that we would still print frame information once the inferior stops. However, that logic was overly specific, and wouldn't be hit for inferiors compiled with clang because clang adds line table entries that aren't statements, making process_event_stop_test go through a different branch on the relevant if statement. Fix this by not making the code that detects "reversing out of a recursion" an else clause to the previous if, but a standalone if block. Approved-by: Kevin Buettner <kevinb@redhat.com>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/infrun.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 05e81a0..f2d28ca 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -8245,7 +8245,8 @@ process_event_stop_test (struct execution_control_state *ecs)
"it's not the start of a statement");
}
}
- else if (execution_direction == EXEC_REVERSE
+
+ if (execution_direction == EXEC_REVERSE
&& *curr_frame_id != original_frame_id
&& original_frame_id.code_addr_p && curr_frame_id->code_addr_p
&& original_frame_id.code_addr == curr_frame_id->code_addr)