]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/breakpoint.c
Add R_AARCH64_P32_MOVW_PREL_* ELF32 relocs
[thirdparty/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
42a4f53d 3 Copyright (C) 1986-2019 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
d55e5aa6 21#include "arch-utils.h"
4de283e4
TT
22#include <ctype.h>
23#include "hashtab.h"
24#include "symtab.h"
25#include "frame.h"
c906108c 26#include "breakpoint.h"
4de283e4
TT
27#include "tracepoint.h"
28#include "gdbtypes.h"
c906108c 29#include "expression.h"
d55e5aa6 30#include "gdbcore.h"
4de283e4
TT
31#include "gdbcmd.h"
32#include "value.h"
33#include "command.h"
c906108c 34#include "inferior.h"
45741a9c 35#include "infrun.h"
4de283e4
TT
36#include "gdbthread.h"
37#include "target.h"
c906108c 38#include "language.h"
4de283e4
TT
39#include "gdb-demangle.h"
40#include "filenames.h"
41#include "annotate.h"
42#include "symfile.h"
d55e5aa6 43#include "objfiles.h"
4de283e4
TT
44#include "source.h"
45#include "linespec.h"
46#include "completer.h"
47#include "ui-out.h"
48#include "cli/cli-script.h"
49#include "block.h"
50#include "solib.h"
51#include "solist.h"
d55e5aa6 52#include "observable.h"
4de283e4
TT
53#include "memattr.h"
54#include "ada-lang.h"
55#include "top.h"
56#include "valprint.h"
57#include "jit.h"
65d79d4b 58#include "parser-defs.h"
4de283e4 59#include "gdb_regex.h"
55aa24fb 60#include "probe.h"
4de283e4
TT
61#include "cli/cli-utils.h"
62#include "continuations.h"
d55e5aa6 63#include "stack.h"
4de283e4
TT
64#include "skip.h"
65#include "ax-gdb.h"
66#include "dummy-frame.h"
67#include "interps.h"
68#include "common/format.h"
cfc31633 69#include "thread-fsm.h"
5d5658a1 70#include "tid-parse.h"
4de283e4
TT
71#include "cli/cli-style.h"
72#include "mi/mi-main.h"
d3ce09f5 73
1042e4c0
SS
74/* readline include files */
75#include "readline/readline.h"
76#include "readline/history.h"
77
78/* readline defines this. */
79#undef savestring
80
034dad6f 81#include "mi/mi-common.h"
6dddc817 82#include "extension.h"
325fac50 83#include <algorithm>
5ed8105e 84#include "progspace-and-thread.h"
6c5b2ebe 85#include "common/array-view.h"
76f9c9cf 86#include "common/gdb_optional.h"
104c1213 87
e7e8980f
YQ
88/* Enums for exception-handling support. */
89enum exception_event_kind
90{
91 EX_EVENT_THROW,
591f19e8 92 EX_EVENT_RETHROW,
e7e8980f
YQ
93 EX_EVENT_CATCH
94};
95
4a64f543 96/* Prototypes for local functions. */
c906108c 97
896b6bda 98static void map_breakpoint_numbers (const char *,
48649e1b 99 gdb::function_view<void (breakpoint *)>);
c906108c 100
348d480f
PA
101static void breakpoint_re_set_default (struct breakpoint *);
102
f00aae0f
KS
103static void
104 create_sals_from_location_default (const struct event_location *location,
105 struct linespec_result *canonical,
106 enum bptype type_wanted);
983af33b
SDJ
107
108static void create_breakpoints_sal_default (struct gdbarch *,
109 struct linespec_result *,
e1e01040
PA
110 gdb::unique_xmalloc_ptr<char>,
111 gdb::unique_xmalloc_ptr<char>,
112 enum bptype,
983af33b
SDJ
113 enum bpdisp, int, int,
114 int,
115 const struct breakpoint_ops *,
44f238bb 116 int, int, int, unsigned);
983af33b 117
6c5b2ebe
PA
118static std::vector<symtab_and_line> decode_location_default
119 (struct breakpoint *b, const struct event_location *location,
120 struct program_space *search_pspace);
983af33b 121
a6535de1
TT
122static int can_use_hardware_watchpoint
123 (const std::vector<value_ref_ptr> &vals);
c906108c 124
a14ed312 125static void mention (struct breakpoint *);
c906108c 126
348d480f
PA
127static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
128 enum bptype,
c0a91b2b 129 const struct breakpoint_ops *);
3742cc8b
YQ
130static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
131 const struct symtab_and_line *);
132
4a64f543
MS
133/* This function is used in gdbtk sources and thus can not be made
134 static. */
63c252f8 135struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 136 struct symtab_and_line,
c0a91b2b
TT
137 enum bptype,
138 const struct breakpoint_ops *);
c906108c 139
06edf0c0
PA
140static struct breakpoint *
141 momentary_breakpoint_from_master (struct breakpoint *orig,
142 enum bptype type,
a1aa2221
LM
143 const struct breakpoint_ops *ops,
144 int loc_enabled);
06edf0c0 145
76897487
KB
146static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
147
a6d9a66e
UW
148static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
149 CORE_ADDR bpaddr,
88f7da05 150 enum bptype bptype);
76897487 151
6c95b8df
PA
152static void describe_other_breakpoints (struct gdbarch *,
153 struct program_space *, CORE_ADDR,
5af949e3 154 struct obj_section *, int);
c906108c 155
85d721b8
PA
156static int watchpoint_locations_match (struct bp_location *loc1,
157 struct bp_location *loc2);
158
f1310107 159static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 160 const struct address_space *aspace,
f1310107
TJB
161 CORE_ADDR addr);
162
d35ae833 163static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 164 const address_space *,
d35ae833
PA
165 CORE_ADDR, int);
166
834c0d03 167static int remove_breakpoint (struct bp_location *);
b2b6a7da 168static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 169
e514a9d6 170static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 171
a14ed312 172static int hw_breakpoint_used_count (void);
c906108c 173
a1398e0c
PA
174static int hw_watchpoint_use_count (struct breakpoint *);
175
176static int hw_watchpoint_used_count_others (struct breakpoint *except,
177 enum bptype type,
178 int *other_type_used);
c906108c 179
816338b5
SS
180static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
181 int count);
c906108c 182
fe3f5fa8 183static void free_bp_location (struct bp_location *loc);
f431efe5
PA
184static void incref_bp_location (struct bp_location *loc);
185static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 186
39d61571 187static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 188
44702360
PA
189/* update_global_location_list's modes of operation wrt to whether to
190 insert locations now. */
191enum ugll_insert_mode
192{
193 /* Don't insert any breakpoint locations into the inferior, only
194 remove already-inserted locations that no longer should be
195 inserted. Functions that delete a breakpoint or breakpoints
196 should specify this mode, so that deleting a breakpoint doesn't
197 have the side effect of inserting the locations of other
198 breakpoints that are marked not-inserted, but should_be_inserted
199 returns true on them.
200
201 This behavior is useful is situations close to tear-down -- e.g.,
202 after an exec, while the target still has execution, but
203 breakpoint shadows of the previous executable image should *NOT*
204 be restored to the new image; or before detaching, where the
205 target still has execution and wants to delete breakpoints from
206 GDB's lists, and all breakpoints had already been removed from
207 the inferior. */
208 UGLL_DONT_INSERT,
209
a25a5a45
PA
210 /* May insert breakpoints iff breakpoints_should_be_inserted_now
211 claims breakpoints should be inserted now. */
04086b45
PA
212 UGLL_MAY_INSERT,
213
a25a5a45
PA
214 /* Insert locations now, irrespective of
215 breakpoints_should_be_inserted_now. E.g., say all threads are
216 stopped right now, and the user did "continue". We need to
217 insert breakpoints _before_ resuming the target, but
218 UGLL_MAY_INSERT wouldn't insert them, because
219 breakpoints_should_be_inserted_now returns false at that point,
220 as no thread is running yet. */
04086b45 221 UGLL_INSERT
44702360
PA
222};
223
224static void update_global_location_list (enum ugll_insert_mode);
a5606eee 225
44702360 226static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 227
d77f58be 228static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
229
230static void insert_breakpoint_locations (void);
a5606eee 231
0b39b52e 232static void trace_pass_command (const char *, int);
1042e4c0 233
558a9d82
YQ
234static void set_tracepoint_count (int num);
235
9c06b0b4
TJB
236static int is_masked_watchpoint (const struct breakpoint *b);
237
b775012e
LM
238static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
239
983af33b
SDJ
240/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
241 otherwise. */
242
243static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 244
2060206e
PA
245/* The breakpoint_ops structure to be inherited by all breakpoint_ops
246 that are implemented on top of software or hardware breakpoints
247 (user breakpoints, internal and momentary breakpoints, etc.). */
248static struct breakpoint_ops bkpt_base_breakpoint_ops;
249
250/* Internal breakpoints class type. */
06edf0c0 251static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
252
253/* Momentary breakpoints class type. */
06edf0c0
PA
254static struct breakpoint_ops momentary_breakpoint_ops;
255
2060206e
PA
256/* The breakpoint_ops structure to be used in regular user created
257 breakpoints. */
258struct breakpoint_ops bkpt_breakpoint_ops;
259
55aa24fb
SDJ
260/* Breakpoints set on probes. */
261static struct breakpoint_ops bkpt_probe_breakpoint_ops;
262
e7e0cddf 263/* Dynamic printf class type. */
c5867ab6 264struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 265
d3ce09f5
SS
266/* The style in which to perform a dynamic printf. This is a user
267 option because different output options have different tradeoffs;
268 if GDB does the printing, there is better error handling if there
269 is a problem with any of the arguments, but using an inferior
270 function lets you have special-purpose printers and sending of
271 output to the same place as compiled-in print functions. */
272
273static const char dprintf_style_gdb[] = "gdb";
274static const char dprintf_style_call[] = "call";
275static const char dprintf_style_agent[] = "agent";
276static const char *const dprintf_style_enums[] = {
277 dprintf_style_gdb,
278 dprintf_style_call,
279 dprintf_style_agent,
280 NULL
281};
282static const char *dprintf_style = dprintf_style_gdb;
283
284/* The function to use for dynamic printf if the preferred style is to
285 call into the inferior. The value is simply a string that is
286 copied into the command, so it can be anything that GDB can
287 evaluate to a callable address, not necessarily a function name. */
288
bde6261a 289static char *dprintf_function;
d3ce09f5
SS
290
291/* The channel to use for dynamic printf if the preferred style is to
292 call into the inferior; if a nonempty string, it will be passed to
293 the call as the first argument, with the format string as the
294 second. As with the dprintf function, this can be anything that
295 GDB knows how to evaluate, so in addition to common choices like
296 "stderr", this could be an app-specific expression like
297 "mystreams[curlogger]". */
298
bde6261a 299static char *dprintf_channel;
d3ce09f5
SS
300
301/* True if dprintf commands should continue to operate even if GDB
302 has disconnected. */
303static int disconnected_dprintf = 1;
304
5cea2a26
PA
305struct command_line *
306breakpoint_commands (struct breakpoint *b)
307{
d1b0a7bf 308 return b->commands ? b->commands.get () : NULL;
5cea2a26 309}
3daf8fe5 310
f3b1572e
PA
311/* Flag indicating that a command has proceeded the inferior past the
312 current breakpoint. */
313
314static int breakpoint_proceeded;
315
956a9fb9 316const char *
2cec12e5
AR
317bpdisp_text (enum bpdisp disp)
318{
4a64f543
MS
319 /* NOTE: the following values are a part of MI protocol and
320 represent values of 'disp' field returned when inferior stops at
321 a breakpoint. */
bc043ef3 322 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 323
2cec12e5
AR
324 return bpdisps[(int) disp];
325}
c906108c 326
4a64f543 327/* Prototypes for exported functions. */
c906108c 328/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 329 if such is available. */
c906108c
SS
330static int can_use_hw_watchpoints;
331
920d2a44
AC
332static void
333show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
334 struct cmd_list_element *c,
335 const char *value)
336{
3e43a32a
MS
337 fprintf_filtered (file,
338 _("Debugger's willingness to use "
339 "watchpoint hardware is %s.\n"),
920d2a44
AC
340 value);
341}
342
fa8d40ab
JJ
343/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
344 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 345 for unrecognized breakpoint locations.
fa8d40ab
JJ
346 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
347static enum auto_boolean pending_break_support;
920d2a44
AC
348static void
349show_pending_break_support (struct ui_file *file, int from_tty,
350 struct cmd_list_element *c,
351 const char *value)
352{
3e43a32a
MS
353 fprintf_filtered (file,
354 _("Debugger's behavior regarding "
355 "pending breakpoints is %s.\n"),
920d2a44
AC
356 value);
357}
fa8d40ab 358
765dc015 359/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 360 set with "break" but falling in read-only memory.
765dc015
VP
361 If 0, gdb will warn about such breakpoints, but won't automatically
362 use hardware breakpoints. */
363static int automatic_hardware_breakpoints;
364static void
365show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
366 struct cmd_list_element *c,
367 const char *value)
368{
3e43a32a
MS
369 fprintf_filtered (file,
370 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
371 value);
372}
373
a25a5a45
PA
374/* If on, GDB keeps breakpoints inserted even if the inferior is
375 stopped, and immediately inserts any new breakpoints as soon as
376 they're created. If off (default), GDB keeps breakpoints off of
377 the target as long as possible. That is, it delays inserting
378 breakpoints until the next resume, and removes them again when the
379 target fully stops. This is a bit safer in case GDB crashes while
380 processing user input. */
381static int always_inserted_mode = 0;
72d0e2c5 382
33e5cbd6 383static void
74960c60 384show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 385 struct cmd_list_element *c, const char *value)
74960c60 386{
a25a5a45
PA
387 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
388 value);
74960c60
VP
389}
390
b57bacec
PA
391/* See breakpoint.h. */
392
33e5cbd6 393int
a25a5a45 394breakpoints_should_be_inserted_now (void)
33e5cbd6 395{
a25a5a45
PA
396 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
397 {
398 /* If breakpoints are global, they should be inserted even if no
399 thread under gdb's control is running, or even if there are
400 no threads under GDB's control yet. */
401 return 1;
402 }
403 else if (target_has_execution)
404 {
a25a5a45
PA
405 if (always_inserted_mode)
406 {
407 /* The user wants breakpoints inserted even if all threads
408 are stopped. */
409 return 1;
410 }
411
b57bacec
PA
412 if (threads_are_executing ())
413 return 1;
372316f1
PA
414
415 /* Don't remove breakpoints yet if, even though all threads are
416 stopped, we still have events to process. */
08036331 417 for (thread_info *tp : all_non_exited_threads ())
372316f1
PA
418 if (tp->resumed
419 && tp->suspend.waitstatus_pending_p)
420 return 1;
a25a5a45
PA
421 }
422 return 0;
33e5cbd6 423}
765dc015 424
b775012e
LM
425static const char condition_evaluation_both[] = "host or target";
426
427/* Modes for breakpoint condition evaluation. */
428static const char condition_evaluation_auto[] = "auto";
429static const char condition_evaluation_host[] = "host";
430static const char condition_evaluation_target[] = "target";
431static const char *const condition_evaluation_enums[] = {
432 condition_evaluation_auto,
433 condition_evaluation_host,
434 condition_evaluation_target,
435 NULL
436};
437
438/* Global that holds the current mode for breakpoint condition evaluation. */
439static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441/* Global that we use to display information to the user (gets its value from
442 condition_evaluation_mode_1. */
443static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445/* Translate a condition evaluation mode MODE into either "host"
446 or "target". This is used mostly to translate from "auto" to the
447 real setting that is being used. It returns the translated
448 evaluation mode. */
449
450static const char *
451translate_condition_evaluation_mode (const char *mode)
452{
453 if (mode == condition_evaluation_auto)
454 {
455 if (target_supports_evaluation_of_breakpoint_conditions ())
456 return condition_evaluation_target;
457 else
458 return condition_evaluation_host;
459 }
460 else
461 return mode;
462}
463
464/* Discovers what condition_evaluation_auto translates to. */
465
466static const char *
467breakpoint_condition_evaluation_mode (void)
468{
469 return translate_condition_evaluation_mode (condition_evaluation_mode);
470}
471
472/* Return true if GDB should evaluate breakpoint conditions or false
473 otherwise. */
474
475static int
476gdb_evaluates_breakpoint_condition_p (void)
477{
478 const char *mode = breakpoint_condition_evaluation_mode ();
479
480 return (mode == condition_evaluation_host);
481}
482
c906108c
SS
483/* Are we executing breakpoint commands? */
484static int executing_breakpoint_commands;
485
c02f5703
MS
486/* Are overlay event breakpoints enabled? */
487static int overlay_events_enabled;
488
e09342b5
TJB
489/* See description in breakpoint.h. */
490int target_exact_watchpoints = 0;
491
c906108c 492/* Walk the following statement or block through all breakpoints.
e5dd4106 493 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 494 current breakpoint. */
c906108c 495
5c44784c 496#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 497
5c44784c
JM
498#define ALL_BREAKPOINTS_SAFE(B,TMP) \
499 for (B = breakpoint_chain; \
500 B ? (TMP=B->next, 1): 0; \
501 B = TMP)
c906108c 502
4a64f543
MS
503/* Similar iterator for the low-level breakpoints. SAFE variant is
504 not provided so update_global_location_list must not be called
505 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 506
876fa593 507#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
508 for (BP_TMP = bp_locations; \
509 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 510 BP_TMP++)
7cc221ef 511
b775012e
LM
512/* Iterates through locations with address ADDRESS for the currently selected
513 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
514 to where the loop should start from.
515 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516 appropriate location to start with. */
517
518#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
519 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520 BP_LOCP_TMP = BP_LOCP_START; \
521 BP_LOCP_START \
f5336ca5 522 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
523 && (*BP_LOCP_TMP)->address == ADDRESS); \
524 BP_LOCP_TMP++)
525
1042e4c0
SS
526/* Iterator for tracepoints only. */
527
528#define ALL_TRACEPOINTS(B) \
529 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 530 if (is_tracepoint (B))
1042e4c0 531
7cc221ef 532/* Chains of all breakpoints defined. */
c906108c
SS
533
534struct breakpoint *breakpoint_chain;
535
f5336ca5 536/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
876fa593 537
f5336ca5 538static struct bp_location **bp_locations;
876fa593 539
f5336ca5 540/* Number of elements of BP_LOCATIONS. */
876fa593 541
f5336ca5 542static unsigned bp_locations_count;
876fa593 543
4a64f543 544/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 545 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 546 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 547 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 548 an address you need to read. */
876fa593 549
f5336ca5 550static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 551
4a64f543
MS
552/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
554 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 556 scan for shadow bytes for an address you need to read. */
876fa593 557
f5336ca5 558static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 559
4a64f543 560/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
561 from the bp_locations array, but for which a hit may still be
562 reported by a target. */
1123588c 563static std::vector<bp_location *> moribund_locations;
20874c92 564
c906108c
SS
565/* Number of last breakpoint made. */
566
95a42b64
TT
567static int breakpoint_count;
568
86b17b60
PA
569/* The value of `breakpoint_count' before the last command that
570 created breakpoints. If the last (break-like) command created more
571 than one breakpoint, then the difference between BREAKPOINT_COUNT
572 and PREV_BREAKPOINT_COUNT is more than one. */
573static int prev_breakpoint_count;
c906108c 574
1042e4c0
SS
575/* Number of last tracepoint made. */
576
95a42b64 577static int tracepoint_count;
1042e4c0 578
6149aea9
PA
579static struct cmd_list_element *breakpoint_set_cmdlist;
580static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 581struct cmd_list_element *save_cmdlist;
6149aea9 582
badd37ce
SDJ
583/* See declaration at breakpoint.h. */
584
585struct breakpoint *
586breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587 void *user_data)
588{
589 struct breakpoint *b = NULL;
590
591 ALL_BREAKPOINTS (b)
592 {
593 if (func (b, user_data) != 0)
594 break;
595 }
596
597 return b;
598}
599
468d015d
JJ
600/* Return whether a breakpoint is an active enabled breakpoint. */
601static int
602breakpoint_enabled (struct breakpoint *b)
603{
0d381245 604 return (b->enable_state == bp_enabled);
468d015d
JJ
605}
606
c906108c
SS
607/* Set breakpoint count to NUM. */
608
95a42b64 609static void
fba45db2 610set_breakpoint_count (int num)
c906108c 611{
86b17b60 612 prev_breakpoint_count = breakpoint_count;
c906108c 613 breakpoint_count = num;
4fa62494 614 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
615}
616
86b17b60
PA
617/* Used by `start_rbreak_breakpoints' below, to record the current
618 breakpoint count before "rbreak" creates any breakpoint. */
619static int rbreak_start_breakpoint_count;
620
95a42b64
TT
621/* Called at the start an "rbreak" command to record the first
622 breakpoint made. */
86b17b60 623
c80049d3 624scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
95a42b64 625{
86b17b60 626 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
627}
628
629/* Called at the end of an "rbreak" command to record the last
630 breakpoint made. */
86b17b60 631
c80049d3 632scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
95a42b64 633{
86b17b60 634 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
635}
636
4a64f543 637/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
638
639void
fba45db2 640clear_breakpoint_hit_counts (void)
c906108c
SS
641{
642 struct breakpoint *b;
643
644 ALL_BREAKPOINTS (b)
645 b->hit_count = 0;
646}
647
c906108c 648\f
48cb2d85
VP
649/* Return the breakpoint with the specified number, or NULL
650 if the number does not refer to an existing breakpoint. */
651
652struct breakpoint *
653get_breakpoint (int num)
654{
655 struct breakpoint *b;
656
657 ALL_BREAKPOINTS (b)
658 if (b->number == num)
659 return b;
660
661 return NULL;
662}
5c44784c 663
c906108c 664\f
adc36818 665
b775012e
LM
666/* Mark locations as "conditions have changed" in case the target supports
667 evaluating conditions on its side. */
668
669static void
670mark_breakpoint_modified (struct breakpoint *b)
671{
672 struct bp_location *loc;
673
674 /* This is only meaningful if the target is
675 evaluating conditions and if the user has
676 opted for condition evaluation on the target's
677 side. */
678 if (gdb_evaluates_breakpoint_condition_p ()
679 || !target_supports_evaluation_of_breakpoint_conditions ())
680 return;
681
682 if (!is_breakpoint (b))
683 return;
684
685 for (loc = b->loc; loc; loc = loc->next)
686 loc->condition_changed = condition_modified;
687}
688
689/* Mark location as "conditions have changed" in case the target supports
690 evaluating conditions on its side. */
691
692static void
693mark_breakpoint_location_modified (struct bp_location *loc)
694{
695 /* This is only meaningful if the target is
696 evaluating conditions and if the user has
697 opted for condition evaluation on the target's
698 side. */
699 if (gdb_evaluates_breakpoint_condition_p ()
700 || !target_supports_evaluation_of_breakpoint_conditions ())
701
702 return;
703
704 if (!is_breakpoint (loc->owner))
705 return;
706
707 loc->condition_changed = condition_modified;
708}
709
710/* Sets the condition-evaluation mode using the static global
711 condition_evaluation_mode. */
712
713static void
eb4c3f4a 714set_condition_evaluation_mode (const char *args, int from_tty,
b775012e
LM
715 struct cmd_list_element *c)
716{
b775012e
LM
717 const char *old_mode, *new_mode;
718
719 if ((condition_evaluation_mode_1 == condition_evaluation_target)
720 && !target_supports_evaluation_of_breakpoint_conditions ())
721 {
722 condition_evaluation_mode_1 = condition_evaluation_mode;
723 warning (_("Target does not support breakpoint condition evaluation.\n"
724 "Using host evaluation mode instead."));
725 return;
726 }
727
728 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
abf1152a
JK
731 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
732 settings was "auto". */
733 condition_evaluation_mode = condition_evaluation_mode_1;
734
b775012e
LM
735 /* Only update the mode if the user picked a different one. */
736 if (new_mode != old_mode)
737 {
738 struct bp_location *loc, **loc_tmp;
739 /* If the user switched to a different evaluation mode, we
740 need to synch the changes with the target as follows:
741
742 "host" -> "target": Send all (valid) conditions to the target.
743 "target" -> "host": Remove all the conditions from the target.
744 */
745
b775012e
LM
746 if (new_mode == condition_evaluation_target)
747 {
748 /* Mark everything modified and synch conditions with the
749 target. */
750 ALL_BP_LOCATIONS (loc, loc_tmp)
751 mark_breakpoint_location_modified (loc);
752 }
753 else
754 {
755 /* Manually mark non-duplicate locations to synch conditions
756 with the target. We do this to remove all the conditions the
757 target knows about. */
758 ALL_BP_LOCATIONS (loc, loc_tmp)
759 if (is_breakpoint (loc->owner) && loc->inserted)
760 loc->needs_update = 1;
761 }
762
763 /* Do the update. */
44702360 764 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
765 }
766
767 return;
768}
769
770/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
771 what "auto" is translating to. */
772
773static void
774show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775 struct cmd_list_element *c, const char *value)
776{
777 if (condition_evaluation_mode == condition_evaluation_auto)
778 fprintf_filtered (file,
779 _("Breakpoint condition evaluation "
780 "mode is %s (currently %s).\n"),
781 value,
782 breakpoint_condition_evaluation_mode ());
783 else
784 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785 value);
786}
787
788/* A comparison function for bp_location AP and BP that is used by
789 bsearch. This comparison function only cares about addresses, unlike
f5336ca5 790 the more general bp_locations_compare function. */
b775012e
LM
791
792static int
f5336ca5 793bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 794{
9a3c8263
SM
795 const struct bp_location *a = *(const struct bp_location **) ap;
796 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
797
798 if (a->address == b->address)
799 return 0;
800 else
801 return ((a->address > b->address) - (a->address < b->address));
802}
803
804/* Helper function to skip all bp_locations with addresses
805 less than ADDRESS. It returns the first bp_location that
806 is greater than or equal to ADDRESS. If none is found, just
807 return NULL. */
808
809static struct bp_location **
810get_first_locp_gte_addr (CORE_ADDR address)
811{
812 struct bp_location dummy_loc;
813 struct bp_location *dummy_locp = &dummy_loc;
814 struct bp_location **locp_found = NULL;
815
816 /* Initialize the dummy location's address field. */
b775012e
LM
817 dummy_loc.address = address;
818
819 /* Find a close match to the first location at ADDRESS. */
9a3c8263 820 locp_found = ((struct bp_location **)
f5336ca5 821 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 822 sizeof (struct bp_location **),
f5336ca5 823 bp_locations_compare_addrs));
b775012e
LM
824
825 /* Nothing was found, nothing left to do. */
826 if (locp_found == NULL)
827 return NULL;
828
829 /* We may have found a location that is at ADDRESS but is not the first in the
830 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 831 while ((locp_found - 1) >= bp_locations
b775012e
LM
832 && (*(locp_found - 1))->address == address)
833 locp_found--;
834
835 return locp_found;
836}
837
adc36818 838void
7a26bd4d 839set_breakpoint_condition (struct breakpoint *b, const char *exp,
adc36818
PM
840 int from_tty)
841{
3a5c3e22
PA
842 xfree (b->cond_string);
843 b->cond_string = NULL;
adc36818 844
3a5c3e22 845 if (is_watchpoint (b))
adc36818 846 {
3a5c3e22
PA
847 struct watchpoint *w = (struct watchpoint *) b;
848
4d01a485 849 w->cond_exp.reset ();
3a5c3e22
PA
850 }
851 else
852 {
853 struct bp_location *loc;
854
855 for (loc = b->loc; loc; loc = loc->next)
856 {
4d01a485 857 loc->cond.reset ();
b775012e
LM
858
859 /* No need to free the condition agent expression
860 bytecode (if we have one). We will handle this
861 when we go through update_global_location_list. */
3a5c3e22 862 }
adc36818 863 }
adc36818
PM
864
865 if (*exp == 0)
866 {
867 if (from_tty)
868 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869 }
870 else
871 {
bbc13ae3 872 const char *arg = exp;
cc59ec59 873
adc36818
PM
874 /* I don't know if it matters whether this is the string the user
875 typed in or the decompiled expression. */
876 b->cond_string = xstrdup (arg);
877 b->condition_not_parsed = 0;
878
879 if (is_watchpoint (b))
880 {
3a5c3e22
PA
881 struct watchpoint *w = (struct watchpoint *) b;
882
699bd4cf 883 innermost_block_tracker tracker;
adc36818 884 arg = exp;
699bd4cf 885 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
adc36818
PM
886 if (*arg)
887 error (_("Junk at end of expression"));
699bd4cf 888 w->cond_exp_valid_block = tracker.block ();
adc36818
PM
889 }
890 else
891 {
3a5c3e22
PA
892 struct bp_location *loc;
893
adc36818
PM
894 for (loc = b->loc; loc; loc = loc->next)
895 {
896 arg = exp;
897 loc->cond =
1bb9788d
TT
898 parse_exp_1 (&arg, loc->address,
899 block_for_pc (loc->address), 0);
adc36818
PM
900 if (*arg)
901 error (_("Junk at end of expression"));
902 }
903 }
904 }
b775012e
LM
905 mark_breakpoint_modified (b);
906
76727919 907 gdb::observers::breakpoint_modified.notify (b);
adc36818
PM
908}
909
d55637df
TT
910/* Completion for the "condition" command. */
911
eb3ff9a5 912static void
6f937416 913condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 914 completion_tracker &tracker,
6f937416 915 const char *text, const char *word)
d55637df 916{
6f937416 917 const char *space;
d55637df 918
f1735a53
TT
919 text = skip_spaces (text);
920 space = skip_to_space (text);
d55637df
TT
921 if (*space == '\0')
922 {
923 int len;
924 struct breakpoint *b;
d55637df
TT
925
926 if (text[0] == '$')
927 {
928 /* We don't support completion of history indices. */
eb3ff9a5
PA
929 if (!isdigit (text[1]))
930 complete_internalvar (tracker, &text[1]);
931 return;
d55637df
TT
932 }
933
934 /* We're completing the breakpoint number. */
935 len = strlen (text);
936
937 ALL_BREAKPOINTS (b)
58ce7251
SDJ
938 {
939 char number[50];
940
941 xsnprintf (number, sizeof (number), "%d", b->number);
942
943 if (strncmp (number, text, len) == 0)
b02f78f9 944 tracker.add_completion (make_unique_xstrdup (number));
58ce7251 945 }
d55637df 946
eb3ff9a5 947 return;
d55637df
TT
948 }
949
950 /* We're completing the expression part. */
f1735a53 951 text = skip_spaces (space);
eb3ff9a5 952 expression_completer (cmd, tracker, text, word);
d55637df
TT
953}
954
c906108c
SS
955/* condition N EXP -- set break condition of breakpoint N to EXP. */
956
957static void
0b39b52e 958condition_command (const char *arg, int from_tty)
c906108c 959{
52f0bd74 960 struct breakpoint *b;
0b39b52e 961 const char *p;
52f0bd74 962 int bnum;
c906108c
SS
963
964 if (arg == 0)
e2e0b3e5 965 error_no_arg (_("breakpoint number"));
c906108c
SS
966
967 p = arg;
968 bnum = get_number (&p);
5c44784c 969 if (bnum == 0)
8a3fe4f8 970 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
971
972 ALL_BREAKPOINTS (b)
973 if (b->number == bnum)
2f069f6f 974 {
6dddc817
DE
975 /* Check if this breakpoint has a "stop" method implemented in an
976 extension language. This method and conditions entered into GDB
977 from the CLI are mutually exclusive. */
978 const struct extension_language_defn *extlang
979 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
980
981 if (extlang != NULL)
982 {
983 error (_("Only one stop condition allowed. There is currently"
984 " a %s stop condition defined for this breakpoint."),
985 ext_lang_capitalized_name (extlang));
986 }
2566ad2d 987 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
988
989 if (is_breakpoint (b))
44702360 990 update_global_location_list (UGLL_MAY_INSERT);
b775012e 991
2f069f6f
JB
992 return;
993 }
c906108c 994
8a3fe4f8 995 error (_("No breakpoint number %d."), bnum);
c906108c
SS
996}
997
a7bdde9e
VP
998/* Check that COMMAND do not contain commands that are suitable
999 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1000 Throw if any such commands is found. */
1001
a7bdde9e
VP
1002static void
1003check_no_tracepoint_commands (struct command_line *commands)
1004{
1005 struct command_line *c;
cc59ec59 1006
a7bdde9e
VP
1007 for (c = commands; c; c = c->next)
1008 {
a7bdde9e 1009 if (c->control_type == while_stepping_control)
3e43a32a
MS
1010 error (_("The 'while-stepping' command can "
1011 "only be used for tracepoints"));
a7bdde9e 1012
12973681
TT
1013 check_no_tracepoint_commands (c->body_list_0.get ());
1014 check_no_tracepoint_commands (c->body_list_1.get ());
a7bdde9e
VP
1015
1016 /* Not that command parsing removes leading whitespace and comment
4a64f543 1017 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1018 command directly. */
1019 if (strstr (c->line, "collect ") == c->line)
1020 error (_("The 'collect' command can only be used for tracepoints"));
1021
51661e93
VP
1022 if (strstr (c->line, "teval ") == c->line)
1023 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1024 }
1025}
1026
c1fc2657 1027struct longjmp_breakpoint : public breakpoint
3b0871f4 1028{
c1fc2657 1029 ~longjmp_breakpoint () override;
3b0871f4
SM
1030};
1031
d77f58be
SS
1032/* Encapsulate tests for different types of tracepoints. */
1033
3b0871f4
SM
1034static bool
1035is_tracepoint_type (bptype type)
d9b3f62e
PA
1036{
1037 return (type == bp_tracepoint
1038 || type == bp_fast_tracepoint
1039 || type == bp_static_tracepoint);
1040}
1041
3b0871f4
SM
1042static bool
1043is_longjmp_type (bptype type)
1044{
1045 return type == bp_longjmp || type == bp_exception;
1046}
1047
a7bdde9e 1048int
d77f58be 1049is_tracepoint (const struct breakpoint *b)
a7bdde9e 1050{
d9b3f62e 1051 return is_tracepoint_type (b->type);
a7bdde9e 1052}
d9b3f62e 1053
a5e364af
SM
1054/* Factory function to create an appropriate instance of breakpoint given
1055 TYPE. */
1056
1057static std::unique_ptr<breakpoint>
1058new_breakpoint_from_type (bptype type)
1059{
1060 breakpoint *b;
1061
1062 if (is_tracepoint_type (type))
c1fc2657 1063 b = new tracepoint ();
3b0871f4 1064 else if (is_longjmp_type (type))
c1fc2657 1065 b = new longjmp_breakpoint ();
a5e364af
SM
1066 else
1067 b = new breakpoint ();
1068
1069 return std::unique_ptr<breakpoint> (b);
1070}
1071
e5dd4106 1072/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1073 breakpoint. This function will throw an exception if a problem is
1074 found. */
48cb2d85 1075
95a42b64
TT
1076static void
1077validate_commands_for_breakpoint (struct breakpoint *b,
1078 struct command_line *commands)
48cb2d85 1079{
d77f58be 1080 if (is_tracepoint (b))
a7bdde9e 1081 {
c9a6ce02 1082 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1083 struct command_line *c;
1084 struct command_line *while_stepping = 0;
c9a6ce02
PA
1085
1086 /* Reset the while-stepping step count. The previous commands
1087 might have included a while-stepping action, while the new
1088 ones might not. */
1089 t->step_count = 0;
1090
1091 /* We need to verify that each top-level element of commands is
1092 valid for tracepoints, that there's at most one
1093 while-stepping element, and that the while-stepping's body
1094 has valid tracing commands excluding nested while-stepping.
1095 We also need to validate the tracepoint action line in the
1096 context of the tracepoint --- validate_actionline actually
1097 has side effects, like setting the tracepoint's
1098 while-stepping STEP_COUNT, in addition to checking if the
1099 collect/teval actions parse and make sense in the
1100 tracepoint's context. */
a7bdde9e
VP
1101 for (c = commands; c; c = c->next)
1102 {
a7bdde9e
VP
1103 if (c->control_type == while_stepping_control)
1104 {
1105 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1106 error (_("The 'while-stepping' command "
1107 "cannot be used for fast tracepoint"));
0fb4aa4b 1108 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1109 error (_("The 'while-stepping' command "
1110 "cannot be used for static tracepoint"));
a7bdde9e
VP
1111
1112 if (while_stepping)
3e43a32a
MS
1113 error (_("The 'while-stepping' command "
1114 "can be used only once"));
a7bdde9e
VP
1115 else
1116 while_stepping = c;
1117 }
c9a6ce02
PA
1118
1119 validate_actionline (c->line, b);
a7bdde9e
VP
1120 }
1121 if (while_stepping)
1122 {
1123 struct command_line *c2;
1124
12973681
TT
1125 gdb_assert (while_stepping->body_list_1 == nullptr);
1126 c2 = while_stepping->body_list_0.get ();
a7bdde9e
VP
1127 for (; c2; c2 = c2->next)
1128 {
a7bdde9e
VP
1129 if (c2->control_type == while_stepping_control)
1130 error (_("The 'while-stepping' command cannot be nested"));
1131 }
1132 }
1133 }
1134 else
1135 {
1136 check_no_tracepoint_commands (commands);
1137 }
95a42b64
TT
1138}
1139
0fb4aa4b
PA
1140/* Return a vector of all the static tracepoints set at ADDR. The
1141 caller is responsible for releasing the vector. */
1142
f51e0e20 1143std::vector<breakpoint *>
0fb4aa4b
PA
1144static_tracepoints_here (CORE_ADDR addr)
1145{
1146 struct breakpoint *b;
f51e0e20 1147 std::vector<breakpoint *> found;
0fb4aa4b
PA
1148 struct bp_location *loc;
1149
1150 ALL_BREAKPOINTS (b)
1151 if (b->type == bp_static_tracepoint)
1152 {
1153 for (loc = b->loc; loc; loc = loc->next)
1154 if (loc->address == addr)
f51e0e20 1155 found.push_back (b);
0fb4aa4b
PA
1156 }
1157
1158 return found;
1159}
1160
95a42b64 1161/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1162 validate that only allowed commands are included. */
95a42b64
TT
1163
1164void
4a64f543 1165breakpoint_set_commands (struct breakpoint *b,
12973681 1166 counted_command_line &&commands)
95a42b64 1167{
93921405 1168 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1169
d1b0a7bf 1170 b->commands = std::move (commands);
76727919 1171 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1172}
1173
45a43567
TT
1174/* Set the internal `silent' flag on the breakpoint. Note that this
1175 is not the same as the "silent" that may appear in the breakpoint's
1176 commands. */
1177
1178void
1179breakpoint_set_silent (struct breakpoint *b, int silent)
1180{
1181 int old_silent = b->silent;
1182
1183 b->silent = silent;
1184 if (old_silent != silent)
76727919 1185 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1186}
1187
1188/* Set the thread for this breakpoint. If THREAD is -1, make the
1189 breakpoint work for any thread. */
1190
1191void
1192breakpoint_set_thread (struct breakpoint *b, int thread)
1193{
1194 int old_thread = b->thread;
1195
1196 b->thread = thread;
1197 if (old_thread != thread)
76727919 1198 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1199}
1200
1201/* Set the task for this breakpoint. If TASK is 0, make the
1202 breakpoint work for any task. */
1203
1204void
1205breakpoint_set_task (struct breakpoint *b, int task)
1206{
1207 int old_task = b->task;
1208
1209 b->task = task;
1210 if (old_task != task)
76727919 1211 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1212}
1213
95a42b64 1214static void
896b6bda 1215commands_command_1 (const char *arg, int from_tty,
4a64f543 1216 struct command_line *control)
95a42b64 1217{
d1b0a7bf 1218 counted_command_line cmd;
999700cd
PW
1219 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1220 NULL after the call to read_command_lines if the user provides an empty
1221 list of command by just typing "end". */
1222 bool cmd_read = false;
95a42b64 1223
896b6bda
PA
1224 std::string new_arg;
1225
95a42b64
TT
1226 if (arg == NULL || !*arg)
1227 {
86b17b60 1228 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1229 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1230 breakpoint_count);
95a42b64 1231 else if (breakpoint_count > 0)
896b6bda 1232 new_arg = string_printf ("%d", breakpoint_count);
48649e1b
TT
1233 arg = new_arg.c_str ();
1234 }
1235
1236 map_breakpoint_numbers
1237 (arg, [&] (breakpoint *b)
1238 {
999700cd 1239 if (!cmd_read)
48649e1b 1240 {
999700cd 1241 gdb_assert (cmd == NULL);
48649e1b 1242 if (control != NULL)
12973681 1243 cmd = control->body_list_0;
48649e1b
TT
1244 else
1245 {
81b1e71c
TT
1246 std::string str
1247 = string_printf (_("Type commands for breakpoint(s) "
1248 "%s, one per line."),
1249 arg);
48649e1b 1250
60b3cef2
TT
1251 auto do_validate = [=] (const char *line)
1252 {
1253 validate_actionline (line, b);
1254 };
1255 gdb::function_view<void (const char *)> validator;
1256 if (is_tracepoint (b))
1257 validator = do_validate;
1258
1259 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
48649e1b 1260 }
999700cd 1261 cmd_read = true;
48649e1b
TT
1262 }
1263
1264 /* If a breakpoint was on the list more than once, we don't need to
1265 do anything. */
1266 if (b->commands != cmd)
1267 {
d1b0a7bf 1268 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b 1269 b->commands = cmd;
76727919 1270 gdb::observers::breakpoint_modified.notify (b);
48649e1b
TT
1271 }
1272 });
95a42b64
TT
1273}
1274
1275static void
0b39b52e 1276commands_command (const char *arg, int from_tty)
95a42b64
TT
1277{
1278 commands_command_1 (arg, from_tty, NULL);
c906108c 1279}
40c03ae8
EZ
1280
1281/* Like commands_command, but instead of reading the commands from
1282 input stream, takes them from an already parsed command structure.
1283
1284 This is used by cli-script.c to DTRT with breakpoint commands
1285 that are part of if and while bodies. */
1286enum command_control_type
896b6bda 1287commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1288{
95a42b64
TT
1289 commands_command_1 (arg, 0, cmd);
1290 return simple_control;
40c03ae8 1291}
876fa593
JK
1292
1293/* Return non-zero if BL->TARGET_INFO contains valid information. */
1294
1295static int
1296bp_location_has_shadow (struct bp_location *bl)
1297{
1298 if (bl->loc_type != bp_loc_software_breakpoint)
1299 return 0;
1300 if (!bl->inserted)
1301 return 0;
1302 if (bl->target_info.shadow_len == 0)
e5dd4106 1303 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1304 return 0;
1305 return 1;
1306}
1307
9d497a19
PA
1308/* Update BUF, which is LEN bytes read from the target address
1309 MEMADDR, by replacing a memory breakpoint with its shadowed
1310 contents.
1311
1312 If READBUF is not NULL, this buffer must not overlap with the of
1313 the breakpoint location's shadow_contents buffer. Otherwise, a
1314 failed assertion internal error will be raised. */
1315
1316static void
1317one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1318 const gdb_byte *writebuf_org,
1319 ULONGEST memaddr, LONGEST len,
1320 struct bp_target_info *target_info,
1321 struct gdbarch *gdbarch)
1322{
1323 /* Now do full processing of the found relevant range of elements. */
1324 CORE_ADDR bp_addr = 0;
1325 int bp_size = 0;
1326 int bptoffset = 0;
1327
1328 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1329 current_program_space->aspace, 0))
1330 {
1331 /* The breakpoint is inserted in a different address space. */
1332 return;
1333 }
1334
1335 /* Addresses and length of the part of the breakpoint that
1336 we need to copy. */
1337 bp_addr = target_info->placed_address;
1338 bp_size = target_info->shadow_len;
1339
1340 if (bp_addr + bp_size <= memaddr)
1341 {
1342 /* The breakpoint is entirely before the chunk of memory we are
1343 reading. */
1344 return;
1345 }
1346
1347 if (bp_addr >= memaddr + len)
1348 {
1349 /* The breakpoint is entirely after the chunk of memory we are
1350 reading. */
1351 return;
1352 }
1353
1354 /* Offset within shadow_contents. */
1355 if (bp_addr < memaddr)
1356 {
1357 /* Only copy the second part of the breakpoint. */
1358 bp_size -= memaddr - bp_addr;
1359 bptoffset = memaddr - bp_addr;
1360 bp_addr = memaddr;
1361 }
1362
1363 if (bp_addr + bp_size > memaddr + len)
1364 {
1365 /* Only copy the first part of the breakpoint. */
1366 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1367 }
1368
1369 if (readbuf != NULL)
1370 {
1371 /* Verify that the readbuf buffer does not overlap with the
1372 shadow_contents buffer. */
1373 gdb_assert (target_info->shadow_contents >= readbuf + len
1374 || readbuf >= (target_info->shadow_contents
1375 + target_info->shadow_len));
1376
1377 /* Update the read buffer with this inserted breakpoint's
1378 shadow. */
1379 memcpy (readbuf + bp_addr - memaddr,
1380 target_info->shadow_contents + bptoffset, bp_size);
1381 }
1382 else
1383 {
1384 const unsigned char *bp;
0d5ed153
MR
1385 CORE_ADDR addr = target_info->reqstd_address;
1386 int placed_size;
9d497a19
PA
1387
1388 /* Update the shadow with what we want to write to memory. */
1389 memcpy (target_info->shadow_contents + bptoffset,
1390 writebuf_org + bp_addr - memaddr, bp_size);
1391
1392 /* Determine appropriate breakpoint contents and size for this
1393 address. */
0d5ed153 1394 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1395
1396 /* Update the final write buffer with this inserted
1397 breakpoint's INSN. */
1398 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1399 }
1400}
1401
8defab1a 1402/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1403 by replacing any memory breakpoints with their shadowed contents.
1404
35c63cd8
JB
1405 If READBUF is not NULL, this buffer must not overlap with any of
1406 the breakpoint location's shadow_contents buffers. Otherwise,
1407 a failed assertion internal error will be raised.
1408
876fa593 1409 The range of shadowed area by each bp_location is:
f5336ca5
PA
1410 bl->address - bp_locations_placed_address_before_address_max
1411 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1412 The range we were requested to resolve shadows for is:
1413 memaddr ... memaddr + len
1414 Thus the safe cutoff boundaries for performance optimization are
35df4500 1415 memaddr + len <= (bl->address
f5336ca5 1416 - bp_locations_placed_address_before_address_max)
876fa593 1417 and:
f5336ca5 1418 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1419
8defab1a 1420void
f0ba3972
PA
1421breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1422 const gdb_byte *writebuf_org,
1423 ULONGEST memaddr, LONGEST len)
c906108c 1424{
4a64f543
MS
1425 /* Left boundary, right boundary and median element of our binary
1426 search. */
876fa593
JK
1427 unsigned bc_l, bc_r, bc;
1428
4a64f543
MS
1429 /* Find BC_L which is a leftmost element which may affect BUF
1430 content. It is safe to report lower value but a failure to
1431 report higher one. */
876fa593
JK
1432
1433 bc_l = 0;
f5336ca5 1434 bc_r = bp_locations_count;
876fa593
JK
1435 while (bc_l + 1 < bc_r)
1436 {
35df4500 1437 struct bp_location *bl;
876fa593
JK
1438
1439 bc = (bc_l + bc_r) / 2;
f5336ca5 1440 bl = bp_locations[bc];
876fa593 1441
4a64f543
MS
1442 /* Check first BL->ADDRESS will not overflow due to the added
1443 constant. Then advance the left boundary only if we are sure
1444 the BC element can in no way affect the BUF content (MEMADDR
1445 to MEMADDR + LEN range).
876fa593 1446
f5336ca5 1447 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1448 offset so that we cannot miss a breakpoint with its shadow
1449 range tail still reaching MEMADDR. */
c5aa993b 1450
f5336ca5 1451 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1452 >= bl->address)
f5336ca5 1453 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1454 <= memaddr))
876fa593
JK
1455 bc_l = bc;
1456 else
1457 bc_r = bc;
1458 }
1459
128070bb
PA
1460 /* Due to the binary search above, we need to make sure we pick the
1461 first location that's at BC_L's address. E.g., if there are
1462 multiple locations at the same address, BC_L may end up pointing
1463 at a duplicate location, and miss the "master"/"inserted"
1464 location. Say, given locations L1, L2 and L3 at addresses A and
1465 B:
1466
1467 L1@A, L2@A, L3@B, ...
1468
1469 BC_L could end up pointing at location L2, while the "master"
1470 location could be L1. Since the `loc->inserted' flag is only set
1471 on "master" locations, we'd forget to restore the shadow of L1
1472 and L2. */
1473 while (bc_l > 0
f5336ca5 1474 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1475 bc_l--;
1476
876fa593
JK
1477 /* Now do full processing of the found relevant range of elements. */
1478
f5336ca5 1479 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1480 {
f5336ca5 1481 struct bp_location *bl = bp_locations[bc];
876fa593 1482
35df4500
TJB
1483 /* bp_location array has BL->OWNER always non-NULL. */
1484 if (bl->owner->type == bp_none)
8a3fe4f8 1485 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1486 bl->owner->number);
ffce0d52 1487
e5dd4106 1488 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1489 content. */
1490
f5336ca5
PA
1491 if (bl->address >= bp_locations_placed_address_before_address_max
1492 && memaddr + len <= (bl->address
1493 - bp_locations_placed_address_before_address_max))
876fa593
JK
1494 break;
1495
35df4500 1496 if (!bp_location_has_shadow (bl))
c5aa993b 1497 continue;
6c95b8df 1498
9d497a19
PA
1499 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1500 memaddr, len, &bl->target_info, bl->gdbarch);
1501 }
c906108c 1502}
9d497a19 1503
c906108c 1504\f
c5aa993b 1505
b775012e
LM
1506/* Return true if BPT is either a software breakpoint or a hardware
1507 breakpoint. */
1508
1509int
1510is_breakpoint (const struct breakpoint *bpt)
1511{
1512 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1513 || bpt->type == bp_hardware_breakpoint
1514 || bpt->type == bp_dprintf);
b775012e
LM
1515}
1516
60e1c644
PA
1517/* Return true if BPT is of any hardware watchpoint kind. */
1518
a5606eee 1519static int
d77f58be 1520is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1521{
1522 return (bpt->type == bp_hardware_watchpoint
1523 || bpt->type == bp_read_watchpoint
1524 || bpt->type == bp_access_watchpoint);
1525}
7270d8f2 1526
60e1c644
PA
1527/* Return true if BPT is of any watchpoint kind, hardware or
1528 software. */
1529
3a5c3e22 1530int
d77f58be 1531is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1532{
1533 return (is_hardware_watchpoint (bpt)
1534 || bpt->type == bp_watchpoint);
1535}
1536
3a5c3e22
PA
1537/* Returns true if the current thread and its running state are safe
1538 to evaluate or update watchpoint B. Watchpoints on local
1539 expressions need to be evaluated in the context of the thread that
1540 was current when the watchpoint was created, and, that thread needs
1541 to be stopped to be able to select the correct frame context.
1542 Watchpoints on global expressions can be evaluated on any thread,
1543 and in any state. It is presently left to the target allowing
1544 memory accesses when threads are running. */
f6bc2008
PA
1545
1546static int
3a5c3e22 1547watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1548{
c1fc2657 1549 return (b->pspace == current_program_space
d7e15655
TT
1550 && (b->watchpoint_thread == null_ptid
1551 || (inferior_ptid == b->watchpoint_thread
00431a78 1552 && !inferior_thread ()->executing)));
f6bc2008
PA
1553}
1554
d0fb5eae
JK
1555/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1556 associated bp_watchpoint_scope breakpoint. */
1557
1558static void
3a5c3e22 1559watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1560{
c1fc2657 1561 if (w->related_breakpoint != w)
d0fb5eae 1562 {
c1fc2657
SM
1563 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1564 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1565 w->related_breakpoint->disposition = disp_del_at_next_stop;
1566 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1567 w->related_breakpoint = w;
d0fb5eae 1568 }
c1fc2657 1569 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1570}
1571
bb9d5f81
PP
1572/* Extract a bitfield value from value VAL using the bit parameters contained in
1573 watchpoint W. */
1574
1575static struct value *
1576extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1577{
1578 struct value *bit_val;
1579
1580 if (val == NULL)
1581 return NULL;
1582
1583 bit_val = allocate_value (value_type (val));
1584
1585 unpack_value_bitfield (bit_val,
1586 w->val_bitpos,
1587 w->val_bitsize,
1588 value_contents_for_printing (val),
1589 value_offset (val),
1590 val);
1591
1592 return bit_val;
1593}
1594
c6d81124
PA
1595/* Allocate a dummy location and add it to B, which must be a software
1596 watchpoint. This is required because even if a software watchpoint
1597 is not watching any memory, bpstat_stop_status requires a location
1598 to be able to report stops. */
1599
1600static void
1601software_watchpoint_add_no_memory_location (struct breakpoint *b,
1602 struct program_space *pspace)
1603{
1604 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1605
1606 b->loc = allocate_bp_location (b);
1607 b->loc->pspace = pspace;
1608 b->loc->address = -1;
1609 b->loc->length = -1;
1610}
1611
1612/* Returns true if B is a software watchpoint that is not watching any
1613 memory (e.g., "watch $pc"). */
1614
1615static int
1616is_no_memory_software_watchpoint (struct breakpoint *b)
1617{
1618 return (b->type == bp_watchpoint
1619 && b->loc != NULL
1620 && b->loc->next == NULL
1621 && b->loc->address == -1
1622 && b->loc->length == -1);
1623}
1624
567e1b4e
JB
1625/* Assuming that B is a watchpoint:
1626 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1627 - Evaluate expression and store the result in B->val
567e1b4e
JB
1628 - Evaluate the condition if there is one, and store the result
1629 in b->loc->cond.
a5606eee
VP
1630 - Update the list of values that must be watched in B->loc.
1631
4a64f543
MS
1632 If the watchpoint disposition is disp_del_at_next_stop, then do
1633 nothing. If this is local watchpoint that is out of scope, delete
1634 it.
1635
1636 Even with `set breakpoint always-inserted on' the watchpoints are
1637 removed + inserted on each stop here. Normal breakpoints must
1638 never be removed because they might be missed by a running thread
1639 when debugging in non-stop mode. On the other hand, hardware
1640 watchpoints (is_hardware_watchpoint; processed here) are specific
1641 to each LWP since they are stored in each LWP's hardware debug
1642 registers. Therefore, such LWP must be stopped first in order to
1643 be able to modify its hardware watchpoints.
1644
1645 Hardware watchpoints must be reset exactly once after being
1646 presented to the user. It cannot be done sooner, because it would
1647 reset the data used to present the watchpoint hit to the user. And
1648 it must not be done later because it could display the same single
1649 watchpoint hit during multiple GDB stops. Note that the latter is
1650 relevant only to the hardware watchpoint types bp_read_watchpoint
1651 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1652 not user-visible - its hit is suppressed if the memory content has
1653 not changed.
1654
1655 The following constraints influence the location where we can reset
1656 hardware watchpoints:
1657
1658 * target_stopped_by_watchpoint and target_stopped_data_address are
1659 called several times when GDB stops.
1660
1661 [linux]
1662 * Multiple hardware watchpoints can be hit at the same time,
1663 causing GDB to stop. GDB only presents one hardware watchpoint
1664 hit at a time as the reason for stopping, and all the other hits
1665 are presented later, one after the other, each time the user
1666 requests the execution to be resumed. Execution is not resumed
1667 for the threads still having pending hit event stored in
1668 LWP_INFO->STATUS. While the watchpoint is already removed from
1669 the inferior on the first stop the thread hit event is kept being
1670 reported from its cached value by linux_nat_stopped_data_address
1671 until the real thread resume happens after the watchpoint gets
1672 presented and thus its LWP_INFO->STATUS gets reset.
1673
1674 Therefore the hardware watchpoint hit can get safely reset on the
1675 watchpoint removal from inferior. */
a79d3c27 1676
b40ce68a 1677static void
3a5c3e22 1678update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1679{
a5606eee 1680 int within_current_scope;
a5606eee 1681 struct frame_id saved_frame_id;
66076460 1682 int frame_saved;
a5606eee 1683
f6bc2008
PA
1684 /* If this is a local watchpoint, we only want to check if the
1685 watchpoint frame is in scope if the current thread is the thread
1686 that was used to create the watchpoint. */
1687 if (!watchpoint_in_thread_scope (b))
1688 return;
1689
c1fc2657 1690 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1691 return;
1692
66076460 1693 frame_saved = 0;
a5606eee
VP
1694
1695 /* Determine if the watchpoint is within scope. */
1696 if (b->exp_valid_block == NULL)
1697 within_current_scope = 1;
1698 else
1699 {
b5db5dfc
UW
1700 struct frame_info *fi = get_current_frame ();
1701 struct gdbarch *frame_arch = get_frame_arch (fi);
1702 CORE_ADDR frame_pc = get_frame_pc (fi);
1703
c9cf6e20
MG
1704 /* If we're at a point where the stack has been destroyed
1705 (e.g. in a function epilogue), unwinding may not work
1706 properly. Do not attempt to recreate locations at this
b5db5dfc 1707 point. See similar comments in watchpoint_check. */
c9cf6e20 1708 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1709 return;
66076460
DJ
1710
1711 /* Save the current frame's ID so we can restore it after
1712 evaluating the watchpoint expression on its own frame. */
1713 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1714 took a frame parameter, so that we didn't have to change the
1715 selected frame. */
1716 frame_saved = 1;
1717 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1718
a5606eee
VP
1719 fi = frame_find_by_id (b->watchpoint_frame);
1720 within_current_scope = (fi != NULL);
1721 if (within_current_scope)
1722 select_frame (fi);
1723 }
1724
b5db5dfc
UW
1725 /* We don't free locations. They are stored in the bp_location array
1726 and update_global_location_list will eventually delete them and
1727 remove breakpoints if needed. */
c1fc2657 1728 b->loc = NULL;
b5db5dfc 1729
a5606eee
VP
1730 if (within_current_scope && reparse)
1731 {
bbc13ae3 1732 const char *s;
d63d0675 1733
4d01a485 1734 b->exp.reset ();
d63d0675 1735 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1736 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1737 /* If the meaning of expression itself changed, the old value is
1738 no longer relevant. We don't want to report a watchpoint hit
1739 to the user when the old value and the new value may actually
1740 be completely different objects. */
fa4727a6
DJ
1741 b->val = NULL;
1742 b->val_valid = 0;
60e1c644
PA
1743
1744 /* Note that unlike with breakpoints, the watchpoint's condition
1745 expression is stored in the breakpoint object, not in the
1746 locations (re)created below. */
c1fc2657 1747 if (b->cond_string != NULL)
60e1c644 1748 {
4d01a485 1749 b->cond_exp.reset ();
60e1c644 1750
c1fc2657 1751 s = b->cond_string;
1bb9788d 1752 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1753 }
a5606eee 1754 }
a5606eee
VP
1755
1756 /* If we failed to parse the expression, for example because
1757 it refers to a global variable in a not-yet-loaded shared library,
1758 don't try to insert watchpoint. We don't automatically delete
1759 such watchpoint, though, since failure to parse expression
1760 is different from out-of-scope watchpoint. */
e8369a73 1761 if (!target_has_execution)
2d134ed3
PA
1762 {
1763 /* Without execution, memory can't change. No use to try and
1764 set watchpoint locations. The watchpoint will be reset when
1765 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1766 if (!can_use_hw_watchpoints)
1767 {
c1fc2657
SM
1768 if (b->ops->works_in_software_mode (b))
1769 b->type = bp_watchpoint;
e8369a73 1770 else
638aa5a1
AB
1771 error (_("Can't set read/access watchpoint when "
1772 "hardware watchpoints are disabled."));
e8369a73 1773 }
2d134ed3
PA
1774 }
1775 else if (within_current_scope && b->exp)
a5606eee 1776 {
0cf6dd15 1777 int pc = 0;
a6535de1 1778 std::vector<value_ref_ptr> val_chain;
8d49165d 1779 struct value *v, *result;
2d134ed3 1780 struct program_space *frame_pspace;
a5606eee 1781
4d01a485 1782 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1783
a5606eee
VP
1784 /* Avoid setting b->val if it's already set. The meaning of
1785 b->val is 'the last value' user saw, and we should update
1786 it only if we reported that last value to user. As it
9c06b0b4
TJB
1787 happens, the code that reports it updates b->val directly.
1788 We don't keep track of the memory value for masked
1789 watchpoints. */
c1fc2657 1790 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1791 {
bb9d5f81 1792 if (b->val_bitsize != 0)
850645cf
TT
1793 v = extract_bitfield_from_watchpoint_value (b, v);
1794 b->val = release_value (v);
fa4727a6
DJ
1795 b->val_valid = 1;
1796 }
a5606eee 1797
2d134ed3
PA
1798 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1799
a5606eee 1800 /* Look at each value on the value chain. */
a6535de1
TT
1801 gdb_assert (!val_chain.empty ());
1802 for (const value_ref_ptr &iter : val_chain)
a5606eee 1803 {
a6535de1
TT
1804 v = iter.get ();
1805
a5606eee
VP
1806 /* If it's a memory location, and GDB actually needed
1807 its contents to evaluate the expression, then we
fa4727a6
DJ
1808 must watch it. If the first value returned is
1809 still lazy, that means an error occurred reading it;
1810 watch it anyway in case it becomes readable. */
a5606eee 1811 if (VALUE_LVAL (v) == lval_memory
a6535de1 1812 && (v == val_chain[0] || ! value_lazy (v)))
a5606eee
VP
1813 {
1814 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1815
a5606eee
VP
1816 /* We only watch structs and arrays if user asked
1817 for it explicitly, never if they just happen to
1818 appear in the middle of some value chain. */
fa4727a6 1819 if (v == result
a5606eee
VP
1820 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1821 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1822 {
1823 CORE_ADDR addr;
f486487f 1824 enum target_hw_bp_type type;
a5606eee 1825 struct bp_location *loc, **tmp;
bb9d5f81
PP
1826 int bitpos = 0, bitsize = 0;
1827
1828 if (value_bitsize (v) != 0)
1829 {
1830 /* Extract the bit parameters out from the bitfield
1831 sub-expression. */
1832 bitpos = value_bitpos (v);
1833 bitsize = value_bitsize (v);
1834 }
1835 else if (v == result && b->val_bitsize != 0)
1836 {
1837 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1838 lvalue whose bit parameters are saved in the fields
1839 VAL_BITPOS and VAL_BITSIZE. */
1840 bitpos = b->val_bitpos;
1841 bitsize = b->val_bitsize;
1842 }
a5606eee 1843
42ae5230 1844 addr = value_address (v);
bb9d5f81
PP
1845 if (bitsize != 0)
1846 {
1847 /* Skip the bytes that don't contain the bitfield. */
1848 addr += bitpos / 8;
1849 }
1850
a5606eee 1851 type = hw_write;
c1fc2657 1852 if (b->type == bp_read_watchpoint)
a5606eee 1853 type = hw_read;
c1fc2657 1854 else if (b->type == bp_access_watchpoint)
a5606eee 1855 type = hw_access;
3a5c3e22 1856
c1fc2657
SM
1857 loc = allocate_bp_location (b);
1858 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1859 ;
1860 *tmp = loc;
a6d9a66e 1861 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1862
1863 loc->pspace = frame_pspace;
f17d9474 1864 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1865
1866 if (bitsize != 0)
1867 {
1868 /* Just cover the bytes that make up the bitfield. */
1869 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1870 }
1871 else
1872 loc->length = TYPE_LENGTH (value_type (v));
1873
a5606eee
VP
1874 loc->watchpoint_type = type;
1875 }
1876 }
9fa40276
TJB
1877 }
1878
1879 /* Change the type of breakpoint between hardware assisted or
1880 an ordinary watchpoint depending on the hardware support
1881 and free hardware slots. REPARSE is set when the inferior
1882 is started. */
a9634178 1883 if (reparse)
9fa40276 1884 {
e09342b5 1885 int reg_cnt;
9fa40276
TJB
1886 enum bp_loc_type loc_type;
1887 struct bp_location *bl;
a5606eee 1888
a9634178 1889 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
1890
1891 if (reg_cnt)
9fa40276
TJB
1892 {
1893 int i, target_resources_ok, other_type_used;
a1398e0c 1894 enum bptype type;
9fa40276 1895
a9634178
TJB
1896 /* Use an exact watchpoint when there's only one memory region to be
1897 watched, and only one debug register is needed to watch it. */
1898 b->exact = target_exact_watchpoints && reg_cnt == 1;
1899
9fa40276 1900 /* We need to determine how many resources are already
e09342b5
TJB
1901 used for all other hardware watchpoints plus this one
1902 to see if we still have enough resources to also fit
a1398e0c
PA
1903 this watchpoint in as well. */
1904
1905 /* If this is a software watchpoint, we try to turn it
1906 to a hardware one -- count resources as if B was of
1907 hardware watchpoint type. */
c1fc2657 1908 type = b->type;
a1398e0c
PA
1909 if (type == bp_watchpoint)
1910 type = bp_hardware_watchpoint;
1911
1912 /* This watchpoint may or may not have been placed on
1913 the list yet at this point (it won't be in the list
1914 if we're trying to create it for the first time,
1915 through watch_command), so always account for it
1916 manually. */
1917
1918 /* Count resources used by all watchpoints except B. */
c1fc2657 1919 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
1920
1921 /* Add in the resources needed for B. */
c1fc2657 1922 i += hw_watchpoint_use_count (b);
a1398e0c
PA
1923
1924 target_resources_ok
1925 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 1926 if (target_resources_ok <= 0)
a9634178 1927 {
c1fc2657 1928 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
1929
1930 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
1931 error (_("Target does not support this type of "
1932 "hardware watchpoint."));
9c06b0b4
TJB
1933 else if (target_resources_ok < 0 && !sw_mode)
1934 error (_("There are not enough available hardware "
1935 "resources for this watchpoint."));
a1398e0c
PA
1936
1937 /* Downgrade to software watchpoint. */
c1fc2657 1938 b->type = bp_watchpoint;
a1398e0c
PA
1939 }
1940 else
1941 {
1942 /* If this was a software watchpoint, we've just
1943 found we have enough resources to turn it to a
1944 hardware watchpoint. Otherwise, this is a
1945 nop. */
c1fc2657 1946 b->type = type;
a9634178 1947 }
9fa40276 1948 }
c1fc2657 1949 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
1950 {
1951 if (!can_use_hw_watchpoints)
1952 error (_("Can't set read/access watchpoint when "
1953 "hardware watchpoints are disabled."));
1954 else
1955 error (_("Expression cannot be implemented with "
1956 "read/access watchpoint."));
1957 }
9fa40276 1958 else
c1fc2657 1959 b->type = bp_watchpoint;
9fa40276 1960
c1fc2657 1961 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 1962 : bp_loc_hardware_watchpoint);
c1fc2657 1963 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
1964 bl->loc_type = loc_type;
1965 }
1966
c7437ca6
PA
1967 /* If a software watchpoint is not watching any memory, then the
1968 above left it without any location set up. But,
1969 bpstat_stop_status requires a location to be able to report
1970 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
1971 if (b->type == bp_watchpoint && b->loc == NULL)
1972 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
1973 }
1974 else if (!within_current_scope)
7270d8f2 1975 {
ac74f770
MS
1976 printf_filtered (_("\
1977Watchpoint %d deleted because the program has left the block\n\
1978in which its expression is valid.\n"),
c1fc2657 1979 b->number);
d0fb5eae 1980 watchpoint_del_at_next_stop (b);
7270d8f2 1981 }
a5606eee
VP
1982
1983 /* Restore the selected frame. */
66076460
DJ
1984 if (frame_saved)
1985 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
1986}
1987
a5606eee 1988
74960c60 1989/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
1990 inserted in the inferior. We don't differentiate the type of BL's owner
1991 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1992 breakpoint_ops is not defined, because in insert_bp_location,
1993 tracepoint's insert_location will not be called. */
74960c60 1994static int
35df4500 1995should_be_inserted (struct bp_location *bl)
74960c60 1996{
35df4500 1997 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
1998 return 0;
1999
35df4500 2000 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2001 return 0;
2002
35df4500 2003 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2004 return 0;
2005
f8eba3c6
TT
2006 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2007 return 0;
2008
56710373
PA
2009 /* This is set for example, when we're attached to the parent of a
2010 vfork, and have detached from the child. The child is running
2011 free, and we expect it to do an exec or exit, at which point the
2012 OS makes the parent schedulable again (and the target reports
2013 that the vfork is done). Until the child is done with the shared
2014 memory region, do not insert breakpoints in the parent, otherwise
2015 the child could still trip on the parent's breakpoints. Since
2016 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2017 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2018 return 0;
2019
31e77af2 2020 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2021 location, except if the breakpoint is a single-step breakpoint,
2022 and the breakpoint's thread is the thread which is stepping past
2023 a breakpoint. */
31e77af2
PA
2024 if ((bl->loc_type == bp_loc_software_breakpoint
2025 || bl->loc_type == bp_loc_hardware_breakpoint)
2026 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2027 bl->address)
2028 /* The single-step breakpoint may be inserted at the location
2029 we're trying to step if the instruction branches to itself.
2030 However, the instruction won't be executed at all and it may
2031 break the semantics of the instruction, for example, the
2032 instruction is a conditional branch or updates some flags.
2033 We can't fix it unless GDB is able to emulate the instruction
2034 or switch to displaced stepping. */
2035 && !(bl->owner->type == bp_single_step
2036 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2037 {
2038 if (debug_infrun)
2039 {
2040 fprintf_unfiltered (gdb_stdlog,
2041 "infrun: skipping breakpoint: "
2042 "stepping past insn at: %s\n",
2043 paddress (bl->gdbarch, bl->address));
2044 }
2045 return 0;
2046 }
31e77af2 2047
963f9c80
PA
2048 /* Don't insert watchpoints if we're trying to step past the
2049 instruction that triggered one. */
2050 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2051 && stepping_past_nonsteppable_watchpoint ())
2052 {
2053 if (debug_infrun)
2054 {
2055 fprintf_unfiltered (gdb_stdlog,
2056 "infrun: stepping past non-steppable watchpoint. "
2057 "skipping watchpoint at %s:%d\n",
2058 paddress (bl->gdbarch, bl->address),
2059 bl->length);
2060 }
2061 return 0;
2062 }
2063
74960c60
VP
2064 return 1;
2065}
2066
934709f0
PW
2067/* Same as should_be_inserted but does the check assuming
2068 that the location is not duplicated. */
2069
2070static int
2071unduplicated_should_be_inserted (struct bp_location *bl)
2072{
2073 int result;
2074 const int save_duplicate = bl->duplicate;
2075
2076 bl->duplicate = 0;
2077 result = should_be_inserted (bl);
2078 bl->duplicate = save_duplicate;
2079 return result;
2080}
2081
b775012e
LM
2082/* Parses a conditional described by an expression COND into an
2083 agent expression bytecode suitable for evaluation
2084 by the bytecode interpreter. Return NULL if there was
2085 any error during parsing. */
2086
833177a4 2087static agent_expr_up
b775012e
LM
2088parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2089{
833177a4 2090 if (cond == NULL)
b775012e
LM
2091 return NULL;
2092
833177a4
PA
2093 agent_expr_up aexpr;
2094
b775012e
LM
2095 /* We don't want to stop processing, so catch any errors
2096 that may show up. */
a70b8144 2097 try
b775012e 2098 {
036e657b 2099 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2100 }
2101
230d2906 2102 catch (const gdb_exception_error &ex)
b775012e
LM
2103 {
2104 /* If we got here, it means the condition could not be parsed to a valid
2105 bytecode expression and thus can't be evaluated on the target's side.
2106 It's no use iterating through the conditions. */
b775012e
LM
2107 }
2108
2109 /* We have a valid agent expression. */
2110 return aexpr;
2111}
2112
2113/* Based on location BL, create a list of breakpoint conditions to be
2114 passed on to the target. If we have duplicated locations with different
2115 conditions, we will add such conditions to the list. The idea is that the
2116 target will evaluate the list of conditions and will only notify GDB when
2117 one of them is true. */
2118
2119static void
2120build_target_condition_list (struct bp_location *bl)
2121{
2122 struct bp_location **locp = NULL, **loc2p;
2123 int null_condition_or_parse_error = 0;
2124 int modified = bl->needs_update;
2125 struct bp_location *loc;
2126
8b4f3082 2127 /* Release conditions left over from a previous insert. */
3cde5c42 2128 bl->target_info.conditions.clear ();
8b4f3082 2129
b775012e
LM
2130 /* This is only meaningful if the target is
2131 evaluating conditions and if the user has
2132 opted for condition evaluation on the target's
2133 side. */
2134 if (gdb_evaluates_breakpoint_condition_p ()
2135 || !target_supports_evaluation_of_breakpoint_conditions ())
2136 return;
2137
2138 /* Do a first pass to check for locations with no assigned
2139 conditions or conditions that fail to parse to a valid agent expression
2140 bytecode. If any of these happen, then it's no use to send conditions
2141 to the target since this location will always trigger and generate a
2142 response back to GDB. */
2143 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144 {
2145 loc = (*loc2p);
2146 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147 {
2148 if (modified)
2149 {
b775012e
LM
2150 /* Re-parse the conditions since something changed. In that
2151 case we already freed the condition bytecodes (see
2152 force_breakpoint_reinsertion). We just
2153 need to parse the condition to bytecodes again. */
833177a4
PA
2154 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2155 loc->cond.get ());
b775012e
LM
2156 }
2157
2158 /* If we have a NULL bytecode expression, it means something
2159 went wrong or we have a null condition expression. */
2160 if (!loc->cond_bytecode)
2161 {
2162 null_condition_or_parse_error = 1;
2163 break;
2164 }
2165 }
2166 }
2167
2168 /* If any of these happened, it means we will have to evaluate the conditions
2169 for the location's address on gdb's side. It is no use keeping bytecodes
2170 for all the other duplicate locations, thus we free all of them here.
2171
2172 This is so we have a finer control over which locations' conditions are
2173 being evaluated by GDB or the remote stub. */
2174 if (null_condition_or_parse_error)
2175 {
2176 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2177 {
2178 loc = (*loc2p);
2179 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2180 {
2181 /* Only go as far as the first NULL bytecode is
2182 located. */
2183 if (!loc->cond_bytecode)
2184 return;
2185
833177a4 2186 loc->cond_bytecode.reset ();
b775012e
LM
2187 }
2188 }
2189 }
2190
2191 /* No NULL conditions or failed bytecode generation. Build a condition list
2192 for this location's address. */
2193 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2194 {
2195 loc = (*loc2p);
2196 if (loc->cond
2197 && is_breakpoint (loc->owner)
2198 && loc->pspace->num == bl->pspace->num
2199 && loc->owner->enable_state == bp_enabled
2200 && loc->enabled)
3cde5c42
PA
2201 {
2202 /* Add the condition to the vector. This will be used later
2203 to send the conditions to the target. */
2204 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2205 }
b775012e
LM
2206 }
2207
2208 return;
2209}
2210
d3ce09f5
SS
2211/* Parses a command described by string CMD into an agent expression
2212 bytecode suitable for evaluation by the bytecode interpreter.
2213 Return NULL if there was any error during parsing. */
2214
833177a4 2215static agent_expr_up
d3ce09f5
SS
2216parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2217{
bbc13ae3
KS
2218 const char *cmdrest;
2219 const char *format_start, *format_end;
d3ce09f5
SS
2220 struct gdbarch *gdbarch = get_current_arch ();
2221
833177a4 2222 if (cmd == NULL)
d3ce09f5
SS
2223 return NULL;
2224
2225 cmdrest = cmd;
2226
2227 if (*cmdrest == ',')
2228 ++cmdrest;
f1735a53 2229 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2230
2231 if (*cmdrest++ != '"')
2232 error (_("No format string following the location"));
2233
2234 format_start = cmdrest;
2235
8e481c3b 2236 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2237
2238 format_end = cmdrest;
2239
2240 if (*cmdrest++ != '"')
2241 error (_("Bad format string, non-terminated '\"'."));
2242
f1735a53 2243 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2244
2245 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2246 error (_("Invalid argument syntax"));
2247
2248 if (*cmdrest == ',')
2249 cmdrest++;
f1735a53 2250 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2251
2252 /* For each argument, make an expression. */
2253
8e481c3b 2254 std::vector<struct expression *> argvec;
d3ce09f5
SS
2255 while (*cmdrest != '\0')
2256 {
bbc13ae3 2257 const char *cmd1;
d3ce09f5
SS
2258
2259 cmd1 = cmdrest;
4d01a485 2260 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2261 argvec.push_back (expr.release ());
d3ce09f5
SS
2262 cmdrest = cmd1;
2263 if (*cmdrest == ',')
2264 ++cmdrest;
2265 }
2266
833177a4
PA
2267 agent_expr_up aexpr;
2268
d3ce09f5
SS
2269 /* We don't want to stop processing, so catch any errors
2270 that may show up. */
a70b8144 2271 try
d3ce09f5 2272 {
036e657b
JB
2273 aexpr = gen_printf (scope, gdbarch, 0, 0,
2274 format_start, format_end - format_start,
8e481c3b 2275 argvec.size (), argvec.data ());
d3ce09f5 2276 }
230d2906 2277 catch (const gdb_exception_error &ex)
d3ce09f5
SS
2278 {
2279 /* If we got here, it means the command could not be parsed to a valid
2280 bytecode expression and thus can't be evaluated on the target's side.
2281 It's no use iterating through the other commands. */
d3ce09f5 2282 }
492d29ea 2283
d3ce09f5
SS
2284 /* We have a valid agent expression, return it. */
2285 return aexpr;
2286}
2287
2288/* Based on location BL, create a list of breakpoint commands to be
2289 passed on to the target. If we have duplicated locations with
2290 different commands, we will add any such to the list. */
2291
2292static void
2293build_target_command_list (struct bp_location *bl)
2294{
2295 struct bp_location **locp = NULL, **loc2p;
2296 int null_command_or_parse_error = 0;
2297 int modified = bl->needs_update;
2298 struct bp_location *loc;
2299
3cde5c42
PA
2300 /* Clear commands left over from a previous insert. */
2301 bl->target_info.tcommands.clear ();
8b4f3082 2302
41fac0cf 2303 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2304 return;
2305
41fac0cf
PA
2306 /* For now, limit to agent-style dprintf breakpoints. */
2307 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2308 return;
2309
41fac0cf
PA
2310 /* For now, if we have any duplicate location that isn't a dprintf,
2311 don't install the target-side commands, as that would make the
2312 breakpoint not be reported to the core, and we'd lose
2313 control. */
2314 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2315 {
2316 loc = (*loc2p);
2317 if (is_breakpoint (loc->owner)
2318 && loc->pspace->num == bl->pspace->num
2319 && loc->owner->type != bp_dprintf)
2320 return;
2321 }
2322
d3ce09f5
SS
2323 /* Do a first pass to check for locations with no assigned
2324 conditions or conditions that fail to parse to a valid agent expression
2325 bytecode. If any of these happen, then it's no use to send conditions
2326 to the target since this location will always trigger and generate a
2327 response back to GDB. */
2328 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329 {
2330 loc = (*loc2p);
2331 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2332 {
2333 if (modified)
2334 {
d3ce09f5
SS
2335 /* Re-parse the commands since something changed. In that
2336 case we already freed the command bytecodes (see
2337 force_breakpoint_reinsertion). We just
2338 need to parse the command to bytecodes again. */
833177a4
PA
2339 loc->cmd_bytecode
2340 = parse_cmd_to_aexpr (bl->address,
2341 loc->owner->extra_string);
d3ce09f5
SS
2342 }
2343
2344 /* If we have a NULL bytecode expression, it means something
2345 went wrong or we have a null command expression. */
2346 if (!loc->cmd_bytecode)
2347 {
2348 null_command_or_parse_error = 1;
2349 break;
2350 }
2351 }
2352 }
2353
2354 /* If anything failed, then we're not doing target-side commands,
2355 and so clean up. */
2356 if (null_command_or_parse_error)
2357 {
2358 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2359 {
2360 loc = (*loc2p);
2361 if (is_breakpoint (loc->owner)
2362 && loc->pspace->num == bl->pspace->num)
2363 {
2364 /* Only go as far as the first NULL bytecode is
2365 located. */
40fb6c5e 2366 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2367 return;
2368
833177a4 2369 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2370 }
2371 }
2372 }
2373
2374 /* No NULL commands or failed bytecode generation. Build a command list
2375 for this location's address. */
2376 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2377 {
2378 loc = (*loc2p);
2379 if (loc->owner->extra_string
2380 && is_breakpoint (loc->owner)
2381 && loc->pspace->num == bl->pspace->num
2382 && loc->owner->enable_state == bp_enabled
2383 && loc->enabled)
3cde5c42
PA
2384 {
2385 /* Add the command to the vector. This will be used later
2386 to send the commands to the target. */
2387 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2388 }
d3ce09f5
SS
2389 }
2390
2391 bl->target_info.persist = 0;
2392 /* Maybe flag this location as persistent. */
2393 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2394 bl->target_info.persist = 1;
2395}
2396
833b7ab5
YQ
2397/* Return the kind of breakpoint on address *ADDR. Get the kind
2398 of breakpoint according to ADDR except single-step breakpoint.
2399 Get the kind of single-step breakpoint according to the current
2400 registers state. */
cd6c3b4f
YQ
2401
2402static int
2403breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2404{
833b7ab5
YQ
2405 if (bl->owner->type == bp_single_step)
2406 {
2407 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2408 struct regcache *regcache;
2409
00431a78 2410 regcache = get_thread_regcache (thr);
833b7ab5
YQ
2411
2412 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2413 regcache, addr);
2414 }
2415 else
2416 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2417}
2418
35df4500
TJB
2419/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2420 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2421 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2422 Returns 0 for success, 1 if the bp_location type is not supported or
2423 -1 for failure.
879bfdc2 2424
4a64f543
MS
2425 NOTE drow/2003-09-09: This routine could be broken down to an
2426 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2427static int
35df4500 2428insert_bp_location (struct bp_location *bl,
26bb91f3 2429 struct ui_file *tmp_error_stream,
3fbb6ffa 2430 int *disabled_breaks,
dd61ec5c
MW
2431 int *hw_breakpoint_error,
2432 int *hw_bp_error_explained_already)
879bfdc2 2433{
cc06b668 2434 gdb_exception bp_excpt;
879bfdc2 2435
b775012e 2436 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2437 return 0;
2438
35c63cd8
JB
2439 /* Note we don't initialize bl->target_info, as that wipes out
2440 the breakpoint location's shadow_contents if the breakpoint
2441 is still inserted at that location. This in turn breaks
2442 target_read_memory which depends on these buffers when
2443 a memory read is requested at the breakpoint location:
2444 Once the target_info has been wiped, we fail to see that
2445 we have a breakpoint inserted at that address and thus
2446 read the breakpoint instead of returning the data saved in
2447 the breakpoint location's shadow contents. */
0d5ed153 2448 bl->target_info.reqstd_address = bl->address;
35df4500 2449 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2450 bl->target_info.length = bl->length;
8181d85f 2451
b775012e
LM
2452 /* When working with target-side conditions, we must pass all the conditions
2453 for the same breakpoint address down to the target since GDB will not
2454 insert those locations. With a list of breakpoint conditions, the target
2455 can decide when to stop and notify GDB. */
2456
2457 if (is_breakpoint (bl->owner))
2458 {
2459 build_target_condition_list (bl);
d3ce09f5
SS
2460 build_target_command_list (bl);
2461 /* Reset the modification marker. */
b775012e
LM
2462 bl->needs_update = 0;
2463 }
2464
35df4500
TJB
2465 if (bl->loc_type == bp_loc_software_breakpoint
2466 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2467 {
35df4500 2468 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2469 {
2470 /* If the explicitly specified breakpoint type
2471 is not hardware breakpoint, check the memory map to see
2472 if the breakpoint address is in read only memory or not.
4a64f543 2473
765dc015
VP
2474 Two important cases are:
2475 - location type is not hardware breakpoint, memory
2476 is readonly. We change the type of the location to
2477 hardware breakpoint.
4a64f543
MS
2478 - location type is hardware breakpoint, memory is
2479 read-write. This means we've previously made the
2480 location hardware one, but then the memory map changed,
2481 so we undo.
765dc015 2482
4a64f543
MS
2483 When breakpoints are removed, remove_breakpoints will use
2484 location types we've just set here, the only possible
2485 problem is that memory map has changed during running
2486 program, but it's not going to work anyway with current
2487 gdb. */
765dc015 2488 struct mem_region *mr
0d5ed153 2489 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2490
2491 if (mr)
2492 {
2493 if (automatic_hardware_breakpoints)
2494 {
765dc015
VP
2495 enum bp_loc_type new_type;
2496
2497 if (mr->attrib.mode != MEM_RW)
2498 new_type = bp_loc_hardware_breakpoint;
2499 else
2500 new_type = bp_loc_software_breakpoint;
2501
35df4500 2502 if (new_type != bl->loc_type)
765dc015
VP
2503 {
2504 static int said = 0;
cc59ec59 2505
35df4500 2506 bl->loc_type = new_type;
765dc015
VP
2507 if (!said)
2508 {
3e43a32a
MS
2509 fprintf_filtered (gdb_stdout,
2510 _("Note: automatically using "
2511 "hardware breakpoints for "
2512 "read-only addresses.\n"));
765dc015
VP
2513 said = 1;
2514 }
2515 }
2516 }
35df4500 2517 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2518 && mr->attrib.mode != MEM_RW)
2519 {
2520 fprintf_unfiltered (tmp_error_stream,
2521 _("Cannot insert breakpoint %d.\n"
2522 "Cannot set software breakpoint "
2523 "at read-only address %s\n"),
2524 bl->owner->number,
2525 paddress (bl->gdbarch, bl->address));
2526 return 1;
2527 }
765dc015
VP
2528 }
2529 }
2530
879bfdc2
DJ
2531 /* First check to see if we have to handle an overlay. */
2532 if (overlay_debugging == ovly_off
35df4500
TJB
2533 || bl->section == NULL
2534 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2535 {
2536 /* No overlay handling: just set the breakpoint. */
a70b8144 2537 try
dd61ec5c 2538 {
0000e5cc
PA
2539 int val;
2540
dd61ec5c 2541 val = bl->owner->ops->insert_location (bl);
0000e5cc 2542 if (val)
688fca4f 2543 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2544 }
94aeb44b 2545 catch (gdb_exception &e)
dd61ec5c 2546 {
94aeb44b 2547 bp_excpt = std::move (e);
dd61ec5c 2548 }
879bfdc2
DJ
2549 }
2550 else
2551 {
4a64f543 2552 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2553 Shall we set a breakpoint at the LMA? */
2554 if (!overlay_events_enabled)
2555 {
2556 /* Yes -- overlay event support is not active,
2557 so we must try to set a breakpoint at the LMA.
2558 This will not work for a hardware breakpoint. */
35df4500 2559 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2560 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2561 bl->owner->number);
879bfdc2
DJ
2562 else
2563 {
35df4500
TJB
2564 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2565 bl->section);
879bfdc2 2566 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2567 bl->overlay_target_info = bl->target_info;
0d5ed153 2568 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2569
2570 /* No overlay handling: just set the breakpoint. */
a70b8144 2571 try
0000e5cc
PA
2572 {
2573 int val;
2574
579c6ad9 2575 bl->overlay_target_info.kind
cd6c3b4f
YQ
2576 = breakpoint_kind (bl, &addr);
2577 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2578 val = target_insert_breakpoint (bl->gdbarch,
2579 &bl->overlay_target_info);
2580 if (val)
688fca4f
PA
2581 bp_excpt
2582 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2583 }
94aeb44b 2584 catch (gdb_exception &e)
0000e5cc 2585 {
94aeb44b 2586 bp_excpt = std::move (e);
0000e5cc
PA
2587 }
2588
688fca4f 2589 if (bp_excpt.reason != 0)
99361f52 2590 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2591 "Overlay breakpoint %d "
2592 "failed: in ROM?\n",
35df4500 2593 bl->owner->number);
879bfdc2
DJ
2594 }
2595 }
2596 /* Shall we set a breakpoint at the VMA? */
35df4500 2597 if (section_is_mapped (bl->section))
879bfdc2
DJ
2598 {
2599 /* Yes. This overlay section is mapped into memory. */
a70b8144 2600 try
dd61ec5c 2601 {
0000e5cc
PA
2602 int val;
2603
dd61ec5c 2604 val = bl->owner->ops->insert_location (bl);
0000e5cc 2605 if (val)
688fca4f 2606 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2607 }
94aeb44b 2608 catch (gdb_exception &e)
dd61ec5c 2609 {
94aeb44b 2610 bp_excpt = std::move (e);
dd61ec5c 2611 }
879bfdc2
DJ
2612 }
2613 else
2614 {
2615 /* No. This breakpoint will not be inserted.
2616 No error, but do not mark the bp as 'inserted'. */
2617 return 0;
2618 }
2619 }
2620
688fca4f 2621 if (bp_excpt.reason != 0)
879bfdc2
DJ
2622 {
2623 /* Can't set the breakpoint. */
0000e5cc
PA
2624
2625 /* In some cases, we might not be able to insert a
2626 breakpoint in a shared library that has already been
2627 removed, but we have not yet processed the shlib unload
2628 event. Unfortunately, some targets that implement
076855f9
PA
2629 breakpoint insertion themselves can't tell why the
2630 breakpoint insertion failed (e.g., the remote target
2631 doesn't define error codes), so we must treat generic
2632 errors as memory errors. */
688fca4f
PA
2633 if (bp_excpt.reason == RETURN_ERROR
2634 && (bp_excpt.error == GENERIC_ERROR
2635 || bp_excpt.error == MEMORY_ERROR)
076855f9 2636 && bl->loc_type == bp_loc_software_breakpoint
08351840 2637 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2638 || shared_objfile_contains_address_p (bl->pspace,
2639 bl->address)))
879bfdc2 2640 {
4a64f543 2641 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2642 bl->shlib_disabled = 1;
76727919 2643 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2644 if (!*disabled_breaks)
2645 {
2646 fprintf_unfiltered (tmp_error_stream,
2647 "Cannot insert breakpoint %d.\n",
2648 bl->owner->number);
2649 fprintf_unfiltered (tmp_error_stream,
2650 "Temporarily disabling shared "
2651 "library breakpoints:\n");
2652 }
2653 *disabled_breaks = 1;
879bfdc2 2654 fprintf_unfiltered (tmp_error_stream,
35df4500 2655 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2656 return 0;
879bfdc2
DJ
2657 }
2658 else
879bfdc2 2659 {
35df4500 2660 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2661 {
0000e5cc 2662 *hw_breakpoint_error = 1;
688fca4f 2663 *hw_bp_error_explained_already = bp_excpt.message != NULL;
dd61ec5c
MW
2664 fprintf_unfiltered (tmp_error_stream,
2665 "Cannot insert hardware breakpoint %d%s",
688fca4f
PA
2666 bl->owner->number,
2667 bp_excpt.message ? ":" : ".\n");
2668 if (bp_excpt.message != NULL)
2669 fprintf_unfiltered (tmp_error_stream, "%s.\n",
3d6e9d23 2670 bp_excpt.what ());
879bfdc2
DJ
2671 }
2672 else
2673 {
688fca4f 2674 if (bp_excpt.message == NULL)
0000e5cc 2675 {
1ccbe998 2676 std::string message
0000e5cc
PA
2677 = memory_error_message (TARGET_XFER_E_IO,
2678 bl->gdbarch, bl->address);
0000e5cc
PA
2679
2680 fprintf_unfiltered (tmp_error_stream,
2681 "Cannot insert breakpoint %d.\n"
2682 "%s\n",
1ccbe998 2683 bl->owner->number, message.c_str ());
0000e5cc
PA
2684 }
2685 else
2686 {
2687 fprintf_unfiltered (tmp_error_stream,
2688 "Cannot insert breakpoint %d: %s\n",
2689 bl->owner->number,
3d6e9d23 2690 bp_excpt.what ());
0000e5cc 2691 }
879bfdc2 2692 }
0000e5cc 2693 return 1;
879bfdc2
DJ
2694
2695 }
2696 }
2697 else
35df4500 2698 bl->inserted = 1;
879bfdc2 2699
0000e5cc 2700 return 0;
879bfdc2
DJ
2701 }
2702
35df4500 2703 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2704 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2705 watchpoints. It's not clear that it's necessary... */
35df4500 2706 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2707 {
0000e5cc
PA
2708 int val;
2709
77b06cd7
TJB
2710 gdb_assert (bl->owner->ops != NULL
2711 && bl->owner->ops->insert_location != NULL);
2712
2713 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2714
2715 /* If trying to set a read-watchpoint, and it turns out it's not
2716 supported, try emulating one with an access watchpoint. */
35df4500 2717 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2718 {
2719 struct bp_location *loc, **loc_temp;
2720
2721 /* But don't try to insert it, if there's already another
2722 hw_access location that would be considered a duplicate
2723 of this one. */
2724 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2725 if (loc != bl
85d721b8 2726 && loc->watchpoint_type == hw_access
35df4500 2727 && watchpoint_locations_match (bl, loc))
85d721b8 2728 {
35df4500
TJB
2729 bl->duplicate = 1;
2730 bl->inserted = 1;
2731 bl->target_info = loc->target_info;
2732 bl->watchpoint_type = hw_access;
85d721b8
PA
2733 val = 0;
2734 break;
2735 }
2736
2737 if (val == 1)
2738 {
77b06cd7
TJB
2739 bl->watchpoint_type = hw_access;
2740 val = bl->owner->ops->insert_location (bl);
2741
2742 if (val)
2743 /* Back to the original value. */
2744 bl->watchpoint_type = hw_read;
85d721b8
PA
2745 }
2746 }
2747
35df4500 2748 bl->inserted = (val == 0);
879bfdc2
DJ
2749 }
2750
35df4500 2751 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2752 {
0000e5cc
PA
2753 int val;
2754
77b06cd7
TJB
2755 gdb_assert (bl->owner->ops != NULL
2756 && bl->owner->ops->insert_location != NULL);
2757
2758 val = bl->owner->ops->insert_location (bl);
2759 if (val)
2760 {
2761 bl->owner->enable_state = bp_disabled;
2762
2763 if (val == 1)
2764 warning (_("\
2765Error inserting catchpoint %d: Your system does not support this type\n\
2766of catchpoint."), bl->owner->number);
2767 else
2768 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2769 }
2770
2771 bl->inserted = (val == 0);
1640b821
DJ
2772
2773 /* We've already printed an error message if there was a problem
2774 inserting this catchpoint, and we've disabled the catchpoint,
2775 so just return success. */
2776 return 0;
879bfdc2
DJ
2777 }
2778
2779 return 0;
2780}
2781
6c95b8df
PA
2782/* This function is called when program space PSPACE is about to be
2783 deleted. It takes care of updating breakpoints to not reference
2784 PSPACE anymore. */
2785
2786void
2787breakpoint_program_space_exit (struct program_space *pspace)
2788{
2789 struct breakpoint *b, *b_temp;
876fa593 2790 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2791
2792 /* Remove any breakpoint that was set through this program space. */
2793 ALL_BREAKPOINTS_SAFE (b, b_temp)
2794 {
2795 if (b->pspace == pspace)
2796 delete_breakpoint (b);
2797 }
2798
2799 /* Breakpoints set through other program spaces could have locations
2800 bound to PSPACE as well. Remove those. */
876fa593 2801 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2802 {
2803 struct bp_location *tmp;
2804
2805 if (loc->pspace == pspace)
2806 {
2bdf28a0 2807 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2808 if (loc->owner->loc == loc)
2809 loc->owner->loc = loc->next;
2810 else
2811 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2812 if (tmp->next == loc)
2813 {
2814 tmp->next = loc->next;
2815 break;
2816 }
2817 }
2818 }
2819
2820 /* Now update the global location list to permanently delete the
2821 removed locations above. */
44702360 2822 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2823}
2824
74960c60
VP
2825/* Make sure all breakpoints are inserted in inferior.
2826 Throws exception on any error.
2827 A breakpoint that is already inserted won't be inserted
2828 again, so calling this function twice is safe. */
2829void
2830insert_breakpoints (void)
2831{
2832 struct breakpoint *bpt;
2833
2834 ALL_BREAKPOINTS (bpt)
2835 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2836 {
2837 struct watchpoint *w = (struct watchpoint *) bpt;
2838
2839 update_watchpoint (w, 0 /* don't reparse. */);
2840 }
74960c60 2841
04086b45
PA
2842 /* Updating watchpoints creates new locations, so update the global
2843 location list. Explicitly tell ugll to insert locations and
2844 ignore breakpoints_always_inserted_mode. */
2845 update_global_location_list (UGLL_INSERT);
74960c60
VP
2846}
2847
20388dd6
YQ
2848/* Invoke CALLBACK for each of bp_location. */
2849
2850void
2851iterate_over_bp_locations (walk_bp_location_callback callback)
2852{
2853 struct bp_location *loc, **loc_tmp;
2854
2855 ALL_BP_LOCATIONS (loc, loc_tmp)
2856 {
2857 callback (loc, NULL);
2858 }
2859}
2860
b775012e
LM
2861/* This is used when we need to synch breakpoint conditions between GDB and the
2862 target. It is the case with deleting and disabling of breakpoints when using
2863 always-inserted mode. */
2864
2865static void
2866update_inserted_breakpoint_locations (void)
2867{
2868 struct bp_location *bl, **blp_tmp;
2869 int error_flag = 0;
2870 int val = 0;
2871 int disabled_breaks = 0;
2872 int hw_breakpoint_error = 0;
dd61ec5c 2873 int hw_bp_details_reported = 0;
b775012e 2874
d7e74731 2875 string_file tmp_error_stream;
b775012e
LM
2876
2877 /* Explicitly mark the warning -- this will only be printed if
2878 there was an error. */
d7e74731 2879 tmp_error_stream.puts ("Warning:\n");
b775012e 2880
5ed8105e 2881 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2882
2883 ALL_BP_LOCATIONS (bl, blp_tmp)
2884 {
2885 /* We only want to update software breakpoints and hardware
2886 breakpoints. */
2887 if (!is_breakpoint (bl->owner))
2888 continue;
2889
2890 /* We only want to update locations that are already inserted
2891 and need updating. This is to avoid unwanted insertion during
2892 deletion of breakpoints. */
4daf1902 2893 if (!bl->inserted || !bl->needs_update)
b775012e
LM
2894 continue;
2895
2896 switch_to_program_space_and_thread (bl->pspace);
2897
2898 /* For targets that support global breakpoints, there's no need
2899 to select an inferior to insert breakpoint to. In fact, even
2900 if we aren't attached to any process yet, we should still
2901 insert breakpoints. */
f5656ead 2902 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2903 && inferior_ptid == null_ptid)
b775012e
LM
2904 continue;
2905
d7e74731 2906 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2907 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2908 if (val)
2909 error_flag = val;
2910 }
2911
2912 if (error_flag)
2913 {
223ffa71 2914 target_terminal::ours_for_output ();
b775012e
LM
2915 error_stream (tmp_error_stream);
2916 }
b775012e
LM
2917}
2918
c30eee59 2919/* Used when starting or continuing the program. */
c906108c 2920
74960c60
VP
2921static void
2922insert_breakpoint_locations (void)
c906108c 2923{
a5606eee 2924 struct breakpoint *bpt;
35df4500 2925 struct bp_location *bl, **blp_tmp;
eacd795a 2926 int error_flag = 0;
c906108c 2927 int val = 0;
3fbb6ffa 2928 int disabled_breaks = 0;
81d0cc19 2929 int hw_breakpoint_error = 0;
dd61ec5c 2930 int hw_bp_error_explained_already = 0;
c906108c 2931
d7e74731
PA
2932 string_file tmp_error_stream;
2933
81d0cc19
GS
2934 /* Explicitly mark the warning -- this will only be printed if
2935 there was an error. */
d7e74731 2936 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2937
5ed8105e 2938 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2939
35df4500 2940 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 2941 {
b775012e 2942 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2943 continue;
2944
4a64f543
MS
2945 /* There is no point inserting thread-specific breakpoints if
2946 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2947 has BL->OWNER always non-NULL. */
35df4500 2948 if (bl->owner->thread != -1
5d5658a1 2949 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
2950 continue;
2951
35df4500 2952 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
2953
2954 /* For targets that support global breakpoints, there's no need
2955 to select an inferior to insert breakpoint to. In fact, even
2956 if we aren't attached to any process yet, we should still
2957 insert breakpoints. */
f5656ead 2958 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2959 && inferior_ptid == null_ptid)
6c95b8df
PA
2960 continue;
2961
d7e74731 2962 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2963 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 2964 if (val)
eacd795a 2965 error_flag = val;
879bfdc2 2966 }
c906108c 2967
4a64f543
MS
2968 /* If we failed to insert all locations of a watchpoint, remove
2969 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
2970 ALL_BREAKPOINTS (bpt)
2971 {
2972 int some_failed = 0;
2973 struct bp_location *loc;
2974
2975 if (!is_hardware_watchpoint (bpt))
2976 continue;
2977
d6b74ac4 2978 if (!breakpoint_enabled (bpt))
a5606eee 2979 continue;
74960c60
VP
2980
2981 if (bpt->disposition == disp_del_at_next_stop)
2982 continue;
a5606eee
VP
2983
2984 for (loc = bpt->loc; loc; loc = loc->next)
56710373 2985 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
2986 {
2987 some_failed = 1;
2988 break;
2989 }
2990 if (some_failed)
2991 {
2992 for (loc = bpt->loc; loc; loc = loc->next)
2993 if (loc->inserted)
834c0d03 2994 remove_breakpoint (loc);
a5606eee
VP
2995
2996 hw_breakpoint_error = 1;
d7e74731
PA
2997 tmp_error_stream.printf ("Could not insert "
2998 "hardware watchpoint %d.\n",
2999 bpt->number);
eacd795a 3000 error_flag = -1;
a5606eee
VP
3001 }
3002 }
3003
eacd795a 3004 if (error_flag)
81d0cc19
GS
3005 {
3006 /* If a hardware breakpoint or watchpoint was inserted, add a
3007 message about possibly exhausted resources. */
dd61ec5c 3008 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3009 {
d7e74731 3010 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3011You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3012 }
223ffa71 3013 target_terminal::ours_for_output ();
81d0cc19
GS
3014 error_stream (tmp_error_stream);
3015 }
c906108c
SS
3016}
3017
c30eee59
TJB
3018/* Used when the program stops.
3019 Returns zero if successful, or non-zero if there was a problem
3020 removing a breakpoint location. */
3021
c906108c 3022int
fba45db2 3023remove_breakpoints (void)
c906108c 3024{
35df4500 3025 struct bp_location *bl, **blp_tmp;
3a1bae8e 3026 int val = 0;
c906108c 3027
35df4500 3028 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3029 {
1e4d1764 3030 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3031 val |= remove_breakpoint (bl);
c5aa993b 3032 }
3a1bae8e 3033 return val;
c906108c
SS
3034}
3035
49fa26b0
PA
3036/* When a thread exits, remove breakpoints that are related to
3037 that thread. */
3038
3039static void
3040remove_threaded_breakpoints (struct thread_info *tp, int silent)
3041{
3042 struct breakpoint *b, *b_tmp;
3043
3044 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3045 {
5d5658a1 3046 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3047 {
3048 b->disposition = disp_del_at_next_stop;
3049
3050 printf_filtered (_("\
43792cf0
PA
3051Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3052 b->number, print_thread_id (tp));
49fa26b0
PA
3053
3054 /* Hide it from the user. */
3055 b->number = 0;
3056 }
3057 }
3058}
3059
00431a78 3060/* Remove breakpoints of inferior INF. */
6c95b8df
PA
3061
3062int
00431a78 3063remove_breakpoints_inf (inferior *inf)
6c95b8df 3064{
35df4500 3065 struct bp_location *bl, **blp_tmp;
6c95b8df 3066 int val;
6c95b8df 3067
35df4500 3068 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3069 {
35df4500 3070 if (bl->pspace != inf->pspace)
6c95b8df
PA
3071 continue;
3072
fc126975 3073 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3074 {
834c0d03 3075 val = remove_breakpoint (bl);
6c95b8df
PA
3076 if (val != 0)
3077 return val;
3078 }
3079 }
3080 return 0;
3081}
3082
e58b0e63
PA
3083static int internal_breakpoint_number = -1;
3084
84f4c1fe
PM
3085/* Set the breakpoint number of B, depending on the value of INTERNAL.
3086 If INTERNAL is non-zero, the breakpoint number will be populated
3087 from internal_breakpoint_number and that variable decremented.
e5dd4106 3088 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3089 breakpoint_count and that value incremented. Internal breakpoints
3090 do not set the internal var bpnum. */
3091static void
3092set_breakpoint_number (int internal, struct breakpoint *b)
3093{
3094 if (internal)
3095 b->number = internal_breakpoint_number--;
3096 else
3097 {
3098 set_breakpoint_count (breakpoint_count + 1);
3099 b->number = breakpoint_count;
3100 }
3101}
3102
e62c965a 3103static struct breakpoint *
a6d9a66e 3104create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3105 CORE_ADDR address, enum bptype type,
c0a91b2b 3106 const struct breakpoint_ops *ops)
e62c965a 3107{
51abb421 3108 symtab_and_line sal;
e62c965a
PP
3109 sal.pc = address;
3110 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3111 sal.pspace = current_program_space;
e62c965a 3112
51abb421 3113 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3114 b->number = internal_breakpoint_number--;
3115 b->disposition = disp_donttouch;
3116
3117 return b;
3118}
3119
17450429
PP
3120static const char *const longjmp_names[] =
3121 {
3122 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3123 };
3124#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3125
3126/* Per-objfile data private to breakpoint.c. */
3127struct breakpoint_objfile_data
3128{
3129 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3130 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3131
3132 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3133 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3134
28106bc2 3135 /* True if we have looked for longjmp probes. */
43dce439 3136 int longjmp_searched = 0;
28106bc2 3137
45461e0d
SM
3138 /* SystemTap probe points for longjmp (if any). These are non-owning
3139 references. */
3140 std::vector<probe *> longjmp_probes;
28106bc2 3141
17450429 3142 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3143 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3144
3145 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3146 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3147
3148 /* True if we have looked for exception probes. */
43dce439 3149 int exception_searched = 0;
28106bc2 3150
45461e0d
SM
3151 /* SystemTap probe points for unwinding (if any). These are non-owning
3152 references. */
3153 std::vector<probe *> exception_probes;
17450429
PP
3154};
3155
51d3063a
TT
3156static const struct objfile_key<breakpoint_objfile_data>
3157 breakpoint_objfile_key;
17450429
PP
3158
3159/* Minimal symbol not found sentinel. */
3160static struct minimal_symbol msym_not_found;
3161
3162/* Returns TRUE if MSYM point to the "not found" sentinel. */
3163
3164static int
3165msym_not_found_p (const struct minimal_symbol *msym)
3166{
3167 return msym == &msym_not_found;
3168}
3169
3170/* Return per-objfile data needed by breakpoint.c.
3171 Allocate the data if necessary. */
3172
3173static struct breakpoint_objfile_data *
3174get_breakpoint_objfile_data (struct objfile *objfile)
3175{
3176 struct breakpoint_objfile_data *bp_objfile_data;
3177
51d3063a 3178 bp_objfile_data = breakpoint_objfile_key.get (objfile);
17450429 3179 if (bp_objfile_data == NULL)
51d3063a 3180 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
17450429
PP
3181 return bp_objfile_data;
3182}
3183
e62c965a 3184static void
af02033e 3185create_overlay_event_breakpoint (void)
e62c965a 3186{
af02033e 3187 const char *const func_name = "_ovly_debug_event";
e62c965a 3188
2030c079 3189 for (objfile *objfile : current_program_space->objfiles ())
69de3c6a
PP
3190 {
3191 struct breakpoint *b;
17450429
PP
3192 struct breakpoint_objfile_data *bp_objfile_data;
3193 CORE_ADDR addr;
67994074 3194 struct explicit_location explicit_loc;
69de3c6a 3195
17450429
PP
3196 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3197
3b7344d5 3198 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3199 continue;
3200
3b7344d5 3201 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3202 {
3b7344d5 3203 struct bound_minimal_symbol m;
17450429
PP
3204
3205 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3206 if (m.minsym == NULL)
17450429
PP
3207 {
3208 /* Avoid future lookups in this objfile. */
3b7344d5 3209 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3210 continue;
3211 }
3212 bp_objfile_data->overlay_msym = m;
3213 }
e62c965a 3214
77e371c0 3215 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3216 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3217 bp_overlay_event,
3218 &internal_breakpoint_ops);
67994074
KS
3219 initialize_explicit_location (&explicit_loc);
3220 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3221 b->location = new_explicit_location (&explicit_loc);
e62c965a 3222
69de3c6a
PP
3223 if (overlay_debugging == ovly_auto)
3224 {
3225 b->enable_state = bp_enabled;
3226 overlay_events_enabled = 1;
3227 }
3228 else
3229 {
3230 b->enable_state = bp_disabled;
3231 overlay_events_enabled = 0;
3232 }
e62c965a 3233 }
e62c965a
PP
3234}
3235
0fd8e87f 3236static void
af02033e 3237create_longjmp_master_breakpoint (void)
0fd8e87f 3238{
6c95b8df 3239 struct program_space *pspace;
6c95b8df 3240
5ed8105e 3241 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3242
6c95b8df 3243 ALL_PSPACES (pspace)
af02033e 3244 {
af02033e
PP
3245 set_current_program_space (pspace);
3246
2030c079 3247 for (objfile *objfile : current_program_space->objfiles ())
aed57c53
TT
3248 {
3249 int i;
3250 struct gdbarch *gdbarch;
3251 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3252
aed57c53 3253 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3254
aed57c53 3255 bp_objfile_data = get_breakpoint_objfile_data (objfile);
17450429 3256
aed57c53
TT
3257 if (!bp_objfile_data->longjmp_searched)
3258 {
3259 std::vector<probe *> ret
3260 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3261
aed57c53
TT
3262 if (!ret.empty ())
3263 {
3264 /* We are only interested in checking one element. */
3265 probe *p = ret[0];
3266
3267 if (!p->can_evaluate_arguments ())
3268 {
3269 /* We cannot use the probe interface here, because it does
3270 not know how to evaluate arguments. */
3271 ret.clear ();
3272 }
3273 }
3274 bp_objfile_data->longjmp_probes = ret;
3275 bp_objfile_data->longjmp_searched = 1;
3276 }
25f9533e 3277
aed57c53
TT
3278 if (!bp_objfile_data->longjmp_probes.empty ())
3279 {
3280 for (probe *p : bp_objfile_data->longjmp_probes)
3281 {
3282 struct breakpoint *b;
3283
3284 b = create_internal_breakpoint (gdbarch,
3285 p->get_relocated_address (objfile),
3286 bp_longjmp_master,
3287 &internal_breakpoint_ops);
3288 b->location = new_probe_location ("-probe-stap libc:longjmp");
3289 b->enable_state = bp_disabled;
3290 }
28106bc2 3291
aed57c53
TT
3292 continue;
3293 }
28106bc2 3294
aed57c53 3295 if (!gdbarch_get_longjmp_target_p (gdbarch))
28106bc2 3296 continue;
28106bc2 3297
aed57c53
TT
3298 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3299 {
3300 struct breakpoint *b;
3301 const char *func_name;
3302 CORE_ADDR addr;
3303 struct explicit_location explicit_loc;
0fd8e87f 3304
aed57c53
TT
3305 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3306 continue;
17450429 3307
aed57c53
TT
3308 func_name = longjmp_names[i];
3309 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3310 {
3311 struct bound_minimal_symbol m;
3312
3313 m = lookup_minimal_symbol_text (func_name, objfile);
3314 if (m.minsym == NULL)
3315 {
3316 /* Prevent future lookups in this objfile. */
3317 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3318 continue;
3319 }
3320 bp_objfile_data->longjmp_msym[i] = m;
3321 }
17450429 3322
aed57c53
TT
3323 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3324 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3325 &internal_breakpoint_ops);
3326 initialize_explicit_location (&explicit_loc);
3327 explicit_loc.function_name = ASTRDUP (func_name);
3328 b->location = new_explicit_location (&explicit_loc);
3329 b->enable_state = bp_disabled;
3330 }
3331 }
af02033e 3332 }
0fd8e87f
UW
3333}
3334
af02033e 3335/* Create a master std::terminate breakpoint. */
aa7d318d 3336static void
af02033e 3337create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3338{
3339 struct program_space *pspace;
af02033e 3340 const char *const func_name = "std::terminate()";
aa7d318d 3341
5ed8105e 3342 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3343
3344 ALL_PSPACES (pspace)
17450429 3345 {
17450429
PP
3346 CORE_ADDR addr;
3347
3348 set_current_program_space (pspace);
3349
2030c079 3350 for (objfile *objfile : current_program_space->objfiles ())
aed57c53
TT
3351 {
3352 struct breakpoint *b;
3353 struct breakpoint_objfile_data *bp_objfile_data;
3354 struct explicit_location explicit_loc;
aa7d318d 3355
aed57c53 3356 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3357
aed57c53
TT
3358 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3359 continue;
17450429 3360
aed57c53
TT
3361 if (bp_objfile_data->terminate_msym.minsym == NULL)
3362 {
3363 struct bound_minimal_symbol m;
17450429 3364
aed57c53
TT
3365 m = lookup_minimal_symbol (func_name, NULL, objfile);
3366 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3367 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3368 {
3369 /* Prevent future lookups in this objfile. */
3370 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3371 continue;
3372 }
3373 bp_objfile_data->terminate_msym = m;
3374 }
aa7d318d 3375
aed57c53
TT
3376 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3377 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3378 bp_std_terminate_master,
3379 &internal_breakpoint_ops);
3380 initialize_explicit_location (&explicit_loc);
3381 explicit_loc.function_name = ASTRDUP (func_name);
3382 b->location = new_explicit_location (&explicit_loc);
3383 b->enable_state = bp_disabled;
3384 }
17450429 3385 }
aa7d318d
TT
3386}
3387
186c406b
TT
3388/* Install a master breakpoint on the unwinder's debug hook. */
3389
70221824 3390static void
186c406b
TT
3391create_exception_master_breakpoint (void)
3392{
17450429 3393 const char *const func_name = "_Unwind_DebugHook";
186c406b 3394
2030c079 3395 for (objfile *objfile : current_program_space->objfiles ())
186c406b 3396 {
17450429
PP
3397 struct breakpoint *b;
3398 struct gdbarch *gdbarch;
3399 struct breakpoint_objfile_data *bp_objfile_data;
3400 CORE_ADDR addr;
67994074 3401 struct explicit_location explicit_loc;
17450429
PP
3402
3403 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3404
28106bc2
SDJ
3405 /* We prefer the SystemTap probe point if it exists. */
3406 if (!bp_objfile_data->exception_searched)
3407 {
45461e0d
SM
3408 std::vector<probe *> ret
3409 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3410
45461e0d 3411 if (!ret.empty ())
25f9533e
SDJ
3412 {
3413 /* We are only interested in checking one element. */
45461e0d 3414 probe *p = ret[0];
25f9533e 3415
935676c9 3416 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3417 {
3418 /* We cannot use the probe interface here, because it does
3419 not know how to evaluate arguments. */
45461e0d 3420 ret.clear ();
25f9533e
SDJ
3421 }
3422 }
3423 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3424 bp_objfile_data->exception_searched = 1;
3425 }
3426
45461e0d 3427 if (!bp_objfile_data->exception_probes.empty ())
28106bc2 3428 {
b926417a 3429 gdbarch = get_objfile_arch (objfile);
45461e0d
SM
3430
3431 for (probe *p : bp_objfile_data->exception_probes)
28106bc2 3432 {
729662a5 3433 b = create_internal_breakpoint (gdbarch,
935676c9 3434 p->get_relocated_address (objfile),
28106bc2
SDJ
3435 bp_exception_master,
3436 &internal_breakpoint_ops);
d28cd78a 3437 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3438 b->enable_state = bp_disabled;
3439 }
3440
3441 continue;
3442 }
3443
3444 /* Otherwise, try the hook function. */
3445
3b7344d5 3446 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3447 continue;
3448
3449 gdbarch = get_objfile_arch (objfile);
186c406b 3450
3b7344d5 3451 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3452 {
3b7344d5 3453 struct bound_minimal_symbol debug_hook;
186c406b 3454
17450429 3455 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3456 if (debug_hook.minsym == NULL)
17450429 3457 {
3b7344d5 3458 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3459 continue;
3460 }
3461
3462 bp_objfile_data->exception_msym = debug_hook;
186c406b 3463 }
17450429 3464
77e371c0 3465 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
8b88a78e
PA
3466 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3467 current_top_target ());
06edf0c0
PA
3468 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3469 &internal_breakpoint_ops);
67994074
KS
3470 initialize_explicit_location (&explicit_loc);
3471 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3472 b->location = new_explicit_location (&explicit_loc);
17450429 3473 b->enable_state = bp_disabled;
186c406b 3474 }
186c406b
TT
3475}
3476
9ef9e6a6
KS
3477/* Does B have a location spec? */
3478
3479static int
3480breakpoint_event_location_empty_p (const struct breakpoint *b)
3481{
d28cd78a 3482 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3483}
3484
c906108c 3485void
fba45db2 3486update_breakpoints_after_exec (void)
c906108c 3487{
35df4500 3488 struct breakpoint *b, *b_tmp;
876fa593 3489 struct bp_location *bploc, **bplocp_tmp;
c906108c 3490
25b22b0a
PA
3491 /* We're about to delete breakpoints from GDB's lists. If the
3492 INSERTED flag is true, GDB will try to lift the breakpoints by
3493 writing the breakpoints' "shadow contents" back into memory. The
3494 "shadow contents" are NOT valid after an exec, so GDB should not
3495 do that. Instead, the target is responsible from marking
3496 breakpoints out as soon as it detects an exec. We don't do that
3497 here instead, because there may be other attempts to delete
3498 breakpoints after detecting an exec and before reaching here. */
876fa593 3499 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3500 if (bploc->pspace == current_program_space)
3501 gdb_assert (!bploc->inserted);
c906108c 3502
35df4500 3503 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3504 {
6c95b8df
PA
3505 if (b->pspace != current_program_space)
3506 continue;
3507
4a64f543 3508 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3509 if (b->type == bp_shlib_event)
3510 {
3511 delete_breakpoint (b);
3512 continue;
3513 }
c906108c 3514
4a64f543 3515 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3516 if (b->type == bp_jit_event)
3517 {
3518 delete_breakpoint (b);
3519 continue;
3520 }
3521
1900040c 3522 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3523 as must overlay event and longjmp master breakpoints. */
3524 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3525 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3526 || b->type == bp_exception_master)
c4093a6a
JM
3527 {
3528 delete_breakpoint (b);
3529 continue;
3530 }
3531
4a64f543 3532 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3533 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3534 {
3535 delete_breakpoint (b);
3536 continue;
3537 }
3538
7c16b83e
PA
3539 /* Just like single-step breakpoints. */
3540 if (b->type == bp_single_step)
3541 {
3542 delete_breakpoint (b);
3543 continue;
3544 }
3545
611c83ae
PA
3546 /* Longjmp and longjmp-resume breakpoints are also meaningless
3547 after an exec. */
186c406b 3548 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3549 || b->type == bp_longjmp_call_dummy
186c406b 3550 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3551 {
3552 delete_breakpoint (b);
3553 continue;
3554 }
3555
ce78b96d
JB
3556 if (b->type == bp_catchpoint)
3557 {
3558 /* For now, none of the bp_catchpoint breakpoints need to
3559 do anything at this point. In the future, if some of
3560 the catchpoints need to something, we will need to add
3561 a new method, and call this method from here. */
3562 continue;
3563 }
3564
c5aa993b
JM
3565 /* bp_finish is a special case. The only way we ought to be able
3566 to see one of these when an exec() has happened, is if the user
3567 caught a vfork, and then said "finish". Ordinarily a finish just
3568 carries them to the call-site of the current callee, by setting
3569 a temporary bp there and resuming. But in this case, the finish
3570 will carry them entirely through the vfork & exec.
3571
3572 We don't want to allow a bp_finish to remain inserted now. But
3573 we can't safely delete it, 'cause finish_command has a handle to
3574 the bp on a bpstat, and will later want to delete it. There's a
3575 chance (and I've seen it happen) that if we delete the bp_finish
3576 here, that its storage will get reused by the time finish_command
3577 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3578 We really must allow finish_command to delete a bp_finish.
3579
e5dd4106 3580 In the absence of a general solution for the "how do we know
53a5351d
JM
3581 it's safe to delete something others may have handles to?"
3582 problem, what we'll do here is just uninsert the bp_finish, and
3583 let finish_command delete it.
3584
3585 (We know the bp_finish is "doomed" in the sense that it's
3586 momentary, and will be deleted as soon as finish_command sees
3587 the inferior stopped. So it doesn't matter that the bp's
3588 address is probably bogus in the new a.out, unlike e.g., the
3589 solib breakpoints.) */
c5aa993b 3590
c5aa993b
JM
3591 if (b->type == bp_finish)
3592 {
3593 continue;
3594 }
3595
3596 /* Without a symbolic address, we have little hope of the
3597 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3598 a.out. */
9ef9e6a6 3599 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3600 {
3601 delete_breakpoint (b);
3602 continue;
3603 }
c5aa993b 3604 }
c906108c
SS
3605}
3606
3607int
d80ee84f 3608detach_breakpoints (ptid_t ptid)
c906108c 3609{
35df4500 3610 struct bp_location *bl, **blp_tmp;
3a1bae8e 3611 int val = 0;
2989a365 3612 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3613 struct inferior *inf = current_inferior ();
c5aa993b 3614
e99b03dc 3615 if (ptid.pid () == inferior_ptid.pid ())
8a3fe4f8 3616 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3617
6c95b8df 3618 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3619 inferior_ptid = ptid;
35df4500 3620 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3621 {
35df4500 3622 if (bl->pspace != inf->pspace)
6c95b8df
PA
3623 continue;
3624
bd9673a4
PW
3625 /* This function must physically remove breakpoints locations
3626 from the specified ptid, without modifying the breakpoint
3627 package's state. Locations of type bp_loc_other are only
3628 maintained at GDB side. So, there is no need to remove
3629 these bp_loc_other locations. Moreover, removing these
3630 would modify the breakpoint package's state. */
3631 if (bl->loc_type == bp_loc_other)
3632 continue;
3633
35df4500 3634 if (bl->inserted)
b2b6a7da 3635 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3636 }
d03285ec 3637
3a1bae8e 3638 return val;
c906108c
SS
3639}
3640
35df4500 3641/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3642 Note that this is used to detach breakpoints from a child fork.
3643 When we get here, the child isn't in the inferior list, and neither
3644 do we have objects to represent its address space --- we should
35df4500 3645 *not* look at bl->pspace->aspace here. */
6c95b8df 3646
c906108c 3647static int
b2b6a7da 3648remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3649{
3650 int val;
c5aa993b 3651
35df4500
TJB
3652 /* BL is never in moribund_locations by our callers. */
3653 gdb_assert (bl->owner != NULL);
2bdf28a0 3654
74960c60
VP
3655 /* The type of none suggests that owner is actually deleted.
3656 This should not ever happen. */
35df4500 3657 gdb_assert (bl->owner->type != bp_none);
0bde7532 3658
35df4500
TJB
3659 if (bl->loc_type == bp_loc_software_breakpoint
3660 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3661 {
c02f5703
MS
3662 /* "Normal" instruction breakpoint: either the standard
3663 trap-instruction bp (bp_breakpoint), or a
3664 bp_hardware_breakpoint. */
3665
3666 /* First check to see if we have to handle an overlay. */
3667 if (overlay_debugging == ovly_off
35df4500
TJB
3668 || bl->section == NULL
3669 || !(section_is_overlay (bl->section)))
c02f5703
MS
3670 {
3671 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3672
3673 /* If we're trying to uninsert a memory breakpoint that we
3674 know is set in a dynamic object that is marked
3675 shlib_disabled, then either the dynamic object was
3676 removed with "remove-symbol-file" or with
3677 "nosharedlibrary". In the former case, we don't know
3678 whether another dynamic object might have loaded over the
3679 breakpoint's address -- the user might well let us know
3680 about it next with add-symbol-file (the whole point of
d03de421 3681 add-symbol-file is letting the user manually maintain a
08351840
PA
3682 list of dynamically loaded objects). If we have the
3683 breakpoint's shadow memory, that is, this is a software
3684 breakpoint managed by GDB, check whether the breakpoint
3685 is still inserted in memory, to avoid overwriting wrong
3686 code with stale saved shadow contents. Note that HW
3687 breakpoints don't have shadow memory, as they're
3688 implemented using a mechanism that is not dependent on
3689 being able to modify the target's memory, and as such
3690 they should always be removed. */
3691 if (bl->shlib_disabled
3692 && bl->target_info.shadow_len != 0
3693 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3694 val = 0;
3695 else
73971819 3696 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3697 }
c906108c
SS
3698 else
3699 {
4a64f543 3700 /* This breakpoint is in an overlay section.
c02f5703
MS
3701 Did we set a breakpoint at the LMA? */
3702 if (!overlay_events_enabled)
3703 {
3704 /* Yes -- overlay event support is not active, so we
3705 should have set a breakpoint at the LMA. Remove it.
3706 */
c02f5703
MS
3707 /* Ignore any failures: if the LMA is in ROM, we will
3708 have already warned when we failed to insert it. */
35df4500
TJB
3709 if (bl->loc_type == bp_loc_hardware_breakpoint)
3710 target_remove_hw_breakpoint (bl->gdbarch,
3711 &bl->overlay_target_info);
c02f5703 3712 else
35df4500 3713 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3714 &bl->overlay_target_info,
3715 reason);
c02f5703
MS
3716 }
3717 /* Did we set a breakpoint at the VMA?
3718 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3719 if (bl->inserted)
c906108c 3720 {
c02f5703
MS
3721 /* Yes -- remove it. Previously we did not bother to
3722 remove the breakpoint if the section had been
3723 unmapped, but let's not rely on that being safe. We
3724 don't know what the overlay manager might do. */
aa67235e
UW
3725
3726 /* However, we should remove *software* breakpoints only
3727 if the section is still mapped, or else we overwrite
3728 wrong code with the saved shadow contents. */
348d480f
PA
3729 if (bl->loc_type == bp_loc_hardware_breakpoint
3730 || section_is_mapped (bl->section))
73971819 3731 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3732 else
3733 val = 0;
c906108c 3734 }
c02f5703
MS
3735 else
3736 {
3737 /* No -- not inserted, so no need to remove. No error. */
3738 val = 0;
3739 }
c906108c 3740 }
879d1e6b 3741
08351840
PA
3742 /* In some cases, we might not be able to remove a breakpoint in
3743 a shared library that has already been removed, but we have
3744 not yet processed the shlib unload event. Similarly for an
3745 unloaded add-symbol-file object - the user might not yet have
3746 had the chance to remove-symbol-file it. shlib_disabled will
3747 be set if the library/object has already been removed, but
3748 the breakpoint hasn't been uninserted yet, e.g., after
3749 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3750 always-inserted mode. */
076855f9 3751 if (val
08351840
PA
3752 && (bl->loc_type == bp_loc_software_breakpoint
3753 && (bl->shlib_disabled
3754 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3755 || shared_objfile_contains_address_p (bl->pspace,
3756 bl->address))))
879d1e6b
UW
3757 val = 0;
3758
c906108c
SS
3759 if (val)
3760 return val;
b2b6a7da 3761 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3762 }
35df4500 3763 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3764 {
77b06cd7
TJB
3765 gdb_assert (bl->owner->ops != NULL
3766 && bl->owner->ops->remove_location != NULL);
3767
b2b6a7da 3768 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3769 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3770
c906108c 3771 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3772 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3773 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3774 bl->owner->number);
c906108c 3775 }
35df4500
TJB
3776 else if (bl->owner->type == bp_catchpoint
3777 && breakpoint_enabled (bl->owner)
3778 && !bl->duplicate)
ce78b96d 3779 {
77b06cd7
TJB
3780 gdb_assert (bl->owner->ops != NULL
3781 && bl->owner->ops->remove_location != NULL);
ce78b96d 3782
73971819 3783 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3784 if (val)
3785 return val;
77b06cd7 3786
b2b6a7da 3787 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3788 }
c906108c
SS
3789
3790 return 0;
3791}
3792
6c95b8df 3793static int
834c0d03 3794remove_breakpoint (struct bp_location *bl)
6c95b8df 3795{
35df4500
TJB
3796 /* BL is never in moribund_locations by our callers. */
3797 gdb_assert (bl->owner != NULL);
2bdf28a0 3798
6c95b8df
PA
3799 /* The type of none suggests that owner is actually deleted.
3800 This should not ever happen. */
35df4500 3801 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3802
5ed8105e 3803 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3804
35df4500 3805 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3806
5ed8105e 3807 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3808}
3809
c906108c
SS
3810/* Clear the "inserted" flag in all breakpoints. */
3811
25b22b0a 3812void
fba45db2 3813mark_breakpoints_out (void)
c906108c 3814{
35df4500 3815 struct bp_location *bl, **blp_tmp;
c906108c 3816
35df4500 3817 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3818 if (bl->pspace == current_program_space)
35df4500 3819 bl->inserted = 0;
c906108c
SS
3820}
3821
53a5351d
JM
3822/* Clear the "inserted" flag in all breakpoints and delete any
3823 breakpoints which should go away between runs of the program.
c906108c
SS
3824
3825 Plus other such housekeeping that has to be done for breakpoints
3826 between runs.
3827
53a5351d
JM
3828 Note: this function gets called at the end of a run (by
3829 generic_mourn_inferior) and when a run begins (by
4a64f543 3830 init_wait_for_inferior). */
c906108c
SS
3831
3832
3833
3834void
fba45db2 3835breakpoint_init_inferior (enum inf_context context)
c906108c 3836{
35df4500 3837 struct breakpoint *b, *b_tmp;
6c95b8df 3838 struct program_space *pspace = current_program_space;
c906108c 3839
50c71eaf
PA
3840 /* If breakpoint locations are shared across processes, then there's
3841 nothing to do. */
f5656ead 3842 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3843 return;
3844
1a853c52 3845 mark_breakpoints_out ();
075f6582 3846
35df4500 3847 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3848 {
6c95b8df
PA
3849 if (b->loc && b->loc->pspace != pspace)
3850 continue;
3851
c5aa993b
JM
3852 switch (b->type)
3853 {
3854 case bp_call_dummy:
e2e4d78b 3855 case bp_longjmp_call_dummy:
c906108c 3856
c5aa993b 3857 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3858 cause problems when the inferior is rerun, so we better get
3859 rid of it. */
3860
3861 case bp_watchpoint_scope:
3862
3863 /* Also get rid of scope breakpoints. */
3864
3865 case bp_shlib_event:
3866
3867 /* Also remove solib event breakpoints. Their addresses may
3868 have changed since the last time we ran the program.
3869 Actually we may now be debugging against different target;
3870 and so the solib backend that installed this breakpoint may
3871 not be used in by the target. E.g.,
3872
3873 (gdb) file prog-linux
3874 (gdb) run # native linux target
3875 ...
3876 (gdb) kill
3877 (gdb) file prog-win.exe
3878 (gdb) tar rem :9999 # remote Windows gdbserver.
3879 */
c906108c 3880
f59f708a
PA
3881 case bp_step_resume:
3882
3883 /* Also remove step-resume breakpoints. */
3884
7c16b83e
PA
3885 case bp_single_step:
3886
3887 /* Also remove single-step breakpoints. */
3888
c5aa993b
JM
3889 delete_breakpoint (b);
3890 break;
c906108c 3891
c5aa993b
JM
3892 case bp_watchpoint:
3893 case bp_hardware_watchpoint:
3894 case bp_read_watchpoint:
3895 case bp_access_watchpoint:
3a5c3e22
PA
3896 {
3897 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3898
3a5c3e22
PA
3899 /* Likewise for watchpoints on local expressions. */
3900 if (w->exp_valid_block != NULL)
3901 delete_breakpoint (b);
63000888 3902 else
3a5c3e22 3903 {
63000888
PA
3904 /* Get rid of existing locations, which are no longer
3905 valid. New ones will be created in
3906 update_watchpoint, when the inferior is restarted.
3907 The next update_global_location_list call will
3908 garbage collect them. */
3909 b->loc = NULL;
3910
3911 if (context == inf_starting)
3912 {
3913 /* Reset val field to force reread of starting value in
3914 insert_breakpoints. */
850645cf 3915 w->val.reset (nullptr);
63000888
PA
3916 w->val_valid = 0;
3917 }
3918 }
3a5c3e22 3919 }
c5aa993b
JM
3920 break;
3921 default:
c5aa993b
JM
3922 break;
3923 }
3924 }
1c5cfe86
PA
3925
3926 /* Get rid of the moribund locations. */
1123588c 3927 for (bp_location *bl : moribund_locations)
35df4500 3928 decref_bp_location (&bl);
1123588c 3929 moribund_locations.clear ();
c906108c
SS
3930}
3931
6c95b8df
PA
3932/* These functions concern about actual breakpoints inserted in the
3933 target --- to e.g. check if we need to do decr_pc adjustment or if
3934 we need to hop over the bkpt --- so we check for address space
3935 match, not program space. */
3936
c2c6d25f
JM
3937/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3938 exists at PC. It returns ordinary_breakpoint_here if it's an
3939 ordinary breakpoint, or permanent_breakpoint_here if it's a
3940 permanent breakpoint.
3941 - When continuing from a location with an ordinary breakpoint, we
3942 actually single step once before calling insert_breakpoints.
e5dd4106 3943 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
3944 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3945 the target, to advance the PC past the breakpoint. */
c906108c 3946
c2c6d25f 3947enum breakpoint_here
accd0bcd 3948breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 3949{
35df4500 3950 struct bp_location *bl, **blp_tmp;
c2c6d25f 3951 int any_breakpoint_here = 0;
c906108c 3952
35df4500 3953 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 3954 {
35df4500
TJB
3955 if (bl->loc_type != bp_loc_software_breakpoint
3956 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
3957 continue;
3958
f1310107 3959 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 3960 if ((breakpoint_enabled (bl->owner)
1a853c52 3961 || bl->permanent)
f1310107 3962 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
3963 {
3964 if (overlay_debugging
35df4500
TJB
3965 && section_is_overlay (bl->section)
3966 && !section_is_mapped (bl->section))
075f6582 3967 continue; /* unmapped overlay -- can't be a match */
1a853c52 3968 else if (bl->permanent)
075f6582
DJ
3969 return permanent_breakpoint_here;
3970 else
3971 any_breakpoint_here = 1;
3972 }
3973 }
c906108c 3974
f486487f 3975 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
3976}
3977
d35ae833
PA
3978/* See breakpoint.h. */
3979
3980int
accd0bcd 3981breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
3982 CORE_ADDR addr, ULONGEST len)
3983{
3984 struct bp_location *bl, **blp_tmp;
3985
3986 ALL_BP_LOCATIONS (bl, blp_tmp)
3987 {
3988 if (bl->loc_type != bp_loc_software_breakpoint
3989 && bl->loc_type != bp_loc_hardware_breakpoint)
3990 continue;
3991
3992 if ((breakpoint_enabled (bl->owner)
3993 || bl->permanent)
3994 && breakpoint_location_address_range_overlap (bl, aspace,
3995 addr, len))
3996 {
3997 if (overlay_debugging
3998 && section_is_overlay (bl->section)
3999 && !section_is_mapped (bl->section))
4000 {
4001 /* Unmapped overlay -- can't be a match. */
4002 continue;
4003 }
4004
4005 return 1;
4006 }
4007 }
4008
4009 return 0;
4010}
4011
1c5cfe86
PA
4012/* Return true if there's a moribund breakpoint at PC. */
4013
4014int
accd0bcd 4015moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86 4016{
1123588c 4017 for (bp_location *loc : moribund_locations)
f1310107 4018 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4019 return 1;
4020
4021 return 0;
4022}
c2c6d25f 4023
f7ce857f
PA
4024/* Returns non-zero iff BL is inserted at PC, in address space
4025 ASPACE. */
4026
4027static int
4028bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4029 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4030{
4031 if (bl->inserted
4032 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4033 aspace, pc))
4034 {
4035 if (overlay_debugging
4036 && section_is_overlay (bl->section)
4037 && !section_is_mapped (bl->section))
4038 return 0; /* unmapped overlay -- can't be a match */
4039 else
4040 return 1;
4041 }
4042 return 0;
4043}
4044
a1fd2fa5 4045/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4046
4047int
accd0bcd 4048breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4049{
f7ce857f 4050 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4051
f7ce857f 4052 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4053 {
f7ce857f
PA
4054 struct bp_location *bl = *blp;
4055
35df4500
TJB
4056 if (bl->loc_type != bp_loc_software_breakpoint
4057 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4058 continue;
4059
f7ce857f
PA
4060 if (bp_location_inserted_here_p (bl, aspace, pc))
4061 return 1;
c5aa993b 4062 }
c36b740a
VP
4063 return 0;
4064}
4065
a1fd2fa5
PA
4066/* This function returns non-zero iff there is a software breakpoint
4067 inserted at PC. */
c36b740a
VP
4068
4069int
accd0bcd 4070software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4071 CORE_ADDR pc)
4fa8626c 4072{
f7ce857f 4073 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4074
f7ce857f 4075 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4076 {
f7ce857f
PA
4077 struct bp_location *bl = *blp;
4078
35df4500 4079 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4080 continue;
4081
f7ce857f
PA
4082 if (bp_location_inserted_here_p (bl, aspace, pc))
4083 return 1;
4fa8626c
DJ
4084 }
4085
4086 return 0;
9c02b525
PA
4087}
4088
4089/* See breakpoint.h. */
4090
4091int
accd0bcd 4092hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4093 CORE_ADDR pc)
4094{
4095 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4096
4097 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4098 {
4099 struct bp_location *bl = *blp;
4100
4101 if (bl->loc_type != bp_loc_hardware_breakpoint)
4102 continue;
4103
4104 if (bp_location_inserted_here_p (bl, aspace, pc))
4105 return 1;
4106 }
4107
4108 return 0;
4fa8626c
DJ
4109}
4110
9093389c 4111int
accd0bcd 4112hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4113 CORE_ADDR addr, ULONGEST len)
4114{
4115 struct breakpoint *bpt;
4116
4117 ALL_BREAKPOINTS (bpt)
4118 {
4119 struct bp_location *loc;
4120
4121 if (bpt->type != bp_hardware_watchpoint
4122 && bpt->type != bp_access_watchpoint)
4123 continue;
4124
4125 if (!breakpoint_enabled (bpt))
4126 continue;
4127
4128 for (loc = bpt->loc; loc; loc = loc->next)
4129 if (loc->pspace->aspace == aspace && loc->inserted)
4130 {
4131 CORE_ADDR l, h;
4132
4133 /* Check for intersection. */
768adc05
PA
4134 l = std::max<CORE_ADDR> (loc->address, addr);
4135 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4136 if (l < h)
4137 return 1;
4138 }
4139 }
4140 return 0;
4141}
c906108c 4142\f
c5aa993b 4143
c906108c
SS
4144/* bpstat stuff. External routines' interfaces are documented
4145 in breakpoint.h. */
4146
4147int
c326b90e 4148is_catchpoint (struct breakpoint *ep)
c906108c 4149{
533be4dd 4150 return (ep->type == bp_catchpoint);
c906108c
SS
4151}
4152
f431efe5
PA
4153/* Frees any storage that is part of a bpstat. Does not walk the
4154 'next' chain. */
4155
04afa70c 4156bpstats::~bpstats ()
198757a8 4157{
04afa70c
TT
4158 if (bp_location_at != NULL)
4159 decref_bp_location (&bp_location_at);
198757a8
VP
4160}
4161
c906108c
SS
4162/* Clear a bpstat so that it says we are not at any breakpoint.
4163 Also free any storage that is part of a bpstat. */
4164
4165void
fba45db2 4166bpstat_clear (bpstat *bsp)
c906108c
SS
4167{
4168 bpstat p;
4169 bpstat q;
4170
4171 if (bsp == 0)
4172 return;
4173 p = *bsp;
4174 while (p != NULL)
4175 {
4176 q = p->next;
04afa70c 4177 delete p;
c906108c
SS
4178 p = q;
4179 }
4180 *bsp = NULL;
4181}
4182
04afa70c
TT
4183bpstats::bpstats (const bpstats &other)
4184 : next (NULL),
4185 bp_location_at (other.bp_location_at),
4186 breakpoint_at (other.breakpoint_at),
4187 commands (other.commands),
04afa70c
TT
4188 print (other.print),
4189 stop (other.stop),
4190 print_it (other.print_it)
4191{
850645cf
TT
4192 if (other.old_val != NULL)
4193 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c 4194 incref_bp_location (bp_location_at);
04afa70c
TT
4195}
4196
c906108c
SS
4197/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4198 is part of the bpstat is copied as well. */
4199
4200bpstat
fba45db2 4201bpstat_copy (bpstat bs)
c906108c
SS
4202{
4203 bpstat p = NULL;
4204 bpstat tmp;
4205 bpstat retval = NULL;
4206
4207 if (bs == NULL)
4208 return bs;
4209
4210 for (; bs != NULL; bs = bs->next)
4211 {
04afa70c 4212 tmp = new bpstats (*bs);
31cc81e9 4213
c906108c
SS
4214 if (p == NULL)
4215 /* This is the first thing in the chain. */
4216 retval = tmp;
4217 else
4218 p->next = tmp;
4219 p = tmp;
4220 }
4221 p->next = NULL;
4222 return retval;
4223}
4224
4a64f543 4225/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4226
4227bpstat
fba45db2 4228bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4229{
c5aa993b
JM
4230 if (bsp == NULL)
4231 return NULL;
c906108c 4232
c5aa993b
JM
4233 for (; bsp != NULL; bsp = bsp->next)
4234 {
f431efe5 4235 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4236 return bsp;
4237 }
c906108c
SS
4238 return NULL;
4239}
4240
ab04a2af
TT
4241/* See breakpoint.h. */
4242
47591c29 4243int
427cd150 4244bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4245{
ab04a2af
TT
4246 for (; bsp != NULL; bsp = bsp->next)
4247 {
427cd150
TT
4248 if (bsp->breakpoint_at == NULL)
4249 {
4250 /* A moribund location can never explain a signal other than
4251 GDB_SIGNAL_TRAP. */
4252 if (sig == GDB_SIGNAL_TRAP)
47591c29 4253 return 1;
427cd150
TT
4254 }
4255 else
47591c29
PA
4256 {
4257 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4258 sig))
4259 return 1;
4260 }
ab04a2af
TT
4261 }
4262
47591c29 4263 return 0;
ab04a2af
TT
4264}
4265
4a64f543
MS
4266/* Put in *NUM the breakpoint number of the first breakpoint we are
4267 stopped at. *BSP upon return is a bpstat which points to the
4268 remaining breakpoints stopped at (but which is not guaranteed to be
4269 good for anything but further calls to bpstat_num).
4270
8671a17b
PA
4271 Return 0 if passed a bpstat which does not indicate any breakpoints.
4272 Return -1 if stopped at a breakpoint that has been deleted since
4273 we set it.
4274 Return 1 otherwise. */
c906108c
SS
4275
4276int
8671a17b 4277bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4278{
4279 struct breakpoint *b;
4280
4281 if ((*bsp) == NULL)
4282 return 0; /* No more breakpoint values */
8671a17b 4283
4a64f543
MS
4284 /* We assume we'll never have several bpstats that correspond to a
4285 single breakpoint -- otherwise, this function might return the
4286 same number more than once and this will look ugly. */
f431efe5 4287 b = (*bsp)->breakpoint_at;
8671a17b
PA
4288 *bsp = (*bsp)->next;
4289 if (b == NULL)
4290 return -1; /* breakpoint that's been deleted since */
4291
4292 *num = b->number; /* We have its number */
4293 return 1;
c906108c
SS
4294}
4295
e93ca019 4296/* See breakpoint.h. */
c906108c
SS
4297
4298void
e93ca019 4299bpstat_clear_actions (void)
c906108c 4300{
e93ca019
JK
4301 bpstat bs;
4302
00431a78 4303 if (inferior_ptid == null_ptid)
e93ca019
JK
4304 return;
4305
00431a78 4306 thread_info *tp = inferior_thread ();
e93ca019 4307 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4308 {
d1b0a7bf 4309 bs->commands = NULL;
850645cf 4310 bs->old_val.reset (nullptr);
c906108c
SS
4311 }
4312}
4313
f3b1572e
PA
4314/* Called when a command is about to proceed the inferior. */
4315
4316static void
4317breakpoint_about_to_proceed (void)
4318{
d7e15655 4319 if (inferior_ptid != null_ptid)
f3b1572e
PA
4320 {
4321 struct thread_info *tp = inferior_thread ();
4322
4323 /* Allow inferior function calls in breakpoint commands to not
4324 interrupt the command list. When the call finishes
4325 successfully, the inferior will be standing at the same
4326 breakpoint as if nothing happened. */
16c381f0 4327 if (tp->control.in_infcall)
f3b1572e
PA
4328 return;
4329 }
4330
4331 breakpoint_proceeded = 1;
4332}
4333
abf85f46
JK
4334/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4335 or its equivalent. */
4336
4337static int
4338command_line_is_silent (struct command_line *cmd)
4339{
4f45d445 4340 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4341}
4342
4a64f543
MS
4343/* Execute all the commands associated with all the breakpoints at
4344 this location. Any of these commands could cause the process to
4345 proceed beyond this point, etc. We look out for such changes by
4346 checking the global "breakpoint_proceeded" after each command.
c906108c 4347
347bddb7
PA
4348 Returns true if a breakpoint command resumed the inferior. In that
4349 case, it is the caller's responsibility to recall it again with the
4350 bpstat of the current thread. */
4351
4352static int
4353bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4354{
4355 bpstat bs;
347bddb7 4356 int again = 0;
c906108c
SS
4357
4358 /* Avoid endless recursion if a `source' command is contained
4359 in bs->commands. */
4360 if (executing_breakpoint_commands)
347bddb7 4361 return 0;
c906108c 4362
81b1e71c
TT
4363 scoped_restore save_executing
4364 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4365
1ac32117 4366 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4367
4a64f543 4368 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4369 bs = *bsp;
4370
4371 breakpoint_proceeded = 0;
4372 for (; bs != NULL; bs = bs->next)
4373 {
d1b0a7bf 4374 struct command_line *cmd = NULL;
6c50ab1c
JB
4375
4376 /* Take ownership of the BSP's command tree, if it has one.
4377
4378 The command tree could legitimately contain commands like
4379 'step' and 'next', which call clear_proceed_status, which
4380 frees stop_bpstat's command tree. To make sure this doesn't
4381 free the tree we're executing out from under us, we need to
4382 take ownership of the tree ourselves. Since a given bpstat's
4383 commands are only executed once, we don't need to copy it; we
4384 can clear the pointer in the bpstat, and make sure we free
4385 the tree when we're done. */
d1b0a7bf 4386 counted_command_line ccmd = bs->commands;
9add0f1b 4387 bs->commands = NULL;
d1b0a7bf
TT
4388 if (ccmd != NULL)
4389 cmd = ccmd.get ();
abf85f46
JK
4390 if (command_line_is_silent (cmd))
4391 {
4392 /* The action has been already done by bpstat_stop_status. */
4393 cmd = cmd->next;
4394 }
6c50ab1c 4395
c906108c
SS
4396 while (cmd != NULL)
4397 {
4398 execute_control_command (cmd);
4399
4400 if (breakpoint_proceeded)
4401 break;
4402 else
4403 cmd = cmd->next;
4404 }
6c50ab1c 4405
c906108c 4406 if (breakpoint_proceeded)
32c1e744 4407 {
cb814510 4408 if (current_ui->async)
347bddb7
PA
4409 /* If we are in async mode, then the target might be still
4410 running, not stopped at any breakpoint, so nothing for
4411 us to do here -- just return to the event loop. */
4412 ;
32c1e744
VP
4413 else
4414 /* In sync mode, when execute_control_command returns
4415 we're already standing on the next breakpoint.
347bddb7
PA
4416 Breakpoint commands for that stop were not run, since
4417 execute_command does not run breakpoint commands --
4418 only command_line_handler does, but that one is not
4419 involved in execution of breakpoint commands. So, we
4420 can now execute breakpoint commands. It should be
4421 noted that making execute_command do bpstat actions is
4422 not an option -- in this case we'll have recursive
4423 invocation of bpstat for each breakpoint with a
4424 command, and can easily blow up GDB stack. Instead, we
4425 return true, which will trigger the caller to recall us
4426 with the new stop_bpstat. */
4427 again = 1;
4428 break;
32c1e744 4429 }
c906108c 4430 }
347bddb7
PA
4431 return again;
4432}
4433
00431a78
PA
4434/* Helper for bpstat_do_actions. Get the current thread, if there's
4435 one, is alive and has execution. Return NULL otherwise. */
4436
4437static thread_info *
4438get_bpstat_thread ()
4439{
4440 if (inferior_ptid == null_ptid || !target_has_execution)
4441 return NULL;
4442
4443 thread_info *tp = inferior_thread ();
4444 if (tp->state == THREAD_EXITED || tp->executing)
4445 return NULL;
4446 return tp;
4447}
4448
347bddb7
PA
4449void
4450bpstat_do_actions (void)
4451{
694c6bf5 4452 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
00431a78 4453 thread_info *tp;
353d1d73 4454
347bddb7 4455 /* Do any commands attached to breakpoint we are stopped at. */
00431a78
PA
4456 while ((tp = get_bpstat_thread ()) != NULL)
4457 {
4458 /* Since in sync mode, bpstat_do_actions may resume the
4459 inferior, and only return when it is stopped at the next
4460 breakpoint, we keep doing breakpoint actions until it returns
4461 false to indicate the inferior was not resumed. */
4462 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4463 break;
4464 }
353d1d73 4465
694c6bf5 4466 cleanup_if_error.release ();
c906108c
SS
4467}
4468
fa4727a6
DJ
4469/* Print out the (old or new) value associated with a watchpoint. */
4470
4471static void
4472watchpoint_value_print (struct value *val, struct ui_file *stream)
4473{
4474 if (val == NULL)
4475 fprintf_unfiltered (stream, _("<unreadable>"));
4476 else
79a45b7d
TT
4477 {
4478 struct value_print_options opts;
4479 get_user_print_options (&opts);
4480 value_print (val, stream, &opts);
4481 }
fa4727a6
DJ
4482}
4483
f303dbd6
PA
4484/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4485 debugging multiple threads. */
4486
4487void
4488maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4489{
112e8700 4490 if (uiout->is_mi_like_p ())
f303dbd6
PA
4491 return;
4492
112e8700 4493 uiout->text ("\n");
f303dbd6
PA
4494
4495 if (show_thread_that_caused_stop ())
4496 {
4497 const char *name;
4498 struct thread_info *thr = inferior_thread ();
4499
112e8700
SM
4500 uiout->text ("Thread ");
4501 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4502
4503 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4504 if (name != NULL)
4505 {
112e8700
SM
4506 uiout->text (" \"");
4507 uiout->field_fmt ("name", "%s", name);
4508 uiout->text ("\"");
f303dbd6
PA
4509 }
4510
112e8700 4511 uiout->text (" hit ");
f303dbd6
PA
4512 }
4513}
4514
e514a9d6 4515/* Generic routine for printing messages indicating why we
4a64f543 4516 stopped. The behavior of this function depends on the value
e514a9d6
JM
4517 'print_it' in the bpstat structure. Under some circumstances we
4518 may decide not to print anything here and delegate the task to
4a64f543 4519 normal_stop(). */
e514a9d6
JM
4520
4521static enum print_stop_action
4522print_bp_stop_message (bpstat bs)
4523{
4524 switch (bs->print_it)
4525 {
4526 case print_it_noop:
4a64f543 4527 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4528 return PRINT_UNKNOWN;
4529 break;
4530
4531 case print_it_done:
4532 /* We still want to print the frame, but we already printed the
4a64f543 4533 relevant messages. */
e514a9d6
JM
4534 return PRINT_SRC_AND_LOC;
4535 break;
4536
4537 case print_it_normal:
4f8d1dc6 4538 {
f431efe5
PA
4539 struct breakpoint *b = bs->breakpoint_at;
4540
1a6a67de
TJB
4541 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4542 which has since been deleted. */
4543 if (b == NULL)
4544 return PRINT_UNKNOWN;
4545
348d480f
PA
4546 /* Normal case. Call the breakpoint's print_it method. */
4547 return b->ops->print_it (bs);
4f8d1dc6 4548 }
348d480f 4549 break;
3086aeae 4550
e514a9d6 4551 default:
8e65ff28 4552 internal_error (__FILE__, __LINE__,
e2e0b3e5 4553 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4554 break;
c906108c 4555 }
c906108c
SS
4556}
4557
edcc5120
TT
4558/* A helper function that prints a shared library stopped event. */
4559
4560static void
4561print_solib_event (int is_catchpoint)
4562{
6fb16ce6 4563 bool any_deleted = !current_program_space->deleted_solibs.empty ();
bcb430e4 4564 bool any_added = !current_program_space->added_solibs.empty ();
edcc5120
TT
4565
4566 if (!is_catchpoint)
4567 {
4568 if (any_added || any_deleted)
112e8700 4569 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4570 else
112e8700
SM
4571 current_uiout->text (_("Stopped due to shared library event (no "
4572 "libraries added or removed)\n"));
edcc5120
TT
4573 }
4574
112e8700
SM
4575 if (current_uiout->is_mi_like_p ())
4576 current_uiout->field_string ("reason",
4577 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4578
4579 if (any_deleted)
4580 {
112e8700 4581 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4582 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4583 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4584 {
6fb16ce6
SM
4585 const std::string &name = current_program_space->deleted_solibs[ix];
4586
edcc5120 4587 if (ix > 0)
112e8700
SM
4588 current_uiout->text (" ");
4589 current_uiout->field_string ("library", name);
4590 current_uiout->text ("\n");
edcc5120 4591 }
edcc5120
TT
4592 }
4593
4594 if (any_added)
4595 {
112e8700 4596 current_uiout->text (_(" Inferior loaded "));
10f489e5 4597 ui_out_emit_list list_emitter (current_uiout, "added");
bcb430e4 4598 bool first = true;
52941706 4599 for (so_list *iter : current_program_space->added_solibs)
edcc5120 4600 {
bcb430e4 4601 if (!first)
112e8700 4602 current_uiout->text (" ");
bcb430e4 4603 first = false;
112e8700
SM
4604 current_uiout->field_string ("library", iter->so_name);
4605 current_uiout->text ("\n");
edcc5120 4606 }
edcc5120
TT
4607 }
4608}
4609
e514a9d6
JM
4610/* Print a message indicating what happened. This is called from
4611 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4612 list - a list of the eventpoints that caused this stop. KIND is
4613 the target_waitkind for the stopping event. This
e514a9d6
JM
4614 routine calls the generic print routine for printing a message
4615 about reasons for stopping. This will print (for example) the
4616 "Breakpoint n," part of the output. The return value of this
4617 routine is one of:
c906108c 4618
4a64f543 4619 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4620 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4621 code to print the location. An example is
c5aa993b
JM
4622 "Breakpoint 1, " which should be followed by
4623 the location.
917317f4 4624 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4625 to also print the location part of the message.
4626 An example is the catch/throw messages, which
4a64f543 4627 don't require a location appended to the end.
917317f4 4628 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4629 further info to be printed. */
c906108c 4630
917317f4 4631enum print_stop_action
36dfb11c 4632bpstat_print (bpstat bs, int kind)
c906108c 4633{
f486487f 4634 enum print_stop_action val;
c5aa993b 4635
c906108c 4636 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4637 (Currently all watchpoints go on the bpstat whether hit or not.
4638 That probably could (should) be changed, provided care is taken
c906108c 4639 with respect to bpstat_explains_signal). */
e514a9d6
JM
4640 for (; bs; bs = bs->next)
4641 {
4642 val = print_bp_stop_message (bs);
4643 if (val == PRINT_SRC_ONLY
4644 || val == PRINT_SRC_AND_LOC
4645 || val == PRINT_NOTHING)
4646 return val;
4647 }
c906108c 4648
36dfb11c
TT
4649 /* If we had hit a shared library event breakpoint,
4650 print_bp_stop_message would print out this message. If we hit an
4651 OS-level shared library event, do the same thing. */
4652 if (kind == TARGET_WAITKIND_LOADED)
4653 {
edcc5120 4654 print_solib_event (0);
36dfb11c
TT
4655 return PRINT_NOTHING;
4656 }
4657
e514a9d6 4658 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4659 with and nothing was printed. */
917317f4 4660 return PRINT_UNKNOWN;
c906108c
SS
4661}
4662
bf469271 4663/* Evaluate the boolean expression EXP and return the result. */
c906108c 4664
bf469271
PA
4665static bool
4666breakpoint_cond_eval (expression *exp)
c906108c 4667{
278cd55f 4668 struct value *mark = value_mark ();
bf469271 4669 bool res = value_true (evaluate_expression (exp));
cc59ec59 4670
c906108c 4671 value_free_to_mark (mark);
bf469271 4672 return res;
c906108c
SS
4673}
4674
5760d0ab 4675/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4676
04afa70c
TT
4677bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4678 : next (NULL),
4679 bp_location_at (bl),
4680 breakpoint_at (bl->owner),
4681 commands (NULL),
04afa70c
TT
4682 print (0),
4683 stop (0),
4684 print_it (print_it_normal)
c906108c 4685{
f431efe5 4686 incref_bp_location (bl);
04afa70c
TT
4687 **bs_link_pointer = this;
4688 *bs_link_pointer = &next;
4689}
4690
4691bpstats::bpstats ()
4692 : next (NULL),
4693 bp_location_at (NULL),
4694 breakpoint_at (NULL),
4695 commands (NULL),
04afa70c
TT
4696 print (0),
4697 stop (0),
4698 print_it (print_it_normal)
4699{
c906108c
SS
4700}
4701\f
d983da9c
DJ
4702/* The target has stopped with waitstatus WS. Check if any hardware
4703 watchpoints have triggered, according to the target. */
4704
4705int
4706watchpoints_triggered (struct target_waitstatus *ws)
4707{
57810aa7 4708 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4709 CORE_ADDR addr;
4710 struct breakpoint *b;
4711
4712 if (!stopped_by_watchpoint)
4713 {
4714 /* We were not stopped by a watchpoint. Mark all watchpoints
4715 as not triggered. */
4716 ALL_BREAKPOINTS (b)
cc60f2e3 4717 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4718 {
4719 struct watchpoint *w = (struct watchpoint *) b;
4720
4721 w->watchpoint_triggered = watch_triggered_no;
4722 }
d983da9c
DJ
4723
4724 return 0;
4725 }
4726
8b88a78e 4727 if (!target_stopped_data_address (current_top_target (), &addr))
d983da9c
DJ
4728 {
4729 /* We were stopped by a watchpoint, but we don't know where.
4730 Mark all watchpoints as unknown. */
4731 ALL_BREAKPOINTS (b)
cc60f2e3 4732 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4733 {
4734 struct watchpoint *w = (struct watchpoint *) b;
4735
4736 w->watchpoint_triggered = watch_triggered_unknown;
4737 }
d983da9c 4738
3c4797ba 4739 return 1;
d983da9c
DJ
4740 }
4741
4742 /* The target could report the data address. Mark watchpoints
4743 affected by this data address as triggered, and all others as not
4744 triggered. */
4745
4746 ALL_BREAKPOINTS (b)
cc60f2e3 4747 if (is_hardware_watchpoint (b))
d983da9c 4748 {
3a5c3e22 4749 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4750 struct bp_location *loc;
d983da9c 4751
3a5c3e22 4752 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4753 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4754 {
3a5c3e22 4755 if (is_masked_watchpoint (b))
9c06b0b4 4756 {
3a5c3e22
PA
4757 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4758 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4759
4760 if (newaddr == start)
4761 {
3a5c3e22 4762 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4763 break;
4764 }
4765 }
4766 /* Exact match not required. Within range is sufficient. */
8b88a78e 4767 else if (target_watchpoint_addr_within_range (current_top_target (),
9c06b0b4
TJB
4768 addr, loc->address,
4769 loc->length))
4770 {
3a5c3e22 4771 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4772 break;
4773 }
4774 }
d983da9c
DJ
4775 }
4776
4777 return 1;
4778}
4779
bf469271
PA
4780/* Possible return values for watchpoint_check. */
4781enum wp_check_result
4782 {
4783 /* The watchpoint has been deleted. */
4784 WP_DELETED = 1,
4785
4786 /* The value has changed. */
4787 WP_VALUE_CHANGED = 2,
4788
4789 /* The value has not changed. */
4790 WP_VALUE_NOT_CHANGED = 3,
4791
4792 /* Ignore this watchpoint, no matter if the value changed or not. */
4793 WP_IGNORE = 4,
4794 };
c906108c
SS
4795
4796#define BP_TEMPFLAG 1
4797#define BP_HARDWAREFLAG 2
4798
4a64f543 4799/* Evaluate watchpoint condition expression and check if its value
bf469271 4800 changed. */
553e4c11 4801
bf469271
PA
4802static wp_check_result
4803watchpoint_check (bpstat bs)
c906108c 4804{
3a5c3e22 4805 struct watchpoint *b;
c906108c
SS
4806 struct frame_info *fr;
4807 int within_current_scope;
4808
f431efe5 4809 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4810 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4811 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4812
f6bc2008
PA
4813 /* If this is a local watchpoint, we only want to check if the
4814 watchpoint frame is in scope if the current thread is the thread
4815 that was used to create the watchpoint. */
4816 if (!watchpoint_in_thread_scope (b))
60e1c644 4817 return WP_IGNORE;
f6bc2008 4818
c906108c
SS
4819 if (b->exp_valid_block == NULL)
4820 within_current_scope = 1;
4821 else
4822 {
edb3359d
DJ
4823 struct frame_info *frame = get_current_frame ();
4824 struct gdbarch *frame_arch = get_frame_arch (frame);
4825 CORE_ADDR frame_pc = get_frame_pc (frame);
4826
c9cf6e20 4827 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4828 still in the function but the stack frame has already been
4829 invalidated. Since we can't rely on the values of local
4830 variables after the stack has been destroyed, we are treating
4831 the watchpoint in that state as `not changed' without further
4832 checking. Don't mark watchpoints as changed if the current
4833 frame is in an epilogue - even if they are in some other
4834 frame, our view of the stack is likely to be wrong and
4835 frame_find_by_id could error out. */
c9cf6e20 4836 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4837 return WP_IGNORE;
a0f49112 4838
101dcfbe 4839 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4840 within_current_scope = (fr != NULL);
69fbadd5
DJ
4841
4842 /* If we've gotten confused in the unwinder, we might have
4843 returned a frame that can't describe this variable. */
edb3359d
DJ
4844 if (within_current_scope)
4845 {
4846 struct symbol *function;
4847
4848 function = get_frame_function (fr);
4849 if (function == NULL
4850 || !contained_in (b->exp_valid_block,
4851 SYMBOL_BLOCK_VALUE (function)))
4852 within_current_scope = 0;
4853 }
69fbadd5 4854
edb3359d 4855 if (within_current_scope)
c906108c
SS
4856 /* If we end up stopping, the current frame will get selected
4857 in normal_stop. So this call to select_frame won't affect
4858 the user. */
0f7d239c 4859 select_frame (fr);
c906108c 4860 }
c5aa993b 4861
c906108c
SS
4862 if (within_current_scope)
4863 {
4a64f543
MS
4864 /* We use value_{,free_to_}mark because it could be a *long*
4865 time before we return to the command level and call
4866 free_all_values. We can't call free_all_values because we
4867 might be in the middle of evaluating a function call. */
c906108c 4868
0cf6dd15 4869 int pc = 0;
9c06b0b4 4870 struct value *mark;
fa4727a6
DJ
4871 struct value *new_val;
4872
c1fc2657 4873 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4874 /* Since we don't know the exact trigger address (from
4875 stopped_data_address), just tell the user we've triggered
4876 a mask watchpoint. */
4877 return WP_VALUE_CHANGED;
4878
4879 mark = value_mark ();
4d01a485 4880 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 4881
bb9d5f81
PP
4882 if (b->val_bitsize != 0)
4883 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4884
4a64f543
MS
4885 /* We use value_equal_contents instead of value_equal because
4886 the latter coerces an array to a pointer, thus comparing just
4887 the address of the array instead of its contents. This is
4888 not what we want. */
fa4727a6 4889 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4890 || (b->val != NULL && !value_equal_contents (b->val.get (),
4891 new_val)))
c906108c 4892 {
c906108c 4893 bs->old_val = b->val;
850645cf 4894 b->val = release_value (new_val);
fa4727a6 4895 b->val_valid = 1;
850645cf
TT
4896 if (new_val != NULL)
4897 value_free_to_mark (mark);
c906108c
SS
4898 return WP_VALUE_CHANGED;
4899 }
4900 else
4901 {
60e1c644 4902 /* Nothing changed. */
c906108c 4903 value_free_to_mark (mark);
c906108c
SS
4904 return WP_VALUE_NOT_CHANGED;
4905 }
4906 }
4907 else
4908 {
4909 /* This seems like the only logical thing to do because
c5aa993b
JM
4910 if we temporarily ignored the watchpoint, then when
4911 we reenter the block in which it is valid it contains
4912 garbage (in the case of a function, it may have two
4913 garbage values, one before and one after the prologue).
4914 So we can't even detect the first assignment to it and
4915 watch after that (since the garbage may or may not equal
4916 the first value assigned). */
348d480f
PA
4917 /* We print all the stop information in
4918 breakpoint_ops->print_it, but in this case, by the time we
4919 call breakpoint_ops->print_it this bp will be deleted
4920 already. So we have no choice but print the information
4921 here. */
468afe6c 4922
0e454242 4923 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
4924 {
4925 struct ui_out *uiout = current_uiout;
4926
112e8700
SM
4927 if (uiout->is_mi_like_p ())
4928 uiout->field_string
4929 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4930 uiout->text ("\nWatchpoint ");
c1fc2657 4931 uiout->field_int ("wpnum", b->number);
112e8700 4932 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
4933 "which its expression is valid.\n");
4934 }
4ce44c66 4935
cdac0397 4936 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 4937 b->commands = NULL;
d0fb5eae 4938 watchpoint_del_at_next_stop (b);
c906108c
SS
4939
4940 return WP_DELETED;
4941 }
4942}
4943
18a18393 4944/* Return true if it looks like target has stopped due to hitting
348d480f
PA
4945 breakpoint location BL. This function does not check if we should
4946 stop, only if BL explains the stop. */
4947
18a18393 4948static int
6c95b8df 4949bpstat_check_location (const struct bp_location *bl,
accd0bcd 4950 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 4951 const struct target_waitstatus *ws)
18a18393
VP
4952{
4953 struct breakpoint *b = bl->owner;
4954
348d480f 4955 /* BL is from an existing breakpoint. */
2bdf28a0
JK
4956 gdb_assert (b != NULL);
4957
bd522513 4958 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
4959}
4960
3a5c3e22
PA
4961/* Determine if the watched values have actually changed, and we
4962 should stop. If not, set BS->stop to 0. */
4963
18a18393
VP
4964static void
4965bpstat_check_watchpoint (bpstat bs)
4966{
2bdf28a0 4967 const struct bp_location *bl;
3a5c3e22 4968 struct watchpoint *b;
2bdf28a0
JK
4969
4970 /* BS is built for existing struct breakpoint. */
f431efe5 4971 bl = bs->bp_location_at;
2bdf28a0 4972 gdb_assert (bl != NULL);
3a5c3e22 4973 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 4974 gdb_assert (b != NULL);
18a18393 4975
18a18393 4976 {
18a18393
VP
4977 int must_check_value = 0;
4978
c1fc2657 4979 if (b->type == bp_watchpoint)
18a18393
VP
4980 /* For a software watchpoint, we must always check the
4981 watched value. */
4982 must_check_value = 1;
4983 else if (b->watchpoint_triggered == watch_triggered_yes)
4984 /* We have a hardware watchpoint (read, write, or access)
4985 and the target earlier reported an address watched by
4986 this watchpoint. */
4987 must_check_value = 1;
4988 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 4989 && b->type == bp_hardware_watchpoint)
18a18393
VP
4990 /* We were stopped by a hardware watchpoint, but the target could
4991 not report the data address. We must check the watchpoint's
4992 value. Access and read watchpoints are out of luck; without
4993 a data address, we can't figure it out. */
4994 must_check_value = 1;
3a5c3e22 4995
18a18393
VP
4996 if (must_check_value)
4997 {
bf469271
PA
4998 wp_check_result e;
4999
a70b8144 5000 try
bf469271
PA
5001 {
5002 e = watchpoint_check (bs);
5003 }
230d2906 5004 catch (const gdb_exception &ex)
bf469271
PA
5005 {
5006 exception_fprintf (gdb_stderr, ex,
5007 "Error evaluating expression "
5008 "for watchpoint %d\n",
5009 b->number);
5010
5011 SWITCH_THRU_ALL_UIS ()
5012 {
5013 printf_filtered (_("Watchpoint %d deleted.\n"),
5014 b->number);
5015 }
5016 watchpoint_del_at_next_stop (b);
5017 e = WP_DELETED;
5018 }
bf469271 5019
18a18393
VP
5020 switch (e)
5021 {
5022 case WP_DELETED:
5023 /* We've already printed what needs to be printed. */
5024 bs->print_it = print_it_done;
5025 /* Stop. */
5026 break;
60e1c644
PA
5027 case WP_IGNORE:
5028 bs->print_it = print_it_noop;
5029 bs->stop = 0;
5030 break;
18a18393 5031 case WP_VALUE_CHANGED:
c1fc2657 5032 if (b->type == bp_read_watchpoint)
18a18393 5033 {
85d721b8
PA
5034 /* There are two cases to consider here:
5035
4a64f543 5036 1. We're watching the triggered memory for reads.
85d721b8
PA
5037 In that case, trust the target, and always report
5038 the watchpoint hit to the user. Even though
5039 reads don't cause value changes, the value may
5040 have changed since the last time it was read, and
5041 since we're not trapping writes, we will not see
5042 those, and as such we should ignore our notion of
5043 old value.
5044
4a64f543 5045 2. We're watching the triggered memory for both
85d721b8
PA
5046 reads and writes. There are two ways this may
5047 happen:
5048
4a64f543 5049 2.1. This is a target that can't break on data
85d721b8
PA
5050 reads only, but can break on accesses (reads or
5051 writes), such as e.g., x86. We detect this case
5052 at the time we try to insert read watchpoints.
5053
4a64f543 5054 2.2. Otherwise, the target supports read
85d721b8
PA
5055 watchpoints, but, the user set an access or write
5056 watchpoint watching the same memory as this read
5057 watchpoint.
5058
5059 If we're watching memory writes as well as reads,
5060 ignore watchpoint hits when we find that the
5061 value hasn't changed, as reads don't cause
5062 changes. This still gives false positives when
5063 the program writes the same value to memory as
5064 what there was already in memory (we will confuse
5065 it for a read), but it's much better than
5066 nothing. */
5067
5068 int other_write_watchpoint = 0;
5069
5070 if (bl->watchpoint_type == hw_read)
5071 {
5072 struct breakpoint *other_b;
5073
5074 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5075 if (other_b->type == bp_hardware_watchpoint
5076 || other_b->type == bp_access_watchpoint)
85d721b8 5077 {
3a5c3e22
PA
5078 struct watchpoint *other_w =
5079 (struct watchpoint *) other_b;
5080
5081 if (other_w->watchpoint_triggered
5082 == watch_triggered_yes)
5083 {
5084 other_write_watchpoint = 1;
5085 break;
5086 }
85d721b8
PA
5087 }
5088 }
5089
5090 if (other_write_watchpoint
5091 || bl->watchpoint_type == hw_access)
5092 {
5093 /* We're watching the same memory for writes,
5094 and the value changed since the last time we
5095 updated it, so this trap must be for a write.
5096 Ignore it. */
5097 bs->print_it = print_it_noop;
5098 bs->stop = 0;
5099 }
18a18393
VP
5100 }
5101 break;
5102 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5103 if (b->type == bp_hardware_watchpoint
5104 || b->type == bp_watchpoint)
18a18393
VP
5105 {
5106 /* Don't stop: write watchpoints shouldn't fire if
5107 the value hasn't changed. */
5108 bs->print_it = print_it_noop;
5109 bs->stop = 0;
5110 }
5111 /* Stop. */
5112 break;
5113 default:
5114 /* Can't happen. */
18a18393
VP
5115 break;
5116 }
5117 }
5118 else /* must_check_value == 0 */
5119 {
5120 /* This is a case where some watchpoint(s) triggered, but
5121 not at the address of this watchpoint, or else no
5122 watchpoint triggered after all. So don't print
5123 anything for this watchpoint. */
5124 bs->print_it = print_it_noop;
5125 bs->stop = 0;
5126 }
5127 }
5128}
5129
7d4df6a4
DE
5130/* For breakpoints that are currently marked as telling gdb to stop,
5131 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5132 of breakpoint referred to by BS. If we should not stop for this
5133 breakpoint, set BS->stop to 0. */
f431efe5 5134
18a18393 5135static void
00431a78 5136bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
18a18393 5137{
2bdf28a0
JK
5138 const struct bp_location *bl;
5139 struct breakpoint *b;
bf469271
PA
5140 /* Assume stop. */
5141 bool condition_result = true;
7d4df6a4
DE
5142 struct expression *cond;
5143
5144 gdb_assert (bs->stop);
2bdf28a0
JK
5145
5146 /* BS is built for existing struct breakpoint. */
f431efe5 5147 bl = bs->bp_location_at;
2bdf28a0 5148 gdb_assert (bl != NULL);
f431efe5 5149 b = bs->breakpoint_at;
2bdf28a0 5150 gdb_assert (b != NULL);
18a18393 5151
b775012e
LM
5152 /* Even if the target evaluated the condition on its end and notified GDB, we
5153 need to do so again since GDB does not know if we stopped due to a
5154 breakpoint or a single step breakpoint. */
5155
18a18393 5156 if (frame_id_p (b->frame_id)
edb3359d 5157 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5158 {
7d4df6a4
DE
5159 bs->stop = 0;
5160 return;
5161 }
60e1c644 5162
12ab52e9
PA
5163 /* If this is a thread/task-specific breakpoint, don't waste cpu
5164 evaluating the condition if this isn't the specified
5165 thread/task. */
00431a78
PA
5166 if ((b->thread != -1 && b->thread != thread->global_num)
5167 || (b->task != 0 && b->task != ada_get_task_number (thread)))
6c1b0f7b
DE
5168 {
5169 bs->stop = 0;
5170 return;
5171 }
5172
6dddc817
DE
5173 /* Evaluate extension language breakpoints that have a "stop" method
5174 implemented. */
5175 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5176
7d4df6a4
DE
5177 if (is_watchpoint (b))
5178 {
5179 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5180
4d01a485 5181 cond = w->cond_exp.get ();
7d4df6a4
DE
5182 }
5183 else
4d01a485 5184 cond = bl->cond.get ();
60e1c644 5185
7d4df6a4
DE
5186 if (cond && b->disposition != disp_del_at_next_stop)
5187 {
5188 int within_current_scope = 1;
5189 struct watchpoint * w;
60e1c644 5190
7d4df6a4
DE
5191 /* We use value_mark and value_free_to_mark because it could
5192 be a long time before we return to the command level and
5193 call free_all_values. We can't call free_all_values
5194 because we might be in the middle of evaluating a
5195 function call. */
5196 struct value *mark = value_mark ();
5197
5198 if (is_watchpoint (b))
5199 w = (struct watchpoint *) b;
5200 else
5201 w = NULL;
5202
5203 /* Need to select the frame, with all that implies so that
5204 the conditions will have the right context. Because we
5205 use the frame, we will not see an inlined function's
5206 variables when we arrive at a breakpoint at the start
5207 of the inlined function; the current frame will be the
5208 call site. */
5209 if (w == NULL || w->cond_exp_valid_block == NULL)
5210 select_frame (get_current_frame ());
5211 else
18a18393 5212 {
7d4df6a4
DE
5213 struct frame_info *frame;
5214
5215 /* For local watchpoint expressions, which particular
5216 instance of a local is being watched matters, so we
5217 keep track of the frame to evaluate the expression
5218 in. To evaluate the condition however, it doesn't
5219 really matter which instantiation of the function
5220 where the condition makes sense triggers the
5221 watchpoint. This allows an expression like "watch
5222 global if q > 10" set in `func', catch writes to
5223 global on all threads that call `func', or catch
5224 writes on all recursive calls of `func' by a single
5225 thread. We simply always evaluate the condition in
5226 the innermost frame that's executing where it makes
5227 sense to evaluate the condition. It seems
5228 intuitive. */
5229 frame = block_innermost_frame (w->cond_exp_valid_block);
5230 if (frame != NULL)
5231 select_frame (frame);
5232 else
5233 within_current_scope = 0;
18a18393 5234 }
7d4df6a4 5235 if (within_current_scope)
bf469271 5236 {
a70b8144 5237 try
bf469271
PA
5238 {
5239 condition_result = breakpoint_cond_eval (cond);
5240 }
230d2906 5241 catch (const gdb_exception &ex)
bf469271
PA
5242 {
5243 exception_fprintf (gdb_stderr, ex,
5244 "Error in testing breakpoint condition:\n");
5245 }
bf469271 5246 }
7d4df6a4 5247 else
18a18393 5248 {
7d4df6a4
DE
5249 warning (_("Watchpoint condition cannot be tested "
5250 "in the current scope"));
5251 /* If we failed to set the right context for this
5252 watchpoint, unconditionally report it. */
18a18393 5253 }
7d4df6a4
DE
5254 /* FIXME-someday, should give breakpoint #. */
5255 value_free_to_mark (mark);
18a18393 5256 }
7d4df6a4 5257
bf469271 5258 if (cond && !condition_result)
7d4df6a4
DE
5259 {
5260 bs->stop = 0;
5261 }
7d4df6a4
DE
5262 else if (b->ignore_count > 0)
5263 {
5264 b->ignore_count--;
5265 bs->stop = 0;
5266 /* Increase the hit count even though we don't stop. */
5267 ++(b->hit_count);
76727919 5268 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5269 }
18a18393
VP
5270}
5271
1cf4d951
PA
5272/* Returns true if we need to track moribund locations of LOC's type
5273 on the current target. */
5274
5275static int
5276need_moribund_for_location_type (struct bp_location *loc)
5277{
5278 return ((loc->loc_type == bp_loc_software_breakpoint
5279 && !target_supports_stopped_by_sw_breakpoint ())
5280 || (loc->loc_type == bp_loc_hardware_breakpoint
5281 && !target_supports_stopped_by_hw_breakpoint ()));
5282}
5283
ddfe970e 5284/* See breakpoint.h. */
c906108c
SS
5285
5286bpstat
ddfe970e 5287build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5288 const struct target_waitstatus *ws)
c906108c 5289{
ddfe970e 5290 struct breakpoint *b;
5760d0ab 5291 bpstat bs_head = NULL, *bs_link = &bs_head;
c5aa993b 5292
429374b8
JK
5293 ALL_BREAKPOINTS (b)
5294 {
1a853c52 5295 if (!breakpoint_enabled (b))
429374b8 5296 continue;
a5606eee 5297
ddfe970e 5298 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
429374b8 5299 {
4a64f543
MS
5300 /* For hardware watchpoints, we look only at the first
5301 location. The watchpoint_check function will work on the
5302 entire expression, not the individual locations. For
5303 read watchpoints, the watchpoints_triggered function has
5304 checked all locations already. */
429374b8
JK
5305 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5306 break;
18a18393 5307
f6592439 5308 if (!bl->enabled || bl->shlib_disabled)
429374b8 5309 continue;
c5aa993b 5310
09ac7c10 5311 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5312 continue;
c5aa993b 5313
4a64f543
MS
5314 /* Come here if it's a watchpoint, or if the break address
5315 matches. */
c5aa993b 5316
ddfe970e
KS
5317 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5318 explain stop. */
c5aa993b 5319
f431efe5
PA
5320 /* Assume we stop. Should we find a watchpoint that is not
5321 actually triggered, or if the condition of the breakpoint
5322 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5323 bs->stop = 1;
5324 bs->print = 1;
d983da9c 5325
f431efe5
PA
5326 /* If this is a scope breakpoint, mark the associated
5327 watchpoint as triggered so that we will handle the
5328 out-of-scope event. We'll get to the watchpoint next
5329 iteration. */
d0fb5eae 5330 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5331 {
5332 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5333
5334 w->watchpoint_triggered = watch_triggered_yes;
5335 }
f431efe5
PA
5336 }
5337 }
5338
7c16b83e 5339 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5340 if (!target_supports_stopped_by_sw_breakpoint ()
5341 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5342 {
1123588c 5343 for (bp_location *loc : moribund_locations)
f431efe5 5344 {
1cf4d951
PA
5345 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5346 && need_moribund_for_location_type (loc))
5347 {
ddfe970e 5348 bpstat bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5349 /* For hits of moribund locations, we should just proceed. */
5350 bs->stop = 0;
5351 bs->print = 0;
5352 bs->print_it = print_it_noop;
5353 }
f431efe5
PA
5354 }
5355 }
5356
ddfe970e
KS
5357 return bs_head;
5358}
5359
5360/* See breakpoint.h. */
5361
5362bpstat
5363bpstat_stop_status (const address_space *aspace,
00431a78 5364 CORE_ADDR bp_addr, thread_info *thread,
ddfe970e
KS
5365 const struct target_waitstatus *ws,
5366 bpstat stop_chain)
5367{
5368 struct breakpoint *b = NULL;
5369 /* First item of allocated bpstat's. */
5370 bpstat bs_head = stop_chain;
5371 bpstat bs;
5372 int need_remove_insert;
5373 int removed_any;
5374
5375 /* First, build the bpstat chain with locations that explain a
5376 target stop, while being careful to not set the target running,
5377 as that may invalidate locations (in particular watchpoint
5378 locations are recreated). Resuming will happen here with
5379 breakpoint conditions or watchpoint expressions that include
5380 inferior function calls. */
5381 if (bs_head == NULL)
5382 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5383
edcc5120
TT
5384 /* A bit of special processing for shlib breakpoints. We need to
5385 process solib loading here, so that the lists of loaded and
5386 unloaded libraries are correct before we handle "catch load" and
5387 "catch unload". */
5388 for (bs = bs_head; bs != NULL; bs = bs->next)
5389 {
5d268276 5390 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5391 {
5392 handle_solib_event ();
5393 break;
5394 }
5395 }
5396
f431efe5
PA
5397 /* Now go through the locations that caused the target to stop, and
5398 check whether we're interested in reporting this stop to higher
5399 layers, or whether we should resume the target transparently. */
5400
5401 removed_any = 0;
5402
5760d0ab 5403 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5404 {
5405 if (!bs->stop)
5406 continue;
5407
f431efe5 5408 b = bs->breakpoint_at;
348d480f
PA
5409 b->ops->check_status (bs);
5410 if (bs->stop)
28010a5d 5411 {
00431a78 5412 bpstat_check_breakpoint_conditions (bs, thread);
f431efe5 5413
429374b8
JK
5414 if (bs->stop)
5415 {
5416 ++(b->hit_count);
76727919 5417 gdb::observers::breakpoint_modified.notify (b);
c906108c 5418
4a64f543 5419 /* We will stop here. */
429374b8
JK
5420 if (b->disposition == disp_disable)
5421 {
816338b5 5422 --(b->enable_count);
1a853c52 5423 if (b->enable_count <= 0)
429374b8 5424 b->enable_state = bp_disabled;
f431efe5 5425 removed_any = 1;
429374b8
JK
5426 }
5427 if (b->silent)
5428 bs->print = 0;
5429 bs->commands = b->commands;
abf85f46 5430 if (command_line_is_silent (bs->commands
d1b0a7bf 5431 ? bs->commands.get () : NULL))
abf85f46 5432 bs->print = 0;
9d6e6e84
HZ
5433
5434 b->ops->after_condition_true (bs);
429374b8
JK
5435 }
5436
348d480f 5437 }
a9b3a50f
PA
5438
5439 /* Print nothing for this entry if we don't stop or don't
5440 print. */
5441 if (!bs->stop || !bs->print)
5442 bs->print_it = print_it_noop;
429374b8 5443 }
876fa593 5444
d983da9c
DJ
5445 /* If we aren't stopping, the value of some hardware watchpoint may
5446 not have changed, but the intermediate memory locations we are
5447 watching may have. Don't bother if we're stopping; this will get
5448 done later. */
d832cb68 5449 need_remove_insert = 0;
5760d0ab
JK
5450 if (! bpstat_causes_stop (bs_head))
5451 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5452 if (!bs->stop
f431efe5
PA
5453 && bs->breakpoint_at
5454 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5455 {
3a5c3e22
PA
5456 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5457
5458 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5459 need_remove_insert = 1;
d983da9c
DJ
5460 }
5461
d832cb68 5462 if (need_remove_insert)
44702360 5463 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5464 else if (removed_any)
44702360 5465 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5466
5760d0ab 5467 return bs_head;
c906108c 5468}
628fe4e4
JK
5469
5470static void
5471handle_jit_event (void)
5472{
5473 struct frame_info *frame;
5474 struct gdbarch *gdbarch;
5475
243a9253
PA
5476 if (debug_infrun)
5477 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5478
628fe4e4
JK
5479 /* Switch terminal for any messages produced by
5480 breakpoint_re_set. */
223ffa71 5481 target_terminal::ours_for_output ();
628fe4e4
JK
5482
5483 frame = get_current_frame ();
5484 gdbarch = get_frame_arch (frame);
5485
5486 jit_event_handler (gdbarch);
5487
223ffa71 5488 target_terminal::inferior ();
628fe4e4
JK
5489}
5490
5491/* Prepare WHAT final decision for infrun. */
5492
5493/* Decide what infrun needs to do with this bpstat. */
5494
c906108c 5495struct bpstat_what
0e30163f 5496bpstat_what (bpstat bs_head)
c906108c 5497{
c906108c 5498 struct bpstat_what retval;
0e30163f 5499 bpstat bs;
c906108c 5500
628fe4e4 5501 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5502 retval.call_dummy = STOP_NONE;
186c406b 5503 retval.is_longjmp = 0;
628fe4e4 5504
0e30163f 5505 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5506 {
628fe4e4
JK
5507 /* Extract this BS's action. After processing each BS, we check
5508 if its action overrides all we've seem so far. */
5509 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5510 enum bptype bptype;
5511
c906108c 5512 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5513 {
5514 /* I suspect this can happen if it was a momentary
5515 breakpoint which has since been deleted. */
5516 bptype = bp_none;
5517 }
20874c92 5518 else
f431efe5 5519 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5520
5521 switch (bptype)
c906108c
SS
5522 {
5523 case bp_none:
628fe4e4 5524 break;
c906108c
SS
5525 case bp_breakpoint:
5526 case bp_hardware_breakpoint:
7c16b83e 5527 case bp_single_step:
c906108c
SS
5528 case bp_until:
5529 case bp_finish:
a9b3a50f 5530 case bp_shlib_event:
c906108c
SS
5531 if (bs->stop)
5532 {
5533 if (bs->print)
628fe4e4 5534 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5535 else
628fe4e4 5536 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5537 }
5538 else
628fe4e4 5539 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5540 break;
5541 case bp_watchpoint:
5542 case bp_hardware_watchpoint:
5543 case bp_read_watchpoint:
5544 case bp_access_watchpoint:
5545 if (bs->stop)
5546 {
5547 if (bs->print)
628fe4e4 5548 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5549 else
628fe4e4 5550 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5551 }
5552 else
628fe4e4
JK
5553 {
5554 /* There was a watchpoint, but we're not stopping.
5555 This requires no further action. */
5556 }
c906108c
SS
5557 break;
5558 case bp_longjmp:
e2e4d78b 5559 case bp_longjmp_call_dummy:
186c406b 5560 case bp_exception:
0a39bb32
PA
5561 if (bs->stop)
5562 {
5563 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5564 retval.is_longjmp = bptype != bp_exception;
5565 }
5566 else
5567 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5568 break;
5569 case bp_longjmp_resume:
186c406b 5570 case bp_exception_resume:
0a39bb32
PA
5571 if (bs->stop)
5572 {
5573 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5574 retval.is_longjmp = bptype == bp_longjmp_resume;
5575 }
5576 else
5577 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5578 break;
5579 case bp_step_resume:
5580 if (bs->stop)
628fe4e4
JK
5581 this_action = BPSTAT_WHAT_STEP_RESUME;
5582 else
c906108c 5583 {
628fe4e4
JK
5584 /* It is for the wrong frame. */
5585 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5586 }
c906108c 5587 break;
2c03e5be
PA
5588 case bp_hp_step_resume:
5589 if (bs->stop)
5590 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5591 else
5592 {
5593 /* It is for the wrong frame. */
5594 this_action = BPSTAT_WHAT_SINGLE;
5595 }
5596 break;
c906108c 5597 case bp_watchpoint_scope:
c4093a6a 5598 case bp_thread_event:
1900040c 5599 case bp_overlay_event:
0fd8e87f 5600 case bp_longjmp_master:
aa7d318d 5601 case bp_std_terminate_master:
186c406b 5602 case bp_exception_master:
628fe4e4 5603 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5604 break;
ce78b96d 5605 case bp_catchpoint:
c5aa993b
JM
5606 if (bs->stop)
5607 {
5608 if (bs->print)
628fe4e4 5609 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5610 else
628fe4e4 5611 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5612 }
5613 else
628fe4e4
JK
5614 {
5615 /* There was a catchpoint, but we're not stopping.
5616 This requires no further action. */
5617 }
5618 break;
628fe4e4 5619 case bp_jit_event:
628fe4e4 5620 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5621 break;
c906108c 5622 case bp_call_dummy:
53a5351d
JM
5623 /* Make sure the action is stop (silent or noisy),
5624 so infrun.c pops the dummy frame. */
aa7d318d 5625 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5626 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5627 break;
5628 case bp_std_terminate:
5629 /* Make sure the action is stop (silent or noisy),
5630 so infrun.c pops the dummy frame. */
aa7d318d 5631 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5632 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5633 break;
1042e4c0 5634 case bp_tracepoint:
7a697b8d 5635 case bp_fast_tracepoint:
0fb4aa4b 5636 case bp_static_tracepoint:
1042e4c0
SS
5637 /* Tracepoint hits should not be reported back to GDB, and
5638 if one got through somehow, it should have been filtered
5639 out already. */
5640 internal_error (__FILE__, __LINE__,
7a697b8d 5641 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5642 break;
5643 case bp_gnu_ifunc_resolver:
5644 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5645 this_action = BPSTAT_WHAT_SINGLE;
5646 break;
5647 case bp_gnu_ifunc_resolver_return:
5648 /* The breakpoint will be removed, execution will restart from the
5649 PC of the former breakpoint. */
5650 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5651 break;
e7e0cddf
SS
5652
5653 case bp_dprintf:
a11cfd87
HZ
5654 if (bs->stop)
5655 this_action = BPSTAT_WHAT_STOP_SILENT;
5656 else
5657 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5658 break;
5659
628fe4e4
JK
5660 default:
5661 internal_error (__FILE__, __LINE__,
5662 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5663 }
628fe4e4 5664
325fac50 5665 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5666 }
628fe4e4 5667
243a9253
PA
5668 return retval;
5669}
628fe4e4 5670
243a9253
PA
5671void
5672bpstat_run_callbacks (bpstat bs_head)
5673{
5674 bpstat bs;
628fe4e4 5675
0e30163f
JK
5676 for (bs = bs_head; bs != NULL; bs = bs->next)
5677 {
5678 struct breakpoint *b = bs->breakpoint_at;
5679
5680 if (b == NULL)
5681 continue;
5682 switch (b->type)
5683 {
243a9253
PA
5684 case bp_jit_event:
5685 handle_jit_event ();
5686 break;
0e30163f
JK
5687 case bp_gnu_ifunc_resolver:
5688 gnu_ifunc_resolver_stop (b);
5689 break;
5690 case bp_gnu_ifunc_resolver_return:
5691 gnu_ifunc_resolver_return_stop (b);
5692 break;
5693 }
5694 }
c906108c
SS
5695}
5696
5697/* Nonzero if we should step constantly (e.g. watchpoints on machines
5698 without hardware support). This isn't related to a specific bpstat,
5699 just to things like whether watchpoints are set. */
5700
c5aa993b 5701int
fba45db2 5702bpstat_should_step (void)
c906108c
SS
5703{
5704 struct breakpoint *b;
cc59ec59 5705
c906108c 5706 ALL_BREAKPOINTS (b)
717a8278 5707 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 5708 return 1;
c906108c
SS
5709 return 0;
5710}
5711
67822962
PA
5712int
5713bpstat_causes_stop (bpstat bs)
5714{
5715 for (; bs != NULL; bs = bs->next)
5716 if (bs->stop)
5717 return 1;
5718
5719 return 0;
5720}
5721
c906108c 5722\f
c5aa993b 5723
170b53b2
UW
5724/* Compute a string of spaces suitable to indent the next line
5725 so it starts at the position corresponding to the table column
5726 named COL_NAME in the currently active table of UIOUT. */
5727
5728static char *
5729wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5730{
5731 static char wrap_indent[80];
5732 int i, total_width, width, align;
c5209615 5733 const char *text;
170b53b2
UW
5734
5735 total_width = 0;
112e8700 5736 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5737 {
5738 if (strcmp (text, col_name) == 0)
5739 {
5740 gdb_assert (total_width < sizeof wrap_indent);
5741 memset (wrap_indent, ' ', total_width);
5742 wrap_indent[total_width] = 0;
5743
5744 return wrap_indent;
5745 }
5746
5747 total_width += width + 1;
5748 }
5749
5750 return NULL;
5751}
5752
b775012e
LM
5753/* Determine if the locations of this breakpoint will have their conditions
5754 evaluated by the target, host or a mix of both. Returns the following:
5755
5756 "host": Host evals condition.
5757 "host or target": Host or Target evals condition.
5758 "target": Target evals condition.
5759*/
5760
5761static const char *
5762bp_condition_evaluator (struct breakpoint *b)
5763{
5764 struct bp_location *bl;
5765 char host_evals = 0;
5766 char target_evals = 0;
5767
5768 if (!b)
5769 return NULL;
5770
5771 if (!is_breakpoint (b))
5772 return NULL;
5773
5774 if (gdb_evaluates_breakpoint_condition_p ()
5775 || !target_supports_evaluation_of_breakpoint_conditions ())
5776 return condition_evaluation_host;
5777
5778 for (bl = b->loc; bl; bl = bl->next)
5779 {
5780 if (bl->cond_bytecode)
5781 target_evals++;
5782 else
5783 host_evals++;
5784 }
5785
5786 if (host_evals && target_evals)
5787 return condition_evaluation_both;
5788 else if (target_evals)
5789 return condition_evaluation_target;
5790 else
5791 return condition_evaluation_host;
5792}
5793
5794/* Determine the breakpoint location's condition evaluator. This is
5795 similar to bp_condition_evaluator, but for locations. */
5796
5797static const char *
5798bp_location_condition_evaluator (struct bp_location *bl)
5799{
5800 if (bl && !is_breakpoint (bl->owner))
5801 return NULL;
5802
5803 if (gdb_evaluates_breakpoint_condition_p ()
5804 || !target_supports_evaluation_of_breakpoint_conditions ())
5805 return condition_evaluation_host;
5806
5807 if (bl && bl->cond_bytecode)
5808 return condition_evaluation_target;
5809 else
5810 return condition_evaluation_host;
5811}
5812
859825b8
JK
5813/* Print the LOC location out of the list of B->LOC locations. */
5814
170b53b2
UW
5815static void
5816print_breakpoint_location (struct breakpoint *b,
5817 struct bp_location *loc)
0d381245 5818{
79a45e25 5819 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5820
5821 scoped_restore_current_program_space restore_pspace;
6c95b8df 5822
859825b8
JK
5823 if (loc != NULL && loc->shlib_disabled)
5824 loc = NULL;
5825
6c95b8df
PA
5826 if (loc != NULL)
5827 set_current_program_space (loc->pspace);
5828
56435ebe 5829 if (b->display_canonical)
d28cd78a 5830 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5831 else if (loc && loc->symtab)
0d381245 5832 {
4a27f119
KS
5833 const struct symbol *sym = loc->symbol;
5834
0d381245
VP
5835 if (sym)
5836 {
112e8700 5837 uiout->text ("in ");
cbe56571
TT
5838 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5839 ui_out_style_kind::FUNCTION);
112e8700
SM
5840 uiout->text (" ");
5841 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5842 uiout->text ("at ");
0d381245 5843 }
112e8700 5844 uiout->field_string ("file",
cbe56571
TT
5845 symtab_to_filename_for_display (loc->symtab),
5846 ui_out_style_kind::FILE);
112e8700 5847 uiout->text (":");
05cba821 5848
112e8700
SM
5849 if (uiout->is_mi_like_p ())
5850 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5851
112e8700 5852 uiout->field_int ("line", loc->line_number);
0d381245 5853 }
859825b8 5854 else if (loc)
0d381245 5855 {
d7e74731 5856 string_file stb;
170b53b2 5857
d7e74731 5858 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5859 demangle, "");
112e8700 5860 uiout->field_stream ("at", stb);
0d381245 5861 }
859825b8 5862 else
f00aae0f 5863 {
d28cd78a
TT
5864 uiout->field_string ("pending",
5865 event_location_to_string (b->location.get ()));
f00aae0f
KS
5866 /* If extra_string is available, it could be holding a condition
5867 or dprintf arguments. In either case, make sure it is printed,
5868 too, but only for non-MI streams. */
112e8700 5869 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5870 {
5871 if (b->type == bp_dprintf)
112e8700 5872 uiout->text (",");
f00aae0f 5873 else
112e8700
SM
5874 uiout->text (" ");
5875 uiout->text (b->extra_string);
f00aae0f
KS
5876 }
5877 }
6c95b8df 5878
b775012e
LM
5879 if (loc && is_breakpoint (b)
5880 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5881 && bp_condition_evaluator (b) == condition_evaluation_both)
5882 {
112e8700
SM
5883 uiout->text (" (");
5884 uiout->field_string ("evaluated-by",
b775012e 5885 bp_location_condition_evaluator (loc));
112e8700 5886 uiout->text (")");
b775012e 5887 }
0d381245
VP
5888}
5889
269b11a2
PA
5890static const char *
5891bptype_string (enum bptype type)
c906108c 5892{
c4093a6a
JM
5893 struct ep_type_description
5894 {
5895 enum bptype type;
a121b7c1 5896 const char *description;
c4093a6a
JM
5897 };
5898 static struct ep_type_description bptypes[] =
c906108c 5899 {
c5aa993b
JM
5900 {bp_none, "?deleted?"},
5901 {bp_breakpoint, "breakpoint"},
c906108c 5902 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5903 {bp_single_step, "sw single-step"},
c5aa993b
JM
5904 {bp_until, "until"},
5905 {bp_finish, "finish"},
5906 {bp_watchpoint, "watchpoint"},
c906108c 5907 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5908 {bp_read_watchpoint, "read watchpoint"},
5909 {bp_access_watchpoint, "acc watchpoint"},
5910 {bp_longjmp, "longjmp"},
5911 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5912 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5913 {bp_exception, "exception"},
5914 {bp_exception_resume, "exception resume"},
c5aa993b 5915 {bp_step_resume, "step resume"},
2c03e5be 5916 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5917 {bp_watchpoint_scope, "watchpoint scope"},
5918 {bp_call_dummy, "call dummy"},
aa7d318d 5919 {bp_std_terminate, "std::terminate"},
c5aa993b 5920 {bp_shlib_event, "shlib events"},
c4093a6a 5921 {bp_thread_event, "thread events"},
1900040c 5922 {bp_overlay_event, "overlay events"},
0fd8e87f 5923 {bp_longjmp_master, "longjmp master"},
aa7d318d 5924 {bp_std_terminate_master, "std::terminate master"},
186c406b 5925 {bp_exception_master, "exception master"},
ce78b96d 5926 {bp_catchpoint, "catchpoint"},
1042e4c0 5927 {bp_tracepoint, "tracepoint"},
7a697b8d 5928 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 5929 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 5930 {bp_dprintf, "dprintf"},
4efc6507 5931 {bp_jit_event, "jit events"},
0e30163f
JK
5932 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5933 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 5934 };
269b11a2
PA
5935
5936 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5937 || ((int) type != bptypes[(int) type].type))
5938 internal_error (__FILE__, __LINE__,
5939 _("bptypes table does not describe type #%d."),
5940 (int) type);
5941
5942 return bptypes[(int) type].description;
5943}
5944
998580f1
MK
5945/* For MI, output a field named 'thread-groups' with a list as the value.
5946 For CLI, prefix the list with the string 'inf'. */
5947
5948static void
5949output_thread_groups (struct ui_out *uiout,
5950 const char *field_name,
5c632425 5951 const std::vector<int> &inf_nums,
998580f1
MK
5952 int mi_only)
5953{
112e8700 5954 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
5955
5956 /* For backward compatibility, don't display inferiors in CLI unless
5957 there are several. Always display them for MI. */
5958 if (!is_mi && mi_only)
5959 return;
5960
10f489e5 5961 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 5962
5c632425 5963 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
5964 {
5965 if (is_mi)
5966 {
5967 char mi_group[10];
5968
5c632425 5969 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 5970 uiout->field_string (NULL, mi_group);
998580f1
MK
5971 }
5972 else
5973 {
5974 if (i == 0)
112e8700 5975 uiout->text (" inf ");
998580f1 5976 else
112e8700 5977 uiout->text (", ");
998580f1 5978
5c632425 5979 uiout->text (plongest (inf_nums[i]));
998580f1
MK
5980 }
5981 }
998580f1
MK
5982}
5983
269b11a2
PA
5984/* Print B to gdb_stdout. */
5985
5986static void
5987print_one_breakpoint_location (struct breakpoint *b,
5988 struct bp_location *loc,
5989 int loc_number,
5990 struct bp_location **last_loc,
269b11a2
PA
5991 int allflag)
5992{
5993 struct command_line *l;
c2c6d25f 5994 static char bpenables[] = "nynny";
c906108c 5995
79a45e25 5996 struct ui_out *uiout = current_uiout;
0d381245
VP
5997 int header_of_multiple = 0;
5998 int part_of_multiple = (loc != NULL);
79a45b7d
TT
5999 struct value_print_options opts;
6000
6001 get_user_print_options (&opts);
0d381245
VP
6002
6003 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6004 /* See comment in print_one_breakpoint concerning treatment of
6005 breakpoints with single disabled location. */
0d381245
VP
6006 if (loc == NULL
6007 && (b->loc != NULL
6008 && (b->loc->next != NULL || !b->loc->enabled)))
6009 header_of_multiple = 1;
6010 if (loc == NULL)
6011 loc = b->loc;
6012
c4093a6a
JM
6013 annotate_record ();
6014
6015 /* 1 */
6016 annotate_field (0);
0d381245 6017 if (part_of_multiple)
528e1572 6018 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
0d381245 6019 else
528e1572 6020 uiout->field_int ("number", b->number);
c4093a6a
JM
6021
6022 /* 2 */
6023 annotate_field (1);
0d381245 6024 if (part_of_multiple)
112e8700 6025 uiout->field_skip ("type");
269b11a2 6026 else
112e8700 6027 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6028
6029 /* 3 */
6030 annotate_field (2);
0d381245 6031 if (part_of_multiple)
112e8700 6032 uiout->field_skip ("disp");
0d381245 6033 else
112e8700 6034 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6035
c4093a6a
JM
6036 /* 4 */
6037 annotate_field (3);
0d381245 6038 if (part_of_multiple)
112e8700 6039 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6040 else
112e8700 6041 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
0d381245 6042
c4093a6a 6043 /* 5 and 6 */
3086aeae 6044 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6045 {
4a64f543
MS
6046 /* Although the print_one can possibly print all locations,
6047 calling it here is not likely to get any nice result. So,
6048 make sure there's just one location. */
0d381245 6049 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6050 b->ops->print_one (b, last_loc);
0d381245 6051 }
3086aeae
DJ
6052 else
6053 switch (b->type)
6054 {
6055 case bp_none:
6056 internal_error (__FILE__, __LINE__,
e2e0b3e5 6057 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6058 break;
c906108c 6059
3086aeae
DJ
6060 case bp_watchpoint:
6061 case bp_hardware_watchpoint:
6062 case bp_read_watchpoint:
6063 case bp_access_watchpoint:
3a5c3e22
PA
6064 {
6065 struct watchpoint *w = (struct watchpoint *) b;
6066
6067 /* Field 4, the address, is omitted (which makes the columns
6068 not line up too nicely with the headers, but the effect
6069 is relatively readable). */
6070 if (opts.addressprint)
112e8700 6071 uiout->field_skip ("addr");
3a5c3e22 6072 annotate_field (5);
112e8700 6073 uiout->field_string ("what", w->exp_string);
3a5c3e22 6074 }
3086aeae
DJ
6075 break;
6076
3086aeae
DJ
6077 case bp_breakpoint:
6078 case bp_hardware_breakpoint:
7c16b83e 6079 case bp_single_step:
3086aeae
DJ
6080 case bp_until:
6081 case bp_finish:
6082 case bp_longjmp:
6083 case bp_longjmp_resume:
e2e4d78b 6084 case bp_longjmp_call_dummy:
186c406b
TT
6085 case bp_exception:
6086 case bp_exception_resume:
3086aeae 6087 case bp_step_resume:
2c03e5be 6088 case bp_hp_step_resume:
3086aeae
DJ
6089 case bp_watchpoint_scope:
6090 case bp_call_dummy:
aa7d318d 6091 case bp_std_terminate:
3086aeae
DJ
6092 case bp_shlib_event:
6093 case bp_thread_event:
6094 case bp_overlay_event:
0fd8e87f 6095 case bp_longjmp_master:
aa7d318d 6096 case bp_std_terminate_master:
186c406b 6097 case bp_exception_master:
1042e4c0 6098 case bp_tracepoint:
7a697b8d 6099 case bp_fast_tracepoint:
0fb4aa4b 6100 case bp_static_tracepoint:
e7e0cddf 6101 case bp_dprintf:
4efc6507 6102 case bp_jit_event:
0e30163f
JK
6103 case bp_gnu_ifunc_resolver:
6104 case bp_gnu_ifunc_resolver_return:
79a45b7d 6105 if (opts.addressprint)
3086aeae
DJ
6106 {
6107 annotate_field (4);
54e52265 6108 if (header_of_multiple)
112e8700 6109 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6110 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6111 uiout->field_string ("addr", "<PENDING>");
0101ce28 6112 else
112e8700 6113 uiout->field_core_addr ("addr",
5af949e3 6114 loc->gdbarch, loc->address);
3086aeae
DJ
6115 }
6116 annotate_field (5);
0d381245 6117 if (!header_of_multiple)
170b53b2 6118 print_breakpoint_location (b, loc);
0d381245 6119 if (b->loc)
a6d9a66e 6120 *last_loc = b->loc;
3086aeae
DJ
6121 break;
6122 }
c906108c 6123
6c95b8df 6124
998580f1 6125 if (loc != NULL && !header_of_multiple)
6c95b8df 6126 {
5c632425 6127 std::vector<int> inf_nums;
998580f1 6128 int mi_only = 1;
6c95b8df 6129
08036331 6130 for (inferior *inf : all_inferiors ())
6c95b8df
PA
6131 {
6132 if (inf->pspace == loc->pspace)
5c632425 6133 inf_nums.push_back (inf->num);
6c95b8df 6134 }
998580f1
MK
6135
6136 /* For backward compatibility, don't display inferiors in CLI unless
6137 there are several. Always display for MI. */
6138 if (allflag
6139 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6140 && (number_of_program_spaces () > 1
6141 || number_of_inferiors () > 1)
6142 /* LOC is for existing B, it cannot be in
6143 moribund_locations and thus having NULL OWNER. */
6144 && loc->owner->type != bp_catchpoint))
6145 mi_only = 0;
5c632425 6146 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6147 }
6148
4a306c9a 6149 if (!part_of_multiple)
c4093a6a 6150 {
4a306c9a
JB
6151 if (b->thread != -1)
6152 {
6153 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6154 "stop only in" line a little further down. */
112e8700
SM
6155 uiout->text (" thread ");
6156 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6157 }
6158 else if (b->task != 0)
6159 {
112e8700
SM
6160 uiout->text (" task ");
6161 uiout->field_int ("task", b->task);
4a306c9a 6162 }
c4093a6a 6163 }
f1310107 6164
112e8700 6165 uiout->text ("\n");
f1310107 6166
348d480f 6167 if (!part_of_multiple)
f1310107
TJB
6168 b->ops->print_one_detail (b, uiout);
6169
0d381245 6170 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6171 {
6172 annotate_field (6);
112e8700 6173 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6174 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6175 the frame ID. */
112e8700 6176 uiout->field_core_addr ("frame",
5af949e3 6177 b->gdbarch, b->frame_id.stack_addr);
112e8700 6178 uiout->text ("\n");
c4093a6a
JM
6179 }
6180
28010a5d 6181 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6182 {
6183 annotate_field (7);
d77f58be 6184 if (is_tracepoint (b))
112e8700 6185 uiout->text ("\ttrace only if ");
1042e4c0 6186 else
112e8700
SM
6187 uiout->text ("\tstop only if ");
6188 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6189
6190 /* Print whether the target is doing the breakpoint's condition
6191 evaluation. If GDB is doing the evaluation, don't print anything. */
6192 if (is_breakpoint (b)
6193 && breakpoint_condition_evaluation_mode ()
6194 == condition_evaluation_target)
6195 {
112e8700
SM
6196 uiout->text (" (");
6197 uiout->field_string ("evaluated-by",
b775012e 6198 bp_condition_evaluator (b));
112e8700 6199 uiout->text (" evals)");
b775012e 6200 }
112e8700 6201 uiout->text ("\n");
0101ce28
JJ
6202 }
6203
0d381245 6204 if (!part_of_multiple && b->thread != -1)
c4093a6a 6205 {
4a64f543 6206 /* FIXME should make an annotation for this. */
112e8700
SM
6207 uiout->text ("\tstop only in thread ");
6208 if (uiout->is_mi_like_p ())
6209 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6210 else
6211 {
6212 struct thread_info *thr = find_thread_global_id (b->thread);
6213
112e8700 6214 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6215 }
112e8700 6216 uiout->text ("\n");
c4093a6a
JM
6217 }
6218
556ec64d
YQ
6219 if (!part_of_multiple)
6220 {
6221 if (b->hit_count)
31f56a27
YQ
6222 {
6223 /* FIXME should make an annotation for this. */
6224 if (is_catchpoint (b))
112e8700 6225 uiout->text ("\tcatchpoint");
31f56a27 6226 else if (is_tracepoint (b))
112e8700 6227 uiout->text ("\ttracepoint");
31f56a27 6228 else
112e8700
SM
6229 uiout->text ("\tbreakpoint");
6230 uiout->text (" already hit ");
6231 uiout->field_int ("times", b->hit_count);
31f56a27 6232 if (b->hit_count == 1)
112e8700 6233 uiout->text (" time\n");
31f56a27 6234 else
112e8700 6235 uiout->text (" times\n");
31f56a27 6236 }
556ec64d
YQ
6237 else
6238 {
31f56a27 6239 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6240 if (uiout->is_mi_like_p ())
6241 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6242 }
6243 }
8b93c638 6244
0d381245 6245 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6246 {
6247 annotate_field (8);
112e8700
SM
6248 uiout->text ("\tignore next ");
6249 uiout->field_int ("ignore", b->ignore_count);
6250 uiout->text (" hits\n");
c4093a6a 6251 }
059fb39f 6252
816338b5
SS
6253 /* Note that an enable count of 1 corresponds to "enable once"
6254 behavior, which is reported by the combination of enablement and
6255 disposition, so we don't need to mention it here. */
6256 if (!part_of_multiple && b->enable_count > 1)
6257 {
6258 annotate_field (8);
112e8700 6259 uiout->text ("\tdisable after ");
816338b5
SS
6260 /* Tweak the wording to clarify that ignore and enable counts
6261 are distinct, and have additive effect. */
6262 if (b->ignore_count)
112e8700 6263 uiout->text ("additional ");
816338b5 6264 else
112e8700
SM
6265 uiout->text ("next ");
6266 uiout->field_int ("enable", b->enable_count);
6267 uiout->text (" hits\n");
816338b5
SS
6268 }
6269
f196051f
SS
6270 if (!part_of_multiple && is_tracepoint (b))
6271 {
6272 struct tracepoint *tp = (struct tracepoint *) b;
6273
6274 if (tp->traceframe_usage)
6275 {
112e8700
SM
6276 uiout->text ("\ttrace buffer usage ");
6277 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6278 uiout->text (" bytes\n");
f196051f
SS
6279 }
6280 }
d3ce09f5 6281
d1b0a7bf 6282 l = b->commands ? b->commands.get () : NULL;
059fb39f 6283 if (!part_of_multiple && l)
c4093a6a
JM
6284 {
6285 annotate_field (9);
2e783024 6286 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6287 print_command_lines (uiout, l, 4);
c4093a6a 6288 }
d24317b4 6289
d9b3f62e 6290 if (is_tracepoint (b))
1042e4c0 6291 {
d9b3f62e
PA
6292 struct tracepoint *t = (struct tracepoint *) b;
6293
6294 if (!part_of_multiple && t->pass_count)
6295 {
6296 annotate_field (10);
112e8700
SM
6297 uiout->text ("\tpass count ");
6298 uiout->field_int ("pass", t->pass_count);
6299 uiout->text (" \n");
d9b3f62e 6300 }
f2a8bc8a
YQ
6301
6302 /* Don't display it when tracepoint or tracepoint location is
6303 pending. */
6304 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6305 {
6306 annotate_field (11);
6307
112e8700
SM
6308 if (uiout->is_mi_like_p ())
6309 uiout->field_string ("installed",
f2a8bc8a
YQ
6310 loc->inserted ? "y" : "n");
6311 else
6312 {
6313 if (loc->inserted)
112e8700 6314 uiout->text ("\t");
f2a8bc8a 6315 else
112e8700
SM
6316 uiout->text ("\tnot ");
6317 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6318 }
6319 }
1042e4c0
SS
6320 }
6321
112e8700 6322 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6323 {
3a5c3e22
PA
6324 if (is_watchpoint (b))
6325 {
6326 struct watchpoint *w = (struct watchpoint *) b;
6327
112e8700 6328 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6329 }
f00aae0f 6330 else if (b->location != NULL
d28cd78a 6331 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6332 uiout->field_string ("original-location",
d28cd78a 6333 event_location_to_string (b->location.get ()));
d24317b4 6334 }
c4093a6a 6335}
c5aa993b 6336
13674803
SM
6337/* See breakpoint.h. */
6338
6339bool fix_multi_location_breakpoint_output_globally = false;
6340
0d381245
VP
6341static void
6342print_one_breakpoint (struct breakpoint *b,
4a64f543 6343 struct bp_location **last_loc,
6c95b8df 6344 int allflag)
0d381245 6345{
79a45e25 6346 struct ui_out *uiout = current_uiout;
13674803
SM
6347 bool use_fixed_output
6348 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6349 || fix_multi_location_breakpoint_output_globally);
8d3788bd 6350
b4be1b06
SM
6351 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6352 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
8d3788bd 6353
b4be1b06
SM
6354 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6355 are outside. */
6356 if (!use_fixed_output)
6357 bkpt_tuple_emitter.reset ();
0d381245
VP
6358
6359 /* If this breakpoint has custom print function,
6360 it's already printed. Otherwise, print individual
6361 locations, if any. */
6362 if (b->ops == NULL || b->ops->print_one == NULL)
6363 {
4a64f543
MS
6364 /* If breakpoint has a single location that is disabled, we
6365 print it as if it had several locations, since otherwise it's
6366 hard to represent "breakpoint enabled, location disabled"
6367 situation.
6368
6369 Note that while hardware watchpoints have several locations
a3be7890 6370 internally, that's not a property exposed to user. */
0d381245 6371 if (b->loc
a5606eee 6372 && !is_hardware_watchpoint (b)
8d3788bd 6373 && (b->loc->next || !b->loc->enabled))
0d381245 6374 {
b4be1b06
SM
6375 gdb::optional<ui_out_emit_list> locations_list;
6376
6377 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6378 MI record. For later versions, place breakpoint locations in a
6379 list. */
6380 if (uiout->is_mi_like_p () && use_fixed_output)
6381 locations_list.emplace (uiout, "locations");
8d3788bd 6382
b4be1b06
SM
6383 int n = 1;
6384 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
8d3788bd 6385 {
b4be1b06 6386 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
8d3788bd 6387 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6388 }
0d381245
VP
6389 }
6390 }
6391}
6392
a6d9a66e
UW
6393static int
6394breakpoint_address_bits (struct breakpoint *b)
6395{
6396 int print_address_bits = 0;
6397 struct bp_location *loc;
6398
c6d81124
PA
6399 /* Software watchpoints that aren't watching memory don't have an
6400 address to print. */
6401 if (is_no_memory_software_watchpoint (b))
6402 return 0;
6403
a6d9a66e
UW
6404 for (loc = b->loc; loc; loc = loc->next)
6405 {
c7437ca6
PA
6406 int addr_bit;
6407
c7437ca6 6408 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6409 if (addr_bit > print_address_bits)
6410 print_address_bits = addr_bit;
6411 }
6412
6413 return print_address_bits;
6414}
0d381245 6415
65630365 6416/* See breakpoint.h. */
c5aa993b 6417
65630365
PA
6418void
6419print_breakpoint (breakpoint *b)
c4093a6a 6420{
a6d9a66e 6421 struct bp_location *dummy_loc = NULL;
65630365 6422 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6423}
c5aa993b 6424
09d682a4
TT
6425/* Return true if this breakpoint was set by the user, false if it is
6426 internal or momentary. */
6427
6428int
6429user_breakpoint_p (struct breakpoint *b)
6430{
46c6471b 6431 return b->number > 0;
09d682a4
TT
6432}
6433
93daf339
TT
6434/* See breakpoint.h. */
6435
6436int
6437pending_breakpoint_p (struct breakpoint *b)
6438{
6439 return b->loc == NULL;
6440}
6441
7f3b0473 6442/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6443 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6444 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6445 FILTER is non-NULL, call it on each breakpoint and only include the
6446 ones for which it returns non-zero. Return the total number of
6447 breakpoints listed. */
c906108c 6448
d77f58be 6449static int
4495129a 6450breakpoint_1 (const char *args, int allflag,
4a64f543 6451 int (*filter) (const struct breakpoint *))
c4093a6a 6452{
52f0bd74 6453 struct breakpoint *b;
a6d9a66e 6454 struct bp_location *last_loc = NULL;
7f3b0473 6455 int nr_printable_breakpoints;
79a45b7d 6456 struct value_print_options opts;
a6d9a66e 6457 int print_address_bits = 0;
269b11a2 6458 int print_type_col_width = 14;
79a45e25 6459 struct ui_out *uiout = current_uiout;
269b11a2 6460
79a45b7d
TT
6461 get_user_print_options (&opts);
6462
4a64f543
MS
6463 /* Compute the number of rows in the table, as well as the size
6464 required for address fields. */
7f3b0473
AC
6465 nr_printable_breakpoints = 0;
6466 ALL_BREAKPOINTS (b)
e5a67952
MS
6467 {
6468 /* If we have a filter, only list the breakpoints it accepts. */
6469 if (filter && !filter (b))
6470 continue;
6471
6472 /* If we have an "args" string, it is a list of breakpoints to
6473 accept. Skip the others. */
6474 if (args != NULL && *args != '\0')
6475 {
6476 if (allflag && parse_and_eval_long (args) != b->number)
6477 continue;
6478 if (!allflag && !number_is_in_list (args, b->number))
6479 continue;
6480 }
269b11a2 6481
e5a67952
MS
6482 if (allflag || user_breakpoint_p (b))
6483 {
6484 int addr_bit, type_len;
a6d9a66e 6485
e5a67952
MS
6486 addr_bit = breakpoint_address_bits (b);
6487 if (addr_bit > print_address_bits)
6488 print_address_bits = addr_bit;
269b11a2 6489
e5a67952
MS
6490 type_len = strlen (bptype_string (b->type));
6491 if (type_len > print_type_col_width)
6492 print_type_col_width = type_len;
6493
6494 nr_printable_breakpoints++;
6495 }
6496 }
7f3b0473 6497
4a2b031d
TT
6498 {
6499 ui_out_emit_table table_emitter (uiout,
6500 opts.addressprint ? 6 : 5,
6501 nr_printable_breakpoints,
6502 "BreakpointTable");
6503
6504 if (nr_printable_breakpoints > 0)
6505 annotate_breakpoints_headers ();
6506 if (nr_printable_breakpoints > 0)
6507 annotate_field (0);
6508 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6509 if (nr_printable_breakpoints > 0)
6510 annotate_field (1);
6511 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6512 if (nr_printable_breakpoints > 0)
6513 annotate_field (2);
6514 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6515 if (nr_printable_breakpoints > 0)
6516 annotate_field (3);
6517 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6518 if (opts.addressprint)
6519 {
6520 if (nr_printable_breakpoints > 0)
6521 annotate_field (4);
6522 if (print_address_bits <= 32)
6523 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6524 else
6525 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6526 }
6527 if (nr_printable_breakpoints > 0)
6528 annotate_field (5);
6529 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6530 uiout->table_body ();
6531 if (nr_printable_breakpoints > 0)
6532 annotate_breakpoints_table ();
6533
6534 ALL_BREAKPOINTS (b)
6535 {
6536 QUIT;
6537 /* If we have a filter, only list the breakpoints it accepts. */
6538 if (filter && !filter (b))
6539 continue;
e5a67952 6540
4a2b031d
TT
6541 /* If we have an "args" string, it is a list of breakpoints to
6542 accept. Skip the others. */
e5a67952 6543
4a2b031d
TT
6544 if (args != NULL && *args != '\0')
6545 {
6546 if (allflag) /* maintenance info breakpoint */
6547 {
6548 if (parse_and_eval_long (args) != b->number)
6549 continue;
6550 }
6551 else /* all others */
6552 {
6553 if (!number_is_in_list (args, b->number))
6554 continue;
6555 }
6556 }
6557 /* We only print out user settable breakpoints unless the
6558 allflag is set. */
6559 if (allflag || user_breakpoint_p (b))
6560 print_one_breakpoint (b, &last_loc, allflag);
6561 }
6562 }
698384cd 6563
7f3b0473 6564 if (nr_printable_breakpoints == 0)
c906108c 6565 {
4a64f543
MS
6566 /* If there's a filter, let the caller decide how to report
6567 empty list. */
d77f58be
SS
6568 if (!filter)
6569 {
e5a67952 6570 if (args == NULL || *args == '\0')
112e8700 6571 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6572 else
112e8700 6573 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6574 args);
d77f58be 6575 }
c906108c
SS
6576 }
6577 else
c4093a6a 6578 {
a6d9a66e
UW
6579 if (last_loc && !server_command)
6580 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6581 }
c906108c 6582
4a64f543 6583 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6584 there have been breakpoints? */
c906108c 6585 annotate_breakpoints_table_end ();
d77f58be
SS
6586
6587 return nr_printable_breakpoints;
c906108c
SS
6588}
6589
ad443146
SS
6590/* Display the value of default-collect in a way that is generally
6591 compatible with the breakpoint list. */
6592
6593static void
6594default_collect_info (void)
6595{
79a45e25
PA
6596 struct ui_out *uiout = current_uiout;
6597
ad443146
SS
6598 /* If it has no value (which is frequently the case), say nothing; a
6599 message like "No default-collect." gets in user's face when it's
6600 not wanted. */
6601 if (!*default_collect)
6602 return;
6603
6604 /* The following phrase lines up nicely with per-tracepoint collect
6605 actions. */
112e8700
SM
6606 uiout->text ("default collect ");
6607 uiout->field_string ("default-collect", default_collect);
6608 uiout->text (" \n");
ad443146
SS
6609}
6610
c906108c 6611static void
0b39b52e 6612info_breakpoints_command (const char *args, int from_tty)
c906108c 6613{
e5a67952 6614 breakpoint_1 (args, 0, NULL);
ad443146
SS
6615
6616 default_collect_info ();
d77f58be
SS
6617}
6618
6619static void
1d12d88f 6620info_watchpoints_command (const char *args, int from_tty)
d77f58be 6621{
e5a67952 6622 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6623 struct ui_out *uiout = current_uiout;
d77f58be
SS
6624
6625 if (num_printed == 0)
6626 {
e5a67952 6627 if (args == NULL || *args == '\0')
112e8700 6628 uiout->message ("No watchpoints.\n");
d77f58be 6629 else
112e8700 6630 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6631 }
c906108c
SS
6632}
6633
7a292a7a 6634static void
4495129a 6635maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6636{
e5a67952 6637 breakpoint_1 (args, 1, NULL);
ad443146
SS
6638
6639 default_collect_info ();
c906108c
SS
6640}
6641
0d381245 6642static int
714835d5 6643breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6644 struct program_space *pspace,
714835d5 6645 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6646{
6647 struct bp_location *bl = b->loc;
cc59ec59 6648
0d381245
VP
6649 for (; bl; bl = bl->next)
6650 {
6c95b8df
PA
6651 if (bl->pspace == pspace
6652 && bl->address == pc
0d381245
VP
6653 && (!overlay_debugging || bl->section == section))
6654 return 1;
6655 }
6656 return 0;
6657}
6658
672f9b60 6659/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6660 concerns with logical breakpoints, so we match program spaces, not
6661 address spaces. */
c906108c
SS
6662
6663static void
6c95b8df
PA
6664describe_other_breakpoints (struct gdbarch *gdbarch,
6665 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6666 struct obj_section *section, int thread)
c906108c 6667{
52f0bd74
AC
6668 int others = 0;
6669 struct breakpoint *b;
c906108c
SS
6670
6671 ALL_BREAKPOINTS (b)
672f9b60
KP
6672 others += (user_breakpoint_p (b)
6673 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6674 if (others > 0)
6675 {
a3f17187
AC
6676 if (others == 1)
6677 printf_filtered (_("Note: breakpoint "));
6678 else /* if (others == ???) */
6679 printf_filtered (_("Note: breakpoints "));
c906108c 6680 ALL_BREAKPOINTS (b)
672f9b60 6681 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6682 {
6683 others--;
6684 printf_filtered ("%d", b->number);
6685 if (b->thread == -1 && thread != -1)
6686 printf_filtered (" (all threads)");
6687 else if (b->thread != -1)
6688 printf_filtered (" (thread %d)", b->thread);
6689 printf_filtered ("%s%s ",
059fb39f 6690 ((b->enable_state == bp_disabled
f8eba3c6 6691 || b->enable_state == bp_call_disabled)
0d381245 6692 ? " (disabled)"
0d381245
VP
6693 : ""),
6694 (others > 1) ? ","
6695 : ((others == 1) ? " and" : ""));
6696 }
a3f17187 6697 printf_filtered (_("also set at pc "));
2636d81d 6698 fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
c906108c
SS
6699 printf_filtered (".\n");
6700 }
6701}
6702\f
c906108c 6703
e4f237da 6704/* Return true iff it is meaningful to use the address member of
244558af
LM
6705 BPT locations. For some breakpoint types, the locations' address members
6706 are irrelevant and it makes no sense to attempt to compare them to other
6707 addresses (or use them for any other purpose either).
e4f237da 6708
4a64f543 6709 More specifically, each of the following breakpoint types will
244558af 6710 always have a zero valued location address and we don't want to mark
4a64f543 6711 breakpoints of any of these types to be a duplicate of an actual
244558af 6712 breakpoint location at address zero:
e4f237da
KB
6713
6714 bp_watchpoint
2d134ed3
PA
6715 bp_catchpoint
6716
6717*/
e4f237da
KB
6718
6719static int
6720breakpoint_address_is_meaningful (struct breakpoint *bpt)
6721{
6722 enum bptype type = bpt->type;
6723
2d134ed3
PA
6724 return (type != bp_watchpoint && type != bp_catchpoint);
6725}
6726
6727/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6728 true if LOC1 and LOC2 represent the same watchpoint location. */
6729
6730static int
4a64f543
MS
6731watchpoint_locations_match (struct bp_location *loc1,
6732 struct bp_location *loc2)
2d134ed3 6733{
3a5c3e22
PA
6734 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6735 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6736
6737 /* Both of them must exist. */
6738 gdb_assert (w1 != NULL);
6739 gdb_assert (w2 != NULL);
2bdf28a0 6740
4a64f543
MS
6741 /* If the target can evaluate the condition expression in hardware,
6742 then we we need to insert both watchpoints even if they are at
6743 the same place. Otherwise the watchpoint will only trigger when
6744 the condition of whichever watchpoint was inserted evaluates to
6745 true, not giving a chance for GDB to check the condition of the
6746 other watchpoint. */
3a5c3e22 6747 if ((w1->cond_exp
4a64f543
MS
6748 && target_can_accel_watchpoint_condition (loc1->address,
6749 loc1->length,
0cf6dd15 6750 loc1->watchpoint_type,
4d01a485 6751 w1->cond_exp.get ()))
3a5c3e22 6752 || (w2->cond_exp
4a64f543
MS
6753 && target_can_accel_watchpoint_condition (loc2->address,
6754 loc2->length,
0cf6dd15 6755 loc2->watchpoint_type,
4d01a485 6756 w2->cond_exp.get ())))
0cf6dd15
TJB
6757 return 0;
6758
85d721b8
PA
6759 /* Note that this checks the owner's type, not the location's. In
6760 case the target does not support read watchpoints, but does
6761 support access watchpoints, we'll have bp_read_watchpoint
6762 watchpoints with hw_access locations. Those should be considered
6763 duplicates of hw_read locations. The hw_read locations will
6764 become hw_access locations later. */
2d134ed3
PA
6765 return (loc1->owner->type == loc2->owner->type
6766 && loc1->pspace->aspace == loc2->pspace->aspace
6767 && loc1->address == loc2->address
6768 && loc1->length == loc2->length);
e4f237da
KB
6769}
6770
31e77af2 6771/* See breakpoint.h. */
6c95b8df 6772
31e77af2 6773int
accd0bcd
YQ
6774breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6775 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6776{
f5656ead 6777 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6778 || aspace1 == aspace2)
6779 && addr1 == addr2);
6780}
6781
f1310107
TJB
6782/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6783 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6784 matches ASPACE2. On targets that have global breakpoints, the address
6785 space doesn't really matter. */
6786
6787static int
accd0bcd
YQ
6788breakpoint_address_match_range (const address_space *aspace1,
6789 CORE_ADDR addr1,
6790 int len1, const address_space *aspace2,
f1310107
TJB
6791 CORE_ADDR addr2)
6792{
f5656ead 6793 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6794 || aspace1 == aspace2)
6795 && addr2 >= addr1 && addr2 < addr1 + len1);
6796}
6797
6798/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6799 a ranged breakpoint. In most targets, a match happens only if ASPACE
6800 matches the breakpoint's address space. On targets that have global
6801 breakpoints, the address space doesn't really matter. */
6802
6803static int
6804breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6805 const address_space *aspace,
f1310107
TJB
6806 CORE_ADDR addr)
6807{
6808 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6809 aspace, addr)
6810 || (bl->length
6811 && breakpoint_address_match_range (bl->pspace->aspace,
6812 bl->address, bl->length,
6813 aspace, addr)));
6814}
6815
d35ae833
PA
6816/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6817 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6818 match happens only if ASPACE matches the breakpoint's address
6819 space. On targets that have global breakpoints, the address space
6820 doesn't really matter. */
6821
6822static int
6823breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6824 const address_space *aspace,
d35ae833
PA
6825 CORE_ADDR addr, int len)
6826{
6827 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6828 || bl->pspace->aspace == aspace)
6829 {
6830 int bl_len = bl->length != 0 ? bl->length : 1;
6831
6832 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6833 return 1;
6834 }
6835 return 0;
6836}
6837
1e4d1764
YQ
6838/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6839 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6840 true, otherwise returns false. */
6841
6842static int
6843tracepoint_locations_match (struct bp_location *loc1,
6844 struct bp_location *loc2)
6845{
6846 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6847 /* Since tracepoint locations are never duplicated with others', tracepoint
6848 locations at the same address of different tracepoints are regarded as
6849 different locations. */
6850 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6851 else
6852 return 0;
6853}
6854
2d134ed3
PA
6855/* Assuming LOC1 and LOC2's types' have meaningful target addresses
6856 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6857 represent the same location. */
6858
6859static int
4a64f543
MS
6860breakpoint_locations_match (struct bp_location *loc1,
6861 struct bp_location *loc2)
2d134ed3 6862{
2bdf28a0
JK
6863 int hw_point1, hw_point2;
6864
6865 /* Both of them must not be in moribund_locations. */
6866 gdb_assert (loc1->owner != NULL);
6867 gdb_assert (loc2->owner != NULL);
6868
6869 hw_point1 = is_hardware_watchpoint (loc1->owner);
6870 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6871
6872 if (hw_point1 != hw_point2)
6873 return 0;
6874 else if (hw_point1)
6875 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6876 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6877 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6878 else
f1310107
TJB
6879 /* We compare bp_location.length in order to cover ranged breakpoints. */
6880 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6881 loc2->pspace->aspace, loc2->address)
6882 && loc1->length == loc2->length);
2d134ed3
PA
6883}
6884
76897487
KB
6885static void
6886breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6887 int bnum, int have_bnum)
6888{
f63fbe86
MS
6889 /* The longest string possibly returned by hex_string_custom
6890 is 50 chars. These must be at least that big for safety. */
6891 char astr1[64];
6892 char astr2[64];
76897487 6893
bb599908
PH
6894 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6895 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6896 if (have_bnum)
8a3fe4f8 6897 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
6898 bnum, astr1, astr2);
6899 else
8a3fe4f8 6900 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6901}
6902
4a64f543
MS
6903/* Adjust a breakpoint's address to account for architectural
6904 constraints on breakpoint placement. Return the adjusted address.
6905 Note: Very few targets require this kind of adjustment. For most
6906 targets, this function is simply the identity function. */
76897487
KB
6907
6908static CORE_ADDR
a6d9a66e
UW
6909adjust_breakpoint_address (struct gdbarch *gdbarch,
6910 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6911{
a0de8c21
YQ
6912 if (bptype == bp_watchpoint
6913 || bptype == bp_hardware_watchpoint
6914 || bptype == bp_read_watchpoint
6915 || bptype == bp_access_watchpoint
6916 || bptype == bp_catchpoint)
88f7da05
KB
6917 {
6918 /* Watchpoints and the various bp_catch_* eventpoints should not
6919 have their addresses modified. */
6920 return bpaddr;
6921 }
7c16b83e
PA
6922 else if (bptype == bp_single_step)
6923 {
6924 /* Single-step breakpoints should not have their addresses
6925 modified. If there's any architectural constrain that
6926 applies to this address, then it should have already been
6927 taken into account when the breakpoint was created in the
6928 first place. If we didn't do this, stepping through e.g.,
6929 Thumb-2 IT blocks would break. */
6930 return bpaddr;
6931 }
76897487
KB
6932 else
6933 {
a0de8c21
YQ
6934 CORE_ADDR adjusted_bpaddr = bpaddr;
6935
6936 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6937 {
6938 /* Some targets have architectural constraints on the placement
6939 of breakpoint instructions. Obtain the adjusted address. */
6940 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6941 }
76897487 6942
a0de8c21 6943 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
6944
6945 /* An adjusted breakpoint address can significantly alter
6946 a user's expectations. Print a warning if an adjustment
6947 is required. */
6948 if (adjusted_bpaddr != bpaddr)
6949 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6950
6951 return adjusted_bpaddr;
6952 }
6953}
6954
5f486660 6955bp_location::bp_location (breakpoint *owner)
7cc221ef 6956{
5625a286 6957 bp_location *loc = this;
7cc221ef 6958
28010a5d 6959 loc->owner = owner;
b775012e 6960 loc->cond_bytecode = NULL;
0d381245
VP
6961 loc->shlib_disabled = 0;
6962 loc->enabled = 1;
e049a4b5 6963
28010a5d 6964 switch (owner->type)
e049a4b5
DJ
6965 {
6966 case bp_breakpoint:
7c16b83e 6967 case bp_single_step:
e049a4b5
DJ
6968 case bp_until:
6969 case bp_finish:
6970 case bp_longjmp:
6971 case bp_longjmp_resume:
e2e4d78b 6972 case bp_longjmp_call_dummy:
186c406b
TT
6973 case bp_exception:
6974 case bp_exception_resume:
e049a4b5 6975 case bp_step_resume:
2c03e5be 6976 case bp_hp_step_resume:
e049a4b5
DJ
6977 case bp_watchpoint_scope:
6978 case bp_call_dummy:
aa7d318d 6979 case bp_std_terminate:
e049a4b5
DJ
6980 case bp_shlib_event:
6981 case bp_thread_event:
6982 case bp_overlay_event:
4efc6507 6983 case bp_jit_event:
0fd8e87f 6984 case bp_longjmp_master:
aa7d318d 6985 case bp_std_terminate_master:
186c406b 6986 case bp_exception_master:
0e30163f
JK
6987 case bp_gnu_ifunc_resolver:
6988 case bp_gnu_ifunc_resolver_return:
e7e0cddf 6989 case bp_dprintf:
e049a4b5 6990 loc->loc_type = bp_loc_software_breakpoint;
b775012e 6991 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
6992 break;
6993 case bp_hardware_breakpoint:
6994 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 6995 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
6996 break;
6997 case bp_hardware_watchpoint:
6998 case bp_read_watchpoint:
6999 case bp_access_watchpoint:
7000 loc->loc_type = bp_loc_hardware_watchpoint;
7001 break;
7002 case bp_watchpoint:
ce78b96d 7003 case bp_catchpoint:
15c3d785
PA
7004 case bp_tracepoint:
7005 case bp_fast_tracepoint:
0fb4aa4b 7006 case bp_static_tracepoint:
e049a4b5
DJ
7007 loc->loc_type = bp_loc_other;
7008 break;
7009 default:
e2e0b3e5 7010 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7011 }
7012
f431efe5 7013 loc->refc = 1;
28010a5d
PA
7014}
7015
7016/* Allocate a struct bp_location. */
7017
7018static struct bp_location *
7019allocate_bp_location (struct breakpoint *bpt)
7020{
348d480f
PA
7021 return bpt->ops->allocate_location (bpt);
7022}
7cc221ef 7023
f431efe5
PA
7024static void
7025free_bp_location (struct bp_location *loc)
fe3f5fa8 7026{
4d01a485 7027 delete loc;
fe3f5fa8
VP
7028}
7029
f431efe5
PA
7030/* Increment reference count. */
7031
7032static void
7033incref_bp_location (struct bp_location *bl)
7034{
7035 ++bl->refc;
7036}
7037
7038/* Decrement reference count. If the reference count reaches 0,
7039 destroy the bp_location. Sets *BLP to NULL. */
7040
7041static void
7042decref_bp_location (struct bp_location **blp)
7043{
0807b50c
PA
7044 gdb_assert ((*blp)->refc > 0);
7045
f431efe5
PA
7046 if (--(*blp)->refc == 0)
7047 free_bp_location (*blp);
7048 *blp = NULL;
7049}
7050
346774a9 7051/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7052
b270e6f9
TT
7053static breakpoint *
7054add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7055{
346774a9 7056 struct breakpoint *b1;
b270e6f9 7057 struct breakpoint *result = b.get ();
c906108c 7058
346774a9
PA
7059 /* Add this breakpoint to the end of the chain so that a list of
7060 breakpoints will come out in order of increasing numbers. */
7061
7062 b1 = breakpoint_chain;
7063 if (b1 == 0)
b270e6f9 7064 breakpoint_chain = b.release ();
346774a9
PA
7065 else
7066 {
7067 while (b1->next)
7068 b1 = b1->next;
b270e6f9 7069 b1->next = b.release ();
346774a9 7070 }
b270e6f9
TT
7071
7072 return result;
346774a9
PA
7073}
7074
7075/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7076
7077static void
7078init_raw_breakpoint_without_location (struct breakpoint *b,
7079 struct gdbarch *gdbarch,
28010a5d 7080 enum bptype bptype,
c0a91b2b 7081 const struct breakpoint_ops *ops)
346774a9 7082{
348d480f
PA
7083 gdb_assert (ops != NULL);
7084
28010a5d 7085 b->ops = ops;
4d28f7a8 7086 b->type = bptype;
a6d9a66e 7087 b->gdbarch = gdbarch;
c906108c
SS
7088 b->language = current_language->la_language;
7089 b->input_radix = input_radix;
d0fb5eae 7090 b->related_breakpoint = b;
346774a9
PA
7091}
7092
7093/* Helper to set_raw_breakpoint below. Creates a breakpoint
7094 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7095
7096static struct breakpoint *
7097set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7098 enum bptype bptype,
c0a91b2b 7099 const struct breakpoint_ops *ops)
346774a9 7100{
3b0871f4 7101 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7102
3b0871f4 7103 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7104 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7105}
7106
0e30163f
JK
7107/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7108 resolutions should be made as the user specified the location explicitly
7109 enough. */
7110
0d381245 7111static void
0e30163f 7112set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7113{
2bdf28a0
JK
7114 gdb_assert (loc->owner != NULL);
7115
0d381245 7116 if (loc->owner->type == bp_breakpoint
1042e4c0 7117 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7118 || is_tracepoint (loc->owner))
0d381245 7119 {
2c02bd72 7120 const char *function_name;
0e30163f 7121
3467ec66 7122 if (loc->msymbol != NULL
f50776aa
PA
7123 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7124 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
3467ec66 7125 && !explicit_loc)
0e30163f
JK
7126 {
7127 struct breakpoint *b = loc->owner;
7128
3467ec66
PA
7129 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7130
7131 if (b->type == bp_breakpoint && b->loc == loc
7132 && loc->next == NULL && b->related_breakpoint == b)
0e30163f
JK
7133 {
7134 /* Create only the whole new breakpoint of this type but do not
7135 mess more complicated breakpoints with multiple locations. */
7136 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7137 /* Remember the resolver's address for use by the return
7138 breakpoint. */
3467ec66 7139 loc->related_address = loc->address;
0e30163f
JK
7140 }
7141 }
3467ec66
PA
7142 else
7143 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
0e30163f 7144
2c02bd72
DE
7145 if (function_name)
7146 loc->function_name = xstrdup (function_name);
0d381245
VP
7147 }
7148}
7149
a6d9a66e 7150/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7151struct gdbarch *
a6d9a66e
UW
7152get_sal_arch (struct symtab_and_line sal)
7153{
7154 if (sal.section)
7155 return get_objfile_arch (sal.section->objfile);
7156 if (sal.symtab)
eb822aa6 7157 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7158
7159 return NULL;
7160}
7161
346774a9
PA
7162/* Low level routine for partially initializing a breakpoint of type
7163 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7164 file name, and line number are provided by SAL.
0d381245
VP
7165
7166 It is expected that the caller will complete the initialization of
7167 the newly created breakpoint struct as well as output any status
c56053d2 7168 information regarding the creation of a new breakpoint. */
0d381245 7169
346774a9
PA
7170static void
7171init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7172 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7173 const struct breakpoint_ops *ops)
0d381245 7174{
28010a5d 7175 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7176
3742cc8b 7177 add_location_to_breakpoint (b, &sal);
0d381245 7178
6c95b8df
PA
7179 if (bptype != bp_catchpoint)
7180 gdb_assert (sal.pspace != NULL);
7181
f8eba3c6
TT
7182 /* Store the program space that was used to set the breakpoint,
7183 except for ordinary breakpoints, which are independent of the
7184 program space. */
7185 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7186 b->pspace = sal.pspace;
346774a9 7187}
c906108c 7188
346774a9
PA
7189/* set_raw_breakpoint is a low level routine for allocating and
7190 partially initializing a breakpoint of type BPTYPE. The newly
7191 created breakpoint's address, section, source file name, and line
7192 number are provided by SAL. The newly created and partially
7193 initialized breakpoint is added to the breakpoint chain and
7194 is also returned as the value of this function.
7195
7196 It is expected that the caller will complete the initialization of
7197 the newly created breakpoint struct as well as output any status
7198 information regarding the creation of a new breakpoint. In
7199 particular, set_raw_breakpoint does NOT set the breakpoint
7200 number! Care should be taken to not allow an error to occur
7201 prior to completing the initialization of the breakpoint. If this
7202 should happen, a bogus breakpoint will be left on the chain. */
7203
7204struct breakpoint *
7205set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7206 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7207 const struct breakpoint_ops *ops)
346774a9 7208{
3b0871f4 7209 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7210
3b0871f4 7211 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7212 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7213}
7214
53a5351d 7215/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7216 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7217 initiated the operation. */
c906108c
SS
7218
7219void
186c406b 7220set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7221{
35df4500 7222 struct breakpoint *b, *b_tmp;
5d5658a1 7223 int thread = tp->global_num;
0fd8e87f
UW
7224
7225 /* To avoid having to rescan all objfile symbols at every step,
7226 we maintain a list of continually-inserted but always disabled
7227 longjmp "master" breakpoints. Here, we simply create momentary
7228 clones of those and enable them for the requested thread. */
35df4500 7229 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7230 if (b->pspace == current_program_space
186c406b
TT
7231 && (b->type == bp_longjmp_master
7232 || b->type == bp_exception_master))
0fd8e87f 7233 {
06edf0c0
PA
7234 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7235 struct breakpoint *clone;
cc59ec59 7236
e2e4d78b
JK
7237 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7238 after their removal. */
06edf0c0 7239 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7240 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7241 clone->thread = thread;
7242 }
186c406b
TT
7243
7244 tp->initiating_frame = frame;
c906108c
SS
7245}
7246
611c83ae 7247/* Delete all longjmp breakpoints from THREAD. */
c906108c 7248void
611c83ae 7249delete_longjmp_breakpoint (int thread)
c906108c 7250{
35df4500 7251 struct breakpoint *b, *b_tmp;
c906108c 7252
35df4500 7253 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7254 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7255 {
7256 if (b->thread == thread)
7257 delete_breakpoint (b);
7258 }
c906108c
SS
7259}
7260
f59f708a
PA
7261void
7262delete_longjmp_breakpoint_at_next_stop (int thread)
7263{
7264 struct breakpoint *b, *b_tmp;
7265
7266 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7267 if (b->type == bp_longjmp || b->type == bp_exception)
7268 {
7269 if (b->thread == thread)
7270 b->disposition = disp_del_at_next_stop;
7271 }
7272}
7273
e2e4d78b
JK
7274/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7275 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7276 pointer to any of them. Return NULL if this system cannot place longjmp
7277 breakpoints. */
7278
7279struct breakpoint *
7280set_longjmp_breakpoint_for_call_dummy (void)
7281{
7282 struct breakpoint *b, *retval = NULL;
7283
7284 ALL_BREAKPOINTS (b)
7285 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7286 {
7287 struct breakpoint *new_b;
7288
7289 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7290 &momentary_breakpoint_ops,
7291 1);
00431a78 7292 new_b->thread = inferior_thread ()->global_num;
e2e4d78b
JK
7293
7294 /* Link NEW_B into the chain of RETVAL breakpoints. */
7295
7296 gdb_assert (new_b->related_breakpoint == new_b);
7297 if (retval == NULL)
7298 retval = new_b;
7299 new_b->related_breakpoint = retval;
7300 while (retval->related_breakpoint != new_b->related_breakpoint)
7301 retval = retval->related_breakpoint;
7302 retval->related_breakpoint = new_b;
7303 }
7304
7305 return retval;
7306}
7307
7308/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7309 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7310 stack.
7311
7312 You should call this function only at places where it is safe to currently
7313 unwind the whole stack. Failed stack unwind would discard live dummy
7314 frames. */
7315
7316void
b67a2c6f 7317check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7318{
7319 struct breakpoint *b, *b_tmp;
7320
7321 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7322 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7323 {
7324 struct breakpoint *dummy_b = b->related_breakpoint;
7325
7326 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7327 dummy_b = dummy_b->related_breakpoint;
7328 if (dummy_b->type != bp_call_dummy
7329 || frame_find_by_id (dummy_b->frame_id) != NULL)
7330 continue;
7331
00431a78 7332 dummy_frame_discard (dummy_b->frame_id, tp);
e2e4d78b
JK
7333
7334 while (b->related_breakpoint != b)
7335 {
7336 if (b_tmp == b->related_breakpoint)
7337 b_tmp = b->related_breakpoint->next;
7338 delete_breakpoint (b->related_breakpoint);
7339 }
7340 delete_breakpoint (b);
7341 }
7342}
7343
1900040c
MS
7344void
7345enable_overlay_breakpoints (void)
7346{
52f0bd74 7347 struct breakpoint *b;
1900040c
MS
7348
7349 ALL_BREAKPOINTS (b)
7350 if (b->type == bp_overlay_event)
7351 {
7352 b->enable_state = bp_enabled;
44702360 7353 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7354 overlay_events_enabled = 1;
1900040c
MS
7355 }
7356}
7357
7358void
7359disable_overlay_breakpoints (void)
7360{
52f0bd74 7361 struct breakpoint *b;
1900040c
MS
7362
7363 ALL_BREAKPOINTS (b)
7364 if (b->type == bp_overlay_event)
7365 {
7366 b->enable_state = bp_disabled;
44702360 7367 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7368 overlay_events_enabled = 0;
1900040c
MS
7369 }
7370}
7371
aa7d318d
TT
7372/* Set an active std::terminate breakpoint for each std::terminate
7373 master breakpoint. */
7374void
7375set_std_terminate_breakpoint (void)
7376{
35df4500 7377 struct breakpoint *b, *b_tmp;
aa7d318d 7378
35df4500 7379 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7380 if (b->pspace == current_program_space
7381 && b->type == bp_std_terminate_master)
7382 {
06edf0c0 7383 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7384 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7385 }
7386}
7387
7388/* Delete all the std::terminate breakpoints. */
7389void
7390delete_std_terminate_breakpoint (void)
7391{
35df4500 7392 struct breakpoint *b, *b_tmp;
aa7d318d 7393
35df4500 7394 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7395 if (b->type == bp_std_terminate)
7396 delete_breakpoint (b);
7397}
7398
c4093a6a 7399struct breakpoint *
a6d9a66e 7400create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7401{
7402 struct breakpoint *b;
c4093a6a 7403
06edf0c0
PA
7404 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7405 &internal_breakpoint_ops);
7406
b5de0fa7 7407 b->enable_state = bp_enabled;
f00aae0f 7408 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7409 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7410
44702360 7411 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7412
c4093a6a
JM
7413 return b;
7414}
7415
0101ce28
JJ
7416struct lang_and_radix
7417 {
7418 enum language lang;
7419 int radix;
7420 };
7421
4efc6507
DE
7422/* Create a breakpoint for JIT code registration and unregistration. */
7423
7424struct breakpoint *
7425create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7426{
2a7f3dff
PA
7427 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7428 &internal_breakpoint_ops);
4efc6507 7429}
0101ce28 7430
03673fc7
PP
7431/* Remove JIT code registration and unregistration breakpoint(s). */
7432
7433void
7434remove_jit_event_breakpoints (void)
7435{
7436 struct breakpoint *b, *b_tmp;
7437
7438 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7439 if (b->type == bp_jit_event
7440 && b->loc->pspace == current_program_space)
7441 delete_breakpoint (b);
7442}
7443
cae688ec
JJ
7444void
7445remove_solib_event_breakpoints (void)
7446{
35df4500 7447 struct breakpoint *b, *b_tmp;
cae688ec 7448
35df4500 7449 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7450 if (b->type == bp_shlib_event
7451 && b->loc->pspace == current_program_space)
cae688ec
JJ
7452 delete_breakpoint (b);
7453}
7454
f37f681c
PA
7455/* See breakpoint.h. */
7456
7457void
7458remove_solib_event_breakpoints_at_next_stop (void)
7459{
7460 struct breakpoint *b, *b_tmp;
7461
7462 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7463 if (b->type == bp_shlib_event
7464 && b->loc->pspace == current_program_space)
7465 b->disposition = disp_del_at_next_stop;
7466}
7467
04086b45
PA
7468/* Helper for create_solib_event_breakpoint /
7469 create_and_insert_solib_event_breakpoint. Allows specifying which
7470 INSERT_MODE to pass through to update_global_location_list. */
7471
7472static struct breakpoint *
7473create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7474 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7475{
7476 struct breakpoint *b;
7477
06edf0c0
PA
7478 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7479 &internal_breakpoint_ops);
04086b45 7480 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7481 return b;
7482}
7483
04086b45
PA
7484struct breakpoint *
7485create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7486{
7487 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7488}
7489
f37f681c
PA
7490/* See breakpoint.h. */
7491
7492struct breakpoint *
7493create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7494{
7495 struct breakpoint *b;
7496
04086b45
PA
7497 /* Explicitly tell update_global_location_list to insert
7498 locations. */
7499 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7500 if (!b->loc->inserted)
7501 {
7502 delete_breakpoint (b);
7503 return NULL;
7504 }
7505 return b;
7506}
7507
cae688ec
JJ
7508/* Disable any breakpoints that are on code in shared libraries. Only
7509 apply to enabled breakpoints, disabled ones can just stay disabled. */
7510
7511void
cb851954 7512disable_breakpoints_in_shlibs (void)
cae688ec 7513{
876fa593 7514 struct bp_location *loc, **locp_tmp;
cae688ec 7515
876fa593 7516 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7517 {
2bdf28a0 7518 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7519 struct breakpoint *b = loc->owner;
2bdf28a0 7520
4a64f543
MS
7521 /* We apply the check to all breakpoints, including disabled for
7522 those with loc->duplicate set. This is so that when breakpoint
7523 becomes enabled, or the duplicate is removed, gdb will try to
7524 insert all breakpoints. If we don't set shlib_disabled here,
7525 we'll try to insert those breakpoints and fail. */
1042e4c0 7526 if (((b->type == bp_breakpoint)
508ccb1f 7527 || (b->type == bp_jit_event)
1042e4c0 7528 || (b->type == bp_hardware_breakpoint)
d77f58be 7529 || (is_tracepoint (b)))
6c95b8df 7530 && loc->pspace == current_program_space
0d381245 7531 && !loc->shlib_disabled
6c95b8df 7532 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7533 )
0d381245
VP
7534 {
7535 loc->shlib_disabled = 1;
7536 }
cae688ec
JJ
7537 }
7538}
7539
63644780
NB
7540/* Disable any breakpoints and tracepoints that are in SOLIB upon
7541 notification of unloaded_shlib. Only apply to enabled breakpoints,
7542 disabled ones can just stay disabled. */
84acb35a 7543
75149521 7544static void
84acb35a
JJ
7545disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7546{
876fa593 7547 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7548 int disabled_shlib_breaks = 0;
7549
876fa593 7550 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7551 {
2bdf28a0 7552 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7553 struct breakpoint *b = loc->owner;
cc59ec59 7554
1e4d1764 7555 if (solib->pspace == loc->pspace
e2dd7057 7556 && !loc->shlib_disabled
1e4d1764
YQ
7557 && (((b->type == bp_breakpoint
7558 || b->type == bp_jit_event
7559 || b->type == bp_hardware_breakpoint)
7560 && (loc->loc_type == bp_loc_hardware_breakpoint
7561 || loc->loc_type == bp_loc_software_breakpoint))
7562 || is_tracepoint (b))
e2dd7057 7563 && solib_contains_address_p (solib, loc->address))
84acb35a 7564 {
e2dd7057
PP
7565 loc->shlib_disabled = 1;
7566 /* At this point, we cannot rely on remove_breakpoint
7567 succeeding so we must mark the breakpoint as not inserted
7568 to prevent future errors occurring in remove_breakpoints. */
7569 loc->inserted = 0;
8d3788bd
VP
7570
7571 /* This may cause duplicate notifications for the same breakpoint. */
76727919 7572 gdb::observers::breakpoint_modified.notify (b);
8d3788bd 7573
e2dd7057
PP
7574 if (!disabled_shlib_breaks)
7575 {
223ffa71 7576 target_terminal::ours_for_output ();
3e43a32a
MS
7577 warning (_("Temporarily disabling breakpoints "
7578 "for unloaded shared library \"%s\""),
e2dd7057 7579 solib->so_name);
84acb35a 7580 }
e2dd7057 7581 disabled_shlib_breaks = 1;
84acb35a
JJ
7582 }
7583 }
84acb35a
JJ
7584}
7585
63644780
NB
7586/* Disable any breakpoints and tracepoints in OBJFILE upon
7587 notification of free_objfile. Only apply to enabled breakpoints,
7588 disabled ones can just stay disabled. */
7589
7590static void
7591disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7592{
7593 struct breakpoint *b;
7594
7595 if (objfile == NULL)
7596 return;
7597
d03de421
PA
7598 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7599 managed by the user with add-symbol-file/remove-symbol-file.
7600 Similarly to how breakpoints in shared libraries are handled in
7601 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7602 shlib_disabled so they end up uninserted on the next global
7603 location list update. Shared libraries not loaded by the user
7604 aren't handled here -- they're already handled in
7605 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7606 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7607 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7608 main objfile). */
7609 if ((objfile->flags & OBJF_SHARED) == 0
7610 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7611 return;
7612
7613 ALL_BREAKPOINTS (b)
7614 {
7615 struct bp_location *loc;
7616 int bp_modified = 0;
7617
7618 if (!is_breakpoint (b) && !is_tracepoint (b))
7619 continue;
7620
7621 for (loc = b->loc; loc != NULL; loc = loc->next)
7622 {
7623 CORE_ADDR loc_addr = loc->address;
7624
7625 if (loc->loc_type != bp_loc_hardware_breakpoint
7626 && loc->loc_type != bp_loc_software_breakpoint)
7627 continue;
7628
7629 if (loc->shlib_disabled != 0)
7630 continue;
7631
7632 if (objfile->pspace != loc->pspace)
7633 continue;
7634
7635 if (loc->loc_type != bp_loc_hardware_breakpoint
7636 && loc->loc_type != bp_loc_software_breakpoint)
7637 continue;
7638
7639 if (is_addr_in_objfile (loc_addr, objfile))
7640 {
7641 loc->shlib_disabled = 1;
08351840
PA
7642 /* At this point, we don't know whether the object was
7643 unmapped from the inferior or not, so leave the
7644 inserted flag alone. We'll handle failure to
7645 uninsert quietly, in case the object was indeed
7646 unmapped. */
63644780
NB
7647
7648 mark_breakpoint_location_modified (loc);
7649
7650 bp_modified = 1;
7651 }
7652 }
7653
7654 if (bp_modified)
76727919 7655 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7656 }
7657}
7658
ce78b96d
JB
7659/* FORK & VFORK catchpoints. */
7660
e29a4733 7661/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7662 catchpoint. A breakpoint is really of this type iff its ops pointer points
7663 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7664
c1fc2657 7665struct fork_catchpoint : public breakpoint
e29a4733 7666{
e29a4733
PA
7667 /* Process id of a child process whose forking triggered this
7668 catchpoint. This field is only valid immediately after this
7669 catchpoint has triggered. */
7670 ptid_t forked_inferior_pid;
7671};
7672
4a64f543
MS
7673/* Implement the "insert" breakpoint_ops method for fork
7674 catchpoints. */
ce78b96d 7675
77b06cd7
TJB
7676static int
7677insert_catch_fork (struct bp_location *bl)
ce78b96d 7678{
e99b03dc 7679 return target_insert_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7680}
7681
4a64f543
MS
7682/* Implement the "remove" breakpoint_ops method for fork
7683 catchpoints. */
ce78b96d
JB
7684
7685static int
73971819 7686remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7687{
e99b03dc 7688 return target_remove_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7689}
7690
7691/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7692 catchpoints. */
7693
7694static int
f1310107 7695breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7696 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7697 const struct target_waitstatus *ws)
ce78b96d 7698{
e29a4733
PA
7699 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7700
f90263c1
TT
7701 if (ws->kind != TARGET_WAITKIND_FORKED)
7702 return 0;
7703
7704 c->forked_inferior_pid = ws->value.related_pid;
7705 return 1;
ce78b96d
JB
7706}
7707
4a64f543
MS
7708/* Implement the "print_it" breakpoint_ops method for fork
7709 catchpoints. */
ce78b96d
JB
7710
7711static enum print_stop_action
348d480f 7712print_it_catch_fork (bpstat bs)
ce78b96d 7713{
36dfb11c 7714 struct ui_out *uiout = current_uiout;
348d480f
PA
7715 struct breakpoint *b = bs->breakpoint_at;
7716 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7717
ce78b96d 7718 annotate_catchpoint (b->number);
f303dbd6 7719 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7720 if (b->disposition == disp_del)
112e8700 7721 uiout->text ("Temporary catchpoint ");
36dfb11c 7722 else
112e8700
SM
7723 uiout->text ("Catchpoint ");
7724 if (uiout->is_mi_like_p ())
36dfb11c 7725 {
112e8700
SM
7726 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7727 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7728 }
112e8700
SM
7729 uiout->field_int ("bkptno", b->number);
7730 uiout->text (" (forked process ");
e99b03dc 7731 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7732 uiout->text ("), ");
ce78b96d
JB
7733 return PRINT_SRC_AND_LOC;
7734}
7735
4a64f543
MS
7736/* Implement the "print_one" breakpoint_ops method for fork
7737 catchpoints. */
ce78b96d
JB
7738
7739static void
a6d9a66e 7740print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7741{
e29a4733 7742 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7743 struct value_print_options opts;
79a45e25 7744 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7745
7746 get_user_print_options (&opts);
7747
4a64f543
MS
7748 /* Field 4, the address, is omitted (which makes the columns not
7749 line up too nicely with the headers, but the effect is relatively
7750 readable). */
79a45b7d 7751 if (opts.addressprint)
112e8700 7752 uiout->field_skip ("addr");
ce78b96d 7753 annotate_field (5);
112e8700 7754 uiout->text ("fork");
d7e15655 7755 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7756 {
112e8700 7757 uiout->text (", process ");
e99b03dc 7758 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7759 uiout->spaces (1);
ce78b96d 7760 }
8ac3646f 7761
112e8700
SM
7762 if (uiout->is_mi_like_p ())
7763 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7764}
7765
7766/* Implement the "print_mention" breakpoint_ops method for fork
7767 catchpoints. */
7768
7769static void
7770print_mention_catch_fork (struct breakpoint *b)
7771{
7772 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7773}
7774
6149aea9
PA
7775/* Implement the "print_recreate" breakpoint_ops method for fork
7776 catchpoints. */
7777
7778static void
7779print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7780{
7781 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7782 print_recreate_thread (b, fp);
6149aea9
PA
7783}
7784
ce78b96d
JB
7785/* The breakpoint_ops structure to be used in fork catchpoints. */
7786
2060206e 7787static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7788
4a64f543
MS
7789/* Implement the "insert" breakpoint_ops method for vfork
7790 catchpoints. */
ce78b96d 7791
77b06cd7
TJB
7792static int
7793insert_catch_vfork (struct bp_location *bl)
ce78b96d 7794{
e99b03dc 7795 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7796}
7797
4a64f543
MS
7798/* Implement the "remove" breakpoint_ops method for vfork
7799 catchpoints. */
ce78b96d
JB
7800
7801static int
73971819 7802remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7803{
e99b03dc 7804 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7805}
7806
7807/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7808 catchpoints. */
7809
7810static int
f1310107 7811breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7812 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7813 const struct target_waitstatus *ws)
ce78b96d 7814{
e29a4733
PA
7815 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7816
f90263c1
TT
7817 if (ws->kind != TARGET_WAITKIND_VFORKED)
7818 return 0;
7819
7820 c->forked_inferior_pid = ws->value.related_pid;
7821 return 1;
ce78b96d
JB
7822}
7823
4a64f543
MS
7824/* Implement the "print_it" breakpoint_ops method for vfork
7825 catchpoints. */
ce78b96d
JB
7826
7827static enum print_stop_action
348d480f 7828print_it_catch_vfork (bpstat bs)
ce78b96d 7829{
36dfb11c 7830 struct ui_out *uiout = current_uiout;
348d480f 7831 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7832 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7833
ce78b96d 7834 annotate_catchpoint (b->number);
f303dbd6 7835 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7836 if (b->disposition == disp_del)
112e8700 7837 uiout->text ("Temporary catchpoint ");
36dfb11c 7838 else
112e8700
SM
7839 uiout->text ("Catchpoint ");
7840 if (uiout->is_mi_like_p ())
36dfb11c 7841 {
112e8700
SM
7842 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7843 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7844 }
112e8700
SM
7845 uiout->field_int ("bkptno", b->number);
7846 uiout->text (" (vforked process ");
e99b03dc 7847 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7848 uiout->text ("), ");
ce78b96d
JB
7849 return PRINT_SRC_AND_LOC;
7850}
7851
4a64f543
MS
7852/* Implement the "print_one" breakpoint_ops method for vfork
7853 catchpoints. */
ce78b96d
JB
7854
7855static void
a6d9a66e 7856print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7857{
e29a4733 7858 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7859 struct value_print_options opts;
79a45e25 7860 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7861
7862 get_user_print_options (&opts);
4a64f543
MS
7863 /* Field 4, the address, is omitted (which makes the columns not
7864 line up too nicely with the headers, but the effect is relatively
7865 readable). */
79a45b7d 7866 if (opts.addressprint)
112e8700 7867 uiout->field_skip ("addr");
ce78b96d 7868 annotate_field (5);
112e8700 7869 uiout->text ("vfork");
d7e15655 7870 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7871 {
112e8700 7872 uiout->text (", process ");
e99b03dc 7873 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7874 uiout->spaces (1);
ce78b96d 7875 }
8ac3646f 7876
112e8700
SM
7877 if (uiout->is_mi_like_p ())
7878 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7879}
7880
7881/* Implement the "print_mention" breakpoint_ops method for vfork
7882 catchpoints. */
7883
7884static void
7885print_mention_catch_vfork (struct breakpoint *b)
7886{
7887 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7888}
7889
6149aea9
PA
7890/* Implement the "print_recreate" breakpoint_ops method for vfork
7891 catchpoints. */
7892
7893static void
7894print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7895{
7896 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7897 print_recreate_thread (b, fp);
6149aea9
PA
7898}
7899
ce78b96d
JB
7900/* The breakpoint_ops structure to be used in vfork catchpoints. */
7901
2060206e 7902static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7903
edcc5120 7904/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7905 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
7906 CATCH_SOLIB_BREAKPOINT_OPS. */
7907
c1fc2657 7908struct solib_catchpoint : public breakpoint
edcc5120 7909{
c1fc2657 7910 ~solib_catchpoint () override;
edcc5120
TT
7911
7912 /* True for "catch load", false for "catch unload". */
7913 unsigned char is_load;
7914
7915 /* Regular expression to match, if any. COMPILED is only valid when
7916 REGEX is non-NULL. */
7917 char *regex;
2d7cc5c7 7918 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
7919};
7920
c1fc2657 7921solib_catchpoint::~solib_catchpoint ()
edcc5120 7922{
c1fc2657 7923 xfree (this->regex);
edcc5120
TT
7924}
7925
7926static int
7927insert_catch_solib (struct bp_location *ignore)
7928{
7929 return 0;
7930}
7931
7932static int
73971819 7933remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
7934{
7935 return 0;
7936}
7937
7938static int
7939breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 7940 const address_space *aspace,
edcc5120
TT
7941 CORE_ADDR bp_addr,
7942 const struct target_waitstatus *ws)
7943{
7944 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7945 struct breakpoint *other;
7946
7947 if (ws->kind == TARGET_WAITKIND_LOADED)
7948 return 1;
7949
7950 ALL_BREAKPOINTS (other)
7951 {
7952 struct bp_location *other_bl;
7953
7954 if (other == bl->owner)
7955 continue;
7956
7957 if (other->type != bp_shlib_event)
7958 continue;
7959
c1fc2657 7960 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
7961 continue;
7962
7963 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7964 {
7965 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7966 return 1;
7967 }
7968 }
7969
7970 return 0;
7971}
7972
7973static void
7974check_status_catch_solib (struct bpstats *bs)
7975{
7976 struct solib_catchpoint *self
7977 = (struct solib_catchpoint *) bs->breakpoint_at;
edcc5120
TT
7978
7979 if (self->is_load)
7980 {
52941706 7981 for (so_list *iter : current_program_space->added_solibs)
edcc5120
TT
7982 {
7983 if (!self->regex
2d7cc5c7 7984 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
7985 return;
7986 }
7987 }
7988 else
7989 {
6fb16ce6 7990 for (const std::string &iter : current_program_space->deleted_solibs)
edcc5120
TT
7991 {
7992 if (!self->regex
6fb16ce6 7993 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
edcc5120
TT
7994 return;
7995 }
7996 }
7997
7998 bs->stop = 0;
7999 bs->print_it = print_it_noop;
8000}
8001
8002static enum print_stop_action
8003print_it_catch_solib (bpstat bs)
8004{
8005 struct breakpoint *b = bs->breakpoint_at;
8006 struct ui_out *uiout = current_uiout;
8007
8008 annotate_catchpoint (b->number);
f303dbd6 8009 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8010 if (b->disposition == disp_del)
112e8700 8011 uiout->text ("Temporary catchpoint ");
edcc5120 8012 else
112e8700
SM
8013 uiout->text ("Catchpoint ");
8014 uiout->field_int ("bkptno", b->number);
8015 uiout->text ("\n");
8016 if (uiout->is_mi_like_p ())
8017 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8018 print_solib_event (1);
8019 return PRINT_SRC_AND_LOC;
8020}
8021
8022static void
8023print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8024{
8025 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8026 struct value_print_options opts;
8027 struct ui_out *uiout = current_uiout;
edcc5120
TT
8028
8029 get_user_print_options (&opts);
8030 /* Field 4, the address, is omitted (which makes the columns not
8031 line up too nicely with the headers, but the effect is relatively
8032 readable). */
8033 if (opts.addressprint)
8034 {
8035 annotate_field (4);
112e8700 8036 uiout->field_skip ("addr");
edcc5120
TT
8037 }
8038
528e1572 8039 std::string msg;
edcc5120
TT
8040 annotate_field (5);
8041 if (self->is_load)
8042 {
8043 if (self->regex)
528e1572 8044 msg = string_printf (_("load of library matching %s"), self->regex);
edcc5120 8045 else
528e1572 8046 msg = _("load of library");
edcc5120
TT
8047 }
8048 else
8049 {
8050 if (self->regex)
528e1572 8051 msg = string_printf (_("unload of library matching %s"), self->regex);
edcc5120 8052 else
528e1572 8053 msg = _("unload of library");
edcc5120 8054 }
112e8700 8055 uiout->field_string ("what", msg);
8ac3646f 8056
112e8700
SM
8057 if (uiout->is_mi_like_p ())
8058 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8059}
8060
8061static void
8062print_mention_catch_solib (struct breakpoint *b)
8063{
8064 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8065
8066 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8067 self->is_load ? "load" : "unload");
8068}
8069
8070static void
8071print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8072{
8073 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8074
8075 fprintf_unfiltered (fp, "%s %s",
8076 b->disposition == disp_del ? "tcatch" : "catch",
8077 self->is_load ? "load" : "unload");
8078 if (self->regex)
8079 fprintf_unfiltered (fp, " %s", self->regex);
8080 fprintf_unfiltered (fp, "\n");
8081}
8082
8083static struct breakpoint_ops catch_solib_breakpoint_ops;
8084
91985142
MG
8085/* Shared helper function (MI and CLI) for creating and installing
8086 a shared object event catchpoint. If IS_LOAD is non-zero then
8087 the events to be caught are load events, otherwise they are
8088 unload events. If IS_TEMP is non-zero the catchpoint is a
8089 temporary one. If ENABLED is non-zero the catchpoint is
8090 created in an enabled state. */
edcc5120 8091
91985142 8092void
a121b7c1 8093add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8094{
edcc5120 8095 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8096
edcc5120
TT
8097 if (!arg)
8098 arg = "";
f1735a53 8099 arg = skip_spaces (arg);
edcc5120 8100
36bd8eaa 8101 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8102
8103 if (*arg != '\0')
8104 {
2d7cc5c7
PA
8105 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8106 _("Invalid regexp")));
edcc5120
TT
8107 c->regex = xstrdup (arg);
8108 }
8109
8110 c->is_load = is_load;
36bd8eaa 8111 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8112 &catch_solib_breakpoint_ops);
8113
c1fc2657 8114 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8115
b270e6f9 8116 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8117}
8118
91985142
MG
8119/* A helper function that does all the work for "catch load" and
8120 "catch unload". */
8121
8122static void
eb4c3f4a 8123catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8124 struct cmd_list_element *command)
8125{
8126 int tempflag;
8127 const int enabled = 1;
8128
8129 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8130
8131 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8132}
8133
edcc5120 8134static void
eb4c3f4a 8135catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8136 struct cmd_list_element *command)
8137{
8138 catch_load_or_unload (arg, from_tty, 1, command);
8139}
8140
8141static void
eb4c3f4a 8142catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8143 struct cmd_list_element *command)
8144{
8145 catch_load_or_unload (arg, from_tty, 0, command);
8146}
8147
346774a9
PA
8148/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8149 is non-zero, then make the breakpoint temporary. If COND_STRING is
8150 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8151 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8152
ab04a2af 8153void
346774a9
PA
8154init_catchpoint (struct breakpoint *b,
8155 struct gdbarch *gdbarch, int tempflag,
63160a43 8156 const char *cond_string,
c0a91b2b 8157 const struct breakpoint_ops *ops)
c906108c 8158{
51abb421 8159 symtab_and_line sal;
6c95b8df 8160 sal.pspace = current_program_space;
c5aa993b 8161
28010a5d 8162 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8163
1b36a34b 8164 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8165 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8166}
8167
28010a5d 8168void
b270e6f9 8169install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8170{
b270e6f9 8171 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8172 set_breakpoint_number (internal, b);
558a9d82
YQ
8173 if (is_tracepoint (b))
8174 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8175 if (!internal)
8176 mention (b);
76727919 8177 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
8178
8179 if (update_gll)
44702360 8180 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8181}
8182
9b70b993 8183static void
a6d9a66e 8184create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8185 int tempflag, const char *cond_string,
c0a91b2b 8186 const struct breakpoint_ops *ops)
c906108c 8187{
b270e6f9 8188 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8189
b270e6f9 8190 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8191
8192 c->forked_inferior_pid = null_ptid;
8193
b270e6f9 8194 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8195}
8196
fe798b75
JB
8197/* Exec catchpoints. */
8198
b4d90040 8199/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8200 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8201 CATCH_EXEC_BREAKPOINT_OPS. */
8202
c1fc2657 8203struct exec_catchpoint : public breakpoint
b4d90040 8204{
c1fc2657 8205 ~exec_catchpoint () override;
b4d90040
PA
8206
8207 /* Filename of a program whose exec triggered this catchpoint.
8208 This field is only valid immediately after this catchpoint has
8209 triggered. */
8210 char *exec_pathname;
8211};
8212
c1fc2657 8213/* Exec catchpoint destructor. */
b4d90040 8214
c1fc2657 8215exec_catchpoint::~exec_catchpoint ()
b4d90040 8216{
c1fc2657 8217 xfree (this->exec_pathname);
b4d90040
PA
8218}
8219
77b06cd7
TJB
8220static int
8221insert_catch_exec (struct bp_location *bl)
c906108c 8222{
e99b03dc 8223 return target_insert_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8224}
c906108c 8225
fe798b75 8226static int
73971819 8227remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8228{
e99b03dc 8229 return target_remove_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8230}
c906108c 8231
fe798b75 8232static int
f1310107 8233breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8234 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8235 const struct target_waitstatus *ws)
fe798b75 8236{
b4d90040
PA
8237 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8238
f90263c1
TT
8239 if (ws->kind != TARGET_WAITKIND_EXECD)
8240 return 0;
8241
8242 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8243 return 1;
fe798b75 8244}
c906108c 8245
fe798b75 8246static enum print_stop_action
348d480f 8247print_it_catch_exec (bpstat bs)
fe798b75 8248{
36dfb11c 8249 struct ui_out *uiout = current_uiout;
348d480f 8250 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8251 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8252
fe798b75 8253 annotate_catchpoint (b->number);
f303dbd6 8254 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8255 if (b->disposition == disp_del)
112e8700 8256 uiout->text ("Temporary catchpoint ");
36dfb11c 8257 else
112e8700
SM
8258 uiout->text ("Catchpoint ");
8259 if (uiout->is_mi_like_p ())
36dfb11c 8260 {
112e8700
SM
8261 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8262 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8263 }
112e8700
SM
8264 uiout->field_int ("bkptno", b->number);
8265 uiout->text (" (exec'd ");
8266 uiout->field_string ("new-exec", c->exec_pathname);
8267 uiout->text ("), ");
36dfb11c 8268
fe798b75 8269 return PRINT_SRC_AND_LOC;
c906108c
SS
8270}
8271
fe798b75 8272static void
a6d9a66e 8273print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8274{
b4d90040 8275 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8276 struct value_print_options opts;
79a45e25 8277 struct ui_out *uiout = current_uiout;
fe798b75
JB
8278
8279 get_user_print_options (&opts);
8280
8281 /* Field 4, the address, is omitted (which makes the columns
8282 not line up too nicely with the headers, but the effect
8283 is relatively readable). */
8284 if (opts.addressprint)
112e8700 8285 uiout->field_skip ("addr");
fe798b75 8286 annotate_field (5);
112e8700 8287 uiout->text ("exec");
b4d90040 8288 if (c->exec_pathname != NULL)
fe798b75 8289 {
112e8700
SM
8290 uiout->text (", program \"");
8291 uiout->field_string ("what", c->exec_pathname);
8292 uiout->text ("\" ");
fe798b75 8293 }
8ac3646f 8294
112e8700
SM
8295 if (uiout->is_mi_like_p ())
8296 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8297}
8298
8299static void
8300print_mention_catch_exec (struct breakpoint *b)
8301{
8302 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8303}
8304
6149aea9
PA
8305/* Implement the "print_recreate" breakpoint_ops method for exec
8306 catchpoints. */
8307
8308static void
8309print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8310{
8311 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8312 print_recreate_thread (b, fp);
6149aea9
PA
8313}
8314
2060206e 8315static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8316
c906108c 8317static int
fba45db2 8318hw_breakpoint_used_count (void)
c906108c 8319{
c906108c 8320 int i = 0;
f1310107
TJB
8321 struct breakpoint *b;
8322 struct bp_location *bl;
c906108c
SS
8323
8324 ALL_BREAKPOINTS (b)
c5aa993b 8325 {
d6b74ac4 8326 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8327 for (bl = b->loc; bl; bl = bl->next)
8328 {
8329 /* Special types of hardware breakpoints may use more than
8330 one register. */
348d480f 8331 i += b->ops->resources_needed (bl);
f1310107 8332 }
c5aa993b 8333 }
c906108c
SS
8334
8335 return i;
8336}
8337
a1398e0c
PA
8338/* Returns the resources B would use if it were a hardware
8339 watchpoint. */
8340
c906108c 8341static int
a1398e0c 8342hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8343{
c906108c 8344 int i = 0;
e09342b5 8345 struct bp_location *bl;
c906108c 8346
a1398e0c
PA
8347 if (!breakpoint_enabled (b))
8348 return 0;
8349
8350 for (bl = b->loc; bl; bl = bl->next)
8351 {
8352 /* Special types of hardware watchpoints may use more than
8353 one register. */
8354 i += b->ops->resources_needed (bl);
8355 }
8356
8357 return i;
8358}
8359
8360/* Returns the sum the used resources of all hardware watchpoints of
8361 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8362 the sum of the used resources of all hardware watchpoints of other
8363 types _not_ TYPE. */
8364
8365static int
8366hw_watchpoint_used_count_others (struct breakpoint *except,
8367 enum bptype type, int *other_type_used)
8368{
8369 int i = 0;
8370 struct breakpoint *b;
8371
c906108c
SS
8372 *other_type_used = 0;
8373 ALL_BREAKPOINTS (b)
e09342b5 8374 {
a1398e0c
PA
8375 if (b == except)
8376 continue;
e09342b5
TJB
8377 if (!breakpoint_enabled (b))
8378 continue;
8379
a1398e0c
PA
8380 if (b->type == type)
8381 i += hw_watchpoint_use_count (b);
8382 else if (is_hardware_watchpoint (b))
8383 *other_type_used = 1;
e09342b5
TJB
8384 }
8385
c906108c
SS
8386 return i;
8387}
8388
c906108c 8389void
fba45db2 8390disable_watchpoints_before_interactive_call_start (void)
c906108c 8391{
c5aa993b 8392 struct breakpoint *b;
c906108c
SS
8393
8394 ALL_BREAKPOINTS (b)
c5aa993b 8395 {
cc60f2e3 8396 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8397 {
b5de0fa7 8398 b->enable_state = bp_call_disabled;
44702360 8399 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8400 }
8401 }
c906108c
SS
8402}
8403
8404void
fba45db2 8405enable_watchpoints_after_interactive_call_stop (void)
c906108c 8406{
c5aa993b 8407 struct breakpoint *b;
c906108c
SS
8408
8409 ALL_BREAKPOINTS (b)
c5aa993b 8410 {
cc60f2e3 8411 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8412 {
b5de0fa7 8413 b->enable_state = bp_enabled;
44702360 8414 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8415 }
8416 }
c906108c
SS
8417}
8418
8bea4e01
UW
8419void
8420disable_breakpoints_before_startup (void)
8421{
6c95b8df 8422 current_program_space->executing_startup = 1;
44702360 8423 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8424}
8425
8426void
8427enable_breakpoints_after_startup (void)
8428{
6c95b8df 8429 current_program_space->executing_startup = 0;
f8eba3c6 8430 breakpoint_re_set ();
8bea4e01
UW
8431}
8432
7c16b83e
PA
8433/* Create a new single-step breakpoint for thread THREAD, with no
8434 locations. */
c906108c 8435
7c16b83e
PA
8436static struct breakpoint *
8437new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8438{
b270e6f9 8439 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8440
b270e6f9 8441 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8442 &momentary_breakpoint_ops);
8443
8444 b->disposition = disp_donttouch;
8445 b->frame_id = null_frame_id;
8446
8447 b->thread = thread;
8448 gdb_assert (b->thread != 0);
8449
b270e6f9 8450 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8451}
8452
8453/* Set a momentary breakpoint of type TYPE at address specified by
8454 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8455 frame. */
c906108c 8456
454dafbd 8457breakpoint_up
a6d9a66e
UW
8458set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8459 struct frame_id frame_id, enum bptype type)
c906108c 8460{
52f0bd74 8461 struct breakpoint *b;
edb3359d 8462
193facb3
JK
8463 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8464 tail-called one. */
8465 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8466
06edf0c0 8467 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8468 b->enable_state = bp_enabled;
8469 b->disposition = disp_donttouch;
818dd999 8470 b->frame_id = frame_id;
c906108c 8471
00431a78 8472 b->thread = inferior_thread ()->global_num;
c906108c 8473
44702360 8474 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8475
454dafbd 8476 return breakpoint_up (b);
c906108c 8477}
611c83ae 8478
06edf0c0 8479/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8480 The new breakpoint will have type TYPE, use OPS as its
8481 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8482
06edf0c0
PA
8483static struct breakpoint *
8484momentary_breakpoint_from_master (struct breakpoint *orig,
8485 enum bptype type,
a1aa2221
LM
8486 const struct breakpoint_ops *ops,
8487 int loc_enabled)
e58b0e63
PA
8488{
8489 struct breakpoint *copy;
8490
06edf0c0 8491 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8492 copy->loc = allocate_bp_location (copy);
0e30163f 8493 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8494
a6d9a66e 8495 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8496 copy->loc->requested_address = orig->loc->requested_address;
8497 copy->loc->address = orig->loc->address;
8498 copy->loc->section = orig->loc->section;
6c95b8df 8499 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8500 copy->loc->probe = orig->loc->probe;
f8eba3c6 8501 copy->loc->line_number = orig->loc->line_number;
2f202fde 8502 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8503 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8504 copy->frame_id = orig->frame_id;
8505 copy->thread = orig->thread;
6c95b8df 8506 copy->pspace = orig->pspace;
e58b0e63
PA
8507
8508 copy->enable_state = bp_enabled;
8509 copy->disposition = disp_donttouch;
8510 copy->number = internal_breakpoint_number--;
8511
44702360 8512 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8513 return copy;
8514}
8515
06edf0c0
PA
8516/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8517 ORIG is NULL. */
8518
8519struct breakpoint *
8520clone_momentary_breakpoint (struct breakpoint *orig)
8521{
8522 /* If there's nothing to clone, then return nothing. */
8523 if (orig == NULL)
8524 return NULL;
8525
a1aa2221 8526 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8527}
8528
454dafbd 8529breakpoint_up
a6d9a66e
UW
8530set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8531 enum bptype type)
611c83ae
PA
8532{
8533 struct symtab_and_line sal;
8534
8535 sal = find_pc_line (pc, 0);
8536 sal.pc = pc;
8537 sal.section = find_pc_overlay (pc);
8538 sal.explicit_pc = 1;
8539
a6d9a66e 8540 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8541}
c906108c 8542\f
c5aa993b 8543
c906108c
SS
8544/* Tell the user we have just set a breakpoint B. */
8545
8546static void
fba45db2 8547mention (struct breakpoint *b)
c906108c 8548{
348d480f 8549 b->ops->print_mention (b);
2d33446d 8550 current_uiout->text ("\n");
c906108c 8551}
c906108c 8552\f
c5aa993b 8553
1a853c52
PA
8554static int bp_loc_is_permanent (struct bp_location *loc);
8555
0d381245 8556static struct bp_location *
39d61571 8557add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8558 const struct symtab_and_line *sal)
8559{
8560 struct bp_location *loc, **tmp;
3742cc8b
YQ
8561 CORE_ADDR adjusted_address;
8562 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8563
8564 if (loc_gdbarch == NULL)
8565 loc_gdbarch = b->gdbarch;
8566
8567 /* Adjust the breakpoint's address prior to allocating a location.
8568 Once we call allocate_bp_location(), that mostly uninitialized
8569 location will be placed on the location chain. Adjustment of the
8570 breakpoint may cause target_read_memory() to be called and we do
8571 not want its scan of the location chain to find a breakpoint and
8572 location that's only been partially initialized. */
8573 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8574 sal->pc, b->type);
0d381245 8575
d30113d4 8576 /* Sort the locations by their ADDRESS. */
39d61571 8577 loc = allocate_bp_location (b);
d30113d4
JK
8578 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8579 tmp = &((*tmp)->next))
0d381245 8580 ;
d30113d4 8581 loc->next = *tmp;
0d381245 8582 *tmp = loc;
3742cc8b 8583
0d381245 8584 loc->requested_address = sal->pc;
3742cc8b 8585 loc->address = adjusted_address;
6c95b8df 8586 loc->pspace = sal->pspace;
935676c9 8587 loc->probe.prob = sal->prob;
729662a5 8588 loc->probe.objfile = sal->objfile;
6c95b8df 8589 gdb_assert (loc->pspace != NULL);
0d381245 8590 loc->section = sal->section;
3742cc8b 8591 loc->gdbarch = loc_gdbarch;
f8eba3c6 8592 loc->line_number = sal->line;
2f202fde 8593 loc->symtab = sal->symtab;
4a27f119 8594 loc->symbol = sal->symbol;
3467ec66
PA
8595 loc->msymbol = sal->msymbol;
8596 loc->objfile = sal->objfile;
f8eba3c6 8597
0e30163f
JK
8598 set_breakpoint_location_function (loc,
8599 sal->explicit_pc || sal->explicit_line);
1a853c52 8600
6ae88661
LM
8601 /* While by definition, permanent breakpoints are already present in the
8602 code, we don't mark the location as inserted. Normally one would expect
8603 that GDB could rely on that breakpoint instruction to stop the program,
8604 thus removing the need to insert its own breakpoint, except that executing
8605 the breakpoint instruction can kill the target instead of reporting a
8606 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8607 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8608 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8609 breakpoint be inserted normally results in QEMU knowing about the GDB
8610 breakpoint, and thus trap before the breakpoint instruction is executed.
8611 (If GDB later needs to continue execution past the permanent breakpoint,
8612 it manually increments the PC, thus avoiding executing the breakpoint
8613 instruction.) */
1a853c52 8614 if (bp_loc_is_permanent (loc))
6ae88661 8615 loc->permanent = 1;
1a853c52 8616
0d381245
VP
8617 return loc;
8618}
514f746b
AR
8619\f
8620
1cf4d951 8621/* See breakpoint.h. */
514f746b 8622
1cf4d951
PA
8623int
8624program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8625{
8626 int len;
8627 CORE_ADDR addr;
1afeeb75 8628 const gdb_byte *bpoint;
514f746b
AR
8629 gdb_byte *target_mem;
8630
1cf4d951
PA
8631 addr = address;
8632 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8633
8634 /* Software breakpoints unsupported? */
8635 if (bpoint == NULL)
8636 return 0;
8637
224c3ddb 8638 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
8639
8640 /* Enable the automatic memory restoration from breakpoints while
8641 we read the memory. Otherwise we could say about our temporary
8642 breakpoints they are permanent. */
cb85b21b
TT
8643 scoped_restore restore_memory
8644 = make_scoped_restore_show_memory_breakpoints (0);
1cf4d951
PA
8645
8646 if (target_read_memory (address, target_mem, len) == 0
8647 && memcmp (target_mem, bpoint, len) == 0)
cb85b21b 8648 return 1;
1cf4d951 8649
cb85b21b 8650 return 0;
1cf4d951
PA
8651}
8652
8653/* Return 1 if LOC is pointing to a permanent breakpoint,
8654 return 0 otherwise. */
8655
8656static int
8657bp_loc_is_permanent (struct bp_location *loc)
8658{
514f746b
AR
8659 gdb_assert (loc != NULL);
8660
244558af
LM
8661 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8662 attempt to read from the addresses the locations of these breakpoint types
8663 point to. program_breakpoint_here_p, below, will attempt to read
8664 memory. */
8665 if (!breakpoint_address_is_meaningful (loc->owner))
8666 return 0;
8667
5ed8105e 8668 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8669 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 8670 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8671}
8672
e7e0cddf
SS
8673/* Build a command list for the dprintf corresponding to the current
8674 settings of the dprintf style options. */
8675
8676static void
8677update_dprintf_command_list (struct breakpoint *b)
8678{
8679 char *dprintf_args = b->extra_string;
8680 char *printf_line = NULL;
8681
8682 if (!dprintf_args)
8683 return;
8684
8685 dprintf_args = skip_spaces (dprintf_args);
8686
8687 /* Allow a comma, as it may have terminated a location, but don't
8688 insist on it. */
8689 if (*dprintf_args == ',')
8690 ++dprintf_args;
8691 dprintf_args = skip_spaces (dprintf_args);
8692
8693 if (*dprintf_args != '"')
8694 error (_("Bad format string, missing '\"'."));
8695
d3ce09f5 8696 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8697 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8698 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8699 {
8700 if (!dprintf_function)
8701 error (_("No function supplied for dprintf call"));
8702
8703 if (dprintf_channel && strlen (dprintf_channel) > 0)
8704 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8705 dprintf_function,
8706 dprintf_channel,
8707 dprintf_args);
8708 else
8709 printf_line = xstrprintf ("call (void) %s (%s)",
8710 dprintf_function,
8711 dprintf_args);
8712 }
d3ce09f5
SS
8713 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8714 {
8715 if (target_can_run_breakpoint_commands ())
8716 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8717 else
8718 {
8719 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8720 printf_line = xstrprintf ("printf %s", dprintf_args);
8721 }
8722 }
e7e0cddf
SS
8723 else
8724 internal_error (__FILE__, __LINE__,
8725 _("Invalid dprintf style."));
8726
f28045c2 8727 gdb_assert (printf_line != NULL);
e7e0cddf 8728
12973681
TT
8729 /* Manufacture a printf sequence. */
8730 struct command_line *printf_cmd_line
8731 = new struct command_line (simple_control, printf_line);
8732 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8733 command_lines_deleter ()));
e7e0cddf
SS
8734}
8735
8736/* Update all dprintf commands, making their command lists reflect
8737 current style settings. */
8738
8739static void
eb4c3f4a 8740update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8741 struct cmd_list_element *c)
8742{
8743 struct breakpoint *b;
8744
8745 ALL_BREAKPOINTS (b)
8746 {
8747 if (b->type == bp_dprintf)
8748 update_dprintf_command_list (b);
8749 }
8750}
c3f6f71d 8751
f00aae0f
KS
8752/* Create a breakpoint with SAL as location. Use LOCATION
8753 as a description of the location, and COND_STRING
b35a8b2f
DE
8754 as condition expression. If LOCATION is NULL then create an
8755 "address location" from the address in the SAL. */
018d34a4
VP
8756
8757static void
d9b3f62e 8758init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8759 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8760 event_location_up &&location,
e1e01040
PA
8761 gdb::unique_xmalloc_ptr<char> filter,
8762 gdb::unique_xmalloc_ptr<char> cond_string,
8763 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8764 enum bptype type, enum bpdisp disposition,
8765 int thread, int task, int ignore_count,
c0a91b2b 8766 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8767 int enabled, int internal, unsigned flags,
8768 int display_canonical)
018d34a4 8769{
0d381245 8770 int i;
018d34a4
VP
8771
8772 if (type == bp_hardware_breakpoint)
8773 {
fbbd034e
AS
8774 int target_resources_ok;
8775
8776 i = hw_breakpoint_used_count ();
8777 target_resources_ok =
8778 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8779 i + 1, 0);
8780 if (target_resources_ok == 0)
8781 error (_("No hardware breakpoint support in the target."));
8782 else if (target_resources_ok < 0)
8783 error (_("Hardware breakpoints used exceeds limit."));
8784 }
8785
6c5b2ebe 8786 gdb_assert (!sals.empty ());
6c95b8df 8787
6c5b2ebe 8788 for (const auto &sal : sals)
0d381245 8789 {
0d381245
VP
8790 struct bp_location *loc;
8791
8792 if (from_tty)
5af949e3
UW
8793 {
8794 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8795 if (!loc_gdbarch)
8796 loc_gdbarch = gdbarch;
8797
8798 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8799 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8800 }
0d381245 8801
6c5b2ebe 8802 if (&sal == &sals[0])
0d381245 8803 {
d9b3f62e 8804 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8805 b->thread = thread;
4a306c9a 8806 b->task = task;
855a6e68 8807
e1e01040
PA
8808 b->cond_string = cond_string.release ();
8809 b->extra_string = extra_string.release ();
0d381245 8810 b->ignore_count = ignore_count;
41447f92 8811 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8812 b->disposition = disposition;
6c95b8df 8813
44f238bb
PA
8814 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8815 b->loc->inserted = 1;
8816
0fb4aa4b
PA
8817 if (type == bp_static_tracepoint)
8818 {
d9b3f62e 8819 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8820 struct static_tracepoint_marker marker;
8821
983af33b 8822 if (strace_marker_p (b))
0fb4aa4b
PA
8823 {
8824 /* We already know the marker exists, otherwise, we
8825 wouldn't see a sal for it. */
d28cd78a
TT
8826 const char *p
8827 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8828 const char *endp;
0fb4aa4b 8829
f1735a53 8830 p = skip_spaces (p);
0fb4aa4b 8831
f1735a53 8832 endp = skip_to_space (p);
0fb4aa4b 8833
5d9310c4 8834 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8835
3e43a32a
MS
8836 printf_filtered (_("Probed static tracepoint "
8837 "marker \"%s\"\n"),
5d9310c4 8838 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8839 }
8840 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8841 {
5d9310c4 8842 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8843
3e43a32a
MS
8844 printf_filtered (_("Probed static tracepoint "
8845 "marker \"%s\"\n"),
5d9310c4 8846 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8847 }
8848 else
3e43a32a
MS
8849 warning (_("Couldn't determine the static "
8850 "tracepoint marker to probe"));
0fb4aa4b
PA
8851 }
8852
0d381245
VP
8853 loc = b->loc;
8854 }
8855 else
018d34a4 8856 {
39d61571 8857 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8858 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8859 loc->inserted = 1;
0d381245
VP
8860 }
8861
8862 if (b->cond_string)
8863 {
bbc13ae3
KS
8864 const char *arg = b->cond_string;
8865
1bb9788d
TT
8866 loc->cond = parse_exp_1 (&arg, loc->address,
8867 block_for_pc (loc->address), 0);
0d381245 8868 if (*arg)
588ae58c 8869 error (_("Garbage '%s' follows condition"), arg);
018d34a4 8870 }
e7e0cddf
SS
8871
8872 /* Dynamic printf requires and uses additional arguments on the
8873 command line, otherwise it's an error. */
8874 if (type == bp_dprintf)
8875 {
8876 if (b->extra_string)
8877 update_dprintf_command_list (b);
8878 else
8879 error (_("Format string required"));
8880 }
8881 else if (b->extra_string)
588ae58c 8882 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 8883 }
018d34a4 8884
56435ebe 8885 b->display_canonical = display_canonical;
f00aae0f 8886 if (location != NULL)
d28cd78a 8887 b->location = std::move (location);
018d34a4 8888 else
d28cd78a 8889 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 8890 b->filter = filter.release ();
d9b3f62e 8891}
018d34a4 8892
d9b3f62e
PA
8893static void
8894create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 8895 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8896 event_location_up &&location,
e1e01040
PA
8897 gdb::unique_xmalloc_ptr<char> filter,
8898 gdb::unique_xmalloc_ptr<char> cond_string,
8899 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8900 enum bptype type, enum bpdisp disposition,
8901 int thread, int task, int ignore_count,
c0a91b2b 8902 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8903 int enabled, int internal, unsigned flags,
8904 int display_canonical)
d9b3f62e 8905{
a5e364af 8906 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 8907
a5e364af 8908 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 8909 sals, std::move (location),
e1e01040
PA
8910 std::move (filter),
8911 std::move (cond_string),
8912 std::move (extra_string),
d9b3f62e
PA
8913 type, disposition,
8914 thread, task, ignore_count,
8915 ops, from_tty,
44f238bb
PA
8916 enabled, internal, flags,
8917 display_canonical);
d9b3f62e 8918
b270e6f9 8919 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
8920}
8921
8922/* Add SALS.nelts breakpoints to the breakpoint table. For each
8923 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8924 value. COND_STRING, if not NULL, specified the condition to be
8925 used for all breakpoints. Essentially the only case where
8926 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8927 function. In that case, it's still not possible to specify
8928 separate conditions for different overloaded functions, so
8929 we take just a single condition string.
8930
c3f6f71d 8931 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 8932 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
8933 array contents). If the function fails (error() is called), the
8934 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 8935 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
8936
8937static void
8cdf0e15 8938create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 8939 struct linespec_result *canonical,
e1e01040
PA
8940 gdb::unique_xmalloc_ptr<char> cond_string,
8941 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
8942 enum bptype type, enum bpdisp disposition,
8943 int thread, int task, int ignore_count,
c0a91b2b 8944 const struct breakpoint_ops *ops, int from_tty,
44f238bb 8945 int enabled, int internal, unsigned flags)
c906108c 8946{
f8eba3c6 8947 if (canonical->pre_expanded)
6c5b2ebe 8948 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 8949
6c5b2ebe 8950 for (const auto &lsal : canonical->lsals)
c3f6f71d 8951 {
f00aae0f 8952 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 8953 'break', without arguments. */
ffc2605c 8954 event_location_up location
f00aae0f 8955 = (canonical->location != NULL
8e9e35b1 8956 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 8957 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 8958 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 8959
6c5b2ebe 8960 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 8961 std::move (location),
e1e01040
PA
8962 std::move (filter_string),
8963 std::move (cond_string),
8964 std::move (extra_string),
e7e0cddf 8965 type, disposition,
84f4c1fe 8966 thread, task, ignore_count, ops,
44f238bb 8967 from_tty, enabled, internal, flags,
56435ebe 8968 canonical->special_display);
c3f6f71d 8969 }
c3f6f71d 8970}
c906108c 8971
f00aae0f 8972/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 8973 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
8974 addresses found. LOCATION points to the end of the SAL (for
8975 linespec locations).
9998af43
TJB
8976
8977 The array and the line spec strings are allocated on the heap, it is
8978 the caller's responsibility to free them. */
c906108c 8979
b9362cc7 8980static void
f00aae0f 8981parse_breakpoint_sals (const struct event_location *location,
58438ac1 8982 struct linespec_result *canonical)
c3f6f71d 8983{
f00aae0f
KS
8984 struct symtab_and_line cursal;
8985
8986 if (event_location_type (location) == LINESPEC_LOCATION)
8987 {
a20714ff 8988 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 8989
a20714ff 8990 if (spec == NULL)
f00aae0f
KS
8991 {
8992 /* The last displayed codepoint, if it's valid, is our default
8993 breakpoint address. */
8994 if (last_displayed_sal_is_valid ())
8995 {
f00aae0f
KS
8996 /* Set sal's pspace, pc, symtab, and line to the values
8997 corresponding to the last call to print_frame_info.
8998 Be sure to reinitialize LINE with NOTCURRENT == 0
8999 as the breakpoint line number is inappropriate otherwise.
9000 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9001 symtab_and_line sal = get_last_displayed_sal ();
9002 CORE_ADDR pc = sal.pc;
9003
f00aae0f
KS
9004 sal = find_pc_line (pc, 0);
9005
9006 /* "break" without arguments is equivalent to "break *PC"
9007 where PC is the last displayed codepoint's address. So
9008 make sure to set sal.explicit_pc to prevent GDB from
9009 trying to expand the list of sals to include all other
9010 instances with the same symtab and line. */
9011 sal.pc = pc;
9012 sal.explicit_pc = 1;
9013
6c5b2ebe
PA
9014 struct linespec_sals lsal;
9015 lsal.sals = {sal};
f00aae0f
KS
9016 lsal.canonical = NULL;
9017
6c5b2ebe 9018 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9019 return;
9020 }
9021 else
9022 error (_("No default breakpoint address now."));
c906108c 9023 }
c906108c 9024 }
f00aae0f
KS
9025
9026 /* Force almost all breakpoints to be in terms of the
9027 current_source_symtab (which is decode_line_1's default).
9028 This should produce the results we want almost all of the
9029 time while leaving default_breakpoint_* alone.
9030
9031 ObjC: However, don't match an Objective-C method name which
9032 may have a '+' or '-' succeeded by a '['. */
9033 cursal = get_current_source_symtab_and_line ();
9034 if (last_displayed_sal_is_valid ())
c906108c 9035 {
a20714ff 9036 const char *spec = NULL;
cc80f267 9037
f00aae0f 9038 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 9039 spec = get_linespec_location (location)->spec_string;
cc80f267 9040
f00aae0f 9041 if (!cursal.symtab
a20714ff
PA
9042 || (spec != NULL
9043 && strchr ("+-", spec[0]) != NULL
9044 && spec[1] != '['))
f00aae0f 9045 {
c2f4122d 9046 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9047 get_last_displayed_symtab (),
9048 get_last_displayed_line (),
9049 canonical, NULL, NULL);
9050 return;
9051 }
c906108c 9052 }
f00aae0f 9053
c2f4122d 9054 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9055 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9056}
c906108c 9057
c906108c 9058
c3f6f71d 9059/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9060 inserted as a breakpoint. If it can't throw an error. */
c906108c 9061
b9362cc7 9062static void
6c5b2ebe 9063breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9064{
6c5b2ebe
PA
9065 for (auto &sal : sals)
9066 resolve_sal_pc (&sal);
c3f6f71d
JM
9067}
9068
7a697b8d
SS
9069/* Fast tracepoints may have restrictions on valid locations. For
9070 instance, a fast tracepoint using a jump instead of a trap will
9071 likely have to overwrite more bytes than a trap would, and so can
9072 only be placed where the instruction is longer than the jump, or a
9073 multi-instruction sequence does not have a jump into the middle of
9074 it, etc. */
9075
9076static void
9077check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9078 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9079{
6c5b2ebe 9080 for (const auto &sal : sals)
7a697b8d 9081 {
f8eba3c6
TT
9082 struct gdbarch *sarch;
9083
6c5b2ebe 9084 sarch = get_sal_arch (sal);
f8eba3c6
TT
9085 /* We fall back to GDBARCH if there is no architecture
9086 associated with SAL. */
9087 if (sarch == NULL)
9088 sarch = gdbarch;
281d762b
TT
9089 std::string msg;
9090 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 9091 error (_("May not have a fast tracepoint at %s%s"),
281d762b 9092 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
9093 }
9094}
9095
018d34a4
VP
9096/* Given TOK, a string specification of condition and thread, as
9097 accepted by the 'break' command, extract the condition
9098 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9099 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9100 If no condition is found, *COND_STRING is set to NULL.
9101 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9102
9103static void
bbc13ae3 9104find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9105 char **cond_string, int *thread, int *task,
9106 char **rest)
018d34a4
VP
9107{
9108 *cond_string = NULL;
9109 *thread = -1;
ed1d1739
KS
9110 *task = 0;
9111 *rest = NULL;
9112
018d34a4
VP
9113 while (tok && *tok)
9114 {
bbc13ae3 9115 const char *end_tok;
018d34a4 9116 int toklen;
bbc13ae3
KS
9117 const char *cond_start = NULL;
9118 const char *cond_end = NULL;
cc59ec59 9119
f1735a53 9120 tok = skip_spaces (tok);
e7e0cddf
SS
9121
9122 if ((*tok == '"' || *tok == ',') && rest)
9123 {
9124 *rest = savestring (tok, strlen (tok));
9125 return;
9126 }
9127
f1735a53 9128 end_tok = skip_to_space (tok);
d634f2de 9129
018d34a4 9130 toklen = end_tok - tok;
d634f2de 9131
018d34a4
VP
9132 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9133 {
9134 tok = cond_start = end_tok + 1;
4d01a485 9135 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9136 cond_end = tok;
d634f2de 9137 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9138 }
9139 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9140 {
5d5658a1
PA
9141 const char *tmptok;
9142 struct thread_info *thr;
d634f2de 9143
018d34a4 9144 tok = end_tok + 1;
5d5658a1 9145 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9146 if (tok == tmptok)
9147 error (_("Junk after thread keyword."));
5d5658a1 9148 *thread = thr->global_num;
bbc13ae3 9149 tok = tmptok;
018d34a4 9150 }
4a306c9a
JB
9151 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9152 {
9153 char *tmptok;
9154
9155 tok = end_tok + 1;
bbc13ae3 9156 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9157 if (tok == tmptok)
9158 error (_("Junk after task keyword."));
9159 if (!valid_task_id (*task))
b6199126 9160 error (_("Unknown task %d."), *task);
bbc13ae3 9161 tok = tmptok;
4a306c9a 9162 }
e7e0cddf
SS
9163 else if (rest)
9164 {
9165 *rest = savestring (tok, strlen (tok));
ccab2054 9166 return;
e7e0cddf 9167 }
018d34a4
VP
9168 else
9169 error (_("Junk at end of arguments."));
9170 }
9171}
9172
0fb4aa4b
PA
9173/* Decode a static tracepoint marker spec. */
9174
6c5b2ebe 9175static std::vector<symtab_and_line>
f00aae0f 9176decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 9177{
f00aae0f
KS
9178 const char *p = &(*arg_p)[3];
9179 const char *endp;
0fb4aa4b 9180
f1735a53 9181 p = skip_spaces (p);
0fb4aa4b 9182
f1735a53 9183 endp = skip_to_space (p);
0fb4aa4b 9184
81b1e71c 9185 std::string marker_str (p, endp - p);
0fb4aa4b 9186
5d9310c4
SM
9187 std::vector<static_tracepoint_marker> markers
9188 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9189 if (markers.empty ())
81b1e71c
TT
9190 error (_("No known static tracepoint marker named %s"),
9191 marker_str.c_str ());
0fb4aa4b 9192
6c5b2ebe 9193 std::vector<symtab_and_line> sals;
5d9310c4 9194 sals.reserve (markers.size ());
0fb4aa4b 9195
5d9310c4 9196 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 9197 {
5d9310c4
SM
9198 symtab_and_line sal = find_pc_line (marker.address, 0);
9199 sal.pc = marker.address;
6c5b2ebe 9200 sals.push_back (sal);
5d9310c4 9201 }
0fb4aa4b 9202
0fb4aa4b
PA
9203 *arg_p = endp;
9204 return sals;
9205}
9206
f00aae0f 9207/* See breakpoint.h. */
0101ce28 9208
8cdf0e15
VP
9209int
9210create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9211 const struct event_location *location,
9212 const char *cond_string,
9213 int thread, const char *extra_string,
f00aae0f 9214 int parse_extra,
0fb4aa4b 9215 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9216 int ignore_count,
9217 enum auto_boolean pending_break_support,
c0a91b2b 9218 const struct breakpoint_ops *ops,
44f238bb
PA
9219 int from_tty, int enabled, int internal,
9220 unsigned flags)
c3f6f71d 9221{
7efd8fc2 9222 struct linespec_result canonical;
0101ce28 9223 int pending = 0;
4a306c9a 9224 int task = 0;
86b17b60 9225 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9226
348d480f
PA
9227 gdb_assert (ops != NULL);
9228
f00aae0f
KS
9229 /* If extra_string isn't useful, set it to NULL. */
9230 if (extra_string != NULL && *extra_string == '\0')
9231 extra_string = NULL;
9232
a70b8144 9233 try
b78a6381 9234 {
f00aae0f 9235 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9236 }
230d2906 9237 catch (const gdb_exception_error &e)
0101ce28 9238 {
492d29ea
PA
9239 /* If caller is interested in rc value from parse, set
9240 value. */
9241 if (e.error == NOT_FOUND_ERROR)
0101ce28 9242 {
05ff989b
AC
9243 /* If pending breakpoint support is turned off, throw
9244 error. */
fa8d40ab
JJ
9245
9246 if (pending_break_support == AUTO_BOOLEAN_FALSE)
eedc3f4f 9247 throw;
723a2275
VP
9248
9249 exception_print (gdb_stderr, e);
fa8d40ab 9250
05ff989b
AC
9251 /* If pending breakpoint support is auto query and the user
9252 selects no, then simply return the error code. */
059fb39f 9253 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9254 && !nquery (_("Make %s pending on future shared library load? "),
9255 bptype_string (type_wanted)))
fd9b8c24 9256 return 0;
fa8d40ab 9257
05ff989b
AC
9258 /* At this point, either the user was queried about setting
9259 a pending breakpoint and selected yes, or pending
9260 breakpoint behavior is on and thus a pending breakpoint
9261 is defaulted on behalf of the user. */
f00aae0f 9262 pending = 1;
0101ce28 9263 }
492d29ea 9264 else
eedc3f4f 9265 throw;
0101ce28 9266 }
492d29ea 9267
6c5b2ebe 9268 if (!pending && canonical.lsals.empty ())
492d29ea 9269 return 0;
c3f6f71d 9270
c3f6f71d
JM
9271 /* Resolve all line numbers to PC's and verify that the addresses
9272 are ok for the target. */
0101ce28 9273 if (!pending)
f8eba3c6 9274 {
6c5b2ebe
PA
9275 for (auto &lsal : canonical.lsals)
9276 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9277 }
c3f6f71d 9278
7a697b8d 9279 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9280 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9281 {
6c5b2ebe
PA
9282 for (const auto &lsal : canonical.lsals)
9283 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9284 }
7a697b8d 9285
c3f6f71d
JM
9286 /* Verify that condition can be parsed, before setting any
9287 breakpoints. Allocate a separate condition expression for each
4a64f543 9288 breakpoint. */
0101ce28 9289 if (!pending)
c3f6f71d 9290 {
e1e01040
PA
9291 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9292 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9293
f00aae0f 9294 if (parse_extra)
72b2ff0e 9295 {
0878d0fa 9296 char *rest;
e1e01040 9297 char *cond;
52d361e1 9298
6c5b2ebe 9299 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9300
0878d0fa
YQ
9301 /* Here we only parse 'arg' to separate condition
9302 from thread number, so parsing in context of first
9303 sal is OK. When setting the breakpoint we'll
9304 re-parse it in context of each sal. */
9305
6c5b2ebe 9306 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9307 &cond, &thread, &task, &rest);
9308 cond_string_copy.reset (cond);
9309 extra_string_copy.reset (rest);
72b2ff0e 9310 }
2f069f6f 9311 else
72b2ff0e 9312 {
f00aae0f
KS
9313 if (type_wanted != bp_dprintf
9314 && extra_string != NULL && *extra_string != '\0')
9315 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9316
9317 /* Create a private copy of condition string. */
9318 if (cond_string)
e1e01040 9319 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9320 /* Create a private copy of any extra string. */
9321 if (extra_string)
e1e01040 9322 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9323 }
0fb4aa4b 9324
52d361e1 9325 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9326 std::move (cond_string_copy),
9327 std::move (extra_string_copy),
9328 type_wanted,
d9b3f62e
PA
9329 tempflag ? disp_del : disp_donttouch,
9330 thread, task, ignore_count, ops,
44f238bb 9331 from_tty, enabled, internal, flags);
c906108c 9332 }
0101ce28
JJ
9333 else
9334 {
a5e364af 9335 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9336
a5e364af 9337 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9338 b->location = copy_event_location (location);
bfccc43c 9339
f00aae0f
KS
9340 if (parse_extra)
9341 b->cond_string = NULL;
e12c7713
MK
9342 else
9343 {
9344 /* Create a private copy of condition string. */
e1e01040 9345 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9346 b->thread = thread;
e12c7713 9347 }
f00aae0f
KS
9348
9349 /* Create a private copy of any extra string. */
e1e01040 9350 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9351 b->ignore_count = ignore_count;
0101ce28 9352 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9353 b->condition_not_parsed = 1;
41447f92 9354 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9355 if ((type_wanted != bp_breakpoint
9356 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9357 b->pspace = current_program_space;
8bea4e01 9358
b270e6f9 9359 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9360 }
9361
6c5b2ebe 9362 if (canonical.lsals.size () > 1)
95a42b64 9363 {
3e43a32a
MS
9364 warning (_("Multiple breakpoints were set.\nUse the "
9365 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9366 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9367 }
9368
44702360 9369 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9370
9371 return 1;
c3f6f71d 9372}
c906108c 9373
348d480f 9374/* Set a breakpoint.
72b2ff0e
VP
9375 ARG is a string describing breakpoint address,
9376 condition, and thread.
9377 FLAG specifies if a breakpoint is hardware on,
9378 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9379 and BP_TEMPFLAG. */
348d480f 9380
98deb0da 9381static void
f2fc3015 9382break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9383{
72b2ff0e 9384 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9385 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9386 ? bp_hardware_breakpoint
9387 : bp_breakpoint);
55aa24fb 9388 struct breakpoint_ops *ops;
f00aae0f 9389
ffc2605c 9390 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9391
9392 /* Matching breakpoints on probes. */
5b56227b 9393 if (location != NULL
ffc2605c 9394 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9395 ops = &bkpt_probe_breakpoint_ops;
9396 else
9397 ops = &bkpt_breakpoint_ops;
c3f6f71d 9398
8cdf0e15 9399 create_breakpoint (get_current_arch (),
ffc2605c 9400 location.get (),
f00aae0f 9401 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9402 tempflag, type_wanted,
8cdf0e15
VP
9403 0 /* Ignore count */,
9404 pending_break_support,
55aa24fb 9405 ops,
8cdf0e15 9406 from_tty,
84f4c1fe 9407 1 /* enabled */,
44f238bb
PA
9408 0 /* internal */,
9409 0);
c906108c
SS
9410}
9411
c906108c
SS
9412/* Helper function for break_command_1 and disassemble_command. */
9413
9414void
fba45db2 9415resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9416{
9417 CORE_ADDR pc;
9418
9419 if (sal->pc == 0 && sal->symtab != NULL)
9420 {
9421 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9422 error (_("No line %d in file \"%s\"."),
05cba821 9423 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9424 sal->pc = pc;
6a048695 9425
4a64f543
MS
9426 /* If this SAL corresponds to a breakpoint inserted using a line
9427 number, then skip the function prologue if necessary. */
6a048695 9428 if (sal->explicit_line)
059acae7 9429 skip_prologue_sal (sal);
c906108c
SS
9430 }
9431
9432 if (sal->section == 0 && sal->symtab != NULL)
9433 {
346d1dfe 9434 const struct blockvector *bv;
3977b71f 9435 const struct block *b;
c5aa993b 9436 struct symbol *sym;
c906108c 9437
43f3e411
DE
9438 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9439 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9440 if (bv != NULL)
9441 {
7f0df278 9442 sym = block_linkage_function (b);
c906108c
SS
9443 if (sym != NULL)
9444 {
eb822aa6
DE
9445 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9446 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9447 sym);
c906108c
SS
9448 }
9449 else
9450 {
4a64f543
MS
9451 /* It really is worthwhile to have the section, so we'll
9452 just have to look harder. This case can be executed
9453 if we have line numbers but no functions (as can
9454 happen in assembly source). */
c906108c 9455
5ed8105e 9456 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9457 switch_to_program_space_and_thread (sal->pspace);
c906108c 9458
5ed8105e 9459 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9460 if (msym.minsym)
efd66ac6 9461 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9462 }
9463 }
9464 }
9465}
9466
9467void
0b39b52e 9468break_command (const char *arg, int from_tty)
c906108c 9469{
db107f19 9470 break_command_1 (arg, 0, from_tty);
c906108c
SS
9471}
9472
c906108c 9473void
0b39b52e 9474tbreak_command (const char *arg, int from_tty)
c906108c 9475{
db107f19 9476 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9477}
9478
c906108c 9479static void
0b39b52e 9480hbreak_command (const char *arg, int from_tty)
c906108c 9481{
db107f19 9482 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9483}
9484
9485static void
0b39b52e 9486thbreak_command (const char *arg, int from_tty)
c906108c 9487{
db107f19 9488 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9489}
9490
9491static void
ee7ddd71 9492stop_command (const char *arg, int from_tty)
c906108c 9493{
a3f17187 9494 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9495Usage: stop in <function | address>\n\
a3f17187 9496 stop at <line>\n"));
c906108c
SS
9497}
9498
9499static void
4495129a 9500stopin_command (const char *arg, int from_tty)
c906108c
SS
9501{
9502 int badInput = 0;
9503
c5aa993b 9504 if (arg == (char *) NULL)
c906108c
SS
9505 badInput = 1;
9506 else if (*arg != '*')
9507 {
4495129a 9508 const char *argptr = arg;
c906108c
SS
9509 int hasColon = 0;
9510
4a64f543 9511 /* Look for a ':'. If this is a line number specification, then
53a5351d 9512 say it is bad, otherwise, it should be an address or
4a64f543 9513 function/method name. */
c906108c 9514 while (*argptr && !hasColon)
c5aa993b
JM
9515 {
9516 hasColon = (*argptr == ':');
9517 argptr++;
9518 }
c906108c
SS
9519
9520 if (hasColon)
c5aa993b 9521 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9522 else
c5aa993b 9523 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9524 }
9525
9526 if (badInput)
a3f17187 9527 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9528 else
db107f19 9529 break_command_1 (arg, 0, from_tty);
c906108c
SS
9530}
9531
9532static void
4495129a 9533stopat_command (const char *arg, int from_tty)
c906108c
SS
9534{
9535 int badInput = 0;
9536
c5aa993b 9537 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9538 badInput = 1;
9539 else
9540 {
4495129a 9541 const char *argptr = arg;
c906108c
SS
9542 int hasColon = 0;
9543
4a64f543
MS
9544 /* Look for a ':'. If there is a '::' then get out, otherwise
9545 it is probably a line number. */
c906108c 9546 while (*argptr && !hasColon)
c5aa993b
JM
9547 {
9548 hasColon = (*argptr == ':');
9549 argptr++;
9550 }
c906108c
SS
9551
9552 if (hasColon)
c5aa993b 9553 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9554 else
c5aa993b 9555 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9556 }
9557
9558 if (badInput)
65e65158 9559 printf_filtered (_("Usage: stop at LINE\n"));
c906108c 9560 else
db107f19 9561 break_command_1 (arg, 0, from_tty);
c906108c
SS
9562}
9563
e7e0cddf
SS
9564/* The dynamic printf command is mostly like a regular breakpoint, but
9565 with a prewired command list consisting of a single output command,
9566 built from extra arguments supplied on the dprintf command
9567 line. */
9568
da821c7b 9569static void
0b39b52e 9570dprintf_command (const char *arg, int from_tty)
e7e0cddf 9571{
ffc2605c 9572 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9573
9574 /* If non-NULL, ARG should have been advanced past the location;
9575 the next character must be ','. */
9576 if (arg != NULL)
9577 {
9578 if (arg[0] != ',' || arg[1] == '\0')
9579 error (_("Format string required"));
9580 else
9581 {
9582 /* Skip the comma. */
9583 ++arg;
9584 }
9585 }
9586
e7e0cddf 9587 create_breakpoint (get_current_arch (),
ffc2605c 9588 location.get (),
f00aae0f 9589 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9590 0, bp_dprintf,
9591 0 /* Ignore count */,
9592 pending_break_support,
9593 &dprintf_breakpoint_ops,
9594 from_tty,
9595 1 /* enabled */,
9596 0 /* internal */,
9597 0);
9598}
9599
d3ce09f5 9600static void
0b39b52e 9601agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9602{
9603 error (_("May only run agent-printf on the target"));
9604}
9605
f1310107
TJB
9606/* Implement the "breakpoint_hit" breakpoint_ops method for
9607 ranged breakpoints. */
9608
9609static int
9610breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9611 const address_space *aspace,
09ac7c10
TT
9612 CORE_ADDR bp_addr,
9613 const struct target_waitstatus *ws)
f1310107 9614{
09ac7c10 9615 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9616 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9617 return 0;
9618
f1310107
TJB
9619 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9620 bl->length, aspace, bp_addr);
9621}
9622
9623/* Implement the "resources_needed" breakpoint_ops method for
9624 ranged breakpoints. */
9625
9626static int
9627resources_needed_ranged_breakpoint (const struct bp_location *bl)
9628{
9629 return target_ranged_break_num_registers ();
9630}
9631
9632/* Implement the "print_it" breakpoint_ops method for
9633 ranged breakpoints. */
9634
9635static enum print_stop_action
348d480f 9636print_it_ranged_breakpoint (bpstat bs)
f1310107 9637{
348d480f 9638 struct breakpoint *b = bs->breakpoint_at;
f1310107 9639 struct bp_location *bl = b->loc;
79a45e25 9640 struct ui_out *uiout = current_uiout;
f1310107
TJB
9641
9642 gdb_assert (b->type == bp_hardware_breakpoint);
9643
9644 /* Ranged breakpoints have only one location. */
9645 gdb_assert (bl && bl->next == NULL);
9646
9647 annotate_breakpoint (b->number);
f303dbd6
PA
9648
9649 maybe_print_thread_hit_breakpoint (uiout);
9650
f1310107 9651 if (b->disposition == disp_del)
112e8700 9652 uiout->text ("Temporary ranged breakpoint ");
f1310107 9653 else
112e8700
SM
9654 uiout->text ("Ranged breakpoint ");
9655 if (uiout->is_mi_like_p ())
f1310107 9656 {
112e8700 9657 uiout->field_string ("reason",
f1310107 9658 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9659 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9660 }
112e8700
SM
9661 uiout->field_int ("bkptno", b->number);
9662 uiout->text (", ");
f1310107
TJB
9663
9664 return PRINT_SRC_AND_LOC;
9665}
9666
9667/* Implement the "print_one" breakpoint_ops method for
9668 ranged breakpoints. */
9669
9670static void
9671print_one_ranged_breakpoint (struct breakpoint *b,
9672 struct bp_location **last_loc)
9673{
9674 struct bp_location *bl = b->loc;
9675 struct value_print_options opts;
79a45e25 9676 struct ui_out *uiout = current_uiout;
f1310107
TJB
9677
9678 /* Ranged breakpoints have only one location. */
9679 gdb_assert (bl && bl->next == NULL);
9680
9681 get_user_print_options (&opts);
9682
9683 if (opts.addressprint)
9684 /* We don't print the address range here, it will be printed later
9685 by print_one_detail_ranged_breakpoint. */
112e8700 9686 uiout->field_skip ("addr");
f1310107
TJB
9687 annotate_field (5);
9688 print_breakpoint_location (b, bl);
9689 *last_loc = bl;
9690}
9691
9692/* Implement the "print_one_detail" breakpoint_ops method for
9693 ranged breakpoints. */
9694
9695static void
9696print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9697 struct ui_out *uiout)
9698{
9699 CORE_ADDR address_start, address_end;
9700 struct bp_location *bl = b->loc;
d7e74731 9701 string_file stb;
f1310107
TJB
9702
9703 gdb_assert (bl);
9704
9705 address_start = bl->address;
9706 address_end = address_start + bl->length - 1;
9707
112e8700 9708 uiout->text ("\taddress range: ");
d7e74731
PA
9709 stb.printf ("[%s, %s]",
9710 print_core_address (bl->gdbarch, address_start),
9711 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9712 uiout->field_stream ("addr", stb);
9713 uiout->text ("\n");
f1310107
TJB
9714}
9715
9716/* Implement the "print_mention" breakpoint_ops method for
9717 ranged breakpoints. */
9718
9719static void
9720print_mention_ranged_breakpoint (struct breakpoint *b)
9721{
9722 struct bp_location *bl = b->loc;
79a45e25 9723 struct ui_out *uiout = current_uiout;
f1310107
TJB
9724
9725 gdb_assert (bl);
9726 gdb_assert (b->type == bp_hardware_breakpoint);
9727
2d33446d
TT
9728 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9729 b->number, paddress (bl->gdbarch, bl->address),
9730 paddress (bl->gdbarch, bl->address + bl->length - 1));
f1310107
TJB
9731}
9732
9733/* Implement the "print_recreate" breakpoint_ops method for
9734 ranged breakpoints. */
9735
9736static void
9737print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9738{
f00aae0f 9739 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9740 event_location_to_string (b->location.get ()),
9741 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9742 print_recreate_thread (b, fp);
f1310107
TJB
9743}
9744
9745/* The breakpoint_ops structure to be used in ranged breakpoints. */
9746
2060206e 9747static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9748
9749/* Find the address where the end of the breakpoint range should be
9750 placed, given the SAL of the end of the range. This is so that if
9751 the user provides a line number, the end of the range is set to the
9752 last instruction of the given line. */
9753
9754static CORE_ADDR
9755find_breakpoint_range_end (struct symtab_and_line sal)
9756{
9757 CORE_ADDR end;
9758
9759 /* If the user provided a PC value, use it. Otherwise,
9760 find the address of the end of the given location. */
9761 if (sal.explicit_pc)
9762 end = sal.pc;
9763 else
9764 {
9765 int ret;
9766 CORE_ADDR start;
9767
9768 ret = find_line_pc_range (sal, &start, &end);
9769 if (!ret)
9770 error (_("Could not find location of the end of the range."));
9771
9772 /* find_line_pc_range returns the start of the next line. */
9773 end--;
9774 }
9775
9776 return end;
9777}
9778
9779/* Implement the "break-range" CLI command. */
9780
9781static void
0b39b52e 9782break_range_command (const char *arg, int from_tty)
f1310107 9783{
f2fc3015 9784 const char *arg_start;
f1310107
TJB
9785 struct linespec_result canonical_start, canonical_end;
9786 int bp_count, can_use_bp, length;
9787 CORE_ADDR end;
9788 struct breakpoint *b;
f1310107
TJB
9789
9790 /* We don't support software ranged breakpoints. */
9791 if (target_ranged_break_num_registers () < 0)
9792 error (_("This target does not support hardware ranged breakpoints."));
9793
9794 bp_count = hw_breakpoint_used_count ();
9795 bp_count += target_ranged_break_num_registers ();
9796 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9797 bp_count, 0);
9798 if (can_use_bp < 0)
9799 error (_("Hardware breakpoints used exceeds limit."));
9800
f8eba3c6 9801 arg = skip_spaces (arg);
f1310107
TJB
9802 if (arg == NULL || arg[0] == '\0')
9803 error(_("No address range specified."));
9804
f8eba3c6 9805 arg_start = arg;
ffc2605c
TT
9806 event_location_up start_location = string_to_event_location (&arg,
9807 current_language);
9808 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9809
9810 if (arg[0] != ',')
9811 error (_("Too few arguments."));
6c5b2ebe 9812 else if (canonical_start.lsals.empty ())
f1310107 9813 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9814
6c5b2ebe 9815 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9816
6c5b2ebe
PA
9817 if (canonical_start.lsals.size () > 1
9818 || lsal_start.sals.size () != 1)
f1310107
TJB
9819 error (_("Cannot create a ranged breakpoint with multiple locations."));
9820
6c5b2ebe 9821 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9822 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9823
9824 arg++; /* Skip the comma. */
f8eba3c6 9825 arg = skip_spaces (arg);
f1310107
TJB
9826
9827 /* Parse the end location. */
9828
f1310107
TJB
9829 arg_start = arg;
9830
f8eba3c6 9831 /* We call decode_line_full directly here instead of using
f1310107
TJB
9832 parse_breakpoint_sals because we need to specify the start location's
9833 symtab and line as the default symtab and line for the end of the
9834 range. This makes it possible to have ranges like "foo.c:27, +14",
9835 where +14 means 14 lines from the start location. */
ffc2605c
TT
9836 event_location_up end_location = string_to_event_location (&arg,
9837 current_language);
9838 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9839 sal_start.symtab, sal_start.line,
9840 &canonical_end, NULL, NULL);
9841
6c5b2ebe 9842 if (canonical_end.lsals.empty ())
f1310107 9843 error (_("Could not find location of the end of the range."));
f8eba3c6 9844
6c5b2ebe
PA
9845 const linespec_sals &lsal_end = canonical_end.lsals[0];
9846 if (canonical_end.lsals.size () > 1
9847 || lsal_end.sals.size () != 1)
f1310107
TJB
9848 error (_("Cannot create a ranged breakpoint with multiple locations."));
9849
6c5b2ebe 9850 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9851
9852 end = find_breakpoint_range_end (sal_end);
9853 if (sal_start.pc > end)
177b42fe 9854 error (_("Invalid address range, end precedes start."));
f1310107
TJB
9855
9856 length = end - sal_start.pc + 1;
9857 if (length < 0)
9858 /* Length overflowed. */
9859 error (_("Address range too large."));
9860 else if (length == 1)
9861 {
9862 /* This range is simple enough to be handled by
9863 the `hbreak' command. */
81b1e71c 9864 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
9865
9866 return;
9867 }
9868
9869 /* Now set up the breakpoint. */
9870 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 9871 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
9872 set_breakpoint_count (breakpoint_count + 1);
9873 b->number = breakpoint_count;
9874 b->disposition = disp_donttouch;
d28cd78a
TT
9875 b->location = std::move (start_location);
9876 b->location_range_end = std::move (end_location);
f1310107
TJB
9877 b->loc->length = length;
9878
f1310107 9879 mention (b);
76727919 9880 gdb::observers::breakpoint_created.notify (b);
44702360 9881 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
9882}
9883
4a64f543
MS
9884/* Return non-zero if EXP is verified as constant. Returned zero
9885 means EXP is variable. Also the constant detection may fail for
9886 some constant expressions and in such case still falsely return
9887 zero. */
2e6e3d9c 9888
65d79d4b
SDJ
9889static int
9890watchpoint_exp_is_const (const struct expression *exp)
9891{
9892 int i = exp->nelts;
9893
9894 while (i > 0)
9895 {
9896 int oplenp, argsp;
9897
9898 /* We are only interested in the descriptor of each element. */
9899 operator_length (exp, i, &oplenp, &argsp);
9900 i -= oplenp;
9901
9902 switch (exp->elts[i].opcode)
9903 {
9904 case BINOP_ADD:
9905 case BINOP_SUB:
9906 case BINOP_MUL:
9907 case BINOP_DIV:
9908 case BINOP_REM:
9909 case BINOP_MOD:
9910 case BINOP_LSH:
9911 case BINOP_RSH:
9912 case BINOP_LOGICAL_AND:
9913 case BINOP_LOGICAL_OR:
9914 case BINOP_BITWISE_AND:
9915 case BINOP_BITWISE_IOR:
9916 case BINOP_BITWISE_XOR:
9917 case BINOP_EQUAL:
9918 case BINOP_NOTEQUAL:
9919 case BINOP_LESS:
9920 case BINOP_GTR:
9921 case BINOP_LEQ:
9922 case BINOP_GEQ:
9923 case BINOP_REPEAT:
9924 case BINOP_COMMA:
9925 case BINOP_EXP:
9926 case BINOP_MIN:
9927 case BINOP_MAX:
9928 case BINOP_INTDIV:
9929 case BINOP_CONCAT:
65d79d4b
SDJ
9930 case TERNOP_COND:
9931 case TERNOP_SLICE:
65d79d4b
SDJ
9932
9933 case OP_LONG:
edd079d9 9934 case OP_FLOAT:
65d79d4b
SDJ
9935 case OP_LAST:
9936 case OP_COMPLEX:
9937 case OP_STRING:
65d79d4b
SDJ
9938 case OP_ARRAY:
9939 case OP_TYPE:
608b4967
TT
9940 case OP_TYPEOF:
9941 case OP_DECLTYPE:
6e72ca20 9942 case OP_TYPEID:
65d79d4b
SDJ
9943 case OP_NAME:
9944 case OP_OBJC_NSSTRING:
9945
9946 case UNOP_NEG:
9947 case UNOP_LOGICAL_NOT:
9948 case UNOP_COMPLEMENT:
9949 case UNOP_ADDR:
9950 case UNOP_HIGH:
aeaa2474 9951 case UNOP_CAST:
9eaf6705
TT
9952
9953 case UNOP_CAST_TYPE:
9954 case UNOP_REINTERPRET_CAST:
9955 case UNOP_DYNAMIC_CAST:
4a64f543
MS
9956 /* Unary, binary and ternary operators: We have to check
9957 their operands. If they are constant, then so is the
9958 result of that operation. For instance, if A and B are
9959 determined to be constants, then so is "A + B".
9960
9961 UNOP_IND is one exception to the rule above, because the
9962 value of *ADDR is not necessarily a constant, even when
9963 ADDR is. */
65d79d4b
SDJ
9964 break;
9965
9966 case OP_VAR_VALUE:
9967 /* Check whether the associated symbol is a constant.
4a64f543 9968
65d79d4b 9969 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
9970 possible that a buggy compiler could mark a variable as
9971 constant even when it is not, and TYPE_CONST would return
9972 true in this case, while SYMBOL_CLASS wouldn't.
9973
9974 We also have to check for function symbols because they
9975 are always constant. */
65d79d4b
SDJ
9976 {
9977 struct symbol *s = exp->elts[i + 2].symbol;
9978
9979 if (SYMBOL_CLASS (s) != LOC_BLOCK
9980 && SYMBOL_CLASS (s) != LOC_CONST
9981 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9982 return 0;
9983 break;
9984 }
9985
9986 /* The default action is to return 0 because we are using
9987 the optimistic approach here: If we don't know something,
9988 then it is not a constant. */
9989 default:
9990 return 0;
9991 }
9992 }
9993
9994 return 1;
9995}
9996
c1fc2657 9997/* Watchpoint destructor. */
3a5c3e22 9998
c1fc2657 9999watchpoint::~watchpoint ()
3a5c3e22 10000{
c1fc2657
SM
10001 xfree (this->exp_string);
10002 xfree (this->exp_string_reparse);
3a5c3e22
PA
10003}
10004
348d480f
PA
10005/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10006
10007static void
10008re_set_watchpoint (struct breakpoint *b)
10009{
3a5c3e22
PA
10010 struct watchpoint *w = (struct watchpoint *) b;
10011
348d480f
PA
10012 /* Watchpoint can be either on expression using entirely global
10013 variables, or it can be on local variables.
10014
10015 Watchpoints of the first kind are never auto-deleted, and even
10016 persist across program restarts. Since they can use variables
10017 from shared libraries, we need to reparse expression as libraries
10018 are loaded and unloaded.
10019
10020 Watchpoints on local variables can also change meaning as result
10021 of solib event. For example, if a watchpoint uses both a local
10022 and a global variables in expression, it's a local watchpoint,
10023 but unloading of a shared library will make the expression
10024 invalid. This is not a very common use case, but we still
10025 re-evaluate expression, to avoid surprises to the user.
10026
10027 Note that for local watchpoints, we re-evaluate it only if
10028 watchpoints frame id is still valid. If it's not, it means the
10029 watchpoint is out of scope and will be deleted soon. In fact,
10030 I'm not sure we'll ever be called in this case.
10031
10032 If a local watchpoint's frame id is still valid, then
3a5c3e22 10033 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10034
3a5c3e22
PA
10035 Don't do anything about disabled watchpoints, since they will be
10036 reevaluated again when enabled. */
10037 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10038}
10039
77b06cd7
TJB
10040/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10041
10042static int
10043insert_watchpoint (struct bp_location *bl)
10044{
3a5c3e22
PA
10045 struct watchpoint *w = (struct watchpoint *) bl->owner;
10046 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10047
10048 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10049 w->cond_exp.get ());
77b06cd7
TJB
10050}
10051
10052/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10053
10054static int
73971819 10055remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10056{
3a5c3e22
PA
10057 struct watchpoint *w = (struct watchpoint *) bl->owner;
10058 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10059
10060 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10061 w->cond_exp.get ());
e09342b5
TJB
10062}
10063
e09342b5 10064static int
348d480f 10065breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10066 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10067 const struct target_waitstatus *ws)
e09342b5 10068{
348d480f 10069 struct breakpoint *b = bl->owner;
3a5c3e22 10070 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10071
348d480f
PA
10072 /* Continuable hardware watchpoints are treated as non-existent if the
10073 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10074 some data address). Otherwise gdb won't stop on a break instruction
10075 in the code (not from a breakpoint) when a hardware watchpoint has
10076 been defined. Also skip watchpoints which we know did not trigger
10077 (did not match the data address). */
10078 if (is_hardware_watchpoint (b)
3a5c3e22 10079 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10080 return 0;
9c06b0b4 10081
348d480f 10082 return 1;
9c06b0b4
TJB
10083}
10084
348d480f
PA
10085static void
10086check_status_watchpoint (bpstat bs)
9c06b0b4 10087{
348d480f 10088 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10089
348d480f 10090 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10091}
10092
10093/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10094 hardware watchpoints. */
9c06b0b4
TJB
10095
10096static int
348d480f 10097resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10098{
3a5c3e22
PA
10099 struct watchpoint *w = (struct watchpoint *) bl->owner;
10100 int length = w->exact? 1 : bl->length;
348d480f
PA
10101
10102 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10103}
10104
10105/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10106 hardware watchpoints. */
9c06b0b4
TJB
10107
10108static int
348d480f 10109works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10110{
efa80663
PA
10111 /* Read and access watchpoints only work with hardware support. */
10112 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10113}
10114
9c06b0b4 10115static enum print_stop_action
348d480f 10116print_it_watchpoint (bpstat bs)
9c06b0b4 10117{
348d480f 10118 struct breakpoint *b;
348d480f 10119 enum print_stop_action result;
3a5c3e22 10120 struct watchpoint *w;
79a45e25 10121 struct ui_out *uiout = current_uiout;
348d480f
PA
10122
10123 gdb_assert (bs->bp_location_at != NULL);
10124
348d480f 10125 b = bs->breakpoint_at;
3a5c3e22 10126 w = (struct watchpoint *) b;
348d480f 10127
f303dbd6
PA
10128 annotate_watchpoint (b->number);
10129 maybe_print_thread_hit_breakpoint (uiout);
10130
d7e74731
PA
10131 string_file stb;
10132
76f9c9cf 10133 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10134 switch (b->type)
10135 {
348d480f 10136 case bp_watchpoint:
9c06b0b4 10137 case bp_hardware_watchpoint:
112e8700
SM
10138 if (uiout->is_mi_like_p ())
10139 uiout->field_string
10140 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10141 mention (b);
76f9c9cf 10142 tuple_emitter.emplace (uiout, "value");
112e8700 10143 uiout->text ("\nOld value = ");
850645cf 10144 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10145 uiout->field_stream ("old", stb);
10146 uiout->text ("\nNew value = ");
850645cf 10147 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10148 uiout->field_stream ("new", stb);
10149 uiout->text ("\n");
348d480f
PA
10150 /* More than one watchpoint may have been triggered. */
10151 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10152 break;
10153
10154 case bp_read_watchpoint:
112e8700
SM
10155 if (uiout->is_mi_like_p ())
10156 uiout->field_string
10157 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10158 mention (b);
76f9c9cf 10159 tuple_emitter.emplace (uiout, "value");
112e8700 10160 uiout->text ("\nValue = ");
850645cf 10161 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10162 uiout->field_stream ("value", stb);
10163 uiout->text ("\n");
348d480f 10164 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10165 break;
10166
10167 case bp_access_watchpoint:
348d480f
PA
10168 if (bs->old_val != NULL)
10169 {
112e8700
SM
10170 if (uiout->is_mi_like_p ())
10171 uiout->field_string
10172 ("reason",
348d480f
PA
10173 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10174 mention (b);
76f9c9cf 10175 tuple_emitter.emplace (uiout, "value");
112e8700 10176 uiout->text ("\nOld value = ");
850645cf 10177 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10178 uiout->field_stream ("old", stb);
10179 uiout->text ("\nNew value = ");
348d480f
PA
10180 }
10181 else
10182 {
10183 mention (b);
112e8700
SM
10184 if (uiout->is_mi_like_p ())
10185 uiout->field_string
10186 ("reason",
348d480f 10187 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10188 tuple_emitter.emplace (uiout, "value");
112e8700 10189 uiout->text ("\nValue = ");
348d480f 10190 }
850645cf 10191 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10192 uiout->field_stream ("new", stb);
10193 uiout->text ("\n");
348d480f 10194 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10195 break;
10196 default:
348d480f 10197 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10198 }
10199
348d480f
PA
10200 return result;
10201}
10202
10203/* Implement the "print_mention" breakpoint_ops method for hardware
10204 watchpoints. */
10205
10206static void
10207print_mention_watchpoint (struct breakpoint *b)
10208{
3a5c3e22 10209 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10210 struct ui_out *uiout = current_uiout;
46b9c129 10211 const char *tuple_name;
348d480f
PA
10212
10213 switch (b->type)
10214 {
10215 case bp_watchpoint:
112e8700 10216 uiout->text ("Watchpoint ");
46b9c129 10217 tuple_name = "wpt";
348d480f
PA
10218 break;
10219 case bp_hardware_watchpoint:
112e8700 10220 uiout->text ("Hardware watchpoint ");
46b9c129 10221 tuple_name = "wpt";
348d480f
PA
10222 break;
10223 case bp_read_watchpoint:
112e8700 10224 uiout->text ("Hardware read watchpoint ");
46b9c129 10225 tuple_name = "hw-rwpt";
348d480f
PA
10226 break;
10227 case bp_access_watchpoint:
112e8700 10228 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10229 tuple_name = "hw-awpt";
348d480f
PA
10230 break;
10231 default:
10232 internal_error (__FILE__, __LINE__,
10233 _("Invalid hardware watchpoint type."));
10234 }
10235
46b9c129 10236 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10237 uiout->field_int ("number", b->number);
10238 uiout->text (": ");
10239 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10240}
10241
10242/* Implement the "print_recreate" breakpoint_ops method for
10243 watchpoints. */
10244
10245static void
10246print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10247{
3a5c3e22
PA
10248 struct watchpoint *w = (struct watchpoint *) b;
10249
348d480f
PA
10250 switch (b->type)
10251 {
10252 case bp_watchpoint:
10253 case bp_hardware_watchpoint:
10254 fprintf_unfiltered (fp, "watch");
10255 break;
10256 case bp_read_watchpoint:
10257 fprintf_unfiltered (fp, "rwatch");
10258 break;
10259 case bp_access_watchpoint:
10260 fprintf_unfiltered (fp, "awatch");
10261 break;
10262 default:
10263 internal_error (__FILE__, __LINE__,
10264 _("Invalid watchpoint type."));
10265 }
10266
3a5c3e22 10267 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10268 print_recreate_thread (b, fp);
348d480f
PA
10269}
10270
427cd150
TT
10271/* Implement the "explains_signal" breakpoint_ops method for
10272 watchpoints. */
10273
47591c29 10274static int
427cd150
TT
10275explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10276{
10277 /* A software watchpoint cannot cause a signal other than
10278 GDB_SIGNAL_TRAP. */
10279 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10280 return 0;
427cd150 10281
47591c29 10282 return 1;
427cd150
TT
10283}
10284
348d480f
PA
10285/* The breakpoint_ops structure to be used in hardware watchpoints. */
10286
2060206e 10287static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10288
10289/* Implement the "insert" breakpoint_ops method for
10290 masked hardware watchpoints. */
10291
10292static int
10293insert_masked_watchpoint (struct bp_location *bl)
10294{
3a5c3e22
PA
10295 struct watchpoint *w = (struct watchpoint *) bl->owner;
10296
10297 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10298 bl->watchpoint_type);
10299}
10300
10301/* Implement the "remove" breakpoint_ops method for
10302 masked hardware watchpoints. */
10303
10304static int
73971819 10305remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10306{
3a5c3e22
PA
10307 struct watchpoint *w = (struct watchpoint *) bl->owner;
10308
10309 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10310 bl->watchpoint_type);
10311}
10312
10313/* Implement the "resources_needed" breakpoint_ops method for
10314 masked hardware watchpoints. */
10315
10316static int
10317resources_needed_masked_watchpoint (const struct bp_location *bl)
10318{
3a5c3e22
PA
10319 struct watchpoint *w = (struct watchpoint *) bl->owner;
10320
10321 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10322}
10323
10324/* Implement the "works_in_software_mode" breakpoint_ops method for
10325 masked hardware watchpoints. */
10326
10327static int
10328works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10329{
10330 return 0;
10331}
10332
10333/* Implement the "print_it" breakpoint_ops method for
10334 masked hardware watchpoints. */
10335
10336static enum print_stop_action
10337print_it_masked_watchpoint (bpstat bs)
10338{
10339 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10340 struct ui_out *uiout = current_uiout;
348d480f
PA
10341
10342 /* Masked watchpoints have only one location. */
10343 gdb_assert (b->loc && b->loc->next == NULL);
10344
f303dbd6
PA
10345 annotate_watchpoint (b->number);
10346 maybe_print_thread_hit_breakpoint (uiout);
10347
348d480f
PA
10348 switch (b->type)
10349 {
10350 case bp_hardware_watchpoint:
112e8700
SM
10351 if (uiout->is_mi_like_p ())
10352 uiout->field_string
10353 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10354 break;
10355
10356 case bp_read_watchpoint:
112e8700
SM
10357 if (uiout->is_mi_like_p ())
10358 uiout->field_string
10359 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10360 break;
10361
10362 case bp_access_watchpoint:
112e8700
SM
10363 if (uiout->is_mi_like_p ())
10364 uiout->field_string
10365 ("reason",
348d480f
PA
10366 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10367 break;
10368 default:
10369 internal_error (__FILE__, __LINE__,
10370 _("Invalid hardware watchpoint type."));
10371 }
10372
10373 mention (b);
112e8700 10374 uiout->text (_("\n\
9c06b0b4
TJB
10375Check the underlying instruction at PC for the memory\n\
10376address and value which triggered this watchpoint.\n"));
112e8700 10377 uiout->text ("\n");
9c06b0b4
TJB
10378
10379 /* More than one watchpoint may have been triggered. */
10380 return PRINT_UNKNOWN;
10381}
10382
10383/* Implement the "print_one_detail" breakpoint_ops method for
10384 masked hardware watchpoints. */
10385
10386static void
10387print_one_detail_masked_watchpoint (const struct breakpoint *b,
10388 struct ui_out *uiout)
10389{
3a5c3e22
PA
10390 struct watchpoint *w = (struct watchpoint *) b;
10391
9c06b0b4
TJB
10392 /* Masked watchpoints have only one location. */
10393 gdb_assert (b->loc && b->loc->next == NULL);
10394
112e8700
SM
10395 uiout->text ("\tmask ");
10396 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10397 uiout->text ("\n");
9c06b0b4
TJB
10398}
10399
10400/* Implement the "print_mention" breakpoint_ops method for
10401 masked hardware watchpoints. */
10402
10403static void
10404print_mention_masked_watchpoint (struct breakpoint *b)
10405{
3a5c3e22 10406 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10407 struct ui_out *uiout = current_uiout;
46b9c129 10408 const char *tuple_name;
9c06b0b4
TJB
10409
10410 switch (b->type)
10411 {
10412 case bp_hardware_watchpoint:
112e8700 10413 uiout->text ("Masked hardware watchpoint ");
46b9c129 10414 tuple_name = "wpt";
9c06b0b4
TJB
10415 break;
10416 case bp_read_watchpoint:
112e8700 10417 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10418 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10419 break;
10420 case bp_access_watchpoint:
112e8700 10421 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10422 tuple_name = "hw-awpt";
9c06b0b4
TJB
10423 break;
10424 default:
10425 internal_error (__FILE__, __LINE__,
10426 _("Invalid hardware watchpoint type."));
10427 }
10428
46b9c129 10429 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10430 uiout->field_int ("number", b->number);
10431 uiout->text (": ");
10432 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10433}
10434
10435/* Implement the "print_recreate" breakpoint_ops method for
10436 masked hardware watchpoints. */
10437
10438static void
10439print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10440{
3a5c3e22 10441 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10442 char tmp[40];
10443
10444 switch (b->type)
10445 {
10446 case bp_hardware_watchpoint:
10447 fprintf_unfiltered (fp, "watch");
10448 break;
10449 case bp_read_watchpoint:
10450 fprintf_unfiltered (fp, "rwatch");
10451 break;
10452 case bp_access_watchpoint:
10453 fprintf_unfiltered (fp, "awatch");
10454 break;
10455 default:
10456 internal_error (__FILE__, __LINE__,
10457 _("Invalid hardware watchpoint type."));
10458 }
10459
3a5c3e22
PA
10460 sprintf_vma (tmp, w->hw_wp_mask);
10461 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10462 print_recreate_thread (b, fp);
9c06b0b4
TJB
10463}
10464
10465/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10466
2060206e 10467static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10468
10469/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10470
10471static int
10472is_masked_watchpoint (const struct breakpoint *b)
10473{
10474 return b->ops == &masked_watchpoint_breakpoint_ops;
10475}
10476
53a5351d
JM
10477/* accessflag: hw_write: watch write,
10478 hw_read: watch read,
10479 hw_access: watch access (read or write) */
c906108c 10480static void
bbc13ae3 10481watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10482 int just_location, int internal)
c906108c 10483{
c1fc2657 10484 struct breakpoint *scope_breakpoint = NULL;
270140bd 10485 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
b926417a 10486 struct value *result;
bb9d5f81 10487 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10488 const char *exp_start = NULL;
10489 const char *exp_end = NULL;
10490 const char *tok, *end_tok;
9c06b0b4 10491 int toklen = -1;
bbc13ae3
KS
10492 const char *cond_start = NULL;
10493 const char *cond_end = NULL;
c906108c 10494 enum bptype bp_type;
37e4754d 10495 int thread = -1;
0cf6dd15 10496 int pc = 0;
9c06b0b4
TJB
10497 /* Flag to indicate whether we are going to use masks for
10498 the hardware watchpoint. */
10499 int use_mask = 0;
10500 CORE_ADDR mask = 0;
c906108c 10501
37e4754d
LM
10502 /* Make sure that we actually have parameters to parse. */
10503 if (arg != NULL && arg[0] != '\0')
10504 {
bbc13ae3
KS
10505 const char *value_start;
10506
10507 exp_end = arg + strlen (arg);
37e4754d 10508
9c06b0b4
TJB
10509 /* Look for "parameter value" pairs at the end
10510 of the arguments string. */
bbc13ae3 10511 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10512 {
10513 /* Skip whitespace at the end of the argument list. */
10514 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10515 tok--;
10516
10517 /* Find the beginning of the last token.
10518 This is the value of the parameter. */
10519 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10520 tok--;
10521 value_start = tok + 1;
10522
10523 /* Skip whitespace. */
10524 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10525 tok--;
10526
10527 end_tok = tok;
10528
10529 /* Find the beginning of the second to last token.
10530 This is the parameter itself. */
10531 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10532 tok--;
10533 tok++;
10534 toklen = end_tok - tok + 1;
10535
61012eef 10536 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10537 {
5d5658a1 10538 struct thread_info *thr;
9c06b0b4
TJB
10539 /* At this point we've found a "thread" token, which means
10540 the user is trying to set a watchpoint that triggers
10541 only in a specific thread. */
5d5658a1 10542 const char *endp;
37e4754d 10543
9c06b0b4
TJB
10544 if (thread != -1)
10545 error(_("You can specify only one thread."));
37e4754d 10546
9c06b0b4 10547 /* Extract the thread ID from the next token. */
5d5658a1 10548 thr = parse_thread_id (value_start, &endp);
37e4754d 10549
5d5658a1 10550 /* Check if the user provided a valid thread ID. */
9c06b0b4 10551 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10552 invalid_thread_id_error (value_start);
9c06b0b4 10553
5d5658a1 10554 thread = thr->global_num;
9c06b0b4 10555 }
61012eef 10556 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10557 {
10558 /* We've found a "mask" token, which means the user wants to
10559 create a hardware watchpoint that is going to have the mask
10560 facility. */
10561 struct value *mask_value, *mark;
37e4754d 10562
9c06b0b4
TJB
10563 if (use_mask)
10564 error(_("You can specify only one mask."));
37e4754d 10565
9c06b0b4 10566 use_mask = just_location = 1;
37e4754d 10567
9c06b0b4
TJB
10568 mark = value_mark ();
10569 mask_value = parse_to_comma_and_eval (&value_start);
10570 mask = value_as_address (mask_value);
10571 value_free_to_mark (mark);
10572 }
10573 else
10574 /* We didn't recognize what we found. We should stop here. */
10575 break;
37e4754d 10576
9c06b0b4
TJB
10577 /* Truncate the string and get rid of the "parameter value" pair before
10578 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10579 exp_end = tok;
9c06b0b4 10580 }
37e4754d 10581 }
bbc13ae3
KS
10582 else
10583 exp_end = arg;
37e4754d 10584
bbc13ae3
KS
10585 /* Parse the rest of the arguments. From here on out, everything
10586 is in terms of a newly allocated string instead of the original
10587 ARG. */
81b1e71c
TT
10588 std::string expression (arg, exp_end - arg);
10589 exp_start = arg = expression.c_str ();
699bd4cf
TT
10590 innermost_block_tracker tracker;
10591 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
c906108c 10592 exp_end = arg;
fa8a61dc
TT
10593 /* Remove trailing whitespace from the expression before saving it.
10594 This makes the eventual display of the expression string a bit
10595 prettier. */
10596 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10597 --exp_end;
10598
65d79d4b 10599 /* Checking if the expression is not constant. */
4d01a485 10600 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10601 {
10602 int len;
10603
10604 len = exp_end - exp_start;
10605 while (len > 0 && isspace (exp_start[len - 1]))
10606 len--;
10607 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10608 }
10609
699bd4cf 10610 exp_valid_block = tracker.block ();
b926417a 10611 struct value *mark = value_mark ();
850645cf
TT
10612 struct value *val_as_value = nullptr;
10613 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10614 just_location);
06a64a0b 10615
850645cf 10616 if (val_as_value != NULL && just_location)
bb9d5f81 10617 {
850645cf
TT
10618 saved_bitpos = value_bitpos (val_as_value);
10619 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10620 }
10621
850645cf 10622 value_ref_ptr val;
06a64a0b
TT
10623 if (just_location)
10624 {
9c06b0b4
TJB
10625 int ret;
10626
06a64a0b 10627 exp_valid_block = NULL;
850645cf 10628 val = release_value (value_addr (result));
06a64a0b 10629 value_free_to_mark (mark);
9c06b0b4
TJB
10630
10631 if (use_mask)
10632 {
850645cf 10633 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10634 mask);
10635 if (ret == -1)
10636 error (_("This target does not support masked watchpoints."));
10637 else if (ret == -2)
10638 error (_("Invalid mask or memory region."));
10639 }
06a64a0b 10640 }
850645cf
TT
10641 else if (val_as_value != NULL)
10642 val = release_value (val_as_value);
c906108c 10643
f1735a53
TT
10644 tok = skip_spaces (arg);
10645 end_tok = skip_to_space (tok);
c906108c
SS
10646
10647 toklen = end_tok - tok;
10648 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10649 {
10650 tok = cond_start = end_tok + 1;
699bd4cf
TT
10651 innermost_block_tracker if_tracker;
10652 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
60e1c644
PA
10653
10654 /* The watchpoint expression may not be local, but the condition
10655 may still be. E.g.: `watch global if local > 0'. */
699bd4cf 10656 cond_exp_valid_block = if_tracker.block ();
60e1c644 10657
c906108c
SS
10658 cond_end = tok;
10659 }
10660 if (*tok)
8a3fe4f8 10661 error (_("Junk at end of command."));
c906108c 10662
441d7c93
PA
10663 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10664
10665 /* Save this because create_internal_breakpoint below invalidates
10666 'wp_frame'. */
10667 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10668
10669 /* If the expression is "local", then set up a "watchpoint scope"
10670 breakpoint at the point where we've left the scope of the watchpoint
10671 expression. Create the scope breakpoint before the watchpoint, so
10672 that we will encounter it first in bpstat_stop_status. */
441d7c93 10673 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10674 {
441d7c93
PA
10675 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10676
10677 if (frame_id_p (caller_frame_id))
edb3359d 10678 {
441d7c93
PA
10679 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10680 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10681
edb3359d 10682 scope_breakpoint
441d7c93 10683 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10684 bp_watchpoint_scope,
10685 &momentary_breakpoint_ops);
d983da9c 10686
441d7c93
PA
10687 /* create_internal_breakpoint could invalidate WP_FRAME. */
10688 wp_frame = NULL;
10689
edb3359d 10690 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10691
edb3359d
DJ
10692 /* Automatically delete the breakpoint when it hits. */
10693 scope_breakpoint->disposition = disp_del;
d983da9c 10694
edb3359d 10695 /* Only break in the proper frame (help with recursion). */
441d7c93 10696 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10697
edb3359d 10698 /* Set the address at which we will stop. */
441d7c93
PA
10699 scope_breakpoint->loc->gdbarch = caller_arch;
10700 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10701 scope_breakpoint->loc->address
a6d9a66e
UW
10702 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10703 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10704 scope_breakpoint->type);
10705 }
d983da9c
DJ
10706 }
10707
e8369a73
AB
10708 /* Now set up the breakpoint. We create all watchpoints as hardware
10709 watchpoints here even if hardware watchpoints are turned off, a call
10710 to update_watchpoint later in this function will cause the type to
10711 drop back to bp_watchpoint (software watchpoint) if required. */
10712
10713 if (accessflag == hw_read)
10714 bp_type = bp_read_watchpoint;
10715 else if (accessflag == hw_access)
10716 bp_type = bp_access_watchpoint;
10717 else
10718 bp_type = bp_hardware_watchpoint;
3a5c3e22 10719
b270e6f9 10720 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10721
348d480f 10722 if (use_mask)
b270e6f9 10723 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10724 &masked_watchpoint_breakpoint_ops);
348d480f 10725 else
b270e6f9 10726 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10727 &watchpoint_breakpoint_ops);
c1fc2657
SM
10728 w->thread = thread;
10729 w->disposition = disp_donttouch;
10730 w->pspace = current_program_space;
b22e99fd 10731 w->exp = std::move (exp);
3a5c3e22
PA
10732 w->exp_valid_block = exp_valid_block;
10733 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10734 if (just_location)
10735 {
850645cf
TT
10736 struct type *t = value_type (val.get ());
10737 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10738
43cc5389
TT
10739 w->exp_string_reparse
10740 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 10741
3a5c3e22 10742 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10743 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10744 }
10745 else
3a5c3e22 10746 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10747
10748 if (use_mask)
10749 {
3a5c3e22 10750 w->hw_wp_mask = mask;
9c06b0b4
TJB
10751 }
10752 else
10753 {
3a5c3e22 10754 w->val = val;
bb9d5f81
PP
10755 w->val_bitpos = saved_bitpos;
10756 w->val_bitsize = saved_bitsize;
3a5c3e22 10757 w->val_valid = 1;
9c06b0b4 10758 }
77b06cd7 10759
c906108c 10760 if (cond_start)
c1fc2657 10761 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10762 else
c1fc2657 10763 w->cond_string = 0;
c5aa993b 10764
441d7c93 10765 if (frame_id_p (watchpoint_frame))
f6bc2008 10766 {
441d7c93 10767 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10768 w->watchpoint_thread = inferior_ptid;
f6bc2008 10769 }
c906108c 10770 else
f6bc2008 10771 {
3a5c3e22
PA
10772 w->watchpoint_frame = null_frame_id;
10773 w->watchpoint_thread = null_ptid;
f6bc2008 10774 }
c906108c 10775
d983da9c 10776 if (scope_breakpoint != NULL)
c906108c 10777 {
d983da9c
DJ
10778 /* The scope breakpoint is related to the watchpoint. We will
10779 need to act on them together. */
c1fc2657 10780 w->related_breakpoint = scope_breakpoint;
b270e6f9 10781 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10782 }
d983da9c 10783
06a64a0b
TT
10784 if (!just_location)
10785 value_free_to_mark (mark);
2d134ed3 10786
b270e6f9
TT
10787 /* Finally update the new watchpoint. This creates the locations
10788 that should be inserted. */
10789 update_watchpoint (w.get (), 1);
a9634178 10790
b270e6f9 10791 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10792}
10793
e09342b5 10794/* Return count of debug registers needed to watch the given expression.
e09342b5 10795 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10796
c906108c 10797static int
a6535de1 10798can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
c906108c
SS
10799{
10800 int found_memory_cnt = 0;
10801
10802 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10803 if (!can_use_hw_watchpoints)
c906108c 10804 return 0;
c5aa993b 10805
a6535de1
TT
10806 gdb_assert (!vals.empty ());
10807 struct value *head = vals[0].get ();
10808
5c44784c
JM
10809 /* Make sure that the value of the expression depends only upon
10810 memory contents, and values computed from them within GDB. If we
10811 find any register references or function calls, we can't use a
10812 hardware watchpoint.
10813
10814 The idea here is that evaluating an expression generates a series
10815 of values, one holding the value of every subexpression. (The
10816 expression a*b+c has five subexpressions: a, b, a*b, c, and
10817 a*b+c.) GDB's values hold almost enough information to establish
10818 the criteria given above --- they identify memory lvalues,
10819 register lvalues, computed values, etcetera. So we can evaluate
10820 the expression, and then scan the chain of values that leaves
10821 behind to decide whether we can detect any possible change to the
10822 expression's final value using only hardware watchpoints.
10823
10824 However, I don't think that the values returned by inferior
10825 function calls are special in any way. So this function may not
10826 notice that an expression involving an inferior function call
10827 can't be watched with hardware watchpoints. FIXME. */
a6535de1 10828 for (const value_ref_ptr &iter : vals)
c906108c 10829 {
a6535de1
TT
10830 struct value *v = iter.get ();
10831
5c44784c 10832 if (VALUE_LVAL (v) == lval_memory)
c906108c 10833 {
8464be76
DJ
10834 if (v != head && value_lazy (v))
10835 /* A lazy memory lvalue in the chain is one that GDB never
10836 needed to fetch; we either just used its address (e.g.,
10837 `a' in `a.b') or we never needed it at all (e.g., `a'
10838 in `a,b'). This doesn't apply to HEAD; if that is
10839 lazy then it was not readable, but watch it anyway. */
5c44784c 10840 ;
53a5351d 10841 else
5c44784c
JM
10842 {
10843 /* Ahh, memory we actually used! Check if we can cover
10844 it with hardware watchpoints. */
df407dfe 10845 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10846
10847 /* We only watch structs and arrays if user asked for it
10848 explicitly, never if they just happen to appear in a
10849 middle of some value chain. */
10850 if (v == head
10851 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10852 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10853 {
42ae5230 10854 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10855 int len;
10856 int num_regs;
10857
a9634178 10858 len = (target_exact_watchpoints
e09342b5
TJB
10859 && is_scalar_type_recursive (vtype))?
10860 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 10861
e09342b5
TJB
10862 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10863 if (!num_regs)
2e70b7b9
MS
10864 return 0;
10865 else
e09342b5 10866 found_memory_cnt += num_regs;
2e70b7b9 10867 }
5c44784c 10868 }
c5aa993b 10869 }
5086187c
AC
10870 else if (VALUE_LVAL (v) != not_lval
10871 && deprecated_value_modifiable (v) == 0)
38b6c3b3 10872 return 0; /* These are values from the history (e.g., $1). */
5086187c 10873 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 10874 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
10875 }
10876
10877 /* The expression itself looks suitable for using a hardware
10878 watchpoint, but give the target machine a chance to reject it. */
10879 return found_memory_cnt;
10880}
10881
8b93c638 10882void
f2fc3015 10883watch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10884{
84f4c1fe 10885 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
10886}
10887
06a64a0b
TT
10888/* A helper function that looks for the "-location" argument and then
10889 calls watch_command_1. */
10890
10891static void
0b39b52e 10892watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b
TT
10893{
10894 int just_location = 0;
10895
10896 if (arg
10897 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10898 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
cbba3ecd 10899 just_location = 1;
06a64a0b 10900
84f4c1fe 10901 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 10902}
8926118c 10903
c5aa993b 10904static void
0b39b52e 10905watch_command (const char *arg, int from_tty)
c906108c 10906{
06a64a0b 10907 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
10908}
10909
8b93c638 10910void
f2fc3015 10911rwatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10912{
84f4c1fe 10913 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 10914}
8926118c 10915
c5aa993b 10916static void
0b39b52e 10917rwatch_command (const char *arg, int from_tty)
c906108c 10918{
06a64a0b 10919 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
10920}
10921
8b93c638 10922void
f2fc3015 10923awatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10924{
84f4c1fe 10925 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 10926}
8926118c 10927
c5aa993b 10928static void
0b39b52e 10929awatch_command (const char *arg, int from_tty)
c906108c 10930{
06a64a0b 10931 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 10932}
c906108c 10933\f
c5aa993b 10934
cfc31633
PA
10935/* Data for the FSM that manages the until(location)/advance commands
10936 in infcmd.c. Here because it uses the mechanisms of
10937 breakpoints. */
c906108c 10938
46e3ed7f 10939struct until_break_fsm : public thread_fsm
bfec99b2 10940{
46e3ed7f 10941 /* The thread that was current when the command was executed. */
cfc31633
PA
10942 int thread;
10943
10944 /* The breakpoint set at the destination location. */
46e3ed7f 10945 breakpoint_up location_breakpoint;
cfc31633
PA
10946
10947 /* Breakpoint set at the return address in the caller frame. May be
10948 NULL. */
46e3ed7f 10949 breakpoint_up caller_breakpoint;
cfc31633 10950
46e3ed7f
TT
10951 until_break_fsm (struct interp *cmd_interp, int thread,
10952 breakpoint_up &&location_breakpoint,
10953 breakpoint_up &&caller_breakpoint)
10954 : thread_fsm (cmd_interp),
10955 thread (thread),
10956 location_breakpoint (std::move (location_breakpoint)),
10957 caller_breakpoint (std::move (caller_breakpoint))
10958 {
10959 }
cfc31633 10960
46e3ed7f
TT
10961 void clean_up (struct thread_info *thread) override;
10962 bool should_stop (struct thread_info *thread) override;
10963 enum async_reply_reason do_async_reply_reason () override;
cfc31633
PA
10964};
10965
cfc31633
PA
10966/* Implementation of the 'should_stop' FSM method for the
10967 until(location)/advance commands. */
10968
46e3ed7f
TT
10969bool
10970until_break_fsm::should_stop (struct thread_info *tp)
cfc31633 10971{
cfc31633 10972 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
46e3ed7f
TT
10973 location_breakpoint.get ()) != NULL
10974 || (caller_breakpoint != NULL
cfc31633 10975 && bpstat_find_breakpoint (tp->control.stop_bpstat,
46e3ed7f
TT
10976 caller_breakpoint.get ()) != NULL))
10977 set_finished ();
cfc31633 10978
46e3ed7f 10979 return true;
cfc31633
PA
10980}
10981
10982/* Implementation of the 'clean_up' FSM method for the
10983 until(location)/advance commands. */
10984
46e3ed7f
TT
10985void
10986until_break_fsm::clean_up (struct thread_info *)
43ff13b4 10987{
cfc31633 10988 /* Clean up our temporary breakpoints. */
46e3ed7f
TT
10989 location_breakpoint.reset ();
10990 caller_breakpoint.reset ();
10991 delete_longjmp_breakpoint (thread);
cfc31633
PA
10992}
10993
10994/* Implementation of the 'async_reply_reason' FSM method for the
10995 until(location)/advance commands. */
10996
46e3ed7f
TT
10997enum async_reply_reason
10998until_break_fsm::do_async_reply_reason ()
cfc31633
PA
10999{
11000 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11001}
11002
c906108c 11003void
f2fc3015 11004until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11005{
8556afb4
PA
11006 struct frame_info *frame;
11007 struct gdbarch *frame_gdbarch;
11008 struct frame_id stack_frame_id;
11009 struct frame_id caller_frame_id;
186c406b
TT
11010 int thread;
11011 struct thread_info *tp;
c906108c 11012
70509625 11013 clear_proceed_status (0);
c906108c
SS
11014
11015 /* Set a breakpoint where the user wants it and at return from
4a64f543 11016 this function. */
c5aa993b 11017
ffc2605c 11018 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11019
6c5b2ebe
PA
11020 std::vector<symtab_and_line> sals
11021 = (last_displayed_sal_is_valid ()
11022 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11023 get_last_displayed_symtab (),
11024 get_last_displayed_line ())
11025 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11026 NULL, (struct symtab *) NULL, 0));
c5aa993b 11027
6c5b2ebe 11028 if (sals.size () != 1)
8a3fe4f8 11029 error (_("Couldn't get information on specified line."));
c5aa993b 11030
6c5b2ebe 11031 symtab_and_line &sal = sals[0];
c5aa993b 11032
c906108c 11033 if (*arg)
8a3fe4f8 11034 error (_("Junk at end of arguments."));
c5aa993b 11035
c906108c 11036 resolve_sal_pc (&sal);
c5aa993b 11037
186c406b 11038 tp = inferior_thread ();
5d5658a1 11039 thread = tp->global_num;
186c406b 11040
8556afb4
PA
11041 /* Note linespec handling above invalidates the frame chain.
11042 Installing a breakpoint also invalidates the frame chain (as it
11043 may need to switch threads), so do any frame handling before
11044 that. */
11045
11046 frame = get_selected_frame (NULL);
11047 frame_gdbarch = get_frame_arch (frame);
11048 stack_frame_id = get_stack_frame_id (frame);
11049 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11050
ae66c1fc
EZ
11051 /* Keep within the current frame, or in frames called by the current
11052 one. */
edb3359d 11053
454dafbd 11054 breakpoint_up caller_breakpoint;
5419bdae
TT
11055
11056 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11057
883bc8d1 11058 if (frame_id_p (caller_frame_id))
c906108c 11059 {
883bc8d1 11060 struct symtab_and_line sal2;
cfc31633 11061 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11062
11063 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11064 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11065 caller_gdbarch = frame_unwind_caller_arch (frame);
11066 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11067 sal2,
11068 caller_frame_id,
11069 bp_until);
186c406b 11070
883bc8d1 11071 set_longjmp_breakpoint (tp, caller_frame_id);
5419bdae 11072 lj_deleter.emplace (thread);
c906108c 11073 }
c5aa993b 11074
c70a6932
JK
11075 /* set_momentary_breakpoint could invalidate FRAME. */
11076 frame = NULL;
11077
454dafbd 11078 breakpoint_up location_breakpoint;
883bc8d1
PA
11079 if (anywhere)
11080 /* If the user told us to continue until a specified location,
11081 we don't specify a frame at which we need to stop. */
cfc31633
PA
11082 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11083 null_frame_id, bp_until);
883bc8d1
PA
11084 else
11085 /* Otherwise, specify the selected frame, because we want to stop
11086 only at the very same frame. */
cfc31633
PA
11087 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11088 stack_frame_id, bp_until);
883bc8d1 11089
46e3ed7f
TT
11090 tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11091 std::move (location_breakpoint),
11092 std::move (caller_breakpoint));
f107f563 11093
5419bdae
TT
11094 if (lj_deleter)
11095 lj_deleter->release ();
f107f563 11096
cfc31633 11097 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11098}
ae66c1fc 11099
c906108c
SS
11100/* This function attempts to parse an optional "if <cond>" clause
11101 from the arg string. If one is not found, it returns NULL.
c5aa993b 11102
c906108c
SS
11103 Else, it returns a pointer to the condition string. (It does not
11104 attempt to evaluate the string against a particular block.) And,
11105 it updates arg to point to the first character following the parsed
4a64f543 11106 if clause in the arg string. */
53a5351d 11107
63160a43
PA
11108const char *
11109ep_parse_optional_if_clause (const char **arg)
c906108c 11110{
63160a43 11111 const char *cond_string;
c5aa993b
JM
11112
11113 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11114 return NULL;
c5aa993b 11115
4a64f543 11116 /* Skip the "if" keyword. */
c906108c 11117 (*arg) += 2;
c5aa993b 11118
c906108c 11119 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11120 condition string. */
f1735a53 11121 *arg = skip_spaces (*arg);
c906108c 11122 cond_string = *arg;
c5aa993b 11123
4a64f543
MS
11124 /* Assume that the condition occupies the remainder of the arg
11125 string. */
c906108c 11126 (*arg) += strlen (cond_string);
c5aa993b 11127
c906108c
SS
11128 return cond_string;
11129}
c5aa993b 11130
c906108c
SS
11131/* Commands to deal with catching events, such as signals, exceptions,
11132 process start/exit, etc. */
c5aa993b
JM
11133
11134typedef enum
11135{
44feb3ce
TT
11136 catch_fork_temporary, catch_vfork_temporary,
11137 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11138}
11139catch_fork_kind;
11140
c906108c 11141static void
eb4c3f4a 11142catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11143 struct cmd_list_element *command)
c906108c 11144{
a6d9a66e 11145 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11146 const char *cond_string = NULL;
44feb3ce
TT
11147 catch_fork_kind fork_kind;
11148 int tempflag;
11149
11150 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11151 tempflag = (fork_kind == catch_fork_temporary
11152 || fork_kind == catch_vfork_temporary);
c5aa993b 11153
44feb3ce
TT
11154 if (!arg)
11155 arg = "";
f1735a53 11156 arg = skip_spaces (arg);
c5aa993b 11157
c906108c 11158 /* The allowed syntax is:
c5aa993b
JM
11159 catch [v]fork
11160 catch [v]fork if <cond>
11161
4a64f543 11162 First, check if there's an if clause. */
c906108c 11163 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11164
c906108c 11165 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11166 error (_("Junk at end of arguments."));
c5aa993b 11167
c906108c 11168 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11169 and enable reporting of such events. */
c5aa993b
JM
11170 switch (fork_kind)
11171 {
44feb3ce
TT
11172 case catch_fork_temporary:
11173 case catch_fork_permanent:
a6d9a66e 11174 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11175 &catch_fork_breakpoint_ops);
c906108c 11176 break;
44feb3ce
TT
11177 case catch_vfork_temporary:
11178 case catch_vfork_permanent:
a6d9a66e 11179 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11180 &catch_vfork_breakpoint_ops);
c906108c 11181 break;
c5aa993b 11182 default:
8a3fe4f8 11183 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11184 break;
c5aa993b 11185 }
c906108c
SS
11186}
11187
11188static void
eb4c3f4a 11189catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11190 struct cmd_list_element *command)
c906108c 11191{
a6d9a66e 11192 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11193 int tempflag;
63160a43 11194 const char *cond_string = NULL;
c906108c 11195
44feb3ce
TT
11196 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11197
11198 if (!arg)
11199 arg = "";
f1735a53 11200 arg = skip_spaces (arg);
c906108c
SS
11201
11202 /* The allowed syntax is:
c5aa993b
JM
11203 catch exec
11204 catch exec if <cond>
c906108c 11205
4a64f543 11206 First, check if there's an if clause. */
c906108c
SS
11207 cond_string = ep_parse_optional_if_clause (&arg);
11208
11209 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11210 error (_("Junk at end of arguments."));
c906108c 11211
b270e6f9
TT
11212 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11213 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11214 &catch_exec_breakpoint_ops);
11215 c->exec_pathname = NULL;
11216
b270e6f9 11217 install_breakpoint (0, std::move (c), 1);
c906108c 11218}
c5aa993b 11219
9ac4176b 11220void
28010a5d
PA
11221init_ada_exception_breakpoint (struct breakpoint *b,
11222 struct gdbarch *gdbarch,
11223 struct symtab_and_line sal,
f2fc3015 11224 const char *addr_string,
c0a91b2b 11225 const struct breakpoint_ops *ops,
28010a5d 11226 int tempflag,
349774ef 11227 int enabled,
28010a5d 11228 int from_tty)
f7f9143b 11229{
f7f9143b
JB
11230 if (from_tty)
11231 {
5af949e3
UW
11232 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11233 if (!loc_gdbarch)
11234 loc_gdbarch = gdbarch;
11235
6c95b8df
PA
11236 describe_other_breakpoints (loc_gdbarch,
11237 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11238 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11239 version for exception catchpoints, because two catchpoints
11240 used for different exception names will use the same address.
11241 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11242 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11243 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11244 the user what type of catchpoint it is. The above is good
11245 enough for now, though. */
11246 }
11247
28010a5d 11248 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11249
349774ef 11250 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11251 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11252 b->location = string_to_event_location (&addr_string,
11253 language_def (language_ada));
f7f9143b 11254 b->language = language_ada;
f7f9143b
JB
11255}
11256
c906108c 11257static void
981a3fb3 11258catch_command (const char *arg, int from_tty)
c906108c 11259{
44feb3ce 11260 error (_("Catch requires an event name."));
c906108c
SS
11261}
11262\f
11263
11264static void
981a3fb3 11265tcatch_command (const char *arg, int from_tty)
c906108c 11266{
44feb3ce 11267 error (_("Catch requires an event name."));
c906108c
SS
11268}
11269
81b1e71c 11270/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11271
11272static int
81b1e71c 11273compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11274{
81b1e71c
TT
11275 uintptr_t ua = (uintptr_t) a;
11276 uintptr_t ub = (uintptr_t) b;
8a2c437b 11277
81b1e71c 11278 if (a->number < b->number)
8a2c437b 11279 return -1;
81b1e71c 11280 else if (a->number > b->number)
8a2c437b
TT
11281 return 1;
11282
11283 /* Now sort by address, in case we see, e..g, two breakpoints with
11284 the number 0. */
11285 if (ua < ub)
11286 return -1;
94b0e70d 11287 return ua > ub ? 1 : 0;
8a2c437b
TT
11288}
11289
80f8a6eb 11290/* Delete breakpoints by address or line. */
c906108c
SS
11291
11292static void
0b39b52e 11293clear_command (const char *arg, int from_tty)
c906108c 11294{
81b1e71c 11295 struct breakpoint *b;
c906108c 11296 int default_match;
c906108c 11297
6c5b2ebe
PA
11298 std::vector<symtab_and_line> decoded_sals;
11299 symtab_and_line last_sal;
11300 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11301 if (arg)
11302 {
6c5b2ebe
PA
11303 decoded_sals
11304 = decode_line_with_current_source (arg,
11305 (DECODE_LINE_FUNFIRSTLINE
11306 | DECODE_LINE_LIST_MODE));
c906108c 11307 default_match = 0;
6c5b2ebe 11308 sals = decoded_sals;
c906108c
SS
11309 }
11310 else
11311 {
1bfeeb0f
JL
11312 /* Set sal's line, symtab, pc, and pspace to the values
11313 corresponding to the last call to print_frame_info. If the
11314 codepoint is not valid, this will set all the fields to 0. */
51abb421 11315 last_sal = get_last_displayed_sal ();
6c5b2ebe 11316 if (last_sal.symtab == 0)
8a3fe4f8 11317 error (_("No source file specified."));
c906108c 11318
c906108c 11319 default_match = 1;
6c5b2ebe 11320 sals = last_sal;
c906108c
SS
11321 }
11322
4a64f543
MS
11323 /* We don't call resolve_sal_pc here. That's not as bad as it
11324 seems, because all existing breakpoints typically have both
11325 file/line and pc set. So, if clear is given file/line, we can
11326 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11327
11328 We only support clearing given the address explicitly
11329 present in breakpoint table. Say, we've set breakpoint
4a64f543 11330 at file:line. There were several PC values for that file:line,
ed0616c6 11331 due to optimization, all in one block.
4a64f543
MS
11332
11333 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11334 PC corresponding to the same file:line, the breakpoint won't
11335 be cleared. We probably can still clear the breakpoint, but
11336 since the other PC value is never presented to user, user
11337 can only find it by guessing, and it does not seem important
11338 to support that. */
11339
4a64f543
MS
11340 /* For each line spec given, delete bps which correspond to it. Do
11341 it in two passes, solely to preserve the current behavior that
11342 from_tty is forced true if we delete more than one
11343 breakpoint. */
c906108c 11344
81b1e71c 11345 std::vector<struct breakpoint *> found;
6c5b2ebe 11346 for (const auto &sal : sals)
c906108c 11347 {
05cba821
JK
11348 const char *sal_fullname;
11349
c906108c 11350 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11351 If line given (pc == 0), clear all bpts on specified line.
11352 If defaulting, clear all bpts on default line
c906108c 11353 or at default pc.
c5aa993b
JM
11354
11355 defaulting sal.pc != 0 tests to do
11356
11357 0 1 pc
11358 1 1 pc _and_ line
11359 0 0 line
11360 1 0 <can't happen> */
c906108c 11361
05cba821
JK
11362 sal_fullname = (sal.symtab == NULL
11363 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11364
4a64f543 11365 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11366 ALL_BREAKPOINTS (b)
c5aa993b 11367 {
0d381245 11368 int match = 0;
4a64f543 11369 /* Are we going to delete b? */
cc60f2e3 11370 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11371 {
11372 struct bp_location *loc = b->loc;
11373 for (; loc; loc = loc->next)
11374 {
f8eba3c6
TT
11375 /* If the user specified file:line, don't allow a PC
11376 match. This matches historical gdb behavior. */
11377 int pc_match = (!sal.explicit_line
11378 && sal.pc
11379 && (loc->pspace == sal.pspace)
11380 && (loc->address == sal.pc)
11381 && (!section_is_overlay (loc->section)
11382 || loc->section == sal.section));
4aac40c8
TT
11383 int line_match = 0;
11384
11385 if ((default_match || sal.explicit_line)
2f202fde 11386 && loc->symtab != NULL
05cba821 11387 && sal_fullname != NULL
4aac40c8 11388 && sal.pspace == loc->pspace
05cba821
JK
11389 && loc->line_number == sal.line
11390 && filename_cmp (symtab_to_fullname (loc->symtab),
11391 sal_fullname) == 0)
11392 line_match = 1;
4aac40c8 11393
0d381245
VP
11394 if (pc_match || line_match)
11395 {
11396 match = 1;
11397 break;
11398 }
11399 }
11400 }
11401
11402 if (match)
81b1e71c 11403 found.push_back (b);
c906108c 11404 }
80f8a6eb 11405 }
8a2c437b 11406
80f8a6eb 11407 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11408 if (found.empty ())
80f8a6eb
MS
11409 {
11410 if (arg)
8a3fe4f8 11411 error (_("No breakpoint at %s."), arg);
80f8a6eb 11412 else
8a3fe4f8 11413 error (_("No breakpoint at this line."));
80f8a6eb 11414 }
c906108c 11415
8a2c437b 11416 /* Remove duplicates from the vec. */
81b1e71c 11417 std::sort (found.begin (), found.end (),
b926417a 11418 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11419 {
b926417a 11420 return compare_breakpoints (bp_a, bp_b) < 0;
81b1e71c
TT
11421 });
11422 found.erase (std::unique (found.begin (), found.end (),
b926417a 11423 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11424 {
b926417a 11425 return compare_breakpoints (bp_a, bp_b) == 0;
81b1e71c
TT
11426 }),
11427 found.end ());
8a2c437b 11428
81b1e71c 11429 if (found.size () > 1)
4a64f543 11430 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11431 if (from_tty)
a3f17187 11432 {
81b1e71c 11433 if (found.size () == 1)
a3f17187
AC
11434 printf_unfiltered (_("Deleted breakpoint "));
11435 else
11436 printf_unfiltered (_("Deleted breakpoints "));
11437 }
d6e956e5 11438
81b1e71c 11439 for (breakpoint *iter : found)
80f8a6eb 11440 {
c5aa993b 11441 if (from_tty)
81b1e71c
TT
11442 printf_unfiltered ("%d ", iter->number);
11443 delete_breakpoint (iter);
c906108c 11444 }
80f8a6eb
MS
11445 if (from_tty)
11446 putchar_unfiltered ('\n');
c906108c
SS
11447}
11448\f
11449/* Delete breakpoint in BS if they are `delete' breakpoints and
11450 all breakpoints that are marked for deletion, whether hit or not.
11451 This is called after any breakpoint is hit, or after errors. */
11452
11453void
fba45db2 11454breakpoint_auto_delete (bpstat bs)
c906108c 11455{
35df4500 11456 struct breakpoint *b, *b_tmp;
c906108c
SS
11457
11458 for (; bs; bs = bs->next)
f431efe5
PA
11459 if (bs->breakpoint_at
11460 && bs->breakpoint_at->disposition == disp_del
c906108c 11461 && bs->stop)
f431efe5 11462 delete_breakpoint (bs->breakpoint_at);
c906108c 11463
35df4500 11464 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11465 {
b5de0fa7 11466 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11467 delete_breakpoint (b);
11468 }
c906108c
SS
11469}
11470
4a64f543
MS
11471/* A comparison function for bp_location AP and BP being interfaced to
11472 qsort. Sort elements primarily by their ADDRESS (no matter what
11473 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11474 secondarily by ordering first permanent elements and
4a64f543 11475 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11476 qsort being an unstable algorithm. */
876fa593
JK
11477
11478static int
f5336ca5 11479bp_locations_compare (const void *ap, const void *bp)
876fa593 11480{
9a3c8263
SM
11481 const struct bp_location *a = *(const struct bp_location **) ap;
11482 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11483
11484 if (a->address != b->address)
11485 return (a->address > b->address) - (a->address < b->address);
11486
dea2aa5f
LM
11487 /* Sort locations at the same address by their pspace number, keeping
11488 locations of the same inferior (in a multi-inferior environment)
11489 grouped. */
11490
11491 if (a->pspace->num != b->pspace->num)
11492 return ((a->pspace->num > b->pspace->num)
11493 - (a->pspace->num < b->pspace->num));
11494
876fa593 11495 /* Sort permanent breakpoints first. */
1a853c52
PA
11496 if (a->permanent != b->permanent)
11497 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11498
c56a97f9
JK
11499 /* Make the internal GDB representation stable across GDB runs
11500 where A and B memory inside GDB can differ. Breakpoint locations of
11501 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11502
11503 if (a->owner->number != b->owner->number)
c56a97f9
JK
11504 return ((a->owner->number > b->owner->number)
11505 - (a->owner->number < b->owner->number));
876fa593
JK
11506
11507 return (a > b) - (a < b);
11508}
11509
f5336ca5
PA
11510/* Set bp_locations_placed_address_before_address_max and
11511 bp_locations_shadow_len_after_address_max according to the current
11512 content of the bp_locations array. */
f7545552
TT
11513
11514static void
f5336ca5 11515bp_locations_target_extensions_update (void)
f7545552 11516{
876fa593
JK
11517 struct bp_location *bl, **blp_tmp;
11518
f5336ca5
PA
11519 bp_locations_placed_address_before_address_max = 0;
11520 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11521
11522 ALL_BP_LOCATIONS (bl, blp_tmp)
11523 {
11524 CORE_ADDR start, end, addr;
11525
11526 if (!bp_location_has_shadow (bl))
11527 continue;
11528
11529 start = bl->target_info.placed_address;
11530 end = start + bl->target_info.shadow_len;
11531
11532 gdb_assert (bl->address >= start);
11533 addr = bl->address - start;
f5336ca5
PA
11534 if (addr > bp_locations_placed_address_before_address_max)
11535 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11536
11537 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11538
11539 gdb_assert (bl->address < end);
11540 addr = end - bl->address;
f5336ca5
PA
11541 if (addr > bp_locations_shadow_len_after_address_max)
11542 bp_locations_shadow_len_after_address_max = addr;
876fa593 11543 }
f7545552
TT
11544}
11545
1e4d1764
YQ
11546/* Download tracepoint locations if they haven't been. */
11547
11548static void
11549download_tracepoint_locations (void)
11550{
7ed2c994 11551 struct breakpoint *b;
dd2e65cc 11552 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11553
5ed8105e 11554 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11555
7ed2c994 11556 ALL_TRACEPOINTS (b)
1e4d1764 11557 {
7ed2c994 11558 struct bp_location *bl;
1e4d1764 11559 struct tracepoint *t;
f2a8bc8a 11560 int bp_location_downloaded = 0;
1e4d1764 11561
7ed2c994 11562 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11563 ? !may_insert_fast_tracepoints
11564 : !may_insert_tracepoints))
11565 continue;
11566
dd2e65cc
YQ
11567 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11568 {
11569 if (target_can_download_tracepoint ())
11570 can_download_tracepoint = TRIBOOL_TRUE;
11571 else
11572 can_download_tracepoint = TRIBOOL_FALSE;
11573 }
11574
11575 if (can_download_tracepoint == TRIBOOL_FALSE)
11576 break;
11577
7ed2c994
YQ
11578 for (bl = b->loc; bl; bl = bl->next)
11579 {
11580 /* In tracepoint, locations are _never_ duplicated, so
11581 should_be_inserted is equivalent to
11582 unduplicated_should_be_inserted. */
11583 if (!should_be_inserted (bl) || bl->inserted)
11584 continue;
1e4d1764 11585
7ed2c994 11586 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11587
7ed2c994 11588 target_download_tracepoint (bl);
1e4d1764 11589
7ed2c994 11590 bl->inserted = 1;
f2a8bc8a 11591 bp_location_downloaded = 1;
7ed2c994
YQ
11592 }
11593 t = (struct tracepoint *) b;
11594 t->number_on_target = b->number;
f2a8bc8a 11595 if (bp_location_downloaded)
76727919 11596 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 11597 }
1e4d1764
YQ
11598}
11599
934709f0
PW
11600/* Swap the insertion/duplication state between two locations. */
11601
11602static void
11603swap_insertion (struct bp_location *left, struct bp_location *right)
11604{
11605 const int left_inserted = left->inserted;
11606 const int left_duplicate = left->duplicate;
b775012e 11607 const int left_needs_update = left->needs_update;
934709f0
PW
11608 const struct bp_target_info left_target_info = left->target_info;
11609
1e4d1764
YQ
11610 /* Locations of tracepoints can never be duplicated. */
11611 if (is_tracepoint (left->owner))
11612 gdb_assert (!left->duplicate);
11613 if (is_tracepoint (right->owner))
11614 gdb_assert (!right->duplicate);
11615
934709f0
PW
11616 left->inserted = right->inserted;
11617 left->duplicate = right->duplicate;
b775012e 11618 left->needs_update = right->needs_update;
934709f0
PW
11619 left->target_info = right->target_info;
11620 right->inserted = left_inserted;
11621 right->duplicate = left_duplicate;
b775012e 11622 right->needs_update = left_needs_update;
934709f0
PW
11623 right->target_info = left_target_info;
11624}
11625
b775012e
LM
11626/* Force the re-insertion of the locations at ADDRESS. This is called
11627 once a new/deleted/modified duplicate location is found and we are evaluating
11628 conditions on the target's side. Such conditions need to be updated on
11629 the target. */
11630
11631static void
11632force_breakpoint_reinsertion (struct bp_location *bl)
11633{
11634 struct bp_location **locp = NULL, **loc2p;
11635 struct bp_location *loc;
11636 CORE_ADDR address = 0;
11637 int pspace_num;
11638
11639 address = bl->address;
11640 pspace_num = bl->pspace->num;
11641
11642 /* This is only meaningful if the target is
11643 evaluating conditions and if the user has
11644 opted for condition evaluation on the target's
11645 side. */
11646 if (gdb_evaluates_breakpoint_condition_p ()
11647 || !target_supports_evaluation_of_breakpoint_conditions ())
11648 return;
11649
11650 /* Flag all breakpoint locations with this address and
11651 the same program space as the location
11652 as "its condition has changed". We need to
11653 update the conditions on the target's side. */
11654 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11655 {
11656 loc = *loc2p;
11657
11658 if (!is_breakpoint (loc->owner)
11659 || pspace_num != loc->pspace->num)
11660 continue;
11661
11662 /* Flag the location appropriately. We use a different state to
11663 let everyone know that we already updated the set of locations
11664 with addr bl->address and program space bl->pspace. This is so
11665 we don't have to keep calling these functions just to mark locations
11666 that have already been marked. */
11667 loc->condition_changed = condition_updated;
11668
11669 /* Free the agent expression bytecode as well. We will compute
11670 it later on. */
833177a4 11671 loc->cond_bytecode.reset ();
b775012e
LM
11672 }
11673}
44702360
PA
11674/* Called whether new breakpoints are created, or existing breakpoints
11675 deleted, to update the global location list and recompute which
11676 locations are duplicate of which.
b775012e 11677
04086b45
PA
11678 The INSERT_MODE flag determines whether locations may not, may, or
11679 shall be inserted now. See 'enum ugll_insert_mode' for more
11680 info. */
b60e7edf 11681
0d381245 11682static void
44702360 11683update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11684{
74960c60 11685 struct breakpoint *b;
876fa593 11686 struct bp_location **locp, *loc;
b775012e
LM
11687 /* Last breakpoint location address that was marked for update. */
11688 CORE_ADDR last_addr = 0;
11689 /* Last breakpoint location program space that was marked for update. */
11690 int last_pspace_num = -1;
f7545552 11691
2d134ed3
PA
11692 /* Used in the duplicates detection below. When iterating over all
11693 bp_locations, points to the first bp_location of a given address.
11694 Breakpoints and watchpoints of different types are never
11695 duplicates of each other. Keep one pointer for each type of
11696 breakpoint/watchpoint, so we only need to loop over all locations
11697 once. */
11698 struct bp_location *bp_loc_first; /* breakpoint */
11699 struct bp_location *wp_loc_first; /* hardware watchpoint */
11700 struct bp_location *awp_loc_first; /* access watchpoint */
11701 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11702
f5336ca5
PA
11703 /* Saved former bp_locations array which we compare against the newly
11704 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11705 struct bp_location **old_locp;
f5336ca5 11706 unsigned old_locations_count;
81b1e71c 11707 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11708
f5336ca5
PA
11709 old_locations_count = bp_locations_count;
11710 bp_locations = NULL;
11711 bp_locations_count = 0;
0d381245 11712
74960c60 11713 ALL_BREAKPOINTS (b)
876fa593 11714 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11715 bp_locations_count++;
876fa593 11716
f5336ca5
PA
11717 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11718 locp = bp_locations;
876fa593
JK
11719 ALL_BREAKPOINTS (b)
11720 for (loc = b->loc; loc; loc = loc->next)
11721 *locp++ = loc;
f5336ca5
PA
11722 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11723 bp_locations_compare);
876fa593 11724
f5336ca5 11725 bp_locations_target_extensions_update ();
74960c60 11726
4a64f543
MS
11727 /* Identify bp_location instances that are no longer present in the
11728 new list, and therefore should be freed. Note that it's not
11729 necessary that those locations should be removed from inferior --
11730 if there's another location at the same address (previously
11731 marked as duplicate), we don't need to remove/insert the
11732 location.
876fa593 11733
4a64f543
MS
11734 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11735 and former bp_location array state respectively. */
876fa593 11736
f5336ca5 11737 locp = bp_locations;
81b1e71c
TT
11738 for (old_locp = old_locations.get ();
11739 old_locp < old_locations.get () + old_locations_count;
876fa593 11740 old_locp++)
74960c60 11741 {
876fa593 11742 struct bp_location *old_loc = *old_locp;
c7d46a38 11743 struct bp_location **loc2p;
876fa593 11744
e5dd4106 11745 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11746 not, we have to free it. */
c7d46a38 11747 int found_object = 0;
20874c92
VP
11748 /* Tells if the location should remain inserted in the target. */
11749 int keep_in_target = 0;
11750 int removed = 0;
876fa593 11751
4a64f543
MS
11752 /* Skip LOCP entries which will definitely never be needed.
11753 Stop either at or being the one matching OLD_LOC. */
f5336ca5 11754 while (locp < bp_locations + bp_locations_count
c7d46a38 11755 && (*locp)->address < old_loc->address)
876fa593 11756 locp++;
c7d46a38
PA
11757
11758 for (loc2p = locp;
f5336ca5 11759 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
11760 && (*loc2p)->address == old_loc->address);
11761 loc2p++)
11762 {
b775012e
LM
11763 /* Check if this is a new/duplicated location or a duplicated
11764 location that had its condition modified. If so, we want to send
11765 its condition to the target if evaluation of conditions is taking
11766 place there. */
11767 if ((*loc2p)->condition_changed == condition_modified
11768 && (last_addr != old_loc->address
11769 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11770 {
b775012e
LM
11771 force_breakpoint_reinsertion (*loc2p);
11772 last_pspace_num = old_loc->pspace->num;
c7d46a38 11773 }
b775012e
LM
11774
11775 if (*loc2p == old_loc)
11776 found_object = 1;
c7d46a38 11777 }
74960c60 11778
b775012e
LM
11779 /* We have already handled this address, update it so that we don't
11780 have to go through updates again. */
11781 last_addr = old_loc->address;
11782
11783 /* Target-side condition evaluation: Handle deleted locations. */
11784 if (!found_object)
11785 force_breakpoint_reinsertion (old_loc);
11786
4a64f543
MS
11787 /* If this location is no longer present, and inserted, look if
11788 there's maybe a new location at the same address. If so,
11789 mark that one inserted, and don't remove this one. This is
11790 needed so that we don't have a time window where a breakpoint
11791 at certain location is not inserted. */
74960c60 11792
876fa593 11793 if (old_loc->inserted)
0d381245 11794 {
4a64f543
MS
11795 /* If the location is inserted now, we might have to remove
11796 it. */
74960c60 11797
876fa593 11798 if (found_object && should_be_inserted (old_loc))
74960c60 11799 {
4a64f543
MS
11800 /* The location is still present in the location list,
11801 and still should be inserted. Don't do anything. */
20874c92 11802 keep_in_target = 1;
74960c60
VP
11803 }
11804 else
11805 {
b775012e
LM
11806 /* This location still exists, but it won't be kept in the
11807 target since it may have been disabled. We proceed to
11808 remove its target-side condition. */
11809
4a64f543
MS
11810 /* The location is either no longer present, or got
11811 disabled. See if there's another location at the
11812 same address, in which case we don't need to remove
11813 this one from the target. */
876fa593 11814
2bdf28a0 11815 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
11816 if (breakpoint_address_is_meaningful (old_loc->owner))
11817 {
876fa593 11818 for (loc2p = locp;
f5336ca5 11819 (loc2p < bp_locations + bp_locations_count
c7d46a38 11820 && (*loc2p)->address == old_loc->address);
876fa593
JK
11821 loc2p++)
11822 {
11823 struct bp_location *loc2 = *loc2p;
11824
2d134ed3 11825 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 11826 {
85d721b8
PA
11827 /* Read watchpoint locations are switched to
11828 access watchpoints, if the former are not
11829 supported, but the latter are. */
11830 if (is_hardware_watchpoint (old_loc->owner))
11831 {
11832 gdb_assert (is_hardware_watchpoint (loc2->owner));
11833 loc2->watchpoint_type = old_loc->watchpoint_type;
11834 }
11835
934709f0
PW
11836 /* loc2 is a duplicated location. We need to check
11837 if it should be inserted in case it will be
11838 unduplicated. */
11839 if (loc2 != old_loc
11840 && unduplicated_should_be_inserted (loc2))
c7d46a38 11841 {
934709f0 11842 swap_insertion (old_loc, loc2);
c7d46a38
PA
11843 keep_in_target = 1;
11844 break;
11845 }
876fa593
JK
11846 }
11847 }
11848 }
74960c60
VP
11849 }
11850
20874c92
VP
11851 if (!keep_in_target)
11852 {
834c0d03 11853 if (remove_breakpoint (old_loc))
20874c92 11854 {
4a64f543
MS
11855 /* This is just about all we can do. We could keep
11856 this location on the global list, and try to
11857 remove it next time, but there's no particular
11858 reason why we will succeed next time.
20874c92 11859
4a64f543
MS
11860 Note that at this point, old_loc->owner is still
11861 valid, as delete_breakpoint frees the breakpoint
11862 only after calling us. */
3e43a32a
MS
11863 printf_filtered (_("warning: Error removing "
11864 "breakpoint %d\n"),
876fa593 11865 old_loc->owner->number);
20874c92
VP
11866 }
11867 removed = 1;
11868 }
0d381245 11869 }
74960c60
VP
11870
11871 if (!found_object)
1c5cfe86 11872 {
fbea99ea 11873 if (removed && target_is_non_stop_p ()
1cf4d951 11874 && need_moribund_for_location_type (old_loc))
20874c92 11875 {
db82e815
PA
11876 /* This location was removed from the target. In
11877 non-stop mode, a race condition is possible where
11878 we've removed a breakpoint, but stop events for that
11879 breakpoint are already queued and will arrive later.
11880 We apply an heuristic to be able to distinguish such
11881 SIGTRAPs from other random SIGTRAPs: we keep this
11882 breakpoint location for a bit, and will retire it
11883 after we see some number of events. The theory here
11884 is that reporting of events should, "on the average",
11885 be fair, so after a while we'll see events from all
11886 threads that have anything of interest, and no longer
11887 need to keep this breakpoint location around. We
11888 don't hold locations forever so to reduce chances of
11889 mistaking a non-breakpoint SIGTRAP for a breakpoint
11890 SIGTRAP.
11891
11892 The heuristic failing can be disastrous on
11893 decr_pc_after_break targets.
11894
11895 On decr_pc_after_break targets, like e.g., x86-linux,
11896 if we fail to recognize a late breakpoint SIGTRAP,
11897 because events_till_retirement has reached 0 too
11898 soon, we'll fail to do the PC adjustment, and report
11899 a random SIGTRAP to the user. When the user resumes
11900 the inferior, it will most likely immediately crash
2dec564e 11901 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
11902 corrupted, because of being resumed e.g., in the
11903 middle of a multi-byte instruction, or skipped a
11904 one-byte instruction. This was actually seen happen
11905 on native x86-linux, and should be less rare on
11906 targets that do not support new thread events, like
11907 remote, due to the heuristic depending on
11908 thread_count.
11909
11910 Mistaking a random SIGTRAP for a breakpoint trap
11911 causes similar symptoms (PC adjustment applied when
11912 it shouldn't), but then again, playing with SIGTRAPs
11913 behind the debugger's back is asking for trouble.
11914
11915 Since hardware watchpoint traps are always
11916 distinguishable from other traps, so we don't need to
11917 apply keep hardware watchpoint moribund locations
11918 around. We simply always ignore hardware watchpoint
11919 traps we can no longer explain. */
11920
876fa593
JK
11921 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11922 old_loc->owner = NULL;
20874c92 11923
1123588c 11924 moribund_locations.push_back (old_loc);
1c5cfe86
PA
11925 }
11926 else
f431efe5
PA
11927 {
11928 old_loc->owner = NULL;
11929 decref_bp_location (&old_loc);
11930 }
20874c92 11931 }
74960c60 11932 }
1c5cfe86 11933
348d480f
PA
11934 /* Rescan breakpoints at the same address and section, marking the
11935 first one as "first" and any others as "duplicates". This is so
11936 that the bpt instruction is only inserted once. If we have a
11937 permanent breakpoint at the same place as BPT, make that one the
11938 official one, and the rest as duplicates. Permanent breakpoints
11939 are sorted first for the same address.
11940
11941 Do the same for hardware watchpoints, but also considering the
11942 watchpoint's type (regular/access/read) and length. */
11943
11944 bp_loc_first = NULL;
11945 wp_loc_first = NULL;
11946 awp_loc_first = NULL;
11947 rwp_loc_first = NULL;
11948 ALL_BP_LOCATIONS (loc, locp)
11949 {
11950 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11951 non-NULL. */
348d480f 11952 struct bp_location **loc_first_p;
d3fbdd86 11953 b = loc->owner;
348d480f 11954
6f380991 11955 if (!unduplicated_should_be_inserted (loc)
348d480f 11956 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
11957 /* Don't detect duplicate for tracepoint locations because they are
11958 never duplicated. See the comments in field `duplicate' of
11959 `struct bp_location'. */
348d480f 11960 || is_tracepoint (b))
b775012e
LM
11961 {
11962 /* Clear the condition modification flag. */
11963 loc->condition_changed = condition_unchanged;
11964 continue;
11965 }
348d480f 11966
348d480f
PA
11967 if (b->type == bp_hardware_watchpoint)
11968 loc_first_p = &wp_loc_first;
11969 else if (b->type == bp_read_watchpoint)
11970 loc_first_p = &rwp_loc_first;
11971 else if (b->type == bp_access_watchpoint)
11972 loc_first_p = &awp_loc_first;
11973 else
11974 loc_first_p = &bp_loc_first;
11975
11976 if (*loc_first_p == NULL
11977 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11978 || !breakpoint_locations_match (loc, *loc_first_p))
11979 {
11980 *loc_first_p = loc;
11981 loc->duplicate = 0;
b775012e
LM
11982
11983 if (is_breakpoint (loc->owner) && loc->condition_changed)
11984 {
11985 loc->needs_update = 1;
11986 /* Clear the condition modification flag. */
11987 loc->condition_changed = condition_unchanged;
11988 }
348d480f
PA
11989 continue;
11990 }
11991
934709f0
PW
11992
11993 /* This and the above ensure the invariant that the first location
11994 is not duplicated, and is the inserted one.
11995 All following are marked as duplicated, and are not inserted. */
11996 if (loc->inserted)
11997 swap_insertion (loc, *loc_first_p);
348d480f
PA
11998 loc->duplicate = 1;
11999
b775012e
LM
12000 /* Clear the condition modification flag. */
12001 loc->condition_changed = condition_unchanged;
348d480f
PA
12002 }
12003
a25a5a45 12004 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12005 {
04086b45 12006 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12007 insert_breakpoint_locations ();
12008 else
12009 {
44702360
PA
12010 /* Even though the caller told us to not insert new
12011 locations, we may still need to update conditions on the
12012 target's side of breakpoints that were already inserted
12013 if the target is evaluating breakpoint conditions. We
b775012e
LM
12014 only update conditions for locations that are marked
12015 "needs_update". */
12016 update_inserted_breakpoint_locations ();
12017 }
12018 }
348d480f 12019
04086b45 12020 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12021 download_tracepoint_locations ();
348d480f
PA
12022}
12023
12024void
12025breakpoint_retire_moribund (void)
12026{
1123588c
TT
12027 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12028 {
12029 struct bp_location *loc = moribund_locations[ix];
12030 if (--(loc->events_till_retirement) == 0)
12031 {
12032 decref_bp_location (&loc);
12033 unordered_remove (moribund_locations, ix);
12034 --ix;
12035 }
12036 }
348d480f
PA
12037}
12038
12039static void
44702360 12040update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12041{
348d480f 12042
a70b8144 12043 try
492d29ea
PA
12044 {
12045 update_global_location_list (insert_mode);
12046 }
230d2906 12047 catch (const gdb_exception_error &e)
492d29ea
PA
12048 {
12049 }
348d480f
PA
12050}
12051
12052/* Clear BKP from a BPS. */
12053
12054static void
12055bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12056{
12057 bpstat bs;
12058
12059 for (bs = bps; bs; bs = bs->next)
12060 if (bs->breakpoint_at == bpt)
12061 {
12062 bs->breakpoint_at = NULL;
12063 bs->old_val = NULL;
12064 /* bs->commands will be freed later. */
12065 }
12066}
12067
12068/* Callback for iterate_over_threads. */
12069static int
12070bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12071{
9a3c8263 12072 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12073
12074 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12075 return 0;
12076}
12077
12078/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12079 callbacks. */
12080
12081static void
12082say_where (struct breakpoint *b)
12083{
12084 struct value_print_options opts;
12085
12086 get_user_print_options (&opts);
12087
12088 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12089 single string. */
12090 if (b->loc == NULL)
12091 {
f00aae0f
KS
12092 /* For pending locations, the output differs slightly based
12093 on b->extra_string. If this is non-NULL, it contains either
12094 a condition or dprintf arguments. */
12095 if (b->extra_string == NULL)
12096 {
12097 printf_filtered (_(" (%s) pending."),
d28cd78a 12098 event_location_to_string (b->location.get ()));
f00aae0f
KS
12099 }
12100 else if (b->type == bp_dprintf)
12101 {
12102 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12103 event_location_to_string (b->location.get ()),
f00aae0f
KS
12104 b->extra_string);
12105 }
12106 else
12107 {
12108 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12109 event_location_to_string (b->location.get ()),
f00aae0f
KS
12110 b->extra_string);
12111 }
348d480f
PA
12112 }
12113 else
12114 {
2f202fde 12115 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12116 {
12117 printf_filtered (" at ");
2636d81d
PW
12118 fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12119 address_style.style (),
12120 gdb_stdout);
348d480f 12121 }
2f202fde 12122 if (b->loc->symtab != NULL)
f8eba3c6
TT
12123 {
12124 /* If there is a single location, we can print the location
12125 more nicely. */
12126 if (b->loc->next == NULL)
0bb296cb
TT
12127 {
12128 puts_filtered (": file ");
12129 fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12130 file_name_style.style (),
12131 gdb_stdout);
12132 printf_filtered (", line %d.",
12133 b->loc->line_number);
12134 }
f8eba3c6
TT
12135 else
12136 /* This is not ideal, but each location may have a
12137 different file name, and this at least reflects the
12138 real situation somewhat. */
f00aae0f 12139 printf_filtered (": %s.",
d28cd78a 12140 event_location_to_string (b->location.get ()));
f8eba3c6 12141 }
348d480f
PA
12142
12143 if (b->loc->next)
12144 {
12145 struct bp_location *loc = b->loc;
12146 int n = 0;
12147 for (; loc; loc = loc->next)
12148 ++n;
12149 printf_filtered (" (%d locations)", n);
12150 }
12151 }
12152}
12153
5f486660 12154bp_location::~bp_location ()
348d480f 12155{
5f486660 12156 xfree (function_name);
348d480f
PA
12157}
12158
c1fc2657 12159/* Destructor for the breakpoint base class. */
348d480f 12160
c1fc2657 12161breakpoint::~breakpoint ()
348d480f 12162{
c1fc2657
SM
12163 xfree (this->cond_string);
12164 xfree (this->extra_string);
12165 xfree (this->filter);
348d480f
PA
12166}
12167
2060206e
PA
12168static struct bp_location *
12169base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12170{
5f486660 12171 return new bp_location (self);
348d480f
PA
12172}
12173
2060206e
PA
12174static void
12175base_breakpoint_re_set (struct breakpoint *b)
12176{
12177 /* Nothing to re-set. */
12178}
12179
12180#define internal_error_pure_virtual_called() \
12181 gdb_assert_not_reached ("pure virtual function called")
12182
12183static int
12184base_breakpoint_insert_location (struct bp_location *bl)
12185{
12186 internal_error_pure_virtual_called ();
12187}
12188
12189static int
73971819
PA
12190base_breakpoint_remove_location (struct bp_location *bl,
12191 enum remove_bp_reason reason)
2060206e
PA
12192{
12193 internal_error_pure_virtual_called ();
12194}
12195
12196static int
12197base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12198 const address_space *aspace,
09ac7c10
TT
12199 CORE_ADDR bp_addr,
12200 const struct target_waitstatus *ws)
2060206e
PA
12201{
12202 internal_error_pure_virtual_called ();
12203}
12204
12205static void
12206base_breakpoint_check_status (bpstat bs)
12207{
12208 /* Always stop. */
12209}
12210
12211/* A "works_in_software_mode" breakpoint_ops method that just internal
12212 errors. */
12213
12214static int
12215base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12216{
12217 internal_error_pure_virtual_called ();
12218}
12219
12220/* A "resources_needed" breakpoint_ops method that just internal
12221 errors. */
12222
12223static int
12224base_breakpoint_resources_needed (const struct bp_location *bl)
12225{
12226 internal_error_pure_virtual_called ();
12227}
12228
12229static enum print_stop_action
12230base_breakpoint_print_it (bpstat bs)
12231{
12232 internal_error_pure_virtual_called ();
12233}
12234
12235static void
12236base_breakpoint_print_one_detail (const struct breakpoint *self,
12237 struct ui_out *uiout)
12238{
12239 /* nothing */
12240}
12241
12242static void
12243base_breakpoint_print_mention (struct breakpoint *b)
12244{
12245 internal_error_pure_virtual_called ();
12246}
12247
12248static void
12249base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12250{
12251 internal_error_pure_virtual_called ();
12252}
12253
983af33b 12254static void
f00aae0f
KS
12255base_breakpoint_create_sals_from_location
12256 (const struct event_location *location,
12257 struct linespec_result *canonical,
12258 enum bptype type_wanted)
983af33b
SDJ
12259{
12260 internal_error_pure_virtual_called ();
12261}
12262
12263static void
12264base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12265 struct linespec_result *c,
e1e01040
PA
12266 gdb::unique_xmalloc_ptr<char> cond_string,
12267 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12268 enum bptype type_wanted,
12269 enum bpdisp disposition,
12270 int thread,
12271 int task, int ignore_count,
12272 const struct breakpoint_ops *o,
12273 int from_tty, int enabled,
44f238bb 12274 int internal, unsigned flags)
983af33b
SDJ
12275{
12276 internal_error_pure_virtual_called ();
12277}
12278
6c5b2ebe 12279static std::vector<symtab_and_line>
f00aae0f
KS
12280base_breakpoint_decode_location (struct breakpoint *b,
12281 const struct event_location *location,
6c5b2ebe 12282 struct program_space *search_pspace)
983af33b
SDJ
12283{
12284 internal_error_pure_virtual_called ();
12285}
12286
ab04a2af
TT
12287/* The default 'explains_signal' method. */
12288
47591c29 12289static int
427cd150 12290base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12291{
47591c29 12292 return 1;
ab04a2af
TT
12293}
12294
9d6e6e84
HZ
12295/* The default "after_condition_true" method. */
12296
12297static void
12298base_breakpoint_after_condition_true (struct bpstats *bs)
12299{
12300 /* Nothing to do. */
12301}
12302
ab04a2af 12303struct breakpoint_ops base_breakpoint_ops =
2060206e 12304{
2060206e
PA
12305 base_breakpoint_allocate_location,
12306 base_breakpoint_re_set,
12307 base_breakpoint_insert_location,
12308 base_breakpoint_remove_location,
12309 base_breakpoint_breakpoint_hit,
12310 base_breakpoint_check_status,
12311 base_breakpoint_resources_needed,
12312 base_breakpoint_works_in_software_mode,
12313 base_breakpoint_print_it,
12314 NULL,
12315 base_breakpoint_print_one_detail,
12316 base_breakpoint_print_mention,
983af33b 12317 base_breakpoint_print_recreate,
5f700d83 12318 base_breakpoint_create_sals_from_location,
983af33b 12319 base_breakpoint_create_breakpoints_sal,
5f700d83 12320 base_breakpoint_decode_location,
9d6e6e84
HZ
12321 base_breakpoint_explains_signal,
12322 base_breakpoint_after_condition_true,
2060206e
PA
12323};
12324
12325/* Default breakpoint_ops methods. */
12326
12327static void
348d480f
PA
12328bkpt_re_set (struct breakpoint *b)
12329{
06edf0c0 12330 /* FIXME: is this still reachable? */
9ef9e6a6 12331 if (breakpoint_event_location_empty_p (b))
06edf0c0 12332 {
f00aae0f 12333 /* Anything without a location can't be re-set. */
348d480f 12334 delete_breakpoint (b);
06edf0c0 12335 return;
348d480f 12336 }
06edf0c0
PA
12337
12338 breakpoint_re_set_default (b);
348d480f
PA
12339}
12340
2060206e 12341static int
348d480f
PA
12342bkpt_insert_location (struct bp_location *bl)
12343{
cd6c3b4f
YQ
12344 CORE_ADDR addr = bl->target_info.reqstd_address;
12345
579c6ad9 12346 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12347 bl->target_info.placed_address = addr;
12348
348d480f 12349 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12350 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12351 else
7c16b83e 12352 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12353}
12354
2060206e 12355static int
73971819 12356bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12357{
12358 if (bl->loc_type == bp_loc_hardware_breakpoint)
12359 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12360 else
73971819 12361 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12362}
12363
2060206e 12364static int
348d480f 12365bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12366 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12367 const struct target_waitstatus *ws)
348d480f 12368{
09ac7c10 12369 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12370 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12371 return 0;
12372
348d480f
PA
12373 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12374 aspace, bp_addr))
12375 return 0;
12376
12377 if (overlay_debugging /* unmapped overlay section */
12378 && section_is_overlay (bl->section)
12379 && !section_is_mapped (bl->section))
12380 return 0;
12381
12382 return 1;
12383}
12384
cd1608cc
PA
12385static int
12386dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12387 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12388 const struct target_waitstatus *ws)
12389{
12390 if (dprintf_style == dprintf_style_agent
12391 && target_can_run_breakpoint_commands ())
12392 {
12393 /* An agent-style dprintf never causes a stop. If we see a trap
12394 for this address it must be for a breakpoint that happens to
12395 be set at the same address. */
12396 return 0;
12397 }
12398
12399 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12400}
12401
2060206e 12402static int
348d480f
PA
12403bkpt_resources_needed (const struct bp_location *bl)
12404{
12405 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12406
12407 return 1;
12408}
12409
2060206e 12410static enum print_stop_action
348d480f
PA
12411bkpt_print_it (bpstat bs)
12412{
348d480f
PA
12413 struct breakpoint *b;
12414 const struct bp_location *bl;
001c8c33 12415 int bp_temp;
79a45e25 12416 struct ui_out *uiout = current_uiout;
348d480f
PA
12417
12418 gdb_assert (bs->bp_location_at != NULL);
12419
12420 bl = bs->bp_location_at;
12421 b = bs->breakpoint_at;
12422
001c8c33
PA
12423 bp_temp = b->disposition == disp_del;
12424 if (bl->address != bl->requested_address)
12425 breakpoint_adjustment_warning (bl->requested_address,
12426 bl->address,
12427 b->number, 1);
12428 annotate_breakpoint (b->number);
f303dbd6
PA
12429 maybe_print_thread_hit_breakpoint (uiout);
12430
001c8c33 12431 if (bp_temp)
112e8700 12432 uiout->text ("Temporary breakpoint ");
001c8c33 12433 else
112e8700
SM
12434 uiout->text ("Breakpoint ");
12435 if (uiout->is_mi_like_p ())
348d480f 12436 {
112e8700 12437 uiout->field_string ("reason",
001c8c33 12438 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12439 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12440 }
112e8700
SM
12441 uiout->field_int ("bkptno", b->number);
12442 uiout->text (", ");
06edf0c0 12443
001c8c33 12444 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12445}
12446
2060206e 12447static void
06edf0c0
PA
12448bkpt_print_mention (struct breakpoint *b)
12449{
112e8700 12450 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12451 return;
12452
12453 switch (b->type)
12454 {
12455 case bp_breakpoint:
12456 case bp_gnu_ifunc_resolver:
12457 if (b->disposition == disp_del)
12458 printf_filtered (_("Temporary breakpoint"));
12459 else
12460 printf_filtered (_("Breakpoint"));
12461 printf_filtered (_(" %d"), b->number);
12462 if (b->type == bp_gnu_ifunc_resolver)
12463 printf_filtered (_(" at gnu-indirect-function resolver"));
12464 break;
12465 case bp_hardware_breakpoint:
12466 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12467 break;
e7e0cddf
SS
12468 case bp_dprintf:
12469 printf_filtered (_("Dprintf %d"), b->number);
12470 break;
06edf0c0
PA
12471 }
12472
12473 say_where (b);
12474}
12475
2060206e 12476static void
06edf0c0
PA
12477bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12478{
12479 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12480 fprintf_unfiltered (fp, "tbreak");
12481 else if (tp->type == bp_breakpoint)
12482 fprintf_unfiltered (fp, "break");
12483 else if (tp->type == bp_hardware_breakpoint
12484 && tp->disposition == disp_del)
12485 fprintf_unfiltered (fp, "thbreak");
12486 else if (tp->type == bp_hardware_breakpoint)
12487 fprintf_unfiltered (fp, "hbreak");
12488 else
12489 internal_error (__FILE__, __LINE__,
12490 _("unhandled breakpoint type %d"), (int) tp->type);
12491
f00aae0f 12492 fprintf_unfiltered (fp, " %s",
d28cd78a 12493 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12494
12495 /* Print out extra_string if this breakpoint is pending. It might
12496 contain, for example, conditions that were set by the user. */
12497 if (tp->loc == NULL && tp->extra_string != NULL)
12498 fprintf_unfiltered (fp, " %s", tp->extra_string);
12499
dd11a36c 12500 print_recreate_thread (tp, fp);
06edf0c0
PA
12501}
12502
983af33b 12503static void
f00aae0f
KS
12504bkpt_create_sals_from_location (const struct event_location *location,
12505 struct linespec_result *canonical,
12506 enum bptype type_wanted)
983af33b 12507{
f00aae0f 12508 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12509}
12510
12511static void
12512bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12513 struct linespec_result *canonical,
e1e01040
PA
12514 gdb::unique_xmalloc_ptr<char> cond_string,
12515 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12516 enum bptype type_wanted,
12517 enum bpdisp disposition,
12518 int thread,
12519 int task, int ignore_count,
12520 const struct breakpoint_ops *ops,
12521 int from_tty, int enabled,
44f238bb 12522 int internal, unsigned flags)
983af33b 12523{
023fa29b 12524 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12525 std::move (cond_string),
12526 std::move (extra_string),
e7e0cddf 12527 type_wanted,
983af33b
SDJ
12528 disposition, thread, task,
12529 ignore_count, ops, from_tty,
44f238bb 12530 enabled, internal, flags);
983af33b
SDJ
12531}
12532
6c5b2ebe 12533static std::vector<symtab_and_line>
f00aae0f
KS
12534bkpt_decode_location (struct breakpoint *b,
12535 const struct event_location *location,
6c5b2ebe 12536 struct program_space *search_pspace)
983af33b 12537{
6c5b2ebe 12538 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12539}
12540
06edf0c0
PA
12541/* Virtual table for internal breakpoints. */
12542
12543static void
12544internal_bkpt_re_set (struct breakpoint *b)
12545{
12546 switch (b->type)
12547 {
12548 /* Delete overlay event and longjmp master breakpoints; they
12549 will be reset later by breakpoint_re_set. */
12550 case bp_overlay_event:
12551 case bp_longjmp_master:
12552 case bp_std_terminate_master:
12553 case bp_exception_master:
12554 delete_breakpoint (b);
12555 break;
12556
12557 /* This breakpoint is special, it's set up when the inferior
12558 starts and we really don't want to touch it. */
12559 case bp_shlib_event:
12560
12561 /* Like bp_shlib_event, this breakpoint type is special. Once
12562 it is set up, we do not want to touch it. */
12563 case bp_thread_event:
12564 break;
12565 }
12566}
12567
12568static void
12569internal_bkpt_check_status (bpstat bs)
12570{
a9b3a50f
PA
12571 if (bs->breakpoint_at->type == bp_shlib_event)
12572 {
12573 /* If requested, stop when the dynamic linker notifies GDB of
12574 events. This allows the user to get control and place
12575 breakpoints in initializer routines for dynamically loaded
12576 objects (among other things). */
12577 bs->stop = stop_on_solib_events;
12578 bs->print = stop_on_solib_events;
12579 }
12580 else
12581 bs->stop = 0;
06edf0c0
PA
12582}
12583
12584static enum print_stop_action
12585internal_bkpt_print_it (bpstat bs)
12586{
06edf0c0 12587 struct breakpoint *b;
06edf0c0 12588
06edf0c0
PA
12589 b = bs->breakpoint_at;
12590
06edf0c0
PA
12591 switch (b->type)
12592 {
348d480f
PA
12593 case bp_shlib_event:
12594 /* Did we stop because the user set the stop_on_solib_events
12595 variable? (If so, we report this as a generic, "Stopped due
12596 to shlib event" message.) */
edcc5120 12597 print_solib_event (0);
348d480f
PA
12598 break;
12599
12600 case bp_thread_event:
12601 /* Not sure how we will get here.
12602 GDB should not stop for these breakpoints. */
12603 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12604 break;
12605
12606 case bp_overlay_event:
12607 /* By analogy with the thread event, GDB should not stop for these. */
12608 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12609 break;
12610
12611 case bp_longjmp_master:
12612 /* These should never be enabled. */
12613 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12614 break;
12615
12616 case bp_std_terminate_master:
12617 /* These should never be enabled. */
12618 printf_filtered (_("std::terminate Master Breakpoint: "
12619 "gdb should not stop!\n"));
348d480f
PA
12620 break;
12621
12622 case bp_exception_master:
12623 /* These should never be enabled. */
12624 printf_filtered (_("Exception Master Breakpoint: "
12625 "gdb should not stop!\n"));
06edf0c0
PA
12626 break;
12627 }
12628
001c8c33 12629 return PRINT_NOTHING;
06edf0c0
PA
12630}
12631
12632static void
12633internal_bkpt_print_mention (struct breakpoint *b)
12634{
12635 /* Nothing to mention. These breakpoints are internal. */
12636}
12637
06edf0c0
PA
12638/* Virtual table for momentary breakpoints */
12639
12640static void
12641momentary_bkpt_re_set (struct breakpoint *b)
12642{
12643 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12644 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12645 Otherwise these should have been blown away via the cleanup chain
12646 or by breakpoint_init_inferior when we rerun the executable. */
12647}
12648
12649static void
12650momentary_bkpt_check_status (bpstat bs)
12651{
12652 /* Nothing. The point of these breakpoints is causing a stop. */
12653}
12654
12655static enum print_stop_action
12656momentary_bkpt_print_it (bpstat bs)
12657{
001c8c33 12658 return PRINT_UNKNOWN;
348d480f
PA
12659}
12660
06edf0c0
PA
12661static void
12662momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12663{
06edf0c0 12664 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12665}
12666
e2e4d78b
JK
12667/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12668
12669 It gets cleared already on the removal of the first one of such placed
12670 breakpoints. This is OK as they get all removed altogether. */
12671
c1fc2657 12672longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12673{
c1fc2657 12674 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12675
c1fc2657 12676 if (tp != NULL)
e2e4d78b 12677 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12678}
12679
55aa24fb
SDJ
12680/* Specific methods for probe breakpoints. */
12681
12682static int
12683bkpt_probe_insert_location (struct bp_location *bl)
12684{
12685 int v = bkpt_insert_location (bl);
12686
12687 if (v == 0)
12688 {
12689 /* The insertion was successful, now let's set the probe's semaphore
12690 if needed. */
935676c9 12691 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12692 }
12693
12694 return v;
12695}
12696
12697static int
73971819
PA
12698bkpt_probe_remove_location (struct bp_location *bl,
12699 enum remove_bp_reason reason)
55aa24fb
SDJ
12700{
12701 /* Let's clear the semaphore before removing the location. */
935676c9 12702 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12703
73971819 12704 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12705}
12706
12707static void
f00aae0f 12708bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 12709 struct linespec_result *canonical,
f00aae0f 12710 enum bptype type_wanted)
55aa24fb
SDJ
12711{
12712 struct linespec_sals lsal;
12713
c2f4122d 12714 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12715 lsal.canonical
12716 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12717 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12718}
12719
6c5b2ebe 12720static std::vector<symtab_and_line>
f00aae0f
KS
12721bkpt_probe_decode_location (struct breakpoint *b,
12722 const struct event_location *location,
6c5b2ebe 12723 struct program_space *search_pspace)
55aa24fb 12724{
6c5b2ebe
PA
12725 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12726 if (sals.empty ())
55aa24fb 12727 error (_("probe not found"));
6c5b2ebe 12728 return sals;
55aa24fb
SDJ
12729}
12730
348d480f 12731/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12732
348d480f
PA
12733static void
12734tracepoint_re_set (struct breakpoint *b)
12735{
12736 breakpoint_re_set_default (b);
12737}
876fa593 12738
348d480f
PA
12739static int
12740tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12741 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12742 const struct target_waitstatus *ws)
348d480f
PA
12743{
12744 /* By definition, the inferior does not report stops at
12745 tracepoints. */
12746 return 0;
74960c60
VP
12747}
12748
12749static void
348d480f
PA
12750tracepoint_print_one_detail (const struct breakpoint *self,
12751 struct ui_out *uiout)
74960c60 12752{
d9b3f62e 12753 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 12754 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
12755 {
12756 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12757
112e8700
SM
12758 uiout->text ("\tmarker id is ");
12759 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 12760 tp->static_trace_marker_id);
112e8700 12761 uiout->text ("\n");
348d480f 12762 }
0d381245
VP
12763}
12764
a474d7c2 12765static void
348d480f 12766tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12767{
112e8700 12768 if (current_uiout->is_mi_like_p ())
348d480f 12769 return;
cc59ec59 12770
348d480f
PA
12771 switch (b->type)
12772 {
12773 case bp_tracepoint:
12774 printf_filtered (_("Tracepoint"));
12775 printf_filtered (_(" %d"), b->number);
12776 break;
12777 case bp_fast_tracepoint:
12778 printf_filtered (_("Fast tracepoint"));
12779 printf_filtered (_(" %d"), b->number);
12780 break;
12781 case bp_static_tracepoint:
12782 printf_filtered (_("Static tracepoint"));
12783 printf_filtered (_(" %d"), b->number);
12784 break;
12785 default:
12786 internal_error (__FILE__, __LINE__,
12787 _("unhandled tracepoint type %d"), (int) b->type);
12788 }
12789
12790 say_where (b);
a474d7c2
PA
12791}
12792
348d480f 12793static void
d9b3f62e 12794tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12795{
d9b3f62e
PA
12796 struct tracepoint *tp = (struct tracepoint *) self;
12797
12798 if (self->type == bp_fast_tracepoint)
348d480f 12799 fprintf_unfiltered (fp, "ftrace");
c93e8391 12800 else if (self->type == bp_static_tracepoint)
348d480f 12801 fprintf_unfiltered (fp, "strace");
d9b3f62e 12802 else if (self->type == bp_tracepoint)
348d480f
PA
12803 fprintf_unfiltered (fp, "trace");
12804 else
12805 internal_error (__FILE__, __LINE__,
d9b3f62e 12806 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 12807
f00aae0f 12808 fprintf_unfiltered (fp, " %s",
d28cd78a 12809 event_location_to_string (self->location.get ()));
d9b3f62e
PA
12810 print_recreate_thread (self, fp);
12811
12812 if (tp->pass_count)
12813 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
12814}
12815
983af33b 12816static void
f00aae0f
KS
12817tracepoint_create_sals_from_location (const struct event_location *location,
12818 struct linespec_result *canonical,
12819 enum bptype type_wanted)
983af33b 12820{
f00aae0f 12821 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12822}
12823
12824static void
12825tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12826 struct linespec_result *canonical,
e1e01040
PA
12827 gdb::unique_xmalloc_ptr<char> cond_string,
12828 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12829 enum bptype type_wanted,
12830 enum bpdisp disposition,
12831 int thread,
12832 int task, int ignore_count,
12833 const struct breakpoint_ops *ops,
12834 int from_tty, int enabled,
44f238bb 12835 int internal, unsigned flags)
983af33b 12836{
023fa29b 12837 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12838 std::move (cond_string),
12839 std::move (extra_string),
e7e0cddf 12840 type_wanted,
983af33b
SDJ
12841 disposition, thread, task,
12842 ignore_count, ops, from_tty,
44f238bb 12843 enabled, internal, flags);
983af33b
SDJ
12844}
12845
6c5b2ebe 12846static std::vector<symtab_and_line>
f00aae0f
KS
12847tracepoint_decode_location (struct breakpoint *b,
12848 const struct event_location *location,
6c5b2ebe 12849 struct program_space *search_pspace)
983af33b 12850{
6c5b2ebe 12851 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12852}
12853
2060206e 12854struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 12855
55aa24fb
SDJ
12856/* The breakpoint_ops structure to be use on tracepoints placed in a
12857 static probe. */
12858
12859static void
f00aae0f
KS
12860tracepoint_probe_create_sals_from_location
12861 (const struct event_location *location,
12862 struct linespec_result *canonical,
12863 enum bptype type_wanted)
55aa24fb
SDJ
12864{
12865 /* We use the same method for breakpoint on probes. */
f00aae0f 12866 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
12867}
12868
6c5b2ebe 12869static std::vector<symtab_and_line>
f00aae0f
KS
12870tracepoint_probe_decode_location (struct breakpoint *b,
12871 const struct event_location *location,
6c5b2ebe 12872 struct program_space *search_pspace)
55aa24fb
SDJ
12873{
12874 /* We use the same method for breakpoint on probes. */
6c5b2ebe 12875 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
12876}
12877
12878static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12879
5c2b4418
HZ
12880/* Dprintf breakpoint_ops methods. */
12881
12882static void
12883dprintf_re_set (struct breakpoint *b)
12884{
12885 breakpoint_re_set_default (b);
12886
f00aae0f
KS
12887 /* extra_string should never be non-NULL for dprintf. */
12888 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
12889
12890 /* 1 - connect to target 1, that can run breakpoint commands.
12891 2 - create a dprintf, which resolves fine.
12892 3 - disconnect from target 1
12893 4 - connect to target 2, that can NOT run breakpoint commands.
12894
12895 After steps #3/#4, you'll want the dprintf command list to
12896 be updated, because target 1 and 2 may well return different
12897 answers for target_can_run_breakpoint_commands().
12898 Given absence of finer grained resetting, we get to do
12899 it all the time. */
12900 if (b->extra_string != NULL)
12901 update_dprintf_command_list (b);
12902}
12903
2d9442cc
HZ
12904/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12905
12906static void
12907dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12908{
f00aae0f 12909 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 12910 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
12911 tp->extra_string);
12912 print_recreate_thread (tp, fp);
12913}
12914
9d6e6e84
HZ
12915/* Implement the "after_condition_true" breakpoint_ops method for
12916 dprintf.
12917
12918 dprintf's are implemented with regular commands in their command
12919 list, but we run the commands here instead of before presenting the
12920 stop to the user, as dprintf's don't actually cause a stop. This
12921 also makes it so that the commands of multiple dprintfs at the same
12922 address are all handled. */
12923
12924static void
12925dprintf_after_condition_true (struct bpstats *bs)
12926{
04afa70c 12927 struct bpstats tmp_bs;
9d6e6e84
HZ
12928 struct bpstats *tmp_bs_p = &tmp_bs;
12929
12930 /* dprintf's never cause a stop. This wasn't set in the
12931 check_status hook instead because that would make the dprintf's
12932 condition not be evaluated. */
12933 bs->stop = 0;
12934
12935 /* Run the command list here. Take ownership of it instead of
12936 copying. We never want these commands to run later in
12937 bpstat_do_actions, if a breakpoint that causes a stop happens to
12938 be set at same address as this dprintf, or even if running the
12939 commands here throws. */
12940 tmp_bs.commands = bs->commands;
12941 bs->commands = NULL;
9d6e6e84
HZ
12942
12943 bpstat_do_actions_1 (&tmp_bs_p);
12944
12945 /* 'tmp_bs.commands' will usually be NULL by now, but
12946 bpstat_do_actions_1 may return early without processing the whole
12947 list. */
9d6e6e84
HZ
12948}
12949
983af33b
SDJ
12950/* The breakpoint_ops structure to be used on static tracepoints with
12951 markers (`-m'). */
12952
12953static void
f00aae0f 12954strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 12955 struct linespec_result *canonical,
f00aae0f 12956 enum bptype type_wanted)
983af33b
SDJ
12957{
12958 struct linespec_sals lsal;
f00aae0f 12959 const char *arg_start, *arg;
983af33b 12960
a20714ff 12961 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 12962 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 12963
f2fc3015
TT
12964 std::string str (arg_start, arg - arg_start);
12965 const char *ptr = str.c_str ();
a20714ff
PA
12966 canonical->location
12967 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 12968
8e9e35b1
TT
12969 lsal.canonical
12970 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12971 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
12972}
12973
12974static void
12975strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12976 struct linespec_result *canonical,
e1e01040
PA
12977 gdb::unique_xmalloc_ptr<char> cond_string,
12978 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12979 enum bptype type_wanted,
12980 enum bpdisp disposition,
12981 int thread,
12982 int task, int ignore_count,
12983 const struct breakpoint_ops *ops,
12984 int from_tty, int enabled,
44f238bb 12985 int internal, unsigned flags)
983af33b 12986{
6c5b2ebe 12987 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
12988
12989 /* If the user is creating a static tracepoint by marker id
12990 (strace -m MARKER_ID), then store the sals index, so that
12991 breakpoint_re_set can try to match up which of the newly
12992 found markers corresponds to this one, and, don't try to
12993 expand multiple locations for each sal, given than SALS
12994 already should contain all sals for MARKER_ID. */
12995
6c5b2ebe 12996 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 12997 {
6c5b2ebe
PA
12998 event_location_up location
12999 = copy_event_location (canonical->location.get ());
983af33b 13000
b270e6f9 13001 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13002 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13003 std::move (location), NULL,
e1e01040
PA
13004 std::move (cond_string),
13005 std::move (extra_string),
e7e0cddf 13006 type_wanted, disposition,
983af33b 13007 thread, task, ignore_count, ops,
44f238bb 13008 from_tty, enabled, internal, flags,
983af33b
SDJ
13009 canonical->special_display);
13010 /* Given that its possible to have multiple markers with
13011 the same string id, if the user is creating a static
13012 tracepoint by marker id ("strace -m MARKER_ID"), then
13013 store the sals index, so that breakpoint_re_set can
13014 try to match up which of the newly found markers
13015 corresponds to this one */
13016 tp->static_trace_marker_id_idx = i;
13017
b270e6f9 13018 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13019 }
13020}
13021
6c5b2ebe 13022static std::vector<symtab_and_line>
f00aae0f
KS
13023strace_marker_decode_location (struct breakpoint *b,
13024 const struct event_location *location,
6c5b2ebe 13025 struct program_space *search_pspace)
983af33b
SDJ
13026{
13027 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 13028 const char *s = get_linespec_location (location)->spec_string;
983af33b 13029
6c5b2ebe
PA
13030 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13031 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13032 {
6c5b2ebe
PA
13033 sals[0] = sals[tp->static_trace_marker_id_idx];
13034 sals.resize (1);
13035 return sals;
983af33b
SDJ
13036 }
13037 else
5d9310c4 13038 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
13039}
13040
13041static struct breakpoint_ops strace_marker_breakpoint_ops;
13042
13043static int
13044strace_marker_p (struct breakpoint *b)
13045{
13046 return b->ops == &strace_marker_breakpoint_ops;
13047}
13048
53a5351d 13049/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13050 structures. */
c906108c
SS
13051
13052void
fba45db2 13053delete_breakpoint (struct breakpoint *bpt)
c906108c 13054{
52f0bd74 13055 struct breakpoint *b;
c906108c 13056
8a3fe4f8 13057 gdb_assert (bpt != NULL);
c906108c 13058
4a64f543
MS
13059 /* Has this bp already been deleted? This can happen because
13060 multiple lists can hold pointers to bp's. bpstat lists are
13061 especial culprits.
13062
13063 One example of this happening is a watchpoint's scope bp. When
13064 the scope bp triggers, we notice that the watchpoint is out of
13065 scope, and delete it. We also delete its scope bp. But the
13066 scope bp is marked "auto-deleting", and is already on a bpstat.
13067 That bpstat is then checked for auto-deleting bp's, which are
13068 deleted.
13069
13070 A real solution to this problem might involve reference counts in
13071 bp's, and/or giving them pointers back to their referencing
13072 bpstat's, and teaching delete_breakpoint to only free a bp's
13073 storage when no more references were extent. A cheaper bandaid
13074 was chosen. */
c906108c
SS
13075 if (bpt->type == bp_none)
13076 return;
13077
4a64f543
MS
13078 /* At least avoid this stale reference until the reference counting
13079 of breakpoints gets resolved. */
d0fb5eae 13080 if (bpt->related_breakpoint != bpt)
e5a0a904 13081 {
d0fb5eae 13082 struct breakpoint *related;
3a5c3e22 13083 struct watchpoint *w;
d0fb5eae
JK
13084
13085 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13086 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13087 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13088 w = (struct watchpoint *) bpt;
13089 else
13090 w = NULL;
13091 if (w != NULL)
13092 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13093
13094 /* Unlink bpt from the bpt->related_breakpoint ring. */
13095 for (related = bpt; related->related_breakpoint != bpt;
13096 related = related->related_breakpoint);
13097 related->related_breakpoint = bpt->related_breakpoint;
13098 bpt->related_breakpoint = bpt;
e5a0a904
JK
13099 }
13100
a9634178
TJB
13101 /* watch_command_1 creates a watchpoint but only sets its number if
13102 update_watchpoint succeeds in creating its bp_locations. If there's
13103 a problem in that process, we'll be asked to delete the half-created
13104 watchpoint. In that case, don't announce the deletion. */
13105 if (bpt->number)
76727919 13106 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 13107
c906108c
SS
13108 if (breakpoint_chain == bpt)
13109 breakpoint_chain = bpt->next;
13110
c906108c
SS
13111 ALL_BREAKPOINTS (b)
13112 if (b->next == bpt)
c5aa993b
JM
13113 {
13114 b->next = bpt->next;
13115 break;
13116 }
c906108c 13117
f431efe5
PA
13118 /* Be sure no bpstat's are pointing at the breakpoint after it's
13119 been freed. */
13120 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13121 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13122 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13123 commands are associated with the bpstat; if we remove it here,
13124 then the later call to bpstat_do_actions (&stop_bpstat); in
13125 event-top.c won't do anything, and temporary breakpoints with
13126 commands won't work. */
13127
13128 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13129
4a64f543
MS
13130 /* Now that breakpoint is removed from breakpoint list, update the
13131 global location list. This will remove locations that used to
13132 belong to this breakpoint. Do this before freeing the breakpoint
13133 itself, since remove_breakpoint looks at location's owner. It
13134 might be better design to have location completely
13135 self-contained, but it's not the case now. */
44702360 13136 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13137
4a64f543
MS
13138 /* On the chance that someone will soon try again to delete this
13139 same bp, we mark it as deleted before freeing its storage. */
c906108c 13140 bpt->type = bp_none;
4d01a485 13141 delete bpt;
c906108c
SS
13142}
13143
51be5b68
PA
13144/* Iterator function to call a user-provided callback function once
13145 for each of B and its related breakpoints. */
13146
13147static void
13148iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13149 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13150{
13151 struct breakpoint *related;
13152
13153 related = b;
13154 do
13155 {
13156 struct breakpoint *next;
13157
13158 /* FUNCTION may delete RELATED. */
13159 next = related->related_breakpoint;
13160
13161 if (next == related)
13162 {
13163 /* RELATED is the last ring entry. */
48649e1b 13164 function (related);
51be5b68
PA
13165
13166 /* FUNCTION may have deleted it, so we'd never reach back to
13167 B. There's nothing left to do anyway, so just break
13168 out. */
13169 break;
13170 }
13171 else
48649e1b 13172 function (related);
51be5b68
PA
13173
13174 related = next;
13175 }
13176 while (related != b);
13177}
95a42b64 13178
4495129a 13179static void
981a3fb3 13180delete_command (const char *arg, int from_tty)
c906108c 13181{
35df4500 13182 struct breakpoint *b, *b_tmp;
c906108c 13183
ea9365bb
TT
13184 dont_repeat ();
13185
c906108c
SS
13186 if (arg == 0)
13187 {
13188 int breaks_to_delete = 0;
13189
46c6471b
PA
13190 /* Delete all breakpoints if no argument. Do not delete
13191 internal breakpoints, these have to be deleted with an
13192 explicit breakpoint number argument. */
c5aa993b 13193 ALL_BREAKPOINTS (b)
46c6471b 13194 if (user_breakpoint_p (b))
973d738b
DJ
13195 {
13196 breaks_to_delete = 1;
13197 break;
13198 }
c906108c
SS
13199
13200 /* Ask user only if there are some breakpoints to delete. */
13201 if (!from_tty
e2e0b3e5 13202 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13203 {
35df4500 13204 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13205 if (user_breakpoint_p (b))
c5aa993b 13206 delete_breakpoint (b);
c906108c
SS
13207 }
13208 }
13209 else
48649e1b 13210 map_breakpoint_numbers
b926417a 13211 (arg, [&] (breakpoint *br)
48649e1b 13212 {
b926417a 13213 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 13214 });
c906108c
SS
13215}
13216
c2f4122d
PA
13217/* Return true if all locations of B bound to PSPACE are pending. If
13218 PSPACE is NULL, all locations of all program spaces are
13219 considered. */
13220
0d381245 13221static int
c2f4122d 13222all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13223{
c2f4122d
PA
13224 struct bp_location *loc;
13225
13226 for (loc = b->loc; loc != NULL; loc = loc->next)
13227 if ((pspace == NULL
13228 || loc->pspace == pspace)
13229 && !loc->shlib_disabled
8645ff69 13230 && !loc->pspace->executing_startup)
0d381245
VP
13231 return 0;
13232 return 1;
fe3f5fa8
VP
13233}
13234
776592bf
DE
13235/* Subroutine of update_breakpoint_locations to simplify it.
13236 Return non-zero if multiple fns in list LOC have the same name.
13237 Null names are ignored. */
13238
13239static int
13240ambiguous_names_p (struct bp_location *loc)
13241{
13242 struct bp_location *l;
459a2e4c
TT
13243 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13244 xcalloc, xfree);
776592bf
DE
13245
13246 for (l = loc; l != NULL; l = l->next)
13247 {
13248 const char **slot;
13249 const char *name = l->function_name;
13250
13251 /* Allow for some names to be NULL, ignore them. */
13252 if (name == NULL)
13253 continue;
13254
13255 slot = (const char **) htab_find_slot (htab, (const void *) name,
13256 INSERT);
4a64f543
MS
13257 /* NOTE: We can assume slot != NULL here because xcalloc never
13258 returns NULL. */
776592bf
DE
13259 if (*slot != NULL)
13260 {
13261 htab_delete (htab);
13262 return 1;
13263 }
13264 *slot = name;
13265 }
13266
13267 htab_delete (htab);
13268 return 0;
13269}
13270
0fb4aa4b
PA
13271/* When symbols change, it probably means the sources changed as well,
13272 and it might mean the static tracepoint markers are no longer at
13273 the same address or line numbers they used to be at last we
13274 checked. Losing your static tracepoints whenever you rebuild is
13275 undesirable. This function tries to resync/rematch gdb static
13276 tracepoints with the markers on the target, for static tracepoints
13277 that have not been set by marker id. Static tracepoint that have
13278 been set by marker id are reset by marker id in breakpoint_re_set.
13279 The heuristic is:
13280
13281 1) For a tracepoint set at a specific address, look for a marker at
13282 the old PC. If one is found there, assume to be the same marker.
13283 If the name / string id of the marker found is different from the
13284 previous known name, assume that means the user renamed the marker
13285 in the sources, and output a warning.
13286
13287 2) For a tracepoint set at a given line number, look for a marker
13288 at the new address of the old line number. If one is found there,
13289 assume to be the same marker. If the name / string id of the
13290 marker found is different from the previous known name, assume that
13291 means the user renamed the marker in the sources, and output a
13292 warning.
13293
13294 3) If a marker is no longer found at the same address or line, it
13295 may mean the marker no longer exists. But it may also just mean
13296 the code changed a bit. Maybe the user added a few lines of code
13297 that made the marker move up or down (in line number terms). Ask
13298 the target for info about the marker with the string id as we knew
13299 it. If found, update line number and address in the matching
13300 static tracepoint. This will get confused if there's more than one
13301 marker with the same ID (possible in UST, although unadvised
13302 precisely because it confuses tools). */
13303
13304static struct symtab_and_line
13305update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13306{
d9b3f62e 13307 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13308 struct static_tracepoint_marker marker;
13309 CORE_ADDR pc;
0fb4aa4b
PA
13310
13311 pc = sal.pc;
13312 if (sal.line)
13313 find_line_pc (sal.symtab, sal.line, &pc);
13314
13315 if (target_static_tracepoint_marker_at (pc, &marker))
13316 {
5d9310c4 13317 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 13318 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
13319 b->number, tp->static_trace_marker_id.c_str (),
13320 marker.str_id.c_str ());
0fb4aa4b 13321
5d9310c4 13322 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
13323
13324 return sal;
13325 }
13326
13327 /* Old marker wasn't found on target at lineno. Try looking it up
13328 by string ID. */
13329 if (!sal.explicit_pc
13330 && sal.line != 0
13331 && sal.symtab != NULL
5d9310c4 13332 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 13333 {
5d9310c4
SM
13334 std::vector<static_tracepoint_marker> markers
13335 = target_static_tracepoint_markers_by_strid
13336 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 13337
5d9310c4 13338 if (!markers.empty ())
0fb4aa4b 13339 {
0fb4aa4b 13340 struct symbol *sym;
80e1d417 13341 struct static_tracepoint_marker *tpmarker;
79a45e25 13342 struct ui_out *uiout = current_uiout;
67994074 13343 struct explicit_location explicit_loc;
0fb4aa4b 13344
5d9310c4 13345 tpmarker = &markers[0];
0fb4aa4b 13346
5d9310c4 13347 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
13348
13349 warning (_("marker for static tracepoint %d (%s) not "
13350 "found at previous line number"),
5d9310c4 13351 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 13352
51abb421 13353 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13354 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13355 uiout->text ("Now in ");
0fb4aa4b
PA
13356 if (sym)
13357 {
cbe56571
TT
13358 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13359 ui_out_style_kind::FUNCTION);
112e8700 13360 uiout->text (" at ");
0fb4aa4b 13361 }
112e8700 13362 uiout->field_string ("file",
cbe56571
TT
13363 symtab_to_filename_for_display (sal2.symtab),
13364 ui_out_style_kind::FILE);
112e8700 13365 uiout->text (":");
0fb4aa4b 13366
112e8700 13367 if (uiout->is_mi_like_p ())
0fb4aa4b 13368 {
0b0865da 13369 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13370
112e8700 13371 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13372 }
13373
112e8700
SM
13374 uiout->field_int ("line", sal2.line);
13375 uiout->text ("\n");
0fb4aa4b 13376
80e1d417 13377 b->loc->line_number = sal2.line;
2f202fde 13378 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13379
d28cd78a 13380 b->location.reset (NULL);
67994074
KS
13381 initialize_explicit_location (&explicit_loc);
13382 explicit_loc.source_filename
00e52e53 13383 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13384 explicit_loc.line_offset.offset = b->loc->line_number;
13385 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13386 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13387
13388 /* Might be nice to check if function changed, and warn if
13389 so. */
0fb4aa4b
PA
13390 }
13391 }
13392 return sal;
13393}
13394
8d3788bd
VP
13395/* Returns 1 iff locations A and B are sufficiently same that
13396 we don't need to report breakpoint as changed. */
13397
13398static int
13399locations_are_equal (struct bp_location *a, struct bp_location *b)
13400{
13401 while (a && b)
13402 {
13403 if (a->address != b->address)
13404 return 0;
13405
13406 if (a->shlib_disabled != b->shlib_disabled)
13407 return 0;
13408
13409 if (a->enabled != b->enabled)
13410 return 0;
13411
13412 a = a->next;
13413 b = b->next;
13414 }
13415
13416 if ((a == NULL) != (b == NULL))
13417 return 0;
13418
13419 return 1;
13420}
13421
c2f4122d
PA
13422/* Split all locations of B that are bound to PSPACE out of B's
13423 location list to a separate list and return that list's head. If
13424 PSPACE is NULL, hoist out all locations of B. */
13425
13426static struct bp_location *
13427hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13428{
13429 struct bp_location head;
13430 struct bp_location *i = b->loc;
13431 struct bp_location **i_link = &b->loc;
13432 struct bp_location *hoisted = &head;
13433
13434 if (pspace == NULL)
13435 {
13436 i = b->loc;
13437 b->loc = NULL;
13438 return i;
13439 }
13440
13441 head.next = NULL;
13442
13443 while (i != NULL)
13444 {
13445 if (i->pspace == pspace)
13446 {
13447 *i_link = i->next;
13448 i->next = NULL;
13449 hoisted->next = i;
13450 hoisted = i;
13451 }
13452 else
13453 i_link = &i->next;
13454 i = *i_link;
13455 }
13456
13457 return head.next;
13458}
13459
13460/* Create new breakpoint locations for B (a hardware or software
13461 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13462 zero, then B is a ranged breakpoint. Only recreates locations for
13463 FILTER_PSPACE. Locations of other program spaces are left
13464 untouched. */
f1310107 13465
0e30163f 13466void
0d381245 13467update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13468 struct program_space *filter_pspace,
6c5b2ebe
PA
13469 gdb::array_view<const symtab_and_line> sals,
13470 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 13471{
c2f4122d 13472 struct bp_location *existing_locations;
0d381245 13473
6c5b2ebe 13474 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13475 {
13476 /* Ranged breakpoints have only one start location and one end
13477 location. */
13478 b->enable_state = bp_disabled;
f8eba3c6
TT
13479 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13480 "multiple locations found\n"),
13481 b->number);
13482 return;
13483 }
f1310107 13484
4a64f543
MS
13485 /* If there's no new locations, and all existing locations are
13486 pending, don't do anything. This optimizes the common case where
13487 all locations are in the same shared library, that was unloaded.
13488 We'd like to retain the location, so that when the library is
13489 loaded again, we don't loose the enabled/disabled status of the
13490 individual locations. */
6c5b2ebe 13491 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13492 return;
13493
c2f4122d 13494 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13495
6c5b2ebe 13496 for (const auto &sal : sals)
fe3f5fa8 13497 {
f8eba3c6
TT
13498 struct bp_location *new_loc;
13499
6c5b2ebe 13500 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13501
6c5b2ebe 13502 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13503
0d381245
VP
13504 /* Reparse conditions, they might contain references to the
13505 old symtab. */
13506 if (b->cond_string != NULL)
13507 {
bbc13ae3 13508 const char *s;
fe3f5fa8 13509
0d381245 13510 s = b->cond_string;
a70b8144 13511 try
0d381245 13512 {
6c5b2ebe
PA
13513 new_loc->cond = parse_exp_1 (&s, sal.pc,
13514 block_for_pc (sal.pc),
0d381245
VP
13515 0);
13516 }
230d2906 13517 catch (const gdb_exception_error &e)
0d381245 13518 {
3e43a32a
MS
13519 warning (_("failed to reevaluate condition "
13520 "for breakpoint %d: %s"),
3d6e9d23 13521 b->number, e.what ());
0d381245
VP
13522 new_loc->enabled = 0;
13523 }
13524 }
fe3f5fa8 13525
6c5b2ebe 13526 if (!sals_end.empty ())
f1310107 13527 {
6c5b2ebe 13528 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13529
6c5b2ebe 13530 new_loc->length = end - sals[0].pc + 1;
f1310107 13531 }
0d381245 13532 }
fe3f5fa8 13533
4a64f543
MS
13534 /* If possible, carry over 'disable' status from existing
13535 breakpoints. */
0d381245
VP
13536 {
13537 struct bp_location *e = existing_locations;
776592bf
DE
13538 /* If there are multiple breakpoints with the same function name,
13539 e.g. for inline functions, comparing function names won't work.
13540 Instead compare pc addresses; this is just a heuristic as things
13541 may have moved, but in practice it gives the correct answer
13542 often enough until a better solution is found. */
13543 int have_ambiguous_names = ambiguous_names_p (b->loc);
13544
0d381245
VP
13545 for (; e; e = e->next)
13546 {
13547 if (!e->enabled && e->function_name)
13548 {
13549 struct bp_location *l = b->loc;
776592bf
DE
13550 if (have_ambiguous_names)
13551 {
13552 for (; l; l = l->next)
f1310107 13553 if (breakpoint_locations_match (e, l))
776592bf
DE
13554 {
13555 l->enabled = 0;
13556 break;
13557 }
13558 }
13559 else
13560 {
13561 for (; l; l = l->next)
13562 if (l->function_name
13563 && strcmp (e->function_name, l->function_name) == 0)
13564 {
13565 l->enabled = 0;
13566 break;
13567 }
13568 }
0d381245
VP
13569 }
13570 }
13571 }
fe3f5fa8 13572
8d3788bd 13573 if (!locations_are_equal (existing_locations, b->loc))
76727919 13574 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
13575}
13576
f00aae0f 13577/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13578 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13579
6c5b2ebe 13580static std::vector<symtab_and_line>
f00aae0f 13581location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13582 struct program_space *search_pspace, int *found)
ef23e705 13583{
cc06b668 13584 struct gdb_exception exception;
ef23e705 13585
983af33b 13586 gdb_assert (b->ops != NULL);
ef23e705 13587
6c5b2ebe
PA
13588 std::vector<symtab_and_line> sals;
13589
a70b8144 13590 try
ef23e705 13591 {
6c5b2ebe 13592 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13593 }
94aeb44b 13594 catch (gdb_exception_error &e)
ef23e705
TJB
13595 {
13596 int not_found_and_ok = 0;
492d29ea 13597
ef23e705
TJB
13598 /* For pending breakpoints, it's expected that parsing will
13599 fail until the right shared library is loaded. User has
13600 already told to create pending breakpoints and don't need
13601 extra messages. If breakpoint is in bp_shlib_disabled
13602 state, then user already saw the message about that
13603 breakpoint being disabled, and don't want to see more
13604 errors. */
58438ac1 13605 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13606 && (b->condition_not_parsed
13607 || (b->loc != NULL
13608 && search_pspace != NULL
13609 && b->loc->pspace != search_pspace)
ef23e705 13610 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13611 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13612 || b->enable_state == bp_disabled))
13613 not_found_and_ok = 1;
13614
13615 if (!not_found_and_ok)
13616 {
13617 /* We surely don't want to warn about the same breakpoint
13618 10 times. One solution, implemented here, is disable
13619 the breakpoint on error. Another solution would be to
13620 have separate 'warning emitted' flag. Since this
13621 happens only when a binary has changed, I don't know
13622 which approach is better. */
13623 b->enable_state = bp_disabled;
eedc3f4f 13624 throw;
ef23e705 13625 }
94aeb44b
TT
13626
13627 exception = std::move (e);
ef23e705
TJB
13628 }
13629
492d29ea 13630 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13631 {
6c5b2ebe
PA
13632 for (auto &sal : sals)
13633 resolve_sal_pc (&sal);
f00aae0f 13634 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13635 {
ed1d1739
KS
13636 char *cond_string, *extra_string;
13637 int thread, task;
ef23e705 13638
6c5b2ebe 13639 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
13640 &cond_string, &thread, &task,
13641 &extra_string);
f00aae0f 13642 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13643 if (cond_string)
13644 b->cond_string = cond_string;
13645 b->thread = thread;
13646 b->task = task;
e7e0cddf 13647 if (extra_string)
f00aae0f
KS
13648 {
13649 xfree (b->extra_string);
13650 b->extra_string = extra_string;
13651 }
ef23e705
TJB
13652 b->condition_not_parsed = 0;
13653 }
13654
983af33b 13655 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13656 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13657
58438ac1
TT
13658 *found = 1;
13659 }
13660 else
13661 *found = 0;
ef23e705
TJB
13662
13663 return sals;
13664}
13665
348d480f
PA
13666/* The default re_set method, for typical hardware or software
13667 breakpoints. Reevaluate the breakpoint and recreate its
13668 locations. */
13669
13670static void
28010a5d 13671breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13672{
c2f4122d 13673 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13674 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13675
6c5b2ebe
PA
13676 int found;
13677 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13678 filter_pspace, &found);
ef23e705 13679 if (found)
6c5b2ebe 13680 expanded = std::move (sals);
ef23e705 13681
f00aae0f 13682 if (b->location_range_end != NULL)
f1310107 13683 {
6c5b2ebe
PA
13684 std::vector<symtab_and_line> sals_end
13685 = location_to_sals (b, b->location_range_end.get (),
13686 filter_pspace, &found);
f1310107 13687 if (found)
6c5b2ebe 13688 expanded_end = std::move (sals_end);
f1310107
TJB
13689 }
13690
c2f4122d 13691 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13692}
13693
983af33b
SDJ
13694/* Default method for creating SALs from an address string. It basically
13695 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13696
13697static void
f00aae0f
KS
13698create_sals_from_location_default (const struct event_location *location,
13699 struct linespec_result *canonical,
13700 enum bptype type_wanted)
983af33b 13701{
f00aae0f 13702 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13703}
13704
13705/* Call create_breakpoints_sal for the given arguments. This is the default
13706 function for the `create_breakpoints_sal' method of
13707 breakpoint_ops. */
13708
13709static void
13710create_breakpoints_sal_default (struct gdbarch *gdbarch,
13711 struct linespec_result *canonical,
e1e01040
PA
13712 gdb::unique_xmalloc_ptr<char> cond_string,
13713 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13714 enum bptype type_wanted,
13715 enum bpdisp disposition,
13716 int thread,
13717 int task, int ignore_count,
13718 const struct breakpoint_ops *ops,
13719 int from_tty, int enabled,
44f238bb 13720 int internal, unsigned flags)
983af33b 13721{
e1e01040
PA
13722 create_breakpoints_sal (gdbarch, canonical,
13723 std::move (cond_string),
13724 std::move (extra_string),
983af33b
SDJ
13725 type_wanted, disposition,
13726 thread, task, ignore_count, ops, from_tty,
44f238bb 13727 enabled, internal, flags);
983af33b
SDJ
13728}
13729
13730/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13731 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13732
6c5b2ebe 13733static std::vector<symtab_and_line>
f00aae0f
KS
13734decode_location_default (struct breakpoint *b,
13735 const struct event_location *location,
6c5b2ebe 13736 struct program_space *search_pspace)
983af33b
SDJ
13737{
13738 struct linespec_result canonical;
13739
c2f4122d 13740 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
13741 (struct symtab *) NULL, 0,
13742 &canonical, multiple_symbols_all,
13743 b->filter);
13744
13745 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13746 gdb_assert (canonical.lsals.size () < 2);
983af33b 13747
6c5b2ebe 13748 if (!canonical.lsals.empty ())
983af33b 13749 {
6c5b2ebe
PA
13750 const linespec_sals &lsal = canonical.lsals[0];
13751 return std::move (lsal.sals);
983af33b 13752 }
6c5b2ebe 13753 return {};
983af33b
SDJ
13754}
13755
bf469271 13756/* Reset a breakpoint. */
c906108c 13757
bf469271
PA
13758static void
13759breakpoint_re_set_one (breakpoint *b)
c906108c 13760{
fdf44873
TT
13761 input_radix = b->input_radix;
13762 set_language (b->language);
c906108c 13763
348d480f 13764 b->ops->re_set (b);
c906108c
SS
13765}
13766
c2f4122d
PA
13767/* Re-set breakpoint locations for the current program space.
13768 Locations bound to other program spaces are left untouched. */
13769
c906108c 13770void
69de3c6a 13771breakpoint_re_set (void)
c906108c 13772{
35df4500 13773 struct breakpoint *b, *b_tmp;
2a7f3dff 13774
c5aa993b 13775 {
fdf44873
TT
13776 scoped_restore_current_language save_language;
13777 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13778 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13779
8e817061
JB
13780 /* breakpoint_re_set_one sets the current_language to the language
13781 of the breakpoint it is resetting (see prepare_re_set_context)
13782 before re-evaluating the breakpoint's location. This change can
13783 unfortunately get undone by accident if the language_mode is set
13784 to auto, and we either switch frames, or more likely in this context,
13785 we select the current frame.
13786
13787 We prevent this by temporarily turning the language_mode to
13788 language_mode_manual. We restore it once all breakpoints
13789 have been reset. */
13790 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13791 language_mode = language_mode_manual;
13792
5ed8105e
PA
13793 /* Note: we must not try to insert locations until after all
13794 breakpoints have been re-set. Otherwise, e.g., when re-setting
13795 breakpoint 1, we'd insert the locations of breakpoint 2, which
13796 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13797
5ed8105e
PA
13798 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13799 {
a70b8144 13800 try
bf469271
PA
13801 {
13802 breakpoint_re_set_one (b);
13803 }
230d2906 13804 catch (const gdb_exception &ex)
bf469271
PA
13805 {
13806 exception_fprintf (gdb_stderr, ex,
13807 "Error in re-setting breakpoint %d: ",
13808 b->number);
13809 }
5ed8105e 13810 }
5ed8105e
PA
13811
13812 jit_breakpoint_re_set ();
13813 }
6c95b8df 13814
af02033e
PP
13815 create_overlay_event_breakpoint ();
13816 create_longjmp_master_breakpoint ();
13817 create_std_terminate_master_breakpoint ();
186c406b 13818 create_exception_master_breakpoint ();
2a7f3dff
PA
13819
13820 /* Now we can insert. */
13821 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
13822}
13823\f
c906108c
SS
13824/* Reset the thread number of this breakpoint:
13825
13826 - If the breakpoint is for all threads, leave it as-is.
4a64f543 13827 - Else, reset it to the current thread for inferior_ptid. */
c906108c 13828void
fba45db2 13829breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
13830{
13831 if (b->thread != -1)
13832 {
00431a78 13833 b->thread = inferior_thread ()->global_num;
6c95b8df
PA
13834
13835 /* We're being called after following a fork. The new fork is
13836 selected as current, and unless this was a vfork will have a
13837 different program space from the original thread. Reset that
13838 as well. */
13839 b->loc->pspace = current_program_space;
c906108c
SS
13840 }
13841}
13842
03ac34d5
MS
13843/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13844 If from_tty is nonzero, it prints a message to that effect,
13845 which ends with a period (no newline). */
13846
c906108c 13847void
fba45db2 13848set_ignore_count (int bptnum, int count, int from_tty)
c906108c 13849{
52f0bd74 13850 struct breakpoint *b;
c906108c
SS
13851
13852 if (count < 0)
13853 count = 0;
13854
13855 ALL_BREAKPOINTS (b)
13856 if (b->number == bptnum)
c5aa993b 13857 {
d77f58be
SS
13858 if (is_tracepoint (b))
13859 {
13860 if (from_tty && count != 0)
13861 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13862 bptnum);
13863 return;
13864 }
13865
c5aa993b 13866 b->ignore_count = count;
221ea385
KS
13867 if (from_tty)
13868 {
13869 if (count == 0)
3e43a32a
MS
13870 printf_filtered (_("Will stop next time "
13871 "breakpoint %d is reached."),
221ea385
KS
13872 bptnum);
13873 else if (count == 1)
a3f17187 13874 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
13875 bptnum);
13876 else
3e43a32a
MS
13877 printf_filtered (_("Will ignore next %d "
13878 "crossings of breakpoint %d."),
221ea385
KS
13879 count, bptnum);
13880 }
76727919 13881 gdb::observers::breakpoint_modified.notify (b);
c5aa993b
JM
13882 return;
13883 }
c906108c 13884
8a3fe4f8 13885 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
13886}
13887
c906108c
SS
13888/* Command to set ignore-count of breakpoint N to COUNT. */
13889
13890static void
0b39b52e 13891ignore_command (const char *args, int from_tty)
c906108c 13892{
0b39b52e 13893 const char *p = args;
52f0bd74 13894 int num;
c906108c
SS
13895
13896 if (p == 0)
e2e0b3e5 13897 error_no_arg (_("a breakpoint number"));
c5aa993b 13898
c906108c 13899 num = get_number (&p);
5c44784c 13900 if (num == 0)
8a3fe4f8 13901 error (_("bad breakpoint number: '%s'"), args);
c906108c 13902 if (*p == 0)
8a3fe4f8 13903 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
13904
13905 set_ignore_count (num,
13906 longest_to_int (value_as_long (parse_and_eval (p))),
13907 from_tty);
221ea385
KS
13908 if (from_tty)
13909 printf_filtered ("\n");
c906108c
SS
13910}
13911\f
d0fe4701
XR
13912
13913/* Call FUNCTION on each of the breakpoints with numbers in the range
13914 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
13915
13916static void
d0fe4701
XR
13917map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13918 gdb::function_view<void (breakpoint *)> function)
c906108c 13919{
d0fe4701
XR
13920 if (bp_num_range.first == 0)
13921 {
13922 warning (_("bad breakpoint number at or near '%d'"),
13923 bp_num_range.first);
13924 }
13925 else
c906108c 13926 {
d0fe4701 13927 struct breakpoint *b, *tmp;
197f0a60 13928
d0fe4701 13929 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 13930 {
d0fe4701
XR
13931 bool match = false;
13932
5c44784c 13933 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 13934 if (b->number == i)
5c44784c 13935 {
bfd28288 13936 match = true;
48649e1b 13937 function (b);
11cf8741 13938 break;
5c44784c 13939 }
bfd28288 13940 if (!match)
d0fe4701 13941 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 13942 }
c906108c
SS
13943 }
13944}
13945
d0fe4701
XR
13946/* Call FUNCTION on each of the breakpoints whose numbers are given in
13947 ARGS. */
13948
13949static void
13950map_breakpoint_numbers (const char *args,
13951 gdb::function_view<void (breakpoint *)> function)
13952{
13953 if (args == NULL || *args == '\0')
13954 error_no_arg (_("one or more breakpoint numbers"));
13955
13956 number_or_range_parser parser (args);
13957
13958 while (!parser.finished ())
13959 {
13960 int num = parser.get_number ();
13961 map_breakpoint_number_range (std::make_pair (num, num), function);
13962 }
13963}
13964
13965/* Return the breakpoint location structure corresponding to the
13966 BP_NUM and LOC_NUM values. */
13967
0d381245 13968static struct bp_location *
d0fe4701 13969find_location_by_number (int bp_num, int loc_num)
0d381245 13970{
0d381245 13971 struct breakpoint *b;
0d381245
VP
13972
13973 ALL_BREAKPOINTS (b)
13974 if (b->number == bp_num)
13975 {
13976 break;
13977 }
13978
13979 if (!b || b->number != bp_num)
d0fe4701 13980 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 13981
0d381245 13982 if (loc_num == 0)
d0fe4701 13983 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 13984
d0fe4701
XR
13985 int n = 0;
13986 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13987 if (++n == loc_num)
13988 return loc;
13989
13990 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
13991}
13992
95e95a6d
PA
13993/* Modes of operation for extract_bp_num. */
13994enum class extract_bp_kind
13995{
13996 /* Extracting a breakpoint number. */
13997 bp,
13998
13999 /* Extracting a location number. */
14000 loc,
14001};
14002
14003/* Extract a breakpoint or location number (as determined by KIND)
14004 from the string starting at START. TRAILER is a character which
14005 can be found after the number. If you don't want a trailer, use
14006 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14007 string. This always returns a positive integer. */
14008
14009static int
14010extract_bp_num (extract_bp_kind kind, const char *start,
14011 int trailer, const char **end_out = NULL)
14012{
14013 const char *end = start;
14014 int num = get_number_trailer (&end, trailer);
14015 if (num < 0)
14016 error (kind == extract_bp_kind::bp
14017 ? _("Negative breakpoint number '%.*s'")
14018 : _("Negative breakpoint location number '%.*s'"),
14019 int (end - start), start);
14020 if (num == 0)
14021 error (kind == extract_bp_kind::bp
14022 ? _("Bad breakpoint number '%.*s'")
14023 : _("Bad breakpoint location number '%.*s'"),
14024 int (end - start), start);
14025
14026 if (end_out != NULL)
14027 *end_out = end;
14028 return num;
14029}
14030
14031/* Extract a breakpoint or location range (as determined by KIND) in
14032 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14033 representing the (inclusive) range. The returned pair's elements
14034 are always positive integers. */
14035
14036static std::pair<int, int>
14037extract_bp_or_bp_range (extract_bp_kind kind,
14038 const std::string &arg,
14039 std::string::size_type arg_offset)
14040{
14041 std::pair<int, int> range;
14042 const char *bp_loc = &arg[arg_offset];
14043 std::string::size_type dash = arg.find ('-', arg_offset);
14044 if (dash != std::string::npos)
14045 {
14046 /* bp_loc is a range (x-z). */
14047 if (arg.length () == dash + 1)
14048 error (kind == extract_bp_kind::bp
14049 ? _("Bad breakpoint number at or near: '%s'")
14050 : _("Bad breakpoint location number at or near: '%s'"),
14051 bp_loc);
14052
14053 const char *end;
14054 const char *start_first = bp_loc;
14055 const char *start_second = &arg[dash + 1];
14056 range.first = extract_bp_num (kind, start_first, '-');
14057 range.second = extract_bp_num (kind, start_second, '\0', &end);
14058
14059 if (range.first > range.second)
14060 error (kind == extract_bp_kind::bp
14061 ? _("Inverted breakpoint range at '%.*s'")
14062 : _("Inverted breakpoint location range at '%.*s'"),
14063 int (end - start_first), start_first);
14064 }
14065 else
14066 {
14067 /* bp_loc is a single value. */
14068 range.first = extract_bp_num (kind, bp_loc, '\0');
14069 range.second = range.first;
14070 }
14071 return range;
14072}
14073
d0fe4701
XR
14074/* Extract the breakpoint/location range specified by ARG. Returns
14075 the breakpoint range in BP_NUM_RANGE, and the location range in
14076 BP_LOC_RANGE.
14077
14078 ARG may be in any of the following forms:
14079
14080 x where 'x' is a breakpoint number.
14081 x-y where 'x' and 'y' specify a breakpoint numbers range.
14082 x.y where 'x' is a breakpoint number and 'y' a location number.
14083 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14084 location number range.
14085*/
14086
cc638e86 14087static void
d0fe4701
XR
14088extract_bp_number_and_location (const std::string &arg,
14089 std::pair<int, int> &bp_num_range,
14090 std::pair<int, int> &bp_loc_range)
14091{
14092 std::string::size_type dot = arg.find ('.');
14093
14094 if (dot != std::string::npos)
14095 {
14096 /* Handle 'x.y' and 'x.y-z' cases. */
14097
14098 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14099 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14100
95e95a6d
PA
14101 bp_num_range.first
14102 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14103 bp_num_range.second = bp_num_range.first;
d0fe4701 14104
95e95a6d
PA
14105 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14106 arg, dot + 1);
d0fe4701
XR
14107 }
14108 else
14109 {
14110 /* Handle x and x-y cases. */
d0fe4701 14111
95e95a6d 14112 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14113 bp_loc_range.first = 0;
14114 bp_loc_range.second = 0;
14115 }
d0fe4701
XR
14116}
14117
14118/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14119 specifies whether to enable or disable. */
14120
14121static void
14122enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14123{
14124 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14125 if (loc != NULL)
14126 {
14127 if (loc->enabled != enable)
14128 {
14129 loc->enabled = enable;
14130 mark_breakpoint_location_modified (loc);
14131 }
14132 if (target_supports_enable_disable_tracepoint ()
14133 && current_trace_status ()->running && loc->owner
14134 && is_tracepoint (loc->owner))
14135 target_disable_tracepoint (loc);
14136 }
14137 update_global_location_list (UGLL_DONT_INSERT);
d7154a8d
JV
14138
14139 gdb::observers::breakpoint_modified.notify (loc->owner);
d0fe4701
XR
14140}
14141
14142/* Enable or disable a range of breakpoint locations. BP_NUM is the
14143 number of the breakpoint, and BP_LOC_RANGE specifies the
14144 (inclusive) range of location numbers of that breakpoint to
14145 enable/disable. ENABLE specifies whether to enable or disable the
14146 location. */
14147
14148static void
14149enable_disable_breakpoint_location_range (int bp_num,
14150 std::pair<int, int> &bp_loc_range,
14151 bool enable)
14152{
14153 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14154 enable_disable_bp_num_loc (bp_num, i, enable);
14155}
0d381245 14156
1900040c
MS
14157/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14158 If from_tty is nonzero, it prints a message to that effect,
14159 which ends with a period (no newline). */
14160
c906108c 14161void
fba45db2 14162disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14163{
14164 /* Never disable a watchpoint scope breakpoint; we want to
14165 hit them when we leave scope so we can delete both the
14166 watchpoint and its scope breakpoint at that time. */
14167 if (bpt->type == bp_watchpoint_scope)
14168 return;
14169
b5de0fa7 14170 bpt->enable_state = bp_disabled;
c906108c 14171
b775012e
LM
14172 /* Mark breakpoint locations modified. */
14173 mark_breakpoint_modified (bpt);
14174
d248b706
KY
14175 if (target_supports_enable_disable_tracepoint ()
14176 && current_trace_status ()->running && is_tracepoint (bpt))
14177 {
14178 struct bp_location *location;
14179
14180 for (location = bpt->loc; location; location = location->next)
14181 target_disable_tracepoint (location);
14182 }
14183
44702360 14184 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14185
76727919 14186 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14187}
14188
d0fe4701
XR
14189/* Enable or disable the breakpoint(s) or breakpoint location(s)
14190 specified in ARGS. ARGS may be in any of the formats handled by
14191 extract_bp_number_and_location. ENABLE specifies whether to enable
14192 or disable the breakpoints/locations. */
14193
c906108c 14194static void
d0fe4701 14195enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14196{
c906108c 14197 if (args == 0)
46c6471b
PA
14198 {
14199 struct breakpoint *bpt;
14200
14201 ALL_BREAKPOINTS (bpt)
14202 if (user_breakpoint_p (bpt))
d0fe4701
XR
14203 {
14204 if (enable)
14205 enable_breakpoint (bpt);
14206 else
14207 disable_breakpoint (bpt);
14208 }
46c6471b 14209 }
9eaabc75 14210 else
0d381245 14211 {
cb791d59 14212 std::string num = extract_arg (&args);
9eaabc75 14213
cb791d59 14214 while (!num.empty ())
d248b706 14215 {
d0fe4701 14216 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14217
cc638e86
PA
14218 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14219
14220 if (bp_loc_range.first == bp_loc_range.second
14221 && bp_loc_range.first == 0)
d0fe4701 14222 {
cc638e86
PA
14223 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14224 map_breakpoint_number_range (bp_num_range,
14225 enable
14226 ? enable_breakpoint
14227 : disable_breakpoint);
14228 }
14229 else
14230 {
14231 /* Handle breakpoint ids with formats 'x.y' or
14232 'x.y-z'. */
14233 enable_disable_breakpoint_location_range
14234 (bp_num_range.first, bp_loc_range, enable);
b775012e 14235 }
9eaabc75 14236 num = extract_arg (&args);
d248b706 14237 }
0d381245 14238 }
c906108c
SS
14239}
14240
d0fe4701
XR
14241/* The disable command disables the specified breakpoints/locations
14242 (or all defined breakpoints) so they're no longer effective in
14243 stopping the inferior. ARGS may be in any of the forms defined in
14244 extract_bp_number_and_location. */
14245
14246static void
14247disable_command (const char *args, int from_tty)
14248{
14249 enable_disable_command (args, from_tty, false);
14250}
14251
c906108c 14252static void
816338b5
SS
14253enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14254 int count)
c906108c 14255{
afe38095 14256 int target_resources_ok;
c906108c
SS
14257
14258 if (bpt->type == bp_hardware_breakpoint)
14259 {
14260 int i;
c5aa993b 14261 i = hw_breakpoint_used_count ();
53a5351d 14262 target_resources_ok =
d92524f1 14263 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14264 i + 1, 0);
c906108c 14265 if (target_resources_ok == 0)
8a3fe4f8 14266 error (_("No hardware breakpoint support in the target."));
c906108c 14267 else if (target_resources_ok < 0)
8a3fe4f8 14268 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14269 }
14270
cc60f2e3 14271 if (is_watchpoint (bpt))
c906108c 14272 {
d07205c2 14273 /* Initialize it just to avoid a GCC false warning. */
f486487f 14274 enum enable_state orig_enable_state = bp_disabled;
dde02812 14275
a70b8144 14276 try
c906108c 14277 {
3a5c3e22
PA
14278 struct watchpoint *w = (struct watchpoint *) bpt;
14279
1e718ff1
TJB
14280 orig_enable_state = bpt->enable_state;
14281 bpt->enable_state = bp_enabled;
3a5c3e22 14282 update_watchpoint (w, 1 /* reparse */);
c906108c 14283 }
230d2906 14284 catch (const gdb_exception &e)
c5aa993b 14285 {
1e718ff1 14286 bpt->enable_state = orig_enable_state;
dde02812
ES
14287 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14288 bpt->number);
14289 return;
c5aa993b 14290 }
c906108c 14291 }
0101ce28 14292
b775012e
LM
14293 bpt->enable_state = bp_enabled;
14294
14295 /* Mark breakpoint locations modified. */
14296 mark_breakpoint_modified (bpt);
14297
d248b706
KY
14298 if (target_supports_enable_disable_tracepoint ()
14299 && current_trace_status ()->running && is_tracepoint (bpt))
14300 {
14301 struct bp_location *location;
14302
14303 for (location = bpt->loc; location; location = location->next)
14304 target_enable_tracepoint (location);
14305 }
14306
b4c291bb 14307 bpt->disposition = disposition;
816338b5 14308 bpt->enable_count = count;
44702360 14309 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14310
76727919 14311 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14312}
14313
fe3f5fa8 14314
c906108c 14315void
fba45db2 14316enable_breakpoint (struct breakpoint *bpt)
c906108c 14317{
816338b5 14318 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14319}
14320
d0fe4701
XR
14321/* The enable command enables the specified breakpoints/locations (or
14322 all defined breakpoints) so they once again become (or continue to
14323 be) effective in stopping the inferior. ARGS may be in any of the
14324 forms defined in extract_bp_number_and_location. */
c906108c 14325
c906108c 14326static void
981a3fb3 14327enable_command (const char *args, int from_tty)
c906108c 14328{
d0fe4701 14329 enable_disable_command (args, from_tty, true);
c906108c
SS
14330}
14331
c906108c 14332static void
4495129a 14333enable_once_command (const char *args, int from_tty)
c906108c 14334{
48649e1b
TT
14335 map_breakpoint_numbers
14336 (args, [&] (breakpoint *b)
14337 {
14338 iterate_over_related_breakpoints
14339 (b, [&] (breakpoint *bpt)
14340 {
14341 enable_breakpoint_disp (bpt, disp_disable, 1);
14342 });
14343 });
816338b5
SS
14344}
14345
14346static void
4495129a 14347enable_count_command (const char *args, int from_tty)
816338b5 14348{
b9d61307
SM
14349 int count;
14350
14351 if (args == NULL)
14352 error_no_arg (_("hit count"));
14353
14354 count = get_number (&args);
816338b5 14355
48649e1b
TT
14356 map_breakpoint_numbers
14357 (args, [&] (breakpoint *b)
14358 {
14359 iterate_over_related_breakpoints
14360 (b, [&] (breakpoint *bpt)
14361 {
14362 enable_breakpoint_disp (bpt, disp_disable, count);
14363 });
14364 });
c906108c
SS
14365}
14366
c906108c 14367static void
4495129a 14368enable_delete_command (const char *args, int from_tty)
c906108c 14369{
48649e1b
TT
14370 map_breakpoint_numbers
14371 (args, [&] (breakpoint *b)
14372 {
14373 iterate_over_related_breakpoints
14374 (b, [&] (breakpoint *bpt)
14375 {
14376 enable_breakpoint_disp (bpt, disp_del, 1);
14377 });
14378 });
c906108c
SS
14379}
14380\f
fa8d40ab 14381static void
981a3fb3 14382set_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14383{
14384}
14385
14386static void
981a3fb3 14387show_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14388{
14389}
14390
1f3b5d1b
PP
14391/* Invalidate last known value of any hardware watchpoint if
14392 the memory which that value represents has been written to by
14393 GDB itself. */
14394
14395static void
8de0566d
YQ
14396invalidate_bp_value_on_memory_change (struct inferior *inferior,
14397 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14398 const bfd_byte *data)
14399{
14400 struct breakpoint *bp;
14401
14402 ALL_BREAKPOINTS (bp)
14403 if (bp->enable_state == bp_enabled
3a5c3e22 14404 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14405 {
3a5c3e22 14406 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14407
850645cf 14408 if (wp->val_valid && wp->val != nullptr)
3a5c3e22
PA
14409 {
14410 struct bp_location *loc;
14411
14412 for (loc = bp->loc; loc != NULL; loc = loc->next)
14413 if (loc->loc_type == bp_loc_hardware_watchpoint
14414 && loc->address + loc->length > addr
14415 && addr + len > loc->address)
14416 {
3a5c3e22
PA
14417 wp->val = NULL;
14418 wp->val_valid = 0;
14419 }
14420 }
1f3b5d1b
PP
14421 }
14422}
14423
8181d85f
DJ
14424/* Create and insert a breakpoint for software single step. */
14425
14426void
6c95b8df 14427insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14428 const address_space *aspace,
4a64f543 14429 CORE_ADDR next_pc)
8181d85f 14430{
7c16b83e
PA
14431 struct thread_info *tp = inferior_thread ();
14432 struct symtab_and_line sal;
14433 CORE_ADDR pc = next_pc;
8181d85f 14434
34b7e8a6
PA
14435 if (tp->control.single_step_breakpoints == NULL)
14436 {
14437 tp->control.single_step_breakpoints
5d5658a1 14438 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14439 }
8181d85f 14440
7c16b83e
PA
14441 sal = find_pc_line (pc, 0);
14442 sal.pc = pc;
14443 sal.section = find_pc_overlay (pc);
14444 sal.explicit_pc = 1;
34b7e8a6 14445 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14446
7c16b83e 14447 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14448}
14449
93f9a11f
YQ
14450/* Insert single step breakpoints according to the current state. */
14451
14452int
14453insert_single_step_breakpoints (struct gdbarch *gdbarch)
14454{
f5ea389a 14455 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14456 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14457
f5ea389a 14458 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14459
a0ff9e1a 14460 if (!next_pcs.empty ())
93f9a11f 14461 {
f5ea389a 14462 struct frame_info *frame = get_current_frame ();
8b86c959 14463 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14464
a0ff9e1a 14465 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14466 insert_single_step_breakpoint (gdbarch, aspace, pc);
14467
93f9a11f
YQ
14468 return 1;
14469 }
14470 else
14471 return 0;
14472}
14473
34b7e8a6 14474/* See breakpoint.h. */
f02253f1
HZ
14475
14476int
7c16b83e 14477breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14478 const address_space *aspace,
7c16b83e 14479 CORE_ADDR pc)
1aafd4da 14480{
7c16b83e 14481 struct bp_location *loc;
1aafd4da 14482
7c16b83e
PA
14483 for (loc = bp->loc; loc != NULL; loc = loc->next)
14484 if (loc->inserted
14485 && breakpoint_location_address_match (loc, aspace, pc))
14486 return 1;
1aafd4da 14487
7c16b83e 14488 return 0;
ef370185
JB
14489}
14490
14491/* Check whether a software single-step breakpoint is inserted at
14492 PC. */
14493
14494int
accd0bcd 14495single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14496 CORE_ADDR pc)
14497{
34b7e8a6
PA
14498 struct breakpoint *bpt;
14499
14500 ALL_BREAKPOINTS (bpt)
14501 {
14502 if (bpt->type == bp_single_step
14503 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14504 return 1;
14505 }
14506 return 0;
1aafd4da
UW
14507}
14508
1042e4c0
SS
14509/* Tracepoint-specific operations. */
14510
14511/* Set tracepoint count to NUM. */
14512static void
14513set_tracepoint_count (int num)
14514{
14515 tracepoint_count = num;
4fa62494 14516 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14517}
14518
70221824 14519static void
0b39b52e 14520trace_command (const char *arg, int from_tty)
1042e4c0 14521{
55aa24fb 14522 struct breakpoint_ops *ops;
55aa24fb 14523
ffc2605c
TT
14524 event_location_up location = string_to_event_location (&arg,
14525 current_language);
5b56227b 14526 if (location != NULL
ffc2605c 14527 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14528 ops = &tracepoint_probe_breakpoint_ops;
14529 else
14530 ops = &tracepoint_breakpoint_ops;
14531
558a9d82 14532 create_breakpoint (get_current_arch (),
ffc2605c 14533 location.get (),
f00aae0f 14534 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14535 0 /* tempflag */,
14536 bp_tracepoint /* type_wanted */,
14537 0 /* Ignore count */,
14538 pending_break_support,
14539 ops,
14540 from_tty,
14541 1 /* enabled */,
14542 0 /* internal */, 0);
1042e4c0
SS
14543}
14544
70221824 14545static void
0b39b52e 14546ftrace_command (const char *arg, int from_tty)
7a697b8d 14547{
ffc2605c
TT
14548 event_location_up location = string_to_event_location (&arg,
14549 current_language);
558a9d82 14550 create_breakpoint (get_current_arch (),
ffc2605c 14551 location.get (),
f00aae0f 14552 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14553 0 /* tempflag */,
14554 bp_fast_tracepoint /* type_wanted */,
14555 0 /* Ignore count */,
14556 pending_break_support,
14557 &tracepoint_breakpoint_ops,
14558 from_tty,
14559 1 /* enabled */,
14560 0 /* internal */, 0);
0fb4aa4b
PA
14561}
14562
14563/* strace command implementation. Creates a static tracepoint. */
14564
70221824 14565static void
0b39b52e 14566strace_command (const char *arg, int from_tty)
0fb4aa4b 14567{
983af33b 14568 struct breakpoint_ops *ops;
ffc2605c 14569 event_location_up location;
983af33b
SDJ
14570
14571 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14572 or with a normal static tracepoint. */
61012eef 14573 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14574 {
14575 ops = &strace_marker_breakpoint_ops;
a20714ff 14576 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 14577 }
983af33b 14578 else
f00aae0f
KS
14579 {
14580 ops = &tracepoint_breakpoint_ops;
14581 location = string_to_event_location (&arg, current_language);
14582 }
983af33b 14583
558a9d82 14584 create_breakpoint (get_current_arch (),
ffc2605c 14585 location.get (),
f00aae0f 14586 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14587 0 /* tempflag */,
14588 bp_static_tracepoint /* type_wanted */,
14589 0 /* Ignore count */,
14590 pending_break_support,
14591 ops,
14592 from_tty,
14593 1 /* enabled */,
14594 0 /* internal */, 0);
7a697b8d
SS
14595}
14596
409873ef
SS
14597/* Set up a fake reader function that gets command lines from a linked
14598 list that was acquired during tracepoint uploading. */
14599
14600static struct uploaded_tp *this_utp;
3149d8c1 14601static int next_cmd;
409873ef
SS
14602
14603static char *
14604read_uploaded_action (void)
14605{
a18ba4e4 14606 char *rslt = nullptr;
409873ef 14607
a18ba4e4
SM
14608 if (next_cmd < this_utp->cmd_strings.size ())
14609 {
67aa1f3c 14610 rslt = this_utp->cmd_strings[next_cmd].get ();
a18ba4e4
SM
14611 next_cmd++;
14612 }
409873ef
SS
14613
14614 return rslt;
14615}
14616
00bf0b85
SS
14617/* Given information about a tracepoint as recorded on a target (which
14618 can be either a live system or a trace file), attempt to create an
14619 equivalent GDB tracepoint. This is not a reliable process, since
14620 the target does not necessarily have all the information used when
14621 the tracepoint was originally defined. */
14622
d9b3f62e 14623struct tracepoint *
00bf0b85 14624create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14625{
f2fc3015
TT
14626 const char *addr_str;
14627 char small_buf[100];
d9b3f62e 14628 struct tracepoint *tp;
fd9b8c24 14629
409873ef 14630 if (utp->at_string)
67aa1f3c 14631 addr_str = utp->at_string.get ();
409873ef
SS
14632 else
14633 {
14634 /* In the absence of a source location, fall back to raw
14635 address. Since there is no way to confirm that the address
14636 means the same thing as when the trace was started, warn the
14637 user. */
3e43a32a
MS
14638 warning (_("Uploaded tracepoint %d has no "
14639 "source location, using raw address"),
409873ef 14640 utp->number);
8c042590 14641 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14642 addr_str = small_buf;
14643 }
14644
14645 /* There's not much we can do with a sequence of bytecodes. */
14646 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14647 warning (_("Uploaded tracepoint %d condition "
14648 "has no source form, ignoring it"),
409873ef 14649 utp->number);
d5551862 14650
ffc2605c
TT
14651 event_location_up location = string_to_event_location (&addr_str,
14652 current_language);
8cdf0e15 14653 if (!create_breakpoint (get_current_arch (),
ffc2605c 14654 location.get (),
67aa1f3c 14655 utp->cond_string.get (), -1, addr_str,
e7e0cddf 14656 0 /* parse cond/thread */,
8cdf0e15 14657 0 /* tempflag */,
0fb4aa4b 14658 utp->type /* type_wanted */,
8cdf0e15
VP
14659 0 /* Ignore count */,
14660 pending_break_support,
348d480f 14661 &tracepoint_breakpoint_ops,
8cdf0e15 14662 0 /* from_tty */,
84f4c1fe 14663 utp->enabled /* enabled */,
44f238bb
PA
14664 0 /* internal */,
14665 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14666 return NULL;
fd9b8c24 14667
409873ef 14668 /* Get the tracepoint we just created. */
fd9b8c24
PA
14669 tp = get_tracepoint (tracepoint_count);
14670 gdb_assert (tp != NULL);
d5551862 14671
00bf0b85
SS
14672 if (utp->pass > 0)
14673 {
8c042590 14674 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14675 tp->number);
00bf0b85 14676
409873ef 14677 trace_pass_command (small_buf, 0);
00bf0b85
SS
14678 }
14679
409873ef
SS
14680 /* If we have uploaded versions of the original commands, set up a
14681 special-purpose "reader" function and call the usual command line
14682 reader, then pass the result to the breakpoint command-setting
14683 function. */
a18ba4e4 14684 if (!utp->cmd_strings.empty ())
00bf0b85 14685 {
12973681 14686 counted_command_line cmd_list;
00bf0b85 14687
409873ef 14688 this_utp = utp;
3149d8c1 14689 next_cmd = 0;
d5551862 14690
60b3cef2 14691 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
409873ef 14692
c1fc2657 14693 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14694 }
a18ba4e4
SM
14695 else if (!utp->actions.empty ()
14696 || !utp->step_actions.empty ())
3e43a32a
MS
14697 warning (_("Uploaded tracepoint %d actions "
14698 "have no source form, ignoring them"),
409873ef 14699 utp->number);
00bf0b85 14700
f196051f 14701 /* Copy any status information that might be available. */
c1fc2657 14702 tp->hit_count = utp->hit_count;
f196051f
SS
14703 tp->traceframe_usage = utp->traceframe_usage;
14704
00bf0b85 14705 return tp;
d9b3f62e 14706}
00bf0b85 14707
1042e4c0
SS
14708/* Print information on tracepoint number TPNUM_EXP, or all if
14709 omitted. */
14710
14711static void
1d12d88f 14712info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14713{
79a45e25 14714 struct ui_out *uiout = current_uiout;
e5a67952 14715 int num_printed;
1042e4c0 14716
e5a67952 14717 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
14718
14719 if (num_printed == 0)
1042e4c0 14720 {
e5a67952 14721 if (args == NULL || *args == '\0')
112e8700 14722 uiout->message ("No tracepoints.\n");
d77f58be 14723 else
112e8700 14724 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14725 }
ad443146
SS
14726
14727 default_collect_info ();
1042e4c0
SS
14728}
14729
4a64f543 14730/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14731 Not supported by all targets. */
14732static void
5fed81ff 14733enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14734{
14735 enable_command (args, from_tty);
14736}
14737
4a64f543 14738/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14739 Not supported by all targets. */
14740static void
5fed81ff 14741disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14742{
14743 disable_command (args, from_tty);
14744}
14745
4a64f543 14746/* Remove a tracepoint (or all if no argument). */
1042e4c0 14747static void
4495129a 14748delete_trace_command (const char *arg, int from_tty)
1042e4c0 14749{
35df4500 14750 struct breakpoint *b, *b_tmp;
1042e4c0
SS
14751
14752 dont_repeat ();
14753
14754 if (arg == 0)
14755 {
14756 int breaks_to_delete = 0;
14757
14758 /* Delete all breakpoints if no argument.
14759 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
14760 have to be deleted with an explicit breakpoint number
14761 argument. */
1042e4c0 14762 ALL_TRACEPOINTS (b)
46c6471b 14763 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
14764 {
14765 breaks_to_delete = 1;
14766 break;
14767 }
1042e4c0
SS
14768
14769 /* Ask user only if there are some breakpoints to delete. */
14770 if (!from_tty
14771 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14772 {
35df4500 14773 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 14774 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14775 delete_breakpoint (b);
1042e4c0
SS
14776 }
14777 }
14778 else
48649e1b 14779 map_breakpoint_numbers
b926417a 14780 (arg, [&] (breakpoint *br)
48649e1b 14781 {
b926417a 14782 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 14783 });
1042e4c0
SS
14784}
14785
197f0a60
TT
14786/* Helper function for trace_pass_command. */
14787
14788static void
d9b3f62e 14789trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14790{
d9b3f62e 14791 tp->pass_count = count;
76727919 14792 gdb::observers::breakpoint_modified.notify (tp);
197f0a60
TT
14793 if (from_tty)
14794 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 14795 tp->number, count);
197f0a60
TT
14796}
14797
1042e4c0
SS
14798/* Set passcount for tracepoint.
14799
14800 First command argument is passcount, second is tracepoint number.
14801 If tracepoint number omitted, apply to most recently defined.
14802 Also accepts special argument "all". */
14803
14804static void
0b39b52e 14805trace_pass_command (const char *args, int from_tty)
1042e4c0 14806{
d9b3f62e 14807 struct tracepoint *t1;
0b39b52e 14808 ULONGEST count;
1042e4c0
SS
14809
14810 if (args == 0 || *args == 0)
3e43a32a
MS
14811 error (_("passcount command requires an "
14812 "argument (count + optional TP num)"));
1042e4c0 14813
0b39b52e 14814 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 14815
529480d0 14816 args = skip_spaces (args);
1042e4c0
SS
14817 if (*args && strncasecmp (args, "all", 3) == 0)
14818 {
d9b3f62e
PA
14819 struct breakpoint *b;
14820
1042e4c0 14821 args += 3; /* Skip special argument "all". */
1042e4c0
SS
14822 if (*args)
14823 error (_("Junk at end of arguments."));
1042e4c0 14824
d9b3f62e 14825 ALL_TRACEPOINTS (b)
197f0a60 14826 {
d9b3f62e 14827 t1 = (struct tracepoint *) b;
197f0a60
TT
14828 trace_pass_set_count (t1, count, from_tty);
14829 }
14830 }
14831 else if (*args == '\0')
1042e4c0 14832 {
5fa1d40e 14833 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 14834 if (t1)
197f0a60
TT
14835 trace_pass_set_count (t1, count, from_tty);
14836 }
14837 else
14838 {
bfd28288
PA
14839 number_or_range_parser parser (args);
14840 while (!parser.finished ())
1042e4c0 14841 {
bfd28288 14842 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
14843 if (t1)
14844 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
14845 }
14846 }
1042e4c0
SS
14847}
14848
d9b3f62e 14849struct tracepoint *
1042e4c0
SS
14850get_tracepoint (int num)
14851{
14852 struct breakpoint *t;
14853
14854 ALL_TRACEPOINTS (t)
14855 if (t->number == num)
d9b3f62e 14856 return (struct tracepoint *) t;
1042e4c0
SS
14857
14858 return NULL;
14859}
14860
d5551862
SS
14861/* Find the tracepoint with the given target-side number (which may be
14862 different from the tracepoint number after disconnecting and
14863 reconnecting). */
14864
d9b3f62e 14865struct tracepoint *
d5551862
SS
14866get_tracepoint_by_number_on_target (int num)
14867{
d9b3f62e 14868 struct breakpoint *b;
d5551862 14869
d9b3f62e
PA
14870 ALL_TRACEPOINTS (b)
14871 {
14872 struct tracepoint *t = (struct tracepoint *) b;
14873
14874 if (t->number_on_target == num)
14875 return t;
14876 }
d5551862
SS
14877
14878 return NULL;
14879}
14880
1042e4c0 14881/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 14882 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
14883 If the argument is missing, the most recent tracepoint
14884 (tracepoint_count) is returned. */
14885
d9b3f62e 14886struct tracepoint *
0b39b52e 14887get_tracepoint_by_number (const char **arg,
bfd28288 14888 number_or_range_parser *parser)
1042e4c0 14889{
1042e4c0
SS
14890 struct breakpoint *t;
14891 int tpnum;
0b39b52e 14892 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 14893
bfd28288 14894 if (parser != NULL)
197f0a60 14895 {
bfd28288
PA
14896 gdb_assert (!parser->finished ());
14897 tpnum = parser->get_number ();
197f0a60
TT
14898 }
14899 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 14900 tpnum = tracepoint_count;
1042e4c0 14901 else
197f0a60 14902 tpnum = get_number (arg);
1042e4c0
SS
14903
14904 if (tpnum <= 0)
14905 {
14906 if (instring && *instring)
14907 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14908 instring);
14909 else
5fa1d40e 14910 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
14911 return NULL;
14912 }
14913
14914 ALL_TRACEPOINTS (t)
14915 if (t->number == tpnum)
14916 {
d9b3f62e 14917 return (struct tracepoint *) t;
1042e4c0
SS
14918 }
14919
1042e4c0
SS
14920 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14921 return NULL;
14922}
14923
d9b3f62e
PA
14924void
14925print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14926{
14927 if (b->thread != -1)
14928 fprintf_unfiltered (fp, " thread %d", b->thread);
14929
14930 if (b->task != 0)
14931 fprintf_unfiltered (fp, " task %d", b->task);
14932
14933 fprintf_unfiltered (fp, "\n");
14934}
14935
6149aea9
PA
14936/* Save information on user settable breakpoints (watchpoints, etc) to
14937 a new script file named FILENAME. If FILTER is non-NULL, call it
14938 on each breakpoint and only include the ones for which it returns
14939 non-zero. */
14940
1042e4c0 14941static void
4495129a 14942save_breakpoints (const char *filename, int from_tty,
6149aea9 14943 int (*filter) (const struct breakpoint *))
1042e4c0
SS
14944{
14945 struct breakpoint *tp;
6149aea9 14946 int any = 0;
6149aea9 14947 int extra_trace_bits = 0;
1042e4c0 14948
6149aea9
PA
14949 if (filename == 0 || *filename == 0)
14950 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
14951
14952 /* See if we have anything to save. */
6149aea9 14953 ALL_BREAKPOINTS (tp)
1042e4c0 14954 {
6149aea9 14955 /* Skip internal and momentary breakpoints. */
09d682a4 14956 if (!user_breakpoint_p (tp))
6149aea9
PA
14957 continue;
14958
14959 /* If we have a filter, only save the breakpoints it accepts. */
14960 if (filter && !filter (tp))
14961 continue;
14962
14963 any = 1;
14964
14965 if (is_tracepoint (tp))
14966 {
14967 extra_trace_bits = 1;
14968
14969 /* We can stop searching. */
14970 break;
14971 }
1042e4c0 14972 }
6149aea9
PA
14973
14974 if (!any)
1042e4c0 14975 {
6149aea9 14976 warning (_("Nothing to save."));
1042e4c0
SS
14977 return;
14978 }
14979
ee0c3293 14980 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
14981
14982 stdio_file fp;
14983
ee0c3293 14984 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 14985 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 14986 expanded_filename.get (), safe_strerror (errno));
8bf6485c 14987
6149aea9 14988 if (extra_trace_bits)
d7e74731 14989 save_trace_state_variables (&fp);
8bf6485c 14990
6149aea9 14991 ALL_BREAKPOINTS (tp)
1042e4c0 14992 {
6149aea9 14993 /* Skip internal and momentary breakpoints. */
09d682a4 14994 if (!user_breakpoint_p (tp))
6149aea9 14995 continue;
8bf6485c 14996
6149aea9
PA
14997 /* If we have a filter, only save the breakpoints it accepts. */
14998 if (filter && !filter (tp))
14999 continue;
15000
d7e74731 15001 tp->ops->print_recreate (tp, &fp);
1042e4c0 15002
6149aea9
PA
15003 /* Note, we can't rely on tp->number for anything, as we can't
15004 assume the recreated breakpoint numbers will match. Use $bpnum
15005 instead. */
15006
15007 if (tp->cond_string)
d7e74731 15008 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15009
15010 if (tp->ignore_count)
d7e74731 15011 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15012
2d9442cc 15013 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15014 {
d7e74731 15015 fp.puts (" commands\n");
a7bdde9e 15016
d7e74731 15017 current_uiout->redirect (&fp);
a70b8144 15018 try
1042e4c0 15019 {
d1b0a7bf 15020 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15021 }
230d2906 15022 catch (const gdb_exception &ex)
492d29ea 15023 {
112e8700 15024 current_uiout->redirect (NULL);
eedc3f4f 15025 throw;
492d29ea 15026 }
1042e4c0 15027
112e8700 15028 current_uiout->redirect (NULL);
d7e74731 15029 fp.puts (" end\n");
1042e4c0 15030 }
6149aea9
PA
15031
15032 if (tp->enable_state == bp_disabled)
d7e74731 15033 fp.puts ("disable $bpnum\n");
6149aea9
PA
15034
15035 /* If this is a multi-location breakpoint, check if the locations
15036 should be individually disabled. Watchpoint locations are
15037 special, and not user visible. */
15038 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15039 {
15040 struct bp_location *loc;
15041 int n = 1;
15042
15043 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15044 if (!loc->enabled)
d7e74731 15045 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15046 }
1042e4c0 15047 }
8bf6485c 15048
6149aea9 15049 if (extra_trace_bits && *default_collect)
d7e74731 15050 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15051
1042e4c0 15052 if (from_tty)
ee0c3293 15053 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15054}
15055
15056/* The `save breakpoints' command. */
15057
15058static void
4495129a 15059save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15060{
15061 save_breakpoints (args, from_tty, NULL);
15062}
15063
15064/* The `save tracepoints' command. */
15065
15066static void
4495129a 15067save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15068{
15069 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15070}
15071
15072/* Create a vector of all tracepoints. */
15073
f51e0e20 15074std::vector<breakpoint *>
eeae04df 15075all_tracepoints (void)
1042e4c0 15076{
f51e0e20 15077 std::vector<breakpoint *> tp_vec;
1042e4c0
SS
15078 struct breakpoint *tp;
15079
15080 ALL_TRACEPOINTS (tp)
15081 {
f51e0e20 15082 tp_vec.push_back (tp);
1042e4c0
SS
15083 }
15084
15085 return tp_vec;
15086}
15087
c906108c 15088\f
629500fa
KS
15089/* This help string is used to consolidate all the help string for specifying
15090 locations used by several commands. */
15091
15092#define LOCATION_HELP_STRING \
15093"Linespecs are colon-separated lists of location parameters, such as\n\
15094source filename, function name, label name, and line number.\n\
15095Example: To specify the start of a label named \"the_top\" in the\n\
15096function \"fact\" in the file \"factorial.c\", use\n\
15097\"factorial.c:fact:the_top\".\n\
15098\n\
15099Address locations begin with \"*\" and specify an exact address in the\n\
15100program. Example: To specify the fourth byte past the start function\n\
15101\"main\", use \"*main + 4\".\n\
15102\n\
15103Explicit locations are similar to linespecs but use an option/argument\n\
15104syntax to specify location parameters.\n\
15105Example: To specify the start of the label named \"the_top\" in the\n\
15106function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
15107-function fact -label the_top\".\n\
15108\n\
15109By default, a specified function is matched against the program's\n\
15110functions in all scopes. For C++, this means in all namespaces and\n\
15111classes. For Ada, this means in all packages. E.g., in C++,\n\
15112\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15113\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
89549d7f 15114specified name as a complete fully-qualified name instead."
629500fa 15115
4a64f543
MS
15116/* This help string is used for the break, hbreak, tbreak and thbreak
15117 commands. It is defined as a macro to prevent duplication.
15118 COMMAND should be a string constant containing the name of the
15119 command. */
629500fa 15120
31e2b00f 15121#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15122command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15123PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15124probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15125guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15126`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15127LOCATION may be a linespec, address, or explicit location as described\n\
15128below.\n\
15129\n\
dc10affe
PA
15130With no LOCATION, uses current execution address of the selected\n\
15131stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15132\n\
15133THREADNUM is the number from \"info threads\".\n\
15134CONDITION is a boolean expression.\n\
89549d7f 15135\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
15136Multiple breakpoints at one place are permitted, and useful if their\n\
15137conditions are different.\n\
31e2b00f
AS
15138\n\
15139Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15140
44feb3ce
TT
15141/* List of subcommands for "catch". */
15142static struct cmd_list_element *catch_cmdlist;
15143
15144/* List of subcommands for "tcatch". */
15145static struct cmd_list_element *tcatch_cmdlist;
15146
9ac4176b 15147void
a121b7c1 15148add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15149 cmd_const_sfunc_ftype *sfunc,
625e8578 15150 completer_ftype *completer,
44feb3ce
TT
15151 void *user_data_catch,
15152 void *user_data_tcatch)
15153{
15154 struct cmd_list_element *command;
15155
0450cc4c 15156 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15157 &catch_cmdlist);
15158 set_cmd_sfunc (command, sfunc);
15159 set_cmd_context (command, user_data_catch);
a96d9b2e 15160 set_cmd_completer (command, completer);
44feb3ce 15161
0450cc4c 15162 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15163 &tcatch_cmdlist);
15164 set_cmd_sfunc (command, sfunc);
15165 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15166 set_cmd_completer (command, completer);
44feb3ce
TT
15167}
15168
6149aea9 15169static void
981a3fb3 15170save_command (const char *arg, int from_tty)
6149aea9 15171{
3e43a32a
MS
15172 printf_unfiltered (_("\"save\" must be followed by "
15173 "the name of a save subcommand.\n"));
635c7e8a 15174 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15175}
15176
84f4c1fe
PM
15177struct breakpoint *
15178iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15179 void *data)
15180{
35df4500 15181 struct breakpoint *b, *b_tmp;
84f4c1fe 15182
35df4500 15183 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15184 {
15185 if ((*callback) (b, data))
15186 return b;
15187 }
15188
15189 return NULL;
15190}
15191
0574c78f
GB
15192/* Zero if any of the breakpoint's locations could be a location where
15193 functions have been inlined, nonzero otherwise. */
15194
15195static int
15196is_non_inline_function (struct breakpoint *b)
15197{
15198 /* The shared library event breakpoint is set on the address of a
15199 non-inline function. */
15200 if (b->type == bp_shlib_event)
15201 return 1;
15202
15203 return 0;
15204}
15205
15206/* Nonzero if the specified PC cannot be a location where functions
15207 have been inlined. */
15208
15209int
accd0bcd 15210pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15211 const struct target_waitstatus *ws)
0574c78f
GB
15212{
15213 struct breakpoint *b;
15214 struct bp_location *bl;
15215
15216 ALL_BREAKPOINTS (b)
15217 {
15218 if (!is_non_inline_function (b))
15219 continue;
15220
15221 for (bl = b->loc; bl != NULL; bl = bl->next)
15222 {
15223 if (!bl->shlib_disabled
09ac7c10 15224 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15225 return 1;
15226 }
15227 }
15228
15229 return 0;
15230}
15231
2f202fde
JK
15232/* Remove any references to OBJFILE which is going to be freed. */
15233
15234void
15235breakpoint_free_objfile (struct objfile *objfile)
15236{
15237 struct bp_location **locp, *loc;
15238
15239 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15240 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15241 loc->symtab = NULL;
15242}
15243
2060206e
PA
15244void
15245initialize_breakpoint_ops (void)
15246{
15247 static int initialized = 0;
15248
15249 struct breakpoint_ops *ops;
15250
15251 if (initialized)
15252 return;
15253 initialized = 1;
15254
15255 /* The breakpoint_ops structure to be inherit by all kinds of
15256 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15257 internal and momentary breakpoints, etc.). */
15258 ops = &bkpt_base_breakpoint_ops;
15259 *ops = base_breakpoint_ops;
15260 ops->re_set = bkpt_re_set;
15261 ops->insert_location = bkpt_insert_location;
15262 ops->remove_location = bkpt_remove_location;
15263 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15264 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15265 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15266 ops->decode_location = bkpt_decode_location;
2060206e
PA
15267
15268 /* The breakpoint_ops structure to be used in regular breakpoints. */
15269 ops = &bkpt_breakpoint_ops;
15270 *ops = bkpt_base_breakpoint_ops;
15271 ops->re_set = bkpt_re_set;
15272 ops->resources_needed = bkpt_resources_needed;
15273 ops->print_it = bkpt_print_it;
15274 ops->print_mention = bkpt_print_mention;
15275 ops->print_recreate = bkpt_print_recreate;
15276
15277 /* Ranged breakpoints. */
15278 ops = &ranged_breakpoint_ops;
15279 *ops = bkpt_breakpoint_ops;
15280 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15281 ops->resources_needed = resources_needed_ranged_breakpoint;
15282 ops->print_it = print_it_ranged_breakpoint;
15283 ops->print_one = print_one_ranged_breakpoint;
15284 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15285 ops->print_mention = print_mention_ranged_breakpoint;
15286 ops->print_recreate = print_recreate_ranged_breakpoint;
15287
15288 /* Internal breakpoints. */
15289 ops = &internal_breakpoint_ops;
15290 *ops = bkpt_base_breakpoint_ops;
15291 ops->re_set = internal_bkpt_re_set;
15292 ops->check_status = internal_bkpt_check_status;
15293 ops->print_it = internal_bkpt_print_it;
15294 ops->print_mention = internal_bkpt_print_mention;
15295
15296 /* Momentary breakpoints. */
15297 ops = &momentary_breakpoint_ops;
15298 *ops = bkpt_base_breakpoint_ops;
15299 ops->re_set = momentary_bkpt_re_set;
15300 ops->check_status = momentary_bkpt_check_status;
15301 ops->print_it = momentary_bkpt_print_it;
15302 ops->print_mention = momentary_bkpt_print_mention;
15303
55aa24fb
SDJ
15304 /* Probe breakpoints. */
15305 ops = &bkpt_probe_breakpoint_ops;
15306 *ops = bkpt_breakpoint_ops;
15307 ops->insert_location = bkpt_probe_insert_location;
15308 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15309 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15310 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15311
2060206e
PA
15312 /* Watchpoints. */
15313 ops = &watchpoint_breakpoint_ops;
15314 *ops = base_breakpoint_ops;
15315 ops->re_set = re_set_watchpoint;
15316 ops->insert_location = insert_watchpoint;
15317 ops->remove_location = remove_watchpoint;
15318 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15319 ops->check_status = check_status_watchpoint;
15320 ops->resources_needed = resources_needed_watchpoint;
15321 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15322 ops->print_it = print_it_watchpoint;
15323 ops->print_mention = print_mention_watchpoint;
15324 ops->print_recreate = print_recreate_watchpoint;
427cd150 15325 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15326
15327 /* Masked watchpoints. */
15328 ops = &masked_watchpoint_breakpoint_ops;
15329 *ops = watchpoint_breakpoint_ops;
15330 ops->insert_location = insert_masked_watchpoint;
15331 ops->remove_location = remove_masked_watchpoint;
15332 ops->resources_needed = resources_needed_masked_watchpoint;
15333 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15334 ops->print_it = print_it_masked_watchpoint;
15335 ops->print_one_detail = print_one_detail_masked_watchpoint;
15336 ops->print_mention = print_mention_masked_watchpoint;
15337 ops->print_recreate = print_recreate_masked_watchpoint;
15338
15339 /* Tracepoints. */
15340 ops = &tracepoint_breakpoint_ops;
15341 *ops = base_breakpoint_ops;
15342 ops->re_set = tracepoint_re_set;
15343 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15344 ops->print_one_detail = tracepoint_print_one_detail;
15345 ops->print_mention = tracepoint_print_mention;
15346 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15347 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15348 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15349 ops->decode_location = tracepoint_decode_location;
983af33b 15350
55aa24fb
SDJ
15351 /* Probe tracepoints. */
15352 ops = &tracepoint_probe_breakpoint_ops;
15353 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15354 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15355 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15356
983af33b
SDJ
15357 /* Static tracepoints with marker (`-m'). */
15358 ops = &strace_marker_breakpoint_ops;
15359 *ops = tracepoint_breakpoint_ops;
5f700d83 15360 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15361 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15362 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15363
15364 /* Fork catchpoints. */
15365 ops = &catch_fork_breakpoint_ops;
15366 *ops = base_breakpoint_ops;
15367 ops->insert_location = insert_catch_fork;
15368 ops->remove_location = remove_catch_fork;
15369 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15370 ops->print_it = print_it_catch_fork;
15371 ops->print_one = print_one_catch_fork;
15372 ops->print_mention = print_mention_catch_fork;
15373 ops->print_recreate = print_recreate_catch_fork;
15374
15375 /* Vfork catchpoints. */
15376 ops = &catch_vfork_breakpoint_ops;
15377 *ops = base_breakpoint_ops;
15378 ops->insert_location = insert_catch_vfork;
15379 ops->remove_location = remove_catch_vfork;
15380 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15381 ops->print_it = print_it_catch_vfork;
15382 ops->print_one = print_one_catch_vfork;
15383 ops->print_mention = print_mention_catch_vfork;
15384 ops->print_recreate = print_recreate_catch_vfork;
15385
15386 /* Exec catchpoints. */
15387 ops = &catch_exec_breakpoint_ops;
15388 *ops = base_breakpoint_ops;
2060206e
PA
15389 ops->insert_location = insert_catch_exec;
15390 ops->remove_location = remove_catch_exec;
15391 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15392 ops->print_it = print_it_catch_exec;
15393 ops->print_one = print_one_catch_exec;
15394 ops->print_mention = print_mention_catch_exec;
15395 ops->print_recreate = print_recreate_catch_exec;
15396
edcc5120
TT
15397 /* Solib-related catchpoints. */
15398 ops = &catch_solib_breakpoint_ops;
15399 *ops = base_breakpoint_ops;
edcc5120
TT
15400 ops->insert_location = insert_catch_solib;
15401 ops->remove_location = remove_catch_solib;
15402 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15403 ops->check_status = check_status_catch_solib;
15404 ops->print_it = print_it_catch_solib;
15405 ops->print_one = print_one_catch_solib;
15406 ops->print_mention = print_mention_catch_solib;
15407 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15408
15409 ops = &dprintf_breakpoint_ops;
15410 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15411 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15412 ops->resources_needed = bkpt_resources_needed;
15413 ops->print_it = bkpt_print_it;
15414 ops->print_mention = bkpt_print_mention;
2d9442cc 15415 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15416 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15417 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15418}
15419
8bfd80db
YQ
15420/* Chain containing all defined "enable breakpoint" subcommands. */
15421
15422static struct cmd_list_element *enablebreaklist = NULL;
15423
8588b356
SM
15424/* See breakpoint.h. */
15425
15426cmd_list_element *commands_cmd_element = nullptr;
15427
c906108c 15428void
fba45db2 15429_initialize_breakpoint (void)
c906108c
SS
15430{
15431 struct cmd_list_element *c;
15432
2060206e
PA
15433 initialize_breakpoint_ops ();
15434
76727919
TT
15435 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15436 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15437 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
84acb35a 15438
c906108c
SS
15439 breakpoint_chain = 0;
15440 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15441 before a breakpoint is set. */
15442 breakpoint_count = 0;
15443
1042e4c0
SS
15444 tracepoint_count = 0;
15445
1bedd215
AC
15446 add_com ("ignore", class_breakpoint, ignore_command, _("\
15447Set ignore-count of breakpoint number N to COUNT.\n\
15448Usage is `ignore N COUNT'."));
c906108c 15449
8588b356
SM
15450 commands_cmd_element = add_com ("commands", class_breakpoint,
15451 commands_command, _("\
18da0c51
MG
15452Set commands to be executed when the given breakpoints are hit.\n\
15453Give a space-separated breakpoint list as argument after \"commands\".\n\
15454A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15455(e.g. `5-7').\n\
c906108c
SS
15456With no argument, the targeted breakpoint is the last one set.\n\
15457The commands themselves follow starting on the next line.\n\
15458Type a line containing \"end\" to indicate the end of them.\n\
15459Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15460then no output is printed when it is hit, except what the commands print."));
c906108c 15461
d55637df 15462 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15463Specify breakpoint number N to break only if COND is true.\n\
c906108c 15464Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15465expression to be evaluated whenever breakpoint N is reached."));
d55637df 15466 set_cmd_completer (c, condition_completer);
c906108c 15467
1bedd215 15468 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15469Set a temporary breakpoint.\n\
c906108c
SS
15470Like \"break\" except the breakpoint is only temporary,\n\
15471so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15472by using \"enable delete\" on the breakpoint number.\n\
15473\n"
15474BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15475 set_cmd_completer (c, location_completer);
c94fdfd0 15476
1bedd215 15477 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15478Set a hardware assisted breakpoint.\n\
c906108c 15479Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15480some target hardware may not have this support.\n\
15481\n"
15482BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15483 set_cmd_completer (c, location_completer);
c906108c 15484
1bedd215 15485 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15486Set a temporary hardware assisted breakpoint.\n\
c906108c 15487Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15488so it will be deleted when hit.\n\
15489\n"
15490BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15491 set_cmd_completer (c, location_completer);
c906108c 15492
1bedd215
AC
15493 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15494Enable some breakpoints.\n\
c906108c
SS
15495Give breakpoint numbers (separated by spaces) as arguments.\n\
15496With no subcommand, breakpoints are enabled until you command otherwise.\n\
15497This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15498With a subcommand you can enable temporarily."),
c906108c 15499 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15500
15501 add_com_alias ("en", "enable", class_breakpoint, 1);
15502
84951ab5 15503 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15504Enable some breakpoints.\n\
c906108c
SS
15505Give breakpoint numbers (separated by spaces) as arguments.\n\
15506This is used to cancel the effect of the \"disable\" command.\n\
89549d7f 15507May be abbreviated to simply \"enable\"."),
c5aa993b 15508 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15509
1a966eab
AC
15510 add_cmd ("once", no_class, enable_once_command, _("\
15511Enable breakpoints for one hit. Give breakpoint numbers.\n\
15512If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15513 &enablebreaklist);
15514
1a966eab
AC
15515 add_cmd ("delete", no_class, enable_delete_command, _("\
15516Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15517If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15518 &enablebreaklist);
15519
816338b5
SS
15520 add_cmd ("count", no_class, enable_count_command, _("\
15521Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15522If a breakpoint is hit while enabled in this fashion,\n\
15523the count is decremented; when it reaches zero, the breakpoint is disabled."),
15524 &enablebreaklist);
15525
1a966eab
AC
15526 add_cmd ("delete", no_class, enable_delete_command, _("\
15527Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15528If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15529 &enablelist);
15530
1a966eab
AC
15531 add_cmd ("once", no_class, enable_once_command, _("\
15532Enable breakpoints for one hit. Give breakpoint numbers.\n\
15533If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15534 &enablelist);
15535
15536 add_cmd ("count", no_class, enable_count_command, _("\
15537Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15538If a breakpoint is hit while enabled in this fashion,\n\
15539the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15540 &enablelist);
15541
1bedd215
AC
15542 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15543Disable some breakpoints.\n\
c906108c
SS
15544Arguments are breakpoint numbers with spaces in between.\n\
15545To disable all breakpoints, give no argument.\n\
64b9b334 15546A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15547 &disablelist, "disable ", 1, &cmdlist);
15548 add_com_alias ("dis", "disable", class_breakpoint, 1);
15549 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15550
1a966eab
AC
15551 add_cmd ("breakpoints", class_alias, disable_command, _("\
15552Disable some breakpoints.\n\
c906108c
SS
15553Arguments are breakpoint numbers with spaces in between.\n\
15554To disable all breakpoints, give no argument.\n\
64b9b334 15555A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15556This command may be abbreviated \"disable\"."),
c906108c
SS
15557 &disablelist);
15558
1bedd215
AC
15559 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15560Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15561Arguments are breakpoint numbers with spaces in between.\n\
15562To delete all breakpoints, give no argument.\n\
15563\n\
15564Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15565The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15566 &deletelist, "delete ", 1, &cmdlist);
15567 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15568 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15569
1a966eab
AC
15570 add_cmd ("breakpoints", class_alias, delete_command, _("\
15571Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15572Arguments are breakpoint numbers with spaces in between.\n\
15573To delete all breakpoints, give no argument.\n\
1a966eab 15574This command may be abbreviated \"delete\"."),
c906108c
SS
15575 &deletelist);
15576
1bedd215 15577 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15578Clear breakpoint at specified location.\n\
15579Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15580\n\
15581With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa 15582is executing in.\n"
89549d7f 15583"\n" LOCATION_HELP_STRING "\n\n\
1bedd215 15584See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15585 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15586
1bedd215 15587 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15588Set breakpoint at specified location.\n"
31e2b00f 15589BREAK_ARGS_HELP ("break")));
5ba2abeb 15590 set_cmd_completer (c, location_completer);
c94fdfd0 15591
c906108c
SS
15592 add_com_alias ("b", "break", class_run, 1);
15593 add_com_alias ("br", "break", class_run, 1);
15594 add_com_alias ("bre", "break", class_run, 1);
15595 add_com_alias ("brea", "break", class_run, 1);
15596
c906108c
SS
15597 if (dbx_commands)
15598 {
1bedd215
AC
15599 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15600Break in function/address or break at a line in the current file."),
c5aa993b
JM
15601 &stoplist, "stop ", 1, &cmdlist);
15602 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15603 _("Break in function or address."), &stoplist);
c5aa993b 15604 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15605 _("Break at a line in the current file."), &stoplist);
11db9430 15606 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15607Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15608The \"Type\" column indicates one of:\n\
15609\tbreakpoint - normal breakpoint\n\
15610\twatchpoint - watchpoint\n\
15611The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15612the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15613breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15614address and file/line number respectively.\n\
15615\n\
15616Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15617are set to the address of the last breakpoint listed unless the command\n\
15618is prefixed with \"server \".\n\n\
c906108c 15619Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15620breakpoint set."));
c906108c
SS
15621 }
15622
11db9430 15623 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15624Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15625The \"Type\" column indicates one of:\n\
15626\tbreakpoint - normal breakpoint\n\
15627\twatchpoint - watchpoint\n\
15628The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15629the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15630breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15631address and file/line number respectively.\n\
15632\n\
15633Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15634are set to the address of the last breakpoint listed unless the command\n\
15635is prefixed with \"server \".\n\n\
c906108c 15636Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15637breakpoint set."));
c906108c 15638
6b04bdb7
MS
15639 add_info_alias ("b", "breakpoints", 1);
15640
1a966eab
AC
15641 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15642Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15643The \"Type\" column indicates one of:\n\
15644\tbreakpoint - normal breakpoint\n\
15645\twatchpoint - watchpoint\n\
15646\tlongjmp - internal breakpoint used to step through longjmp()\n\
15647\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15648\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15649\tfinish - internal breakpoint used by the \"finish\" command\n\
15650The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
15651the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15652breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
15653address and file/line number respectively.\n\
15654\n\
15655Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15656are set to the address of the last breakpoint listed unless the command\n\
15657is prefixed with \"server \".\n\n\
c906108c 15658Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 15659breakpoint set."),
c906108c
SS
15660 &maintenanceinfolist);
15661
44feb3ce
TT
15662 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15663Set catchpoints to catch events."),
15664 &catch_cmdlist, "catch ",
15665 0/*allow-unknown*/, &cmdlist);
15666
15667 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15668Set temporary catchpoints to catch events."),
15669 &tcatch_cmdlist, "tcatch ",
15670 0/*allow-unknown*/, &cmdlist);
15671
44feb3ce
TT
15672 add_catch_command ("fork", _("Catch calls to fork."),
15673 catch_fork_command_1,
a96d9b2e 15674 NULL,
44feb3ce
TT
15675 (void *) (uintptr_t) catch_fork_permanent,
15676 (void *) (uintptr_t) catch_fork_temporary);
15677 add_catch_command ("vfork", _("Catch calls to vfork."),
15678 catch_fork_command_1,
a96d9b2e 15679 NULL,
44feb3ce
TT
15680 (void *) (uintptr_t) catch_vfork_permanent,
15681 (void *) (uintptr_t) catch_vfork_temporary);
15682 add_catch_command ("exec", _("Catch calls to exec."),
15683 catch_exec_command_1,
a96d9b2e
SDJ
15684 NULL,
15685 CATCH_PERMANENT,
15686 CATCH_TEMPORARY);
edcc5120
TT
15687 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15688Usage: catch load [REGEX]\n\
15689If REGEX is given, only stop for libraries matching the regular expression."),
15690 catch_load_command_1,
15691 NULL,
15692 CATCH_PERMANENT,
15693 CATCH_TEMPORARY);
15694 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15695Usage: catch unload [REGEX]\n\
15696If REGEX is given, only stop for libraries matching the regular expression."),
15697 catch_unload_command_1,
15698 NULL,
15699 CATCH_PERMANENT,
15700 CATCH_TEMPORARY);
c5aa993b 15701
1bedd215
AC
15702 c = add_com ("watch", class_breakpoint, watch_command, _("\
15703Set a watchpoint for an expression.\n\
06a64a0b 15704Usage: watch [-l|-location] EXPRESSION\n\
c906108c 15705A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15706an expression changes.\n\
15707If -l or -location is given, this evaluates EXPRESSION and watches\n\
15708the memory to which it refers."));
65d12d83 15709 set_cmd_completer (c, expression_completer);
c906108c 15710
1bedd215
AC
15711 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15712Set a read watchpoint for an expression.\n\
06a64a0b 15713Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 15714A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15715an expression is read.\n\
15716If -l or -location is given, this evaluates EXPRESSION and watches\n\
15717the memory to which it refers."));
65d12d83 15718 set_cmd_completer (c, expression_completer);
c906108c 15719
1bedd215
AC
15720 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15721Set a watchpoint for an expression.\n\
06a64a0b 15722Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 15723A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15724an expression is either read or written.\n\
15725If -l or -location is given, this evaluates EXPRESSION and watches\n\
15726the memory to which it refers."));
65d12d83 15727 set_cmd_completer (c, expression_completer);
c906108c 15728
11db9430 15729 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 15730Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 15731
920d2a44
AC
15732 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15733 respond to changes - contrary to the description. */
85c07804
AC
15734 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15735 &can_use_hw_watchpoints, _("\
15736Set debugger's willingness to use watchpoint hardware."), _("\
15737Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
15738If zero, gdb will not use hardware for new watchpoints, even if\n\
15739such is available. (However, any hardware watchpoints that were\n\
15740created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
15741hardware.)"),
15742 NULL,
920d2a44 15743 show_can_use_hw_watchpoints,
85c07804 15744 &setlist, &showlist);
c906108c
SS
15745
15746 can_use_hw_watchpoints = 1;
fa8d40ab 15747
1042e4c0
SS
15748 /* Tracepoint manipulation commands. */
15749
15750 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 15751Set a tracepoint at specified location.\n\
1042e4c0
SS
15752\n"
15753BREAK_ARGS_HELP ("trace") "\n\
15754Do \"help tracepoints\" for info on other tracepoint commands."));
15755 set_cmd_completer (c, location_completer);
15756
15757 add_com_alias ("tp", "trace", class_alias, 0);
15758 add_com_alias ("tr", "trace", class_alias, 1);
15759 add_com_alias ("tra", "trace", class_alias, 1);
15760 add_com_alias ("trac", "trace", class_alias, 1);
15761
7a697b8d 15762 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 15763Set a fast tracepoint at specified location.\n\
7a697b8d
SS
15764\n"
15765BREAK_ARGS_HELP ("ftrace") "\n\
15766Do \"help tracepoints\" for info on other tracepoint commands."));
15767 set_cmd_completer (c, location_completer);
15768
0fb4aa4b 15769 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 15770Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
15771\n\
15772strace [LOCATION] [if CONDITION]\n\
629500fa
KS
15773LOCATION may be a linespec, explicit, or address location (described below) \n\
15774or -m MARKER_ID.\n\n\
15775If a marker id is specified, probe the marker with that name. With\n\
15776no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
15777Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15778This collects arbitrary user data passed in the probe point call to the\n\
15779tracing library. You can inspect it when analyzing the trace buffer,\n\
15780by printing the $_sdata variable like any other convenience variable.\n\
15781\n\
15782CONDITION is a boolean expression.\n\
89549d7f 15783\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
15784Multiple tracepoints at one place are permitted, and useful if their\n\
15785conditions are different.\n\
0fb4aa4b
PA
15786\n\
15787Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15788Do \"help tracepoints\" for info on other tracepoint commands."));
15789 set_cmd_completer (c, location_completer);
15790
11db9430 15791 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 15792Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
15793Convenience variable \"$tpnum\" contains the number of the\n\
15794last tracepoint set."));
15795
15796 add_info_alias ("tp", "tracepoints", 1);
15797
15798 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15799Delete specified tracepoints.\n\
15800Arguments are tracepoint numbers, separated by spaces.\n\
15801No argument means delete all tracepoints."),
15802 &deletelist);
7e20dfcd 15803 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
15804
15805 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15806Disable specified tracepoints.\n\
15807Arguments are tracepoint numbers, separated by spaces.\n\
15808No argument means disable all tracepoints."),
15809 &disablelist);
15810 deprecate_cmd (c, "disable");
15811
15812 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15813Enable specified tracepoints.\n\
15814Arguments are tracepoint numbers, separated by spaces.\n\
15815No argument means enable all tracepoints."),
15816 &enablelist);
15817 deprecate_cmd (c, "enable");
15818
15819 add_com ("passcount", class_trace, trace_pass_command, _("\
15820Set the passcount for a tracepoint.\n\
15821The trace will end when the tracepoint has been passed 'count' times.\n\
15822Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15823if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15824
6149aea9
PA
15825 add_prefix_cmd ("save", class_breakpoint, save_command,
15826 _("Save breakpoint definitions as a script."),
15827 &save_cmdlist, "save ",
15828 0/*allow-unknown*/, &cmdlist);
15829
15830 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15831Save current breakpoint definitions as a script.\n\
cce7e648 15832This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
15833catchpoints, tracepoints). Use the 'source' command in another debug\n\
15834session to restore them."),
15835 &save_cmdlist);
15836 set_cmd_completer (c, filename_completer);
15837
15838 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 15839Save current tracepoint definitions as a script.\n\
6149aea9
PA
15840Use the 'source' command in another debug session to restore them."),
15841 &save_cmdlist);
1042e4c0
SS
15842 set_cmd_completer (c, filename_completer);
15843
6149aea9
PA
15844 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15845 deprecate_cmd (c, "save tracepoints");
15846
1bedd215 15847 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
15848Breakpoint specific settings\n\
15849Configure various breakpoint-specific variables such as\n\
1bedd215 15850pending breakpoint behavior"),
fa8d40ab
JJ
15851 &breakpoint_set_cmdlist, "set breakpoint ",
15852 0/*allow-unknown*/, &setlist);
1bedd215 15853 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
15854Breakpoint specific settings\n\
15855Configure various breakpoint-specific variables such as\n\
1bedd215 15856pending breakpoint behavior"),
fa8d40ab
JJ
15857 &breakpoint_show_cmdlist, "show breakpoint ",
15858 0/*allow-unknown*/, &showlist);
15859
7915a72c
AC
15860 add_setshow_auto_boolean_cmd ("pending", no_class,
15861 &pending_break_support, _("\
15862Set debugger's behavior regarding pending breakpoints."), _("\
15863Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
15864If on, an unrecognized breakpoint location will cause gdb to create a\n\
15865pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15866an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 15867user-query to see if a pending breakpoint should be created."),
2c5b56ce 15868 NULL,
920d2a44 15869 show_pending_break_support,
6e1d7d6c
AC
15870 &breakpoint_set_cmdlist,
15871 &breakpoint_show_cmdlist);
fa8d40ab
JJ
15872
15873 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
15874
15875 add_setshow_boolean_cmd ("auto-hw", no_class,
15876 &automatic_hardware_breakpoints, _("\
15877Set automatic usage of hardware breakpoints."), _("\
15878Show automatic usage of hardware breakpoints."), _("\
15879If set, the debugger will automatically use hardware breakpoints for\n\
15880breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15881a warning will be emitted for such breakpoints."),
15882 NULL,
15883 show_automatic_hardware_breakpoints,
15884 &breakpoint_set_cmdlist,
15885 &breakpoint_show_cmdlist);
74960c60 15886
a25a5a45
PA
15887 add_setshow_boolean_cmd ("always-inserted", class_support,
15888 &always_inserted_mode, _("\
74960c60
VP
15889Set mode for inserting breakpoints."), _("\
15890Show mode for inserting breakpoints."), _("\
a25a5a45
PA
15891When this mode is on, breakpoints are inserted immediately as soon as\n\
15892they're created, kept inserted even when execution stops, and removed\n\
15893only when the user deletes them. When this mode is off (the default),\n\
15894breakpoints are inserted only when execution continues, and removed\n\
15895when execution stops."),
72d0e2c5
YQ
15896 NULL,
15897 &show_always_inserted_mode,
15898 &breakpoint_set_cmdlist,
15899 &breakpoint_show_cmdlist);
f1310107 15900
b775012e
LM
15901 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15902 condition_evaluation_enums,
15903 &condition_evaluation_mode_1, _("\
15904Set mode of breakpoint condition evaluation."), _("\
15905Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 15906When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
15907evaluated on the host's side by GDB. When it is set to \"target\",\n\
15908breakpoint conditions will be downloaded to the target (if the target\n\
15909supports such feature) and conditions will be evaluated on the target's side.\n\
15910If this is set to \"auto\" (default), this will be automatically set to\n\
15911\"target\" if it supports condition evaluation, otherwise it will\n\
15912be set to \"gdb\""),
15913 &set_condition_evaluation_mode,
15914 &show_condition_evaluation_mode,
15915 &breakpoint_set_cmdlist,
15916 &breakpoint_show_cmdlist);
15917
f1310107
TJB
15918 add_com ("break-range", class_breakpoint, break_range_command, _("\
15919Set a breakpoint for an address range.\n\
15920break-range START-LOCATION, END-LOCATION\n\
15921where START-LOCATION and END-LOCATION can be one of the following:\n\
15922 LINENUM, for that line in the current file,\n\
15923 FILE:LINENUM, for that line in that file,\n\
15924 +OFFSET, for that number of lines after the current line\n\
15925 or the start of the range\n\
15926 FUNCTION, for the first line in that function,\n\
15927 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15928 *ADDRESS, for the instruction at that address.\n\
15929\n\
15930The breakpoint will stop execution of the inferior whenever it executes\n\
15931an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15932range (including START-LOCATION and END-LOCATION)."));
15933
e7e0cddf 15934 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 15935Set a dynamic printf at specified location.\n\
e7e0cddf 15936dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
15937location may be a linespec, explicit, or address location.\n"
15938"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
15939 set_cmd_completer (c, location_completer);
15940
15941 add_setshow_enum_cmd ("dprintf-style", class_support,
15942 dprintf_style_enums, &dprintf_style, _("\
15943Set the style of usage for dynamic printf."), _("\
15944Show the style of usage for dynamic printf."), _("\
15945This setting chooses how GDB will do a dynamic printf.\n\
15946If the value is \"gdb\", then the printing is done by GDB to its own\n\
15947console, as with the \"printf\" command.\n\
15948If the value is \"call\", the print is done by calling a function in your\n\
15949program; by default printf(), but you can choose a different function or\n\
15950output stream by setting dprintf-function and dprintf-channel."),
15951 update_dprintf_commands, NULL,
15952 &setlist, &showlist);
15953
15954 dprintf_function = xstrdup ("printf");
15955 add_setshow_string_cmd ("dprintf-function", class_support,
15956 &dprintf_function, _("\
15957Set the function to use for dynamic printf"), _("\
15958Show the function to use for dynamic printf"), NULL,
15959 update_dprintf_commands, NULL,
15960 &setlist, &showlist);
15961
15962 dprintf_channel = xstrdup ("");
15963 add_setshow_string_cmd ("dprintf-channel", class_support,
15964 &dprintf_channel, _("\
15965Set the channel to use for dynamic printf"), _("\
15966Show the channel to use for dynamic printf"), NULL,
15967 update_dprintf_commands, NULL,
15968 &setlist, &showlist);
15969
d3ce09f5
SS
15970 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15971 &disconnected_dprintf, _("\
15972Set whether dprintf continues after GDB disconnects."), _("\
15973Show whether dprintf continues after GDB disconnects."), _("\
15974Use this to let dprintf commands continue to hit and produce output\n\
15975even if GDB disconnects or detaches from the target."),
15976 NULL,
15977 NULL,
15978 &setlist, &showlist);
15979
15980 add_com ("agent-printf", class_vars, agent_printf_command, _("\
15981agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15982(target agent only) This is useful for formatted output in user-defined commands."));
15983
765dc015 15984 automatic_hardware_breakpoints = 1;
f3b1572e 15985
76727919
TT
15986 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15987 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
c906108c 15988}