X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fbreakpoint.h;h=63cb5370c16aa6bb5b2e7f382c0d139fcda472f5;hb=fcaad03cc027ec2cdf7f2cff70d792867d43c57f;hp=aa06d116a4d0be933de7aeea20fad5159c83e2d4;hpb=454dafbdf2d1293a9b18a6fe9e9c9e0911eb740c;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index aa06d116a4..63cb5370c1 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -1,5 +1,5 @@ /* Data structures associated with breakpoints in GDB. - Copyright (C) 1992-2017 Free Software Foundation, Inc. + Copyright (C) 1992-2018 Free Software Foundation, Inc. This file is part of GDB. @@ -31,7 +31,6 @@ #include "common/array-view.h" #include "cli/cli-script.h" -struct value; struct block; struct gdbpy_breakpoint_object; struct gdbscm_breakpoint_object; @@ -41,6 +40,7 @@ struct bpstats; struct bp_location; struct linespec_result; struct linespec_sals; +struct inferior; /* Why are we removing the breakpoint from the target? */ @@ -491,6 +491,14 @@ public: ascertain when an event location was set at a different location than the one originally selected by parsing, e.g., inlined symbols. */ const struct symbol *symbol = NULL; + + /* Similarly, the minimal symbol found by the location parser, if + any. This may be used to ascertain if the location was + originally set on a GNU ifunc symbol. */ + const minimal_symbol *msymbol = NULL; + + /* The objfile the symbol or minimal symbol were found in. */ + const struct objfile *objfile = NULL; }; /* The possible return values for print_bpstat, print_it_normal, @@ -659,13 +667,6 @@ enum watchpoint_triggered watch_triggered_yes }; -typedef struct bp_location *bp_location_p; -DEF_VEC_P(bp_location_p); - -/* A reference-counted struct command_line. This is an implementation - detail to the breakpoints module. */ -typedef std::shared_ptr counted_command_line; - /* 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 @@ -813,7 +814,7 @@ struct watchpoint : public breakpoint /* Value of the watchpoint the last time we checked it, or NULL when we do not know the value yet or the value was not readable. VAL is never lazy. */ - struct value *val; + value_ref_ptr val; /* Nonzero if VAL is valid. If VAL_VALID is set but VAL is NULL, then an error occurred reading the value. */ int val_valid; @@ -889,7 +890,7 @@ struct tracepoint : public breakpoint ULONGEST traceframe_usage; /* The static tracepoint marker id, if known. */ - char *static_trace_marker_id; + std::string static_trace_marker_id; /* LTTng/UST allow more than one marker with the same ID string, although it unadvised because it confuses tools. When setting @@ -900,8 +901,6 @@ struct tracepoint : public breakpoint int static_trace_marker_id_idx; }; -typedef struct breakpoint *breakpoint_p; -DEF_VEC_P(breakpoint_p); /* The following stuff is an abstract data type "bpstat" ("breakpoint status"). This provides the ability to determine whether we have @@ -917,9 +916,37 @@ extern void bpstat_clear (bpstat *); is part of the bpstat is copied as well. */ extern bpstat bpstat_copy (bpstat); -extern bpstat bpstat_stop_status (const address_space *aspace, - CORE_ADDR pc, ptid_t ptid, +/* Build the (raw) bpstat chain for the stop information given by ASPACE, + BP_ADDR, and WS. Returns the head of the bpstat chain. */ + +extern bpstat build_bpstat_chain (const address_space *aspace, + CORE_ADDR bp_addr, const struct target_waitstatus *ws); + +/* Get a bpstat associated with having just stopped at address + BP_ADDR in thread PTID. STOP_CHAIN may be supplied as a previously + computed stop chain or NULL, in which case the stop chain will be + computed using build_bpstat_chain. + + Determine whether we stopped at a breakpoint, etc, or whether we + don't understand this stop. Result is a chain of bpstat's such + that: + + if we don't understand the stop, the result is a null pointer. + + if we understand why we stopped, the result is not null. + + Each element of the chain refers to a particular breakpoint or + watchpoint at which we have stopped. (We may have stopped for + several reasons concurrently.) + + Each element of the chain has valid next, breakpoint_at, + commands, FIXME??? fields. */ + +extern bpstat bpstat_stop_status (const address_space *aspace, + CORE_ADDR pc, thread_info *thread, + const struct target_waitstatus *ws, + bpstat stop_chain = NULL); /* This bpstat_what stuff tells wait_for_inferior what to do with a breakpoint (a challenging task). @@ -1125,7 +1152,7 @@ struct bpstats counted_command_line commands; /* Old value associated with a watchpoint. */ - struct value *old_val; + value_ref_ptr old_val; /* Nonzero if this breakpoint tells us to print the frame. */ char print; @@ -1261,15 +1288,15 @@ extern struct command_line *breakpoint_commands (struct breakpoint *b); NOT be deallocated after use. */ const char *bpdisp_text (enum bpdisp disp); -extern void break_command (char *, int); +extern void break_command (const char *, int); -extern void hbreak_command_wrapper (char *, int); -extern void thbreak_command_wrapper (char *, int); -extern void rbreak_command_wrapper (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); -extern void tbreak_command (char *, int); +extern void tbreak_command (const char *, int); extern struct breakpoint_ops base_breakpoint_ops; extern struct breakpoint_ops bkpt_breakpoint_ops; @@ -1288,7 +1315,7 @@ extern void initialize_breakpoint_ops (void); extern void add_catch_command (const char *name, const char *docstring, - cmd_sfunc_ftype *sfunc, + cmd_const_sfunc_ftype *sfunc, completer_ftype *completer, void *user_data_catch, void *user_data_tcatch); @@ -1365,7 +1392,7 @@ extern void insert_breakpoints (void); extern int remove_breakpoints (void); -extern int remove_breakpoints_pid (int pid); +extern int remove_breakpoints_inf (inferior *inf); /* This function can be used to update the breakpoint package's state after an exec() system call has been executed. @@ -1480,7 +1507,7 @@ extern void disable_breakpoint (struct breakpoint *); extern void enable_breakpoint (struct breakpoint *); extern void breakpoint_set_commands (struct breakpoint *b, - command_line_up &&commands); + counted_command_line &&commands); extern void breakpoint_set_silent (struct breakpoint *b, int silent); @@ -1591,23 +1618,16 @@ extern struct tracepoint *get_tracepoint_by_number_on_target (int num); /* Find a tracepoint by parsing a number in the supplied string. */ extern struct tracepoint * - get_tracepoint_by_number (char **arg, + get_tracepoint_by_number (const char **arg, number_or_range_parser *parser); -/* Return a vector of all tracepoints currently defined. The vector - is newly allocated; the caller should free when done with it. */ -extern VEC(breakpoint_p) *all_tracepoints (void); +/* Return a vector of all tracepoints currently defined. */ +extern std::vector all_tracepoints (void); extern int is_tracepoint (const struct breakpoint *b); -/* Return a vector of all static tracepoints defined at ADDR. The - vector is newly allocated; the caller should free when done with - it. */ -extern VEC(breakpoint_p) *static_tracepoints_here (CORE_ADDR addr); - -/* Function that can be passed to read_command_line to validate - that each command is suitable for tracepoint command list. */ -extern void check_tracepoint_command (char *line, void *closure); +/* Return a vector of all static tracepoints defined at ADDR. */ +extern std::vector static_tracepoints_here (CORE_ADDR addr); /* Create an instance of this to start registering breakpoint numbers for a later "commands" command. */