summaryrefslogtreecommitdiff
path: root/gdb/infrun.c
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-03-16 11:13:44 +0000
committerAndrew Burgess <aburgess@redhat.com>2023-04-03 15:04:03 +0100
commit60a13bbcdfb0ce008a77563cea0c34c830d7b170 (patch)
treef779ff8c755fa7126fb483fd28a09e0d3b8fe193 /gdb/infrun.c
parent2e411b8c68eb2b035b31d5b00d940d4be1a0928b (diff)
downloadbinutils-gdb-60a13bbcdfb0ce008a77563cea0c34c830d7b170.tar.gz
gdb: cleanup around some set_momentary_breakpoint_at_pc calls
I noticed a couple of places in infrun.c where we call set_momentary_breakpoint_at_pc, and then set the newly created breakpoint's thread field, these are in: insert_exception_resume_breakpoint insert_exception_resume_from_probe Function set_momentary_breakpoint_at_pc calls set_momentary_breakpoint, which always creates the breakpoint as thread-specific for the current inferior_thread(). The two insert_* functions mentioned above take an arbitrary thread_info* as an argument and set the breakpoint::thread to hold the thread number of that arbitrary thread. However, the insert_* functions store the breakpoint pointer within the current inferior_thread(), so we know that the thread being passed in must be the currently selected thread. What this means is that we can: 1. Assert that the thread being passed in is the currently selected thread, and 2. No longer adjust the breakpoint::thread field, this will already have been set correctly be calling set_momentary_breakpoint_at_pc. There should be no user visible changes after this commit.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r--gdb/infrun.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c
index 8a8439f6da5..87141117dfe 100644
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -8190,6 +8190,9 @@ insert_exception_resume_breakpoint (struct thread_info *tp,
infrun_debug_printf ("exception resume at %lx",
(unsigned long) handler);
+ /* set_momentary_breakpoint_at_pc creates a thread-specific
+ breakpoint for the current inferior thread. */
+ gdb_assert (tp == inferior_thread ());
bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
handler,
bp_exception_resume).release ();
@@ -8197,8 +8200,7 @@ insert_exception_resume_breakpoint (struct thread_info *tp,
/* set_momentary_breakpoint_at_pc invalidates FRAME. */
frame = nullptr;
- bp->thread = tp->global_num;
- inferior_thread ()->control.exception_resume_breakpoint = bp;
+ tp->control.exception_resume_breakpoint = bp;
}
}
catch (const gdb_exception_error &e)
@@ -8228,10 +8230,12 @@ insert_exception_resume_from_probe (struct thread_info *tp,
infrun_debug_printf ("exception resume at %s",
paddress (probe->objfile->arch (), handler));
+ /* set_momentary_breakpoint_at_pc creates a thread-specific breakpoint
+ for the current inferior thread. */
+ gdb_assert (tp == inferior_thread ());
bp = set_momentary_breakpoint_at_pc (get_frame_arch (frame),
handler, bp_exception_resume).release ();
- bp->thread = tp->global_num;
- inferior_thread ()->control.exception_resume_breakpoint = bp;
+ tp->control.exception_resume_breakpoint = bp;
}
/* This is called when an exception has been intercepted. Check to