gdb: Fix printing frame when reversing out of a recursive call with clang

Commit bf2813aff8 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>
This commit is contained in:
Guinevere Larsen
2024-08-14 12:03:57 -03:00
parent d71c16aec2
commit a078084852

View File

@@ -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)