event_location_up location
= new_address_location (get_frame_pc (prev_frame), NULL, 0);
create_breakpoint (python_gdbarch,
- location.get (), NULL, thread, NULL,
+ location.get (), NULL, thread, NULL, false,
0,
1 /*temp_flag*/,
bp_breakpoint,
/* Callback for `bpfinishpy_detect_out_scope'. Triggers Python's
`B->out_of_scope' function if B is a FinishBreakpoint out of its scope. */
-static bool
+static void
bpfinishpy_detect_out_scope_cb (struct breakpoint *b,
struct breakpoint *bp_stopped)
{
}
}
}
-
- return 0;
}
/* Attached to `stop' notifications, check if the execution has run
{
gdbpy_enter enter_py (get_current_arch (), current_language);
- iterate_over_breakpoints ([&] (breakpoint *bp)
- {
- return bpfinishpy_detect_out_scope_cb
- (bp, bs == NULL ? NULL : bs->breakpoint_at);
- });
+ for (breakpoint *bp : all_breakpoints_safe ())
+ bpfinishpy_detect_out_scope_cb (bp, bs == NULL ? NULL : bs->breakpoint_at);
}
/* Attached to `exit' notifications, triggers all the necessary out of
{
gdbpy_enter enter_py (target_gdbarch (), current_language);
- iterate_over_breakpoints ([&] (breakpoint *bp)
- {
- return bpfinishpy_detect_out_scope_cb (bp, nullptr);
- });
+ for (breakpoint *bp : all_breakpoints_safe ())
+ bpfinishpy_detect_out_scope_cb (bp, nullptr);
}
/* Initialize the Python finish breakpoint code. */
(PyObject *) &finish_breakpoint_object_type) < 0)
return -1;
- gdb::observers::normal_stop.attach (bpfinishpy_handle_stop);
- gdb::observers::inferior_exit.attach (bpfinishpy_handle_exit);
+ gdb::observers::normal_stop.attach (bpfinishpy_handle_stop,
+ "py-finishbreakpoint");
+ gdb::observers::inferior_exit.attach (bpfinishpy_handle_exit,
+ "py-finishbreakpoint");
return 0;
}