]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
gdb, breakpoint: add a destructor to the watchpoint struct
authorMohamed Bouhaouel <mohamed.bouhaouel@intel.com>
Fri, 30 Jun 2023 08:10:15 +0000 (10:10 +0200)
committerTom Tromey <tromey@adacore.com>
Tue, 19 Sep 2023 12:56:53 +0000 (06:56 -0600)
commit093da43d2adb4497dfec8afbb4eeaf2425668fdd
tree17a7c274bf741c4888997021519c2ccf0e17da02
parent12f567bcb640285b0afab74e2ac8d471a175722d
gdb, breakpoint: add a destructor to the watchpoint struct

Make sure to unlink the related breakpoint when the watchpoint instance
is deleted.  This prevents having a wp-related breakpoint that is
linked to a NULL watchpoint (e.g.  the watchpoint instance is being
deleted when the 'watch' command fails).  With the below scenario,
having such a left out breakpoint will lead to a GDB hang, and this
is due to an infinite loop when deleting all inferior breakpoints.

Scenario:
(gdb) set can-use-hw-watchpoints 0
(gdb) awatch <SCOPE VAR>
Can't set read/access watchpoint when hardware watchpoints are disabled.
(gdb) rwatch <SCOPE VAR>
Can't set read/access watchpoint when hardware watchpoints are disabled.
(gdb) <continue the program until the end>
>> HANG <<

Signed-off-by: Mohamed Bouhaouel <mohamed.bouhaouel@intel.com>
Reviewed-by: Bruno Larsen <blarsen@redhat.com>
gdb/breakpoint.c
gdb/breakpoint.h
gdb/testsuite/gdb.base/scope-hw-watch-disable.c [new file with mode: 0644]
gdb/testsuite/gdb.base/scope-hw-watch-disable.exp [new file with mode: 0644]