diff options
author | Johnson Sun <j3.soon777@gmail.com> | 2022-10-21 01:49:18 +0800 |
---|---|---|
committer | Simon Marchi <simon.marchi@polymtl.ca> | 2022-11-18 10:50:45 -0500 |
commit | 6533cbeeb831224e2d2dd2a7bea54b22b798fa39 (patch) | |
tree | 1485eb862e28283864b7d78cf42137d8b9444989 /gdb/python | |
parent | 9c48a8e6f43965b8d530159e5dbb2fc9d6083646 (diff) | |
download | gdb-6533cbeeb831224e2d2dd2a7bea54b22b798fa39.zip gdb-6533cbeeb831224e2d2dd2a7bea54b22b798fa39.tar.gz gdb-6533cbeeb831224e2d2dd2a7bea54b22b798fa39.tar.bz2 |
Fix deletion of FinishBreakpoints
Currently, FinishBreakpoints are set at the return address of a frame based on
the `finish' command, and are meant to be temporary breakpoints. However, they
are not being cleaned up after use, as reported in PR python/18655. This was
happening because the disposition of the breakpoint was not being set
correctly.
This commit fixes this issue by correctly setting the disposition in the
post-stop hook of the breakpoint. It also adds a test to ensure this feature
isn't regressed in the future.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=18655
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-finishbreakpoint.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gdb/python/py-finishbreakpoint.c b/gdb/python/py-finishbreakpoint.c index fdbff5c..5266575 100644 --- a/gdb/python/py-finishbreakpoint.c +++ b/gdb/python/py-finishbreakpoint.c @@ -145,7 +145,7 @@ bpfinishpy_post_stop_hook (struct gdbpy_breakpoint_object *bp_obj) { /* Can't delete it here, but it will be removed at the next stop. */ disable_breakpoint (bp_obj->bp); - gdb_assert (bp_obj->bp->disposition == disp_del); + bp_obj->bp->disposition = disp_del_at_next_stop; } catch (const gdb_exception &except) { |