public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Refactor set_internal_breakpoint / internal_breakpoint ctor
@ 2022-05-20 19:43 Pedro Alves
0 siblings, 0 replies; only message in thread
From: Pedro Alves @ 2022-05-20 19:43 UTC (permalink / raw)
To: gdb-cvs
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=752a2291b120ef2923615123f8a5ada334745f08
commit 752a2291b120ef2923615123f8a5ada334745f08
Author: Pedro Alves <pedro@palves.net>
Date: Sat May 7 00:50:24 2022 +0100
Refactor set_internal_breakpoint / internal_breakpoint ctor
This moves initialization of internal_breakpoint's breakpoint fields
to internal_breakpoint's ctor, and stops using
new_breakpoint_from_type for internal_breakpoint breakpoints.
Change-Id: I898ed0565f47cb00e4429f1c6446e6f9a385a78d
Diff:
---
gdb/breakpoint.c | 37 ++++++++++++++++++-------------------
1 file changed, 18 insertions(+), 19 deletions(-)
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index ec7a8ea2322..1695889db99 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -119,6 +119,8 @@ static struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
struct symtab_and_line,
enum bptype);
+static breakpoint *add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b);
+
static struct breakpoint *
momentary_breakpoint_from_master (struct breakpoint *orig,
enum bptype type,
@@ -276,7 +278,19 @@ struct ordinary_breakpoint : public base_breakpoint
/* Internal breakpoints. */
struct internal_breakpoint : public base_breakpoint
{
- using base_breakpoint::base_breakpoint;
+ internal_breakpoint (struct gdbarch *gdbarch,
+ enum bptype type, CORE_ADDR address)
+ : base_breakpoint (gdbarch, type)
+ {
+ symtab_and_line sal;
+ sal.pc = address;
+ sal.section = find_pc_overlay (sal.pc);
+ sal.pspace = current_program_space;
+ add_location (sal);
+
+ pspace = current_program_space;
+ disposition = disp_donttouch;
+ }
void re_set () override;
void check_status (struct bpstat *bs) override;
@@ -1285,17 +1299,6 @@ new_breakpoint_from_type (struct gdbarch *gdbarch, bptype type,
std::forward<Arg> (args)...);
break;
- case bp_overlay_event:
- case bp_longjmp_master:
- case bp_std_terminate_master:
- case bp_exception_master:
- case bp_thread_event:
- case bp_jit_event:
- case bp_shlib_event:
- b = new internal_breakpoint (gdbarch, type,
- std::forward<Arg> (args)...);
- break;
-
case bp_longjmp:
case bp_exception:
b = new longjmp_breakpoint (gdbarch, type,
@@ -3294,16 +3297,12 @@ static struct breakpoint *
create_internal_breakpoint (struct gdbarch *gdbarch,
CORE_ADDR address, enum bptype type)
{
- symtab_and_line sal;
- sal.pc = address;
- sal.section = find_pc_overlay (sal.pc);
- sal.pspace = current_program_space;
+ std::unique_ptr<internal_breakpoint> b
+ (new internal_breakpoint (gdbarch, type, address));
- breakpoint *b = set_raw_breakpoint (gdbarch, sal, type);
b->number = internal_breakpoint_number--;
- b->disposition = disp_donttouch;
- return b;
+ return add_to_breakpoint_chain (std::move (b));
}
static const char *const longjmp_names[] =
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-20 19:43 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-20 19:43 [binutils-gdb] Refactor set_internal_breakpoint / internal_breakpoint ctor Pedro Alves
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).