Introduce catchpoint class

This introduces a catchpoint class that is used as the base class for
all catchpoints.  init_catchpoint is rewritten to be a constructor
instead.

This changes the hierarchy a little -- some catchpoints now inherit
from base_breakpoint whereas previously they did not.  This isn't a
problem, as long as re_set is redefined in catchpoint.
This commit is contained in:
Tom Tromey
2022-05-01 16:11:26 -06:00
parent b68f26dea7
commit fed1c982de
8 changed files with 49 additions and 49 deletions

View File

@@ -7804,23 +7804,18 @@ disable_breakpoints_in_freed_objfile (struct objfile *objfile)
/* See breakpoint.h. */
void
init_catchpoint (struct breakpoint *b,
struct gdbarch *gdbarch, bool temp,
const char *cond_string)
catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
const char *cond_string_)
: base_breakpoint (gdbarch, bp_catchpoint)
{
symtab_and_line sal;
sal.pspace = current_program_space;
/* This should already have been set in the constructor. */
gdb_assert (b->type == bp_catchpoint);
init_raw_breakpoint (b, sal, bp_catchpoint);
init_raw_breakpoint (this, sal, bp_catchpoint);
if (cond_string == nullptr)
b->cond_string.reset ();
else
b->cond_string = make_unique_xstrdup (cond_string);
b->disposition = temp ? disp_del : disp_donttouch;
if (cond_string_ != nullptr)
cond_string = make_unique_xstrdup (cond_string_);
disposition = temp ? disp_del : disp_donttouch;
}
void