]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb/windows: remove disable_breakpoints_in_shlibs call
authorAndrew Burgess <aburgess@redhat.com>
Mon, 24 Feb 2025 13:51:29 +0000 (13:51 +0000)
committerAndrew Burgess <aburgess@redhat.com>
Tue, 25 Feb 2025 11:01:35 +0000 (11:01 +0000)
commita6bc00ff35a42d6d555aa8de97d427074151ae47
tree2c87353533c435d634069793bd68a83c3c111314
parent1e9bd86ccda976c0f7ef513cb5e9ee3eff460768
gdb/windows: remove disable_breakpoints_in_shlibs call

I noticed that the disable_breakpoints_in_shlibs function disables
breakpoints without calling notify_breakpoint_modified.  This commit
is one step towards fixing this issue.

There are currently only two uses of disable_breakpoints_in_shlibs,
one in clear_solib (in solib.c), and the other in
windows_nat_target::do_initial_windows_stuff (in windows-nat.c).

I believe that the call in windows-nat.c can be shown to be redundant,
and therefore can be removed.

windows_nat_target::do_initial_windows_stuff is called from two
places: windows_nat_target::attach and
windows_nat_target::create_inferior, these are the target_ops
functions used to attach to a running process, or for creating a new
process, and are only called from attach_command or run_command_1,
both in infcmd.c.

Both attach_command and run_command_1 call target_pre_inferior before
calling the relevant target_ops function.

In target_pre_inferior, so long as the target doesn't have a global
solist (and windows doesn't), we always call no_shared_libraries (from
solib.c), which calls clear_solib (also in solib.c), which in turn
calls disable_breakpoints_in_shlibs.

My claim then, is that, any time we reach the
disable_breakpoints_in_shlibs call in
windows_nat_target::do_initial_windows_stuff, we will have always have
called disable_breakpoints_in_shlibs already via clear_solib.

I think it should be safe to remove the disable_breakpoints_in_shlibs
call from windows_nat_target::do_initial_windows_stuff.  There should
be no user visible changes.

My ultimate goal, which I'll address in follow on commits, is to
delete disable_breakpoints_in_shlibs completely.  Removing this call
means that we only have one disable_breakpoints_in_shlibs call
remaining in GDB.

Testing for this change has been minimal.  My only Windows build
machine is not great, and I've never managed to get DejaGNU running in
that environment.  This commit builds, and a few basic, manual tests
seem fine, but beyond that, this change is untested.

Approved-By: Tom Tromey <tom@tromey.com>
gdb/windows-nat.c