diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2024-03-27 09:16:27 +0100 |
---|---|---|
committer | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2024-04-26 19:41:41 +0200 |
commit | 354f8d0a1f98a1ade9b669f9200a9c23d22349fe (patch) | |
tree | a67ce232c92284be5f1e428a7533a8aa569fdde9 /gdb/infrun.c | |
parent | d830e565e704efc62c0b21d55ee35a035110e235 (diff) | |
download | gdb-354f8d0a1f98a1ade9b669f9200a9c23d22349fe.zip gdb-354f8d0a1f98a1ade9b669f9200a9c23d22349fe.tar.gz gdb-354f8d0a1f98a1ade9b669f9200a9c23d22349fe.tar.bz2 |
Remove unnecessary get_current_frame calls from infrun.c
Since the frame variable is now a frame_info_ptr, the issue
with the dangling frame pointer is apparently no longer there.
So remove the re-fetch code and the corresponding meanwhile
misleading comments.
Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index d23be9e..2b6c120 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -7056,11 +7056,6 @@ handle_signal_stop (struct execution_control_state *ecs) ecs->event_thread->stop_pc (), ecs->ws); skip_inline_frames (ecs->event_thread, stop_chain); - - /* Re-fetch current thread's frame in case that invalidated - the frame cache. */ - frame = get_current_frame (); - gdbarch = get_frame_arch (frame); } } @@ -7419,12 +7414,6 @@ process_event_stop_test (struct execution_control_state *ecs) bp_jit_event). Run them now. */ bpstat_run_callbacks (ecs->event_thread->control.stop_bpstat); - /* If we hit an internal event that triggers symbol changes, the - current frame will be invalidated within bpstat_what (e.g., if we - hit an internal solib event). Re-fetch it. */ - frame = get_current_frame (); - gdbarch = get_frame_arch (frame); - /* Shorthand to make if statements smaller. */ struct frame_id original_frame_id = ecs->event_thread->control.step_frame_id; @@ -7670,11 +7659,6 @@ process_event_stop_test (struct execution_control_state *ecs) return; } - /* Re-fetch current thread's frame in case the code above caused - the frame cache to be re-initialized, making our FRAME variable - a dangling pointer. */ - frame = get_current_frame (); - gdbarch = get_frame_arch (frame); fill_in_stop_func (gdbarch, ecs); /* If stepping through a line, keep going if still within it. @@ -7855,7 +7839,7 @@ process_event_stop_test (struct execution_control_state *ecs) if ((get_stack_frame_id (frame) != ecs->event_thread->control.step_stack_frame_id) && get_frame_type (frame) != SIGTRAMP_FRAME - && ((frame_unwind_caller_id (get_current_frame ()) + && ((frame_unwind_caller_id (frame) == ecs->event_thread->control.step_stack_frame_id) && ((ecs->event_thread->control.step_stack_frame_id != outer_frame_id) @@ -8138,7 +8122,7 @@ process_event_stop_test (struct execution_control_state *ecs) { infrun_debug_printf ("stepped into inlined function"); - symtab_and_line call_sal = find_frame_sal (get_current_frame ()); + symtab_and_line call_sal = find_frame_sal (frame); if (ecs->event_thread->control.step_over_calls != STEP_OVER_ALL) { @@ -8180,9 +8164,9 @@ process_event_stop_test (struct execution_control_state *ecs) to go further up to find the exact frame ID, we are stepping through a more inlined call beyond its call site. */ - if (get_frame_type (get_current_frame ()) == INLINE_FRAME + if (get_frame_type (frame) == INLINE_FRAME && (*curr_frame_id != original_frame_id) - && stepped_in_from (get_current_frame (), original_frame_id)) + && stepped_in_from (frame, original_frame_id)) { infrun_debug_printf ("stepping through inlined function"); |