Introduce gdb_breakpoint_up
This introduces gdb_breakpoint_up, a unique_ptr typedef that owns a breakpoint. It then changes set_momentary_breakpoint to return a gdb_breakpoint_up and fixes up the fallout. This then allows the removal of make_cleanup_delete_breakpoint. Once breakpoints are fully C++-ified, this typedef can be removed in favor of a plain std::unique_ptr. gdb/ChangeLog 2017-11-04 Tom Tromey <tom@tromey.com> * breakpoint.c (set_momentary_breakpoint): Return breakpoint_up. (until_break_command): Update. (new_until_break_fsm): Change argument types to breakpoint_up. (set_momentary_breakpoint_at_pc): Return breakpoint_up. (do_delete_breakpoint_cleanup, make_cleanup_delete_breakpoint): Remove. * infcmd.c (finish_forward): Update. * breakpoint.h (set_momentary_breakpoint) (set_momentary_breakpoint_at_pc): Return breakpoint_up. (make_cleanup_delete_breakpoint): Remove. (struct breakpoint_deleter): New. (breakpoint_up): New typedef. * infrun.c (insert_step_resume_breakpoint_at_sal_1): Update. (insert_exception_resume_breakpoint): Update. (insert_exception_resume_from_probe): Update. (insert_longjmp_resume_breakpoint): Update. * arm-linux-tdep.c (arm_linux_copy_svc): Update. * elfread.c (elf_gnu_ifunc_resolver_stop): Update. * infcall.c (call_function_by_hand_dummy): Update
This commit is contained in:
parent
331b71e5ee
commit
454dafbdf2
8 changed files with 63 additions and 41 deletions
|
@ -1223,10 +1223,22 @@ extern void breakpoint_re_set (void);
|
|||
|
||||
extern void breakpoint_re_set_thread (struct breakpoint *);
|
||||
|
||||
extern struct breakpoint *set_momentary_breakpoint
|
||||
extern void delete_breakpoint (struct breakpoint *);
|
||||
|
||||
struct breakpoint_deleter
|
||||
{
|
||||
void operator() (struct breakpoint *b) const
|
||||
{
|
||||
delete_breakpoint (b);
|
||||
}
|
||||
};
|
||||
|
||||
typedef std::unique_ptr<struct breakpoint, breakpoint_deleter> breakpoint_up;
|
||||
|
||||
extern breakpoint_up set_momentary_breakpoint
|
||||
(struct gdbarch *, struct symtab_and_line, struct frame_id, enum bptype);
|
||||
|
||||
extern struct breakpoint *set_momentary_breakpoint_at_pc
|
||||
extern breakpoint_up set_momentary_breakpoint_at_pc
|
||||
(struct gdbarch *, CORE_ADDR pc, enum bptype type);
|
||||
|
||||
extern struct breakpoint *clone_momentary_breakpoint (struct breakpoint *bpkt);
|
||||
|
@ -1235,10 +1247,6 @@ extern void set_ignore_count (int, int, int);
|
|||
|
||||
extern void breakpoint_init_inferior (enum inf_context);
|
||||
|
||||
extern struct cleanup *make_cleanup_delete_breakpoint (struct breakpoint *);
|
||||
|
||||
extern void delete_breakpoint (struct breakpoint *);
|
||||
|
||||
extern void breakpoint_auto_delete (bpstat);
|
||||
|
||||
typedef void (*walk_bp_location_callback) (struct bp_location *, void *);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue