X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fbreakpoint.h;h=347aeb75f301972d1e39e9fcf801cc1008dec4af;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=dfe7d158beb0dd68a86f2cfb7d7c20aba934194d;hpb=4c462cb0efb40a7a1e5297946bed59286dd0cf02;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index dfe7d158be..347aeb75f3 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1,5 +1,5 @@ /* Data structures associated with breakpoints in GDB. - Copyright (C) 1992-2019 Free Software Foundation, Inc. + Copyright (C) 1992-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -21,7 +21,6 @@ #include "frame.h" #include "value.h" -#include "gdbsupport/vec.h" #include "ax.h" #include "command.h" #include "gdbsupport/break-common.h" @@ -29,6 +28,7 @@ #include "location.h" #include #include "gdbsupport/array-view.h" +#include "gdbsupport/function-view.h" #include "cli/cli-script.h" struct block; @@ -375,7 +375,7 @@ public: agent_expr_up cmd_bytecode; /* Signals that breakpoint conditions and/or commands need to be - re-synched with the target. This has no use other than + re-synced with the target. This has no use other than target-side breakpoints. */ bool needs_update = false; @@ -387,17 +387,17 @@ public: /* Is this particular location enabled. */ bool enabled = false; - /* Nonzero if this breakpoint is now inserted. */ + /* True if this breakpoint is now inserted. */ bool inserted = false; - /* Nonzero if this is a permanent breakpoint. There is a breakpoint + /* True if this is a permanent breakpoint. There is a breakpoint instruction hard-wired into the target's code. Don't try to write another breakpoint instruction on top of it, or restore its value. Step over it using the architecture's gdbarch_skip_permanent_breakpoint method. */ bool permanent = false; - /* Nonzero if this is not the first breakpoint in the list + /* True if this is not the first breakpoint in the list for the given address. location of tracepoint can _never_ be duplicated with other locations of tracepoints and other kinds of breakpoints, because two locations at the same @@ -672,10 +672,10 @@ enum watchpoint_triggered /* Some targets (e.g., embedded PowerPC) need two debug registers to set a watchpoint over a memory region. If this flag is true, GDB will use - only one register per watchpoint, thus assuming that all acesses that + only one register per watchpoint, thus assuming that all accesses that modify a memory location happen at its starting address. */ -extern int target_exact_watchpoints; +extern bool target_exact_watchpoints; /* Note that the ->silent field is not currently used by any commands (though the code is in there if it was to be, and set_raw_breakpoint @@ -734,9 +734,8 @@ struct breakpoint event_location_up location; /* The filter that should be passed to decode_line_full when - re-setting this breakpoint. This may be NULL, but otherwise is - allocated with xmalloc. */ - char *filter = NULL; + re-setting this breakpoint. This may be NULL. */ + gdb::unique_xmalloc_ptr filter; /* For a ranged breakpoint, the location we used to find the end of the range. */ @@ -818,9 +817,10 @@ struct watchpoint : public breakpoint we do not know the value yet or the value was not readable. VAL is never lazy. */ value_ref_ptr val; - /* Nonzero if VAL is valid. If VAL_VALID is set but VAL is NULL, + + /* True if VAL is valid. If VAL_VALID is set but VAL is NULL, then an error occurred reading the value. */ - int val_valid; + bool val_valid; /* When watching the location of a bitfield, contains the offset and size of the bitfield. Otherwise contains 0. */ @@ -866,11 +866,12 @@ extern struct breakpoint *breakpoint_find_if /* Return true if BPT is either a software breakpoint or a hardware breakpoint. */ -extern int is_breakpoint (const struct breakpoint *bpt); +extern bool is_breakpoint (const struct breakpoint *bpt); -/* Returns true if BPT is really a watchpoint. */ +/* Return true if BPT is of any watchpoint kind, hardware or + software. */ -extern int is_watchpoint (const struct breakpoint *bpt); +extern bool is_watchpoint (const struct breakpoint *bpt); /* Return true if BPT is a C++ exception catchpoint (catch catch/throw/rethrow). */ @@ -1193,11 +1194,6 @@ enum breakpoint_here /* Prototypes for breakpoint-related functions. */ -/* Return 1 if there's a program/permanent breakpoint planted in - memory at ADDRESS, return 0 otherwise. */ - -extern int program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address); - extern enum breakpoint_here breakpoint_here_p (const address_space *, CORE_ADDR); @@ -1298,9 +1294,6 @@ const char *bpdisp_text (enum bpdisp disp); extern void break_command (const char *, int); -extern void hbreak_command_wrapper (const char *, int); -extern void thbreak_command_wrapper (const char *, int); -extern void rbreak_command_wrapper (const char *, int); extern void watch_command_wrapper (const char *, int, int); extern void awatch_command_wrapper (const char *, int, int); extern void rwatch_command_wrapper (const char *, int, int); @@ -1354,6 +1347,15 @@ extern void init_catchpoint (struct breakpoint *b, extern void install_breakpoint (int internal, std::unique_ptr &&b, int update_gll); +/* Returns the breakpoint ops appropriate for use with with LOCATION and + according to IS_TRACEPOINT. Use this to ensure, for example, that you pass + the correct ops to create_breakpoint for probe locations. If LOCATION is + NULL, returns bkpt_breakpoint_ops (or tracepoint_breakpoint_ops, if + IS_TRACEPOINT is true). */ + +extern const struct breakpoint_ops *breakpoint_ops_for_event_location + (const struct event_location *location, bool is_tracepoint); + /* Flags that can be passed down to create_breakpoint, etc., to affect breakpoint creation in several ways. */ @@ -1554,8 +1556,9 @@ extern void remove_solib_event_breakpoints_at_next_stop (void); extern void disable_breakpoints_in_shlibs (void); -/* This function returns TRUE if ep is a catchpoint. */ -extern int is_catchpoint (struct breakpoint *); +/* This function returns true if B is a catchpoint. */ + +extern bool is_catchpoint (struct breakpoint *b); /* Shared helper function (MI and CLI) for creating and installing a shared object event catchpoint. */ @@ -1634,7 +1637,9 @@ extern struct tracepoint * /* Return a vector of all tracepoints currently defined. */ extern std::vector all_tracepoints (void); -extern int is_tracepoint (const struct breakpoint *b); +/* Return true if B is of tracepoint kind. */ + +extern bool is_tracepoint (const struct breakpoint *b); /* Return a vector of all static tracepoints defined at ADDR. */ extern std::vector static_tracepoints_here (CORE_ADDR addr); @@ -1660,8 +1665,8 @@ public: returned. This can be useful for implementing a search for a breakpoint with arbitrary attributes, or for applying an operation to every breakpoint. */ -extern struct breakpoint *iterate_over_breakpoints (int (*) (struct breakpoint *, - void *), void *); +extern struct breakpoint *iterate_over_breakpoints + (gdb::function_view); /* Nonzero if the specified PC cannot be a location where functions have been inlined. */