]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/breakpoint.c
Constify language_enum
[thirdparty/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
61baf725 3 Copyright (C) 1986-2017 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"
a6d9a66e 21#include "arch-utils.h"
c906108c 22#include <ctype.h>
776592bf 23#include "hashtab.h"
c906108c
SS
24#include "symtab.h"
25#include "frame.h"
26#include "breakpoint.h"
1042e4c0 27#include "tracepoint.h"
c906108c
SS
28#include "gdbtypes.h"
29#include "expression.h"
30#include "gdbcore.h"
31#include "gdbcmd.h"
32#include "value.h"
33#include "command.h"
34#include "inferior.h"
45741a9c 35#include "infrun.h"
c906108c
SS
36#include "gdbthread.h"
37#include "target.h"
38#include "language.h"
50f182aa 39#include "gdb-demangle.h"
0ba1096a 40#include "filenames.h"
c906108c
SS
41#include "annotate.h"
42#include "symfile.h"
43#include "objfiles.h"
0378c332 44#include "source.h"
c5f0f3d0 45#include "linespec.h"
c94fdfd0 46#include "completer.h"
5b7f31a4 47#include "gdb.h"
8b93c638 48#include "ui-out.h"
e1507482 49#include "cli/cli-script.h"
fe898f56 50#include "block.h"
a77053c2 51#include "solib.h"
84acb35a
JJ
52#include "solist.h"
53#include "observer.h"
765dc015 54#include "memattr.h"
f7f9143b 55#include "ada-lang.h"
d1aa2f50 56#include "top.h"
79a45b7d 57#include "valprint.h"
4efc6507 58#include "jit.h"
65d79d4b 59#include "parser-defs.h"
55aa24fb
SDJ
60#include "gdb_regex.h"
61#include "probe.h"
e9cafbcc 62#include "cli/cli-utils.h"
be34f849 63#include "continuations.h"
1bfeeb0f
JL
64#include "stack.h"
65#include "skip.h"
b775012e 66#include "ax-gdb.h"
e2e4d78b 67#include "dummy-frame.h"
5589af0e 68#include "interps.h"
d3ce09f5 69#include "format.h"
cfc31633 70#include "thread-fsm.h"
5d5658a1 71#include "tid-parse.h"
d3ce09f5 72
1042e4c0
SS
73/* readline include files */
74#include "readline/readline.h"
75#include "readline/history.h"
76
77/* readline defines this. */
78#undef savestring
79
034dad6f 80#include "mi/mi-common.h"
6dddc817 81#include "extension.h"
325fac50 82#include <algorithm>
5ed8105e 83#include "progspace-and-thread.h"
6c5b2ebe 84#include "common/array-view.h"
76f9c9cf 85#include "common/gdb_optional.h"
104c1213 86
e7e8980f
YQ
87/* Enums for exception-handling support. */
88enum exception_event_kind
89{
90 EX_EVENT_THROW,
591f19e8 91 EX_EVENT_RETHROW,
e7e8980f
YQ
92 EX_EVENT_CATCH
93};
94
4a64f543 95/* Prototypes for local functions. */
c906108c 96
a14ed312 97static void enable_delete_command (char *, int);
c906108c 98
a14ed312 99static void enable_once_command (char *, int);
c906108c 100
816338b5
SS
101static void enable_count_command (char *, int);
102
a14ed312 103static void disable_command (char *, int);
c906108c 104
a14ed312 105static void enable_command (char *, int);
c906108c 106
896b6bda
PA
107static void map_breakpoint_numbers (const char *,
108 void (*) (struct breakpoint *,
109 void *),
95a42b64 110 void *);
c906108c 111
a14ed312 112static void ignore_command (char *, int);
c906108c 113
4efb68b1 114static int breakpoint_re_set_one (void *);
c906108c 115
348d480f
PA
116static void breakpoint_re_set_default (struct breakpoint *);
117
f00aae0f
KS
118static void
119 create_sals_from_location_default (const struct event_location *location,
120 struct linespec_result *canonical,
121 enum bptype type_wanted);
983af33b
SDJ
122
123static void create_breakpoints_sal_default (struct gdbarch *,
124 struct linespec_result *,
e1e01040
PA
125 gdb::unique_xmalloc_ptr<char>,
126 gdb::unique_xmalloc_ptr<char>,
127 enum bptype,
983af33b
SDJ
128 enum bpdisp, int, int,
129 int,
130 const struct breakpoint_ops *,
44f238bb 131 int, int, int, unsigned);
983af33b 132
6c5b2ebe
PA
133static std::vector<symtab_and_line> decode_location_default
134 (struct breakpoint *b, const struct event_location *location,
135 struct program_space *search_pspace);
983af33b 136
a14ed312 137static void clear_command (char *, int);
c906108c 138
a14ed312 139static void catch_command (char *, int);
c906108c 140
a9634178 141static int can_use_hardware_watchpoint (struct value *);
c906108c 142
98deb0da 143static void break_command_1 (char *, int, int);
c906108c 144
a14ed312 145static void mention (struct breakpoint *);
c906108c 146
348d480f
PA
147static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
148 enum bptype,
c0a91b2b 149 const struct breakpoint_ops *);
3742cc8b
YQ
150static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
151 const struct symtab_and_line *);
152
4a64f543
MS
153/* This function is used in gdbtk sources and thus can not be made
154 static. */
63c252f8 155struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 156 struct symtab_and_line,
c0a91b2b
TT
157 enum bptype,
158 const struct breakpoint_ops *);
c906108c 159
06edf0c0
PA
160static struct breakpoint *
161 momentary_breakpoint_from_master (struct breakpoint *orig,
162 enum bptype type,
a1aa2221
LM
163 const struct breakpoint_ops *ops,
164 int loc_enabled);
06edf0c0 165
76897487
KB
166static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
167
a6d9a66e
UW
168static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
169 CORE_ADDR bpaddr,
88f7da05 170 enum bptype bptype);
76897487 171
6c95b8df
PA
172static void describe_other_breakpoints (struct gdbarch *,
173 struct program_space *, CORE_ADDR,
5af949e3 174 struct obj_section *, int);
c906108c 175
85d721b8
PA
176static int watchpoint_locations_match (struct bp_location *loc1,
177 struct bp_location *loc2);
178
f1310107
TJB
179static int breakpoint_location_address_match (struct bp_location *bl,
180 struct address_space *aspace,
181 CORE_ADDR addr);
182
d35ae833
PA
183static int breakpoint_location_address_range_overlap (struct bp_location *,
184 struct address_space *,
185 CORE_ADDR, int);
186
11db9430 187static void info_breakpoints_command (char *, int);
c906108c 188
11db9430 189static void info_watchpoints_command (char *, int);
d77f58be 190
e5a67952
MS
191static int breakpoint_1 (char *, int,
192 int (*) (const struct breakpoint *));
c906108c 193
4efb68b1 194static int breakpoint_cond_eval (void *);
c906108c 195
4efb68b1 196static void cleanup_executing_breakpoints (void *);
c906108c 197
a14ed312 198static void commands_command (char *, int);
c906108c 199
a14ed312 200static void condition_command (char *, int);
c906108c 201
834c0d03 202static int remove_breakpoint (struct bp_location *);
b2b6a7da 203static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 204
e514a9d6 205static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 206
4efb68b1 207static int watchpoint_check (void *);
c906108c 208
a14ed312 209static void maintenance_info_breakpoints (char *, int);
c906108c 210
a14ed312 211static int hw_breakpoint_used_count (void);
c906108c 212
a1398e0c
PA
213static int hw_watchpoint_use_count (struct breakpoint *);
214
215static int hw_watchpoint_used_count_others (struct breakpoint *except,
216 enum bptype type,
217 int *other_type_used);
c906108c 218
a14ed312 219static void hbreak_command (char *, int);
c906108c 220
a14ed312 221static void thbreak_command (char *, int);
c906108c 222
816338b5
SS
223static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
224 int count);
c906108c 225
a14ed312 226static void stop_command (char *arg, int from_tty);
7a292a7a 227
a14ed312 228static void stopin_command (char *arg, int from_tty);
7a292a7a 229
a14ed312 230static void stopat_command (char *arg, int from_tty);
7a292a7a 231
a14ed312 232static void tcatch_command (char *arg, int from_tty);
7a292a7a 233
fe3f5fa8 234static void free_bp_location (struct bp_location *loc);
f431efe5
PA
235static void incref_bp_location (struct bp_location *loc);
236static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 237
39d61571 238static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 239
44702360
PA
240/* update_global_location_list's modes of operation wrt to whether to
241 insert locations now. */
242enum ugll_insert_mode
243{
244 /* Don't insert any breakpoint locations into the inferior, only
245 remove already-inserted locations that no longer should be
246 inserted. Functions that delete a breakpoint or breakpoints
247 should specify this mode, so that deleting a breakpoint doesn't
248 have the side effect of inserting the locations of other
249 breakpoints that are marked not-inserted, but should_be_inserted
250 returns true on them.
251
252 This behavior is useful is situations close to tear-down -- e.g.,
253 after an exec, while the target still has execution, but
254 breakpoint shadows of the previous executable image should *NOT*
255 be restored to the new image; or before detaching, where the
256 target still has execution and wants to delete breakpoints from
257 GDB's lists, and all breakpoints had already been removed from
258 the inferior. */
259 UGLL_DONT_INSERT,
260
a25a5a45
PA
261 /* May insert breakpoints iff breakpoints_should_be_inserted_now
262 claims breakpoints should be inserted now. */
04086b45
PA
263 UGLL_MAY_INSERT,
264
a25a5a45
PA
265 /* Insert locations now, irrespective of
266 breakpoints_should_be_inserted_now. E.g., say all threads are
267 stopped right now, and the user did "continue". We need to
268 insert breakpoints _before_ resuming the target, but
269 UGLL_MAY_INSERT wouldn't insert them, because
270 breakpoints_should_be_inserted_now returns false at that point,
271 as no thread is running yet. */
04086b45 272 UGLL_INSERT
44702360
PA
273};
274
275static void update_global_location_list (enum ugll_insert_mode);
a5606eee 276
44702360 277static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 278
d77f58be 279static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
280
281static void insert_breakpoint_locations (void);
a5606eee 282
11db9430 283static void info_tracepoints_command (char *, int);
1042e4c0
SS
284
285static void delete_trace_command (char *, int);
286
287static void enable_trace_command (char *, int);
288
289static void disable_trace_command (char *, int);
290
291static void trace_pass_command (char *, int);
292
558a9d82
YQ
293static void set_tracepoint_count (int num);
294
9c06b0b4
TJB
295static int is_masked_watchpoint (const struct breakpoint *b);
296
b775012e
LM
297static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
298
983af33b
SDJ
299/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
300 otherwise. */
301
302static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 303
2060206e
PA
304/* The breakpoint_ops structure to be inherited by all breakpoint_ops
305 that are implemented on top of software or hardware breakpoints
306 (user breakpoints, internal and momentary breakpoints, etc.). */
307static struct breakpoint_ops bkpt_base_breakpoint_ops;
308
309/* Internal breakpoints class type. */
06edf0c0 310static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
311
312/* Momentary breakpoints class type. */
06edf0c0
PA
313static struct breakpoint_ops momentary_breakpoint_ops;
314
2060206e
PA
315/* The breakpoint_ops structure to be used in regular user created
316 breakpoints. */
317struct breakpoint_ops bkpt_breakpoint_ops;
318
55aa24fb
SDJ
319/* Breakpoints set on probes. */
320static struct breakpoint_ops bkpt_probe_breakpoint_ops;
321
e7e0cddf 322/* Dynamic printf class type. */
c5867ab6 323struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 324
d3ce09f5
SS
325/* The style in which to perform a dynamic printf. This is a user
326 option because different output options have different tradeoffs;
327 if GDB does the printing, there is better error handling if there
328 is a problem with any of the arguments, but using an inferior
329 function lets you have special-purpose printers and sending of
330 output to the same place as compiled-in print functions. */
331
332static const char dprintf_style_gdb[] = "gdb";
333static const char dprintf_style_call[] = "call";
334static const char dprintf_style_agent[] = "agent";
335static const char *const dprintf_style_enums[] = {
336 dprintf_style_gdb,
337 dprintf_style_call,
338 dprintf_style_agent,
339 NULL
340};
341static const char *dprintf_style = dprintf_style_gdb;
342
343/* The function to use for dynamic printf if the preferred style is to
344 call into the inferior. The value is simply a string that is
345 copied into the command, so it can be anything that GDB can
346 evaluate to a callable address, not necessarily a function name. */
347
bde6261a 348static char *dprintf_function;
d3ce09f5
SS
349
350/* The channel to use for dynamic printf if the preferred style is to
351 call into the inferior; if a nonempty string, it will be passed to
352 the call as the first argument, with the format string as the
353 second. As with the dprintf function, this can be anything that
354 GDB knows how to evaluate, so in addition to common choices like
355 "stderr", this could be an app-specific expression like
356 "mystreams[curlogger]". */
357
bde6261a 358static char *dprintf_channel;
d3ce09f5
SS
359
360/* True if dprintf commands should continue to operate even if GDB
361 has disconnected. */
362static int disconnected_dprintf = 1;
363
5cea2a26
PA
364/* A reference-counted struct command_line. This lets multiple
365 breakpoints share a single command list. */
366struct counted_command_line
367{
368 /* The reference count. */
369 int refc;
370
371 /* The command list. */
372 struct command_line *commands;
373};
374
375struct command_line *
376breakpoint_commands (struct breakpoint *b)
377{
378 return b->commands ? b->commands->commands : NULL;
379}
3daf8fe5 380
f3b1572e
PA
381/* Flag indicating that a command has proceeded the inferior past the
382 current breakpoint. */
383
384static int breakpoint_proceeded;
385
956a9fb9 386const char *
2cec12e5
AR
387bpdisp_text (enum bpdisp disp)
388{
4a64f543
MS
389 /* NOTE: the following values are a part of MI protocol and
390 represent values of 'disp' field returned when inferior stops at
391 a breakpoint. */
bc043ef3 392 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 393
2cec12e5
AR
394 return bpdisps[(int) disp];
395}
c906108c 396
4a64f543 397/* Prototypes for exported functions. */
c906108c 398/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 399 if such is available. */
c906108c
SS
400static int can_use_hw_watchpoints;
401
920d2a44
AC
402static void
403show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
404 struct cmd_list_element *c,
405 const char *value)
406{
3e43a32a
MS
407 fprintf_filtered (file,
408 _("Debugger's willingness to use "
409 "watchpoint hardware is %s.\n"),
920d2a44
AC
410 value);
411}
412
fa8d40ab
JJ
413/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
414 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 415 for unrecognized breakpoint locations.
fa8d40ab
JJ
416 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
417static enum auto_boolean pending_break_support;
920d2a44
AC
418static void
419show_pending_break_support (struct ui_file *file, int from_tty,
420 struct cmd_list_element *c,
421 const char *value)
422{
3e43a32a
MS
423 fprintf_filtered (file,
424 _("Debugger's behavior regarding "
425 "pending breakpoints is %s.\n"),
920d2a44
AC
426 value);
427}
fa8d40ab 428
765dc015 429/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 430 set with "break" but falling in read-only memory.
765dc015
VP
431 If 0, gdb will warn about such breakpoints, but won't automatically
432 use hardware breakpoints. */
433static int automatic_hardware_breakpoints;
434static void
435show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
436 struct cmd_list_element *c,
437 const char *value)
438{
3e43a32a
MS
439 fprintf_filtered (file,
440 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
441 value);
442}
443
a25a5a45
PA
444/* If on, GDB keeps breakpoints inserted even if the inferior is
445 stopped, and immediately inserts any new breakpoints as soon as
446 they're created. If off (default), GDB keeps breakpoints off of
447 the target as long as possible. That is, it delays inserting
448 breakpoints until the next resume, and removes them again when the
449 target fully stops. This is a bit safer in case GDB crashes while
450 processing user input. */
451static int always_inserted_mode = 0;
72d0e2c5 452
33e5cbd6 453static void
74960c60 454show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 455 struct cmd_list_element *c, const char *value)
74960c60 456{
a25a5a45
PA
457 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
458 value);
74960c60
VP
459}
460
b57bacec
PA
461/* See breakpoint.h. */
462
33e5cbd6 463int
a25a5a45 464breakpoints_should_be_inserted_now (void)
33e5cbd6 465{
a25a5a45
PA
466 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
467 {
468 /* If breakpoints are global, they should be inserted even if no
469 thread under gdb's control is running, or even if there are
470 no threads under GDB's control yet. */
471 return 1;
472 }
473 else if (target_has_execution)
474 {
372316f1
PA
475 struct thread_info *tp;
476
a25a5a45
PA
477 if (always_inserted_mode)
478 {
479 /* The user wants breakpoints inserted even if all threads
480 are stopped. */
481 return 1;
482 }
483
b57bacec
PA
484 if (threads_are_executing ())
485 return 1;
372316f1
PA
486
487 /* Don't remove breakpoints yet if, even though all threads are
488 stopped, we still have events to process. */
489 ALL_NON_EXITED_THREADS (tp)
490 if (tp->resumed
491 && tp->suspend.waitstatus_pending_p)
492 return 1;
a25a5a45
PA
493 }
494 return 0;
33e5cbd6 495}
765dc015 496
b775012e
LM
497static const char condition_evaluation_both[] = "host or target";
498
499/* Modes for breakpoint condition evaluation. */
500static const char condition_evaluation_auto[] = "auto";
501static const char condition_evaluation_host[] = "host";
502static const char condition_evaluation_target[] = "target";
503static const char *const condition_evaluation_enums[] = {
504 condition_evaluation_auto,
505 condition_evaluation_host,
506 condition_evaluation_target,
507 NULL
508};
509
510/* Global that holds the current mode for breakpoint condition evaluation. */
511static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
512
513/* Global that we use to display information to the user (gets its value from
514 condition_evaluation_mode_1. */
515static const char *condition_evaluation_mode = condition_evaluation_auto;
516
517/* Translate a condition evaluation mode MODE into either "host"
518 or "target". This is used mostly to translate from "auto" to the
519 real setting that is being used. It returns the translated
520 evaluation mode. */
521
522static const char *
523translate_condition_evaluation_mode (const char *mode)
524{
525 if (mode == condition_evaluation_auto)
526 {
527 if (target_supports_evaluation_of_breakpoint_conditions ())
528 return condition_evaluation_target;
529 else
530 return condition_evaluation_host;
531 }
532 else
533 return mode;
534}
535
536/* Discovers what condition_evaluation_auto translates to. */
537
538static const char *
539breakpoint_condition_evaluation_mode (void)
540{
541 return translate_condition_evaluation_mode (condition_evaluation_mode);
542}
543
544/* Return true if GDB should evaluate breakpoint conditions or false
545 otherwise. */
546
547static int
548gdb_evaluates_breakpoint_condition_p (void)
549{
550 const char *mode = breakpoint_condition_evaluation_mode ();
551
552 return (mode == condition_evaluation_host);
553}
554
c906108c
SS
555/* Are we executing breakpoint commands? */
556static int executing_breakpoint_commands;
557
c02f5703
MS
558/* Are overlay event breakpoints enabled? */
559static int overlay_events_enabled;
560
e09342b5
TJB
561/* See description in breakpoint.h. */
562int target_exact_watchpoints = 0;
563
c906108c 564/* Walk the following statement or block through all breakpoints.
e5dd4106 565 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 566 current breakpoint. */
c906108c 567
5c44784c 568#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 569
5c44784c
JM
570#define ALL_BREAKPOINTS_SAFE(B,TMP) \
571 for (B = breakpoint_chain; \
572 B ? (TMP=B->next, 1): 0; \
573 B = TMP)
c906108c 574
4a64f543
MS
575/* Similar iterator for the low-level breakpoints. SAFE variant is
576 not provided so update_global_location_list must not be called
577 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 578
876fa593 579#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
580 for (BP_TMP = bp_locations; \
581 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 582 BP_TMP++)
7cc221ef 583
b775012e
LM
584/* Iterates through locations with address ADDRESS for the currently selected
585 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
586 to where the loop should start from.
587 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
588 appropriate location to start with. */
589
590#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
591 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
592 BP_LOCP_TMP = BP_LOCP_START; \
593 BP_LOCP_START \
f5336ca5 594 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
595 && (*BP_LOCP_TMP)->address == ADDRESS); \
596 BP_LOCP_TMP++)
597
1042e4c0
SS
598/* Iterator for tracepoints only. */
599
600#define ALL_TRACEPOINTS(B) \
601 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 602 if (is_tracepoint (B))
1042e4c0 603
7cc221ef 604/* Chains of all breakpoints defined. */
c906108c
SS
605
606struct breakpoint *breakpoint_chain;
607
f5336ca5 608/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
876fa593 609
f5336ca5 610static struct bp_location **bp_locations;
876fa593 611
f5336ca5 612/* Number of elements of BP_LOCATIONS. */
876fa593 613
f5336ca5 614static unsigned bp_locations_count;
876fa593 615
4a64f543 616/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 617 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 618 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 619 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 620 an address you need to read. */
876fa593 621
f5336ca5 622static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 623
4a64f543
MS
624/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
625 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
626 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
627 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 628 scan for shadow bytes for an address you need to read. */
876fa593 629
f5336ca5 630static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 631
4a64f543 632/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
633 from the bp_locations array, but for which a hit may still be
634 reported by a target. */
20874c92
VP
635VEC(bp_location_p) *moribund_locations = NULL;
636
c906108c
SS
637/* Number of last breakpoint made. */
638
95a42b64
TT
639static int breakpoint_count;
640
86b17b60
PA
641/* The value of `breakpoint_count' before the last command that
642 created breakpoints. If the last (break-like) command created more
643 than one breakpoint, then the difference between BREAKPOINT_COUNT
644 and PREV_BREAKPOINT_COUNT is more than one. */
645static int prev_breakpoint_count;
c906108c 646
1042e4c0
SS
647/* Number of last tracepoint made. */
648
95a42b64 649static int tracepoint_count;
1042e4c0 650
6149aea9
PA
651static struct cmd_list_element *breakpoint_set_cmdlist;
652static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 653struct cmd_list_element *save_cmdlist;
6149aea9 654
badd37ce
SDJ
655/* See declaration at breakpoint.h. */
656
657struct breakpoint *
658breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
659 void *user_data)
660{
661 struct breakpoint *b = NULL;
662
663 ALL_BREAKPOINTS (b)
664 {
665 if (func (b, user_data) != 0)
666 break;
667 }
668
669 return b;
670}
671
468d015d
JJ
672/* Return whether a breakpoint is an active enabled breakpoint. */
673static int
674breakpoint_enabled (struct breakpoint *b)
675{
0d381245 676 return (b->enable_state == bp_enabled);
468d015d
JJ
677}
678
c906108c
SS
679/* Set breakpoint count to NUM. */
680
95a42b64 681static void
fba45db2 682set_breakpoint_count (int num)
c906108c 683{
86b17b60 684 prev_breakpoint_count = breakpoint_count;
c906108c 685 breakpoint_count = num;
4fa62494 686 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
687}
688
86b17b60
PA
689/* Used by `start_rbreak_breakpoints' below, to record the current
690 breakpoint count before "rbreak" creates any breakpoint. */
691static int rbreak_start_breakpoint_count;
692
95a42b64
TT
693/* Called at the start an "rbreak" command to record the first
694 breakpoint made. */
86b17b60 695
95a42b64
TT
696void
697start_rbreak_breakpoints (void)
698{
86b17b60 699 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
700}
701
702/* Called at the end of an "rbreak" command to record the last
703 breakpoint made. */
86b17b60 704
95a42b64
TT
705void
706end_rbreak_breakpoints (void)
707{
86b17b60 708 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
709}
710
4a64f543 711/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
712
713void
fba45db2 714clear_breakpoint_hit_counts (void)
c906108c
SS
715{
716 struct breakpoint *b;
717
718 ALL_BREAKPOINTS (b)
719 b->hit_count = 0;
720}
721
9add0f1b
TT
722/* Allocate a new counted_command_line with reference count of 1.
723 The new structure owns COMMANDS. */
724
725static struct counted_command_line *
726alloc_counted_command_line (struct command_line *commands)
727{
8d749320 728 struct counted_command_line *result = XNEW (struct counted_command_line);
cc59ec59 729
9add0f1b
TT
730 result->refc = 1;
731 result->commands = commands;
8d749320 732
9add0f1b
TT
733 return result;
734}
735
736/* Increment reference count. This does nothing if CMD is NULL. */
737
738static void
739incref_counted_command_line (struct counted_command_line *cmd)
740{
741 if (cmd)
742 ++cmd->refc;
743}
744
745/* Decrement reference count. If the reference count reaches 0,
746 destroy the counted_command_line. Sets *CMDP to NULL. This does
747 nothing if *CMDP is NULL. */
748
749static void
750decref_counted_command_line (struct counted_command_line **cmdp)
751{
752 if (*cmdp)
753 {
754 if (--(*cmdp)->refc == 0)
755 {
756 free_command_lines (&(*cmdp)->commands);
757 xfree (*cmdp);
758 }
759 *cmdp = NULL;
760 }
761}
762
763/* A cleanup function that calls decref_counted_command_line. */
764
765static void
766do_cleanup_counted_command_line (void *arg)
767{
9a3c8263 768 decref_counted_command_line ((struct counted_command_line **) arg);
9add0f1b
TT
769}
770
771/* Create a cleanup that calls decref_counted_command_line on the
772 argument. */
773
774static struct cleanup *
775make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
776{
777 return make_cleanup (do_cleanup_counted_command_line, cmdp);
778}
779
c906108c 780\f
48cb2d85
VP
781/* Return the breakpoint with the specified number, or NULL
782 if the number does not refer to an existing breakpoint. */
783
784struct breakpoint *
785get_breakpoint (int num)
786{
787 struct breakpoint *b;
788
789 ALL_BREAKPOINTS (b)
790 if (b->number == num)
791 return b;
792
793 return NULL;
794}
5c44784c 795
c906108c 796\f
adc36818 797
b775012e
LM
798/* Mark locations as "conditions have changed" in case the target supports
799 evaluating conditions on its side. */
800
801static void
802mark_breakpoint_modified (struct breakpoint *b)
803{
804 struct bp_location *loc;
805
806 /* This is only meaningful if the target is
807 evaluating conditions and if the user has
808 opted for condition evaluation on the target's
809 side. */
810 if (gdb_evaluates_breakpoint_condition_p ()
811 || !target_supports_evaluation_of_breakpoint_conditions ())
812 return;
813
814 if (!is_breakpoint (b))
815 return;
816
817 for (loc = b->loc; loc; loc = loc->next)
818 loc->condition_changed = condition_modified;
819}
820
821/* Mark location as "conditions have changed" in case the target supports
822 evaluating conditions on its side. */
823
824static void
825mark_breakpoint_location_modified (struct bp_location *loc)
826{
827 /* This is only meaningful if the target is
828 evaluating conditions and if the user has
829 opted for condition evaluation on the target's
830 side. */
831 if (gdb_evaluates_breakpoint_condition_p ()
832 || !target_supports_evaluation_of_breakpoint_conditions ())
833
834 return;
835
836 if (!is_breakpoint (loc->owner))
837 return;
838
839 loc->condition_changed = condition_modified;
840}
841
842/* Sets the condition-evaluation mode using the static global
843 condition_evaluation_mode. */
844
845static void
846set_condition_evaluation_mode (char *args, int from_tty,
847 struct cmd_list_element *c)
848{
b775012e
LM
849 const char *old_mode, *new_mode;
850
851 if ((condition_evaluation_mode_1 == condition_evaluation_target)
852 && !target_supports_evaluation_of_breakpoint_conditions ())
853 {
854 condition_evaluation_mode_1 = condition_evaluation_mode;
855 warning (_("Target does not support breakpoint condition evaluation.\n"
856 "Using host evaluation mode instead."));
857 return;
858 }
859
860 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
861 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
862
abf1152a
JK
863 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
864 settings was "auto". */
865 condition_evaluation_mode = condition_evaluation_mode_1;
866
b775012e
LM
867 /* Only update the mode if the user picked a different one. */
868 if (new_mode != old_mode)
869 {
870 struct bp_location *loc, **loc_tmp;
871 /* If the user switched to a different evaluation mode, we
872 need to synch the changes with the target as follows:
873
874 "host" -> "target": Send all (valid) conditions to the target.
875 "target" -> "host": Remove all the conditions from the target.
876 */
877
b775012e
LM
878 if (new_mode == condition_evaluation_target)
879 {
880 /* Mark everything modified and synch conditions with the
881 target. */
882 ALL_BP_LOCATIONS (loc, loc_tmp)
883 mark_breakpoint_location_modified (loc);
884 }
885 else
886 {
887 /* Manually mark non-duplicate locations to synch conditions
888 with the target. We do this to remove all the conditions the
889 target knows about. */
890 ALL_BP_LOCATIONS (loc, loc_tmp)
891 if (is_breakpoint (loc->owner) && loc->inserted)
892 loc->needs_update = 1;
893 }
894
895 /* Do the update. */
44702360 896 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
897 }
898
899 return;
900}
901
902/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
903 what "auto" is translating to. */
904
905static void
906show_condition_evaluation_mode (struct ui_file *file, int from_tty,
907 struct cmd_list_element *c, const char *value)
908{
909 if (condition_evaluation_mode == condition_evaluation_auto)
910 fprintf_filtered (file,
911 _("Breakpoint condition evaluation "
912 "mode is %s (currently %s).\n"),
913 value,
914 breakpoint_condition_evaluation_mode ());
915 else
916 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
917 value);
918}
919
920/* A comparison function for bp_location AP and BP that is used by
921 bsearch. This comparison function only cares about addresses, unlike
f5336ca5 922 the more general bp_locations_compare function. */
b775012e
LM
923
924static int
f5336ca5 925bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 926{
9a3c8263
SM
927 const struct bp_location *a = *(const struct bp_location **) ap;
928 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
929
930 if (a->address == b->address)
931 return 0;
932 else
933 return ((a->address > b->address) - (a->address < b->address));
934}
935
936/* Helper function to skip all bp_locations with addresses
937 less than ADDRESS. It returns the first bp_location that
938 is greater than or equal to ADDRESS. If none is found, just
939 return NULL. */
940
941static struct bp_location **
942get_first_locp_gte_addr (CORE_ADDR address)
943{
944 struct bp_location dummy_loc;
945 struct bp_location *dummy_locp = &dummy_loc;
946 struct bp_location **locp_found = NULL;
947
948 /* Initialize the dummy location's address field. */
b775012e
LM
949 dummy_loc.address = address;
950
951 /* Find a close match to the first location at ADDRESS. */
9a3c8263 952 locp_found = ((struct bp_location **)
f5336ca5 953 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 954 sizeof (struct bp_location **),
f5336ca5 955 bp_locations_compare_addrs));
b775012e
LM
956
957 /* Nothing was found, nothing left to do. */
958 if (locp_found == NULL)
959 return NULL;
960
961 /* We may have found a location that is at ADDRESS but is not the first in the
962 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 963 while ((locp_found - 1) >= bp_locations
b775012e
LM
964 && (*(locp_found - 1))->address == address)
965 locp_found--;
966
967 return locp_found;
968}
969
adc36818 970void
7a26bd4d 971set_breakpoint_condition (struct breakpoint *b, const char *exp,
adc36818
PM
972 int from_tty)
973{
3a5c3e22
PA
974 xfree (b->cond_string);
975 b->cond_string = NULL;
adc36818 976
3a5c3e22 977 if (is_watchpoint (b))
adc36818 978 {
3a5c3e22
PA
979 struct watchpoint *w = (struct watchpoint *) b;
980
4d01a485 981 w->cond_exp.reset ();
3a5c3e22
PA
982 }
983 else
984 {
985 struct bp_location *loc;
986
987 for (loc = b->loc; loc; loc = loc->next)
988 {
4d01a485 989 loc->cond.reset ();
b775012e
LM
990
991 /* No need to free the condition agent expression
992 bytecode (if we have one). We will handle this
993 when we go through update_global_location_list. */
3a5c3e22 994 }
adc36818 995 }
adc36818
PM
996
997 if (*exp == 0)
998 {
999 if (from_tty)
1000 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1001 }
1002 else
1003 {
bbc13ae3 1004 const char *arg = exp;
cc59ec59 1005
adc36818
PM
1006 /* I don't know if it matters whether this is the string the user
1007 typed in or the decompiled expression. */
1008 b->cond_string = xstrdup (arg);
1009 b->condition_not_parsed = 0;
1010
1011 if (is_watchpoint (b))
1012 {
3a5c3e22
PA
1013 struct watchpoint *w = (struct watchpoint *) b;
1014
adc36818
PM
1015 innermost_block = NULL;
1016 arg = exp;
1bb9788d 1017 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
adc36818
PM
1018 if (*arg)
1019 error (_("Junk at end of expression"));
3a5c3e22 1020 w->cond_exp_valid_block = innermost_block;
adc36818
PM
1021 }
1022 else
1023 {
3a5c3e22
PA
1024 struct bp_location *loc;
1025
adc36818
PM
1026 for (loc = b->loc; loc; loc = loc->next)
1027 {
1028 arg = exp;
1029 loc->cond =
1bb9788d
TT
1030 parse_exp_1 (&arg, loc->address,
1031 block_for_pc (loc->address), 0);
adc36818
PM
1032 if (*arg)
1033 error (_("Junk at end of expression"));
1034 }
1035 }
1036 }
b775012e
LM
1037 mark_breakpoint_modified (b);
1038
8d3788bd 1039 observer_notify_breakpoint_modified (b);
adc36818
PM
1040}
1041
d55637df
TT
1042/* Completion for the "condition" command. */
1043
eb3ff9a5 1044static void
6f937416 1045condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 1046 completion_tracker &tracker,
6f937416 1047 const char *text, const char *word)
d55637df 1048{
6f937416 1049 const char *space;
d55637df 1050
f1735a53
TT
1051 text = skip_spaces (text);
1052 space = skip_to_space (text);
d55637df
TT
1053 if (*space == '\0')
1054 {
1055 int len;
1056 struct breakpoint *b;
1057 VEC (char_ptr) *result = NULL;
1058
1059 if (text[0] == '$')
1060 {
1061 /* We don't support completion of history indices. */
eb3ff9a5
PA
1062 if (!isdigit (text[1]))
1063 complete_internalvar (tracker, &text[1]);
1064 return;
d55637df
TT
1065 }
1066
1067 /* We're completing the breakpoint number. */
1068 len = strlen (text);
1069
1070 ALL_BREAKPOINTS (b)
58ce7251
SDJ
1071 {
1072 char number[50];
1073
1074 xsnprintf (number, sizeof (number), "%d", b->number);
1075
1076 if (strncmp (number, text, len) == 0)
eb3ff9a5
PA
1077 {
1078 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
1079 tracker.add_completion (std::move (copy));
1080 }
58ce7251 1081 }
d55637df 1082
eb3ff9a5 1083 return;
d55637df
TT
1084 }
1085
1086 /* We're completing the expression part. */
f1735a53 1087 text = skip_spaces (space);
eb3ff9a5 1088 expression_completer (cmd, tracker, text, word);
d55637df
TT
1089}
1090
c906108c
SS
1091/* condition N EXP -- set break condition of breakpoint N to EXP. */
1092
1093static void
fba45db2 1094condition_command (char *arg, int from_tty)
c906108c 1095{
52f0bd74 1096 struct breakpoint *b;
c906108c 1097 char *p;
52f0bd74 1098 int bnum;
c906108c
SS
1099
1100 if (arg == 0)
e2e0b3e5 1101 error_no_arg (_("breakpoint number"));
c906108c
SS
1102
1103 p = arg;
1104 bnum = get_number (&p);
5c44784c 1105 if (bnum == 0)
8a3fe4f8 1106 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
1107
1108 ALL_BREAKPOINTS (b)
1109 if (b->number == bnum)
2f069f6f 1110 {
6dddc817
DE
1111 /* Check if this breakpoint has a "stop" method implemented in an
1112 extension language. This method and conditions entered into GDB
1113 from the CLI are mutually exclusive. */
1114 const struct extension_language_defn *extlang
1115 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1116
1117 if (extlang != NULL)
1118 {
1119 error (_("Only one stop condition allowed. There is currently"
1120 " a %s stop condition defined for this breakpoint."),
1121 ext_lang_capitalized_name (extlang));
1122 }
2566ad2d 1123 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
1124
1125 if (is_breakpoint (b))
44702360 1126 update_global_location_list (UGLL_MAY_INSERT);
b775012e 1127
2f069f6f
JB
1128 return;
1129 }
c906108c 1130
8a3fe4f8 1131 error (_("No breakpoint number %d."), bnum);
c906108c
SS
1132}
1133
a7bdde9e
VP
1134/* Check that COMMAND do not contain commands that are suitable
1135 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1136 Throw if any such commands is found. */
1137
a7bdde9e
VP
1138static void
1139check_no_tracepoint_commands (struct command_line *commands)
1140{
1141 struct command_line *c;
cc59ec59 1142
a7bdde9e
VP
1143 for (c = commands; c; c = c->next)
1144 {
1145 int i;
1146
1147 if (c->control_type == while_stepping_control)
3e43a32a
MS
1148 error (_("The 'while-stepping' command can "
1149 "only be used for tracepoints"));
a7bdde9e
VP
1150
1151 for (i = 0; i < c->body_count; ++i)
1152 check_no_tracepoint_commands ((c->body_list)[i]);
1153
1154 /* Not that command parsing removes leading whitespace and comment
4a64f543 1155 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1156 command directly. */
1157 if (strstr (c->line, "collect ") == c->line)
1158 error (_("The 'collect' command can only be used for tracepoints"));
1159
51661e93
VP
1160 if (strstr (c->line, "teval ") == c->line)
1161 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1162 }
1163}
1164
c1fc2657 1165struct longjmp_breakpoint : public breakpoint
3b0871f4 1166{
c1fc2657 1167 ~longjmp_breakpoint () override;
3b0871f4
SM
1168};
1169
d77f58be
SS
1170/* Encapsulate tests for different types of tracepoints. */
1171
3b0871f4
SM
1172static bool
1173is_tracepoint_type (bptype type)
d9b3f62e
PA
1174{
1175 return (type == bp_tracepoint
1176 || type == bp_fast_tracepoint
1177 || type == bp_static_tracepoint);
1178}
1179
3b0871f4
SM
1180static bool
1181is_longjmp_type (bptype type)
1182{
1183 return type == bp_longjmp || type == bp_exception;
1184}
1185
a7bdde9e 1186int
d77f58be 1187is_tracepoint (const struct breakpoint *b)
a7bdde9e 1188{
d9b3f62e 1189 return is_tracepoint_type (b->type);
a7bdde9e 1190}
d9b3f62e 1191
a5e364af
SM
1192/* Factory function to create an appropriate instance of breakpoint given
1193 TYPE. */
1194
1195static std::unique_ptr<breakpoint>
1196new_breakpoint_from_type (bptype type)
1197{
1198 breakpoint *b;
1199
1200 if (is_tracepoint_type (type))
c1fc2657 1201 b = new tracepoint ();
3b0871f4 1202 else if (is_longjmp_type (type))
c1fc2657 1203 b = new longjmp_breakpoint ();
a5e364af
SM
1204 else
1205 b = new breakpoint ();
1206
1207 return std::unique_ptr<breakpoint> (b);
1208}
1209
e5dd4106 1210/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1211 breakpoint. This function will throw an exception if a problem is
1212 found. */
48cb2d85 1213
95a42b64
TT
1214static void
1215validate_commands_for_breakpoint (struct breakpoint *b,
1216 struct command_line *commands)
48cb2d85 1217{
d77f58be 1218 if (is_tracepoint (b))
a7bdde9e 1219 {
c9a6ce02 1220 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1221 struct command_line *c;
1222 struct command_line *while_stepping = 0;
c9a6ce02
PA
1223
1224 /* Reset the while-stepping step count. The previous commands
1225 might have included a while-stepping action, while the new
1226 ones might not. */
1227 t->step_count = 0;
1228
1229 /* We need to verify that each top-level element of commands is
1230 valid for tracepoints, that there's at most one
1231 while-stepping element, and that the while-stepping's body
1232 has valid tracing commands excluding nested while-stepping.
1233 We also need to validate the tracepoint action line in the
1234 context of the tracepoint --- validate_actionline actually
1235 has side effects, like setting the tracepoint's
1236 while-stepping STEP_COUNT, in addition to checking if the
1237 collect/teval actions parse and make sense in the
1238 tracepoint's context. */
a7bdde9e
VP
1239 for (c = commands; c; c = c->next)
1240 {
a7bdde9e
VP
1241 if (c->control_type == while_stepping_control)
1242 {
1243 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1244 error (_("The 'while-stepping' command "
1245 "cannot be used for fast tracepoint"));
0fb4aa4b 1246 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1247 error (_("The 'while-stepping' command "
1248 "cannot be used for static tracepoint"));
a7bdde9e
VP
1249
1250 if (while_stepping)
3e43a32a
MS
1251 error (_("The 'while-stepping' command "
1252 "can be used only once"));
a7bdde9e
VP
1253 else
1254 while_stepping = c;
1255 }
c9a6ce02
PA
1256
1257 validate_actionline (c->line, b);
a7bdde9e
VP
1258 }
1259 if (while_stepping)
1260 {
1261 struct command_line *c2;
1262
1263 gdb_assert (while_stepping->body_count == 1);
1264 c2 = while_stepping->body_list[0];
1265 for (; c2; c2 = c2->next)
1266 {
a7bdde9e
VP
1267 if (c2->control_type == while_stepping_control)
1268 error (_("The 'while-stepping' command cannot be nested"));
1269 }
1270 }
1271 }
1272 else
1273 {
1274 check_no_tracepoint_commands (commands);
1275 }
95a42b64
TT
1276}
1277
0fb4aa4b
PA
1278/* Return a vector of all the static tracepoints set at ADDR. The
1279 caller is responsible for releasing the vector. */
1280
1281VEC(breakpoint_p) *
1282static_tracepoints_here (CORE_ADDR addr)
1283{
1284 struct breakpoint *b;
1285 VEC(breakpoint_p) *found = 0;
1286 struct bp_location *loc;
1287
1288 ALL_BREAKPOINTS (b)
1289 if (b->type == bp_static_tracepoint)
1290 {
1291 for (loc = b->loc; loc; loc = loc->next)
1292 if (loc->address == addr)
1293 VEC_safe_push(breakpoint_p, found, b);
1294 }
1295
1296 return found;
1297}
1298
95a42b64 1299/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1300 validate that only allowed commands are included. */
95a42b64
TT
1301
1302void
4a64f543 1303breakpoint_set_commands (struct breakpoint *b,
93921405 1304 command_line_up &&commands)
95a42b64 1305{
93921405 1306 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1307
9add0f1b 1308 decref_counted_command_line (&b->commands);
93921405 1309 b->commands = alloc_counted_command_line (commands.release ());
8d3788bd 1310 observer_notify_breakpoint_modified (b);
48cb2d85
VP
1311}
1312
45a43567
TT
1313/* Set the internal `silent' flag on the breakpoint. Note that this
1314 is not the same as the "silent" that may appear in the breakpoint's
1315 commands. */
1316
1317void
1318breakpoint_set_silent (struct breakpoint *b, int silent)
1319{
1320 int old_silent = b->silent;
1321
1322 b->silent = silent;
1323 if (old_silent != silent)
8d3788bd 1324 observer_notify_breakpoint_modified (b);
45a43567
TT
1325}
1326
1327/* Set the thread for this breakpoint. If THREAD is -1, make the
1328 breakpoint work for any thread. */
1329
1330void
1331breakpoint_set_thread (struct breakpoint *b, int thread)
1332{
1333 int old_thread = b->thread;
1334
1335 b->thread = thread;
1336 if (old_thread != thread)
8d3788bd 1337 observer_notify_breakpoint_modified (b);
45a43567
TT
1338}
1339
1340/* Set the task for this breakpoint. If TASK is 0, make the
1341 breakpoint work for any task. */
1342
1343void
1344breakpoint_set_task (struct breakpoint *b, int task)
1345{
1346 int old_task = b->task;
1347
1348 b->task = task;
1349 if (old_task != task)
8d3788bd 1350 observer_notify_breakpoint_modified (b);
45a43567
TT
1351}
1352
95a42b64
TT
1353void
1354check_tracepoint_command (char *line, void *closure)
a7bdde9e 1355{
9a3c8263 1356 struct breakpoint *b = (struct breakpoint *) closure;
cc59ec59 1357
6f937416 1358 validate_actionline (line, b);
a7bdde9e
VP
1359}
1360
95a42b64
TT
1361/* A structure used to pass information through
1362 map_breakpoint_numbers. */
1363
1364struct commands_info
1365{
1366 /* True if the command was typed at a tty. */
1367 int from_tty;
86b17b60
PA
1368
1369 /* The breakpoint range spec. */
896b6bda 1370 const char *arg;
86b17b60 1371
95a42b64
TT
1372 /* Non-NULL if the body of the commands are being read from this
1373 already-parsed command. */
1374 struct command_line *control;
86b17b60 1375
95a42b64
TT
1376 /* The command lines read from the user, or NULL if they have not
1377 yet been read. */
1378 struct counted_command_line *cmd;
1379};
1380
1381/* A callback for map_breakpoint_numbers that sets the commands for
1382 commands_command. */
1383
c906108c 1384static void
95a42b64 1385do_map_commands_command (struct breakpoint *b, void *data)
c906108c 1386{
9a3c8263 1387 struct commands_info *info = (struct commands_info *) data;
c906108c 1388
95a42b64
TT
1389 if (info->cmd == NULL)
1390 {
93921405 1391 command_line_up l;
5c44784c 1392
95a42b64
TT
1393 if (info->control != NULL)
1394 l = copy_command_lines (info->control->body_list[0]);
1395 else
86b17b60
PA
1396 {
1397 struct cleanup *old_chain;
1398 char *str;
c5aa993b 1399
3e43a32a
MS
1400 str = xstrprintf (_("Type commands for breakpoint(s) "
1401 "%s, one per line."),
86b17b60
PA
1402 info->arg);
1403
1404 old_chain = make_cleanup (xfree, str);
1405
1406 l = read_command_lines (str,
1407 info->from_tty, 1,
d77f58be 1408 (is_tracepoint (b)
86b17b60
PA
1409 ? check_tracepoint_command : 0),
1410 b);
1411
1412 do_cleanups (old_chain);
1413 }
a7bdde9e 1414
93921405 1415 info->cmd = alloc_counted_command_line (l.release ());
95a42b64
TT
1416 }
1417
1418 /* If a breakpoint was on the list more than once, we don't need to
1419 do anything. */
1420 if (b->commands != info->cmd)
1421 {
1422 validate_commands_for_breakpoint (b, info->cmd->commands);
1423 incref_counted_command_line (info->cmd);
1424 decref_counted_command_line (&b->commands);
1425 b->commands = info->cmd;
8d3788bd 1426 observer_notify_breakpoint_modified (b);
c5aa993b 1427 }
95a42b64
TT
1428}
1429
1430static void
896b6bda 1431commands_command_1 (const char *arg, int from_tty,
4a64f543 1432 struct command_line *control)
95a42b64
TT
1433{
1434 struct cleanup *cleanups;
1435 struct commands_info info;
1436
1437 info.from_tty = from_tty;
1438 info.control = control;
1439 info.cmd = NULL;
1440 /* If we read command lines from the user, then `info' will hold an
1441 extra reference to the commands that we must clean up. */
1442 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1443
896b6bda
PA
1444 std::string new_arg;
1445
95a42b64
TT
1446 if (arg == NULL || !*arg)
1447 {
86b17b60 1448 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1449 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1450 breakpoint_count);
95a42b64 1451 else if (breakpoint_count > 0)
896b6bda 1452 new_arg = string_printf ("%d", breakpoint_count);
95a42b64 1453 }
9766ced4 1454 else
896b6bda 1455 new_arg = arg;
86b17b60 1456
896b6bda 1457 info.arg = new_arg.c_str ();
95a42b64 1458
896b6bda 1459 map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
95a42b64
TT
1460
1461 if (info.cmd == NULL)
1462 error (_("No breakpoints specified."));
1463
1464 do_cleanups (cleanups);
1465}
1466
1467static void
1468commands_command (char *arg, int from_tty)
1469{
1470 commands_command_1 (arg, from_tty, NULL);
c906108c 1471}
40c03ae8
EZ
1472
1473/* Like commands_command, but instead of reading the commands from
1474 input stream, takes them from an already parsed command structure.
1475
1476 This is used by cli-script.c to DTRT with breakpoint commands
1477 that are part of if and while bodies. */
1478enum command_control_type
896b6bda 1479commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1480{
95a42b64
TT
1481 commands_command_1 (arg, 0, cmd);
1482 return simple_control;
40c03ae8 1483}
876fa593
JK
1484
1485/* Return non-zero if BL->TARGET_INFO contains valid information. */
1486
1487static int
1488bp_location_has_shadow (struct bp_location *bl)
1489{
1490 if (bl->loc_type != bp_loc_software_breakpoint)
1491 return 0;
1492 if (!bl->inserted)
1493 return 0;
1494 if (bl->target_info.shadow_len == 0)
e5dd4106 1495 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1496 return 0;
1497 return 1;
1498}
1499
9d497a19
PA
1500/* Update BUF, which is LEN bytes read from the target address
1501 MEMADDR, by replacing a memory breakpoint with its shadowed
1502 contents.
1503
1504 If READBUF is not NULL, this buffer must not overlap with the of
1505 the breakpoint location's shadow_contents buffer. Otherwise, a
1506 failed assertion internal error will be raised. */
1507
1508static void
1509one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1510 const gdb_byte *writebuf_org,
1511 ULONGEST memaddr, LONGEST len,
1512 struct bp_target_info *target_info,
1513 struct gdbarch *gdbarch)
1514{
1515 /* Now do full processing of the found relevant range of elements. */
1516 CORE_ADDR bp_addr = 0;
1517 int bp_size = 0;
1518 int bptoffset = 0;
1519
1520 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1521 current_program_space->aspace, 0))
1522 {
1523 /* The breakpoint is inserted in a different address space. */
1524 return;
1525 }
1526
1527 /* Addresses and length of the part of the breakpoint that
1528 we need to copy. */
1529 bp_addr = target_info->placed_address;
1530 bp_size = target_info->shadow_len;
1531
1532 if (bp_addr + bp_size <= memaddr)
1533 {
1534 /* The breakpoint is entirely before the chunk of memory we are
1535 reading. */
1536 return;
1537 }
1538
1539 if (bp_addr >= memaddr + len)
1540 {
1541 /* The breakpoint is entirely after the chunk of memory we are
1542 reading. */
1543 return;
1544 }
1545
1546 /* Offset within shadow_contents. */
1547 if (bp_addr < memaddr)
1548 {
1549 /* Only copy the second part of the breakpoint. */
1550 bp_size -= memaddr - bp_addr;
1551 bptoffset = memaddr - bp_addr;
1552 bp_addr = memaddr;
1553 }
1554
1555 if (bp_addr + bp_size > memaddr + len)
1556 {
1557 /* Only copy the first part of the breakpoint. */
1558 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1559 }
1560
1561 if (readbuf != NULL)
1562 {
1563 /* Verify that the readbuf buffer does not overlap with the
1564 shadow_contents buffer. */
1565 gdb_assert (target_info->shadow_contents >= readbuf + len
1566 || readbuf >= (target_info->shadow_contents
1567 + target_info->shadow_len));
1568
1569 /* Update the read buffer with this inserted breakpoint's
1570 shadow. */
1571 memcpy (readbuf + bp_addr - memaddr,
1572 target_info->shadow_contents + bptoffset, bp_size);
1573 }
1574 else
1575 {
1576 const unsigned char *bp;
0d5ed153
MR
1577 CORE_ADDR addr = target_info->reqstd_address;
1578 int placed_size;
9d497a19
PA
1579
1580 /* Update the shadow with what we want to write to memory. */
1581 memcpy (target_info->shadow_contents + bptoffset,
1582 writebuf_org + bp_addr - memaddr, bp_size);
1583
1584 /* Determine appropriate breakpoint contents and size for this
1585 address. */
0d5ed153 1586 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1587
1588 /* Update the final write buffer with this inserted
1589 breakpoint's INSN. */
1590 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1591 }
1592}
1593
8defab1a 1594/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1595 by replacing any memory breakpoints with their shadowed contents.
1596
35c63cd8
JB
1597 If READBUF is not NULL, this buffer must not overlap with any of
1598 the breakpoint location's shadow_contents buffers. Otherwise,
1599 a failed assertion internal error will be raised.
1600
876fa593 1601 The range of shadowed area by each bp_location is:
f5336ca5
PA
1602 bl->address - bp_locations_placed_address_before_address_max
1603 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1604 The range we were requested to resolve shadows for is:
1605 memaddr ... memaddr + len
1606 Thus the safe cutoff boundaries for performance optimization are
35df4500 1607 memaddr + len <= (bl->address
f5336ca5 1608 - bp_locations_placed_address_before_address_max)
876fa593 1609 and:
f5336ca5 1610 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1611
8defab1a 1612void
f0ba3972
PA
1613breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1614 const gdb_byte *writebuf_org,
1615 ULONGEST memaddr, LONGEST len)
c906108c 1616{
4a64f543
MS
1617 /* Left boundary, right boundary and median element of our binary
1618 search. */
876fa593
JK
1619 unsigned bc_l, bc_r, bc;
1620
4a64f543
MS
1621 /* Find BC_L which is a leftmost element which may affect BUF
1622 content. It is safe to report lower value but a failure to
1623 report higher one. */
876fa593
JK
1624
1625 bc_l = 0;
f5336ca5 1626 bc_r = bp_locations_count;
876fa593
JK
1627 while (bc_l + 1 < bc_r)
1628 {
35df4500 1629 struct bp_location *bl;
876fa593
JK
1630
1631 bc = (bc_l + bc_r) / 2;
f5336ca5 1632 bl = bp_locations[bc];
876fa593 1633
4a64f543
MS
1634 /* Check first BL->ADDRESS will not overflow due to the added
1635 constant. Then advance the left boundary only if we are sure
1636 the BC element can in no way affect the BUF content (MEMADDR
1637 to MEMADDR + LEN range).
876fa593 1638
f5336ca5 1639 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1640 offset so that we cannot miss a breakpoint with its shadow
1641 range tail still reaching MEMADDR. */
c5aa993b 1642
f5336ca5 1643 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1644 >= bl->address)
f5336ca5 1645 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1646 <= memaddr))
876fa593
JK
1647 bc_l = bc;
1648 else
1649 bc_r = bc;
1650 }
1651
128070bb
PA
1652 /* Due to the binary search above, we need to make sure we pick the
1653 first location that's at BC_L's address. E.g., if there are
1654 multiple locations at the same address, BC_L may end up pointing
1655 at a duplicate location, and miss the "master"/"inserted"
1656 location. Say, given locations L1, L2 and L3 at addresses A and
1657 B:
1658
1659 L1@A, L2@A, L3@B, ...
1660
1661 BC_L could end up pointing at location L2, while the "master"
1662 location could be L1. Since the `loc->inserted' flag is only set
1663 on "master" locations, we'd forget to restore the shadow of L1
1664 and L2. */
1665 while (bc_l > 0
f5336ca5 1666 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1667 bc_l--;
1668
876fa593
JK
1669 /* Now do full processing of the found relevant range of elements. */
1670
f5336ca5 1671 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1672 {
f5336ca5 1673 struct bp_location *bl = bp_locations[bc];
876fa593 1674
35df4500
TJB
1675 /* bp_location array has BL->OWNER always non-NULL. */
1676 if (bl->owner->type == bp_none)
8a3fe4f8 1677 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1678 bl->owner->number);
ffce0d52 1679
e5dd4106 1680 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1681 content. */
1682
f5336ca5
PA
1683 if (bl->address >= bp_locations_placed_address_before_address_max
1684 && memaddr + len <= (bl->address
1685 - bp_locations_placed_address_before_address_max))
876fa593
JK
1686 break;
1687
35df4500 1688 if (!bp_location_has_shadow (bl))
c5aa993b 1689 continue;
6c95b8df 1690
9d497a19
PA
1691 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1692 memaddr, len, &bl->target_info, bl->gdbarch);
1693 }
c906108c 1694}
9d497a19 1695
c906108c 1696\f
c5aa993b 1697
b775012e
LM
1698/* Return true if BPT is either a software breakpoint or a hardware
1699 breakpoint. */
1700
1701int
1702is_breakpoint (const struct breakpoint *bpt)
1703{
1704 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1705 || bpt->type == bp_hardware_breakpoint
1706 || bpt->type == bp_dprintf);
b775012e
LM
1707}
1708
60e1c644
PA
1709/* Return true if BPT is of any hardware watchpoint kind. */
1710
a5606eee 1711static int
d77f58be 1712is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1713{
1714 return (bpt->type == bp_hardware_watchpoint
1715 || bpt->type == bp_read_watchpoint
1716 || bpt->type == bp_access_watchpoint);
1717}
7270d8f2 1718
60e1c644
PA
1719/* Return true if BPT is of any watchpoint kind, hardware or
1720 software. */
1721
3a5c3e22 1722int
d77f58be 1723is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1724{
1725 return (is_hardware_watchpoint (bpt)
1726 || bpt->type == bp_watchpoint);
1727}
1728
3a5c3e22
PA
1729/* Returns true if the current thread and its running state are safe
1730 to evaluate or update watchpoint B. Watchpoints on local
1731 expressions need to be evaluated in the context of the thread that
1732 was current when the watchpoint was created, and, that thread needs
1733 to be stopped to be able to select the correct frame context.
1734 Watchpoints on global expressions can be evaluated on any thread,
1735 and in any state. It is presently left to the target allowing
1736 memory accesses when threads are running. */
f6bc2008
PA
1737
1738static int
3a5c3e22 1739watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1740{
c1fc2657 1741 return (b->pspace == current_program_space
d0d8b0c6
JK
1742 && (ptid_equal (b->watchpoint_thread, null_ptid)
1743 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1744 && !is_executing (inferior_ptid))));
f6bc2008
PA
1745}
1746
d0fb5eae
JK
1747/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1748 associated bp_watchpoint_scope breakpoint. */
1749
1750static void
3a5c3e22 1751watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1752{
c1fc2657 1753 if (w->related_breakpoint != w)
d0fb5eae 1754 {
c1fc2657
SM
1755 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1756 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1757 w->related_breakpoint->disposition = disp_del_at_next_stop;
1758 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1759 w->related_breakpoint = w;
d0fb5eae 1760 }
c1fc2657 1761 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1762}
1763
bb9d5f81
PP
1764/* Extract a bitfield value from value VAL using the bit parameters contained in
1765 watchpoint W. */
1766
1767static struct value *
1768extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1769{
1770 struct value *bit_val;
1771
1772 if (val == NULL)
1773 return NULL;
1774
1775 bit_val = allocate_value (value_type (val));
1776
1777 unpack_value_bitfield (bit_val,
1778 w->val_bitpos,
1779 w->val_bitsize,
1780 value_contents_for_printing (val),
1781 value_offset (val),
1782 val);
1783
1784 return bit_val;
1785}
1786
c6d81124
PA
1787/* Allocate a dummy location and add it to B, which must be a software
1788 watchpoint. This is required because even if a software watchpoint
1789 is not watching any memory, bpstat_stop_status requires a location
1790 to be able to report stops. */
1791
1792static void
1793software_watchpoint_add_no_memory_location (struct breakpoint *b,
1794 struct program_space *pspace)
1795{
1796 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1797
1798 b->loc = allocate_bp_location (b);
1799 b->loc->pspace = pspace;
1800 b->loc->address = -1;
1801 b->loc->length = -1;
1802}
1803
1804/* Returns true if B is a software watchpoint that is not watching any
1805 memory (e.g., "watch $pc"). */
1806
1807static int
1808is_no_memory_software_watchpoint (struct breakpoint *b)
1809{
1810 return (b->type == bp_watchpoint
1811 && b->loc != NULL
1812 && b->loc->next == NULL
1813 && b->loc->address == -1
1814 && b->loc->length == -1);
1815}
1816
567e1b4e
JB
1817/* Assuming that B is a watchpoint:
1818 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1819 - Evaluate expression and store the result in B->val
567e1b4e
JB
1820 - Evaluate the condition if there is one, and store the result
1821 in b->loc->cond.
a5606eee
VP
1822 - Update the list of values that must be watched in B->loc.
1823
4a64f543
MS
1824 If the watchpoint disposition is disp_del_at_next_stop, then do
1825 nothing. If this is local watchpoint that is out of scope, delete
1826 it.
1827
1828 Even with `set breakpoint always-inserted on' the watchpoints are
1829 removed + inserted on each stop here. Normal breakpoints must
1830 never be removed because they might be missed by a running thread
1831 when debugging in non-stop mode. On the other hand, hardware
1832 watchpoints (is_hardware_watchpoint; processed here) are specific
1833 to each LWP since they are stored in each LWP's hardware debug
1834 registers. Therefore, such LWP must be stopped first in order to
1835 be able to modify its hardware watchpoints.
1836
1837 Hardware watchpoints must be reset exactly once after being
1838 presented to the user. It cannot be done sooner, because it would
1839 reset the data used to present the watchpoint hit to the user. And
1840 it must not be done later because it could display the same single
1841 watchpoint hit during multiple GDB stops. Note that the latter is
1842 relevant only to the hardware watchpoint types bp_read_watchpoint
1843 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1844 not user-visible - its hit is suppressed if the memory content has
1845 not changed.
1846
1847 The following constraints influence the location where we can reset
1848 hardware watchpoints:
1849
1850 * target_stopped_by_watchpoint and target_stopped_data_address are
1851 called several times when GDB stops.
1852
1853 [linux]
1854 * Multiple hardware watchpoints can be hit at the same time,
1855 causing GDB to stop. GDB only presents one hardware watchpoint
1856 hit at a time as the reason for stopping, and all the other hits
1857 are presented later, one after the other, each time the user
1858 requests the execution to be resumed. Execution is not resumed
1859 for the threads still having pending hit event stored in
1860 LWP_INFO->STATUS. While the watchpoint is already removed from
1861 the inferior on the first stop the thread hit event is kept being
1862 reported from its cached value by linux_nat_stopped_data_address
1863 until the real thread resume happens after the watchpoint gets
1864 presented and thus its LWP_INFO->STATUS gets reset.
1865
1866 Therefore the hardware watchpoint hit can get safely reset on the
1867 watchpoint removal from inferior. */
a79d3c27 1868
b40ce68a 1869static void
3a5c3e22 1870update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1871{
a5606eee 1872 int within_current_scope;
a5606eee 1873 struct frame_id saved_frame_id;
66076460 1874 int frame_saved;
a5606eee 1875
f6bc2008
PA
1876 /* If this is a local watchpoint, we only want to check if the
1877 watchpoint frame is in scope if the current thread is the thread
1878 that was used to create the watchpoint. */
1879 if (!watchpoint_in_thread_scope (b))
1880 return;
1881
c1fc2657 1882 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1883 return;
1884
66076460 1885 frame_saved = 0;
a5606eee
VP
1886
1887 /* Determine if the watchpoint is within scope. */
1888 if (b->exp_valid_block == NULL)
1889 within_current_scope = 1;
1890 else
1891 {
b5db5dfc
UW
1892 struct frame_info *fi = get_current_frame ();
1893 struct gdbarch *frame_arch = get_frame_arch (fi);
1894 CORE_ADDR frame_pc = get_frame_pc (fi);
1895
c9cf6e20
MG
1896 /* If we're at a point where the stack has been destroyed
1897 (e.g. in a function epilogue), unwinding may not work
1898 properly. Do not attempt to recreate locations at this
b5db5dfc 1899 point. See similar comments in watchpoint_check. */
c9cf6e20 1900 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1901 return;
66076460
DJ
1902
1903 /* Save the current frame's ID so we can restore it after
1904 evaluating the watchpoint expression on its own frame. */
1905 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1906 took a frame parameter, so that we didn't have to change the
1907 selected frame. */
1908 frame_saved = 1;
1909 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1910
a5606eee
VP
1911 fi = frame_find_by_id (b->watchpoint_frame);
1912 within_current_scope = (fi != NULL);
1913 if (within_current_scope)
1914 select_frame (fi);
1915 }
1916
b5db5dfc
UW
1917 /* We don't free locations. They are stored in the bp_location array
1918 and update_global_location_list will eventually delete them and
1919 remove breakpoints if needed. */
c1fc2657 1920 b->loc = NULL;
b5db5dfc 1921
a5606eee
VP
1922 if (within_current_scope && reparse)
1923 {
bbc13ae3 1924 const char *s;
d63d0675 1925
4d01a485 1926 b->exp.reset ();
d63d0675 1927 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1928 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1929 /* If the meaning of expression itself changed, the old value is
1930 no longer relevant. We don't want to report a watchpoint hit
1931 to the user when the old value and the new value may actually
1932 be completely different objects. */
1933 value_free (b->val);
fa4727a6
DJ
1934 b->val = NULL;
1935 b->val_valid = 0;
60e1c644
PA
1936
1937 /* Note that unlike with breakpoints, the watchpoint's condition
1938 expression is stored in the breakpoint object, not in the
1939 locations (re)created below. */
c1fc2657 1940 if (b->cond_string != NULL)
60e1c644 1941 {
4d01a485 1942 b->cond_exp.reset ();
60e1c644 1943
c1fc2657 1944 s = b->cond_string;
1bb9788d 1945 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1946 }
a5606eee 1947 }
a5606eee
VP
1948
1949 /* If we failed to parse the expression, for example because
1950 it refers to a global variable in a not-yet-loaded shared library,
1951 don't try to insert watchpoint. We don't automatically delete
1952 such watchpoint, though, since failure to parse expression
1953 is different from out-of-scope watchpoint. */
e8369a73 1954 if (!target_has_execution)
2d134ed3
PA
1955 {
1956 /* Without execution, memory can't change. No use to try and
1957 set watchpoint locations. The watchpoint will be reset when
1958 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1959 if (!can_use_hw_watchpoints)
1960 {
c1fc2657
SM
1961 if (b->ops->works_in_software_mode (b))
1962 b->type = bp_watchpoint;
e8369a73 1963 else
638aa5a1
AB
1964 error (_("Can't set read/access watchpoint when "
1965 "hardware watchpoints are disabled."));
e8369a73 1966 }
2d134ed3
PA
1967 }
1968 else if (within_current_scope && b->exp)
a5606eee 1969 {
0cf6dd15 1970 int pc = 0;
fa4727a6 1971 struct value *val_chain, *v, *result, *next;
2d134ed3 1972 struct program_space *frame_pspace;
a5606eee 1973
4d01a485 1974 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1975
a5606eee
VP
1976 /* Avoid setting b->val if it's already set. The meaning of
1977 b->val is 'the last value' user saw, and we should update
1978 it only if we reported that last value to user. As it
9c06b0b4
TJB
1979 happens, the code that reports it updates b->val directly.
1980 We don't keep track of the memory value for masked
1981 watchpoints. */
c1fc2657 1982 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1983 {
bb9d5f81
PP
1984 if (b->val_bitsize != 0)
1985 {
1986 v = extract_bitfield_from_watchpoint_value (b, v);
1987 if (v != NULL)
1988 release_value (v);
1989 }
fa4727a6
DJ
1990 b->val = v;
1991 b->val_valid = 1;
1992 }
a5606eee 1993
2d134ed3
PA
1994 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1995
a5606eee 1996 /* Look at each value on the value chain. */
9fa40276 1997 for (v = val_chain; v; v = value_next (v))
a5606eee
VP
1998 {
1999 /* If it's a memory location, and GDB actually needed
2000 its contents to evaluate the expression, then we
fa4727a6
DJ
2001 must watch it. If the first value returned is
2002 still lazy, that means an error occurred reading it;
2003 watch it anyway in case it becomes readable. */
a5606eee 2004 if (VALUE_LVAL (v) == lval_memory
fa4727a6 2005 && (v == val_chain || ! value_lazy (v)))
a5606eee
VP
2006 {
2007 struct type *vtype = check_typedef (value_type (v));
7270d8f2 2008
a5606eee
VP
2009 /* We only watch structs and arrays if user asked
2010 for it explicitly, never if they just happen to
2011 appear in the middle of some value chain. */
fa4727a6 2012 if (v == result
a5606eee
VP
2013 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2014 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2015 {
2016 CORE_ADDR addr;
f486487f 2017 enum target_hw_bp_type type;
a5606eee 2018 struct bp_location *loc, **tmp;
bb9d5f81
PP
2019 int bitpos = 0, bitsize = 0;
2020
2021 if (value_bitsize (v) != 0)
2022 {
2023 /* Extract the bit parameters out from the bitfield
2024 sub-expression. */
2025 bitpos = value_bitpos (v);
2026 bitsize = value_bitsize (v);
2027 }
2028 else if (v == result && b->val_bitsize != 0)
2029 {
2030 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2031 lvalue whose bit parameters are saved in the fields
2032 VAL_BITPOS and VAL_BITSIZE. */
2033 bitpos = b->val_bitpos;
2034 bitsize = b->val_bitsize;
2035 }
a5606eee 2036
42ae5230 2037 addr = value_address (v);
bb9d5f81
PP
2038 if (bitsize != 0)
2039 {
2040 /* Skip the bytes that don't contain the bitfield. */
2041 addr += bitpos / 8;
2042 }
2043
a5606eee 2044 type = hw_write;
c1fc2657 2045 if (b->type == bp_read_watchpoint)
a5606eee 2046 type = hw_read;
c1fc2657 2047 else if (b->type == bp_access_watchpoint)
a5606eee 2048 type = hw_access;
3a5c3e22 2049
c1fc2657
SM
2050 loc = allocate_bp_location (b);
2051 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
2052 ;
2053 *tmp = loc;
a6d9a66e 2054 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
2055
2056 loc->pspace = frame_pspace;
a5606eee 2057 loc->address = addr;
bb9d5f81
PP
2058
2059 if (bitsize != 0)
2060 {
2061 /* Just cover the bytes that make up the bitfield. */
2062 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2063 }
2064 else
2065 loc->length = TYPE_LENGTH (value_type (v));
2066
a5606eee
VP
2067 loc->watchpoint_type = type;
2068 }
2069 }
9fa40276
TJB
2070 }
2071
2072 /* Change the type of breakpoint between hardware assisted or
2073 an ordinary watchpoint depending on the hardware support
2074 and free hardware slots. REPARSE is set when the inferior
2075 is started. */
a9634178 2076 if (reparse)
9fa40276 2077 {
e09342b5 2078 int reg_cnt;
9fa40276
TJB
2079 enum bp_loc_type loc_type;
2080 struct bp_location *bl;
a5606eee 2081
a9634178 2082 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
2083
2084 if (reg_cnt)
9fa40276
TJB
2085 {
2086 int i, target_resources_ok, other_type_used;
a1398e0c 2087 enum bptype type;
9fa40276 2088
a9634178
TJB
2089 /* Use an exact watchpoint when there's only one memory region to be
2090 watched, and only one debug register is needed to watch it. */
2091 b->exact = target_exact_watchpoints && reg_cnt == 1;
2092
9fa40276 2093 /* We need to determine how many resources are already
e09342b5
TJB
2094 used for all other hardware watchpoints plus this one
2095 to see if we still have enough resources to also fit
a1398e0c
PA
2096 this watchpoint in as well. */
2097
2098 /* If this is a software watchpoint, we try to turn it
2099 to a hardware one -- count resources as if B was of
2100 hardware watchpoint type. */
c1fc2657 2101 type = b->type;
a1398e0c
PA
2102 if (type == bp_watchpoint)
2103 type = bp_hardware_watchpoint;
2104
2105 /* This watchpoint may or may not have been placed on
2106 the list yet at this point (it won't be in the list
2107 if we're trying to create it for the first time,
2108 through watch_command), so always account for it
2109 manually. */
2110
2111 /* Count resources used by all watchpoints except B. */
c1fc2657 2112 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
2113
2114 /* Add in the resources needed for B. */
c1fc2657 2115 i += hw_watchpoint_use_count (b);
a1398e0c
PA
2116
2117 target_resources_ok
2118 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 2119 if (target_resources_ok <= 0)
a9634178 2120 {
c1fc2657 2121 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
2122
2123 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
2124 error (_("Target does not support this type of "
2125 "hardware watchpoint."));
9c06b0b4
TJB
2126 else if (target_resources_ok < 0 && !sw_mode)
2127 error (_("There are not enough available hardware "
2128 "resources for this watchpoint."));
a1398e0c
PA
2129
2130 /* Downgrade to software watchpoint. */
c1fc2657 2131 b->type = bp_watchpoint;
a1398e0c
PA
2132 }
2133 else
2134 {
2135 /* If this was a software watchpoint, we've just
2136 found we have enough resources to turn it to a
2137 hardware watchpoint. Otherwise, this is a
2138 nop. */
c1fc2657 2139 b->type = type;
a9634178 2140 }
9fa40276 2141 }
c1fc2657 2142 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
2143 {
2144 if (!can_use_hw_watchpoints)
2145 error (_("Can't set read/access watchpoint when "
2146 "hardware watchpoints are disabled."));
2147 else
2148 error (_("Expression cannot be implemented with "
2149 "read/access watchpoint."));
2150 }
9fa40276 2151 else
c1fc2657 2152 b->type = bp_watchpoint;
9fa40276 2153
c1fc2657 2154 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 2155 : bp_loc_hardware_watchpoint);
c1fc2657 2156 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
2157 bl->loc_type = loc_type;
2158 }
2159
2160 for (v = val_chain; v; v = next)
2161 {
a5606eee
VP
2162 next = value_next (v);
2163 if (v != b->val)
2164 value_free (v);
2165 }
2166
c7437ca6
PA
2167 /* If a software watchpoint is not watching any memory, then the
2168 above left it without any location set up. But,
2169 bpstat_stop_status requires a location to be able to report
2170 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
2171 if (b->type == bp_watchpoint && b->loc == NULL)
2172 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
2173 }
2174 else if (!within_current_scope)
7270d8f2 2175 {
ac74f770
MS
2176 printf_filtered (_("\
2177Watchpoint %d deleted because the program has left the block\n\
2178in which its expression is valid.\n"),
c1fc2657 2179 b->number);
d0fb5eae 2180 watchpoint_del_at_next_stop (b);
7270d8f2 2181 }
a5606eee
VP
2182
2183 /* Restore the selected frame. */
66076460
DJ
2184 if (frame_saved)
2185 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
2186}
2187
a5606eee 2188
74960c60 2189/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
2190 inserted in the inferior. We don't differentiate the type of BL's owner
2191 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2192 breakpoint_ops is not defined, because in insert_bp_location,
2193 tracepoint's insert_location will not be called. */
74960c60 2194static int
35df4500 2195should_be_inserted (struct bp_location *bl)
74960c60 2196{
35df4500 2197 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2198 return 0;
2199
35df4500 2200 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2201 return 0;
2202
35df4500 2203 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2204 return 0;
2205
f8eba3c6
TT
2206 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2207 return 0;
2208
56710373
PA
2209 /* This is set for example, when we're attached to the parent of a
2210 vfork, and have detached from the child. The child is running
2211 free, and we expect it to do an exec or exit, at which point the
2212 OS makes the parent schedulable again (and the target reports
2213 that the vfork is done). Until the child is done with the shared
2214 memory region, do not insert breakpoints in the parent, otherwise
2215 the child could still trip on the parent's breakpoints. Since
2216 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2217 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2218 return 0;
2219
31e77af2 2220 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2221 location, except if the breakpoint is a single-step breakpoint,
2222 and the breakpoint's thread is the thread which is stepping past
2223 a breakpoint. */
31e77af2
PA
2224 if ((bl->loc_type == bp_loc_software_breakpoint
2225 || bl->loc_type == bp_loc_hardware_breakpoint)
2226 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2227 bl->address)
2228 /* The single-step breakpoint may be inserted at the location
2229 we're trying to step if the instruction branches to itself.
2230 However, the instruction won't be executed at all and it may
2231 break the semantics of the instruction, for example, the
2232 instruction is a conditional branch or updates some flags.
2233 We can't fix it unless GDB is able to emulate the instruction
2234 or switch to displaced stepping. */
2235 && !(bl->owner->type == bp_single_step
2236 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2237 {
2238 if (debug_infrun)
2239 {
2240 fprintf_unfiltered (gdb_stdlog,
2241 "infrun: skipping breakpoint: "
2242 "stepping past insn at: %s\n",
2243 paddress (bl->gdbarch, bl->address));
2244 }
2245 return 0;
2246 }
31e77af2 2247
963f9c80
PA
2248 /* Don't insert watchpoints if we're trying to step past the
2249 instruction that triggered one. */
2250 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2251 && stepping_past_nonsteppable_watchpoint ())
2252 {
2253 if (debug_infrun)
2254 {
2255 fprintf_unfiltered (gdb_stdlog,
2256 "infrun: stepping past non-steppable watchpoint. "
2257 "skipping watchpoint at %s:%d\n",
2258 paddress (bl->gdbarch, bl->address),
2259 bl->length);
2260 }
2261 return 0;
2262 }
2263
74960c60
VP
2264 return 1;
2265}
2266
934709f0
PW
2267/* Same as should_be_inserted but does the check assuming
2268 that the location is not duplicated. */
2269
2270static int
2271unduplicated_should_be_inserted (struct bp_location *bl)
2272{
2273 int result;
2274 const int save_duplicate = bl->duplicate;
2275
2276 bl->duplicate = 0;
2277 result = should_be_inserted (bl);
2278 bl->duplicate = save_duplicate;
2279 return result;
2280}
2281
b775012e
LM
2282/* Parses a conditional described by an expression COND into an
2283 agent expression bytecode suitable for evaluation
2284 by the bytecode interpreter. Return NULL if there was
2285 any error during parsing. */
2286
833177a4 2287static agent_expr_up
b775012e
LM
2288parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2289{
833177a4 2290 if (cond == NULL)
b775012e
LM
2291 return NULL;
2292
833177a4
PA
2293 agent_expr_up aexpr;
2294
b775012e
LM
2295 /* We don't want to stop processing, so catch any errors
2296 that may show up. */
492d29ea 2297 TRY
b775012e 2298 {
036e657b 2299 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2300 }
2301
492d29ea 2302 CATCH (ex, RETURN_MASK_ERROR)
b775012e
LM
2303 {
2304 /* If we got here, it means the condition could not be parsed to a valid
2305 bytecode expression and thus can't be evaluated on the target's side.
2306 It's no use iterating through the conditions. */
b775012e 2307 }
492d29ea 2308 END_CATCH
b775012e
LM
2309
2310 /* We have a valid agent expression. */
2311 return aexpr;
2312}
2313
2314/* Based on location BL, create a list of breakpoint conditions to be
2315 passed on to the target. If we have duplicated locations with different
2316 conditions, we will add such conditions to the list. The idea is that the
2317 target will evaluate the list of conditions and will only notify GDB when
2318 one of them is true. */
2319
2320static void
2321build_target_condition_list (struct bp_location *bl)
2322{
2323 struct bp_location **locp = NULL, **loc2p;
2324 int null_condition_or_parse_error = 0;
2325 int modified = bl->needs_update;
2326 struct bp_location *loc;
2327
8b4f3082 2328 /* Release conditions left over from a previous insert. */
3cde5c42 2329 bl->target_info.conditions.clear ();
8b4f3082 2330
b775012e
LM
2331 /* This is only meaningful if the target is
2332 evaluating conditions and if the user has
2333 opted for condition evaluation on the target's
2334 side. */
2335 if (gdb_evaluates_breakpoint_condition_p ()
2336 || !target_supports_evaluation_of_breakpoint_conditions ())
2337 return;
2338
2339 /* Do a first pass to check for locations with no assigned
2340 conditions or conditions that fail to parse to a valid agent expression
2341 bytecode. If any of these happen, then it's no use to send conditions
2342 to the target since this location will always trigger and generate a
2343 response back to GDB. */
2344 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345 {
2346 loc = (*loc2p);
2347 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2348 {
2349 if (modified)
2350 {
b775012e
LM
2351 /* Re-parse the conditions since something changed. In that
2352 case we already freed the condition bytecodes (see
2353 force_breakpoint_reinsertion). We just
2354 need to parse the condition to bytecodes again. */
833177a4
PA
2355 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2356 loc->cond.get ());
b775012e
LM
2357 }
2358
2359 /* If we have a NULL bytecode expression, it means something
2360 went wrong or we have a null condition expression. */
2361 if (!loc->cond_bytecode)
2362 {
2363 null_condition_or_parse_error = 1;
2364 break;
2365 }
2366 }
2367 }
2368
2369 /* If any of these happened, it means we will have to evaluate the conditions
2370 for the location's address on gdb's side. It is no use keeping bytecodes
2371 for all the other duplicate locations, thus we free all of them here.
2372
2373 This is so we have a finer control over which locations' conditions are
2374 being evaluated by GDB or the remote stub. */
2375 if (null_condition_or_parse_error)
2376 {
2377 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2378 {
2379 loc = (*loc2p);
2380 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2381 {
2382 /* Only go as far as the first NULL bytecode is
2383 located. */
2384 if (!loc->cond_bytecode)
2385 return;
2386
833177a4 2387 loc->cond_bytecode.reset ();
b775012e
LM
2388 }
2389 }
2390 }
2391
2392 /* No NULL conditions or failed bytecode generation. Build a condition list
2393 for this location's address. */
2394 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2395 {
2396 loc = (*loc2p);
2397 if (loc->cond
2398 && is_breakpoint (loc->owner)
2399 && loc->pspace->num == bl->pspace->num
2400 && loc->owner->enable_state == bp_enabled
2401 && loc->enabled)
3cde5c42
PA
2402 {
2403 /* Add the condition to the vector. This will be used later
2404 to send the conditions to the target. */
2405 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2406 }
b775012e
LM
2407 }
2408
2409 return;
2410}
2411
d3ce09f5
SS
2412/* Parses a command described by string CMD into an agent expression
2413 bytecode suitable for evaluation by the bytecode interpreter.
2414 Return NULL if there was any error during parsing. */
2415
833177a4 2416static agent_expr_up
d3ce09f5
SS
2417parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2418{
2419 struct cleanup *old_cleanups = 0;
4d01a485 2420 struct expression **argvec;
bbc13ae3
KS
2421 const char *cmdrest;
2422 const char *format_start, *format_end;
d3ce09f5
SS
2423 struct format_piece *fpieces;
2424 int nargs;
2425 struct gdbarch *gdbarch = get_current_arch ();
2426
833177a4 2427 if (cmd == NULL)
d3ce09f5
SS
2428 return NULL;
2429
2430 cmdrest = cmd;
2431
2432 if (*cmdrest == ',')
2433 ++cmdrest;
f1735a53 2434 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2435
2436 if (*cmdrest++ != '"')
2437 error (_("No format string following the location"));
2438
2439 format_start = cmdrest;
2440
2441 fpieces = parse_format_string (&cmdrest);
2442
2443 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2444
2445 format_end = cmdrest;
2446
2447 if (*cmdrest++ != '"')
2448 error (_("Bad format string, non-terminated '\"'."));
2449
f1735a53 2450 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2451
2452 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2453 error (_("Invalid argument syntax"));
2454
2455 if (*cmdrest == ',')
2456 cmdrest++;
f1735a53 2457 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2458
2459 /* For each argument, make an expression. */
2460
2461 argvec = (struct expression **) alloca (strlen (cmd)
2462 * sizeof (struct expression *));
2463
2464 nargs = 0;
2465 while (*cmdrest != '\0')
2466 {
bbc13ae3 2467 const char *cmd1;
d3ce09f5
SS
2468
2469 cmd1 = cmdrest;
4d01a485
PA
2470 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2471 argvec[nargs++] = expr.release ();
d3ce09f5
SS
2472 cmdrest = cmd1;
2473 if (*cmdrest == ',')
2474 ++cmdrest;
2475 }
2476
833177a4
PA
2477 agent_expr_up aexpr;
2478
d3ce09f5
SS
2479 /* We don't want to stop processing, so catch any errors
2480 that may show up. */
492d29ea 2481 TRY
d3ce09f5 2482 {
036e657b
JB
2483 aexpr = gen_printf (scope, gdbarch, 0, 0,
2484 format_start, format_end - format_start,
2485 fpieces, nargs, argvec);
d3ce09f5 2486 }
492d29ea 2487 CATCH (ex, RETURN_MASK_ERROR)
d3ce09f5
SS
2488 {
2489 /* If we got here, it means the command could not be parsed to a valid
2490 bytecode expression and thus can't be evaluated on the target's side.
2491 It's no use iterating through the other commands. */
d3ce09f5 2492 }
492d29ea
PA
2493 END_CATCH
2494
2495 do_cleanups (old_cleanups);
d3ce09f5 2496
d3ce09f5
SS
2497 /* We have a valid agent expression, return it. */
2498 return aexpr;
2499}
2500
2501/* Based on location BL, create a list of breakpoint commands to be
2502 passed on to the target. If we have duplicated locations with
2503 different commands, we will add any such to the list. */
2504
2505static void
2506build_target_command_list (struct bp_location *bl)
2507{
2508 struct bp_location **locp = NULL, **loc2p;
2509 int null_command_or_parse_error = 0;
2510 int modified = bl->needs_update;
2511 struct bp_location *loc;
2512
3cde5c42
PA
2513 /* Clear commands left over from a previous insert. */
2514 bl->target_info.tcommands.clear ();
8b4f3082 2515
41fac0cf 2516 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2517 return;
2518
41fac0cf
PA
2519 /* For now, limit to agent-style dprintf breakpoints. */
2520 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2521 return;
2522
41fac0cf
PA
2523 /* For now, if we have any duplicate location that isn't a dprintf,
2524 don't install the target-side commands, as that would make the
2525 breakpoint not be reported to the core, and we'd lose
2526 control. */
2527 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2528 {
2529 loc = (*loc2p);
2530 if (is_breakpoint (loc->owner)
2531 && loc->pspace->num == bl->pspace->num
2532 && loc->owner->type != bp_dprintf)
2533 return;
2534 }
2535
d3ce09f5
SS
2536 /* Do a first pass to check for locations with no assigned
2537 conditions or conditions that fail to parse to a valid agent expression
2538 bytecode. If any of these happen, then it's no use to send conditions
2539 to the target since this location will always trigger and generate a
2540 response back to GDB. */
2541 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2542 {
2543 loc = (*loc2p);
2544 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2545 {
2546 if (modified)
2547 {
d3ce09f5
SS
2548 /* Re-parse the commands since something changed. In that
2549 case we already freed the command bytecodes (see
2550 force_breakpoint_reinsertion). We just
2551 need to parse the command to bytecodes again. */
833177a4
PA
2552 loc->cmd_bytecode
2553 = parse_cmd_to_aexpr (bl->address,
2554 loc->owner->extra_string);
d3ce09f5
SS
2555 }
2556
2557 /* If we have a NULL bytecode expression, it means something
2558 went wrong or we have a null command expression. */
2559 if (!loc->cmd_bytecode)
2560 {
2561 null_command_or_parse_error = 1;
2562 break;
2563 }
2564 }
2565 }
2566
2567 /* If anything failed, then we're not doing target-side commands,
2568 and so clean up. */
2569 if (null_command_or_parse_error)
2570 {
2571 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2572 {
2573 loc = (*loc2p);
2574 if (is_breakpoint (loc->owner)
2575 && loc->pspace->num == bl->pspace->num)
2576 {
2577 /* Only go as far as the first NULL bytecode is
2578 located. */
40fb6c5e 2579 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2580 return;
2581
833177a4 2582 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2583 }
2584 }
2585 }
2586
2587 /* No NULL commands or failed bytecode generation. Build a command list
2588 for this location's address. */
2589 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2590 {
2591 loc = (*loc2p);
2592 if (loc->owner->extra_string
2593 && is_breakpoint (loc->owner)
2594 && loc->pspace->num == bl->pspace->num
2595 && loc->owner->enable_state == bp_enabled
2596 && loc->enabled)
3cde5c42
PA
2597 {
2598 /* Add the command to the vector. This will be used later
2599 to send the commands to the target. */
2600 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2601 }
d3ce09f5
SS
2602 }
2603
2604 bl->target_info.persist = 0;
2605 /* Maybe flag this location as persistent. */
2606 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2607 bl->target_info.persist = 1;
2608}
2609
833b7ab5
YQ
2610/* Return the kind of breakpoint on address *ADDR. Get the kind
2611 of breakpoint according to ADDR except single-step breakpoint.
2612 Get the kind of single-step breakpoint according to the current
2613 registers state. */
cd6c3b4f
YQ
2614
2615static int
2616breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2617{
833b7ab5
YQ
2618 if (bl->owner->type == bp_single_step)
2619 {
2620 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2621 struct regcache *regcache;
2622
2623 regcache = get_thread_regcache (thr->ptid);
2624
2625 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2626 regcache, addr);
2627 }
2628 else
2629 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2630}
2631
35df4500
TJB
2632/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2633 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2634 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2635 Returns 0 for success, 1 if the bp_location type is not supported or
2636 -1 for failure.
879bfdc2 2637
4a64f543
MS
2638 NOTE drow/2003-09-09: This routine could be broken down to an
2639 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2640static int
35df4500 2641insert_bp_location (struct bp_location *bl,
26bb91f3 2642 struct ui_file *tmp_error_stream,
3fbb6ffa 2643 int *disabled_breaks,
dd61ec5c
MW
2644 int *hw_breakpoint_error,
2645 int *hw_bp_error_explained_already)
879bfdc2 2646{
0000e5cc
PA
2647 enum errors bp_err = GDB_NO_ERROR;
2648 const char *bp_err_message = NULL;
879bfdc2 2649
b775012e 2650 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2651 return 0;
2652
35c63cd8
JB
2653 /* Note we don't initialize bl->target_info, as that wipes out
2654 the breakpoint location's shadow_contents if the breakpoint
2655 is still inserted at that location. This in turn breaks
2656 target_read_memory which depends on these buffers when
2657 a memory read is requested at the breakpoint location:
2658 Once the target_info has been wiped, we fail to see that
2659 we have a breakpoint inserted at that address and thus
2660 read the breakpoint instead of returning the data saved in
2661 the breakpoint location's shadow contents. */
0d5ed153 2662 bl->target_info.reqstd_address = bl->address;
35df4500 2663 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2664 bl->target_info.length = bl->length;
8181d85f 2665
b775012e
LM
2666 /* When working with target-side conditions, we must pass all the conditions
2667 for the same breakpoint address down to the target since GDB will not
2668 insert those locations. With a list of breakpoint conditions, the target
2669 can decide when to stop and notify GDB. */
2670
2671 if (is_breakpoint (bl->owner))
2672 {
2673 build_target_condition_list (bl);
d3ce09f5
SS
2674 build_target_command_list (bl);
2675 /* Reset the modification marker. */
b775012e
LM
2676 bl->needs_update = 0;
2677 }
2678
35df4500
TJB
2679 if (bl->loc_type == bp_loc_software_breakpoint
2680 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2681 {
35df4500 2682 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2683 {
2684 /* If the explicitly specified breakpoint type
2685 is not hardware breakpoint, check the memory map to see
2686 if the breakpoint address is in read only memory or not.
4a64f543 2687
765dc015
VP
2688 Two important cases are:
2689 - location type is not hardware breakpoint, memory
2690 is readonly. We change the type of the location to
2691 hardware breakpoint.
4a64f543
MS
2692 - location type is hardware breakpoint, memory is
2693 read-write. This means we've previously made the
2694 location hardware one, but then the memory map changed,
2695 so we undo.
765dc015 2696
4a64f543
MS
2697 When breakpoints are removed, remove_breakpoints will use
2698 location types we've just set here, the only possible
2699 problem is that memory map has changed during running
2700 program, but it's not going to work anyway with current
2701 gdb. */
765dc015 2702 struct mem_region *mr
0d5ed153 2703 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2704
2705 if (mr)
2706 {
2707 if (automatic_hardware_breakpoints)
2708 {
765dc015
VP
2709 enum bp_loc_type new_type;
2710
2711 if (mr->attrib.mode != MEM_RW)
2712 new_type = bp_loc_hardware_breakpoint;
2713 else
2714 new_type = bp_loc_software_breakpoint;
2715
35df4500 2716 if (new_type != bl->loc_type)
765dc015
VP
2717 {
2718 static int said = 0;
cc59ec59 2719
35df4500 2720 bl->loc_type = new_type;
765dc015
VP
2721 if (!said)
2722 {
3e43a32a
MS
2723 fprintf_filtered (gdb_stdout,
2724 _("Note: automatically using "
2725 "hardware breakpoints for "
2726 "read-only addresses.\n"));
765dc015
VP
2727 said = 1;
2728 }
2729 }
2730 }
35df4500 2731 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2732 && mr->attrib.mode != MEM_RW)
2733 {
2734 fprintf_unfiltered (tmp_error_stream,
2735 _("Cannot insert breakpoint %d.\n"
2736 "Cannot set software breakpoint "
2737 "at read-only address %s\n"),
2738 bl->owner->number,
2739 paddress (bl->gdbarch, bl->address));
2740 return 1;
2741 }
765dc015
VP
2742 }
2743 }
2744
879bfdc2
DJ
2745 /* First check to see if we have to handle an overlay. */
2746 if (overlay_debugging == ovly_off
35df4500
TJB
2747 || bl->section == NULL
2748 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2749 {
2750 /* No overlay handling: just set the breakpoint. */
492d29ea 2751 TRY
dd61ec5c 2752 {
0000e5cc
PA
2753 int val;
2754
dd61ec5c 2755 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2756 if (val)
2757 bp_err = GENERIC_ERROR;
dd61ec5c 2758 }
492d29ea 2759 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2760 {
0000e5cc
PA
2761 bp_err = e.error;
2762 bp_err_message = e.message;
dd61ec5c 2763 }
492d29ea 2764 END_CATCH
879bfdc2
DJ
2765 }
2766 else
2767 {
4a64f543 2768 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2769 Shall we set a breakpoint at the LMA? */
2770 if (!overlay_events_enabled)
2771 {
2772 /* Yes -- overlay event support is not active,
2773 so we must try to set a breakpoint at the LMA.
2774 This will not work for a hardware breakpoint. */
35df4500 2775 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2776 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2777 bl->owner->number);
879bfdc2
DJ
2778 else
2779 {
35df4500
TJB
2780 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2781 bl->section);
879bfdc2 2782 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2783 bl->overlay_target_info = bl->target_info;
0d5ed153 2784 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2785
2786 /* No overlay handling: just set the breakpoint. */
492d29ea 2787 TRY
0000e5cc
PA
2788 {
2789 int val;
2790
579c6ad9 2791 bl->overlay_target_info.kind
cd6c3b4f
YQ
2792 = breakpoint_kind (bl, &addr);
2793 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2794 val = target_insert_breakpoint (bl->gdbarch,
2795 &bl->overlay_target_info);
2796 if (val)
2797 bp_err = GENERIC_ERROR;
2798 }
492d29ea 2799 CATCH (e, RETURN_MASK_ALL)
0000e5cc
PA
2800 {
2801 bp_err = e.error;
2802 bp_err_message = e.message;
2803 }
492d29ea 2804 END_CATCH
0000e5cc
PA
2805
2806 if (bp_err != GDB_NO_ERROR)
99361f52 2807 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2808 "Overlay breakpoint %d "
2809 "failed: in ROM?\n",
35df4500 2810 bl->owner->number);
879bfdc2
DJ
2811 }
2812 }
2813 /* Shall we set a breakpoint at the VMA? */
35df4500 2814 if (section_is_mapped (bl->section))
879bfdc2
DJ
2815 {
2816 /* Yes. This overlay section is mapped into memory. */
492d29ea 2817 TRY
dd61ec5c 2818 {
0000e5cc
PA
2819 int val;
2820
dd61ec5c 2821 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2822 if (val)
2823 bp_err = GENERIC_ERROR;
dd61ec5c 2824 }
492d29ea 2825 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2826 {
0000e5cc
PA
2827 bp_err = e.error;
2828 bp_err_message = e.message;
dd61ec5c 2829 }
492d29ea 2830 END_CATCH
879bfdc2
DJ
2831 }
2832 else
2833 {
2834 /* No. This breakpoint will not be inserted.
2835 No error, but do not mark the bp as 'inserted'. */
2836 return 0;
2837 }
2838 }
2839
0000e5cc 2840 if (bp_err != GDB_NO_ERROR)
879bfdc2
DJ
2841 {
2842 /* Can't set the breakpoint. */
0000e5cc
PA
2843
2844 /* In some cases, we might not be able to insert a
2845 breakpoint in a shared library that has already been
2846 removed, but we have not yet processed the shlib unload
2847 event. Unfortunately, some targets that implement
076855f9
PA
2848 breakpoint insertion themselves can't tell why the
2849 breakpoint insertion failed (e.g., the remote target
2850 doesn't define error codes), so we must treat generic
2851 errors as memory errors. */
0000e5cc 2852 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
076855f9 2853 && bl->loc_type == bp_loc_software_breakpoint
08351840 2854 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2855 || shared_objfile_contains_address_p (bl->pspace,
2856 bl->address)))
879bfdc2 2857 {
4a64f543 2858 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2859 bl->shlib_disabled = 1;
8d3788bd 2860 observer_notify_breakpoint_modified (bl->owner);
3fbb6ffa
TJB
2861 if (!*disabled_breaks)
2862 {
2863 fprintf_unfiltered (tmp_error_stream,
2864 "Cannot insert breakpoint %d.\n",
2865 bl->owner->number);
2866 fprintf_unfiltered (tmp_error_stream,
2867 "Temporarily disabling shared "
2868 "library breakpoints:\n");
2869 }
2870 *disabled_breaks = 1;
879bfdc2 2871 fprintf_unfiltered (tmp_error_stream,
35df4500 2872 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2873 return 0;
879bfdc2
DJ
2874 }
2875 else
879bfdc2 2876 {
35df4500 2877 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2878 {
0000e5cc
PA
2879 *hw_breakpoint_error = 1;
2880 *hw_bp_error_explained_already = bp_err_message != NULL;
dd61ec5c
MW
2881 fprintf_unfiltered (tmp_error_stream,
2882 "Cannot insert hardware breakpoint %d%s",
0000e5cc
PA
2883 bl->owner->number, bp_err_message ? ":" : ".\n");
2884 if (bp_err_message != NULL)
2885 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
879bfdc2
DJ
2886 }
2887 else
2888 {
0000e5cc
PA
2889 if (bp_err_message == NULL)
2890 {
1ccbe998 2891 std::string message
0000e5cc
PA
2892 = memory_error_message (TARGET_XFER_E_IO,
2893 bl->gdbarch, bl->address);
0000e5cc
PA
2894
2895 fprintf_unfiltered (tmp_error_stream,
2896 "Cannot insert breakpoint %d.\n"
2897 "%s\n",
1ccbe998 2898 bl->owner->number, message.c_str ());
0000e5cc
PA
2899 }
2900 else
2901 {
2902 fprintf_unfiltered (tmp_error_stream,
2903 "Cannot insert breakpoint %d: %s\n",
2904 bl->owner->number,
2905 bp_err_message);
2906 }
879bfdc2 2907 }
0000e5cc 2908 return 1;
879bfdc2
DJ
2909
2910 }
2911 }
2912 else
35df4500 2913 bl->inserted = 1;
879bfdc2 2914
0000e5cc 2915 return 0;
879bfdc2
DJ
2916 }
2917
35df4500 2918 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2919 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2920 watchpoints. It's not clear that it's necessary... */
35df4500 2921 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2922 {
0000e5cc
PA
2923 int val;
2924
77b06cd7
TJB
2925 gdb_assert (bl->owner->ops != NULL
2926 && bl->owner->ops->insert_location != NULL);
2927
2928 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2929
2930 /* If trying to set a read-watchpoint, and it turns out it's not
2931 supported, try emulating one with an access watchpoint. */
35df4500 2932 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2933 {
2934 struct bp_location *loc, **loc_temp;
2935
2936 /* But don't try to insert it, if there's already another
2937 hw_access location that would be considered a duplicate
2938 of this one. */
2939 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2940 if (loc != bl
85d721b8 2941 && loc->watchpoint_type == hw_access
35df4500 2942 && watchpoint_locations_match (bl, loc))
85d721b8 2943 {
35df4500
TJB
2944 bl->duplicate = 1;
2945 bl->inserted = 1;
2946 bl->target_info = loc->target_info;
2947 bl->watchpoint_type = hw_access;
85d721b8
PA
2948 val = 0;
2949 break;
2950 }
2951
2952 if (val == 1)
2953 {
77b06cd7
TJB
2954 bl->watchpoint_type = hw_access;
2955 val = bl->owner->ops->insert_location (bl);
2956
2957 if (val)
2958 /* Back to the original value. */
2959 bl->watchpoint_type = hw_read;
85d721b8
PA
2960 }
2961 }
2962
35df4500 2963 bl->inserted = (val == 0);
879bfdc2
DJ
2964 }
2965
35df4500 2966 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2967 {
0000e5cc
PA
2968 int val;
2969
77b06cd7
TJB
2970 gdb_assert (bl->owner->ops != NULL
2971 && bl->owner->ops->insert_location != NULL);
2972
2973 val = bl->owner->ops->insert_location (bl);
2974 if (val)
2975 {
2976 bl->owner->enable_state = bp_disabled;
2977
2978 if (val == 1)
2979 warning (_("\
2980Error inserting catchpoint %d: Your system does not support this type\n\
2981of catchpoint."), bl->owner->number);
2982 else
2983 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2984 }
2985
2986 bl->inserted = (val == 0);
1640b821
DJ
2987
2988 /* We've already printed an error message if there was a problem
2989 inserting this catchpoint, and we've disabled the catchpoint,
2990 so just return success. */
2991 return 0;
879bfdc2
DJ
2992 }
2993
2994 return 0;
2995}
2996
6c95b8df
PA
2997/* This function is called when program space PSPACE is about to be
2998 deleted. It takes care of updating breakpoints to not reference
2999 PSPACE anymore. */
3000
3001void
3002breakpoint_program_space_exit (struct program_space *pspace)
3003{
3004 struct breakpoint *b, *b_temp;
876fa593 3005 struct bp_location *loc, **loc_temp;
6c95b8df
PA
3006
3007 /* Remove any breakpoint that was set through this program space. */
3008 ALL_BREAKPOINTS_SAFE (b, b_temp)
3009 {
3010 if (b->pspace == pspace)
3011 delete_breakpoint (b);
3012 }
3013
3014 /* Breakpoints set through other program spaces could have locations
3015 bound to PSPACE as well. Remove those. */
876fa593 3016 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
3017 {
3018 struct bp_location *tmp;
3019
3020 if (loc->pspace == pspace)
3021 {
2bdf28a0 3022 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
3023 if (loc->owner->loc == loc)
3024 loc->owner->loc = loc->next;
3025 else
3026 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3027 if (tmp->next == loc)
3028 {
3029 tmp->next = loc->next;
3030 break;
3031 }
3032 }
3033 }
3034
3035 /* Now update the global location list to permanently delete the
3036 removed locations above. */
44702360 3037 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
3038}
3039
74960c60
VP
3040/* Make sure all breakpoints are inserted in inferior.
3041 Throws exception on any error.
3042 A breakpoint that is already inserted won't be inserted
3043 again, so calling this function twice is safe. */
3044void
3045insert_breakpoints (void)
3046{
3047 struct breakpoint *bpt;
3048
3049 ALL_BREAKPOINTS (bpt)
3050 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
3051 {
3052 struct watchpoint *w = (struct watchpoint *) bpt;
3053
3054 update_watchpoint (w, 0 /* don't reparse. */);
3055 }
74960c60 3056
04086b45
PA
3057 /* Updating watchpoints creates new locations, so update the global
3058 location list. Explicitly tell ugll to insert locations and
3059 ignore breakpoints_always_inserted_mode. */
3060 update_global_location_list (UGLL_INSERT);
74960c60
VP
3061}
3062
20388dd6
YQ
3063/* Invoke CALLBACK for each of bp_location. */
3064
3065void
3066iterate_over_bp_locations (walk_bp_location_callback callback)
3067{
3068 struct bp_location *loc, **loc_tmp;
3069
3070 ALL_BP_LOCATIONS (loc, loc_tmp)
3071 {
3072 callback (loc, NULL);
3073 }
3074}
3075
b775012e
LM
3076/* This is used when we need to synch breakpoint conditions between GDB and the
3077 target. It is the case with deleting and disabling of breakpoints when using
3078 always-inserted mode. */
3079
3080static void
3081update_inserted_breakpoint_locations (void)
3082{
3083 struct bp_location *bl, **blp_tmp;
3084 int error_flag = 0;
3085 int val = 0;
3086 int disabled_breaks = 0;
3087 int hw_breakpoint_error = 0;
dd61ec5c 3088 int hw_bp_details_reported = 0;
b775012e 3089
d7e74731 3090 string_file tmp_error_stream;
b775012e
LM
3091
3092 /* Explicitly mark the warning -- this will only be printed if
3093 there was an error. */
d7e74731 3094 tmp_error_stream.puts ("Warning:\n");
b775012e 3095
5ed8105e 3096 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
3097
3098 ALL_BP_LOCATIONS (bl, blp_tmp)
3099 {
3100 /* We only want to update software breakpoints and hardware
3101 breakpoints. */
3102 if (!is_breakpoint (bl->owner))
3103 continue;
3104
3105 /* We only want to update locations that are already inserted
3106 and need updating. This is to avoid unwanted insertion during
3107 deletion of breakpoints. */
3108 if (!bl->inserted || (bl->inserted && !bl->needs_update))
3109 continue;
3110
3111 switch_to_program_space_and_thread (bl->pspace);
3112
3113 /* For targets that support global breakpoints, there's no need
3114 to select an inferior to insert breakpoint to. In fact, even
3115 if we aren't attached to any process yet, we should still
3116 insert breakpoints. */
f5656ead 3117 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
b775012e
LM
3118 && ptid_equal (inferior_ptid, null_ptid))
3119 continue;
3120
d7e74731 3121 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3122 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
3123 if (val)
3124 error_flag = val;
3125 }
3126
3127 if (error_flag)
3128 {
3129 target_terminal_ours_for_output ();
3130 error_stream (tmp_error_stream);
3131 }
b775012e
LM
3132}
3133
c30eee59 3134/* Used when starting or continuing the program. */
c906108c 3135
74960c60
VP
3136static void
3137insert_breakpoint_locations (void)
c906108c 3138{
a5606eee 3139 struct breakpoint *bpt;
35df4500 3140 struct bp_location *bl, **blp_tmp;
eacd795a 3141 int error_flag = 0;
c906108c 3142 int val = 0;
3fbb6ffa 3143 int disabled_breaks = 0;
81d0cc19 3144 int hw_breakpoint_error = 0;
dd61ec5c 3145 int hw_bp_error_explained_already = 0;
c906108c 3146
d7e74731
PA
3147 string_file tmp_error_stream;
3148
81d0cc19
GS
3149 /* Explicitly mark the warning -- this will only be printed if
3150 there was an error. */
d7e74731 3151 tmp_error_stream.puts ("Warning:\n");
6c95b8df 3152
5ed8105e 3153 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3154
35df4500 3155 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 3156 {
b775012e 3157 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
3158 continue;
3159
4a64f543
MS
3160 /* There is no point inserting thread-specific breakpoints if
3161 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3162 has BL->OWNER always non-NULL. */
35df4500 3163 if (bl->owner->thread != -1
5d5658a1 3164 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
3165 continue;
3166
35df4500 3167 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
3168
3169 /* For targets that support global breakpoints, there's no need
3170 to select an inferior to insert breakpoint to. In fact, even
3171 if we aren't attached to any process yet, we should still
3172 insert breakpoints. */
f5656ead 3173 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
3174 && ptid_equal (inferior_ptid, null_ptid))
3175 continue;
3176
d7e74731 3177 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3178 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 3179 if (val)
eacd795a 3180 error_flag = val;
879bfdc2 3181 }
c906108c 3182
4a64f543
MS
3183 /* If we failed to insert all locations of a watchpoint, remove
3184 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
3185 ALL_BREAKPOINTS (bpt)
3186 {
3187 int some_failed = 0;
3188 struct bp_location *loc;
3189
3190 if (!is_hardware_watchpoint (bpt))
3191 continue;
3192
d6b74ac4 3193 if (!breakpoint_enabled (bpt))
a5606eee 3194 continue;
74960c60
VP
3195
3196 if (bpt->disposition == disp_del_at_next_stop)
3197 continue;
a5606eee
VP
3198
3199 for (loc = bpt->loc; loc; loc = loc->next)
56710373 3200 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
3201 {
3202 some_failed = 1;
3203 break;
3204 }
3205 if (some_failed)
3206 {
3207 for (loc = bpt->loc; loc; loc = loc->next)
3208 if (loc->inserted)
834c0d03 3209 remove_breakpoint (loc);
a5606eee
VP
3210
3211 hw_breakpoint_error = 1;
d7e74731
PA
3212 tmp_error_stream.printf ("Could not insert "
3213 "hardware watchpoint %d.\n",
3214 bpt->number);
eacd795a 3215 error_flag = -1;
a5606eee
VP
3216 }
3217 }
3218
eacd795a 3219 if (error_flag)
81d0cc19
GS
3220 {
3221 /* If a hardware breakpoint or watchpoint was inserted, add a
3222 message about possibly exhausted resources. */
dd61ec5c 3223 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3224 {
d7e74731 3225 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3226You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3227 }
81d0cc19
GS
3228 target_terminal_ours_for_output ();
3229 error_stream (tmp_error_stream);
3230 }
c906108c
SS
3231}
3232
c30eee59
TJB
3233/* Used when the program stops.
3234 Returns zero if successful, or non-zero if there was a problem
3235 removing a breakpoint location. */
3236
c906108c 3237int
fba45db2 3238remove_breakpoints (void)
c906108c 3239{
35df4500 3240 struct bp_location *bl, **blp_tmp;
3a1bae8e 3241 int val = 0;
c906108c 3242
35df4500 3243 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3244 {
1e4d1764 3245 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3246 val |= remove_breakpoint (bl);
c5aa993b 3247 }
3a1bae8e 3248 return val;
c906108c
SS
3249}
3250
49fa26b0
PA
3251/* When a thread exits, remove breakpoints that are related to
3252 that thread. */
3253
3254static void
3255remove_threaded_breakpoints (struct thread_info *tp, int silent)
3256{
3257 struct breakpoint *b, *b_tmp;
3258
3259 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3260 {
5d5658a1 3261 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3262 {
3263 b->disposition = disp_del_at_next_stop;
3264
3265 printf_filtered (_("\
43792cf0
PA
3266Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3267 b->number, print_thread_id (tp));
49fa26b0
PA
3268
3269 /* Hide it from the user. */
3270 b->number = 0;
3271 }
3272 }
3273}
3274
6c95b8df
PA
3275/* Remove breakpoints of process PID. */
3276
3277int
3278remove_breakpoints_pid (int pid)
3279{
35df4500 3280 struct bp_location *bl, **blp_tmp;
6c95b8df
PA
3281 int val;
3282 struct inferior *inf = find_inferior_pid (pid);
3283
35df4500 3284 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3285 {
35df4500 3286 if (bl->pspace != inf->pspace)
6c95b8df
PA
3287 continue;
3288
fc126975 3289 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3290 {
834c0d03 3291 val = remove_breakpoint (bl);
6c95b8df
PA
3292 if (val != 0)
3293 return val;
3294 }
3295 }
3296 return 0;
3297}
3298
c906108c 3299int
fba45db2 3300reattach_breakpoints (int pid)
c906108c 3301{
35df4500 3302 struct bp_location *bl, **blp_tmp;
c906108c 3303 int val;
dd61ec5c 3304 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
6c95b8df
PA
3305 struct inferior *inf;
3306 struct thread_info *tp;
3307
3308 tp = any_live_thread_of_process (pid);
3309 if (tp == NULL)
3310 return 1;
3311
3312 inf = find_inferior_pid (pid);
6c95b8df 3313
2989a365 3314 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3315 inferior_ptid = tp->ptid;
a4954f26 3316
d7e74731 3317 string_file tmp_error_stream;
c906108c 3318
35df4500 3319 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3320 {
35df4500 3321 if (bl->pspace != inf->pspace)
6c95b8df
PA
3322 continue;
3323
35df4500 3324 if (bl->inserted)
c5aa993b 3325 {
35df4500 3326 bl->inserted = 0;
d7e74731 3327 val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
c5aa993b 3328 if (val != 0)
2989a365 3329 return val;
c5aa993b
JM
3330 }
3331 }
c906108c
SS
3332 return 0;
3333}
3334
e58b0e63
PA
3335static int internal_breakpoint_number = -1;
3336
84f4c1fe
PM
3337/* Set the breakpoint number of B, depending on the value of INTERNAL.
3338 If INTERNAL is non-zero, the breakpoint number will be populated
3339 from internal_breakpoint_number and that variable decremented.
e5dd4106 3340 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3341 breakpoint_count and that value incremented. Internal breakpoints
3342 do not set the internal var bpnum. */
3343static void
3344set_breakpoint_number (int internal, struct breakpoint *b)
3345{
3346 if (internal)
3347 b->number = internal_breakpoint_number--;
3348 else
3349 {
3350 set_breakpoint_count (breakpoint_count + 1);
3351 b->number = breakpoint_count;
3352 }
3353}
3354
e62c965a 3355static struct breakpoint *
a6d9a66e 3356create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3357 CORE_ADDR address, enum bptype type,
c0a91b2b 3358 const struct breakpoint_ops *ops)
e62c965a 3359{
51abb421 3360 symtab_and_line sal;
e62c965a
PP
3361 sal.pc = address;
3362 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3363 sal.pspace = current_program_space;
e62c965a 3364
51abb421 3365 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3366 b->number = internal_breakpoint_number--;
3367 b->disposition = disp_donttouch;
3368
3369 return b;
3370}
3371
17450429
PP
3372static const char *const longjmp_names[] =
3373 {
3374 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3375 };
3376#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3377
3378/* Per-objfile data private to breakpoint.c. */
3379struct breakpoint_objfile_data
3380{
3381 /* Minimal symbol for "_ovly_debug_event" (if any). */
3b7344d5 3382 struct bound_minimal_symbol overlay_msym;
17450429
PP
3383
3384 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3b7344d5 3385 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
17450429 3386
28106bc2
SDJ
3387 /* True if we have looked for longjmp probes. */
3388 int longjmp_searched;
3389
3390 /* SystemTap probe points for longjmp (if any). */
3391 VEC (probe_p) *longjmp_probes;
3392
17450429 3393 /* Minimal symbol for "std::terminate()" (if any). */
3b7344d5 3394 struct bound_minimal_symbol terminate_msym;
17450429
PP
3395
3396 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3b7344d5 3397 struct bound_minimal_symbol exception_msym;
28106bc2
SDJ
3398
3399 /* True if we have looked for exception probes. */
3400 int exception_searched;
3401
3402 /* SystemTap probe points for unwinding (if any). */
3403 VEC (probe_p) *exception_probes;
17450429
PP
3404};
3405
3406static const struct objfile_data *breakpoint_objfile_key;
3407
3408/* Minimal symbol not found sentinel. */
3409static struct minimal_symbol msym_not_found;
3410
3411/* Returns TRUE if MSYM point to the "not found" sentinel. */
3412
3413static int
3414msym_not_found_p (const struct minimal_symbol *msym)
3415{
3416 return msym == &msym_not_found;
3417}
3418
3419/* Return per-objfile data needed by breakpoint.c.
3420 Allocate the data if necessary. */
3421
3422static struct breakpoint_objfile_data *
3423get_breakpoint_objfile_data (struct objfile *objfile)
3424{
3425 struct breakpoint_objfile_data *bp_objfile_data;
3426
9a3c8263
SM
3427 bp_objfile_data = ((struct breakpoint_objfile_data *)
3428 objfile_data (objfile, breakpoint_objfile_key));
17450429
PP
3429 if (bp_objfile_data == NULL)
3430 {
8d749320
SM
3431 bp_objfile_data =
3432 XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
17450429
PP
3433
3434 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3435 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3436 }
3437 return bp_objfile_data;
3438}
3439
28106bc2
SDJ
3440static void
3441free_breakpoint_probes (struct objfile *obj, void *data)
3442{
9a3c8263
SM
3443 struct breakpoint_objfile_data *bp_objfile_data
3444 = (struct breakpoint_objfile_data *) data;
28106bc2
SDJ
3445
3446 VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3447 VEC_free (probe_p, bp_objfile_data->exception_probes);
3448}
3449
e62c965a 3450static void
af02033e 3451create_overlay_event_breakpoint (void)
e62c965a 3452{
69de3c6a 3453 struct objfile *objfile;
af02033e 3454 const char *const func_name = "_ovly_debug_event";
e62c965a 3455
69de3c6a
PP
3456 ALL_OBJFILES (objfile)
3457 {
3458 struct breakpoint *b;
17450429
PP
3459 struct breakpoint_objfile_data *bp_objfile_data;
3460 CORE_ADDR addr;
67994074 3461 struct explicit_location explicit_loc;
69de3c6a 3462
17450429
PP
3463 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3464
3b7344d5 3465 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3466 continue;
3467
3b7344d5 3468 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3469 {
3b7344d5 3470 struct bound_minimal_symbol m;
17450429
PP
3471
3472 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3473 if (m.minsym == NULL)
17450429
PP
3474 {
3475 /* Avoid future lookups in this objfile. */
3b7344d5 3476 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3477 continue;
3478 }
3479 bp_objfile_data->overlay_msym = m;
3480 }
e62c965a 3481
77e371c0 3482 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3483 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3484 bp_overlay_event,
3485 &internal_breakpoint_ops);
67994074
KS
3486 initialize_explicit_location (&explicit_loc);
3487 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3488 b->location = new_explicit_location (&explicit_loc);
e62c965a 3489
69de3c6a
PP
3490 if (overlay_debugging == ovly_auto)
3491 {
3492 b->enable_state = bp_enabled;
3493 overlay_events_enabled = 1;
3494 }
3495 else
3496 {
3497 b->enable_state = bp_disabled;
3498 overlay_events_enabled = 0;
3499 }
e62c965a 3500 }
e62c965a
PP
3501}
3502
0fd8e87f 3503static void
af02033e 3504create_longjmp_master_breakpoint (void)
0fd8e87f 3505{
6c95b8df 3506 struct program_space *pspace;
6c95b8df 3507
5ed8105e 3508 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3509
6c95b8df 3510 ALL_PSPACES (pspace)
af02033e
PP
3511 {
3512 struct objfile *objfile;
3513
3514 set_current_program_space (pspace);
3515
3516 ALL_OBJFILES (objfile)
0fd8e87f 3517 {
af02033e
PP
3518 int i;
3519 struct gdbarch *gdbarch;
17450429 3520 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3521
af02033e 3522 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3523
17450429
PP
3524 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3525
28106bc2
SDJ
3526 if (!bp_objfile_data->longjmp_searched)
3527 {
25f9533e
SDJ
3528 VEC (probe_p) *ret;
3529
3530 ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3531 if (ret != NULL)
3532 {
3533 /* We are only interested in checking one element. */
3534 struct probe *p = VEC_index (probe_p, ret, 0);
3535
3536 if (!can_evaluate_probe_arguments (p))
3537 {
3538 /* We cannot use the probe interface here, because it does
3539 not know how to evaluate arguments. */
3540 VEC_free (probe_p, ret);
3541 ret = NULL;
3542 }
3543 }
3544 bp_objfile_data->longjmp_probes = ret;
28106bc2
SDJ
3545 bp_objfile_data->longjmp_searched = 1;
3546 }
3547
3548 if (bp_objfile_data->longjmp_probes != NULL)
3549 {
3550 int i;
3551 struct probe *probe;
3552 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3553
3554 for (i = 0;
3555 VEC_iterate (probe_p,
3556 bp_objfile_data->longjmp_probes,
3557 i, probe);
3558 ++i)
3559 {
3560 struct breakpoint *b;
3561
729662a5
TT
3562 b = create_internal_breakpoint (gdbarch,
3563 get_probe_address (probe,
3564 objfile),
28106bc2
SDJ
3565 bp_longjmp_master,
3566 &internal_breakpoint_ops);
d28cd78a 3567 b->location = new_probe_location ("-probe-stap libc:longjmp");
28106bc2
SDJ
3568 b->enable_state = bp_disabled;
3569 }
3570
3571 continue;
3572 }
3573
0569175e
TSD
3574 if (!gdbarch_get_longjmp_target_p (gdbarch))
3575 continue;
3576
17450429 3577 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
3578 {
3579 struct breakpoint *b;
af02033e 3580 const char *func_name;
17450429 3581 CORE_ADDR addr;
67994074 3582 struct explicit_location explicit_loc;
6c95b8df 3583
3b7344d5 3584 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
af02033e 3585 continue;
0fd8e87f 3586
17450429 3587 func_name = longjmp_names[i];
3b7344d5 3588 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
17450429 3589 {
3b7344d5 3590 struct bound_minimal_symbol m;
17450429
PP
3591
3592 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3593 if (m.minsym == NULL)
17450429
PP
3594 {
3595 /* Prevent future lookups in this objfile. */
3b7344d5 3596 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
17450429
PP
3597 continue;
3598 }
3599 bp_objfile_data->longjmp_msym[i] = m;
3600 }
3601
77e371c0 3602 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
06edf0c0
PA
3603 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3604 &internal_breakpoint_ops);
67994074
KS
3605 initialize_explicit_location (&explicit_loc);
3606 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3607 b->location = new_explicit_location (&explicit_loc);
af02033e
PP
3608 b->enable_state = bp_disabled;
3609 }
0fd8e87f 3610 }
af02033e 3611 }
0fd8e87f
UW
3612}
3613
af02033e 3614/* Create a master std::terminate breakpoint. */
aa7d318d 3615static void
af02033e 3616create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3617{
3618 struct program_space *pspace;
af02033e 3619 const char *const func_name = "std::terminate()";
aa7d318d 3620
5ed8105e 3621 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3622
3623 ALL_PSPACES (pspace)
17450429
PP
3624 {
3625 struct objfile *objfile;
3626 CORE_ADDR addr;
3627
3628 set_current_program_space (pspace);
3629
aa7d318d
TT
3630 ALL_OBJFILES (objfile)
3631 {
3632 struct breakpoint *b;
17450429 3633 struct breakpoint_objfile_data *bp_objfile_data;
67994074 3634 struct explicit_location explicit_loc;
aa7d318d 3635
17450429 3636 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3637
3b7344d5 3638 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
17450429
PP
3639 continue;
3640
3b7344d5 3641 if (bp_objfile_data->terminate_msym.minsym == NULL)
17450429 3642 {
3b7344d5 3643 struct bound_minimal_symbol m;
17450429
PP
3644
3645 m = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5
TT
3646 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3647 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
17450429
PP
3648 {
3649 /* Prevent future lookups in this objfile. */
3b7344d5 3650 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
17450429
PP
3651 continue;
3652 }
3653 bp_objfile_data->terminate_msym = m;
3654 }
aa7d318d 3655
77e371c0 3656 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
17450429 3657 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3658 bp_std_terminate_master,
3659 &internal_breakpoint_ops);
67994074
KS
3660 initialize_explicit_location (&explicit_loc);
3661 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3662 b->location = new_explicit_location (&explicit_loc);
aa7d318d
TT
3663 b->enable_state = bp_disabled;
3664 }
17450429 3665 }
aa7d318d
TT
3666}
3667
186c406b
TT
3668/* Install a master breakpoint on the unwinder's debug hook. */
3669
70221824 3670static void
186c406b
TT
3671create_exception_master_breakpoint (void)
3672{
3673 struct objfile *objfile;
17450429 3674 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
3675
3676 ALL_OBJFILES (objfile)
3677 {
17450429
PP
3678 struct breakpoint *b;
3679 struct gdbarch *gdbarch;
3680 struct breakpoint_objfile_data *bp_objfile_data;
3681 CORE_ADDR addr;
67994074 3682 struct explicit_location explicit_loc;
17450429
PP
3683
3684 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3685
28106bc2
SDJ
3686 /* We prefer the SystemTap probe point if it exists. */
3687 if (!bp_objfile_data->exception_searched)
3688 {
25f9533e
SDJ
3689 VEC (probe_p) *ret;
3690
3691 ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3692
3693 if (ret != NULL)
3694 {
3695 /* We are only interested in checking one element. */
3696 struct probe *p = VEC_index (probe_p, ret, 0);
3697
3698 if (!can_evaluate_probe_arguments (p))
3699 {
3700 /* We cannot use the probe interface here, because it does
3701 not know how to evaluate arguments. */
3702 VEC_free (probe_p, ret);
3703 ret = NULL;
3704 }
3705 }
3706 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3707 bp_objfile_data->exception_searched = 1;
3708 }
3709
3710 if (bp_objfile_data->exception_probes != NULL)
3711 {
3712 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3713 int i;
3714 struct probe *probe;
3715
3716 for (i = 0;
3717 VEC_iterate (probe_p,
3718 bp_objfile_data->exception_probes,
3719 i, probe);
3720 ++i)
3721 {
3722 struct breakpoint *b;
3723
729662a5
TT
3724 b = create_internal_breakpoint (gdbarch,
3725 get_probe_address (probe,
3726 objfile),
28106bc2
SDJ
3727 bp_exception_master,
3728 &internal_breakpoint_ops);
d28cd78a 3729 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3730 b->enable_state = bp_disabled;
3731 }
3732
3733 continue;
3734 }
3735
3736 /* Otherwise, try the hook function. */
3737
3b7344d5 3738 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3739 continue;
3740
3741 gdbarch = get_objfile_arch (objfile);
186c406b 3742
3b7344d5 3743 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3744 {
3b7344d5 3745 struct bound_minimal_symbol debug_hook;
186c406b 3746
17450429 3747 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3748 if (debug_hook.minsym == NULL)
17450429 3749 {
3b7344d5 3750 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3751 continue;
3752 }
3753
3754 bp_objfile_data->exception_msym = debug_hook;
186c406b 3755 }
17450429 3756
77e371c0 3757 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
17450429
PP
3758 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3759 &current_target);
06edf0c0
PA
3760 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3761 &internal_breakpoint_ops);
67994074
KS
3762 initialize_explicit_location (&explicit_loc);
3763 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3764 b->location = new_explicit_location (&explicit_loc);
17450429 3765 b->enable_state = bp_disabled;
186c406b 3766 }
186c406b
TT
3767}
3768
9ef9e6a6
KS
3769/* Does B have a location spec? */
3770
3771static int
3772breakpoint_event_location_empty_p (const struct breakpoint *b)
3773{
d28cd78a 3774 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3775}
3776
c906108c 3777void
fba45db2 3778update_breakpoints_after_exec (void)
c906108c 3779{
35df4500 3780 struct breakpoint *b, *b_tmp;
876fa593 3781 struct bp_location *bploc, **bplocp_tmp;
c906108c 3782
25b22b0a
PA
3783 /* We're about to delete breakpoints from GDB's lists. If the
3784 INSERTED flag is true, GDB will try to lift the breakpoints by
3785 writing the breakpoints' "shadow contents" back into memory. The
3786 "shadow contents" are NOT valid after an exec, so GDB should not
3787 do that. Instead, the target is responsible from marking
3788 breakpoints out as soon as it detects an exec. We don't do that
3789 here instead, because there may be other attempts to delete
3790 breakpoints after detecting an exec and before reaching here. */
876fa593 3791 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3792 if (bploc->pspace == current_program_space)
3793 gdb_assert (!bploc->inserted);
c906108c 3794
35df4500 3795 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3796 {
6c95b8df
PA
3797 if (b->pspace != current_program_space)
3798 continue;
3799
4a64f543 3800 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3801 if (b->type == bp_shlib_event)
3802 {
3803 delete_breakpoint (b);
3804 continue;
3805 }
c906108c 3806
4a64f543 3807 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3808 if (b->type == bp_jit_event)
3809 {
3810 delete_breakpoint (b);
3811 continue;
3812 }
3813
1900040c 3814 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3815 as must overlay event and longjmp master breakpoints. */
3816 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3817 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3818 || b->type == bp_exception_master)
c4093a6a
JM
3819 {
3820 delete_breakpoint (b);
3821 continue;
3822 }
3823
4a64f543 3824 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3825 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3826 {
3827 delete_breakpoint (b);
3828 continue;
3829 }
3830
7c16b83e
PA
3831 /* Just like single-step breakpoints. */
3832 if (b->type == bp_single_step)
3833 {
3834 delete_breakpoint (b);
3835 continue;
3836 }
3837
611c83ae
PA
3838 /* Longjmp and longjmp-resume breakpoints are also meaningless
3839 after an exec. */
186c406b 3840 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3841 || b->type == bp_longjmp_call_dummy
186c406b 3842 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3843 {
3844 delete_breakpoint (b);
3845 continue;
3846 }
3847
ce78b96d
JB
3848 if (b->type == bp_catchpoint)
3849 {
3850 /* For now, none of the bp_catchpoint breakpoints need to
3851 do anything at this point. In the future, if some of
3852 the catchpoints need to something, we will need to add
3853 a new method, and call this method from here. */
3854 continue;
3855 }
3856
c5aa993b
JM
3857 /* bp_finish is a special case. The only way we ought to be able
3858 to see one of these when an exec() has happened, is if the user
3859 caught a vfork, and then said "finish". Ordinarily a finish just
3860 carries them to the call-site of the current callee, by setting
3861 a temporary bp there and resuming. But in this case, the finish
3862 will carry them entirely through the vfork & exec.
3863
3864 We don't want to allow a bp_finish to remain inserted now. But
3865 we can't safely delete it, 'cause finish_command has a handle to
3866 the bp on a bpstat, and will later want to delete it. There's a
3867 chance (and I've seen it happen) that if we delete the bp_finish
3868 here, that its storage will get reused by the time finish_command
3869 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3870 We really must allow finish_command to delete a bp_finish.
3871
e5dd4106 3872 In the absence of a general solution for the "how do we know
53a5351d
JM
3873 it's safe to delete something others may have handles to?"
3874 problem, what we'll do here is just uninsert the bp_finish, and
3875 let finish_command delete it.
3876
3877 (We know the bp_finish is "doomed" in the sense that it's
3878 momentary, and will be deleted as soon as finish_command sees
3879 the inferior stopped. So it doesn't matter that the bp's
3880 address is probably bogus in the new a.out, unlike e.g., the
3881 solib breakpoints.) */
c5aa993b 3882
c5aa993b
JM
3883 if (b->type == bp_finish)
3884 {
3885 continue;
3886 }
3887
3888 /* Without a symbolic address, we have little hope of the
3889 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3890 a.out. */
9ef9e6a6 3891 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3892 {
3893 delete_breakpoint (b);
3894 continue;
3895 }
c5aa993b 3896 }
c906108c
SS
3897}
3898
3899int
d80ee84f 3900detach_breakpoints (ptid_t ptid)
c906108c 3901{
35df4500 3902 struct bp_location *bl, **blp_tmp;
3a1bae8e 3903 int val = 0;
2989a365 3904 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3905 struct inferior *inf = current_inferior ();
c5aa993b 3906
dfd4cc63 3907 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
8a3fe4f8 3908 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3909
6c95b8df 3910 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3911 inferior_ptid = ptid;
35df4500 3912 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3913 {
35df4500 3914 if (bl->pspace != inf->pspace)
6c95b8df
PA
3915 continue;
3916
bd9673a4
PW
3917 /* This function must physically remove breakpoints locations
3918 from the specified ptid, without modifying the breakpoint
3919 package's state. Locations of type bp_loc_other are only
3920 maintained at GDB side. So, there is no need to remove
3921 these bp_loc_other locations. Moreover, removing these
3922 would modify the breakpoint package's state. */
3923 if (bl->loc_type == bp_loc_other)
3924 continue;
3925
35df4500 3926 if (bl->inserted)
b2b6a7da 3927 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3928 }
d03285ec 3929
3a1bae8e 3930 return val;
c906108c
SS
3931}
3932
35df4500 3933/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3934 Note that this is used to detach breakpoints from a child fork.
3935 When we get here, the child isn't in the inferior list, and neither
3936 do we have objects to represent its address space --- we should
35df4500 3937 *not* look at bl->pspace->aspace here. */
6c95b8df 3938
c906108c 3939static int
b2b6a7da 3940remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3941{
3942 int val;
c5aa993b 3943
35df4500
TJB
3944 /* BL is never in moribund_locations by our callers. */
3945 gdb_assert (bl->owner != NULL);
2bdf28a0 3946
74960c60
VP
3947 /* The type of none suggests that owner is actually deleted.
3948 This should not ever happen. */
35df4500 3949 gdb_assert (bl->owner->type != bp_none);
0bde7532 3950
35df4500
TJB
3951 if (bl->loc_type == bp_loc_software_breakpoint
3952 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3953 {
c02f5703
MS
3954 /* "Normal" instruction breakpoint: either the standard
3955 trap-instruction bp (bp_breakpoint), or a
3956 bp_hardware_breakpoint. */
3957
3958 /* First check to see if we have to handle an overlay. */
3959 if (overlay_debugging == ovly_off
35df4500
TJB
3960 || bl->section == NULL
3961 || !(section_is_overlay (bl->section)))
c02f5703
MS
3962 {
3963 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3964
3965 /* If we're trying to uninsert a memory breakpoint that we
3966 know is set in a dynamic object that is marked
3967 shlib_disabled, then either the dynamic object was
3968 removed with "remove-symbol-file" or with
3969 "nosharedlibrary". In the former case, we don't know
3970 whether another dynamic object might have loaded over the
3971 breakpoint's address -- the user might well let us know
3972 about it next with add-symbol-file (the whole point of
d03de421 3973 add-symbol-file is letting the user manually maintain a
08351840
PA
3974 list of dynamically loaded objects). If we have the
3975 breakpoint's shadow memory, that is, this is a software
3976 breakpoint managed by GDB, check whether the breakpoint
3977 is still inserted in memory, to avoid overwriting wrong
3978 code with stale saved shadow contents. Note that HW
3979 breakpoints don't have shadow memory, as they're
3980 implemented using a mechanism that is not dependent on
3981 being able to modify the target's memory, and as such
3982 they should always be removed. */
3983 if (bl->shlib_disabled
3984 && bl->target_info.shadow_len != 0
3985 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3986 val = 0;
3987 else
73971819 3988 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3989 }
c906108c
SS
3990 else
3991 {
4a64f543 3992 /* This breakpoint is in an overlay section.
c02f5703
MS
3993 Did we set a breakpoint at the LMA? */
3994 if (!overlay_events_enabled)
3995 {
3996 /* Yes -- overlay event support is not active, so we
3997 should have set a breakpoint at the LMA. Remove it.
3998 */
c02f5703
MS
3999 /* Ignore any failures: if the LMA is in ROM, we will
4000 have already warned when we failed to insert it. */
35df4500
TJB
4001 if (bl->loc_type == bp_loc_hardware_breakpoint)
4002 target_remove_hw_breakpoint (bl->gdbarch,
4003 &bl->overlay_target_info);
c02f5703 4004 else
35df4500 4005 target_remove_breakpoint (bl->gdbarch,
73971819
PA
4006 &bl->overlay_target_info,
4007 reason);
c02f5703
MS
4008 }
4009 /* Did we set a breakpoint at the VMA?
4010 If so, we will have marked the breakpoint 'inserted'. */
35df4500 4011 if (bl->inserted)
c906108c 4012 {
c02f5703
MS
4013 /* Yes -- remove it. Previously we did not bother to
4014 remove the breakpoint if the section had been
4015 unmapped, but let's not rely on that being safe. We
4016 don't know what the overlay manager might do. */
aa67235e
UW
4017
4018 /* However, we should remove *software* breakpoints only
4019 if the section is still mapped, or else we overwrite
4020 wrong code with the saved shadow contents. */
348d480f
PA
4021 if (bl->loc_type == bp_loc_hardware_breakpoint
4022 || section_is_mapped (bl->section))
73971819 4023 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
4024 else
4025 val = 0;
c906108c 4026 }
c02f5703
MS
4027 else
4028 {
4029 /* No -- not inserted, so no need to remove. No error. */
4030 val = 0;
4031 }
c906108c 4032 }
879d1e6b 4033
08351840
PA
4034 /* In some cases, we might not be able to remove a breakpoint in
4035 a shared library that has already been removed, but we have
4036 not yet processed the shlib unload event. Similarly for an
4037 unloaded add-symbol-file object - the user might not yet have
4038 had the chance to remove-symbol-file it. shlib_disabled will
4039 be set if the library/object has already been removed, but
4040 the breakpoint hasn't been uninserted yet, e.g., after
4041 "nosharedlibrary" or "remove-symbol-file" with breakpoints
4042 always-inserted mode. */
076855f9 4043 if (val
08351840
PA
4044 && (bl->loc_type == bp_loc_software_breakpoint
4045 && (bl->shlib_disabled
4046 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
4047 || shared_objfile_contains_address_p (bl->pspace,
4048 bl->address))))
879d1e6b
UW
4049 val = 0;
4050
c906108c
SS
4051 if (val)
4052 return val;
b2b6a7da 4053 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 4054 }
35df4500 4055 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 4056 {
77b06cd7
TJB
4057 gdb_assert (bl->owner->ops != NULL
4058 && bl->owner->ops->remove_location != NULL);
4059
b2b6a7da 4060 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 4061 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 4062
c906108c 4063 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 4064 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 4065 warning (_("Could not remove hardware watchpoint %d."),
35df4500 4066 bl->owner->number);
c906108c 4067 }
35df4500
TJB
4068 else if (bl->owner->type == bp_catchpoint
4069 && breakpoint_enabled (bl->owner)
4070 && !bl->duplicate)
ce78b96d 4071 {
77b06cd7
TJB
4072 gdb_assert (bl->owner->ops != NULL
4073 && bl->owner->ops->remove_location != NULL);
ce78b96d 4074
73971819 4075 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
4076 if (val)
4077 return val;
77b06cd7 4078
b2b6a7da 4079 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 4080 }
c906108c
SS
4081
4082 return 0;
4083}
4084
6c95b8df 4085static int
834c0d03 4086remove_breakpoint (struct bp_location *bl)
6c95b8df 4087{
35df4500
TJB
4088 /* BL is never in moribund_locations by our callers. */
4089 gdb_assert (bl->owner != NULL);
2bdf28a0 4090
6c95b8df
PA
4091 /* The type of none suggests that owner is actually deleted.
4092 This should not ever happen. */
35df4500 4093 gdb_assert (bl->owner->type != bp_none);
6c95b8df 4094
5ed8105e 4095 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 4096
35df4500 4097 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 4098
5ed8105e 4099 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
4100}
4101
c906108c
SS
4102/* Clear the "inserted" flag in all breakpoints. */
4103
25b22b0a 4104void
fba45db2 4105mark_breakpoints_out (void)
c906108c 4106{
35df4500 4107 struct bp_location *bl, **blp_tmp;
c906108c 4108
35df4500 4109 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 4110 if (bl->pspace == current_program_space)
35df4500 4111 bl->inserted = 0;
c906108c
SS
4112}
4113
53a5351d
JM
4114/* Clear the "inserted" flag in all breakpoints and delete any
4115 breakpoints which should go away between runs of the program.
c906108c
SS
4116
4117 Plus other such housekeeping that has to be done for breakpoints
4118 between runs.
4119
53a5351d
JM
4120 Note: this function gets called at the end of a run (by
4121 generic_mourn_inferior) and when a run begins (by
4a64f543 4122 init_wait_for_inferior). */
c906108c
SS
4123
4124
4125
4126void
fba45db2 4127breakpoint_init_inferior (enum inf_context context)
c906108c 4128{
35df4500 4129 struct breakpoint *b, *b_tmp;
870f88f7 4130 struct bp_location *bl;
1c5cfe86 4131 int ix;
6c95b8df 4132 struct program_space *pspace = current_program_space;
c906108c 4133
50c71eaf
PA
4134 /* If breakpoint locations are shared across processes, then there's
4135 nothing to do. */
f5656ead 4136 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
4137 return;
4138
1a853c52 4139 mark_breakpoints_out ();
075f6582 4140
35df4500 4141 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 4142 {
6c95b8df
PA
4143 if (b->loc && b->loc->pspace != pspace)
4144 continue;
4145
c5aa993b
JM
4146 switch (b->type)
4147 {
4148 case bp_call_dummy:
e2e4d78b 4149 case bp_longjmp_call_dummy:
c906108c 4150
c5aa993b 4151 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
4152 cause problems when the inferior is rerun, so we better get
4153 rid of it. */
4154
4155 case bp_watchpoint_scope:
4156
4157 /* Also get rid of scope breakpoints. */
4158
4159 case bp_shlib_event:
4160
4161 /* Also remove solib event breakpoints. Their addresses may
4162 have changed since the last time we ran the program.
4163 Actually we may now be debugging against different target;
4164 and so the solib backend that installed this breakpoint may
4165 not be used in by the target. E.g.,
4166
4167 (gdb) file prog-linux
4168 (gdb) run # native linux target
4169 ...
4170 (gdb) kill
4171 (gdb) file prog-win.exe
4172 (gdb) tar rem :9999 # remote Windows gdbserver.
4173 */
c906108c 4174
f59f708a
PA
4175 case bp_step_resume:
4176
4177 /* Also remove step-resume breakpoints. */
4178
7c16b83e
PA
4179 case bp_single_step:
4180
4181 /* Also remove single-step breakpoints. */
4182
c5aa993b
JM
4183 delete_breakpoint (b);
4184 break;
c906108c 4185
c5aa993b
JM
4186 case bp_watchpoint:
4187 case bp_hardware_watchpoint:
4188 case bp_read_watchpoint:
4189 case bp_access_watchpoint:
3a5c3e22
PA
4190 {
4191 struct watchpoint *w = (struct watchpoint *) b;
c906108c 4192
3a5c3e22
PA
4193 /* Likewise for watchpoints on local expressions. */
4194 if (w->exp_valid_block != NULL)
4195 delete_breakpoint (b);
63000888 4196 else
3a5c3e22 4197 {
63000888
PA
4198 /* Get rid of existing locations, which are no longer
4199 valid. New ones will be created in
4200 update_watchpoint, when the inferior is restarted.
4201 The next update_global_location_list call will
4202 garbage collect them. */
4203 b->loc = NULL;
4204
4205 if (context == inf_starting)
4206 {
4207 /* Reset val field to force reread of starting value in
4208 insert_breakpoints. */
4209 if (w->val)
4210 value_free (w->val);
4211 w->val = NULL;
4212 w->val_valid = 0;
4213 }
4214 }
3a5c3e22 4215 }
c5aa993b
JM
4216 break;
4217 default:
c5aa993b
JM
4218 break;
4219 }
4220 }
1c5cfe86
PA
4221
4222 /* Get rid of the moribund locations. */
35df4500
TJB
4223 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4224 decref_bp_location (&bl);
1c5cfe86 4225 VEC_free (bp_location_p, moribund_locations);
c906108c
SS
4226}
4227
6c95b8df
PA
4228/* These functions concern about actual breakpoints inserted in the
4229 target --- to e.g. check if we need to do decr_pc adjustment or if
4230 we need to hop over the bkpt --- so we check for address space
4231 match, not program space. */
4232
c2c6d25f
JM
4233/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4234 exists at PC. It returns ordinary_breakpoint_here if it's an
4235 ordinary breakpoint, or permanent_breakpoint_here if it's a
4236 permanent breakpoint.
4237 - When continuing from a location with an ordinary breakpoint, we
4238 actually single step once before calling insert_breakpoints.
e5dd4106 4239 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
4240 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4241 the target, to advance the PC past the breakpoint. */
c906108c 4242
c2c6d25f 4243enum breakpoint_here
6c95b8df 4244breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
c906108c 4245{
35df4500 4246 struct bp_location *bl, **blp_tmp;
c2c6d25f 4247 int any_breakpoint_here = 0;
c906108c 4248
35df4500 4249 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 4250 {
35df4500
TJB
4251 if (bl->loc_type != bp_loc_software_breakpoint
4252 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4253 continue;
4254
f1310107 4255 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 4256 if ((breakpoint_enabled (bl->owner)
1a853c52 4257 || bl->permanent)
f1310107 4258 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
4259 {
4260 if (overlay_debugging
35df4500
TJB
4261 && section_is_overlay (bl->section)
4262 && !section_is_mapped (bl->section))
075f6582 4263 continue; /* unmapped overlay -- can't be a match */
1a853c52 4264 else if (bl->permanent)
075f6582
DJ
4265 return permanent_breakpoint_here;
4266 else
4267 any_breakpoint_here = 1;
4268 }
4269 }
c906108c 4270
f486487f 4271 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4272}
4273
d35ae833
PA
4274/* See breakpoint.h. */
4275
4276int
4277breakpoint_in_range_p (struct address_space *aspace,
4278 CORE_ADDR addr, ULONGEST len)
4279{
4280 struct bp_location *bl, **blp_tmp;
4281
4282 ALL_BP_LOCATIONS (bl, blp_tmp)
4283 {
4284 if (bl->loc_type != bp_loc_software_breakpoint
4285 && bl->loc_type != bp_loc_hardware_breakpoint)
4286 continue;
4287
4288 if ((breakpoint_enabled (bl->owner)
4289 || bl->permanent)
4290 && breakpoint_location_address_range_overlap (bl, aspace,
4291 addr, len))
4292 {
4293 if (overlay_debugging
4294 && section_is_overlay (bl->section)
4295 && !section_is_mapped (bl->section))
4296 {
4297 /* Unmapped overlay -- can't be a match. */
4298 continue;
4299 }
4300
4301 return 1;
4302 }
4303 }
4304
4305 return 0;
4306}
4307
1c5cfe86
PA
4308/* Return true if there's a moribund breakpoint at PC. */
4309
4310int
6c95b8df 4311moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
1c5cfe86
PA
4312{
4313 struct bp_location *loc;
4314 int ix;
4315
4316 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f1310107 4317 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4318 return 1;
4319
4320 return 0;
4321}
c2c6d25f 4322
f7ce857f
PA
4323/* Returns non-zero iff BL is inserted at PC, in address space
4324 ASPACE. */
4325
4326static int
4327bp_location_inserted_here_p (struct bp_location *bl,
4328 struct address_space *aspace, CORE_ADDR pc)
4329{
4330 if (bl->inserted
4331 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4332 aspace, pc))
4333 {
4334 if (overlay_debugging
4335 && section_is_overlay (bl->section)
4336 && !section_is_mapped (bl->section))
4337 return 0; /* unmapped overlay -- can't be a match */
4338 else
4339 return 1;
4340 }
4341 return 0;
4342}
4343
a1fd2fa5 4344/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4345
4346int
a1fd2fa5 4347breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
c906108c 4348{
f7ce857f 4349 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4350
f7ce857f 4351 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4352 {
f7ce857f
PA
4353 struct bp_location *bl = *blp;
4354
35df4500
TJB
4355 if (bl->loc_type != bp_loc_software_breakpoint
4356 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4357 continue;
4358
f7ce857f
PA
4359 if (bp_location_inserted_here_p (bl, aspace, pc))
4360 return 1;
c5aa993b 4361 }
c36b740a
VP
4362 return 0;
4363}
4364
a1fd2fa5
PA
4365/* This function returns non-zero iff there is a software breakpoint
4366 inserted at PC. */
c36b740a
VP
4367
4368int
a1fd2fa5
PA
4369software_breakpoint_inserted_here_p (struct address_space *aspace,
4370 CORE_ADDR pc)
4fa8626c 4371{
f7ce857f 4372 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4373
f7ce857f 4374 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4375 {
f7ce857f
PA
4376 struct bp_location *bl = *blp;
4377
35df4500 4378 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4379 continue;
4380
f7ce857f
PA
4381 if (bp_location_inserted_here_p (bl, aspace, pc))
4382 return 1;
4fa8626c
DJ
4383 }
4384
4385 return 0;
9c02b525
PA
4386}
4387
4388/* See breakpoint.h. */
4389
4390int
4391hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4392 CORE_ADDR pc)
4393{
4394 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4395
4396 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4397 {
4398 struct bp_location *bl = *blp;
4399
4400 if (bl->loc_type != bp_loc_hardware_breakpoint)
4401 continue;
4402
4403 if (bp_location_inserted_here_p (bl, aspace, pc))
4404 return 1;
4405 }
4406
4407 return 0;
4fa8626c
DJ
4408}
4409
9093389c
PA
4410int
4411hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4412 CORE_ADDR addr, ULONGEST len)
4413{
4414 struct breakpoint *bpt;
4415
4416 ALL_BREAKPOINTS (bpt)
4417 {
4418 struct bp_location *loc;
4419
4420 if (bpt->type != bp_hardware_watchpoint
4421 && bpt->type != bp_access_watchpoint)
4422 continue;
4423
4424 if (!breakpoint_enabled (bpt))
4425 continue;
4426
4427 for (loc = bpt->loc; loc; loc = loc->next)
4428 if (loc->pspace->aspace == aspace && loc->inserted)
4429 {
4430 CORE_ADDR l, h;
4431
4432 /* Check for intersection. */
768adc05
PA
4433 l = std::max<CORE_ADDR> (loc->address, addr);
4434 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4435 if (l < h)
4436 return 1;
4437 }
4438 }
4439 return 0;
4440}
c906108c 4441\f
c5aa993b 4442
c906108c
SS
4443/* bpstat stuff. External routines' interfaces are documented
4444 in breakpoint.h. */
4445
4446int
c326b90e 4447is_catchpoint (struct breakpoint *ep)
c906108c 4448{
533be4dd 4449 return (ep->type == bp_catchpoint);
c906108c
SS
4450}
4451
f431efe5
PA
4452/* Frees any storage that is part of a bpstat. Does not walk the
4453 'next' chain. */
4454
4455static void
198757a8
VP
4456bpstat_free (bpstat bs)
4457{
4458 if (bs->old_val != NULL)
4459 value_free (bs->old_val);
9add0f1b 4460 decref_counted_command_line (&bs->commands);
f431efe5 4461 decref_bp_location (&bs->bp_location_at);
198757a8
VP
4462 xfree (bs);
4463}
4464
c906108c
SS
4465/* Clear a bpstat so that it says we are not at any breakpoint.
4466 Also free any storage that is part of a bpstat. */
4467
4468void
fba45db2 4469bpstat_clear (bpstat *bsp)
c906108c
SS
4470{
4471 bpstat p;
4472 bpstat q;
4473
4474 if (bsp == 0)
4475 return;
4476 p = *bsp;
4477 while (p != NULL)
4478 {
4479 q = p->next;
198757a8 4480 bpstat_free (p);
c906108c
SS
4481 p = q;
4482 }
4483 *bsp = NULL;
4484}
4485
4486/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4487 is part of the bpstat is copied as well. */
4488
4489bpstat
fba45db2 4490bpstat_copy (bpstat bs)
c906108c
SS
4491{
4492 bpstat p = NULL;
4493 bpstat tmp;
4494 bpstat retval = NULL;
4495
4496 if (bs == NULL)
4497 return bs;
4498
4499 for (; bs != NULL; bs = bs->next)
4500 {
4501 tmp = (bpstat) xmalloc (sizeof (*tmp));
4502 memcpy (tmp, bs, sizeof (*tmp));
9add0f1b 4503 incref_counted_command_line (tmp->commands);
f431efe5 4504 incref_bp_location (tmp->bp_location_at);
31cc81e9 4505 if (bs->old_val != NULL)
3c3185ac
JK
4506 {
4507 tmp->old_val = value_copy (bs->old_val);
4508 release_value (tmp->old_val);
4509 }
31cc81e9 4510
c906108c
SS
4511 if (p == NULL)
4512 /* This is the first thing in the chain. */
4513 retval = tmp;
4514 else
4515 p->next = tmp;
4516 p = tmp;
4517 }
4518 p->next = NULL;
4519 return retval;
4520}
4521
4a64f543 4522/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4523
4524bpstat
fba45db2 4525bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4526{
c5aa993b
JM
4527 if (bsp == NULL)
4528 return NULL;
c906108c 4529
c5aa993b
JM
4530 for (; bsp != NULL; bsp = bsp->next)
4531 {
f431efe5 4532 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4533 return bsp;
4534 }
c906108c
SS
4535 return NULL;
4536}
4537
ab04a2af
TT
4538/* See breakpoint.h. */
4539
47591c29 4540int
427cd150 4541bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4542{
ab04a2af
TT
4543 for (; bsp != NULL; bsp = bsp->next)
4544 {
427cd150
TT
4545 if (bsp->breakpoint_at == NULL)
4546 {
4547 /* A moribund location can never explain a signal other than
4548 GDB_SIGNAL_TRAP. */
4549 if (sig == GDB_SIGNAL_TRAP)
47591c29 4550 return 1;
427cd150
TT
4551 }
4552 else
47591c29
PA
4553 {
4554 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4555 sig))
4556 return 1;
4557 }
ab04a2af
TT
4558 }
4559
47591c29 4560 return 0;
ab04a2af
TT
4561}
4562
4a64f543
MS
4563/* Put in *NUM the breakpoint number of the first breakpoint we are
4564 stopped at. *BSP upon return is a bpstat which points to the
4565 remaining breakpoints stopped at (but which is not guaranteed to be
4566 good for anything but further calls to bpstat_num).
4567
8671a17b
PA
4568 Return 0 if passed a bpstat which does not indicate any breakpoints.
4569 Return -1 if stopped at a breakpoint that has been deleted since
4570 we set it.
4571 Return 1 otherwise. */
c906108c
SS
4572
4573int
8671a17b 4574bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4575{
4576 struct breakpoint *b;
4577
4578 if ((*bsp) == NULL)
4579 return 0; /* No more breakpoint values */
8671a17b 4580
4a64f543
MS
4581 /* We assume we'll never have several bpstats that correspond to a
4582 single breakpoint -- otherwise, this function might return the
4583 same number more than once and this will look ugly. */
f431efe5 4584 b = (*bsp)->breakpoint_at;
8671a17b
PA
4585 *bsp = (*bsp)->next;
4586 if (b == NULL)
4587 return -1; /* breakpoint that's been deleted since */
4588
4589 *num = b->number; /* We have its number */
4590 return 1;
c906108c
SS
4591}
4592
e93ca019 4593/* See breakpoint.h. */
c906108c
SS
4594
4595void
e93ca019 4596bpstat_clear_actions (void)
c906108c 4597{
e93ca019
JK
4598 struct thread_info *tp;
4599 bpstat bs;
4600
4601 if (ptid_equal (inferior_ptid, null_ptid))
4602 return;
4603
4604 tp = find_thread_ptid (inferior_ptid);
4605 if (tp == NULL)
4606 return;
4607
4608 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4609 {
9add0f1b 4610 decref_counted_command_line (&bs->commands);
abf85f46 4611
c906108c
SS
4612 if (bs->old_val != NULL)
4613 {
4614 value_free (bs->old_val);
4615 bs->old_val = NULL;
4616 }
4617 }
4618}
4619
f3b1572e
PA
4620/* Called when a command is about to proceed the inferior. */
4621
4622static void
4623breakpoint_about_to_proceed (void)
4624{
4625 if (!ptid_equal (inferior_ptid, null_ptid))
4626 {
4627 struct thread_info *tp = inferior_thread ();
4628
4629 /* Allow inferior function calls in breakpoint commands to not
4630 interrupt the command list. When the call finishes
4631 successfully, the inferior will be standing at the same
4632 breakpoint as if nothing happened. */
16c381f0 4633 if (tp->control.in_infcall)
f3b1572e
PA
4634 return;
4635 }
4636
4637 breakpoint_proceeded = 1;
4638}
4639
4a64f543
MS
4640/* Stub for cleaning up our state if we error-out of a breakpoint
4641 command. */
c906108c 4642static void
4efb68b1 4643cleanup_executing_breakpoints (void *ignore)
c906108c
SS
4644{
4645 executing_breakpoint_commands = 0;
4646}
4647
abf85f46
JK
4648/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4649 or its equivalent. */
4650
4651static int
4652command_line_is_silent (struct command_line *cmd)
4653{
4f45d445 4654 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4655}
4656
4a64f543
MS
4657/* Execute all the commands associated with all the breakpoints at
4658 this location. Any of these commands could cause the process to
4659 proceed beyond this point, etc. We look out for such changes by
4660 checking the global "breakpoint_proceeded" after each command.
c906108c 4661
347bddb7
PA
4662 Returns true if a breakpoint command resumed the inferior. In that
4663 case, it is the caller's responsibility to recall it again with the
4664 bpstat of the current thread. */
4665
4666static int
4667bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4668{
4669 bpstat bs;
4670 struct cleanup *old_chain;
347bddb7 4671 int again = 0;
c906108c
SS
4672
4673 /* Avoid endless recursion if a `source' command is contained
4674 in bs->commands. */
4675 if (executing_breakpoint_commands)
347bddb7 4676 return 0;
c906108c
SS
4677
4678 executing_breakpoint_commands = 1;
4679 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4680
1ac32117 4681 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4682
4a64f543 4683 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4684 bs = *bsp;
4685
4686 breakpoint_proceeded = 0;
4687 for (; bs != NULL; bs = bs->next)
4688 {
9add0f1b 4689 struct counted_command_line *ccmd;
6c50ab1c
JB
4690 struct command_line *cmd;
4691 struct cleanup *this_cmd_tree_chain;
4692
4693 /* Take ownership of the BSP's command tree, if it has one.
4694
4695 The command tree could legitimately contain commands like
4696 'step' and 'next', which call clear_proceed_status, which
4697 frees stop_bpstat's command tree. To make sure this doesn't
4698 free the tree we're executing out from under us, we need to
4699 take ownership of the tree ourselves. Since a given bpstat's
4700 commands are only executed once, we don't need to copy it; we
4701 can clear the pointer in the bpstat, and make sure we free
4702 the tree when we're done. */
9add0f1b
TT
4703 ccmd = bs->commands;
4704 bs->commands = NULL;
abf85f46
JK
4705 this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4706 cmd = ccmd ? ccmd->commands : NULL;
4707 if (command_line_is_silent (cmd))
4708 {
4709 /* The action has been already done by bpstat_stop_status. */
4710 cmd = cmd->next;
4711 }
6c50ab1c 4712
c906108c
SS
4713 while (cmd != NULL)
4714 {
4715 execute_control_command (cmd);
4716
4717 if (breakpoint_proceeded)
4718 break;
4719 else
4720 cmd = cmd->next;
4721 }
6c50ab1c
JB
4722
4723 /* We can free this command tree now. */
4724 do_cleanups (this_cmd_tree_chain);
4725
c906108c 4726 if (breakpoint_proceeded)
32c1e744 4727 {
cb814510 4728 if (current_ui->async)
347bddb7
PA
4729 /* If we are in async mode, then the target might be still
4730 running, not stopped at any breakpoint, so nothing for
4731 us to do here -- just return to the event loop. */
4732 ;
32c1e744
VP
4733 else
4734 /* In sync mode, when execute_control_command returns
4735 we're already standing on the next breakpoint.
347bddb7
PA
4736 Breakpoint commands for that stop were not run, since
4737 execute_command does not run breakpoint commands --
4738 only command_line_handler does, but that one is not
4739 involved in execution of breakpoint commands. So, we
4740 can now execute breakpoint commands. It should be
4741 noted that making execute_command do bpstat actions is
4742 not an option -- in this case we'll have recursive
4743 invocation of bpstat for each breakpoint with a
4744 command, and can easily blow up GDB stack. Instead, we
4745 return true, which will trigger the caller to recall us
4746 with the new stop_bpstat. */
4747 again = 1;
4748 break;
32c1e744 4749 }
c906108c 4750 }
c2b8ed2c 4751 do_cleanups (old_chain);
347bddb7
PA
4752 return again;
4753}
4754
4755void
4756bpstat_do_actions (void)
4757{
353d1d73
JK
4758 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4759
347bddb7
PA
4760 /* Do any commands attached to breakpoint we are stopped at. */
4761 while (!ptid_equal (inferior_ptid, null_ptid)
4762 && target_has_execution
4763 && !is_exited (inferior_ptid)
4764 && !is_executing (inferior_ptid))
4765 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4766 and only return when it is stopped at the next breakpoint, we
4767 keep doing breakpoint actions until it returns false to
4768 indicate the inferior was not resumed. */
16c381f0 4769 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
347bddb7 4770 break;
353d1d73
JK
4771
4772 discard_cleanups (cleanup_if_error);
c906108c
SS
4773}
4774
fa4727a6
DJ
4775/* Print out the (old or new) value associated with a watchpoint. */
4776
4777static void
4778watchpoint_value_print (struct value *val, struct ui_file *stream)
4779{
4780 if (val == NULL)
4781 fprintf_unfiltered (stream, _("<unreadable>"));
4782 else
79a45b7d
TT
4783 {
4784 struct value_print_options opts;
4785 get_user_print_options (&opts);
4786 value_print (val, stream, &opts);
4787 }
fa4727a6
DJ
4788}
4789
f303dbd6
PA
4790/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4791 debugging multiple threads. */
4792
4793void
4794maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4795{
112e8700 4796 if (uiout->is_mi_like_p ())
f303dbd6
PA
4797 return;
4798
112e8700 4799 uiout->text ("\n");
f303dbd6
PA
4800
4801 if (show_thread_that_caused_stop ())
4802 {
4803 const char *name;
4804 struct thread_info *thr = inferior_thread ();
4805
112e8700
SM
4806 uiout->text ("Thread ");
4807 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4808
4809 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4810 if (name != NULL)
4811 {
112e8700
SM
4812 uiout->text (" \"");
4813 uiout->field_fmt ("name", "%s", name);
4814 uiout->text ("\"");
f303dbd6
PA
4815 }
4816
112e8700 4817 uiout->text (" hit ");
f303dbd6
PA
4818 }
4819}
4820
e514a9d6 4821/* Generic routine for printing messages indicating why we
4a64f543 4822 stopped. The behavior of this function depends on the value
e514a9d6
JM
4823 'print_it' in the bpstat structure. Under some circumstances we
4824 may decide not to print anything here and delegate the task to
4a64f543 4825 normal_stop(). */
e514a9d6
JM
4826
4827static enum print_stop_action
4828print_bp_stop_message (bpstat bs)
4829{
4830 switch (bs->print_it)
4831 {
4832 case print_it_noop:
4a64f543 4833 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4834 return PRINT_UNKNOWN;
4835 break;
4836
4837 case print_it_done:
4838 /* We still want to print the frame, but we already printed the
4a64f543 4839 relevant messages. */
e514a9d6
JM
4840 return PRINT_SRC_AND_LOC;
4841 break;
4842
4843 case print_it_normal:
4f8d1dc6 4844 {
f431efe5
PA
4845 struct breakpoint *b = bs->breakpoint_at;
4846
1a6a67de
TJB
4847 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4848 which has since been deleted. */
4849 if (b == NULL)
4850 return PRINT_UNKNOWN;
4851
348d480f
PA
4852 /* Normal case. Call the breakpoint's print_it method. */
4853 return b->ops->print_it (bs);
4f8d1dc6 4854 }
348d480f 4855 break;
3086aeae 4856
e514a9d6 4857 default:
8e65ff28 4858 internal_error (__FILE__, __LINE__,
e2e0b3e5 4859 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4860 break;
c906108c 4861 }
c906108c
SS
4862}
4863
edcc5120
TT
4864/* A helper function that prints a shared library stopped event. */
4865
4866static void
4867print_solib_event (int is_catchpoint)
4868{
4869 int any_deleted
4870 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4871 int any_added
4872 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4873
4874 if (!is_catchpoint)
4875 {
4876 if (any_added || any_deleted)
112e8700 4877 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4878 else
112e8700
SM
4879 current_uiout->text (_("Stopped due to shared library event (no "
4880 "libraries added or removed)\n"));
edcc5120
TT
4881 }
4882
112e8700
SM
4883 if (current_uiout->is_mi_like_p ())
4884 current_uiout->field_string ("reason",
4885 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4886
4887 if (any_deleted)
4888 {
edcc5120
TT
4889 char *name;
4890 int ix;
4891
112e8700 4892 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4893 ui_out_emit_list list_emitter (current_uiout, "removed");
edcc5120
TT
4894 for (ix = 0;
4895 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4896 ix, name);
4897 ++ix)
4898 {
4899 if (ix > 0)
112e8700
SM
4900 current_uiout->text (" ");
4901 current_uiout->field_string ("library", name);
4902 current_uiout->text ("\n");
edcc5120 4903 }
edcc5120
TT
4904 }
4905
4906 if (any_added)
4907 {
4908 struct so_list *iter;
4909 int ix;
edcc5120 4910
112e8700 4911 current_uiout->text (_(" Inferior loaded "));
10f489e5 4912 ui_out_emit_list list_emitter (current_uiout, "added");
edcc5120
TT
4913 for (ix = 0;
4914 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4915 ix, iter);
4916 ++ix)
4917 {
4918 if (ix > 0)
112e8700
SM
4919 current_uiout->text (" ");
4920 current_uiout->field_string ("library", iter->so_name);
4921 current_uiout->text ("\n");
edcc5120 4922 }
edcc5120
TT
4923 }
4924}
4925
e514a9d6
JM
4926/* Print a message indicating what happened. This is called from
4927 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4928 list - a list of the eventpoints that caused this stop. KIND is
4929 the target_waitkind for the stopping event. This
e514a9d6
JM
4930 routine calls the generic print routine for printing a message
4931 about reasons for stopping. This will print (for example) the
4932 "Breakpoint n," part of the output. The return value of this
4933 routine is one of:
c906108c 4934
4a64f543 4935 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4936 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4937 code to print the location. An example is
c5aa993b
JM
4938 "Breakpoint 1, " which should be followed by
4939 the location.
917317f4 4940 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4941 to also print the location part of the message.
4942 An example is the catch/throw messages, which
4a64f543 4943 don't require a location appended to the end.
917317f4 4944 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4945 further info to be printed. */
c906108c 4946
917317f4 4947enum print_stop_action
36dfb11c 4948bpstat_print (bpstat bs, int kind)
c906108c 4949{
f486487f 4950 enum print_stop_action val;
c5aa993b 4951
c906108c 4952 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4953 (Currently all watchpoints go on the bpstat whether hit or not.
4954 That probably could (should) be changed, provided care is taken
c906108c 4955 with respect to bpstat_explains_signal). */
e514a9d6
JM
4956 for (; bs; bs = bs->next)
4957 {
4958 val = print_bp_stop_message (bs);
4959 if (val == PRINT_SRC_ONLY
4960 || val == PRINT_SRC_AND_LOC
4961 || val == PRINT_NOTHING)
4962 return val;
4963 }
c906108c 4964
36dfb11c
TT
4965 /* If we had hit a shared library event breakpoint,
4966 print_bp_stop_message would print out this message. If we hit an
4967 OS-level shared library event, do the same thing. */
4968 if (kind == TARGET_WAITKIND_LOADED)
4969 {
edcc5120 4970 print_solib_event (0);
36dfb11c
TT
4971 return PRINT_NOTHING;
4972 }
4973
e514a9d6 4974 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4975 with and nothing was printed. */
917317f4 4976 return PRINT_UNKNOWN;
c906108c
SS
4977}
4978
c42bd95a
DE
4979/* Evaluate the expression EXP and return 1 if value is zero.
4980 This returns the inverse of the condition because it is called
4981 from catch_errors which returns 0 if an exception happened, and if an
4982 exception happens we want execution to stop.
4a64f543 4983 The argument is a "struct expression *" that has been cast to a
c42bd95a 4984 "void *" to make it pass through catch_errors. */
c906108c
SS
4985
4986static int
4efb68b1 4987breakpoint_cond_eval (void *exp)
c906108c 4988{
278cd55f 4989 struct value *mark = value_mark ();
c5aa993b 4990 int i = !value_true (evaluate_expression ((struct expression *) exp));
cc59ec59 4991
c906108c
SS
4992 value_free_to_mark (mark);
4993 return i;
4994}
4995
5760d0ab 4996/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c
SS
4997
4998static bpstat
5760d0ab 4999bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
c906108c
SS
5000{
5001 bpstat bs;
5002
5003 bs = (bpstat) xmalloc (sizeof (*bs));
5760d0ab
JK
5004 bs->next = NULL;
5005 **bs_link_pointer = bs;
5006 *bs_link_pointer = &bs->next;
f431efe5
PA
5007 bs->breakpoint_at = bl->owner;
5008 bs->bp_location_at = bl;
5009 incref_bp_location (bl);
c906108c
SS
5010 /* If the condition is false, etc., don't do the commands. */
5011 bs->commands = NULL;
5012 bs->old_val = NULL;
5013 bs->print_it = print_it_normal;
5014 return bs;
5015}
5016\f
d983da9c
DJ
5017/* The target has stopped with waitstatus WS. Check if any hardware
5018 watchpoints have triggered, according to the target. */
5019
5020int
5021watchpoints_triggered (struct target_waitstatus *ws)
5022{
d92524f1 5023 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
5024 CORE_ADDR addr;
5025 struct breakpoint *b;
5026
5027 if (!stopped_by_watchpoint)
5028 {
5029 /* We were not stopped by a watchpoint. Mark all watchpoints
5030 as not triggered. */
5031 ALL_BREAKPOINTS (b)
cc60f2e3 5032 if (is_hardware_watchpoint (b))
3a5c3e22
PA
5033 {
5034 struct watchpoint *w = (struct watchpoint *) b;
5035
5036 w->watchpoint_triggered = watch_triggered_no;
5037 }
d983da9c
DJ
5038
5039 return 0;
5040 }
5041
5042 if (!target_stopped_data_address (&current_target, &addr))
5043 {
5044 /* We were stopped by a watchpoint, but we don't know where.
5045 Mark all watchpoints as unknown. */
5046 ALL_BREAKPOINTS (b)
cc60f2e3 5047 if (is_hardware_watchpoint (b))
3a5c3e22
PA
5048 {
5049 struct watchpoint *w = (struct watchpoint *) b;
5050
5051 w->watchpoint_triggered = watch_triggered_unknown;
5052 }
d983da9c 5053
3c4797ba 5054 return 1;
d983da9c
DJ
5055 }
5056
5057 /* The target could report the data address. Mark watchpoints
5058 affected by this data address as triggered, and all others as not
5059 triggered. */
5060
5061 ALL_BREAKPOINTS (b)
cc60f2e3 5062 if (is_hardware_watchpoint (b))
d983da9c 5063 {
3a5c3e22 5064 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 5065 struct bp_location *loc;
d983da9c 5066
3a5c3e22 5067 w->watchpoint_triggered = watch_triggered_no;
a5606eee 5068 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 5069 {
3a5c3e22 5070 if (is_masked_watchpoint (b))
9c06b0b4 5071 {
3a5c3e22
PA
5072 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5073 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
5074
5075 if (newaddr == start)
5076 {
3a5c3e22 5077 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
5078 break;
5079 }
5080 }
5081 /* Exact match not required. Within range is sufficient. */
5082 else if (target_watchpoint_addr_within_range (&current_target,
5083 addr, loc->address,
5084 loc->length))
5085 {
3a5c3e22 5086 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
5087 break;
5088 }
5089 }
d983da9c
DJ
5090 }
5091
5092 return 1;
5093}
5094
c906108c
SS
5095/* Possible return values for watchpoint_check (this can't be an enum
5096 because of check_errors). */
5097/* The watchpoint has been deleted. */
5098#define WP_DELETED 1
5099/* The value has changed. */
5100#define WP_VALUE_CHANGED 2
5101/* The value has not changed. */
5102#define WP_VALUE_NOT_CHANGED 3
60e1c644
PA
5103/* Ignore this watchpoint, no matter if the value changed or not. */
5104#define WP_IGNORE 4
c906108c
SS
5105
5106#define BP_TEMPFLAG 1
5107#define BP_HARDWAREFLAG 2
5108
4a64f543
MS
5109/* Evaluate watchpoint condition expression and check if its value
5110 changed.
553e4c11
JB
5111
5112 P should be a pointer to struct bpstat, but is defined as a void *
5113 in order for this function to be usable with catch_errors. */
c906108c
SS
5114
5115static int
4efb68b1 5116watchpoint_check (void *p)
c906108c
SS
5117{
5118 bpstat bs = (bpstat) p;
3a5c3e22 5119 struct watchpoint *b;
c906108c
SS
5120 struct frame_info *fr;
5121 int within_current_scope;
5122
f431efe5 5123 /* BS is built from an existing struct breakpoint. */
2bdf28a0 5124 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 5125 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 5126
f6bc2008
PA
5127 /* If this is a local watchpoint, we only want to check if the
5128 watchpoint frame is in scope if the current thread is the thread
5129 that was used to create the watchpoint. */
5130 if (!watchpoint_in_thread_scope (b))
60e1c644 5131 return WP_IGNORE;
f6bc2008 5132
c906108c
SS
5133 if (b->exp_valid_block == NULL)
5134 within_current_scope = 1;
5135 else
5136 {
edb3359d
DJ
5137 struct frame_info *frame = get_current_frame ();
5138 struct gdbarch *frame_arch = get_frame_arch (frame);
5139 CORE_ADDR frame_pc = get_frame_pc (frame);
5140
c9cf6e20 5141 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
5142 still in the function but the stack frame has already been
5143 invalidated. Since we can't rely on the values of local
5144 variables after the stack has been destroyed, we are treating
5145 the watchpoint in that state as `not changed' without further
5146 checking. Don't mark watchpoints as changed if the current
5147 frame is in an epilogue - even if they are in some other
5148 frame, our view of the stack is likely to be wrong and
5149 frame_find_by_id could error out. */
c9cf6e20 5150 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 5151 return WP_IGNORE;
a0f49112 5152
101dcfbe 5153 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 5154 within_current_scope = (fr != NULL);
69fbadd5
DJ
5155
5156 /* If we've gotten confused in the unwinder, we might have
5157 returned a frame that can't describe this variable. */
edb3359d
DJ
5158 if (within_current_scope)
5159 {
5160 struct symbol *function;
5161
5162 function = get_frame_function (fr);
5163 if (function == NULL
5164 || !contained_in (b->exp_valid_block,
5165 SYMBOL_BLOCK_VALUE (function)))
5166 within_current_scope = 0;
5167 }
69fbadd5 5168
edb3359d 5169 if (within_current_scope)
c906108c
SS
5170 /* If we end up stopping, the current frame will get selected
5171 in normal_stop. So this call to select_frame won't affect
5172 the user. */
0f7d239c 5173 select_frame (fr);
c906108c 5174 }
c5aa993b 5175
c906108c
SS
5176 if (within_current_scope)
5177 {
4a64f543
MS
5178 /* We use value_{,free_to_}mark because it could be a *long*
5179 time before we return to the command level and call
5180 free_all_values. We can't call free_all_values because we
5181 might be in the middle of evaluating a function call. */
c906108c 5182
0cf6dd15 5183 int pc = 0;
9c06b0b4 5184 struct value *mark;
fa4727a6
DJ
5185 struct value *new_val;
5186
c1fc2657 5187 if (is_masked_watchpoint (b))
9c06b0b4
TJB
5188 /* Since we don't know the exact trigger address (from
5189 stopped_data_address), just tell the user we've triggered
5190 a mask watchpoint. */
5191 return WP_VALUE_CHANGED;
5192
5193 mark = value_mark ();
4d01a485 5194 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 5195
bb9d5f81
PP
5196 if (b->val_bitsize != 0)
5197 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5198
4a64f543
MS
5199 /* We use value_equal_contents instead of value_equal because
5200 the latter coerces an array to a pointer, thus comparing just
5201 the address of the array instead of its contents. This is
5202 not what we want. */
fa4727a6 5203 if ((b->val != NULL) != (new_val != NULL)
218d2fc6 5204 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
c906108c 5205 {
fa4727a6
DJ
5206 if (new_val != NULL)
5207 {
5208 release_value (new_val);
5209 value_free_to_mark (mark);
5210 }
c906108c
SS
5211 bs->old_val = b->val;
5212 b->val = new_val;
fa4727a6 5213 b->val_valid = 1;
c906108c
SS
5214 return WP_VALUE_CHANGED;
5215 }
5216 else
5217 {
60e1c644 5218 /* Nothing changed. */
c906108c 5219 value_free_to_mark (mark);
c906108c
SS
5220 return WP_VALUE_NOT_CHANGED;
5221 }
5222 }
5223 else
5224 {
5225 /* This seems like the only logical thing to do because
c5aa993b
JM
5226 if we temporarily ignored the watchpoint, then when
5227 we reenter the block in which it is valid it contains
5228 garbage (in the case of a function, it may have two
5229 garbage values, one before and one after the prologue).
5230 So we can't even detect the first assignment to it and
5231 watch after that (since the garbage may or may not equal
5232 the first value assigned). */
348d480f
PA
5233 /* We print all the stop information in
5234 breakpoint_ops->print_it, but in this case, by the time we
5235 call breakpoint_ops->print_it this bp will be deleted
5236 already. So we have no choice but print the information
5237 here. */
468afe6c 5238
0e454242 5239 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
5240 {
5241 struct ui_out *uiout = current_uiout;
5242
112e8700
SM
5243 if (uiout->is_mi_like_p ())
5244 uiout->field_string
5245 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5246 uiout->text ("\nWatchpoint ");
c1fc2657 5247 uiout->field_int ("wpnum", b->number);
112e8700 5248 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
5249 "which its expression is valid.\n");
5250 }
4ce44c66 5251
cdac0397 5252 /* Make sure the watchpoint's commands aren't executed. */
c1fc2657 5253 decref_counted_command_line (&b->commands);
d0fb5eae 5254 watchpoint_del_at_next_stop (b);
c906108c
SS
5255
5256 return WP_DELETED;
5257 }
5258}
5259
18a18393 5260/* Return true if it looks like target has stopped due to hitting
348d480f
PA
5261 breakpoint location BL. This function does not check if we should
5262 stop, only if BL explains the stop. */
5263
18a18393 5264static int
6c95b8df 5265bpstat_check_location (const struct bp_location *bl,
09ac7c10
TT
5266 struct address_space *aspace, CORE_ADDR bp_addr,
5267 const struct target_waitstatus *ws)
18a18393
VP
5268{
5269 struct breakpoint *b = bl->owner;
5270
348d480f 5271 /* BL is from an existing breakpoint. */
2bdf28a0
JK
5272 gdb_assert (b != NULL);
5273
09ac7c10 5274 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
5275}
5276
3a5c3e22
PA
5277/* Determine if the watched values have actually changed, and we
5278 should stop. If not, set BS->stop to 0. */
5279
18a18393
VP
5280static void
5281bpstat_check_watchpoint (bpstat bs)
5282{
2bdf28a0 5283 const struct bp_location *bl;
3a5c3e22 5284 struct watchpoint *b;
2bdf28a0
JK
5285
5286 /* BS is built for existing struct breakpoint. */
f431efe5 5287 bl = bs->bp_location_at;
2bdf28a0 5288 gdb_assert (bl != NULL);
3a5c3e22 5289 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5290 gdb_assert (b != NULL);
18a18393 5291
18a18393 5292 {
18a18393
VP
5293 int must_check_value = 0;
5294
c1fc2657 5295 if (b->type == bp_watchpoint)
18a18393
VP
5296 /* For a software watchpoint, we must always check the
5297 watched value. */
5298 must_check_value = 1;
5299 else if (b->watchpoint_triggered == watch_triggered_yes)
5300 /* We have a hardware watchpoint (read, write, or access)
5301 and the target earlier reported an address watched by
5302 this watchpoint. */
5303 must_check_value = 1;
5304 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5305 && b->type == bp_hardware_watchpoint)
18a18393
VP
5306 /* We were stopped by a hardware watchpoint, but the target could
5307 not report the data address. We must check the watchpoint's
5308 value. Access and read watchpoints are out of luck; without
5309 a data address, we can't figure it out. */
5310 must_check_value = 1;
3a5c3e22 5311
18a18393
VP
5312 if (must_check_value)
5313 {
3e43a32a
MS
5314 char *message
5315 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
c1fc2657 5316 b->number);
18a18393
VP
5317 struct cleanup *cleanups = make_cleanup (xfree, message);
5318 int e = catch_errors (watchpoint_check, bs, message,
5319 RETURN_MASK_ALL);
5320 do_cleanups (cleanups);
5321 switch (e)
5322 {
5323 case WP_DELETED:
5324 /* We've already printed what needs to be printed. */
5325 bs->print_it = print_it_done;
5326 /* Stop. */
5327 break;
60e1c644
PA
5328 case WP_IGNORE:
5329 bs->print_it = print_it_noop;
5330 bs->stop = 0;
5331 break;
18a18393 5332 case WP_VALUE_CHANGED:
c1fc2657 5333 if (b->type == bp_read_watchpoint)
18a18393 5334 {
85d721b8
PA
5335 /* There are two cases to consider here:
5336
4a64f543 5337 1. We're watching the triggered memory for reads.
85d721b8
PA
5338 In that case, trust the target, and always report
5339 the watchpoint hit to the user. Even though
5340 reads don't cause value changes, the value may
5341 have changed since the last time it was read, and
5342 since we're not trapping writes, we will not see
5343 those, and as such we should ignore our notion of
5344 old value.
5345
4a64f543 5346 2. We're watching the triggered memory for both
85d721b8
PA
5347 reads and writes. There are two ways this may
5348 happen:
5349
4a64f543 5350 2.1. This is a target that can't break on data
85d721b8
PA
5351 reads only, but can break on accesses (reads or
5352 writes), such as e.g., x86. We detect this case
5353 at the time we try to insert read watchpoints.
5354
4a64f543 5355 2.2. Otherwise, the target supports read
85d721b8
PA
5356 watchpoints, but, the user set an access or write
5357 watchpoint watching the same memory as this read
5358 watchpoint.
5359
5360 If we're watching memory writes as well as reads,
5361 ignore watchpoint hits when we find that the
5362 value hasn't changed, as reads don't cause
5363 changes. This still gives false positives when
5364 the program writes the same value to memory as
5365 what there was already in memory (we will confuse
5366 it for a read), but it's much better than
5367 nothing. */
5368
5369 int other_write_watchpoint = 0;
5370
5371 if (bl->watchpoint_type == hw_read)
5372 {
5373 struct breakpoint *other_b;
5374
5375 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5376 if (other_b->type == bp_hardware_watchpoint
5377 || other_b->type == bp_access_watchpoint)
85d721b8 5378 {
3a5c3e22
PA
5379 struct watchpoint *other_w =
5380 (struct watchpoint *) other_b;
5381
5382 if (other_w->watchpoint_triggered
5383 == watch_triggered_yes)
5384 {
5385 other_write_watchpoint = 1;
5386 break;
5387 }
85d721b8
PA
5388 }
5389 }
5390
5391 if (other_write_watchpoint
5392 || bl->watchpoint_type == hw_access)
5393 {
5394 /* We're watching the same memory for writes,
5395 and the value changed since the last time we
5396 updated it, so this trap must be for a write.
5397 Ignore it. */
5398 bs->print_it = print_it_noop;
5399 bs->stop = 0;
5400 }
18a18393
VP
5401 }
5402 break;
5403 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5404 if (b->type == bp_hardware_watchpoint
5405 || b->type == bp_watchpoint)
18a18393
VP
5406 {
5407 /* Don't stop: write watchpoints shouldn't fire if
5408 the value hasn't changed. */
5409 bs->print_it = print_it_noop;
5410 bs->stop = 0;
5411 }
5412 /* Stop. */
5413 break;
5414 default:
5415 /* Can't happen. */
5416 case 0:
5417 /* Error from catch_errors. */
468afe6c 5418 {
0e454242 5419 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
5420 {
5421 printf_filtered (_("Watchpoint %d deleted.\n"),
c1fc2657 5422 b->number);
468afe6c
PA
5423 }
5424 watchpoint_del_at_next_stop (b);
5425 /* We've already printed what needs to be printed. */
5426 bs->print_it = print_it_done;
5427 }
18a18393
VP
5428 break;
5429 }
5430 }
5431 else /* must_check_value == 0 */
5432 {
5433 /* This is a case where some watchpoint(s) triggered, but
5434 not at the address of this watchpoint, or else no
5435 watchpoint triggered after all. So don't print
5436 anything for this watchpoint. */
5437 bs->print_it = print_it_noop;
5438 bs->stop = 0;
5439 }
5440 }
5441}
5442
7d4df6a4
DE
5443/* For breakpoints that are currently marked as telling gdb to stop,
5444 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5445 of breakpoint referred to by BS. If we should not stop for this
5446 breakpoint, set BS->stop to 0. */
f431efe5 5447
18a18393
VP
5448static void
5449bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5450{
2bdf28a0
JK
5451 const struct bp_location *bl;
5452 struct breakpoint *b;
7d4df6a4
DE
5453 int value_is_zero = 0;
5454 struct expression *cond;
5455
5456 gdb_assert (bs->stop);
2bdf28a0
JK
5457
5458 /* BS is built for existing struct breakpoint. */
f431efe5 5459 bl = bs->bp_location_at;
2bdf28a0 5460 gdb_assert (bl != NULL);
f431efe5 5461 b = bs->breakpoint_at;
2bdf28a0 5462 gdb_assert (b != NULL);
18a18393 5463
b775012e
LM
5464 /* Even if the target evaluated the condition on its end and notified GDB, we
5465 need to do so again since GDB does not know if we stopped due to a
5466 breakpoint or a single step breakpoint. */
5467
18a18393 5468 if (frame_id_p (b->frame_id)
edb3359d 5469 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5470 {
7d4df6a4
DE
5471 bs->stop = 0;
5472 return;
5473 }
60e1c644 5474
12ab52e9
PA
5475 /* If this is a thread/task-specific breakpoint, don't waste cpu
5476 evaluating the condition if this isn't the specified
5477 thread/task. */
5d5658a1 5478 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
12ab52e9
PA
5479 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5480
6c1b0f7b
DE
5481 {
5482 bs->stop = 0;
5483 return;
5484 }
5485
6dddc817
DE
5486 /* Evaluate extension language breakpoints that have a "stop" method
5487 implemented. */
5488 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5489
7d4df6a4
DE
5490 if (is_watchpoint (b))
5491 {
5492 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5493
4d01a485 5494 cond = w->cond_exp.get ();
7d4df6a4
DE
5495 }
5496 else
4d01a485 5497 cond = bl->cond.get ();
60e1c644 5498
7d4df6a4
DE
5499 if (cond && b->disposition != disp_del_at_next_stop)
5500 {
5501 int within_current_scope = 1;
5502 struct watchpoint * w;
60e1c644 5503
7d4df6a4
DE
5504 /* We use value_mark and value_free_to_mark because it could
5505 be a long time before we return to the command level and
5506 call free_all_values. We can't call free_all_values
5507 because we might be in the middle of evaluating a
5508 function call. */
5509 struct value *mark = value_mark ();
5510
5511 if (is_watchpoint (b))
5512 w = (struct watchpoint *) b;
5513 else
5514 w = NULL;
5515
5516 /* Need to select the frame, with all that implies so that
5517 the conditions will have the right context. Because we
5518 use the frame, we will not see an inlined function's
5519 variables when we arrive at a breakpoint at the start
5520 of the inlined function; the current frame will be the
5521 call site. */
5522 if (w == NULL || w->cond_exp_valid_block == NULL)
5523 select_frame (get_current_frame ());
5524 else
18a18393 5525 {
7d4df6a4
DE
5526 struct frame_info *frame;
5527
5528 /* For local watchpoint expressions, which particular
5529 instance of a local is being watched matters, so we
5530 keep track of the frame to evaluate the expression
5531 in. To evaluate the condition however, it doesn't
5532 really matter which instantiation of the function
5533 where the condition makes sense triggers the
5534 watchpoint. This allows an expression like "watch
5535 global if q > 10" set in `func', catch writes to
5536 global on all threads that call `func', or catch
5537 writes on all recursive calls of `func' by a single
5538 thread. We simply always evaluate the condition in
5539 the innermost frame that's executing where it makes
5540 sense to evaluate the condition. It seems
5541 intuitive. */
5542 frame = block_innermost_frame (w->cond_exp_valid_block);
5543 if (frame != NULL)
5544 select_frame (frame);
5545 else
5546 within_current_scope = 0;
18a18393 5547 }
7d4df6a4
DE
5548 if (within_current_scope)
5549 value_is_zero
5550 = catch_errors (breakpoint_cond_eval, cond,
5551 "Error in testing breakpoint condition:\n",
5552 RETURN_MASK_ALL);
5553 else
18a18393 5554 {
7d4df6a4
DE
5555 warning (_("Watchpoint condition cannot be tested "
5556 "in the current scope"));
5557 /* If we failed to set the right context for this
5558 watchpoint, unconditionally report it. */
5559 value_is_zero = 0;
18a18393 5560 }
7d4df6a4
DE
5561 /* FIXME-someday, should give breakpoint #. */
5562 value_free_to_mark (mark);
18a18393 5563 }
7d4df6a4
DE
5564
5565 if (cond && value_is_zero)
5566 {
5567 bs->stop = 0;
5568 }
7d4df6a4
DE
5569 else if (b->ignore_count > 0)
5570 {
5571 b->ignore_count--;
5572 bs->stop = 0;
5573 /* Increase the hit count even though we don't stop. */
5574 ++(b->hit_count);
5575 observer_notify_breakpoint_modified (b);
5576 }
18a18393
VP
5577}
5578
1cf4d951
PA
5579/* Returns true if we need to track moribund locations of LOC's type
5580 on the current target. */
5581
5582static int
5583need_moribund_for_location_type (struct bp_location *loc)
5584{
5585 return ((loc->loc_type == bp_loc_software_breakpoint
5586 && !target_supports_stopped_by_sw_breakpoint ())
5587 || (loc->loc_type == bp_loc_hardware_breakpoint
5588 && !target_supports_stopped_by_hw_breakpoint ()));
5589}
5590
18a18393 5591
9709f61c 5592/* Get a bpstat associated with having just stopped at address
d983da9c 5593 BP_ADDR in thread PTID.
c906108c 5594
d983da9c 5595 Determine whether we stopped at a breakpoint, etc, or whether we
4a64f543
MS
5596 don't understand this stop. Result is a chain of bpstat's such
5597 that:
c906108c 5598
c5aa993b 5599 if we don't understand the stop, the result is a null pointer.
c906108c 5600
c5aa993b 5601 if we understand why we stopped, the result is not null.
c906108c 5602
c5aa993b
JM
5603 Each element of the chain refers to a particular breakpoint or
5604 watchpoint at which we have stopped. (We may have stopped for
5605 several reasons concurrently.)
c906108c 5606
c5aa993b
JM
5607 Each element of the chain has valid next, breakpoint_at,
5608 commands, FIXME??? fields. */
c906108c
SS
5609
5610bpstat
6c95b8df 5611bpstat_stop_status (struct address_space *aspace,
09ac7c10
TT
5612 CORE_ADDR bp_addr, ptid_t ptid,
5613 const struct target_waitstatus *ws)
c906108c 5614{
0d381245 5615 struct breakpoint *b = NULL;
afe38095 5616 struct bp_location *bl;
20874c92 5617 struct bp_location *loc;
5760d0ab
JK
5618 /* First item of allocated bpstat's. */
5619 bpstat bs_head = NULL, *bs_link = &bs_head;
c906108c 5620 /* Pointer to the last thing in the chain currently. */
5760d0ab 5621 bpstat bs;
20874c92 5622 int ix;
429374b8 5623 int need_remove_insert;
f431efe5 5624 int removed_any;
c906108c 5625
f431efe5
PA
5626 /* First, build the bpstat chain with locations that explain a
5627 target stop, while being careful to not set the target running,
5628 as that may invalidate locations (in particular watchpoint
5629 locations are recreated). Resuming will happen here with
5630 breakpoint conditions or watchpoint expressions that include
5631 inferior function calls. */
c5aa993b 5632
429374b8
JK
5633 ALL_BREAKPOINTS (b)
5634 {
1a853c52 5635 if (!breakpoint_enabled (b))
429374b8 5636 continue;
a5606eee 5637
429374b8
JK
5638 for (bl = b->loc; bl != NULL; bl = bl->next)
5639 {
4a64f543
MS
5640 /* For hardware watchpoints, we look only at the first
5641 location. The watchpoint_check function will work on the
5642 entire expression, not the individual locations. For
5643 read watchpoints, the watchpoints_triggered function has
5644 checked all locations already. */
429374b8
JK
5645 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5646 break;
18a18393 5647
f6592439 5648 if (!bl->enabled || bl->shlib_disabled)
429374b8 5649 continue;
c5aa993b 5650
09ac7c10 5651 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5652 continue;
c5aa993b 5653
4a64f543
MS
5654 /* Come here if it's a watchpoint, or if the break address
5655 matches. */
c5aa993b 5656
4a64f543
MS
5657 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
5658 explain stop. */
c5aa993b 5659
f431efe5
PA
5660 /* Assume we stop. Should we find a watchpoint that is not
5661 actually triggered, or if the condition of the breakpoint
5662 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5663 bs->stop = 1;
5664 bs->print = 1;
d983da9c 5665
f431efe5
PA
5666 /* If this is a scope breakpoint, mark the associated
5667 watchpoint as triggered so that we will handle the
5668 out-of-scope event. We'll get to the watchpoint next
5669 iteration. */
d0fb5eae 5670 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5671 {
5672 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5673
5674 w->watchpoint_triggered = watch_triggered_yes;
5675 }
f431efe5
PA
5676 }
5677 }
5678
7c16b83e 5679 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5680 if (!target_supports_stopped_by_sw_breakpoint ()
5681 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5682 {
1cf4d951 5683 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f431efe5 5684 {
1cf4d951
PA
5685 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5686 && need_moribund_for_location_type (loc))
5687 {
5688 bs = bpstat_alloc (loc, &bs_link);
5689 /* For hits of moribund locations, we should just proceed. */
5690 bs->stop = 0;
5691 bs->print = 0;
5692 bs->print_it = print_it_noop;
5693 }
f431efe5
PA
5694 }
5695 }
5696
edcc5120
TT
5697 /* A bit of special processing for shlib breakpoints. We need to
5698 process solib loading here, so that the lists of loaded and
5699 unloaded libraries are correct before we handle "catch load" and
5700 "catch unload". */
5701 for (bs = bs_head; bs != NULL; bs = bs->next)
5702 {
5d268276 5703 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5704 {
5705 handle_solib_event ();
5706 break;
5707 }
5708 }
5709
f431efe5
PA
5710 /* Now go through the locations that caused the target to stop, and
5711 check whether we're interested in reporting this stop to higher
5712 layers, or whether we should resume the target transparently. */
5713
5714 removed_any = 0;
5715
5760d0ab 5716 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5717 {
5718 if (!bs->stop)
5719 continue;
5720
f431efe5 5721 b = bs->breakpoint_at;
348d480f
PA
5722 b->ops->check_status (bs);
5723 if (bs->stop)
28010a5d 5724 {
348d480f 5725 bpstat_check_breakpoint_conditions (bs, ptid);
f431efe5 5726
429374b8
JK
5727 if (bs->stop)
5728 {
5729 ++(b->hit_count);
8d3788bd 5730 observer_notify_breakpoint_modified (b);
c906108c 5731
4a64f543 5732 /* We will stop here. */
429374b8
JK
5733 if (b->disposition == disp_disable)
5734 {
816338b5 5735 --(b->enable_count);
1a853c52 5736 if (b->enable_count <= 0)
429374b8 5737 b->enable_state = bp_disabled;
f431efe5 5738 removed_any = 1;
429374b8
JK
5739 }
5740 if (b->silent)
5741 bs->print = 0;
5742 bs->commands = b->commands;
9add0f1b 5743 incref_counted_command_line (bs->commands);
abf85f46
JK
5744 if (command_line_is_silent (bs->commands
5745 ? bs->commands->commands : NULL))
5746 bs->print = 0;
9d6e6e84
HZ
5747
5748 b->ops->after_condition_true (bs);
429374b8
JK
5749 }
5750
348d480f 5751 }
a9b3a50f
PA
5752
5753 /* Print nothing for this entry if we don't stop or don't
5754 print. */
5755 if (!bs->stop || !bs->print)
5756 bs->print_it = print_it_noop;
429374b8 5757 }
876fa593 5758
d983da9c
DJ
5759 /* If we aren't stopping, the value of some hardware watchpoint may
5760 not have changed, but the intermediate memory locations we are
5761 watching may have. Don't bother if we're stopping; this will get
5762 done later. */
d832cb68 5763 need_remove_insert = 0;
5760d0ab
JK
5764 if (! bpstat_causes_stop (bs_head))
5765 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5766 if (!bs->stop
f431efe5
PA
5767 && bs->breakpoint_at
5768 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5769 {
3a5c3e22
PA
5770 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5771
5772 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5773 need_remove_insert = 1;
d983da9c
DJ
5774 }
5775
d832cb68 5776 if (need_remove_insert)
44702360 5777 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5778 else if (removed_any)
44702360 5779 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5780
5760d0ab 5781 return bs_head;
c906108c 5782}
628fe4e4
JK
5783
5784static void
5785handle_jit_event (void)
5786{
5787 struct frame_info *frame;
5788 struct gdbarch *gdbarch;
5789
243a9253
PA
5790 if (debug_infrun)
5791 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5792
628fe4e4
JK
5793 /* Switch terminal for any messages produced by
5794 breakpoint_re_set. */
5795 target_terminal_ours_for_output ();
5796
5797 frame = get_current_frame ();
5798 gdbarch = get_frame_arch (frame);
5799
5800 jit_event_handler (gdbarch);
5801
5802 target_terminal_inferior ();
5803}
5804
5805/* Prepare WHAT final decision for infrun. */
5806
5807/* Decide what infrun needs to do with this bpstat. */
5808
c906108c 5809struct bpstat_what
0e30163f 5810bpstat_what (bpstat bs_head)
c906108c 5811{
c906108c 5812 struct bpstat_what retval;
0e30163f 5813 bpstat bs;
c906108c 5814
628fe4e4 5815 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5816 retval.call_dummy = STOP_NONE;
186c406b 5817 retval.is_longjmp = 0;
628fe4e4 5818
0e30163f 5819 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5820 {
628fe4e4
JK
5821 /* Extract this BS's action. After processing each BS, we check
5822 if its action overrides all we've seem so far. */
5823 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5824 enum bptype bptype;
5825
c906108c 5826 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5827 {
5828 /* I suspect this can happen if it was a momentary
5829 breakpoint which has since been deleted. */
5830 bptype = bp_none;
5831 }
20874c92 5832 else
f431efe5 5833 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5834
5835 switch (bptype)
c906108c
SS
5836 {
5837 case bp_none:
628fe4e4 5838 break;
c906108c
SS
5839 case bp_breakpoint:
5840 case bp_hardware_breakpoint:
7c16b83e 5841 case bp_single_step:
c906108c
SS
5842 case bp_until:
5843 case bp_finish:
a9b3a50f 5844 case bp_shlib_event:
c906108c
SS
5845 if (bs->stop)
5846 {
5847 if (bs->print)
628fe4e4 5848 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5849 else
628fe4e4 5850 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5851 }
5852 else
628fe4e4 5853 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5854 break;
5855 case bp_watchpoint:
5856 case bp_hardware_watchpoint:
5857 case bp_read_watchpoint:
5858 case bp_access_watchpoint:
5859 if (bs->stop)
5860 {
5861 if (bs->print)
628fe4e4 5862 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5863 else
628fe4e4 5864 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5865 }
5866 else
628fe4e4
JK
5867 {
5868 /* There was a watchpoint, but we're not stopping.
5869 This requires no further action. */
5870 }
c906108c
SS
5871 break;
5872 case bp_longjmp:
e2e4d78b 5873 case bp_longjmp_call_dummy:
186c406b 5874 case bp_exception:
0a39bb32
PA
5875 if (bs->stop)
5876 {
5877 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5878 retval.is_longjmp = bptype != bp_exception;
5879 }
5880 else
5881 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5882 break;
5883 case bp_longjmp_resume:
186c406b 5884 case bp_exception_resume:
0a39bb32
PA
5885 if (bs->stop)
5886 {
5887 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5888 retval.is_longjmp = bptype == bp_longjmp_resume;
5889 }
5890 else
5891 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5892 break;
5893 case bp_step_resume:
5894 if (bs->stop)
628fe4e4
JK
5895 this_action = BPSTAT_WHAT_STEP_RESUME;
5896 else
c906108c 5897 {
628fe4e4
JK
5898 /* It is for the wrong frame. */
5899 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5900 }
c906108c 5901 break;
2c03e5be
PA
5902 case bp_hp_step_resume:
5903 if (bs->stop)
5904 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5905 else
5906 {
5907 /* It is for the wrong frame. */
5908 this_action = BPSTAT_WHAT_SINGLE;
5909 }
5910 break;
c906108c 5911 case bp_watchpoint_scope:
c4093a6a 5912 case bp_thread_event:
1900040c 5913 case bp_overlay_event:
0fd8e87f 5914 case bp_longjmp_master:
aa7d318d 5915 case bp_std_terminate_master:
186c406b 5916 case bp_exception_master:
628fe4e4 5917 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5918 break;
ce78b96d 5919 case bp_catchpoint:
c5aa993b
JM
5920 if (bs->stop)
5921 {
5922 if (bs->print)
628fe4e4 5923 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5924 else
628fe4e4 5925 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5926 }
5927 else
628fe4e4
JK
5928 {
5929 /* There was a catchpoint, but we're not stopping.
5930 This requires no further action. */
5931 }
5932 break;
628fe4e4 5933 case bp_jit_event:
628fe4e4 5934 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5935 break;
c906108c 5936 case bp_call_dummy:
53a5351d
JM
5937 /* Make sure the action is stop (silent or noisy),
5938 so infrun.c pops the dummy frame. */
aa7d318d 5939 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5940 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5941 break;
5942 case bp_std_terminate:
5943 /* Make sure the action is stop (silent or noisy),
5944 so infrun.c pops the dummy frame. */
aa7d318d 5945 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5946 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5947 break;
1042e4c0 5948 case bp_tracepoint:
7a697b8d 5949 case bp_fast_tracepoint:
0fb4aa4b 5950 case bp_static_tracepoint:
1042e4c0
SS
5951 /* Tracepoint hits should not be reported back to GDB, and
5952 if one got through somehow, it should have been filtered
5953 out already. */
5954 internal_error (__FILE__, __LINE__,
7a697b8d 5955 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5956 break;
5957 case bp_gnu_ifunc_resolver:
5958 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5959 this_action = BPSTAT_WHAT_SINGLE;
5960 break;
5961 case bp_gnu_ifunc_resolver_return:
5962 /* The breakpoint will be removed, execution will restart from the
5963 PC of the former breakpoint. */
5964 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5965 break;
e7e0cddf
SS
5966
5967 case bp_dprintf:
a11cfd87
HZ
5968 if (bs->stop)
5969 this_action = BPSTAT_WHAT_STOP_SILENT;
5970 else
5971 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5972 break;
5973
628fe4e4
JK
5974 default:
5975 internal_error (__FILE__, __LINE__,
5976 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5977 }
628fe4e4 5978
325fac50 5979 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5980 }
628fe4e4 5981
243a9253
PA
5982 return retval;
5983}
628fe4e4 5984
243a9253
PA
5985void
5986bpstat_run_callbacks (bpstat bs_head)
5987{
5988 bpstat bs;
628fe4e4 5989
0e30163f
JK
5990 for (bs = bs_head; bs != NULL; bs = bs->next)
5991 {
5992 struct breakpoint *b = bs->breakpoint_at;
5993
5994 if (b == NULL)
5995 continue;
5996 switch (b->type)
5997 {
243a9253
PA
5998 case bp_jit_event:
5999 handle_jit_event ();
6000 break;
0e30163f
JK
6001 case bp_gnu_ifunc_resolver:
6002 gnu_ifunc_resolver_stop (b);
6003 break;
6004 case bp_gnu_ifunc_resolver_return:
6005 gnu_ifunc_resolver_return_stop (b);
6006 break;
6007 }
6008 }
c906108c
SS
6009}
6010
6011/* Nonzero if we should step constantly (e.g. watchpoints on machines
6012 without hardware support). This isn't related to a specific bpstat,
6013 just to things like whether watchpoints are set. */
6014
c5aa993b 6015int
fba45db2 6016bpstat_should_step (void)
c906108c
SS
6017{
6018 struct breakpoint *b;
cc59ec59 6019
c906108c 6020 ALL_BREAKPOINTS (b)
717a8278 6021 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 6022 return 1;
c906108c
SS
6023 return 0;
6024}
6025
67822962
PA
6026int
6027bpstat_causes_stop (bpstat bs)
6028{
6029 for (; bs != NULL; bs = bs->next)
6030 if (bs->stop)
6031 return 1;
6032
6033 return 0;
6034}
6035
c906108c 6036\f
c5aa993b 6037
170b53b2
UW
6038/* Compute a string of spaces suitable to indent the next line
6039 so it starts at the position corresponding to the table column
6040 named COL_NAME in the currently active table of UIOUT. */
6041
6042static char *
6043wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6044{
6045 static char wrap_indent[80];
6046 int i, total_width, width, align;
c5209615 6047 const char *text;
170b53b2
UW
6048
6049 total_width = 0;
112e8700 6050 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
6051 {
6052 if (strcmp (text, col_name) == 0)
6053 {
6054 gdb_assert (total_width < sizeof wrap_indent);
6055 memset (wrap_indent, ' ', total_width);
6056 wrap_indent[total_width] = 0;
6057
6058 return wrap_indent;
6059 }
6060
6061 total_width += width + 1;
6062 }
6063
6064 return NULL;
6065}
6066
b775012e
LM
6067/* Determine if the locations of this breakpoint will have their conditions
6068 evaluated by the target, host or a mix of both. Returns the following:
6069
6070 "host": Host evals condition.
6071 "host or target": Host or Target evals condition.
6072 "target": Target evals condition.
6073*/
6074
6075static const char *
6076bp_condition_evaluator (struct breakpoint *b)
6077{
6078 struct bp_location *bl;
6079 char host_evals = 0;
6080 char target_evals = 0;
6081
6082 if (!b)
6083 return NULL;
6084
6085 if (!is_breakpoint (b))
6086 return NULL;
6087
6088 if (gdb_evaluates_breakpoint_condition_p ()
6089 || !target_supports_evaluation_of_breakpoint_conditions ())
6090 return condition_evaluation_host;
6091
6092 for (bl = b->loc; bl; bl = bl->next)
6093 {
6094 if (bl->cond_bytecode)
6095 target_evals++;
6096 else
6097 host_evals++;
6098 }
6099
6100 if (host_evals && target_evals)
6101 return condition_evaluation_both;
6102 else if (target_evals)
6103 return condition_evaluation_target;
6104 else
6105 return condition_evaluation_host;
6106}
6107
6108/* Determine the breakpoint location's condition evaluator. This is
6109 similar to bp_condition_evaluator, but for locations. */
6110
6111static const char *
6112bp_location_condition_evaluator (struct bp_location *bl)
6113{
6114 if (bl && !is_breakpoint (bl->owner))
6115 return NULL;
6116
6117 if (gdb_evaluates_breakpoint_condition_p ()
6118 || !target_supports_evaluation_of_breakpoint_conditions ())
6119 return condition_evaluation_host;
6120
6121 if (bl && bl->cond_bytecode)
6122 return condition_evaluation_target;
6123 else
6124 return condition_evaluation_host;
6125}
6126
859825b8
JK
6127/* Print the LOC location out of the list of B->LOC locations. */
6128
170b53b2
UW
6129static void
6130print_breakpoint_location (struct breakpoint *b,
6131 struct bp_location *loc)
0d381245 6132{
79a45e25 6133 struct ui_out *uiout = current_uiout;
5ed8105e
PA
6134
6135 scoped_restore_current_program_space restore_pspace;
6c95b8df 6136
859825b8
JK
6137 if (loc != NULL && loc->shlib_disabled)
6138 loc = NULL;
6139
6c95b8df
PA
6140 if (loc != NULL)
6141 set_current_program_space (loc->pspace);
6142
56435ebe 6143 if (b->display_canonical)
d28cd78a 6144 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 6145 else if (loc && loc->symtab)
0d381245
VP
6146 {
6147 struct symbol *sym
6148 = find_pc_sect_function (loc->address, loc->section);
6149 if (sym)
6150 {
112e8700
SM
6151 uiout->text ("in ");
6152 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6153 uiout->text (" ");
6154 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6155 uiout->text ("at ");
0d381245 6156 }
112e8700 6157 uiout->field_string ("file",
05cba821 6158 symtab_to_filename_for_display (loc->symtab));
112e8700 6159 uiout->text (":");
05cba821 6160
112e8700
SM
6161 if (uiout->is_mi_like_p ())
6162 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 6163
112e8700 6164 uiout->field_int ("line", loc->line_number);
0d381245 6165 }
859825b8 6166 else if (loc)
0d381245 6167 {
d7e74731 6168 string_file stb;
170b53b2 6169
d7e74731 6170 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 6171 demangle, "");
112e8700 6172 uiout->field_stream ("at", stb);
0d381245 6173 }
859825b8 6174 else
f00aae0f 6175 {
d28cd78a
TT
6176 uiout->field_string ("pending",
6177 event_location_to_string (b->location.get ()));
f00aae0f
KS
6178 /* If extra_string is available, it could be holding a condition
6179 or dprintf arguments. In either case, make sure it is printed,
6180 too, but only for non-MI streams. */
112e8700 6181 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
6182 {
6183 if (b->type == bp_dprintf)
112e8700 6184 uiout->text (",");
f00aae0f 6185 else
112e8700
SM
6186 uiout->text (" ");
6187 uiout->text (b->extra_string);
f00aae0f
KS
6188 }
6189 }
6c95b8df 6190
b775012e
LM
6191 if (loc && is_breakpoint (b)
6192 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6193 && bp_condition_evaluator (b) == condition_evaluation_both)
6194 {
112e8700
SM
6195 uiout->text (" (");
6196 uiout->field_string ("evaluated-by",
b775012e 6197 bp_location_condition_evaluator (loc));
112e8700 6198 uiout->text (")");
b775012e 6199 }
0d381245
VP
6200}
6201
269b11a2
PA
6202static const char *
6203bptype_string (enum bptype type)
c906108c 6204{
c4093a6a
JM
6205 struct ep_type_description
6206 {
6207 enum bptype type;
a121b7c1 6208 const char *description;
c4093a6a
JM
6209 };
6210 static struct ep_type_description bptypes[] =
c906108c 6211 {
c5aa993b
JM
6212 {bp_none, "?deleted?"},
6213 {bp_breakpoint, "breakpoint"},
c906108c 6214 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 6215 {bp_single_step, "sw single-step"},
c5aa993b
JM
6216 {bp_until, "until"},
6217 {bp_finish, "finish"},
6218 {bp_watchpoint, "watchpoint"},
c906108c 6219 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
6220 {bp_read_watchpoint, "read watchpoint"},
6221 {bp_access_watchpoint, "acc watchpoint"},
6222 {bp_longjmp, "longjmp"},
6223 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 6224 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
6225 {bp_exception, "exception"},
6226 {bp_exception_resume, "exception resume"},
c5aa993b 6227 {bp_step_resume, "step resume"},
2c03e5be 6228 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
6229 {bp_watchpoint_scope, "watchpoint scope"},
6230 {bp_call_dummy, "call dummy"},
aa7d318d 6231 {bp_std_terminate, "std::terminate"},
c5aa993b 6232 {bp_shlib_event, "shlib events"},
c4093a6a 6233 {bp_thread_event, "thread events"},
1900040c 6234 {bp_overlay_event, "overlay events"},
0fd8e87f 6235 {bp_longjmp_master, "longjmp master"},
aa7d318d 6236 {bp_std_terminate_master, "std::terminate master"},
186c406b 6237 {bp_exception_master, "exception master"},
ce78b96d 6238 {bp_catchpoint, "catchpoint"},
1042e4c0 6239 {bp_tracepoint, "tracepoint"},
7a697b8d 6240 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 6241 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 6242 {bp_dprintf, "dprintf"},
4efc6507 6243 {bp_jit_event, "jit events"},
0e30163f
JK
6244 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6245 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 6246 };
269b11a2
PA
6247
6248 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6249 || ((int) type != bptypes[(int) type].type))
6250 internal_error (__FILE__, __LINE__,
6251 _("bptypes table does not describe type #%d."),
6252 (int) type);
6253
6254 return bptypes[(int) type].description;
6255}
6256
998580f1
MK
6257/* For MI, output a field named 'thread-groups' with a list as the value.
6258 For CLI, prefix the list with the string 'inf'. */
6259
6260static void
6261output_thread_groups (struct ui_out *uiout,
6262 const char *field_name,
6263 VEC(int) *inf_num,
6264 int mi_only)
6265{
112e8700 6266 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
6267 int inf;
6268 int i;
6269
6270 /* For backward compatibility, don't display inferiors in CLI unless
6271 there are several. Always display them for MI. */
6272 if (!is_mi && mi_only)
6273 return;
6274
10f489e5 6275 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6276
998580f1
MK
6277 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6278 {
6279 if (is_mi)
6280 {
6281 char mi_group[10];
6282
6283 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
112e8700 6284 uiout->field_string (NULL, mi_group);
998580f1
MK
6285 }
6286 else
6287 {
6288 if (i == 0)
112e8700 6289 uiout->text (" inf ");
998580f1 6290 else
112e8700 6291 uiout->text (", ");
998580f1 6292
112e8700 6293 uiout->text (plongest (inf));
998580f1
MK
6294 }
6295 }
998580f1
MK
6296}
6297
269b11a2
PA
6298/* Print B to gdb_stdout. */
6299
6300static void
6301print_one_breakpoint_location (struct breakpoint *b,
6302 struct bp_location *loc,
6303 int loc_number,
6304 struct bp_location **last_loc,
269b11a2
PA
6305 int allflag)
6306{
6307 struct command_line *l;
c2c6d25f 6308 static char bpenables[] = "nynny";
c906108c 6309
79a45e25 6310 struct ui_out *uiout = current_uiout;
0d381245
VP
6311 int header_of_multiple = 0;
6312 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6313 struct value_print_options opts;
6314
6315 get_user_print_options (&opts);
0d381245
VP
6316
6317 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6318 /* See comment in print_one_breakpoint concerning treatment of
6319 breakpoints with single disabled location. */
0d381245
VP
6320 if (loc == NULL
6321 && (b->loc != NULL
6322 && (b->loc->next != NULL || !b->loc->enabled)))
6323 header_of_multiple = 1;
6324 if (loc == NULL)
6325 loc = b->loc;
6326
c4093a6a
JM
6327 annotate_record ();
6328
6329 /* 1 */
6330 annotate_field (0);
0d381245
VP
6331 if (part_of_multiple)
6332 {
6333 char *formatted;
0c6773c1 6334 formatted = xstrprintf ("%d.%d", b->number, loc_number);
112e8700 6335 uiout->field_string ("number", formatted);
0d381245
VP
6336 xfree (formatted);
6337 }
6338 else
6339 {
112e8700 6340 uiout->field_int ("number", b->number);
0d381245 6341 }
c4093a6a
JM
6342
6343 /* 2 */
6344 annotate_field (1);
0d381245 6345 if (part_of_multiple)
112e8700 6346 uiout->field_skip ("type");
269b11a2 6347 else
112e8700 6348 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6349
6350 /* 3 */
6351 annotate_field (2);
0d381245 6352 if (part_of_multiple)
112e8700 6353 uiout->field_skip ("disp");
0d381245 6354 else
112e8700 6355 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6356
c4093a6a
JM
6357
6358 /* 4 */
6359 annotate_field (3);
0d381245 6360 if (part_of_multiple)
112e8700 6361 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6362 else
112e8700
SM
6363 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6364 uiout->spaces (2);
0d381245 6365
c4093a6a
JM
6366
6367 /* 5 and 6 */
3086aeae 6368 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6369 {
4a64f543
MS
6370 /* Although the print_one can possibly print all locations,
6371 calling it here is not likely to get any nice result. So,
6372 make sure there's just one location. */
0d381245 6373 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6374 b->ops->print_one (b, last_loc);
0d381245 6375 }
3086aeae
DJ
6376 else
6377 switch (b->type)
6378 {
6379 case bp_none:
6380 internal_error (__FILE__, __LINE__,
e2e0b3e5 6381 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6382 break;
c906108c 6383
3086aeae
DJ
6384 case bp_watchpoint:
6385 case bp_hardware_watchpoint:
6386 case bp_read_watchpoint:
6387 case bp_access_watchpoint:
3a5c3e22
PA
6388 {
6389 struct watchpoint *w = (struct watchpoint *) b;
6390
6391 /* Field 4, the address, is omitted (which makes the columns
6392 not line up too nicely with the headers, but the effect
6393 is relatively readable). */
6394 if (opts.addressprint)
112e8700 6395 uiout->field_skip ("addr");
3a5c3e22 6396 annotate_field (5);
112e8700 6397 uiout->field_string ("what", w->exp_string);
3a5c3e22 6398 }
3086aeae
DJ
6399 break;
6400
3086aeae
DJ
6401 case bp_breakpoint:
6402 case bp_hardware_breakpoint:
7c16b83e 6403 case bp_single_step:
3086aeae
DJ
6404 case bp_until:
6405 case bp_finish:
6406 case bp_longjmp:
6407 case bp_longjmp_resume:
e2e4d78b 6408 case bp_longjmp_call_dummy:
186c406b
TT
6409 case bp_exception:
6410 case bp_exception_resume:
3086aeae 6411 case bp_step_resume:
2c03e5be 6412 case bp_hp_step_resume:
3086aeae
DJ
6413 case bp_watchpoint_scope:
6414 case bp_call_dummy:
aa7d318d 6415 case bp_std_terminate:
3086aeae
DJ
6416 case bp_shlib_event:
6417 case bp_thread_event:
6418 case bp_overlay_event:
0fd8e87f 6419 case bp_longjmp_master:
aa7d318d 6420 case bp_std_terminate_master:
186c406b 6421 case bp_exception_master:
1042e4c0 6422 case bp_tracepoint:
7a697b8d 6423 case bp_fast_tracepoint:
0fb4aa4b 6424 case bp_static_tracepoint:
e7e0cddf 6425 case bp_dprintf:
4efc6507 6426 case bp_jit_event:
0e30163f
JK
6427 case bp_gnu_ifunc_resolver:
6428 case bp_gnu_ifunc_resolver_return:
79a45b7d 6429 if (opts.addressprint)
3086aeae
DJ
6430 {
6431 annotate_field (4);
54e52265 6432 if (header_of_multiple)
112e8700 6433 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6434 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6435 uiout->field_string ("addr", "<PENDING>");
0101ce28 6436 else
112e8700 6437 uiout->field_core_addr ("addr",
5af949e3 6438 loc->gdbarch, loc->address);
3086aeae
DJ
6439 }
6440 annotate_field (5);
0d381245 6441 if (!header_of_multiple)
170b53b2 6442 print_breakpoint_location (b, loc);
0d381245 6443 if (b->loc)
a6d9a66e 6444 *last_loc = b->loc;
3086aeae
DJ
6445 break;
6446 }
c906108c 6447
6c95b8df 6448
998580f1 6449 if (loc != NULL && !header_of_multiple)
6c95b8df
PA
6450 {
6451 struct inferior *inf;
998580f1
MK
6452 VEC(int) *inf_num = NULL;
6453 int mi_only = 1;
6c95b8df 6454
998580f1 6455 ALL_INFERIORS (inf)
6c95b8df
PA
6456 {
6457 if (inf->pspace == loc->pspace)
998580f1 6458 VEC_safe_push (int, inf_num, inf->num);
6c95b8df 6459 }
998580f1
MK
6460
6461 /* For backward compatibility, don't display inferiors in CLI unless
6462 there are several. Always display for MI. */
6463 if (allflag
6464 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6465 && (number_of_program_spaces () > 1
6466 || number_of_inferiors () > 1)
6467 /* LOC is for existing B, it cannot be in
6468 moribund_locations and thus having NULL OWNER. */
6469 && loc->owner->type != bp_catchpoint))
6470 mi_only = 0;
6471 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6472 VEC_free (int, inf_num);
6c95b8df
PA
6473 }
6474
4a306c9a 6475 if (!part_of_multiple)
c4093a6a 6476 {
4a306c9a
JB
6477 if (b->thread != -1)
6478 {
6479 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6480 "stop only in" line a little further down. */
112e8700
SM
6481 uiout->text (" thread ");
6482 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6483 }
6484 else if (b->task != 0)
6485 {
112e8700
SM
6486 uiout->text (" task ");
6487 uiout->field_int ("task", b->task);
4a306c9a 6488 }
c4093a6a 6489 }
f1310107 6490
112e8700 6491 uiout->text ("\n");
f1310107 6492
348d480f 6493 if (!part_of_multiple)
f1310107
TJB
6494 b->ops->print_one_detail (b, uiout);
6495
0d381245 6496 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6497 {
6498 annotate_field (6);
112e8700 6499 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6500 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6501 the frame ID. */
112e8700 6502 uiout->field_core_addr ("frame",
5af949e3 6503 b->gdbarch, b->frame_id.stack_addr);
112e8700 6504 uiout->text ("\n");
c4093a6a
JM
6505 }
6506
28010a5d 6507 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6508 {
6509 annotate_field (7);
d77f58be 6510 if (is_tracepoint (b))
112e8700 6511 uiout->text ("\ttrace only if ");
1042e4c0 6512 else
112e8700
SM
6513 uiout->text ("\tstop only if ");
6514 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6515
6516 /* Print whether the target is doing the breakpoint's condition
6517 evaluation. If GDB is doing the evaluation, don't print anything. */
6518 if (is_breakpoint (b)
6519 && breakpoint_condition_evaluation_mode ()
6520 == condition_evaluation_target)
6521 {
112e8700
SM
6522 uiout->text (" (");
6523 uiout->field_string ("evaluated-by",
b775012e 6524 bp_condition_evaluator (b));
112e8700 6525 uiout->text (" evals)");
b775012e 6526 }
112e8700 6527 uiout->text ("\n");
0101ce28
JJ
6528 }
6529
0d381245 6530 if (!part_of_multiple && b->thread != -1)
c4093a6a 6531 {
4a64f543 6532 /* FIXME should make an annotation for this. */
112e8700
SM
6533 uiout->text ("\tstop only in thread ");
6534 if (uiout->is_mi_like_p ())
6535 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6536 else
6537 {
6538 struct thread_info *thr = find_thread_global_id (b->thread);
6539
112e8700 6540 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6541 }
112e8700 6542 uiout->text ("\n");
c4093a6a
JM
6543 }
6544
556ec64d
YQ
6545 if (!part_of_multiple)
6546 {
6547 if (b->hit_count)
31f56a27
YQ
6548 {
6549 /* FIXME should make an annotation for this. */
6550 if (is_catchpoint (b))
112e8700 6551 uiout->text ("\tcatchpoint");
31f56a27 6552 else if (is_tracepoint (b))
112e8700 6553 uiout->text ("\ttracepoint");
31f56a27 6554 else
112e8700
SM
6555 uiout->text ("\tbreakpoint");
6556 uiout->text (" already hit ");
6557 uiout->field_int ("times", b->hit_count);
31f56a27 6558 if (b->hit_count == 1)
112e8700 6559 uiout->text (" time\n");
31f56a27 6560 else
112e8700 6561 uiout->text (" times\n");
31f56a27 6562 }
556ec64d
YQ
6563 else
6564 {
31f56a27 6565 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6566 if (uiout->is_mi_like_p ())
6567 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6568 }
6569 }
8b93c638 6570
0d381245 6571 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6572 {
6573 annotate_field (8);
112e8700
SM
6574 uiout->text ("\tignore next ");
6575 uiout->field_int ("ignore", b->ignore_count);
6576 uiout->text (" hits\n");
c4093a6a 6577 }
059fb39f 6578
816338b5
SS
6579 /* Note that an enable count of 1 corresponds to "enable once"
6580 behavior, which is reported by the combination of enablement and
6581 disposition, so we don't need to mention it here. */
6582 if (!part_of_multiple && b->enable_count > 1)
6583 {
6584 annotate_field (8);
112e8700 6585 uiout->text ("\tdisable after ");
816338b5
SS
6586 /* Tweak the wording to clarify that ignore and enable counts
6587 are distinct, and have additive effect. */
6588 if (b->ignore_count)
112e8700 6589 uiout->text ("additional ");
816338b5 6590 else
112e8700
SM
6591 uiout->text ("next ");
6592 uiout->field_int ("enable", b->enable_count);
6593 uiout->text (" hits\n");
816338b5
SS
6594 }
6595
f196051f
SS
6596 if (!part_of_multiple && is_tracepoint (b))
6597 {
6598 struct tracepoint *tp = (struct tracepoint *) b;
6599
6600 if (tp->traceframe_usage)
6601 {
112e8700
SM
6602 uiout->text ("\ttrace buffer usage ");
6603 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6604 uiout->text (" bytes\n");
f196051f
SS
6605 }
6606 }
d3ce09f5 6607
9add0f1b 6608 l = b->commands ? b->commands->commands : NULL;
059fb39f 6609 if (!part_of_multiple && l)
c4093a6a
JM
6610 {
6611 annotate_field (9);
2e783024 6612 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6613 print_command_lines (uiout, l, 4);
c4093a6a 6614 }
d24317b4 6615
d9b3f62e 6616 if (is_tracepoint (b))
1042e4c0 6617 {
d9b3f62e
PA
6618 struct tracepoint *t = (struct tracepoint *) b;
6619
6620 if (!part_of_multiple && t->pass_count)
6621 {
6622 annotate_field (10);
112e8700
SM
6623 uiout->text ("\tpass count ");
6624 uiout->field_int ("pass", t->pass_count);
6625 uiout->text (" \n");
d9b3f62e 6626 }
f2a8bc8a
YQ
6627
6628 /* Don't display it when tracepoint or tracepoint location is
6629 pending. */
6630 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6631 {
6632 annotate_field (11);
6633
112e8700
SM
6634 if (uiout->is_mi_like_p ())
6635 uiout->field_string ("installed",
f2a8bc8a
YQ
6636 loc->inserted ? "y" : "n");
6637 else
6638 {
6639 if (loc->inserted)
112e8700 6640 uiout->text ("\t");
f2a8bc8a 6641 else
112e8700
SM
6642 uiout->text ("\tnot ");
6643 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6644 }
6645 }
1042e4c0
SS
6646 }
6647
112e8700 6648 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6649 {
3a5c3e22
PA
6650 if (is_watchpoint (b))
6651 {
6652 struct watchpoint *w = (struct watchpoint *) b;
6653
112e8700 6654 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6655 }
f00aae0f 6656 else if (b->location != NULL
d28cd78a 6657 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6658 uiout->field_string ("original-location",
d28cd78a 6659 event_location_to_string (b->location.get ()));
d24317b4 6660 }
c4093a6a 6661}
c5aa993b 6662
0d381245
VP
6663static void
6664print_one_breakpoint (struct breakpoint *b,
4a64f543 6665 struct bp_location **last_loc,
6c95b8df 6666 int allflag)
0d381245 6667{
79a45e25 6668 struct ui_out *uiout = current_uiout;
8d3788bd 6669
2e783024
TT
6670 {
6671 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
8d3788bd 6672
2e783024
TT
6673 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6674 }
0d381245
VP
6675
6676 /* If this breakpoint has custom print function,
6677 it's already printed. Otherwise, print individual
6678 locations, if any. */
6679 if (b->ops == NULL || b->ops->print_one == NULL)
6680 {
4a64f543
MS
6681 /* If breakpoint has a single location that is disabled, we
6682 print it as if it had several locations, since otherwise it's
6683 hard to represent "breakpoint enabled, location disabled"
6684 situation.
6685
6686 Note that while hardware watchpoints have several locations
a3be7890 6687 internally, that's not a property exposed to user. */
0d381245 6688 if (b->loc
a5606eee 6689 && !is_hardware_watchpoint (b)
8d3788bd 6690 && (b->loc->next || !b->loc->enabled))
0d381245
VP
6691 {
6692 struct bp_location *loc;
6693 int n = 1;
8d3788bd 6694
0d381245 6695 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd 6696 {
2e783024 6697 ui_out_emit_tuple tuple_emitter (uiout, NULL);
8d3788bd 6698 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6699 }
0d381245
VP
6700 }
6701 }
6702}
6703
a6d9a66e
UW
6704static int
6705breakpoint_address_bits (struct breakpoint *b)
6706{
6707 int print_address_bits = 0;
6708 struct bp_location *loc;
6709
c6d81124
PA
6710 /* Software watchpoints that aren't watching memory don't have an
6711 address to print. */
6712 if (is_no_memory_software_watchpoint (b))
6713 return 0;
6714
a6d9a66e
UW
6715 for (loc = b->loc; loc; loc = loc->next)
6716 {
c7437ca6
PA
6717 int addr_bit;
6718
c7437ca6 6719 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6720 if (addr_bit > print_address_bits)
6721 print_address_bits = addr_bit;
6722 }
6723
6724 return print_address_bits;
6725}
0d381245 6726
c4093a6a
JM
6727struct captured_breakpoint_query_args
6728 {
6729 int bnum;
6730 };
c5aa993b 6731
c4093a6a 6732static int
2b65245e 6733do_captured_breakpoint_query (struct ui_out *uiout, void *data)
c4093a6a 6734{
9a3c8263
SM
6735 struct captured_breakpoint_query_args *args
6736 = (struct captured_breakpoint_query_args *) data;
52f0bd74 6737 struct breakpoint *b;
a6d9a66e 6738 struct bp_location *dummy_loc = NULL;
cc59ec59 6739
c4093a6a
JM
6740 ALL_BREAKPOINTS (b)
6741 {
6742 if (args->bnum == b->number)
c5aa993b 6743 {
12c5a436 6744 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6745 return GDB_RC_OK;
c5aa993b 6746 }
c4093a6a
JM
6747 }
6748 return GDB_RC_NONE;
6749}
c5aa993b 6750
c4093a6a 6751enum gdb_rc
4a64f543
MS
6752gdb_breakpoint_query (struct ui_out *uiout, int bnum,
6753 char **error_message)
c4093a6a
JM
6754{
6755 struct captured_breakpoint_query_args args;
cc59ec59 6756
c4093a6a
JM
6757 args.bnum = bnum;
6758 /* For the moment we don't trust print_one_breakpoint() to not throw
4a64f543 6759 an error. */
b0b13bb4
DJ
6760 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6761 error_message, RETURN_MASK_ALL) < 0)
6762 return GDB_RC_FAIL;
6763 else
6764 return GDB_RC_OK;
c4093a6a 6765}
c5aa993b 6766
09d682a4
TT
6767/* Return true if this breakpoint was set by the user, false if it is
6768 internal or momentary. */
6769
6770int
6771user_breakpoint_p (struct breakpoint *b)
6772{
46c6471b 6773 return b->number > 0;
09d682a4
TT
6774}
6775
93daf339
TT
6776/* See breakpoint.h. */
6777
6778int
6779pending_breakpoint_p (struct breakpoint *b)
6780{
6781 return b->loc == NULL;
6782}
6783
7f3b0473 6784/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6785 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6786 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6787 FILTER is non-NULL, call it on each breakpoint and only include the
6788 ones for which it returns non-zero. Return the total number of
6789 breakpoints listed. */
c906108c 6790
d77f58be 6791static int
e5a67952 6792breakpoint_1 (char *args, int allflag,
4a64f543 6793 int (*filter) (const struct breakpoint *))
c4093a6a 6794{
52f0bd74 6795 struct breakpoint *b;
a6d9a66e 6796 struct bp_location *last_loc = NULL;
7f3b0473 6797 int nr_printable_breakpoints;
79a45b7d 6798 struct value_print_options opts;
a6d9a66e 6799 int print_address_bits = 0;
269b11a2 6800 int print_type_col_width = 14;
79a45e25 6801 struct ui_out *uiout = current_uiout;
269b11a2 6802
79a45b7d
TT
6803 get_user_print_options (&opts);
6804
4a64f543
MS
6805 /* Compute the number of rows in the table, as well as the size
6806 required for address fields. */
7f3b0473
AC
6807 nr_printable_breakpoints = 0;
6808 ALL_BREAKPOINTS (b)
e5a67952
MS
6809 {
6810 /* If we have a filter, only list the breakpoints it accepts. */
6811 if (filter && !filter (b))
6812 continue;
6813
6814 /* If we have an "args" string, it is a list of breakpoints to
6815 accept. Skip the others. */
6816 if (args != NULL && *args != '\0')
6817 {
6818 if (allflag && parse_and_eval_long (args) != b->number)
6819 continue;
6820 if (!allflag && !number_is_in_list (args, b->number))
6821 continue;
6822 }
269b11a2 6823
e5a67952
MS
6824 if (allflag || user_breakpoint_p (b))
6825 {
6826 int addr_bit, type_len;
a6d9a66e 6827
e5a67952
MS
6828 addr_bit = breakpoint_address_bits (b);
6829 if (addr_bit > print_address_bits)
6830 print_address_bits = addr_bit;
269b11a2 6831
e5a67952
MS
6832 type_len = strlen (bptype_string (b->type));
6833 if (type_len > print_type_col_width)
6834 print_type_col_width = type_len;
6835
6836 nr_printable_breakpoints++;
6837 }
6838 }
7f3b0473 6839
4a2b031d
TT
6840 {
6841 ui_out_emit_table table_emitter (uiout,
6842 opts.addressprint ? 6 : 5,
6843 nr_printable_breakpoints,
6844 "BreakpointTable");
6845
6846 if (nr_printable_breakpoints > 0)
6847 annotate_breakpoints_headers ();
6848 if (nr_printable_breakpoints > 0)
6849 annotate_field (0);
6850 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6851 if (nr_printable_breakpoints > 0)
6852 annotate_field (1);
6853 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6854 if (nr_printable_breakpoints > 0)
6855 annotate_field (2);
6856 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6857 if (nr_printable_breakpoints > 0)
6858 annotate_field (3);
6859 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6860 if (opts.addressprint)
6861 {
6862 if (nr_printable_breakpoints > 0)
6863 annotate_field (4);
6864 if (print_address_bits <= 32)
6865 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6866 else
6867 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6868 }
6869 if (nr_printable_breakpoints > 0)
6870 annotate_field (5);
6871 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6872 uiout->table_body ();
6873 if (nr_printable_breakpoints > 0)
6874 annotate_breakpoints_table ();
6875
6876 ALL_BREAKPOINTS (b)
6877 {
6878 QUIT;
6879 /* If we have a filter, only list the breakpoints it accepts. */
6880 if (filter && !filter (b))
6881 continue;
e5a67952 6882
4a2b031d
TT
6883 /* If we have an "args" string, it is a list of breakpoints to
6884 accept. Skip the others. */
e5a67952 6885
4a2b031d
TT
6886 if (args != NULL && *args != '\0')
6887 {
6888 if (allflag) /* maintenance info breakpoint */
6889 {
6890 if (parse_and_eval_long (args) != b->number)
6891 continue;
6892 }
6893 else /* all others */
6894 {
6895 if (!number_is_in_list (args, b->number))
6896 continue;
6897 }
6898 }
6899 /* We only print out user settable breakpoints unless the
6900 allflag is set. */
6901 if (allflag || user_breakpoint_p (b))
6902 print_one_breakpoint (b, &last_loc, allflag);
6903 }
6904 }
698384cd 6905
7f3b0473 6906 if (nr_printable_breakpoints == 0)
c906108c 6907 {
4a64f543
MS
6908 /* If there's a filter, let the caller decide how to report
6909 empty list. */
d77f58be
SS
6910 if (!filter)
6911 {
e5a67952 6912 if (args == NULL || *args == '\0')
112e8700 6913 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6914 else
112e8700 6915 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6916 args);
d77f58be 6917 }
c906108c
SS
6918 }
6919 else
c4093a6a 6920 {
a6d9a66e
UW
6921 if (last_loc && !server_command)
6922 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6923 }
c906108c 6924
4a64f543 6925 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6926 there have been breakpoints? */
c906108c 6927 annotate_breakpoints_table_end ();
d77f58be
SS
6928
6929 return nr_printable_breakpoints;
c906108c
SS
6930}
6931
ad443146
SS
6932/* Display the value of default-collect in a way that is generally
6933 compatible with the breakpoint list. */
6934
6935static void
6936default_collect_info (void)
6937{
79a45e25
PA
6938 struct ui_out *uiout = current_uiout;
6939
ad443146
SS
6940 /* If it has no value (which is frequently the case), say nothing; a
6941 message like "No default-collect." gets in user's face when it's
6942 not wanted. */
6943 if (!*default_collect)
6944 return;
6945
6946 /* The following phrase lines up nicely with per-tracepoint collect
6947 actions. */
112e8700
SM
6948 uiout->text ("default collect ");
6949 uiout->field_string ("default-collect", default_collect);
6950 uiout->text (" \n");
ad443146
SS
6951}
6952
c906108c 6953static void
11db9430 6954info_breakpoints_command (char *args, int from_tty)
c906108c 6955{
e5a67952 6956 breakpoint_1 (args, 0, NULL);
ad443146
SS
6957
6958 default_collect_info ();
d77f58be
SS
6959}
6960
6961static void
11db9430 6962info_watchpoints_command (char *args, int from_tty)
d77f58be 6963{
e5a67952 6964 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6965 struct ui_out *uiout = current_uiout;
d77f58be
SS
6966
6967 if (num_printed == 0)
6968 {
e5a67952 6969 if (args == NULL || *args == '\0')
112e8700 6970 uiout->message ("No watchpoints.\n");
d77f58be 6971 else
112e8700 6972 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6973 }
c906108c
SS
6974}
6975
7a292a7a 6976static void
e5a67952 6977maintenance_info_breakpoints (char *args, int from_tty)
c906108c 6978{
e5a67952 6979 breakpoint_1 (args, 1, NULL);
ad443146
SS
6980
6981 default_collect_info ();
c906108c
SS
6982}
6983
0d381245 6984static int
714835d5 6985breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6986 struct program_space *pspace,
714835d5 6987 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6988{
6989 struct bp_location *bl = b->loc;
cc59ec59 6990
0d381245
VP
6991 for (; bl; bl = bl->next)
6992 {
6c95b8df
PA
6993 if (bl->pspace == pspace
6994 && bl->address == pc
0d381245
VP
6995 && (!overlay_debugging || bl->section == section))
6996 return 1;
6997 }
6998 return 0;
6999}
7000
672f9b60 7001/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
7002 concerns with logical breakpoints, so we match program spaces, not
7003 address spaces. */
c906108c
SS
7004
7005static void
6c95b8df
PA
7006describe_other_breakpoints (struct gdbarch *gdbarch,
7007 struct program_space *pspace, CORE_ADDR pc,
5af949e3 7008 struct obj_section *section, int thread)
c906108c 7009{
52f0bd74
AC
7010 int others = 0;
7011 struct breakpoint *b;
c906108c
SS
7012
7013 ALL_BREAKPOINTS (b)
672f9b60
KP
7014 others += (user_breakpoint_p (b)
7015 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
7016 if (others > 0)
7017 {
a3f17187
AC
7018 if (others == 1)
7019 printf_filtered (_("Note: breakpoint "));
7020 else /* if (others == ???) */
7021 printf_filtered (_("Note: breakpoints "));
c906108c 7022 ALL_BREAKPOINTS (b)
672f9b60 7023 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
7024 {
7025 others--;
7026 printf_filtered ("%d", b->number);
7027 if (b->thread == -1 && thread != -1)
7028 printf_filtered (" (all threads)");
7029 else if (b->thread != -1)
7030 printf_filtered (" (thread %d)", b->thread);
7031 printf_filtered ("%s%s ",
059fb39f 7032 ((b->enable_state == bp_disabled
f8eba3c6 7033 || b->enable_state == bp_call_disabled)
0d381245 7034 ? " (disabled)"
0d381245
VP
7035 : ""),
7036 (others > 1) ? ","
7037 : ((others == 1) ? " and" : ""));
7038 }
a3f17187 7039 printf_filtered (_("also set at pc "));
5af949e3 7040 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
7041 printf_filtered (".\n");
7042 }
7043}
7044\f
c906108c 7045
e4f237da 7046/* Return true iff it is meaningful to use the address member of
244558af
LM
7047 BPT locations. For some breakpoint types, the locations' address members
7048 are irrelevant and it makes no sense to attempt to compare them to other
7049 addresses (or use them for any other purpose either).
e4f237da 7050
4a64f543 7051 More specifically, each of the following breakpoint types will
244558af 7052 always have a zero valued location address and we don't want to mark
4a64f543 7053 breakpoints of any of these types to be a duplicate of an actual
244558af 7054 breakpoint location at address zero:
e4f237da
KB
7055
7056 bp_watchpoint
2d134ed3
PA
7057 bp_catchpoint
7058
7059*/
e4f237da
KB
7060
7061static int
7062breakpoint_address_is_meaningful (struct breakpoint *bpt)
7063{
7064 enum bptype type = bpt->type;
7065
2d134ed3
PA
7066 return (type != bp_watchpoint && type != bp_catchpoint);
7067}
7068
7069/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7070 true if LOC1 and LOC2 represent the same watchpoint location. */
7071
7072static int
4a64f543
MS
7073watchpoint_locations_match (struct bp_location *loc1,
7074 struct bp_location *loc2)
2d134ed3 7075{
3a5c3e22
PA
7076 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7077 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7078
7079 /* Both of them must exist. */
7080 gdb_assert (w1 != NULL);
7081 gdb_assert (w2 != NULL);
2bdf28a0 7082
4a64f543
MS
7083 /* If the target can evaluate the condition expression in hardware,
7084 then we we need to insert both watchpoints even if they are at
7085 the same place. Otherwise the watchpoint will only trigger when
7086 the condition of whichever watchpoint was inserted evaluates to
7087 true, not giving a chance for GDB to check the condition of the
7088 other watchpoint. */
3a5c3e22 7089 if ((w1->cond_exp
4a64f543
MS
7090 && target_can_accel_watchpoint_condition (loc1->address,
7091 loc1->length,
0cf6dd15 7092 loc1->watchpoint_type,
4d01a485 7093 w1->cond_exp.get ()))
3a5c3e22 7094 || (w2->cond_exp
4a64f543
MS
7095 && target_can_accel_watchpoint_condition (loc2->address,
7096 loc2->length,
0cf6dd15 7097 loc2->watchpoint_type,
4d01a485 7098 w2->cond_exp.get ())))
0cf6dd15
TJB
7099 return 0;
7100
85d721b8
PA
7101 /* Note that this checks the owner's type, not the location's. In
7102 case the target does not support read watchpoints, but does
7103 support access watchpoints, we'll have bp_read_watchpoint
7104 watchpoints with hw_access locations. Those should be considered
7105 duplicates of hw_read locations. The hw_read locations will
7106 become hw_access locations later. */
2d134ed3
PA
7107 return (loc1->owner->type == loc2->owner->type
7108 && loc1->pspace->aspace == loc2->pspace->aspace
7109 && loc1->address == loc2->address
7110 && loc1->length == loc2->length);
e4f237da
KB
7111}
7112
31e77af2 7113/* See breakpoint.h. */
6c95b8df 7114
31e77af2 7115int
6c95b8df
PA
7116breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7117 struct address_space *aspace2, CORE_ADDR addr2)
7118{
f5656ead 7119 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
7120 || aspace1 == aspace2)
7121 && addr1 == addr2);
7122}
7123
f1310107
TJB
7124/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7125 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
7126 matches ASPACE2. On targets that have global breakpoints, the address
7127 space doesn't really matter. */
7128
7129static int
7130breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7131 int len1, struct address_space *aspace2,
7132 CORE_ADDR addr2)
7133{
f5656ead 7134 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
7135 || aspace1 == aspace2)
7136 && addr2 >= addr1 && addr2 < addr1 + len1);
7137}
7138
7139/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
7140 a ranged breakpoint. In most targets, a match happens only if ASPACE
7141 matches the breakpoint's address space. On targets that have global
7142 breakpoints, the address space doesn't really matter. */
7143
7144static int
7145breakpoint_location_address_match (struct bp_location *bl,
7146 struct address_space *aspace,
7147 CORE_ADDR addr)
7148{
7149 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7150 aspace, addr)
7151 || (bl->length
7152 && breakpoint_address_match_range (bl->pspace->aspace,
7153 bl->address, bl->length,
7154 aspace, addr)));
7155}
7156
d35ae833
PA
7157/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7158 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
7159 match happens only if ASPACE matches the breakpoint's address
7160 space. On targets that have global breakpoints, the address space
7161 doesn't really matter. */
7162
7163static int
7164breakpoint_location_address_range_overlap (struct bp_location *bl,
7165 struct address_space *aspace,
7166 CORE_ADDR addr, int len)
7167{
7168 if (gdbarch_has_global_breakpoints (target_gdbarch ())
7169 || bl->pspace->aspace == aspace)
7170 {
7171 int bl_len = bl->length != 0 ? bl->length : 1;
7172
7173 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7174 return 1;
7175 }
7176 return 0;
7177}
7178
1e4d1764
YQ
7179/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7180 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7181 true, otherwise returns false. */
7182
7183static int
7184tracepoint_locations_match (struct bp_location *loc1,
7185 struct bp_location *loc2)
7186{
7187 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7188 /* Since tracepoint locations are never duplicated with others', tracepoint
7189 locations at the same address of different tracepoints are regarded as
7190 different locations. */
7191 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7192 else
7193 return 0;
7194}
7195
2d134ed3
PA
7196/* Assuming LOC1 and LOC2's types' have meaningful target addresses
7197 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7198 represent the same location. */
7199
7200static int
4a64f543
MS
7201breakpoint_locations_match (struct bp_location *loc1,
7202 struct bp_location *loc2)
2d134ed3 7203{
2bdf28a0
JK
7204 int hw_point1, hw_point2;
7205
7206 /* Both of them must not be in moribund_locations. */
7207 gdb_assert (loc1->owner != NULL);
7208 gdb_assert (loc2->owner != NULL);
7209
7210 hw_point1 = is_hardware_watchpoint (loc1->owner);
7211 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
7212
7213 if (hw_point1 != hw_point2)
7214 return 0;
7215 else if (hw_point1)
7216 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
7217 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7218 return tracepoint_locations_match (loc1, loc2);
2d134ed3 7219 else
f1310107
TJB
7220 /* We compare bp_location.length in order to cover ranged breakpoints. */
7221 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7222 loc2->pspace->aspace, loc2->address)
7223 && loc1->length == loc2->length);
2d134ed3
PA
7224}
7225
76897487
KB
7226static void
7227breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7228 int bnum, int have_bnum)
7229{
f63fbe86
MS
7230 /* The longest string possibly returned by hex_string_custom
7231 is 50 chars. These must be at least that big for safety. */
7232 char astr1[64];
7233 char astr2[64];
76897487 7234
bb599908
PH
7235 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7236 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 7237 if (have_bnum)
8a3fe4f8 7238 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
7239 bnum, astr1, astr2);
7240 else
8a3fe4f8 7241 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
7242}
7243
4a64f543
MS
7244/* Adjust a breakpoint's address to account for architectural
7245 constraints on breakpoint placement. Return the adjusted address.
7246 Note: Very few targets require this kind of adjustment. For most
7247 targets, this function is simply the identity function. */
76897487
KB
7248
7249static CORE_ADDR
a6d9a66e
UW
7250adjust_breakpoint_address (struct gdbarch *gdbarch,
7251 CORE_ADDR bpaddr, enum bptype bptype)
76897487 7252{
a6d9a66e 7253 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
76897487
KB
7254 {
7255 /* Very few targets need any kind of breakpoint adjustment. */
7256 return bpaddr;
7257 }
88f7da05
KB
7258 else if (bptype == bp_watchpoint
7259 || bptype == bp_hardware_watchpoint
7260 || bptype == bp_read_watchpoint
7261 || bptype == bp_access_watchpoint
fe798b75 7262 || bptype == bp_catchpoint)
88f7da05
KB
7263 {
7264 /* Watchpoints and the various bp_catch_* eventpoints should not
7265 have their addresses modified. */
7266 return bpaddr;
7267 }
7c16b83e
PA
7268 else if (bptype == bp_single_step)
7269 {
7270 /* Single-step breakpoints should not have their addresses
7271 modified. If there's any architectural constrain that
7272 applies to this address, then it should have already been
7273 taken into account when the breakpoint was created in the
7274 first place. If we didn't do this, stepping through e.g.,
7275 Thumb-2 IT blocks would break. */
7276 return bpaddr;
7277 }
76897487
KB
7278 else
7279 {
7280 CORE_ADDR adjusted_bpaddr;
7281
7282 /* Some targets have architectural constraints on the placement
7283 of breakpoint instructions. Obtain the adjusted address. */
a6d9a66e 7284 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
76897487
KB
7285
7286 /* An adjusted breakpoint address can significantly alter
7287 a user's expectations. Print a warning if an adjustment
7288 is required. */
7289 if (adjusted_bpaddr != bpaddr)
7290 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7291
7292 return adjusted_bpaddr;
7293 }
7294}
7295
5625a286 7296bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7cc221ef 7297{
5625a286 7298 bp_location *loc = this;
7cc221ef 7299
348d480f
PA
7300 gdb_assert (ops != NULL);
7301
28010a5d
PA
7302 loc->ops = ops;
7303 loc->owner = owner;
b775012e 7304 loc->cond_bytecode = NULL;
0d381245
VP
7305 loc->shlib_disabled = 0;
7306 loc->enabled = 1;
e049a4b5 7307
28010a5d 7308 switch (owner->type)
e049a4b5
DJ
7309 {
7310 case bp_breakpoint:
7c16b83e 7311 case bp_single_step:
e049a4b5
DJ
7312 case bp_until:
7313 case bp_finish:
7314 case bp_longjmp:
7315 case bp_longjmp_resume:
e2e4d78b 7316 case bp_longjmp_call_dummy:
186c406b
TT
7317 case bp_exception:
7318 case bp_exception_resume:
e049a4b5 7319 case bp_step_resume:
2c03e5be 7320 case bp_hp_step_resume:
e049a4b5
DJ
7321 case bp_watchpoint_scope:
7322 case bp_call_dummy:
aa7d318d 7323 case bp_std_terminate:
e049a4b5
DJ
7324 case bp_shlib_event:
7325 case bp_thread_event:
7326 case bp_overlay_event:
4efc6507 7327 case bp_jit_event:
0fd8e87f 7328 case bp_longjmp_master:
aa7d318d 7329 case bp_std_terminate_master:
186c406b 7330 case bp_exception_master:
0e30163f
JK
7331 case bp_gnu_ifunc_resolver:
7332 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7333 case bp_dprintf:
e049a4b5 7334 loc->loc_type = bp_loc_software_breakpoint;
b775012e 7335 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7336 break;
7337 case bp_hardware_breakpoint:
7338 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 7339 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7340 break;
7341 case bp_hardware_watchpoint:
7342 case bp_read_watchpoint:
7343 case bp_access_watchpoint:
7344 loc->loc_type = bp_loc_hardware_watchpoint;
7345 break;
7346 case bp_watchpoint:
ce78b96d 7347 case bp_catchpoint:
15c3d785
PA
7348 case bp_tracepoint:
7349 case bp_fast_tracepoint:
0fb4aa4b 7350 case bp_static_tracepoint:
e049a4b5
DJ
7351 loc->loc_type = bp_loc_other;
7352 break;
7353 default:
e2e0b3e5 7354 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7355 }
7356
f431efe5 7357 loc->refc = 1;
28010a5d
PA
7358}
7359
7360/* Allocate a struct bp_location. */
7361
7362static struct bp_location *
7363allocate_bp_location (struct breakpoint *bpt)
7364{
348d480f
PA
7365 return bpt->ops->allocate_location (bpt);
7366}
7cc221ef 7367
f431efe5
PA
7368static void
7369free_bp_location (struct bp_location *loc)
fe3f5fa8 7370{
348d480f 7371 loc->ops->dtor (loc);
4d01a485 7372 delete loc;
fe3f5fa8
VP
7373}
7374
f431efe5
PA
7375/* Increment reference count. */
7376
7377static void
7378incref_bp_location (struct bp_location *bl)
7379{
7380 ++bl->refc;
7381}
7382
7383/* Decrement reference count. If the reference count reaches 0,
7384 destroy the bp_location. Sets *BLP to NULL. */
7385
7386static void
7387decref_bp_location (struct bp_location **blp)
7388{
0807b50c
PA
7389 gdb_assert ((*blp)->refc > 0);
7390
f431efe5
PA
7391 if (--(*blp)->refc == 0)
7392 free_bp_location (*blp);
7393 *blp = NULL;
7394}
7395
346774a9 7396/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7397
b270e6f9
TT
7398static breakpoint *
7399add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7400{
346774a9 7401 struct breakpoint *b1;
b270e6f9 7402 struct breakpoint *result = b.get ();
c906108c 7403
346774a9
PA
7404 /* Add this breakpoint to the end of the chain so that a list of
7405 breakpoints will come out in order of increasing numbers. */
7406
7407 b1 = breakpoint_chain;
7408 if (b1 == 0)
b270e6f9 7409 breakpoint_chain = b.release ();
346774a9
PA
7410 else
7411 {
7412 while (b1->next)
7413 b1 = b1->next;
b270e6f9 7414 b1->next = b.release ();
346774a9 7415 }
b270e6f9
TT
7416
7417 return result;
346774a9
PA
7418}
7419
7420/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7421
7422static void
7423init_raw_breakpoint_without_location (struct breakpoint *b,
7424 struct gdbarch *gdbarch,
28010a5d 7425 enum bptype bptype,
c0a91b2b 7426 const struct breakpoint_ops *ops)
346774a9 7427{
348d480f
PA
7428 gdb_assert (ops != NULL);
7429
28010a5d 7430 b->ops = ops;
4d28f7a8 7431 b->type = bptype;
a6d9a66e 7432 b->gdbarch = gdbarch;
c906108c
SS
7433 b->language = current_language->la_language;
7434 b->input_radix = input_radix;
d0fb5eae 7435 b->related_breakpoint = b;
346774a9
PA
7436}
7437
7438/* Helper to set_raw_breakpoint below. Creates a breakpoint
7439 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7440
7441static struct breakpoint *
7442set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7443 enum bptype bptype,
c0a91b2b 7444 const struct breakpoint_ops *ops)
346774a9 7445{
3b0871f4 7446 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7447
3b0871f4 7448 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7449 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7450}
7451
0e30163f
JK
7452/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7453 resolutions should be made as the user specified the location explicitly
7454 enough. */
7455
0d381245 7456static void
0e30163f 7457set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7458{
2bdf28a0
JK
7459 gdb_assert (loc->owner != NULL);
7460
0d381245 7461 if (loc->owner->type == bp_breakpoint
1042e4c0 7462 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7463 || is_tracepoint (loc->owner))
0d381245 7464 {
0e30163f 7465 int is_gnu_ifunc;
2c02bd72 7466 const char *function_name;
6a3a010b 7467 CORE_ADDR func_addr;
0e30163f 7468
2c02bd72 7469 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6a3a010b 7470 &func_addr, NULL, &is_gnu_ifunc);
0e30163f
JK
7471
7472 if (is_gnu_ifunc && !explicit_loc)
7473 {
7474 struct breakpoint *b = loc->owner;
7475
7476 gdb_assert (loc->pspace == current_program_space);
2c02bd72 7477 if (gnu_ifunc_resolve_name (function_name,
0e30163f
JK
7478 &loc->requested_address))
7479 {
7480 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7481 loc->address = adjust_breakpoint_address (loc->gdbarch,
7482 loc->requested_address,
7483 b->type);
7484 }
7485 else if (b->type == bp_breakpoint && b->loc == loc
7486 && loc->next == NULL && b->related_breakpoint == b)
7487 {
7488 /* Create only the whole new breakpoint of this type but do not
7489 mess more complicated breakpoints with multiple locations. */
7490 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7491 /* Remember the resolver's address for use by the return
7492 breakpoint. */
7493 loc->related_address = func_addr;
0e30163f
JK
7494 }
7495 }
7496
2c02bd72
DE
7497 if (function_name)
7498 loc->function_name = xstrdup (function_name);
0d381245
VP
7499 }
7500}
7501
a6d9a66e 7502/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7503struct gdbarch *
a6d9a66e
UW
7504get_sal_arch (struct symtab_and_line sal)
7505{
7506 if (sal.section)
7507 return get_objfile_arch (sal.section->objfile);
7508 if (sal.symtab)
eb822aa6 7509 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7510
7511 return NULL;
7512}
7513
346774a9
PA
7514/* Low level routine for partially initializing a breakpoint of type
7515 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7516 file name, and line number are provided by SAL.
0d381245
VP
7517
7518 It is expected that the caller will complete the initialization of
7519 the newly created breakpoint struct as well as output any status
c56053d2 7520 information regarding the creation of a new breakpoint. */
0d381245 7521
346774a9
PA
7522static void
7523init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7524 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7525 const struct breakpoint_ops *ops)
0d381245 7526{
28010a5d 7527 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7528
3742cc8b 7529 add_location_to_breakpoint (b, &sal);
0d381245 7530
6c95b8df
PA
7531 if (bptype != bp_catchpoint)
7532 gdb_assert (sal.pspace != NULL);
7533
f8eba3c6
TT
7534 /* Store the program space that was used to set the breakpoint,
7535 except for ordinary breakpoints, which are independent of the
7536 program space. */
7537 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7538 b->pspace = sal.pspace;
346774a9 7539}
c906108c 7540
346774a9
PA
7541/* set_raw_breakpoint is a low level routine for allocating and
7542 partially initializing a breakpoint of type BPTYPE. The newly
7543 created breakpoint's address, section, source file name, and line
7544 number are provided by SAL. The newly created and partially
7545 initialized breakpoint is added to the breakpoint chain and
7546 is also returned as the value of this function.
7547
7548 It is expected that the caller will complete the initialization of
7549 the newly created breakpoint struct as well as output any status
7550 information regarding the creation of a new breakpoint. In
7551 particular, set_raw_breakpoint does NOT set the breakpoint
7552 number! Care should be taken to not allow an error to occur
7553 prior to completing the initialization of the breakpoint. If this
7554 should happen, a bogus breakpoint will be left on the chain. */
7555
7556struct breakpoint *
7557set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7558 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7559 const struct breakpoint_ops *ops)
346774a9 7560{
3b0871f4 7561 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7562
3b0871f4 7563 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7564 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7565}
7566
53a5351d 7567/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7568 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7569 initiated the operation. */
c906108c
SS
7570
7571void
186c406b 7572set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7573{
35df4500 7574 struct breakpoint *b, *b_tmp;
5d5658a1 7575 int thread = tp->global_num;
0fd8e87f
UW
7576
7577 /* To avoid having to rescan all objfile symbols at every step,
7578 we maintain a list of continually-inserted but always disabled
7579 longjmp "master" breakpoints. Here, we simply create momentary
7580 clones of those and enable them for the requested thread. */
35df4500 7581 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7582 if (b->pspace == current_program_space
186c406b
TT
7583 && (b->type == bp_longjmp_master
7584 || b->type == bp_exception_master))
0fd8e87f 7585 {
06edf0c0
PA
7586 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7587 struct breakpoint *clone;
cc59ec59 7588
e2e4d78b
JK
7589 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7590 after their removal. */
06edf0c0 7591 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7592 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7593 clone->thread = thread;
7594 }
186c406b
TT
7595
7596 tp->initiating_frame = frame;
c906108c
SS
7597}
7598
611c83ae 7599/* Delete all longjmp breakpoints from THREAD. */
c906108c 7600void
611c83ae 7601delete_longjmp_breakpoint (int thread)
c906108c 7602{
35df4500 7603 struct breakpoint *b, *b_tmp;
c906108c 7604
35df4500 7605 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7606 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7607 {
7608 if (b->thread == thread)
7609 delete_breakpoint (b);
7610 }
c906108c
SS
7611}
7612
f59f708a
PA
7613void
7614delete_longjmp_breakpoint_at_next_stop (int thread)
7615{
7616 struct breakpoint *b, *b_tmp;
7617
7618 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7619 if (b->type == bp_longjmp || b->type == bp_exception)
7620 {
7621 if (b->thread == thread)
7622 b->disposition = disp_del_at_next_stop;
7623 }
7624}
7625
e2e4d78b
JK
7626/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7627 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7628 pointer to any of them. Return NULL if this system cannot place longjmp
7629 breakpoints. */
7630
7631struct breakpoint *
7632set_longjmp_breakpoint_for_call_dummy (void)
7633{
7634 struct breakpoint *b, *retval = NULL;
7635
7636 ALL_BREAKPOINTS (b)
7637 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7638 {
7639 struct breakpoint *new_b;
7640
7641 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7642 &momentary_breakpoint_ops,
7643 1);
5d5658a1 7644 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
e2e4d78b
JK
7645
7646 /* Link NEW_B into the chain of RETVAL breakpoints. */
7647
7648 gdb_assert (new_b->related_breakpoint == new_b);
7649 if (retval == NULL)
7650 retval = new_b;
7651 new_b->related_breakpoint = retval;
7652 while (retval->related_breakpoint != new_b->related_breakpoint)
7653 retval = retval->related_breakpoint;
7654 retval->related_breakpoint = new_b;
7655 }
7656
7657 return retval;
7658}
7659
7660/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7661 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7662 stack.
7663
7664 You should call this function only at places where it is safe to currently
7665 unwind the whole stack. Failed stack unwind would discard live dummy
7666 frames. */
7667
7668void
b67a2c6f 7669check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7670{
7671 struct breakpoint *b, *b_tmp;
7672
7673 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7674 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7675 {
7676 struct breakpoint *dummy_b = b->related_breakpoint;
7677
7678 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7679 dummy_b = dummy_b->related_breakpoint;
7680 if (dummy_b->type != bp_call_dummy
7681 || frame_find_by_id (dummy_b->frame_id) != NULL)
7682 continue;
7683
b67a2c6f 7684 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
e2e4d78b
JK
7685
7686 while (b->related_breakpoint != b)
7687 {
7688 if (b_tmp == b->related_breakpoint)
7689 b_tmp = b->related_breakpoint->next;
7690 delete_breakpoint (b->related_breakpoint);
7691 }
7692 delete_breakpoint (b);
7693 }
7694}
7695
1900040c
MS
7696void
7697enable_overlay_breakpoints (void)
7698{
52f0bd74 7699 struct breakpoint *b;
1900040c
MS
7700
7701 ALL_BREAKPOINTS (b)
7702 if (b->type == bp_overlay_event)
7703 {
7704 b->enable_state = bp_enabled;
44702360 7705 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7706 overlay_events_enabled = 1;
1900040c
MS
7707 }
7708}
7709
7710void
7711disable_overlay_breakpoints (void)
7712{
52f0bd74 7713 struct breakpoint *b;
1900040c
MS
7714
7715 ALL_BREAKPOINTS (b)
7716 if (b->type == bp_overlay_event)
7717 {
7718 b->enable_state = bp_disabled;
44702360 7719 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7720 overlay_events_enabled = 0;
1900040c
MS
7721 }
7722}
7723
aa7d318d
TT
7724/* Set an active std::terminate breakpoint for each std::terminate
7725 master breakpoint. */
7726void
7727set_std_terminate_breakpoint (void)
7728{
35df4500 7729 struct breakpoint *b, *b_tmp;
aa7d318d 7730
35df4500 7731 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7732 if (b->pspace == current_program_space
7733 && b->type == bp_std_terminate_master)
7734 {
06edf0c0 7735 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7736 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7737 }
7738}
7739
7740/* Delete all the std::terminate breakpoints. */
7741void
7742delete_std_terminate_breakpoint (void)
7743{
35df4500 7744 struct breakpoint *b, *b_tmp;
aa7d318d 7745
35df4500 7746 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7747 if (b->type == bp_std_terminate)
7748 delete_breakpoint (b);
7749}
7750
c4093a6a 7751struct breakpoint *
a6d9a66e 7752create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7753{
7754 struct breakpoint *b;
c4093a6a 7755
06edf0c0
PA
7756 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7757 &internal_breakpoint_ops);
7758
b5de0fa7 7759 b->enable_state = bp_enabled;
f00aae0f 7760 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7761 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7762
44702360 7763 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7764
c4093a6a
JM
7765 return b;
7766}
7767
0101ce28
JJ
7768struct lang_and_radix
7769 {
7770 enum language lang;
7771 int radix;
7772 };
7773
4efc6507
DE
7774/* Create a breakpoint for JIT code registration and unregistration. */
7775
7776struct breakpoint *
7777create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7778{
2a7f3dff
PA
7779 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7780 &internal_breakpoint_ops);
4efc6507 7781}
0101ce28 7782
03673fc7
PP
7783/* Remove JIT code registration and unregistration breakpoint(s). */
7784
7785void
7786remove_jit_event_breakpoints (void)
7787{
7788 struct breakpoint *b, *b_tmp;
7789
7790 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7791 if (b->type == bp_jit_event
7792 && b->loc->pspace == current_program_space)
7793 delete_breakpoint (b);
7794}
7795
cae688ec
JJ
7796void
7797remove_solib_event_breakpoints (void)
7798{
35df4500 7799 struct breakpoint *b, *b_tmp;
cae688ec 7800
35df4500 7801 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7802 if (b->type == bp_shlib_event
7803 && b->loc->pspace == current_program_space)
cae688ec
JJ
7804 delete_breakpoint (b);
7805}
7806
f37f681c
PA
7807/* See breakpoint.h. */
7808
7809void
7810remove_solib_event_breakpoints_at_next_stop (void)
7811{
7812 struct breakpoint *b, *b_tmp;
7813
7814 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7815 if (b->type == bp_shlib_event
7816 && b->loc->pspace == current_program_space)
7817 b->disposition = disp_del_at_next_stop;
7818}
7819
04086b45
PA
7820/* Helper for create_solib_event_breakpoint /
7821 create_and_insert_solib_event_breakpoint. Allows specifying which
7822 INSERT_MODE to pass through to update_global_location_list. */
7823
7824static struct breakpoint *
7825create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7826 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7827{
7828 struct breakpoint *b;
7829
06edf0c0
PA
7830 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7831 &internal_breakpoint_ops);
04086b45 7832 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7833 return b;
7834}
7835
04086b45
PA
7836struct breakpoint *
7837create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7838{
7839 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7840}
7841
f37f681c
PA
7842/* See breakpoint.h. */
7843
7844struct breakpoint *
7845create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7846{
7847 struct breakpoint *b;
7848
04086b45
PA
7849 /* Explicitly tell update_global_location_list to insert
7850 locations. */
7851 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7852 if (!b->loc->inserted)
7853 {
7854 delete_breakpoint (b);
7855 return NULL;
7856 }
7857 return b;
7858}
7859
cae688ec
JJ
7860/* Disable any breakpoints that are on code in shared libraries. Only
7861 apply to enabled breakpoints, disabled ones can just stay disabled. */
7862
7863void
cb851954 7864disable_breakpoints_in_shlibs (void)
cae688ec 7865{
876fa593 7866 struct bp_location *loc, **locp_tmp;
cae688ec 7867
876fa593 7868 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7869 {
2bdf28a0 7870 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7871 struct breakpoint *b = loc->owner;
2bdf28a0 7872
4a64f543
MS
7873 /* We apply the check to all breakpoints, including disabled for
7874 those with loc->duplicate set. This is so that when breakpoint
7875 becomes enabled, or the duplicate is removed, gdb will try to
7876 insert all breakpoints. If we don't set shlib_disabled here,
7877 we'll try to insert those breakpoints and fail. */
1042e4c0 7878 if (((b->type == bp_breakpoint)
508ccb1f 7879 || (b->type == bp_jit_event)
1042e4c0 7880 || (b->type == bp_hardware_breakpoint)
d77f58be 7881 || (is_tracepoint (b)))
6c95b8df 7882 && loc->pspace == current_program_space
0d381245 7883 && !loc->shlib_disabled
6c95b8df 7884 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7885 )
0d381245
VP
7886 {
7887 loc->shlib_disabled = 1;
7888 }
cae688ec
JJ
7889 }
7890}
7891
63644780
NB
7892/* Disable any breakpoints and tracepoints that are in SOLIB upon
7893 notification of unloaded_shlib. Only apply to enabled breakpoints,
7894 disabled ones can just stay disabled. */
84acb35a 7895
75149521 7896static void
84acb35a
JJ
7897disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7898{
876fa593 7899 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7900 int disabled_shlib_breaks = 0;
7901
876fa593 7902 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7903 {
2bdf28a0 7904 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7905 struct breakpoint *b = loc->owner;
cc59ec59 7906
1e4d1764 7907 if (solib->pspace == loc->pspace
e2dd7057 7908 && !loc->shlib_disabled
1e4d1764
YQ
7909 && (((b->type == bp_breakpoint
7910 || b->type == bp_jit_event
7911 || b->type == bp_hardware_breakpoint)
7912 && (loc->loc_type == bp_loc_hardware_breakpoint
7913 || loc->loc_type == bp_loc_software_breakpoint))
7914 || is_tracepoint (b))
e2dd7057 7915 && solib_contains_address_p (solib, loc->address))
84acb35a 7916 {
e2dd7057
PP
7917 loc->shlib_disabled = 1;
7918 /* At this point, we cannot rely on remove_breakpoint
7919 succeeding so we must mark the breakpoint as not inserted
7920 to prevent future errors occurring in remove_breakpoints. */
7921 loc->inserted = 0;
8d3788bd
VP
7922
7923 /* This may cause duplicate notifications for the same breakpoint. */
7924 observer_notify_breakpoint_modified (b);
7925
e2dd7057
PP
7926 if (!disabled_shlib_breaks)
7927 {
7928 target_terminal_ours_for_output ();
3e43a32a
MS
7929 warning (_("Temporarily disabling breakpoints "
7930 "for unloaded shared library \"%s\""),
e2dd7057 7931 solib->so_name);
84acb35a 7932 }
e2dd7057 7933 disabled_shlib_breaks = 1;
84acb35a
JJ
7934 }
7935 }
84acb35a
JJ
7936}
7937
63644780
NB
7938/* Disable any breakpoints and tracepoints in OBJFILE upon
7939 notification of free_objfile. Only apply to enabled breakpoints,
7940 disabled ones can just stay disabled. */
7941
7942static void
7943disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7944{
7945 struct breakpoint *b;
7946
7947 if (objfile == NULL)
7948 return;
7949
d03de421
PA
7950 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7951 managed by the user with add-symbol-file/remove-symbol-file.
7952 Similarly to how breakpoints in shared libraries are handled in
7953 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7954 shlib_disabled so they end up uninserted on the next global
7955 location list update. Shared libraries not loaded by the user
7956 aren't handled here -- they're already handled in
7957 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7958 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7959 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7960 main objfile). */
7961 if ((objfile->flags & OBJF_SHARED) == 0
7962 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7963 return;
7964
7965 ALL_BREAKPOINTS (b)
7966 {
7967 struct bp_location *loc;
7968 int bp_modified = 0;
7969
7970 if (!is_breakpoint (b) && !is_tracepoint (b))
7971 continue;
7972
7973 for (loc = b->loc; loc != NULL; loc = loc->next)
7974 {
7975 CORE_ADDR loc_addr = loc->address;
7976
7977 if (loc->loc_type != bp_loc_hardware_breakpoint
7978 && loc->loc_type != bp_loc_software_breakpoint)
7979 continue;
7980
7981 if (loc->shlib_disabled != 0)
7982 continue;
7983
7984 if (objfile->pspace != loc->pspace)
7985 continue;
7986
7987 if (loc->loc_type != bp_loc_hardware_breakpoint
7988 && loc->loc_type != bp_loc_software_breakpoint)
7989 continue;
7990
7991 if (is_addr_in_objfile (loc_addr, objfile))
7992 {
7993 loc->shlib_disabled = 1;
08351840
PA
7994 /* At this point, we don't know whether the object was
7995 unmapped from the inferior or not, so leave the
7996 inserted flag alone. We'll handle failure to
7997 uninsert quietly, in case the object was indeed
7998 unmapped. */
63644780
NB
7999
8000 mark_breakpoint_location_modified (loc);
8001
8002 bp_modified = 1;
8003 }
8004 }
8005
8006 if (bp_modified)
8007 observer_notify_breakpoint_modified (b);
8008 }
8009}
8010
ce78b96d
JB
8011/* FORK & VFORK catchpoints. */
8012
e29a4733 8013/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
8014 catchpoint. A breakpoint is really of this type iff its ops pointer points
8015 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 8016
c1fc2657 8017struct fork_catchpoint : public breakpoint
e29a4733 8018{
e29a4733
PA
8019 /* Process id of a child process whose forking triggered this
8020 catchpoint. This field is only valid immediately after this
8021 catchpoint has triggered. */
8022 ptid_t forked_inferior_pid;
8023};
8024
4a64f543
MS
8025/* Implement the "insert" breakpoint_ops method for fork
8026 catchpoints. */
ce78b96d 8027
77b06cd7
TJB
8028static int
8029insert_catch_fork (struct bp_location *bl)
ce78b96d 8030{
dfd4cc63 8031 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8032}
8033
4a64f543
MS
8034/* Implement the "remove" breakpoint_ops method for fork
8035 catchpoints. */
ce78b96d
JB
8036
8037static int
73971819 8038remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 8039{
dfd4cc63 8040 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8041}
8042
8043/* Implement the "breakpoint_hit" breakpoint_ops method for fork
8044 catchpoints. */
8045
8046static int
f1310107 8047breakpoint_hit_catch_fork (const struct bp_location *bl,
09ac7c10
TT
8048 struct address_space *aspace, CORE_ADDR bp_addr,
8049 const struct target_waitstatus *ws)
ce78b96d 8050{
e29a4733
PA
8051 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8052
f90263c1
TT
8053 if (ws->kind != TARGET_WAITKIND_FORKED)
8054 return 0;
8055
8056 c->forked_inferior_pid = ws->value.related_pid;
8057 return 1;
ce78b96d
JB
8058}
8059
4a64f543
MS
8060/* Implement the "print_it" breakpoint_ops method for fork
8061 catchpoints. */
ce78b96d
JB
8062
8063static enum print_stop_action
348d480f 8064print_it_catch_fork (bpstat bs)
ce78b96d 8065{
36dfb11c 8066 struct ui_out *uiout = current_uiout;
348d480f
PA
8067 struct breakpoint *b = bs->breakpoint_at;
8068 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 8069
ce78b96d 8070 annotate_catchpoint (b->number);
f303dbd6 8071 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8072 if (b->disposition == disp_del)
112e8700 8073 uiout->text ("Temporary catchpoint ");
36dfb11c 8074 else
112e8700
SM
8075 uiout->text ("Catchpoint ");
8076 if (uiout->is_mi_like_p ())
36dfb11c 8077 {
112e8700
SM
8078 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8079 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8080 }
112e8700
SM
8081 uiout->field_int ("bkptno", b->number);
8082 uiout->text (" (forked process ");
8083 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8084 uiout->text ("), ");
ce78b96d
JB
8085 return PRINT_SRC_AND_LOC;
8086}
8087
4a64f543
MS
8088/* Implement the "print_one" breakpoint_ops method for fork
8089 catchpoints. */
ce78b96d
JB
8090
8091static void
a6d9a66e 8092print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 8093{
e29a4733 8094 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 8095 struct value_print_options opts;
79a45e25 8096 struct ui_out *uiout = current_uiout;
79a45b7d
TT
8097
8098 get_user_print_options (&opts);
8099
4a64f543
MS
8100 /* Field 4, the address, is omitted (which makes the columns not
8101 line up too nicely with the headers, but the effect is relatively
8102 readable). */
79a45b7d 8103 if (opts.addressprint)
112e8700 8104 uiout->field_skip ("addr");
ce78b96d 8105 annotate_field (5);
112e8700 8106 uiout->text ("fork");
e29a4733 8107 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 8108 {
112e8700
SM
8109 uiout->text (", process ");
8110 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8111 uiout->spaces (1);
ce78b96d 8112 }
8ac3646f 8113
112e8700
SM
8114 if (uiout->is_mi_like_p ())
8115 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
8116}
8117
8118/* Implement the "print_mention" breakpoint_ops method for fork
8119 catchpoints. */
8120
8121static void
8122print_mention_catch_fork (struct breakpoint *b)
8123{
8124 printf_filtered (_("Catchpoint %d (fork)"), b->number);
8125}
8126
6149aea9
PA
8127/* Implement the "print_recreate" breakpoint_ops method for fork
8128 catchpoints. */
8129
8130static void
8131print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8132{
8133 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 8134 print_recreate_thread (b, fp);
6149aea9
PA
8135}
8136
ce78b96d
JB
8137/* The breakpoint_ops structure to be used in fork catchpoints. */
8138
2060206e 8139static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 8140
4a64f543
MS
8141/* Implement the "insert" breakpoint_ops method for vfork
8142 catchpoints. */
ce78b96d 8143
77b06cd7
TJB
8144static int
8145insert_catch_vfork (struct bp_location *bl)
ce78b96d 8146{
dfd4cc63 8147 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8148}
8149
4a64f543
MS
8150/* Implement the "remove" breakpoint_ops method for vfork
8151 catchpoints. */
ce78b96d
JB
8152
8153static int
73971819 8154remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 8155{
dfd4cc63 8156 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8157}
8158
8159/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8160 catchpoints. */
8161
8162static int
f1310107 8163breakpoint_hit_catch_vfork (const struct bp_location *bl,
09ac7c10
TT
8164 struct address_space *aspace, CORE_ADDR bp_addr,
8165 const struct target_waitstatus *ws)
ce78b96d 8166{
e29a4733
PA
8167 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8168
f90263c1
TT
8169 if (ws->kind != TARGET_WAITKIND_VFORKED)
8170 return 0;
8171
8172 c->forked_inferior_pid = ws->value.related_pid;
8173 return 1;
ce78b96d
JB
8174}
8175
4a64f543
MS
8176/* Implement the "print_it" breakpoint_ops method for vfork
8177 catchpoints. */
ce78b96d
JB
8178
8179static enum print_stop_action
348d480f 8180print_it_catch_vfork (bpstat bs)
ce78b96d 8181{
36dfb11c 8182 struct ui_out *uiout = current_uiout;
348d480f 8183 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
8184 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8185
ce78b96d 8186 annotate_catchpoint (b->number);
f303dbd6 8187 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8188 if (b->disposition == disp_del)
112e8700 8189 uiout->text ("Temporary catchpoint ");
36dfb11c 8190 else
112e8700
SM
8191 uiout->text ("Catchpoint ");
8192 if (uiout->is_mi_like_p ())
36dfb11c 8193 {
112e8700
SM
8194 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8195 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8196 }
112e8700
SM
8197 uiout->field_int ("bkptno", b->number);
8198 uiout->text (" (vforked process ");
8199 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8200 uiout->text ("), ");
ce78b96d
JB
8201 return PRINT_SRC_AND_LOC;
8202}
8203
4a64f543
MS
8204/* Implement the "print_one" breakpoint_ops method for vfork
8205 catchpoints. */
ce78b96d
JB
8206
8207static void
a6d9a66e 8208print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 8209{
e29a4733 8210 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 8211 struct value_print_options opts;
79a45e25 8212 struct ui_out *uiout = current_uiout;
79a45b7d
TT
8213
8214 get_user_print_options (&opts);
4a64f543
MS
8215 /* Field 4, the address, is omitted (which makes the columns not
8216 line up too nicely with the headers, but the effect is relatively
8217 readable). */
79a45b7d 8218 if (opts.addressprint)
112e8700 8219 uiout->field_skip ("addr");
ce78b96d 8220 annotate_field (5);
112e8700 8221 uiout->text ("vfork");
e29a4733 8222 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 8223 {
112e8700
SM
8224 uiout->text (", process ");
8225 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8226 uiout->spaces (1);
ce78b96d 8227 }
8ac3646f 8228
112e8700
SM
8229 if (uiout->is_mi_like_p ())
8230 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
8231}
8232
8233/* Implement the "print_mention" breakpoint_ops method for vfork
8234 catchpoints. */
8235
8236static void
8237print_mention_catch_vfork (struct breakpoint *b)
8238{
8239 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8240}
8241
6149aea9
PA
8242/* Implement the "print_recreate" breakpoint_ops method for vfork
8243 catchpoints. */
8244
8245static void
8246print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8247{
8248 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 8249 print_recreate_thread (b, fp);
6149aea9
PA
8250}
8251
ce78b96d
JB
8252/* The breakpoint_ops structure to be used in vfork catchpoints. */
8253
2060206e 8254static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 8255
edcc5120 8256/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 8257 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
8258 CATCH_SOLIB_BREAKPOINT_OPS. */
8259
c1fc2657 8260struct solib_catchpoint : public breakpoint
edcc5120 8261{
c1fc2657 8262 ~solib_catchpoint () override;
edcc5120
TT
8263
8264 /* True for "catch load", false for "catch unload". */
8265 unsigned char is_load;
8266
8267 /* Regular expression to match, if any. COMPILED is only valid when
8268 REGEX is non-NULL. */
8269 char *regex;
2d7cc5c7 8270 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
8271};
8272
c1fc2657 8273solib_catchpoint::~solib_catchpoint ()
edcc5120 8274{
c1fc2657 8275 xfree (this->regex);
edcc5120
TT
8276}
8277
8278static int
8279insert_catch_solib (struct bp_location *ignore)
8280{
8281 return 0;
8282}
8283
8284static int
73971819 8285remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
8286{
8287 return 0;
8288}
8289
8290static int
8291breakpoint_hit_catch_solib (const struct bp_location *bl,
8292 struct address_space *aspace,
8293 CORE_ADDR bp_addr,
8294 const struct target_waitstatus *ws)
8295{
8296 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8297 struct breakpoint *other;
8298
8299 if (ws->kind == TARGET_WAITKIND_LOADED)
8300 return 1;
8301
8302 ALL_BREAKPOINTS (other)
8303 {
8304 struct bp_location *other_bl;
8305
8306 if (other == bl->owner)
8307 continue;
8308
8309 if (other->type != bp_shlib_event)
8310 continue;
8311
c1fc2657 8312 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
8313 continue;
8314
8315 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8316 {
8317 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8318 return 1;
8319 }
8320 }
8321
8322 return 0;
8323}
8324
8325static void
8326check_status_catch_solib (struct bpstats *bs)
8327{
8328 struct solib_catchpoint *self
8329 = (struct solib_catchpoint *) bs->breakpoint_at;
8330 int ix;
8331
8332 if (self->is_load)
8333 {
8334 struct so_list *iter;
8335
8336 for (ix = 0;
8337 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8338 ix, iter);
8339 ++ix)
8340 {
8341 if (!self->regex
2d7cc5c7 8342 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8343 return;
8344 }
8345 }
8346 else
8347 {
8348 char *iter;
8349
8350 for (ix = 0;
8351 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8352 ix, iter);
8353 ++ix)
8354 {
8355 if (!self->regex
2d7cc5c7 8356 || self->compiled->exec (iter, 0, NULL, 0) == 0)
edcc5120
TT
8357 return;
8358 }
8359 }
8360
8361 bs->stop = 0;
8362 bs->print_it = print_it_noop;
8363}
8364
8365static enum print_stop_action
8366print_it_catch_solib (bpstat bs)
8367{
8368 struct breakpoint *b = bs->breakpoint_at;
8369 struct ui_out *uiout = current_uiout;
8370
8371 annotate_catchpoint (b->number);
f303dbd6 8372 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8373 if (b->disposition == disp_del)
112e8700 8374 uiout->text ("Temporary catchpoint ");
edcc5120 8375 else
112e8700
SM
8376 uiout->text ("Catchpoint ");
8377 uiout->field_int ("bkptno", b->number);
8378 uiout->text ("\n");
8379 if (uiout->is_mi_like_p ())
8380 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8381 print_solib_event (1);
8382 return PRINT_SRC_AND_LOC;
8383}
8384
8385static void
8386print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8387{
8388 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8389 struct value_print_options opts;
8390 struct ui_out *uiout = current_uiout;
8391 char *msg;
8392
8393 get_user_print_options (&opts);
8394 /* Field 4, the address, is omitted (which makes the columns not
8395 line up too nicely with the headers, but the effect is relatively
8396 readable). */
8397 if (opts.addressprint)
8398 {
8399 annotate_field (4);
112e8700 8400 uiout->field_skip ("addr");
edcc5120
TT
8401 }
8402
8403 annotate_field (5);
8404 if (self->is_load)
8405 {
8406 if (self->regex)
8407 msg = xstrprintf (_("load of library matching %s"), self->regex);
8408 else
8409 msg = xstrdup (_("load of library"));
8410 }
8411 else
8412 {
8413 if (self->regex)
8414 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8415 else
8416 msg = xstrdup (_("unload of library"));
8417 }
112e8700 8418 uiout->field_string ("what", msg);
edcc5120 8419 xfree (msg);
8ac3646f 8420
112e8700
SM
8421 if (uiout->is_mi_like_p ())
8422 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8423}
8424
8425static void
8426print_mention_catch_solib (struct breakpoint *b)
8427{
8428 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8429
8430 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8431 self->is_load ? "load" : "unload");
8432}
8433
8434static void
8435print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8436{
8437 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8438
8439 fprintf_unfiltered (fp, "%s %s",
8440 b->disposition == disp_del ? "tcatch" : "catch",
8441 self->is_load ? "load" : "unload");
8442 if (self->regex)
8443 fprintf_unfiltered (fp, " %s", self->regex);
8444 fprintf_unfiltered (fp, "\n");
8445}
8446
8447static struct breakpoint_ops catch_solib_breakpoint_ops;
8448
91985142
MG
8449/* Shared helper function (MI and CLI) for creating and installing
8450 a shared object event catchpoint. If IS_LOAD is non-zero then
8451 the events to be caught are load events, otherwise they are
8452 unload events. If IS_TEMP is non-zero the catchpoint is a
8453 temporary one. If ENABLED is non-zero the catchpoint is
8454 created in an enabled state. */
edcc5120 8455
91985142 8456void
a121b7c1 8457add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8458{
edcc5120 8459 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8460
edcc5120
TT
8461 if (!arg)
8462 arg = "";
f1735a53 8463 arg = skip_spaces (arg);
edcc5120 8464
36bd8eaa 8465 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8466
8467 if (*arg != '\0')
8468 {
2d7cc5c7
PA
8469 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8470 _("Invalid regexp")));
edcc5120
TT
8471 c->regex = xstrdup (arg);
8472 }
8473
8474 c->is_load = is_load;
36bd8eaa 8475 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8476 &catch_solib_breakpoint_ops);
8477
c1fc2657 8478 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8479
b270e6f9 8480 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8481}
8482
91985142
MG
8483/* A helper function that does all the work for "catch load" and
8484 "catch unload". */
8485
8486static void
8487catch_load_or_unload (char *arg, int from_tty, int is_load,
8488 struct cmd_list_element *command)
8489{
8490 int tempflag;
8491 const int enabled = 1;
8492
8493 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8494
8495 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8496}
8497
edcc5120
TT
8498static void
8499catch_load_command_1 (char *arg, int from_tty,
8500 struct cmd_list_element *command)
8501{
8502 catch_load_or_unload (arg, from_tty, 1, command);
8503}
8504
8505static void
8506catch_unload_command_1 (char *arg, int from_tty,
8507 struct cmd_list_element *command)
8508{
8509 catch_load_or_unload (arg, from_tty, 0, command);
8510}
8511
346774a9
PA
8512/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8513 is non-zero, then make the breakpoint temporary. If COND_STRING is
8514 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8515 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8516
ab04a2af 8517void
346774a9
PA
8518init_catchpoint (struct breakpoint *b,
8519 struct gdbarch *gdbarch, int tempflag,
63160a43 8520 const char *cond_string,
c0a91b2b 8521 const struct breakpoint_ops *ops)
c906108c 8522{
51abb421 8523 symtab_and_line sal;
6c95b8df 8524 sal.pspace = current_program_space;
c5aa993b 8525
28010a5d 8526 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8527
1b36a34b 8528 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8529 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8530}
8531
28010a5d 8532void
b270e6f9 8533install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8534{
b270e6f9 8535 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8536 set_breakpoint_number (internal, b);
558a9d82
YQ
8537 if (is_tracepoint (b))
8538 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8539 if (!internal)
8540 mention (b);
c56053d2 8541 observer_notify_breakpoint_created (b);
3ea46bff
YQ
8542
8543 if (update_gll)
44702360 8544 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8545}
8546
9b70b993 8547static void
a6d9a66e 8548create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8549 int tempflag, const char *cond_string,
c0a91b2b 8550 const struct breakpoint_ops *ops)
c906108c 8551{
b270e6f9 8552 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8553
b270e6f9 8554 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8555
8556 c->forked_inferior_pid = null_ptid;
8557
b270e6f9 8558 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8559}
8560
fe798b75
JB
8561/* Exec catchpoints. */
8562
b4d90040 8563/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8564 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8565 CATCH_EXEC_BREAKPOINT_OPS. */
8566
c1fc2657 8567struct exec_catchpoint : public breakpoint
b4d90040 8568{
c1fc2657 8569 ~exec_catchpoint () override;
b4d90040
PA
8570
8571 /* Filename of a program whose exec triggered this catchpoint.
8572 This field is only valid immediately after this catchpoint has
8573 triggered. */
8574 char *exec_pathname;
8575};
8576
c1fc2657 8577/* Exec catchpoint destructor. */
b4d90040 8578
c1fc2657 8579exec_catchpoint::~exec_catchpoint ()
b4d90040 8580{
c1fc2657 8581 xfree (this->exec_pathname);
b4d90040
PA
8582}
8583
77b06cd7
TJB
8584static int
8585insert_catch_exec (struct bp_location *bl)
c906108c 8586{
dfd4cc63 8587 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8588}
c906108c 8589
fe798b75 8590static int
73971819 8591remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8592{
dfd4cc63 8593 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8594}
c906108c 8595
fe798b75 8596static int
f1310107 8597breakpoint_hit_catch_exec (const struct bp_location *bl,
09ac7c10
TT
8598 struct address_space *aspace, CORE_ADDR bp_addr,
8599 const struct target_waitstatus *ws)
fe798b75 8600{
b4d90040
PA
8601 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8602
f90263c1
TT
8603 if (ws->kind != TARGET_WAITKIND_EXECD)
8604 return 0;
8605
8606 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8607 return 1;
fe798b75 8608}
c906108c 8609
fe798b75 8610static enum print_stop_action
348d480f 8611print_it_catch_exec (bpstat bs)
fe798b75 8612{
36dfb11c 8613 struct ui_out *uiout = current_uiout;
348d480f 8614 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8615 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8616
fe798b75 8617 annotate_catchpoint (b->number);
f303dbd6 8618 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8619 if (b->disposition == disp_del)
112e8700 8620 uiout->text ("Temporary catchpoint ");
36dfb11c 8621 else
112e8700
SM
8622 uiout->text ("Catchpoint ");
8623 if (uiout->is_mi_like_p ())
36dfb11c 8624 {
112e8700
SM
8625 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8626 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8627 }
112e8700
SM
8628 uiout->field_int ("bkptno", b->number);
8629 uiout->text (" (exec'd ");
8630 uiout->field_string ("new-exec", c->exec_pathname);
8631 uiout->text ("), ");
36dfb11c 8632
fe798b75 8633 return PRINT_SRC_AND_LOC;
c906108c
SS
8634}
8635
fe798b75 8636static void
a6d9a66e 8637print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8638{
b4d90040 8639 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8640 struct value_print_options opts;
79a45e25 8641 struct ui_out *uiout = current_uiout;
fe798b75
JB
8642
8643 get_user_print_options (&opts);
8644
8645 /* Field 4, the address, is omitted (which makes the columns
8646 not line up too nicely with the headers, but the effect
8647 is relatively readable). */
8648 if (opts.addressprint)
112e8700 8649 uiout->field_skip ("addr");
fe798b75 8650 annotate_field (5);
112e8700 8651 uiout->text ("exec");
b4d90040 8652 if (c->exec_pathname != NULL)
fe798b75 8653 {
112e8700
SM
8654 uiout->text (", program \"");
8655 uiout->field_string ("what", c->exec_pathname);
8656 uiout->text ("\" ");
fe798b75 8657 }
8ac3646f 8658
112e8700
SM
8659 if (uiout->is_mi_like_p ())
8660 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8661}
8662
8663static void
8664print_mention_catch_exec (struct breakpoint *b)
8665{
8666 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8667}
8668
6149aea9
PA
8669/* Implement the "print_recreate" breakpoint_ops method for exec
8670 catchpoints. */
8671
8672static void
8673print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8674{
8675 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8676 print_recreate_thread (b, fp);
6149aea9
PA
8677}
8678
2060206e 8679static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8680
c906108c 8681static int
fba45db2 8682hw_breakpoint_used_count (void)
c906108c 8683{
c906108c 8684 int i = 0;
f1310107
TJB
8685 struct breakpoint *b;
8686 struct bp_location *bl;
c906108c
SS
8687
8688 ALL_BREAKPOINTS (b)
c5aa993b 8689 {
d6b74ac4 8690 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8691 for (bl = b->loc; bl; bl = bl->next)
8692 {
8693 /* Special types of hardware breakpoints may use more than
8694 one register. */
348d480f 8695 i += b->ops->resources_needed (bl);
f1310107 8696 }
c5aa993b 8697 }
c906108c
SS
8698
8699 return i;
8700}
8701
a1398e0c
PA
8702/* Returns the resources B would use if it were a hardware
8703 watchpoint. */
8704
c906108c 8705static int
a1398e0c 8706hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8707{
c906108c 8708 int i = 0;
e09342b5 8709 struct bp_location *bl;
c906108c 8710
a1398e0c
PA
8711 if (!breakpoint_enabled (b))
8712 return 0;
8713
8714 for (bl = b->loc; bl; bl = bl->next)
8715 {
8716 /* Special types of hardware watchpoints may use more than
8717 one register. */
8718 i += b->ops->resources_needed (bl);
8719 }
8720
8721 return i;
8722}
8723
8724/* Returns the sum the used resources of all hardware watchpoints of
8725 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8726 the sum of the used resources of all hardware watchpoints of other
8727 types _not_ TYPE. */
8728
8729static int
8730hw_watchpoint_used_count_others (struct breakpoint *except,
8731 enum bptype type, int *other_type_used)
8732{
8733 int i = 0;
8734 struct breakpoint *b;
8735
c906108c
SS
8736 *other_type_used = 0;
8737 ALL_BREAKPOINTS (b)
e09342b5 8738 {
a1398e0c
PA
8739 if (b == except)
8740 continue;
e09342b5
TJB
8741 if (!breakpoint_enabled (b))
8742 continue;
8743
a1398e0c
PA
8744 if (b->type == type)
8745 i += hw_watchpoint_use_count (b);
8746 else if (is_hardware_watchpoint (b))
8747 *other_type_used = 1;
e09342b5
TJB
8748 }
8749
c906108c
SS
8750 return i;
8751}
8752
c906108c 8753void
fba45db2 8754disable_watchpoints_before_interactive_call_start (void)
c906108c 8755{
c5aa993b 8756 struct breakpoint *b;
c906108c
SS
8757
8758 ALL_BREAKPOINTS (b)
c5aa993b 8759 {
cc60f2e3 8760 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8761 {
b5de0fa7 8762 b->enable_state = bp_call_disabled;
44702360 8763 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8764 }
8765 }
c906108c
SS
8766}
8767
8768void
fba45db2 8769enable_watchpoints_after_interactive_call_stop (void)
c906108c 8770{
c5aa993b 8771 struct breakpoint *b;
c906108c
SS
8772
8773 ALL_BREAKPOINTS (b)
c5aa993b 8774 {
cc60f2e3 8775 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8776 {
b5de0fa7 8777 b->enable_state = bp_enabled;
44702360 8778 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8779 }
8780 }
c906108c
SS
8781}
8782
8bea4e01
UW
8783void
8784disable_breakpoints_before_startup (void)
8785{
6c95b8df 8786 current_program_space->executing_startup = 1;
44702360 8787 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8788}
8789
8790void
8791enable_breakpoints_after_startup (void)
8792{
6c95b8df 8793 current_program_space->executing_startup = 0;
f8eba3c6 8794 breakpoint_re_set ();
8bea4e01
UW
8795}
8796
7c16b83e
PA
8797/* Create a new single-step breakpoint for thread THREAD, with no
8798 locations. */
c906108c 8799
7c16b83e
PA
8800static struct breakpoint *
8801new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8802{
b270e6f9 8803 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8804
b270e6f9 8805 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8806 &momentary_breakpoint_ops);
8807
8808 b->disposition = disp_donttouch;
8809 b->frame_id = null_frame_id;
8810
8811 b->thread = thread;
8812 gdb_assert (b->thread != 0);
8813
b270e6f9 8814 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8815}
8816
8817/* Set a momentary breakpoint of type TYPE at address specified by
8818 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8819 frame. */
c906108c
SS
8820
8821struct breakpoint *
a6d9a66e
UW
8822set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8823 struct frame_id frame_id, enum bptype type)
c906108c 8824{
52f0bd74 8825 struct breakpoint *b;
edb3359d 8826
193facb3
JK
8827 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8828 tail-called one. */
8829 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8830
06edf0c0 8831 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8832 b->enable_state = bp_enabled;
8833 b->disposition = disp_donttouch;
818dd999 8834 b->frame_id = frame_id;
c906108c 8835
4a64f543
MS
8836 /* If we're debugging a multi-threaded program, then we want
8837 momentary breakpoints to be active in only a single thread of
8838 control. */
39f77062 8839 if (in_thread_list (inferior_ptid))
5d5658a1 8840 b->thread = ptid_to_global_thread_id (inferior_ptid);
c906108c 8841
44702360 8842 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8843
c906108c
SS
8844 return b;
8845}
611c83ae 8846
06edf0c0 8847/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8848 The new breakpoint will have type TYPE, use OPS as its
8849 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8850
06edf0c0
PA
8851static struct breakpoint *
8852momentary_breakpoint_from_master (struct breakpoint *orig,
8853 enum bptype type,
a1aa2221
LM
8854 const struct breakpoint_ops *ops,
8855 int loc_enabled)
e58b0e63
PA
8856{
8857 struct breakpoint *copy;
8858
06edf0c0 8859 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8860 copy->loc = allocate_bp_location (copy);
0e30163f 8861 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8862
a6d9a66e 8863 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8864 copy->loc->requested_address = orig->loc->requested_address;
8865 copy->loc->address = orig->loc->address;
8866 copy->loc->section = orig->loc->section;
6c95b8df 8867 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8868 copy->loc->probe = orig->loc->probe;
f8eba3c6 8869 copy->loc->line_number = orig->loc->line_number;
2f202fde 8870 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8871 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8872 copy->frame_id = orig->frame_id;
8873 copy->thread = orig->thread;
6c95b8df 8874 copy->pspace = orig->pspace;
e58b0e63
PA
8875
8876 copy->enable_state = bp_enabled;
8877 copy->disposition = disp_donttouch;
8878 copy->number = internal_breakpoint_number--;
8879
44702360 8880 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8881 return copy;
8882}
8883
06edf0c0
PA
8884/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8885 ORIG is NULL. */
8886
8887struct breakpoint *
8888clone_momentary_breakpoint (struct breakpoint *orig)
8889{
8890 /* If there's nothing to clone, then return nothing. */
8891 if (orig == NULL)
8892 return NULL;
8893
a1aa2221 8894 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8895}
8896
611c83ae 8897struct breakpoint *
a6d9a66e
UW
8898set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8899 enum bptype type)
611c83ae
PA
8900{
8901 struct symtab_and_line sal;
8902
8903 sal = find_pc_line (pc, 0);
8904 sal.pc = pc;
8905 sal.section = find_pc_overlay (pc);
8906 sal.explicit_pc = 1;
8907
a6d9a66e 8908 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8909}
c906108c 8910\f
c5aa993b 8911
c906108c
SS
8912/* Tell the user we have just set a breakpoint B. */
8913
8914static void
fba45db2 8915mention (struct breakpoint *b)
c906108c 8916{
348d480f 8917 b->ops->print_mention (b);
112e8700 8918 if (current_uiout->is_mi_like_p ())
fb40c209 8919 return;
c906108c
SS
8920 printf_filtered ("\n");
8921}
c906108c 8922\f
c5aa993b 8923
1a853c52
PA
8924static int bp_loc_is_permanent (struct bp_location *loc);
8925
0d381245 8926static struct bp_location *
39d61571 8927add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8928 const struct symtab_and_line *sal)
8929{
8930 struct bp_location *loc, **tmp;
3742cc8b
YQ
8931 CORE_ADDR adjusted_address;
8932 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8933
8934 if (loc_gdbarch == NULL)
8935 loc_gdbarch = b->gdbarch;
8936
8937 /* Adjust the breakpoint's address prior to allocating a location.
8938 Once we call allocate_bp_location(), that mostly uninitialized
8939 location will be placed on the location chain. Adjustment of the
8940 breakpoint may cause target_read_memory() to be called and we do
8941 not want its scan of the location chain to find a breakpoint and
8942 location that's only been partially initialized. */
8943 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8944 sal->pc, b->type);
0d381245 8945
d30113d4 8946 /* Sort the locations by their ADDRESS. */
39d61571 8947 loc = allocate_bp_location (b);
d30113d4
JK
8948 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8949 tmp = &((*tmp)->next))
0d381245 8950 ;
d30113d4 8951 loc->next = *tmp;
0d381245 8952 *tmp = loc;
3742cc8b 8953
0d381245 8954 loc->requested_address = sal->pc;
3742cc8b 8955 loc->address = adjusted_address;
6c95b8df 8956 loc->pspace = sal->pspace;
729662a5
TT
8957 loc->probe.probe = sal->probe;
8958 loc->probe.objfile = sal->objfile;
6c95b8df 8959 gdb_assert (loc->pspace != NULL);
0d381245 8960 loc->section = sal->section;
3742cc8b 8961 loc->gdbarch = loc_gdbarch;
f8eba3c6 8962 loc->line_number = sal->line;
2f202fde 8963 loc->symtab = sal->symtab;
f8eba3c6 8964
0e30163f
JK
8965 set_breakpoint_location_function (loc,
8966 sal->explicit_pc || sal->explicit_line);
1a853c52 8967
6ae88661
LM
8968 /* While by definition, permanent breakpoints are already present in the
8969 code, we don't mark the location as inserted. Normally one would expect
8970 that GDB could rely on that breakpoint instruction to stop the program,
8971 thus removing the need to insert its own breakpoint, except that executing
8972 the breakpoint instruction can kill the target instead of reporting a
8973 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8974 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8975 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8976 breakpoint be inserted normally results in QEMU knowing about the GDB
8977 breakpoint, and thus trap before the breakpoint instruction is executed.
8978 (If GDB later needs to continue execution past the permanent breakpoint,
8979 it manually increments the PC, thus avoiding executing the breakpoint
8980 instruction.) */
1a853c52 8981 if (bp_loc_is_permanent (loc))
6ae88661 8982 loc->permanent = 1;
1a853c52 8983
0d381245
VP
8984 return loc;
8985}
514f746b
AR
8986\f
8987
1cf4d951 8988/* See breakpoint.h. */
514f746b 8989
1cf4d951
PA
8990int
8991program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8992{
8993 int len;
8994 CORE_ADDR addr;
1afeeb75 8995 const gdb_byte *bpoint;
514f746b 8996 gdb_byte *target_mem;
939c61fa
JK
8997 struct cleanup *cleanup;
8998 int retval = 0;
514f746b 8999
1cf4d951
PA
9000 addr = address;
9001 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9002
9003 /* Software breakpoints unsupported? */
9004 if (bpoint == NULL)
9005 return 0;
9006
224c3ddb 9007 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
9008
9009 /* Enable the automatic memory restoration from breakpoints while
9010 we read the memory. Otherwise we could say about our temporary
9011 breakpoints they are permanent. */
9012 cleanup = make_show_memory_breakpoints_cleanup (0);
9013
9014 if (target_read_memory (address, target_mem, len) == 0
9015 && memcmp (target_mem, bpoint, len) == 0)
9016 retval = 1;
9017
9018 do_cleanups (cleanup);
9019
9020 return retval;
9021}
9022
9023/* Return 1 if LOC is pointing to a permanent breakpoint,
9024 return 0 otherwise. */
9025
9026static int
9027bp_loc_is_permanent (struct bp_location *loc)
9028{
514f746b
AR
9029 gdb_assert (loc != NULL);
9030
244558af
LM
9031 /* If we have a catchpoint or a watchpoint, just return 0. We should not
9032 attempt to read from the addresses the locations of these breakpoint types
9033 point to. program_breakpoint_here_p, below, will attempt to read
9034 memory. */
9035 if (!breakpoint_address_is_meaningful (loc->owner))
9036 return 0;
9037
5ed8105e 9038 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9039 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 9040 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
9041}
9042
e7e0cddf
SS
9043/* Build a command list for the dprintf corresponding to the current
9044 settings of the dprintf style options. */
9045
9046static void
9047update_dprintf_command_list (struct breakpoint *b)
9048{
9049 char *dprintf_args = b->extra_string;
9050 char *printf_line = NULL;
9051
9052 if (!dprintf_args)
9053 return;
9054
9055 dprintf_args = skip_spaces (dprintf_args);
9056
9057 /* Allow a comma, as it may have terminated a location, but don't
9058 insist on it. */
9059 if (*dprintf_args == ',')
9060 ++dprintf_args;
9061 dprintf_args = skip_spaces (dprintf_args);
9062
9063 if (*dprintf_args != '"')
9064 error (_("Bad format string, missing '\"'."));
9065
d3ce09f5 9066 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 9067 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 9068 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
9069 {
9070 if (!dprintf_function)
9071 error (_("No function supplied for dprintf call"));
9072
9073 if (dprintf_channel && strlen (dprintf_channel) > 0)
9074 printf_line = xstrprintf ("call (void) %s (%s,%s)",
9075 dprintf_function,
9076 dprintf_channel,
9077 dprintf_args);
9078 else
9079 printf_line = xstrprintf ("call (void) %s (%s)",
9080 dprintf_function,
9081 dprintf_args);
9082 }
d3ce09f5
SS
9083 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9084 {
9085 if (target_can_run_breakpoint_commands ())
9086 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9087 else
9088 {
9089 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9090 printf_line = xstrprintf ("printf %s", dprintf_args);
9091 }
9092 }
e7e0cddf
SS
9093 else
9094 internal_error (__FILE__, __LINE__,
9095 _("Invalid dprintf style."));
9096
f28045c2 9097 gdb_assert (printf_line != NULL);
9d6e6e84 9098 /* Manufacture a printf sequence. */
f28045c2 9099 {
8d749320 9100 struct command_line *printf_cmd_line = XNEW (struct command_line);
e7e0cddf 9101
f28045c2
YQ
9102 printf_cmd_line->control_type = simple_control;
9103 printf_cmd_line->body_count = 0;
9104 printf_cmd_line->body_list = NULL;
9d6e6e84 9105 printf_cmd_line->next = NULL;
f28045c2 9106 printf_cmd_line->line = printf_line;
e7e0cddf 9107
93921405 9108 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
f28045c2 9109 }
e7e0cddf
SS
9110}
9111
9112/* Update all dprintf commands, making their command lists reflect
9113 current style settings. */
9114
9115static void
9116update_dprintf_commands (char *args, int from_tty,
9117 struct cmd_list_element *c)
9118{
9119 struct breakpoint *b;
9120
9121 ALL_BREAKPOINTS (b)
9122 {
9123 if (b->type == bp_dprintf)
9124 update_dprintf_command_list (b);
9125 }
9126}
c3f6f71d 9127
f00aae0f
KS
9128/* Create a breakpoint with SAL as location. Use LOCATION
9129 as a description of the location, and COND_STRING
b35a8b2f
DE
9130 as condition expression. If LOCATION is NULL then create an
9131 "address location" from the address in the SAL. */
018d34a4
VP
9132
9133static void
d9b3f62e 9134init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 9135 gdb::array_view<const symtab_and_line> sals,
ffc2605c 9136 event_location_up &&location,
e1e01040
PA
9137 gdb::unique_xmalloc_ptr<char> filter,
9138 gdb::unique_xmalloc_ptr<char> cond_string,
9139 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9140 enum bptype type, enum bpdisp disposition,
9141 int thread, int task, int ignore_count,
c0a91b2b 9142 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9143 int enabled, int internal, unsigned flags,
9144 int display_canonical)
018d34a4 9145{
0d381245 9146 int i;
018d34a4
VP
9147
9148 if (type == bp_hardware_breakpoint)
9149 {
fbbd034e
AS
9150 int target_resources_ok;
9151
9152 i = hw_breakpoint_used_count ();
9153 target_resources_ok =
9154 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
9155 i + 1, 0);
9156 if (target_resources_ok == 0)
9157 error (_("No hardware breakpoint support in the target."));
9158 else if (target_resources_ok < 0)
9159 error (_("Hardware breakpoints used exceeds limit."));
9160 }
9161
6c5b2ebe 9162 gdb_assert (!sals.empty ());
6c95b8df 9163
6c5b2ebe 9164 for (const auto &sal : sals)
0d381245 9165 {
0d381245
VP
9166 struct bp_location *loc;
9167
9168 if (from_tty)
5af949e3
UW
9169 {
9170 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9171 if (!loc_gdbarch)
9172 loc_gdbarch = gdbarch;
9173
9174 describe_other_breakpoints (loc_gdbarch,
6c95b8df 9175 sal.pspace, sal.pc, sal.section, thread);
5af949e3 9176 }
0d381245 9177
6c5b2ebe 9178 if (&sal == &sals[0])
0d381245 9179 {
d9b3f62e 9180 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 9181 b->thread = thread;
4a306c9a 9182 b->task = task;
855a6e68 9183
e1e01040
PA
9184 b->cond_string = cond_string.release ();
9185 b->extra_string = extra_string.release ();
0d381245 9186 b->ignore_count = ignore_count;
41447f92 9187 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 9188 b->disposition = disposition;
6c95b8df 9189
44f238bb
PA
9190 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9191 b->loc->inserted = 1;
9192
0fb4aa4b
PA
9193 if (type == bp_static_tracepoint)
9194 {
d9b3f62e 9195 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
9196 struct static_tracepoint_marker marker;
9197
983af33b 9198 if (strace_marker_p (b))
0fb4aa4b
PA
9199 {
9200 /* We already know the marker exists, otherwise, we
9201 wouldn't see a sal for it. */
d28cd78a
TT
9202 const char *p
9203 = &event_location_to_string (b->location.get ())[3];
f00aae0f 9204 const char *endp;
0fb4aa4b 9205 char *marker_str;
0fb4aa4b 9206
f1735a53 9207 p = skip_spaces (p);
0fb4aa4b 9208
f1735a53 9209 endp = skip_to_space (p);
0fb4aa4b
PA
9210
9211 marker_str = savestring (p, endp - p);
d9b3f62e 9212 t->static_trace_marker_id = marker_str;
0fb4aa4b 9213
3e43a32a
MS
9214 printf_filtered (_("Probed static tracepoint "
9215 "marker \"%s\"\n"),
d9b3f62e 9216 t->static_trace_marker_id);
0fb4aa4b
PA
9217 }
9218 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9219 {
d9b3f62e 9220 t->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
9221 release_static_tracepoint_marker (&marker);
9222
3e43a32a
MS
9223 printf_filtered (_("Probed static tracepoint "
9224 "marker \"%s\"\n"),
d9b3f62e 9225 t->static_trace_marker_id);
0fb4aa4b
PA
9226 }
9227 else
3e43a32a
MS
9228 warning (_("Couldn't determine the static "
9229 "tracepoint marker to probe"));
0fb4aa4b
PA
9230 }
9231
0d381245
VP
9232 loc = b->loc;
9233 }
9234 else
018d34a4 9235 {
39d61571 9236 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
9237 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9238 loc->inserted = 1;
0d381245
VP
9239 }
9240
9241 if (b->cond_string)
9242 {
bbc13ae3
KS
9243 const char *arg = b->cond_string;
9244
1bb9788d
TT
9245 loc->cond = parse_exp_1 (&arg, loc->address,
9246 block_for_pc (loc->address), 0);
0d381245 9247 if (*arg)
588ae58c 9248 error (_("Garbage '%s' follows condition"), arg);
018d34a4 9249 }
e7e0cddf
SS
9250
9251 /* Dynamic printf requires and uses additional arguments on the
9252 command line, otherwise it's an error. */
9253 if (type == bp_dprintf)
9254 {
9255 if (b->extra_string)
9256 update_dprintf_command_list (b);
9257 else
9258 error (_("Format string required"));
9259 }
9260 else if (b->extra_string)
588ae58c 9261 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 9262 }
018d34a4 9263
56435ebe 9264 b->display_canonical = display_canonical;
f00aae0f 9265 if (location != NULL)
d28cd78a 9266 b->location = std::move (location);
018d34a4 9267 else
d28cd78a 9268 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 9269 b->filter = filter.release ();
d9b3f62e 9270}
018d34a4 9271
d9b3f62e
PA
9272static void
9273create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 9274 gdb::array_view<const symtab_and_line> sals,
ffc2605c 9275 event_location_up &&location,
e1e01040
PA
9276 gdb::unique_xmalloc_ptr<char> filter,
9277 gdb::unique_xmalloc_ptr<char> cond_string,
9278 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9279 enum bptype type, enum bpdisp disposition,
9280 int thread, int task, int ignore_count,
c0a91b2b 9281 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9282 int enabled, int internal, unsigned flags,
9283 int display_canonical)
d9b3f62e 9284{
a5e364af 9285 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 9286
a5e364af 9287 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 9288 sals, std::move (location),
e1e01040
PA
9289 std::move (filter),
9290 std::move (cond_string),
9291 std::move (extra_string),
d9b3f62e
PA
9292 type, disposition,
9293 thread, task, ignore_count,
9294 ops, from_tty,
44f238bb
PA
9295 enabled, internal, flags,
9296 display_canonical);
d9b3f62e 9297
b270e6f9 9298 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
9299}
9300
9301/* Add SALS.nelts breakpoints to the breakpoint table. For each
9302 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9303 value. COND_STRING, if not NULL, specified the condition to be
9304 used for all breakpoints. Essentially the only case where
9305 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9306 function. In that case, it's still not possible to specify
9307 separate conditions for different overloaded functions, so
9308 we take just a single condition string.
9309
c3f6f71d 9310 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 9311 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
9312 array contents). If the function fails (error() is called), the
9313 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 9314 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
9315
9316static void
8cdf0e15 9317create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 9318 struct linespec_result *canonical,
e1e01040
PA
9319 gdb::unique_xmalloc_ptr<char> cond_string,
9320 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
9321 enum bptype type, enum bpdisp disposition,
9322 int thread, int task, int ignore_count,
c0a91b2b 9323 const struct breakpoint_ops *ops, int from_tty,
44f238bb 9324 int enabled, int internal, unsigned flags)
c906108c 9325{
f8eba3c6 9326 if (canonical->pre_expanded)
6c5b2ebe 9327 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 9328
6c5b2ebe 9329 for (const auto &lsal : canonical->lsals)
c3f6f71d 9330 {
f00aae0f 9331 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 9332 'break', without arguments. */
ffc2605c 9333 event_location_up location
f00aae0f 9334 = (canonical->location != NULL
8e9e35b1 9335 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 9336 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 9337 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 9338
6c5b2ebe 9339 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 9340 std::move (location),
e1e01040
PA
9341 std::move (filter_string),
9342 std::move (cond_string),
9343 std::move (extra_string),
e7e0cddf 9344 type, disposition,
84f4c1fe 9345 thread, task, ignore_count, ops,
44f238bb 9346 from_tty, enabled, internal, flags,
56435ebe 9347 canonical->special_display);
c3f6f71d 9348 }
c3f6f71d 9349}
c906108c 9350
f00aae0f 9351/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 9352 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
9353 addresses found. LOCATION points to the end of the SAL (for
9354 linespec locations).
9998af43
TJB
9355
9356 The array and the line spec strings are allocated on the heap, it is
9357 the caller's responsibility to free them. */
c906108c 9358
b9362cc7 9359static void
f00aae0f 9360parse_breakpoint_sals (const struct event_location *location,
58438ac1 9361 struct linespec_result *canonical)
c3f6f71d 9362{
f00aae0f
KS
9363 struct symtab_and_line cursal;
9364
9365 if (event_location_type (location) == LINESPEC_LOCATION)
9366 {
9367 const char *address = get_linespec_location (location);
9368
9369 if (address == NULL)
9370 {
9371 /* The last displayed codepoint, if it's valid, is our default
9372 breakpoint address. */
9373 if (last_displayed_sal_is_valid ())
9374 {
f00aae0f
KS
9375 /* Set sal's pspace, pc, symtab, and line to the values
9376 corresponding to the last call to print_frame_info.
9377 Be sure to reinitialize LINE with NOTCURRENT == 0
9378 as the breakpoint line number is inappropriate otherwise.
9379 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9380 symtab_and_line sal = get_last_displayed_sal ();
9381 CORE_ADDR pc = sal.pc;
9382
f00aae0f
KS
9383 sal = find_pc_line (pc, 0);
9384
9385 /* "break" without arguments is equivalent to "break *PC"
9386 where PC is the last displayed codepoint's address. So
9387 make sure to set sal.explicit_pc to prevent GDB from
9388 trying to expand the list of sals to include all other
9389 instances with the same symtab and line. */
9390 sal.pc = pc;
9391 sal.explicit_pc = 1;
9392
6c5b2ebe
PA
9393 struct linespec_sals lsal;
9394 lsal.sals = {sal};
f00aae0f
KS
9395 lsal.canonical = NULL;
9396
6c5b2ebe 9397 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9398 return;
9399 }
9400 else
9401 error (_("No default breakpoint address now."));
c906108c 9402 }
c906108c 9403 }
f00aae0f
KS
9404
9405 /* Force almost all breakpoints to be in terms of the
9406 current_source_symtab (which is decode_line_1's default).
9407 This should produce the results we want almost all of the
9408 time while leaving default_breakpoint_* alone.
9409
9410 ObjC: However, don't match an Objective-C method name which
9411 may have a '+' or '-' succeeded by a '['. */
9412 cursal = get_current_source_symtab_and_line ();
9413 if (last_displayed_sal_is_valid ())
c906108c 9414 {
f00aae0f 9415 const char *address = NULL;
cc80f267 9416
f00aae0f
KS
9417 if (event_location_type (location) == LINESPEC_LOCATION)
9418 address = get_linespec_location (location);
cc80f267 9419
f00aae0f
KS
9420 if (!cursal.symtab
9421 || (address != NULL
9422 && strchr ("+-", address[0]) != NULL
9423 && address[1] != '['))
9424 {
c2f4122d 9425 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9426 get_last_displayed_symtab (),
9427 get_last_displayed_line (),
9428 canonical, NULL, NULL);
9429 return;
9430 }
c906108c 9431 }
f00aae0f 9432
c2f4122d 9433 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9434 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9435}
c906108c 9436
c906108c 9437
c3f6f71d 9438/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9439 inserted as a breakpoint. If it can't throw an error. */
c906108c 9440
b9362cc7 9441static void
6c5b2ebe 9442breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9443{
6c5b2ebe
PA
9444 for (auto &sal : sals)
9445 resolve_sal_pc (&sal);
c3f6f71d
JM
9446}
9447
7a697b8d
SS
9448/* Fast tracepoints may have restrictions on valid locations. For
9449 instance, a fast tracepoint using a jump instead of a trap will
9450 likely have to overwrite more bytes than a trap would, and so can
9451 only be placed where the instruction is longer than the jump, or a
9452 multi-instruction sequence does not have a jump into the middle of
9453 it, etc. */
9454
9455static void
9456check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9457 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9458{
6c5b2ebe 9459 int rslt;
7a697b8d
SS
9460 char *msg;
9461 struct cleanup *old_chain;
9462
6c5b2ebe 9463 for (const auto &sal : sals)
7a697b8d 9464 {
f8eba3c6
TT
9465 struct gdbarch *sarch;
9466
6c5b2ebe 9467 sarch = get_sal_arch (sal);
f8eba3c6
TT
9468 /* We fall back to GDBARCH if there is no architecture
9469 associated with SAL. */
9470 if (sarch == NULL)
9471 sarch = gdbarch;
6c5b2ebe 9472 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg);
7a697b8d
SS
9473 old_chain = make_cleanup (xfree, msg);
9474
9475 if (!rslt)
53c3572a 9476 error (_("May not have a fast tracepoint at %s%s"),
6c5b2ebe 9477 paddress (sarch, sal.pc), (msg ? msg : ""));
7a697b8d
SS
9478
9479 do_cleanups (old_chain);
9480 }
9481}
9482
018d34a4
VP
9483/* Given TOK, a string specification of condition and thread, as
9484 accepted by the 'break' command, extract the condition
9485 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9486 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9487 If no condition is found, *COND_STRING is set to NULL.
9488 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9489
9490static void
bbc13ae3 9491find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9492 char **cond_string, int *thread, int *task,
9493 char **rest)
018d34a4
VP
9494{
9495 *cond_string = NULL;
9496 *thread = -1;
ed1d1739
KS
9497 *task = 0;
9498 *rest = NULL;
9499
018d34a4
VP
9500 while (tok && *tok)
9501 {
bbc13ae3 9502 const char *end_tok;
018d34a4 9503 int toklen;
bbc13ae3
KS
9504 const char *cond_start = NULL;
9505 const char *cond_end = NULL;
cc59ec59 9506
f1735a53 9507 tok = skip_spaces (tok);
e7e0cddf
SS
9508
9509 if ((*tok == '"' || *tok == ',') && rest)
9510 {
9511 *rest = savestring (tok, strlen (tok));
9512 return;
9513 }
9514
f1735a53 9515 end_tok = skip_to_space (tok);
d634f2de 9516
018d34a4 9517 toklen = end_tok - tok;
d634f2de 9518
018d34a4
VP
9519 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9520 {
9521 tok = cond_start = end_tok + 1;
4d01a485 9522 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9523 cond_end = tok;
d634f2de 9524 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9525 }
9526 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9527 {
5d5658a1
PA
9528 const char *tmptok;
9529 struct thread_info *thr;
d634f2de 9530
018d34a4 9531 tok = end_tok + 1;
5d5658a1 9532 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9533 if (tok == tmptok)
9534 error (_("Junk after thread keyword."));
5d5658a1 9535 *thread = thr->global_num;
bbc13ae3 9536 tok = tmptok;
018d34a4 9537 }
4a306c9a
JB
9538 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9539 {
9540 char *tmptok;
9541
9542 tok = end_tok + 1;
bbc13ae3 9543 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9544 if (tok == tmptok)
9545 error (_("Junk after task keyword."));
9546 if (!valid_task_id (*task))
b6199126 9547 error (_("Unknown task %d."), *task);
bbc13ae3 9548 tok = tmptok;
4a306c9a 9549 }
e7e0cddf
SS
9550 else if (rest)
9551 {
9552 *rest = savestring (tok, strlen (tok));
ccab2054 9553 return;
e7e0cddf 9554 }
018d34a4
VP
9555 else
9556 error (_("Junk at end of arguments."));
9557 }
9558}
9559
0fb4aa4b
PA
9560/* Decode a static tracepoint marker spec. */
9561
6c5b2ebe 9562static std::vector<symtab_and_line>
f00aae0f 9563decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b
PA
9564{
9565 VEC(static_tracepoint_marker_p) *markers = NULL;
0fb4aa4b 9566 struct cleanup *old_chain;
f00aae0f
KS
9567 const char *p = &(*arg_p)[3];
9568 const char *endp;
0fb4aa4b
PA
9569 char *marker_str;
9570 int i;
9571
f1735a53 9572 p = skip_spaces (p);
0fb4aa4b 9573
f1735a53 9574 endp = skip_to_space (p);
0fb4aa4b
PA
9575
9576 marker_str = savestring (p, endp - p);
9577 old_chain = make_cleanup (xfree, marker_str);
9578
9579 markers = target_static_tracepoint_markers_by_strid (marker_str);
9580 if (VEC_empty(static_tracepoint_marker_p, markers))
9581 error (_("No known static tracepoint marker named %s"), marker_str);
9582
6c5b2ebe
PA
9583 std::vector<symtab_and_line> sals;
9584 sals.reserve (VEC_length(static_tracepoint_marker_p, markers));
0fb4aa4b 9585
6c5b2ebe 9586 for (i = 0; i < VEC_length(static_tracepoint_marker_p, markers); i++)
0fb4aa4b
PA
9587 {
9588 struct static_tracepoint_marker *marker;
9589
9590 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9591
51abb421 9592 symtab_and_line sal = find_pc_line (marker->address, 0);
6c5b2ebe
PA
9593 sal.pc = marker->address;
9594 sals.push_back (sal);
0fb4aa4b
PA
9595
9596 release_static_tracepoint_marker (marker);
9597 }
9598
9599 do_cleanups (old_chain);
9600
9601 *arg_p = endp;
9602 return sals;
9603}
9604
f00aae0f 9605/* See breakpoint.h. */
0101ce28 9606
8cdf0e15
VP
9607int
9608create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9609 const struct event_location *location,
9610 const char *cond_string,
9611 int thread, const char *extra_string,
f00aae0f 9612 int parse_extra,
0fb4aa4b 9613 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9614 int ignore_count,
9615 enum auto_boolean pending_break_support,
c0a91b2b 9616 const struct breakpoint_ops *ops,
44f238bb
PA
9617 int from_tty, int enabled, int internal,
9618 unsigned flags)
c3f6f71d 9619{
7efd8fc2 9620 struct linespec_result canonical;
80c99de1 9621 struct cleanup *bkpt_chain = NULL;
0101ce28 9622 int pending = 0;
4a306c9a 9623 int task = 0;
86b17b60 9624 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9625
348d480f
PA
9626 gdb_assert (ops != NULL);
9627
f00aae0f
KS
9628 /* If extra_string isn't useful, set it to NULL. */
9629 if (extra_string != NULL && *extra_string == '\0')
9630 extra_string = NULL;
9631
492d29ea 9632 TRY
b78a6381 9633 {
f00aae0f 9634 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9635 }
492d29ea 9636 CATCH (e, RETURN_MASK_ERROR)
0101ce28 9637 {
492d29ea
PA
9638 /* If caller is interested in rc value from parse, set
9639 value. */
9640 if (e.error == NOT_FOUND_ERROR)
0101ce28 9641 {
05ff989b
AC
9642 /* If pending breakpoint support is turned off, throw
9643 error. */
fa8d40ab
JJ
9644
9645 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
9646 throw_exception (e);
9647
9648 exception_print (gdb_stderr, e);
fa8d40ab 9649
05ff989b
AC
9650 /* If pending breakpoint support is auto query and the user
9651 selects no, then simply return the error code. */
059fb39f 9652 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9653 && !nquery (_("Make %s pending on future shared library load? "),
9654 bptype_string (type_wanted)))
fd9b8c24 9655 return 0;
fa8d40ab 9656
05ff989b
AC
9657 /* At this point, either the user was queried about setting
9658 a pending breakpoint and selected yes, or pending
9659 breakpoint behavior is on and thus a pending breakpoint
9660 is defaulted on behalf of the user. */
f00aae0f 9661 pending = 1;
0101ce28 9662 }
492d29ea
PA
9663 else
9664 throw_exception (e);
0101ce28 9665 }
492d29ea
PA
9666 END_CATCH
9667
6c5b2ebe 9668 if (!pending && canonical.lsals.empty ())
492d29ea 9669 return 0;
c3f6f71d 9670
c3f6f71d
JM
9671 /* ----------------------------- SNIP -----------------------------
9672 Anything added to the cleanup chain beyond this point is assumed
9673 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
9674 then the memory is not reclaimed. */
9675 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 9676
c3f6f71d
JM
9677 /* Resolve all line numbers to PC's and verify that the addresses
9678 are ok for the target. */
0101ce28 9679 if (!pending)
f8eba3c6 9680 {
6c5b2ebe
PA
9681 for (auto &lsal : canonical.lsals)
9682 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9683 }
c3f6f71d 9684
7a697b8d 9685 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9686 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9687 {
6c5b2ebe
PA
9688 for (const auto &lsal : canonical.lsals)
9689 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9690 }
7a697b8d 9691
c3f6f71d
JM
9692 /* Verify that condition can be parsed, before setting any
9693 breakpoints. Allocate a separate condition expression for each
4a64f543 9694 breakpoint. */
0101ce28 9695 if (!pending)
c3f6f71d 9696 {
e1e01040
PA
9697 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9698 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9699
f00aae0f 9700 if (parse_extra)
72b2ff0e 9701 {
0878d0fa 9702 char *rest;
e1e01040 9703 char *cond;
52d361e1 9704
6c5b2ebe 9705 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9706
0878d0fa
YQ
9707 /* Here we only parse 'arg' to separate condition
9708 from thread number, so parsing in context of first
9709 sal is OK. When setting the breakpoint we'll
9710 re-parse it in context of each sal. */
9711
6c5b2ebe 9712 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9713 &cond, &thread, &task, &rest);
9714 cond_string_copy.reset (cond);
9715 extra_string_copy.reset (rest);
72b2ff0e 9716 }
2f069f6f 9717 else
72b2ff0e 9718 {
f00aae0f
KS
9719 if (type_wanted != bp_dprintf
9720 && extra_string != NULL && *extra_string != '\0')
9721 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9722
9723 /* Create a private copy of condition string. */
9724 if (cond_string)
e1e01040 9725 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9726 /* Create a private copy of any extra string. */
9727 if (extra_string)
e1e01040 9728 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9729 }
0fb4aa4b 9730
52d361e1 9731 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9732 std::move (cond_string_copy),
9733 std::move (extra_string_copy),
9734 type_wanted,
d9b3f62e
PA
9735 tempflag ? disp_del : disp_donttouch,
9736 thread, task, ignore_count, ops,
44f238bb 9737 from_tty, enabled, internal, flags);
c906108c 9738 }
0101ce28
JJ
9739 else
9740 {
a5e364af 9741 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9742
a5e364af 9743 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9744 b->location = copy_event_location (location);
bfccc43c 9745
f00aae0f
KS
9746 if (parse_extra)
9747 b->cond_string = NULL;
e12c7713
MK
9748 else
9749 {
9750 /* Create a private copy of condition string. */
e1e01040 9751 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9752 b->thread = thread;
e12c7713 9753 }
f00aae0f
KS
9754
9755 /* Create a private copy of any extra string. */
e1e01040 9756 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9757 b->ignore_count = ignore_count;
0101ce28 9758 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9759 b->condition_not_parsed = 1;
41447f92 9760 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9761 if ((type_wanted != bp_breakpoint
9762 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9763 b->pspace = current_program_space;
8bea4e01 9764
b270e6f9 9765 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9766 }
9767
6c5b2ebe 9768 if (canonical.lsals.size () > 1)
95a42b64 9769 {
3e43a32a
MS
9770 warning (_("Multiple breakpoints were set.\nUse the "
9771 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9772 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9773 }
9774
80c99de1
PA
9775 /* That's it. Discard the cleanups for data inserted into the
9776 breakpoint. */
9777 discard_cleanups (bkpt_chain);
217dc9e2 9778
80c99de1 9779 /* error call may happen here - have BKPT_CHAIN already discarded. */
44702360 9780 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9781
9782 return 1;
c3f6f71d 9783}
c906108c 9784
348d480f 9785/* Set a breakpoint.
72b2ff0e
VP
9786 ARG is a string describing breakpoint address,
9787 condition, and thread.
9788 FLAG specifies if a breakpoint is hardware on,
9789 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9790 and BP_TEMPFLAG. */
348d480f 9791
98deb0da 9792static void
72b2ff0e 9793break_command_1 (char *arg, int flag, int from_tty)
c3f6f71d 9794{
72b2ff0e 9795 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9796 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9797 ? bp_hardware_breakpoint
9798 : bp_breakpoint);
55aa24fb 9799 struct breakpoint_ops *ops;
f00aae0f 9800
ffc2605c 9801 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9802
9803 /* Matching breakpoints on probes. */
5b56227b 9804 if (location != NULL
ffc2605c 9805 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9806 ops = &bkpt_probe_breakpoint_ops;
9807 else
9808 ops = &bkpt_breakpoint_ops;
c3f6f71d 9809
8cdf0e15 9810 create_breakpoint (get_current_arch (),
ffc2605c 9811 location.get (),
f00aae0f 9812 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9813 tempflag, type_wanted,
8cdf0e15
VP
9814 0 /* Ignore count */,
9815 pending_break_support,
55aa24fb 9816 ops,
8cdf0e15 9817 from_tty,
84f4c1fe 9818 1 /* enabled */,
44f238bb
PA
9819 0 /* internal */,
9820 0);
c906108c
SS
9821}
9822
c906108c
SS
9823/* Helper function for break_command_1 and disassemble_command. */
9824
9825void
fba45db2 9826resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9827{
9828 CORE_ADDR pc;
9829
9830 if (sal->pc == 0 && sal->symtab != NULL)
9831 {
9832 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9833 error (_("No line %d in file \"%s\"."),
05cba821 9834 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9835 sal->pc = pc;
6a048695 9836
4a64f543
MS
9837 /* If this SAL corresponds to a breakpoint inserted using a line
9838 number, then skip the function prologue if necessary. */
6a048695 9839 if (sal->explicit_line)
059acae7 9840 skip_prologue_sal (sal);
c906108c
SS
9841 }
9842
9843 if (sal->section == 0 && sal->symtab != NULL)
9844 {
346d1dfe 9845 const struct blockvector *bv;
3977b71f 9846 const struct block *b;
c5aa993b 9847 struct symbol *sym;
c906108c 9848
43f3e411
DE
9849 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9850 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9851 if (bv != NULL)
9852 {
7f0df278 9853 sym = block_linkage_function (b);
c906108c
SS
9854 if (sym != NULL)
9855 {
eb822aa6
DE
9856 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9857 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9858 sym);
c906108c
SS
9859 }
9860 else
9861 {
4a64f543
MS
9862 /* It really is worthwhile to have the section, so we'll
9863 just have to look harder. This case can be executed
9864 if we have line numbers but no functions (as can
9865 happen in assembly source). */
c906108c 9866
5ed8105e 9867 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9868 switch_to_program_space_and_thread (sal->pspace);
c906108c 9869
5ed8105e 9870 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9871 if (msym.minsym)
efd66ac6 9872 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9873 }
9874 }
9875 }
9876}
9877
9878void
fba45db2 9879break_command (char *arg, int from_tty)
c906108c 9880{
db107f19 9881 break_command_1 (arg, 0, from_tty);
c906108c
SS
9882}
9883
c906108c 9884void
fba45db2 9885tbreak_command (char *arg, int from_tty)
c906108c 9886{
db107f19 9887 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9888}
9889
c906108c 9890static void
fba45db2 9891hbreak_command (char *arg, int from_tty)
c906108c 9892{
db107f19 9893 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9894}
9895
9896static void
fba45db2 9897thbreak_command (char *arg, int from_tty)
c906108c 9898{
db107f19 9899 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9900}
9901
9902static void
fba45db2 9903stop_command (char *arg, int from_tty)
c906108c 9904{
a3f17187 9905 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9906Usage: stop in <function | address>\n\
a3f17187 9907 stop at <line>\n"));
c906108c
SS
9908}
9909
9910static void
fba45db2 9911stopin_command (char *arg, int from_tty)
c906108c
SS
9912{
9913 int badInput = 0;
9914
c5aa993b 9915 if (arg == (char *) NULL)
c906108c
SS
9916 badInput = 1;
9917 else if (*arg != '*')
9918 {
9919 char *argptr = arg;
9920 int hasColon = 0;
9921
4a64f543 9922 /* Look for a ':'. If this is a line number specification, then
53a5351d 9923 say it is bad, otherwise, it should be an address or
4a64f543 9924 function/method name. */
c906108c 9925 while (*argptr && !hasColon)
c5aa993b
JM
9926 {
9927 hasColon = (*argptr == ':');
9928 argptr++;
9929 }
c906108c
SS
9930
9931 if (hasColon)
c5aa993b 9932 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9933 else
c5aa993b 9934 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9935 }
9936
9937 if (badInput)
a3f17187 9938 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9939 else
db107f19 9940 break_command_1 (arg, 0, from_tty);
c906108c
SS
9941}
9942
9943static void
fba45db2 9944stopat_command (char *arg, int from_tty)
c906108c
SS
9945{
9946 int badInput = 0;
9947
c5aa993b 9948 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9949 badInput = 1;
9950 else
9951 {
9952 char *argptr = arg;
9953 int hasColon = 0;
9954
4a64f543
MS
9955 /* Look for a ':'. If there is a '::' then get out, otherwise
9956 it is probably a line number. */
c906108c 9957 while (*argptr && !hasColon)
c5aa993b
JM
9958 {
9959 hasColon = (*argptr == ':');
9960 argptr++;
9961 }
c906108c
SS
9962
9963 if (hasColon)
c5aa993b 9964 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9965 else
c5aa993b 9966 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9967 }
9968
9969 if (badInput)
a3f17187 9970 printf_filtered (_("Usage: stop at <line>\n"));
c906108c 9971 else
db107f19 9972 break_command_1 (arg, 0, from_tty);
c906108c
SS
9973}
9974
e7e0cddf
SS
9975/* The dynamic printf command is mostly like a regular breakpoint, but
9976 with a prewired command list consisting of a single output command,
9977 built from extra arguments supplied on the dprintf command
9978 line. */
9979
da821c7b 9980static void
e7e0cddf
SS
9981dprintf_command (char *arg, int from_tty)
9982{
ffc2605c 9983 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9984
9985 /* If non-NULL, ARG should have been advanced past the location;
9986 the next character must be ','. */
9987 if (arg != NULL)
9988 {
9989 if (arg[0] != ',' || arg[1] == '\0')
9990 error (_("Format string required"));
9991 else
9992 {
9993 /* Skip the comma. */
9994 ++arg;
9995 }
9996 }
9997
e7e0cddf 9998 create_breakpoint (get_current_arch (),
ffc2605c 9999 location.get (),
f00aae0f 10000 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
10001 0, bp_dprintf,
10002 0 /* Ignore count */,
10003 pending_break_support,
10004 &dprintf_breakpoint_ops,
10005 from_tty,
10006 1 /* enabled */,
10007 0 /* internal */,
10008 0);
10009}
10010
d3ce09f5
SS
10011static void
10012agent_printf_command (char *arg, int from_tty)
10013{
10014 error (_("May only run agent-printf on the target"));
10015}
10016
f1310107
TJB
10017/* Implement the "breakpoint_hit" breakpoint_ops method for
10018 ranged breakpoints. */
10019
10020static int
10021breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10022 struct address_space *aspace,
09ac7c10
TT
10023 CORE_ADDR bp_addr,
10024 const struct target_waitstatus *ws)
f1310107 10025{
09ac7c10 10026 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 10027 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
10028 return 0;
10029
f1310107
TJB
10030 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10031 bl->length, aspace, bp_addr);
10032}
10033
10034/* Implement the "resources_needed" breakpoint_ops method for
10035 ranged breakpoints. */
10036
10037static int
10038resources_needed_ranged_breakpoint (const struct bp_location *bl)
10039{
10040 return target_ranged_break_num_registers ();
10041}
10042
10043/* Implement the "print_it" breakpoint_ops method for
10044 ranged breakpoints. */
10045
10046static enum print_stop_action
348d480f 10047print_it_ranged_breakpoint (bpstat bs)
f1310107 10048{
348d480f 10049 struct breakpoint *b = bs->breakpoint_at;
f1310107 10050 struct bp_location *bl = b->loc;
79a45e25 10051 struct ui_out *uiout = current_uiout;
f1310107
TJB
10052
10053 gdb_assert (b->type == bp_hardware_breakpoint);
10054
10055 /* Ranged breakpoints have only one location. */
10056 gdb_assert (bl && bl->next == NULL);
10057
10058 annotate_breakpoint (b->number);
f303dbd6
PA
10059
10060 maybe_print_thread_hit_breakpoint (uiout);
10061
f1310107 10062 if (b->disposition == disp_del)
112e8700 10063 uiout->text ("Temporary ranged breakpoint ");
f1310107 10064 else
112e8700
SM
10065 uiout->text ("Ranged breakpoint ");
10066 if (uiout->is_mi_like_p ())
f1310107 10067 {
112e8700 10068 uiout->field_string ("reason",
f1310107 10069 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 10070 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 10071 }
112e8700
SM
10072 uiout->field_int ("bkptno", b->number);
10073 uiout->text (", ");
f1310107
TJB
10074
10075 return PRINT_SRC_AND_LOC;
10076}
10077
10078/* Implement the "print_one" breakpoint_ops method for
10079 ranged breakpoints. */
10080
10081static void
10082print_one_ranged_breakpoint (struct breakpoint *b,
10083 struct bp_location **last_loc)
10084{
10085 struct bp_location *bl = b->loc;
10086 struct value_print_options opts;
79a45e25 10087 struct ui_out *uiout = current_uiout;
f1310107
TJB
10088
10089 /* Ranged breakpoints have only one location. */
10090 gdb_assert (bl && bl->next == NULL);
10091
10092 get_user_print_options (&opts);
10093
10094 if (opts.addressprint)
10095 /* We don't print the address range here, it will be printed later
10096 by print_one_detail_ranged_breakpoint. */
112e8700 10097 uiout->field_skip ("addr");
f1310107
TJB
10098 annotate_field (5);
10099 print_breakpoint_location (b, bl);
10100 *last_loc = bl;
10101}
10102
10103/* Implement the "print_one_detail" breakpoint_ops method for
10104 ranged breakpoints. */
10105
10106static void
10107print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10108 struct ui_out *uiout)
10109{
10110 CORE_ADDR address_start, address_end;
10111 struct bp_location *bl = b->loc;
d7e74731 10112 string_file stb;
f1310107
TJB
10113
10114 gdb_assert (bl);
10115
10116 address_start = bl->address;
10117 address_end = address_start + bl->length - 1;
10118
112e8700 10119 uiout->text ("\taddress range: ");
d7e74731
PA
10120 stb.printf ("[%s, %s]",
10121 print_core_address (bl->gdbarch, address_start),
10122 print_core_address (bl->gdbarch, address_end));
112e8700
SM
10123 uiout->field_stream ("addr", stb);
10124 uiout->text ("\n");
f1310107
TJB
10125}
10126
10127/* Implement the "print_mention" breakpoint_ops method for
10128 ranged breakpoints. */
10129
10130static void
10131print_mention_ranged_breakpoint (struct breakpoint *b)
10132{
10133 struct bp_location *bl = b->loc;
79a45e25 10134 struct ui_out *uiout = current_uiout;
f1310107
TJB
10135
10136 gdb_assert (bl);
10137 gdb_assert (b->type == bp_hardware_breakpoint);
10138
112e8700 10139 if (uiout->is_mi_like_p ())
f1310107
TJB
10140 return;
10141
10142 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10143 b->number, paddress (bl->gdbarch, bl->address),
10144 paddress (bl->gdbarch, bl->address + bl->length - 1));
10145}
10146
10147/* Implement the "print_recreate" breakpoint_ops method for
10148 ranged breakpoints. */
10149
10150static void
10151print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10152{
f00aae0f 10153 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
10154 event_location_to_string (b->location.get ()),
10155 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 10156 print_recreate_thread (b, fp);
f1310107
TJB
10157}
10158
10159/* The breakpoint_ops structure to be used in ranged breakpoints. */
10160
2060206e 10161static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
10162
10163/* Find the address where the end of the breakpoint range should be
10164 placed, given the SAL of the end of the range. This is so that if
10165 the user provides a line number, the end of the range is set to the
10166 last instruction of the given line. */
10167
10168static CORE_ADDR
10169find_breakpoint_range_end (struct symtab_and_line sal)
10170{
10171 CORE_ADDR end;
10172
10173 /* If the user provided a PC value, use it. Otherwise,
10174 find the address of the end of the given location. */
10175 if (sal.explicit_pc)
10176 end = sal.pc;
10177 else
10178 {
10179 int ret;
10180 CORE_ADDR start;
10181
10182 ret = find_line_pc_range (sal, &start, &end);
10183 if (!ret)
10184 error (_("Could not find location of the end of the range."));
10185
10186 /* find_line_pc_range returns the start of the next line. */
10187 end--;
10188 }
10189
10190 return end;
10191}
10192
10193/* Implement the "break-range" CLI command. */
10194
10195static void
10196break_range_command (char *arg, int from_tty)
10197{
870f88f7 10198 char *arg_start, *addr_string_start;
f1310107
TJB
10199 struct linespec_result canonical_start, canonical_end;
10200 int bp_count, can_use_bp, length;
10201 CORE_ADDR end;
10202 struct breakpoint *b;
f1310107
TJB
10203 struct cleanup *cleanup_bkpt;
10204
10205 /* We don't support software ranged breakpoints. */
10206 if (target_ranged_break_num_registers () < 0)
10207 error (_("This target does not support hardware ranged breakpoints."));
10208
10209 bp_count = hw_breakpoint_used_count ();
10210 bp_count += target_ranged_break_num_registers ();
10211 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10212 bp_count, 0);
10213 if (can_use_bp < 0)
10214 error (_("Hardware breakpoints used exceeds limit."));
10215
f8eba3c6 10216 arg = skip_spaces (arg);
f1310107
TJB
10217 if (arg == NULL || arg[0] == '\0')
10218 error(_("No address range specified."));
10219
f8eba3c6 10220 arg_start = arg;
ffc2605c
TT
10221 event_location_up start_location = string_to_event_location (&arg,
10222 current_language);
10223 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
10224
10225 if (arg[0] != ',')
10226 error (_("Too few arguments."));
6c5b2ebe 10227 else if (canonical_start.lsals.empty ())
f1310107 10228 error (_("Could not find location of the beginning of the range."));
f8eba3c6 10229
6c5b2ebe 10230 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 10231
6c5b2ebe
PA
10232 if (canonical_start.lsals.size () > 1
10233 || lsal_start.sals.size () != 1)
f1310107
TJB
10234 error (_("Cannot create a ranged breakpoint with multiple locations."));
10235
6c5b2ebe 10236 const symtab_and_line &sal_start = lsal_start.sals[0];
f8eba3c6 10237 addr_string_start = savestring (arg_start, arg - arg_start);
16e802b9 10238 cleanup_bkpt = make_cleanup (xfree, addr_string_start);
f1310107
TJB
10239
10240 arg++; /* Skip the comma. */
f8eba3c6 10241 arg = skip_spaces (arg);
f1310107
TJB
10242
10243 /* Parse the end location. */
10244
f1310107
TJB
10245 arg_start = arg;
10246
f8eba3c6 10247 /* We call decode_line_full directly here instead of using
f1310107
TJB
10248 parse_breakpoint_sals because we need to specify the start location's
10249 symtab and line as the default symtab and line for the end of the
10250 range. This makes it possible to have ranges like "foo.c:27, +14",
10251 where +14 means 14 lines from the start location. */
ffc2605c
TT
10252 event_location_up end_location = string_to_event_location (&arg,
10253 current_language);
10254 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
10255 sal_start.symtab, sal_start.line,
10256 &canonical_end, NULL, NULL);
10257
6c5b2ebe 10258 if (canonical_end.lsals.empty ())
f1310107 10259 error (_("Could not find location of the end of the range."));
f8eba3c6 10260
6c5b2ebe
PA
10261 const linespec_sals &lsal_end = canonical_end.lsals[0];
10262 if (canonical_end.lsals.size () > 1
10263 || lsal_end.sals.size () != 1)
f1310107
TJB
10264 error (_("Cannot create a ranged breakpoint with multiple locations."));
10265
6c5b2ebe 10266 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
10267
10268 end = find_breakpoint_range_end (sal_end);
10269 if (sal_start.pc > end)
177b42fe 10270 error (_("Invalid address range, end precedes start."));
f1310107
TJB
10271
10272 length = end - sal_start.pc + 1;
10273 if (length < 0)
10274 /* Length overflowed. */
10275 error (_("Address range too large."));
10276 else if (length == 1)
10277 {
10278 /* This range is simple enough to be handled by
10279 the `hbreak' command. */
10280 hbreak_command (addr_string_start, 1);
10281
10282 do_cleanups (cleanup_bkpt);
10283
10284 return;
10285 }
10286
10287 /* Now set up the breakpoint. */
10288 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 10289 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
10290 set_breakpoint_count (breakpoint_count + 1);
10291 b->number = breakpoint_count;
10292 b->disposition = disp_donttouch;
d28cd78a
TT
10293 b->location = std::move (start_location);
10294 b->location_range_end = std::move (end_location);
f1310107
TJB
10295 b->loc->length = length;
10296
f8eba3c6 10297 do_cleanups (cleanup_bkpt);
f1310107
TJB
10298
10299 mention (b);
8d3788bd 10300 observer_notify_breakpoint_created (b);
44702360 10301 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
10302}
10303
4a64f543
MS
10304/* Return non-zero if EXP is verified as constant. Returned zero
10305 means EXP is variable. Also the constant detection may fail for
10306 some constant expressions and in such case still falsely return
10307 zero. */
2e6e3d9c 10308
65d79d4b
SDJ
10309static int
10310watchpoint_exp_is_const (const struct expression *exp)
10311{
10312 int i = exp->nelts;
10313
10314 while (i > 0)
10315 {
10316 int oplenp, argsp;
10317
10318 /* We are only interested in the descriptor of each element. */
10319 operator_length (exp, i, &oplenp, &argsp);
10320 i -= oplenp;
10321
10322 switch (exp->elts[i].opcode)
10323 {
10324 case BINOP_ADD:
10325 case BINOP_SUB:
10326 case BINOP_MUL:
10327 case BINOP_DIV:
10328 case BINOP_REM:
10329 case BINOP_MOD:
10330 case BINOP_LSH:
10331 case BINOP_RSH:
10332 case BINOP_LOGICAL_AND:
10333 case BINOP_LOGICAL_OR:
10334 case BINOP_BITWISE_AND:
10335 case BINOP_BITWISE_IOR:
10336 case BINOP_BITWISE_XOR:
10337 case BINOP_EQUAL:
10338 case BINOP_NOTEQUAL:
10339 case BINOP_LESS:
10340 case BINOP_GTR:
10341 case BINOP_LEQ:
10342 case BINOP_GEQ:
10343 case BINOP_REPEAT:
10344 case BINOP_COMMA:
10345 case BINOP_EXP:
10346 case BINOP_MIN:
10347 case BINOP_MAX:
10348 case BINOP_INTDIV:
10349 case BINOP_CONCAT:
65d79d4b
SDJ
10350 case TERNOP_COND:
10351 case TERNOP_SLICE:
65d79d4b
SDJ
10352
10353 case OP_LONG:
10354 case OP_DOUBLE:
10355 case OP_DECFLOAT:
10356 case OP_LAST:
10357 case OP_COMPLEX:
10358 case OP_STRING:
65d79d4b
SDJ
10359 case OP_ARRAY:
10360 case OP_TYPE:
608b4967
TT
10361 case OP_TYPEOF:
10362 case OP_DECLTYPE:
6e72ca20 10363 case OP_TYPEID:
65d79d4b
SDJ
10364 case OP_NAME:
10365 case OP_OBJC_NSSTRING:
10366
10367 case UNOP_NEG:
10368 case UNOP_LOGICAL_NOT:
10369 case UNOP_COMPLEMENT:
10370 case UNOP_ADDR:
10371 case UNOP_HIGH:
aeaa2474 10372 case UNOP_CAST:
9eaf6705
TT
10373
10374 case UNOP_CAST_TYPE:
10375 case UNOP_REINTERPRET_CAST:
10376 case UNOP_DYNAMIC_CAST:
4a64f543
MS
10377 /* Unary, binary and ternary operators: We have to check
10378 their operands. If they are constant, then so is the
10379 result of that operation. For instance, if A and B are
10380 determined to be constants, then so is "A + B".
10381
10382 UNOP_IND is one exception to the rule above, because the
10383 value of *ADDR is not necessarily a constant, even when
10384 ADDR is. */
65d79d4b
SDJ
10385 break;
10386
10387 case OP_VAR_VALUE:
10388 /* Check whether the associated symbol is a constant.
4a64f543 10389
65d79d4b 10390 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
10391 possible that a buggy compiler could mark a variable as
10392 constant even when it is not, and TYPE_CONST would return
10393 true in this case, while SYMBOL_CLASS wouldn't.
10394
10395 We also have to check for function symbols because they
10396 are always constant. */
65d79d4b
SDJ
10397 {
10398 struct symbol *s = exp->elts[i + 2].symbol;
10399
10400 if (SYMBOL_CLASS (s) != LOC_BLOCK
10401 && SYMBOL_CLASS (s) != LOC_CONST
10402 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10403 return 0;
10404 break;
10405 }
10406
10407 /* The default action is to return 0 because we are using
10408 the optimistic approach here: If we don't know something,
10409 then it is not a constant. */
10410 default:
10411 return 0;
10412 }
10413 }
10414
10415 return 1;
10416}
10417
c1fc2657 10418/* Watchpoint destructor. */
3a5c3e22 10419
c1fc2657 10420watchpoint::~watchpoint ()
3a5c3e22 10421{
c1fc2657
SM
10422 xfree (this->exp_string);
10423 xfree (this->exp_string_reparse);
10424 value_free (this->val);
3a5c3e22
PA
10425}
10426
348d480f
PA
10427/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10428
10429static void
10430re_set_watchpoint (struct breakpoint *b)
10431{
3a5c3e22
PA
10432 struct watchpoint *w = (struct watchpoint *) b;
10433
348d480f
PA
10434 /* Watchpoint can be either on expression using entirely global
10435 variables, or it can be on local variables.
10436
10437 Watchpoints of the first kind are never auto-deleted, and even
10438 persist across program restarts. Since they can use variables
10439 from shared libraries, we need to reparse expression as libraries
10440 are loaded and unloaded.
10441
10442 Watchpoints on local variables can also change meaning as result
10443 of solib event. For example, if a watchpoint uses both a local
10444 and a global variables in expression, it's a local watchpoint,
10445 but unloading of a shared library will make the expression
10446 invalid. This is not a very common use case, but we still
10447 re-evaluate expression, to avoid surprises to the user.
10448
10449 Note that for local watchpoints, we re-evaluate it only if
10450 watchpoints frame id is still valid. If it's not, it means the
10451 watchpoint is out of scope and will be deleted soon. In fact,
10452 I'm not sure we'll ever be called in this case.
10453
10454 If a local watchpoint's frame id is still valid, then
3a5c3e22 10455 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10456
3a5c3e22
PA
10457 Don't do anything about disabled watchpoints, since they will be
10458 reevaluated again when enabled. */
10459 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10460}
10461
77b06cd7
TJB
10462/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10463
10464static int
10465insert_watchpoint (struct bp_location *bl)
10466{
3a5c3e22
PA
10467 struct watchpoint *w = (struct watchpoint *) bl->owner;
10468 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10469
10470 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10471 w->cond_exp.get ());
77b06cd7
TJB
10472}
10473
10474/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10475
10476static int
73971819 10477remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10478{
3a5c3e22
PA
10479 struct watchpoint *w = (struct watchpoint *) bl->owner;
10480 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10481
10482 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10483 w->cond_exp.get ());
e09342b5
TJB
10484}
10485
e09342b5 10486static int
348d480f 10487breakpoint_hit_watchpoint (const struct bp_location *bl,
09ac7c10
TT
10488 struct address_space *aspace, CORE_ADDR bp_addr,
10489 const struct target_waitstatus *ws)
e09342b5 10490{
348d480f 10491 struct breakpoint *b = bl->owner;
3a5c3e22 10492 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10493
348d480f
PA
10494 /* Continuable hardware watchpoints are treated as non-existent if the
10495 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10496 some data address). Otherwise gdb won't stop on a break instruction
10497 in the code (not from a breakpoint) when a hardware watchpoint has
10498 been defined. Also skip watchpoints which we know did not trigger
10499 (did not match the data address). */
10500 if (is_hardware_watchpoint (b)
3a5c3e22 10501 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10502 return 0;
9c06b0b4 10503
348d480f 10504 return 1;
9c06b0b4
TJB
10505}
10506
348d480f
PA
10507static void
10508check_status_watchpoint (bpstat bs)
9c06b0b4 10509{
348d480f 10510 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10511
348d480f 10512 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10513}
10514
10515/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10516 hardware watchpoints. */
9c06b0b4
TJB
10517
10518static int
348d480f 10519resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10520{
3a5c3e22
PA
10521 struct watchpoint *w = (struct watchpoint *) bl->owner;
10522 int length = w->exact? 1 : bl->length;
348d480f
PA
10523
10524 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10525}
10526
10527/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10528 hardware watchpoints. */
9c06b0b4
TJB
10529
10530static int
348d480f 10531works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10532{
efa80663
PA
10533 /* Read and access watchpoints only work with hardware support. */
10534 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10535}
10536
9c06b0b4 10537static enum print_stop_action
348d480f 10538print_it_watchpoint (bpstat bs)
9c06b0b4 10539{
348d480f 10540 struct breakpoint *b;
348d480f 10541 enum print_stop_action result;
3a5c3e22 10542 struct watchpoint *w;
79a45e25 10543 struct ui_out *uiout = current_uiout;
348d480f
PA
10544
10545 gdb_assert (bs->bp_location_at != NULL);
10546
348d480f 10547 b = bs->breakpoint_at;
3a5c3e22 10548 w = (struct watchpoint *) b;
348d480f 10549
f303dbd6
PA
10550 annotate_watchpoint (b->number);
10551 maybe_print_thread_hit_breakpoint (uiout);
10552
d7e74731
PA
10553 string_file stb;
10554
76f9c9cf 10555 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10556 switch (b->type)
10557 {
348d480f 10558 case bp_watchpoint:
9c06b0b4 10559 case bp_hardware_watchpoint:
112e8700
SM
10560 if (uiout->is_mi_like_p ())
10561 uiout->field_string
10562 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10563 mention (b);
76f9c9cf 10564 tuple_emitter.emplace (uiout, "value");
112e8700 10565 uiout->text ("\nOld value = ");
d7e74731 10566 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10567 uiout->field_stream ("old", stb);
10568 uiout->text ("\nNew value = ");
d7e74731 10569 watchpoint_value_print (w->val, &stb);
112e8700
SM
10570 uiout->field_stream ("new", stb);
10571 uiout->text ("\n");
348d480f
PA
10572 /* More than one watchpoint may have been triggered. */
10573 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10574 break;
10575
10576 case bp_read_watchpoint:
112e8700
SM
10577 if (uiout->is_mi_like_p ())
10578 uiout->field_string
10579 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10580 mention (b);
76f9c9cf 10581 tuple_emitter.emplace (uiout, "value");
112e8700 10582 uiout->text ("\nValue = ");
d7e74731 10583 watchpoint_value_print (w->val, &stb);
112e8700
SM
10584 uiout->field_stream ("value", stb);
10585 uiout->text ("\n");
348d480f 10586 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10587 break;
10588
10589 case bp_access_watchpoint:
348d480f
PA
10590 if (bs->old_val != NULL)
10591 {
112e8700
SM
10592 if (uiout->is_mi_like_p ())
10593 uiout->field_string
10594 ("reason",
348d480f
PA
10595 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10596 mention (b);
76f9c9cf 10597 tuple_emitter.emplace (uiout, "value");
112e8700 10598 uiout->text ("\nOld value = ");
d7e74731 10599 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10600 uiout->field_stream ("old", stb);
10601 uiout->text ("\nNew value = ");
348d480f
PA
10602 }
10603 else
10604 {
10605 mention (b);
112e8700
SM
10606 if (uiout->is_mi_like_p ())
10607 uiout->field_string
10608 ("reason",
348d480f 10609 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10610 tuple_emitter.emplace (uiout, "value");
112e8700 10611 uiout->text ("\nValue = ");
348d480f 10612 }
d7e74731 10613 watchpoint_value_print (w->val, &stb);
112e8700
SM
10614 uiout->field_stream ("new", stb);
10615 uiout->text ("\n");
348d480f 10616 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10617 break;
10618 default:
348d480f 10619 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10620 }
10621
348d480f
PA
10622 return result;
10623}
10624
10625/* Implement the "print_mention" breakpoint_ops method for hardware
10626 watchpoints. */
10627
10628static void
10629print_mention_watchpoint (struct breakpoint *b)
10630{
3a5c3e22 10631 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10632 struct ui_out *uiout = current_uiout;
46b9c129 10633 const char *tuple_name;
348d480f
PA
10634
10635 switch (b->type)
10636 {
10637 case bp_watchpoint:
112e8700 10638 uiout->text ("Watchpoint ");
46b9c129 10639 tuple_name = "wpt";
348d480f
PA
10640 break;
10641 case bp_hardware_watchpoint:
112e8700 10642 uiout->text ("Hardware watchpoint ");
46b9c129 10643 tuple_name = "wpt";
348d480f
PA
10644 break;
10645 case bp_read_watchpoint:
112e8700 10646 uiout->text ("Hardware read watchpoint ");
46b9c129 10647 tuple_name = "hw-rwpt";
348d480f
PA
10648 break;
10649 case bp_access_watchpoint:
112e8700 10650 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10651 tuple_name = "hw-awpt";
348d480f
PA
10652 break;
10653 default:
10654 internal_error (__FILE__, __LINE__,
10655 _("Invalid hardware watchpoint type."));
10656 }
10657
46b9c129 10658 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10659 uiout->field_int ("number", b->number);
10660 uiout->text (": ");
10661 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10662}
10663
10664/* Implement the "print_recreate" breakpoint_ops method for
10665 watchpoints. */
10666
10667static void
10668print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10669{
3a5c3e22
PA
10670 struct watchpoint *w = (struct watchpoint *) b;
10671
348d480f
PA
10672 switch (b->type)
10673 {
10674 case bp_watchpoint:
10675 case bp_hardware_watchpoint:
10676 fprintf_unfiltered (fp, "watch");
10677 break;
10678 case bp_read_watchpoint:
10679 fprintf_unfiltered (fp, "rwatch");
10680 break;
10681 case bp_access_watchpoint:
10682 fprintf_unfiltered (fp, "awatch");
10683 break;
10684 default:
10685 internal_error (__FILE__, __LINE__,
10686 _("Invalid watchpoint type."));
10687 }
10688
3a5c3e22 10689 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10690 print_recreate_thread (b, fp);
348d480f
PA
10691}
10692
427cd150
TT
10693/* Implement the "explains_signal" breakpoint_ops method for
10694 watchpoints. */
10695
47591c29 10696static int
427cd150
TT
10697explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10698{
10699 /* A software watchpoint cannot cause a signal other than
10700 GDB_SIGNAL_TRAP. */
10701 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10702 return 0;
427cd150 10703
47591c29 10704 return 1;
427cd150
TT
10705}
10706
348d480f
PA
10707/* The breakpoint_ops structure to be used in hardware watchpoints. */
10708
2060206e 10709static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10710
10711/* Implement the "insert" breakpoint_ops method for
10712 masked hardware watchpoints. */
10713
10714static int
10715insert_masked_watchpoint (struct bp_location *bl)
10716{
3a5c3e22
PA
10717 struct watchpoint *w = (struct watchpoint *) bl->owner;
10718
10719 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10720 bl->watchpoint_type);
10721}
10722
10723/* Implement the "remove" breakpoint_ops method for
10724 masked hardware watchpoints. */
10725
10726static int
73971819 10727remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10728{
3a5c3e22
PA
10729 struct watchpoint *w = (struct watchpoint *) bl->owner;
10730
10731 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10732 bl->watchpoint_type);
10733}
10734
10735/* Implement the "resources_needed" breakpoint_ops method for
10736 masked hardware watchpoints. */
10737
10738static int
10739resources_needed_masked_watchpoint (const struct bp_location *bl)
10740{
3a5c3e22
PA
10741 struct watchpoint *w = (struct watchpoint *) bl->owner;
10742
10743 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10744}
10745
10746/* Implement the "works_in_software_mode" breakpoint_ops method for
10747 masked hardware watchpoints. */
10748
10749static int
10750works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10751{
10752 return 0;
10753}
10754
10755/* Implement the "print_it" breakpoint_ops method for
10756 masked hardware watchpoints. */
10757
10758static enum print_stop_action
10759print_it_masked_watchpoint (bpstat bs)
10760{
10761 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10762 struct ui_out *uiout = current_uiout;
348d480f
PA
10763
10764 /* Masked watchpoints have only one location. */
10765 gdb_assert (b->loc && b->loc->next == NULL);
10766
f303dbd6
PA
10767 annotate_watchpoint (b->number);
10768 maybe_print_thread_hit_breakpoint (uiout);
10769
348d480f
PA
10770 switch (b->type)
10771 {
10772 case bp_hardware_watchpoint:
112e8700
SM
10773 if (uiout->is_mi_like_p ())
10774 uiout->field_string
10775 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10776 break;
10777
10778 case bp_read_watchpoint:
112e8700
SM
10779 if (uiout->is_mi_like_p ())
10780 uiout->field_string
10781 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10782 break;
10783
10784 case bp_access_watchpoint:
112e8700
SM
10785 if (uiout->is_mi_like_p ())
10786 uiout->field_string
10787 ("reason",
348d480f
PA
10788 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10789 break;
10790 default:
10791 internal_error (__FILE__, __LINE__,
10792 _("Invalid hardware watchpoint type."));
10793 }
10794
10795 mention (b);
112e8700 10796 uiout->text (_("\n\
9c06b0b4
TJB
10797Check the underlying instruction at PC for the memory\n\
10798address and value which triggered this watchpoint.\n"));
112e8700 10799 uiout->text ("\n");
9c06b0b4
TJB
10800
10801 /* More than one watchpoint may have been triggered. */
10802 return PRINT_UNKNOWN;
10803}
10804
10805/* Implement the "print_one_detail" breakpoint_ops method for
10806 masked hardware watchpoints. */
10807
10808static void
10809print_one_detail_masked_watchpoint (const struct breakpoint *b,
10810 struct ui_out *uiout)
10811{
3a5c3e22
PA
10812 struct watchpoint *w = (struct watchpoint *) b;
10813
9c06b0b4
TJB
10814 /* Masked watchpoints have only one location. */
10815 gdb_assert (b->loc && b->loc->next == NULL);
10816
112e8700
SM
10817 uiout->text ("\tmask ");
10818 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10819 uiout->text ("\n");
9c06b0b4
TJB
10820}
10821
10822/* Implement the "print_mention" breakpoint_ops method for
10823 masked hardware watchpoints. */
10824
10825static void
10826print_mention_masked_watchpoint (struct breakpoint *b)
10827{
3a5c3e22 10828 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10829 struct ui_out *uiout = current_uiout;
46b9c129 10830 const char *tuple_name;
9c06b0b4
TJB
10831
10832 switch (b->type)
10833 {
10834 case bp_hardware_watchpoint:
112e8700 10835 uiout->text ("Masked hardware watchpoint ");
46b9c129 10836 tuple_name = "wpt";
9c06b0b4
TJB
10837 break;
10838 case bp_read_watchpoint:
112e8700 10839 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10840 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10841 break;
10842 case bp_access_watchpoint:
112e8700 10843 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10844 tuple_name = "hw-awpt";
9c06b0b4
TJB
10845 break;
10846 default:
10847 internal_error (__FILE__, __LINE__,
10848 _("Invalid hardware watchpoint type."));
10849 }
10850
46b9c129 10851 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10852 uiout->field_int ("number", b->number);
10853 uiout->text (": ");
10854 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10855}
10856
10857/* Implement the "print_recreate" breakpoint_ops method for
10858 masked hardware watchpoints. */
10859
10860static void
10861print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10862{
3a5c3e22 10863 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10864 char tmp[40];
10865
10866 switch (b->type)
10867 {
10868 case bp_hardware_watchpoint:
10869 fprintf_unfiltered (fp, "watch");
10870 break;
10871 case bp_read_watchpoint:
10872 fprintf_unfiltered (fp, "rwatch");
10873 break;
10874 case bp_access_watchpoint:
10875 fprintf_unfiltered (fp, "awatch");
10876 break;
10877 default:
10878 internal_error (__FILE__, __LINE__,
10879 _("Invalid hardware watchpoint type."));
10880 }
10881
3a5c3e22
PA
10882 sprintf_vma (tmp, w->hw_wp_mask);
10883 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10884 print_recreate_thread (b, fp);
9c06b0b4
TJB
10885}
10886
10887/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10888
2060206e 10889static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10890
10891/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10892
10893static int
10894is_masked_watchpoint (const struct breakpoint *b)
10895{
10896 return b->ops == &masked_watchpoint_breakpoint_ops;
10897}
10898
53a5351d
JM
10899/* accessflag: hw_write: watch write,
10900 hw_read: watch read,
10901 hw_access: watch access (read or write) */
c906108c 10902static void
bbc13ae3 10903watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10904 int just_location, int internal)
c906108c 10905{
c1fc2657 10906 struct breakpoint *scope_breakpoint = NULL;
270140bd 10907 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
a1442452 10908 struct value *val, *mark, *result;
bb9d5f81 10909 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10910 const char *exp_start = NULL;
10911 const char *exp_end = NULL;
10912 const char *tok, *end_tok;
9c06b0b4 10913 int toklen = -1;
bbc13ae3
KS
10914 const char *cond_start = NULL;
10915 const char *cond_end = NULL;
c906108c 10916 enum bptype bp_type;
37e4754d 10917 int thread = -1;
0cf6dd15 10918 int pc = 0;
9c06b0b4
TJB
10919 /* Flag to indicate whether we are going to use masks for
10920 the hardware watchpoint. */
10921 int use_mask = 0;
10922 CORE_ADDR mask = 0;
bbc13ae3
KS
10923 char *expression;
10924 struct cleanup *back_to;
c906108c 10925
37e4754d
LM
10926 /* Make sure that we actually have parameters to parse. */
10927 if (arg != NULL && arg[0] != '\0')
10928 {
bbc13ae3
KS
10929 const char *value_start;
10930
10931 exp_end = arg + strlen (arg);
37e4754d 10932
9c06b0b4
TJB
10933 /* Look for "parameter value" pairs at the end
10934 of the arguments string. */
bbc13ae3 10935 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10936 {
10937 /* Skip whitespace at the end of the argument list. */
10938 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10939 tok--;
10940
10941 /* Find the beginning of the last token.
10942 This is the value of the parameter. */
10943 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10944 tok--;
10945 value_start = tok + 1;
10946
10947 /* Skip whitespace. */
10948 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10949 tok--;
10950
10951 end_tok = tok;
10952
10953 /* Find the beginning of the second to last token.
10954 This is the parameter itself. */
10955 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10956 tok--;
10957 tok++;
10958 toklen = end_tok - tok + 1;
10959
61012eef 10960 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10961 {
5d5658a1 10962 struct thread_info *thr;
9c06b0b4
TJB
10963 /* At this point we've found a "thread" token, which means
10964 the user is trying to set a watchpoint that triggers
10965 only in a specific thread. */
5d5658a1 10966 const char *endp;
37e4754d 10967
9c06b0b4
TJB
10968 if (thread != -1)
10969 error(_("You can specify only one thread."));
37e4754d 10970
9c06b0b4 10971 /* Extract the thread ID from the next token. */
5d5658a1 10972 thr = parse_thread_id (value_start, &endp);
37e4754d 10973
5d5658a1 10974 /* Check if the user provided a valid thread ID. */
9c06b0b4 10975 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10976 invalid_thread_id_error (value_start);
9c06b0b4 10977
5d5658a1 10978 thread = thr->global_num;
9c06b0b4 10979 }
61012eef 10980 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10981 {
10982 /* We've found a "mask" token, which means the user wants to
10983 create a hardware watchpoint that is going to have the mask
10984 facility. */
10985 struct value *mask_value, *mark;
37e4754d 10986
9c06b0b4
TJB
10987 if (use_mask)
10988 error(_("You can specify only one mask."));
37e4754d 10989
9c06b0b4 10990 use_mask = just_location = 1;
37e4754d 10991
9c06b0b4
TJB
10992 mark = value_mark ();
10993 mask_value = parse_to_comma_and_eval (&value_start);
10994 mask = value_as_address (mask_value);
10995 value_free_to_mark (mark);
10996 }
10997 else
10998 /* We didn't recognize what we found. We should stop here. */
10999 break;
37e4754d 11000
9c06b0b4
TJB
11001 /* Truncate the string and get rid of the "parameter value" pair before
11002 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 11003 exp_end = tok;
9c06b0b4 11004 }
37e4754d 11005 }
bbc13ae3
KS
11006 else
11007 exp_end = arg;
37e4754d 11008
bbc13ae3
KS
11009 /* Parse the rest of the arguments. From here on out, everything
11010 is in terms of a newly allocated string instead of the original
11011 ARG. */
c906108c 11012 innermost_block = NULL;
bbc13ae3
KS
11013 expression = savestring (arg, exp_end - arg);
11014 back_to = make_cleanup (xfree, expression);
11015 exp_start = arg = expression;
4d01a485 11016 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
c906108c 11017 exp_end = arg;
fa8a61dc
TT
11018 /* Remove trailing whitespace from the expression before saving it.
11019 This makes the eventual display of the expression string a bit
11020 prettier. */
11021 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11022 --exp_end;
11023
65d79d4b 11024 /* Checking if the expression is not constant. */
4d01a485 11025 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
11026 {
11027 int len;
11028
11029 len = exp_end - exp_start;
11030 while (len > 0 && isspace (exp_start[len - 1]))
11031 len--;
11032 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11033 }
11034
c906108c
SS
11035 exp_valid_block = innermost_block;
11036 mark = value_mark ();
4d01a485 11037 fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
06a64a0b 11038
bb9d5f81
PP
11039 if (val != NULL && just_location)
11040 {
11041 saved_bitpos = value_bitpos (val);
11042 saved_bitsize = value_bitsize (val);
11043 }
11044
06a64a0b
TT
11045 if (just_location)
11046 {
9c06b0b4
TJB
11047 int ret;
11048
06a64a0b 11049 exp_valid_block = NULL;
a1442452 11050 val = value_addr (result);
06a64a0b
TT
11051 release_value (val);
11052 value_free_to_mark (mark);
9c06b0b4
TJB
11053
11054 if (use_mask)
11055 {
11056 ret = target_masked_watch_num_registers (value_as_address (val),
11057 mask);
11058 if (ret == -1)
11059 error (_("This target does not support masked watchpoints."));
11060 else if (ret == -2)
11061 error (_("Invalid mask or memory region."));
11062 }
06a64a0b
TT
11063 }
11064 else if (val != NULL)
fa4727a6 11065 release_value (val);
c906108c 11066
f1735a53
TT
11067 tok = skip_spaces (arg);
11068 end_tok = skip_to_space (tok);
c906108c
SS
11069
11070 toklen = end_tok - tok;
11071 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11072 {
60e1c644 11073 innermost_block = NULL;
c906108c 11074 tok = cond_start = end_tok + 1;
4d01a485 11075 parse_exp_1 (&tok, 0, 0, 0);
60e1c644
PA
11076
11077 /* The watchpoint expression may not be local, but the condition
11078 may still be. E.g.: `watch global if local > 0'. */
11079 cond_exp_valid_block = innermost_block;
11080
c906108c
SS
11081 cond_end = tok;
11082 }
11083 if (*tok)
8a3fe4f8 11084 error (_("Junk at end of command."));
c906108c 11085
441d7c93
PA
11086 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
11087
11088 /* Save this because create_internal_breakpoint below invalidates
11089 'wp_frame'. */
11090 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
11091
11092 /* If the expression is "local", then set up a "watchpoint scope"
11093 breakpoint at the point where we've left the scope of the watchpoint
11094 expression. Create the scope breakpoint before the watchpoint, so
11095 that we will encounter it first in bpstat_stop_status. */
441d7c93 11096 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 11097 {
441d7c93
PA
11098 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
11099
11100 if (frame_id_p (caller_frame_id))
edb3359d 11101 {
441d7c93
PA
11102 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
11103 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
11104
edb3359d 11105 scope_breakpoint
441d7c93 11106 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
11107 bp_watchpoint_scope,
11108 &momentary_breakpoint_ops);
d983da9c 11109
441d7c93
PA
11110 /* create_internal_breakpoint could invalidate WP_FRAME. */
11111 wp_frame = NULL;
11112
edb3359d 11113 scope_breakpoint->enable_state = bp_enabled;
d983da9c 11114
edb3359d
DJ
11115 /* Automatically delete the breakpoint when it hits. */
11116 scope_breakpoint->disposition = disp_del;
d983da9c 11117
edb3359d 11118 /* Only break in the proper frame (help with recursion). */
441d7c93 11119 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 11120
edb3359d 11121 /* Set the address at which we will stop. */
441d7c93
PA
11122 scope_breakpoint->loc->gdbarch = caller_arch;
11123 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 11124 scope_breakpoint->loc->address
a6d9a66e
UW
11125 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11126 scope_breakpoint->loc->requested_address,
edb3359d
DJ
11127 scope_breakpoint->type);
11128 }
d983da9c
DJ
11129 }
11130
e8369a73
AB
11131 /* Now set up the breakpoint. We create all watchpoints as hardware
11132 watchpoints here even if hardware watchpoints are turned off, a call
11133 to update_watchpoint later in this function will cause the type to
11134 drop back to bp_watchpoint (software watchpoint) if required. */
11135
11136 if (accessflag == hw_read)
11137 bp_type = bp_read_watchpoint;
11138 else if (accessflag == hw_access)
11139 bp_type = bp_access_watchpoint;
11140 else
11141 bp_type = bp_hardware_watchpoint;
3a5c3e22 11142
b270e6f9 11143 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 11144
348d480f 11145 if (use_mask)
b270e6f9 11146 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 11147 &masked_watchpoint_breakpoint_ops);
348d480f 11148 else
b270e6f9 11149 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 11150 &watchpoint_breakpoint_ops);
c1fc2657
SM
11151 w->thread = thread;
11152 w->disposition = disp_donttouch;
11153 w->pspace = current_program_space;
b22e99fd 11154 w->exp = std::move (exp);
3a5c3e22
PA
11155 w->exp_valid_block = exp_valid_block;
11156 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
11157 if (just_location)
11158 {
11159 struct type *t = value_type (val);
11160 CORE_ADDR addr = value_as_address (val);
06a64a0b 11161
43cc5389
TT
11162 w->exp_string_reparse
11163 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 11164
3a5c3e22 11165 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 11166 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
11167 }
11168 else
3a5c3e22 11169 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
11170
11171 if (use_mask)
11172 {
3a5c3e22 11173 w->hw_wp_mask = mask;
9c06b0b4
TJB
11174 }
11175 else
11176 {
3a5c3e22 11177 w->val = val;
bb9d5f81
PP
11178 w->val_bitpos = saved_bitpos;
11179 w->val_bitsize = saved_bitsize;
3a5c3e22 11180 w->val_valid = 1;
9c06b0b4 11181 }
77b06cd7 11182
c906108c 11183 if (cond_start)
c1fc2657 11184 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 11185 else
c1fc2657 11186 w->cond_string = 0;
c5aa993b 11187
441d7c93 11188 if (frame_id_p (watchpoint_frame))
f6bc2008 11189 {
441d7c93 11190 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 11191 w->watchpoint_thread = inferior_ptid;
f6bc2008 11192 }
c906108c 11193 else
f6bc2008 11194 {
3a5c3e22
PA
11195 w->watchpoint_frame = null_frame_id;
11196 w->watchpoint_thread = null_ptid;
f6bc2008 11197 }
c906108c 11198
d983da9c 11199 if (scope_breakpoint != NULL)
c906108c 11200 {
d983da9c
DJ
11201 /* The scope breakpoint is related to the watchpoint. We will
11202 need to act on them together. */
c1fc2657 11203 w->related_breakpoint = scope_breakpoint;
b270e6f9 11204 scope_breakpoint->related_breakpoint = w.get ();
c906108c 11205 }
d983da9c 11206
06a64a0b
TT
11207 if (!just_location)
11208 value_free_to_mark (mark);
2d134ed3 11209
b270e6f9
TT
11210 /* Finally update the new watchpoint. This creates the locations
11211 that should be inserted. */
11212 update_watchpoint (w.get (), 1);
a9634178 11213
b270e6f9 11214 install_breakpoint (internal, std::move (w), 1);
bbc13ae3 11215 do_cleanups (back_to);
c906108c
SS
11216}
11217
e09342b5 11218/* Return count of debug registers needed to watch the given expression.
e09342b5 11219 If the watchpoint cannot be handled in hardware return zero. */
c906108c 11220
c906108c 11221static int
a9634178 11222can_use_hardware_watchpoint (struct value *v)
c906108c
SS
11223{
11224 int found_memory_cnt = 0;
2e70b7b9 11225 struct value *head = v;
c906108c
SS
11226
11227 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 11228 if (!can_use_hw_watchpoints)
c906108c 11229 return 0;
c5aa993b 11230
5c44784c
JM
11231 /* Make sure that the value of the expression depends only upon
11232 memory contents, and values computed from them within GDB. If we
11233 find any register references or function calls, we can't use a
11234 hardware watchpoint.
11235
11236 The idea here is that evaluating an expression generates a series
11237 of values, one holding the value of every subexpression. (The
11238 expression a*b+c has five subexpressions: a, b, a*b, c, and
11239 a*b+c.) GDB's values hold almost enough information to establish
11240 the criteria given above --- they identify memory lvalues,
11241 register lvalues, computed values, etcetera. So we can evaluate
11242 the expression, and then scan the chain of values that leaves
11243 behind to decide whether we can detect any possible change to the
11244 expression's final value using only hardware watchpoints.
11245
11246 However, I don't think that the values returned by inferior
11247 function calls are special in any way. So this function may not
11248 notice that an expression involving an inferior function call
11249 can't be watched with hardware watchpoints. FIXME. */
17cf0ecd 11250 for (; v; v = value_next (v))
c906108c 11251 {
5c44784c 11252 if (VALUE_LVAL (v) == lval_memory)
c906108c 11253 {
8464be76
DJ
11254 if (v != head && value_lazy (v))
11255 /* A lazy memory lvalue in the chain is one that GDB never
11256 needed to fetch; we either just used its address (e.g.,
11257 `a' in `a.b') or we never needed it at all (e.g., `a'
11258 in `a,b'). This doesn't apply to HEAD; if that is
11259 lazy then it was not readable, but watch it anyway. */
5c44784c 11260 ;
53a5351d 11261 else
5c44784c
JM
11262 {
11263 /* Ahh, memory we actually used! Check if we can cover
11264 it with hardware watchpoints. */
df407dfe 11265 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
11266
11267 /* We only watch structs and arrays if user asked for it
11268 explicitly, never if they just happen to appear in a
11269 middle of some value chain. */
11270 if (v == head
11271 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11272 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11273 {
42ae5230 11274 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
11275 int len;
11276 int num_regs;
11277
a9634178 11278 len = (target_exact_watchpoints
e09342b5
TJB
11279 && is_scalar_type_recursive (vtype))?
11280 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 11281
e09342b5
TJB
11282 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11283 if (!num_regs)
2e70b7b9
MS
11284 return 0;
11285 else
e09342b5 11286 found_memory_cnt += num_regs;
2e70b7b9 11287 }
5c44784c 11288 }
c5aa993b 11289 }
5086187c
AC
11290 else if (VALUE_LVAL (v) != not_lval
11291 && deprecated_value_modifiable (v) == 0)
38b6c3b3 11292 return 0; /* These are values from the history (e.g., $1). */
5086187c 11293 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 11294 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
11295 }
11296
11297 /* The expression itself looks suitable for using a hardware
11298 watchpoint, but give the target machine a chance to reject it. */
11299 return found_memory_cnt;
11300}
11301
8b93c638 11302void
84f4c1fe 11303watch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11304{
84f4c1fe 11305 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
11306}
11307
06a64a0b
TT
11308/* A helper function that looks for the "-location" argument and then
11309 calls watch_command_1. */
11310
11311static void
11312watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11313{
11314 int just_location = 0;
11315
11316 if (arg
11317 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11318 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11319 {
e9cafbcc 11320 arg = skip_spaces (arg);
06a64a0b
TT
11321 just_location = 1;
11322 }
11323
84f4c1fe 11324 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 11325}
8926118c 11326
c5aa993b 11327static void
fba45db2 11328watch_command (char *arg, int from_tty)
c906108c 11329{
06a64a0b 11330 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
11331}
11332
8b93c638 11333void
84f4c1fe 11334rwatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11335{
84f4c1fe 11336 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 11337}
8926118c 11338
c5aa993b 11339static void
fba45db2 11340rwatch_command (char *arg, int from_tty)
c906108c 11341{
06a64a0b 11342 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
11343}
11344
8b93c638 11345void
84f4c1fe 11346awatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11347{
84f4c1fe 11348 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 11349}
8926118c 11350
c5aa993b 11351static void
fba45db2 11352awatch_command (char *arg, int from_tty)
c906108c 11353{
06a64a0b 11354 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 11355}
c906108c 11356\f
c5aa993b 11357
cfc31633
PA
11358/* Data for the FSM that manages the until(location)/advance commands
11359 in infcmd.c. Here because it uses the mechanisms of
11360 breakpoints. */
c906108c 11361
cfc31633 11362struct until_break_fsm
bfec99b2 11363{
cfc31633
PA
11364 /* The base class. */
11365 struct thread_fsm thread_fsm;
11366
11367 /* The thread that as current when the command was executed. */
11368 int thread;
11369
11370 /* The breakpoint set at the destination location. */
11371 struct breakpoint *location_breakpoint;
11372
11373 /* Breakpoint set at the return address in the caller frame. May be
11374 NULL. */
11375 struct breakpoint *caller_breakpoint;
bfec99b2
PA
11376};
11377
8980e177
PA
11378static void until_break_fsm_clean_up (struct thread_fsm *self,
11379 struct thread_info *thread);
11380static int until_break_fsm_should_stop (struct thread_fsm *self,
11381 struct thread_info *thread);
cfc31633
PA
11382static enum async_reply_reason
11383 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11384
11385/* until_break_fsm's vtable. */
11386
11387static struct thread_fsm_ops until_break_fsm_ops =
11388{
11389 NULL, /* dtor */
11390 until_break_fsm_clean_up,
11391 until_break_fsm_should_stop,
11392 NULL, /* return_value */
11393 until_break_fsm_async_reply_reason,
11394};
11395
11396/* Allocate a new until_break_command_fsm. */
11397
11398static struct until_break_fsm *
8980e177 11399new_until_break_fsm (struct interp *cmd_interp, int thread,
cfc31633
PA
11400 struct breakpoint *location_breakpoint,
11401 struct breakpoint *caller_breakpoint)
11402{
11403 struct until_break_fsm *sm;
11404
11405 sm = XCNEW (struct until_break_fsm);
8980e177 11406 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
cfc31633
PA
11407
11408 sm->thread = thread;
11409 sm->location_breakpoint = location_breakpoint;
11410 sm->caller_breakpoint = caller_breakpoint;
11411
11412 return sm;
11413}
11414
11415/* Implementation of the 'should_stop' FSM method for the
11416 until(location)/advance commands. */
11417
11418static int
8980e177
PA
11419until_break_fsm_should_stop (struct thread_fsm *self,
11420 struct thread_info *tp)
cfc31633
PA
11421{
11422 struct until_break_fsm *sm = (struct until_break_fsm *) self;
cfc31633
PA
11423
11424 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11425 sm->location_breakpoint) != NULL
11426 || (sm->caller_breakpoint != NULL
11427 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11428 sm->caller_breakpoint) != NULL))
11429 thread_fsm_set_finished (self);
11430
11431 return 1;
11432}
11433
11434/* Implementation of the 'clean_up' FSM method for the
11435 until(location)/advance commands. */
11436
c2c6d25f 11437static void
8980e177
PA
11438until_break_fsm_clean_up (struct thread_fsm *self,
11439 struct thread_info *thread)
43ff13b4 11440{
cfc31633 11441 struct until_break_fsm *sm = (struct until_break_fsm *) self;
bfec99b2 11442
cfc31633
PA
11443 /* Clean up our temporary breakpoints. */
11444 if (sm->location_breakpoint != NULL)
11445 {
11446 delete_breakpoint (sm->location_breakpoint);
11447 sm->location_breakpoint = NULL;
11448 }
11449 if (sm->caller_breakpoint != NULL)
11450 {
11451 delete_breakpoint (sm->caller_breakpoint);
11452 sm->caller_breakpoint = NULL;
11453 }
11454 delete_longjmp_breakpoint (sm->thread);
11455}
11456
11457/* Implementation of the 'async_reply_reason' FSM method for the
11458 until(location)/advance commands. */
11459
11460static enum async_reply_reason
11461until_break_fsm_async_reply_reason (struct thread_fsm *self)
11462{
11463 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11464}
11465
c906108c 11466void
ae66c1fc 11467until_break_command (char *arg, int from_tty, int anywhere)
c906108c 11468{
8556afb4
PA
11469 struct frame_info *frame;
11470 struct gdbarch *frame_gdbarch;
11471 struct frame_id stack_frame_id;
11472 struct frame_id caller_frame_id;
cfc31633
PA
11473 struct breakpoint *location_breakpoint;
11474 struct breakpoint *caller_breakpoint = NULL;
ffc2605c 11475 struct cleanup *old_chain;
186c406b
TT
11476 int thread;
11477 struct thread_info *tp;
cfc31633 11478 struct until_break_fsm *sm;
c906108c 11479
70509625 11480 clear_proceed_status (0);
c906108c
SS
11481
11482 /* Set a breakpoint where the user wants it and at return from
4a64f543 11483 this function. */
c5aa993b 11484
ffc2605c 11485 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11486
6c5b2ebe
PA
11487 std::vector<symtab_and_line> sals
11488 = (last_displayed_sal_is_valid ()
11489 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11490 get_last_displayed_symtab (),
11491 get_last_displayed_line ())
11492 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11493 NULL, (struct symtab *) NULL, 0));
c5aa993b 11494
6c5b2ebe 11495 if (sals.size () != 1)
8a3fe4f8 11496 error (_("Couldn't get information on specified line."));
c5aa993b 11497
6c5b2ebe 11498 symtab_and_line &sal = sals[0];
c5aa993b 11499
c906108c 11500 if (*arg)
8a3fe4f8 11501 error (_("Junk at end of arguments."));
c5aa993b 11502
c906108c 11503 resolve_sal_pc (&sal);
c5aa993b 11504
186c406b 11505 tp = inferior_thread ();
5d5658a1 11506 thread = tp->global_num;
186c406b 11507
883bc8d1
PA
11508 old_chain = make_cleanup (null_cleanup, NULL);
11509
8556afb4
PA
11510 /* Note linespec handling above invalidates the frame chain.
11511 Installing a breakpoint also invalidates the frame chain (as it
11512 may need to switch threads), so do any frame handling before
11513 that. */
11514
11515 frame = get_selected_frame (NULL);
11516 frame_gdbarch = get_frame_arch (frame);
11517 stack_frame_id = get_stack_frame_id (frame);
11518 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11519
ae66c1fc
EZ
11520 /* Keep within the current frame, or in frames called by the current
11521 one. */
edb3359d 11522
883bc8d1 11523 if (frame_id_p (caller_frame_id))
c906108c 11524 {
883bc8d1 11525 struct symtab_and_line sal2;
cfc31633 11526 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11527
11528 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11529 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11530 caller_gdbarch = frame_unwind_caller_arch (frame);
11531 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11532 sal2,
11533 caller_frame_id,
11534 bp_until);
11535 make_cleanup_delete_breakpoint (caller_breakpoint);
186c406b 11536
883bc8d1 11537 set_longjmp_breakpoint (tp, caller_frame_id);
186c406b 11538 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 11539 }
c5aa993b 11540
c70a6932
JK
11541 /* set_momentary_breakpoint could invalidate FRAME. */
11542 frame = NULL;
11543
883bc8d1
PA
11544 if (anywhere)
11545 /* If the user told us to continue until a specified location,
11546 we don't specify a frame at which we need to stop. */
cfc31633
PA
11547 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11548 null_frame_id, bp_until);
883bc8d1
PA
11549 else
11550 /* Otherwise, specify the selected frame, because we want to stop
11551 only at the very same frame. */
cfc31633
PA
11552 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11553 stack_frame_id, bp_until);
11554 make_cleanup_delete_breakpoint (location_breakpoint);
883bc8d1 11555
8980e177 11556 sm = new_until_break_fsm (command_interp (), tp->global_num,
5d5658a1 11557 location_breakpoint, caller_breakpoint);
cfc31633 11558 tp->thread_fsm = &sm->thread_fsm;
f107f563 11559
cfc31633 11560 discard_cleanups (old_chain);
f107f563 11561
cfc31633 11562 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11563}
ae66c1fc 11564
c906108c
SS
11565/* This function attempts to parse an optional "if <cond>" clause
11566 from the arg string. If one is not found, it returns NULL.
c5aa993b 11567
c906108c
SS
11568 Else, it returns a pointer to the condition string. (It does not
11569 attempt to evaluate the string against a particular block.) And,
11570 it updates arg to point to the first character following the parsed
4a64f543 11571 if clause in the arg string. */
53a5351d 11572
63160a43
PA
11573const char *
11574ep_parse_optional_if_clause (const char **arg)
c906108c 11575{
63160a43 11576 const char *cond_string;
c5aa993b
JM
11577
11578 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11579 return NULL;
c5aa993b 11580
4a64f543 11581 /* Skip the "if" keyword. */
c906108c 11582 (*arg) += 2;
c5aa993b 11583
c906108c 11584 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11585 condition string. */
f1735a53 11586 *arg = skip_spaces (*arg);
c906108c 11587 cond_string = *arg;
c5aa993b 11588
4a64f543
MS
11589 /* Assume that the condition occupies the remainder of the arg
11590 string. */
c906108c 11591 (*arg) += strlen (cond_string);
c5aa993b 11592
c906108c
SS
11593 return cond_string;
11594}
c5aa993b 11595
c906108c
SS
11596/* Commands to deal with catching events, such as signals, exceptions,
11597 process start/exit, etc. */
c5aa993b
JM
11598
11599typedef enum
11600{
44feb3ce
TT
11601 catch_fork_temporary, catch_vfork_temporary,
11602 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11603}
11604catch_fork_kind;
11605
c906108c 11606static void
63160a43 11607catch_fork_command_1 (char *arg_entry, int from_tty,
cc59ec59 11608 struct cmd_list_element *command)
c906108c 11609{
63160a43 11610 const char *arg = arg_entry;
a6d9a66e 11611 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11612 const char *cond_string = NULL;
44feb3ce
TT
11613 catch_fork_kind fork_kind;
11614 int tempflag;
11615
11616 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11617 tempflag = (fork_kind == catch_fork_temporary
11618 || fork_kind == catch_vfork_temporary);
c5aa993b 11619
44feb3ce
TT
11620 if (!arg)
11621 arg = "";
f1735a53 11622 arg = skip_spaces (arg);
c5aa993b 11623
c906108c 11624 /* The allowed syntax is:
c5aa993b
JM
11625 catch [v]fork
11626 catch [v]fork if <cond>
11627
4a64f543 11628 First, check if there's an if clause. */
c906108c 11629 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11630
c906108c 11631 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11632 error (_("Junk at end of arguments."));
c5aa993b 11633
c906108c 11634 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11635 and enable reporting of such events. */
c5aa993b
JM
11636 switch (fork_kind)
11637 {
44feb3ce
TT
11638 case catch_fork_temporary:
11639 case catch_fork_permanent:
a6d9a66e 11640 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11641 &catch_fork_breakpoint_ops);
c906108c 11642 break;
44feb3ce
TT
11643 case catch_vfork_temporary:
11644 case catch_vfork_permanent:
a6d9a66e 11645 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11646 &catch_vfork_breakpoint_ops);
c906108c 11647 break;
c5aa993b 11648 default:
8a3fe4f8 11649 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11650 break;
c5aa993b 11651 }
c906108c
SS
11652}
11653
11654static void
63160a43 11655catch_exec_command_1 (char *arg_entry, int from_tty,
cc59ec59 11656 struct cmd_list_element *command)
c906108c 11657{
63160a43 11658 const char *arg = arg_entry;
a6d9a66e 11659 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11660 int tempflag;
63160a43 11661 const char *cond_string = NULL;
c906108c 11662
44feb3ce
TT
11663 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11664
11665 if (!arg)
11666 arg = "";
f1735a53 11667 arg = skip_spaces (arg);
c906108c
SS
11668
11669 /* The allowed syntax is:
c5aa993b
JM
11670 catch exec
11671 catch exec if <cond>
c906108c 11672
4a64f543 11673 First, check if there's an if clause. */
c906108c
SS
11674 cond_string = ep_parse_optional_if_clause (&arg);
11675
11676 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11677 error (_("Junk at end of arguments."));
c906108c 11678
b270e6f9
TT
11679 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11680 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11681 &catch_exec_breakpoint_ops);
11682 c->exec_pathname = NULL;
11683
b270e6f9 11684 install_breakpoint (0, std::move (c), 1);
c906108c 11685}
c5aa993b 11686
9ac4176b 11687void
28010a5d
PA
11688init_ada_exception_breakpoint (struct breakpoint *b,
11689 struct gdbarch *gdbarch,
11690 struct symtab_and_line sal,
11691 char *addr_string,
c0a91b2b 11692 const struct breakpoint_ops *ops,
28010a5d 11693 int tempflag,
349774ef 11694 int enabled,
28010a5d 11695 int from_tty)
f7f9143b 11696{
f7f9143b
JB
11697 if (from_tty)
11698 {
5af949e3
UW
11699 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11700 if (!loc_gdbarch)
11701 loc_gdbarch = gdbarch;
11702
6c95b8df
PA
11703 describe_other_breakpoints (loc_gdbarch,
11704 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11705 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11706 version for exception catchpoints, because two catchpoints
11707 used for different exception names will use the same address.
11708 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11709 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11710 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11711 the user what type of catchpoint it is. The above is good
11712 enough for now, though. */
11713 }
11714
28010a5d 11715 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11716
349774ef 11717 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11718 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11719 b->location = string_to_event_location (&addr_string,
11720 language_def (language_ada));
f7f9143b 11721 b->language = language_ada;
f7f9143b
JB
11722}
11723
c906108c 11724static void
fba45db2 11725catch_command (char *arg, int from_tty)
c906108c 11726{
44feb3ce 11727 error (_("Catch requires an event name."));
c906108c
SS
11728}
11729\f
11730
11731static void
fba45db2 11732tcatch_command (char *arg, int from_tty)
c906108c 11733{
44feb3ce 11734 error (_("Catch requires an event name."));
c906108c
SS
11735}
11736
8a2c437b
TT
11737/* A qsort comparison function that sorts breakpoints in order. */
11738
11739static int
11740compare_breakpoints (const void *a, const void *b)
11741{
9a3c8263 11742 const breakpoint_p *ba = (const breakpoint_p *) a;
8a2c437b 11743 uintptr_t ua = (uintptr_t) *ba;
9a3c8263 11744 const breakpoint_p *bb = (const breakpoint_p *) b;
8a2c437b
TT
11745 uintptr_t ub = (uintptr_t) *bb;
11746
11747 if ((*ba)->number < (*bb)->number)
11748 return -1;
11749 else if ((*ba)->number > (*bb)->number)
11750 return 1;
11751
11752 /* Now sort by address, in case we see, e..g, two breakpoints with
11753 the number 0. */
11754 if (ua < ub)
11755 return -1;
94b0e70d 11756 return ua > ub ? 1 : 0;
8a2c437b
TT
11757}
11758
80f8a6eb 11759/* Delete breakpoints by address or line. */
c906108c
SS
11760
11761static void
fba45db2 11762clear_command (char *arg, int from_tty)
c906108c 11763{
8a2c437b 11764 struct breakpoint *b, *prev;
d6e956e5
VP
11765 VEC(breakpoint_p) *found = 0;
11766 int ix;
c906108c 11767 int default_match;
c906108c 11768 int i;
8a2c437b 11769 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
c906108c 11770
6c5b2ebe
PA
11771 std::vector<symtab_and_line> decoded_sals;
11772 symtab_and_line last_sal;
11773 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11774 if (arg)
11775 {
6c5b2ebe
PA
11776 decoded_sals
11777 = decode_line_with_current_source (arg,
11778 (DECODE_LINE_FUNFIRSTLINE
11779 | DECODE_LINE_LIST_MODE));
c906108c 11780 default_match = 0;
6c5b2ebe 11781 sals = decoded_sals;
c906108c
SS
11782 }
11783 else
11784 {
1bfeeb0f
JL
11785 /* Set sal's line, symtab, pc, and pspace to the values
11786 corresponding to the last call to print_frame_info. If the
11787 codepoint is not valid, this will set all the fields to 0. */
51abb421 11788 last_sal = get_last_displayed_sal ();
6c5b2ebe 11789 if (last_sal.symtab == 0)
8a3fe4f8 11790 error (_("No source file specified."));
c906108c 11791
c906108c 11792 default_match = 1;
6c5b2ebe 11793 sals = last_sal;
c906108c
SS
11794 }
11795
4a64f543
MS
11796 /* We don't call resolve_sal_pc here. That's not as bad as it
11797 seems, because all existing breakpoints typically have both
11798 file/line and pc set. So, if clear is given file/line, we can
11799 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11800
11801 We only support clearing given the address explicitly
11802 present in breakpoint table. Say, we've set breakpoint
4a64f543 11803 at file:line. There were several PC values for that file:line,
ed0616c6 11804 due to optimization, all in one block.
4a64f543
MS
11805
11806 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11807 PC corresponding to the same file:line, the breakpoint won't
11808 be cleared. We probably can still clear the breakpoint, but
11809 since the other PC value is never presented to user, user
11810 can only find it by guessing, and it does not seem important
11811 to support that. */
11812
4a64f543
MS
11813 /* For each line spec given, delete bps which correspond to it. Do
11814 it in two passes, solely to preserve the current behavior that
11815 from_tty is forced true if we delete more than one
11816 breakpoint. */
c906108c 11817
80f8a6eb 11818 found = NULL;
8a2c437b 11819 make_cleanup (VEC_cleanup (breakpoint_p), &found);
6c5b2ebe 11820 for (const auto &sal : sals)
c906108c 11821 {
05cba821
JK
11822 const char *sal_fullname;
11823
c906108c 11824 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11825 If line given (pc == 0), clear all bpts on specified line.
11826 If defaulting, clear all bpts on default line
c906108c 11827 or at default pc.
c5aa993b
JM
11828
11829 defaulting sal.pc != 0 tests to do
11830
11831 0 1 pc
11832 1 1 pc _and_ line
11833 0 0 line
11834 1 0 <can't happen> */
c906108c 11835
05cba821
JK
11836 sal_fullname = (sal.symtab == NULL
11837 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11838
4a64f543 11839 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11840 ALL_BREAKPOINTS (b)
c5aa993b 11841 {
0d381245 11842 int match = 0;
4a64f543 11843 /* Are we going to delete b? */
cc60f2e3 11844 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11845 {
11846 struct bp_location *loc = b->loc;
11847 for (; loc; loc = loc->next)
11848 {
f8eba3c6
TT
11849 /* If the user specified file:line, don't allow a PC
11850 match. This matches historical gdb behavior. */
11851 int pc_match = (!sal.explicit_line
11852 && sal.pc
11853 && (loc->pspace == sal.pspace)
11854 && (loc->address == sal.pc)
11855 && (!section_is_overlay (loc->section)
11856 || loc->section == sal.section));
4aac40c8
TT
11857 int line_match = 0;
11858
11859 if ((default_match || sal.explicit_line)
2f202fde 11860 && loc->symtab != NULL
05cba821 11861 && sal_fullname != NULL
4aac40c8 11862 && sal.pspace == loc->pspace
05cba821
JK
11863 && loc->line_number == sal.line
11864 && filename_cmp (symtab_to_fullname (loc->symtab),
11865 sal_fullname) == 0)
11866 line_match = 1;
4aac40c8 11867
0d381245
VP
11868 if (pc_match || line_match)
11869 {
11870 match = 1;
11871 break;
11872 }
11873 }
11874 }
11875
11876 if (match)
d6e956e5 11877 VEC_safe_push(breakpoint_p, found, b);
c906108c 11878 }
80f8a6eb 11879 }
8a2c437b 11880
80f8a6eb 11881 /* Now go thru the 'found' chain and delete them. */
d6e956e5 11882 if (VEC_empty(breakpoint_p, found))
80f8a6eb
MS
11883 {
11884 if (arg)
8a3fe4f8 11885 error (_("No breakpoint at %s."), arg);
80f8a6eb 11886 else
8a3fe4f8 11887 error (_("No breakpoint at this line."));
80f8a6eb 11888 }
c906108c 11889
8a2c437b
TT
11890 /* Remove duplicates from the vec. */
11891 qsort (VEC_address (breakpoint_p, found),
11892 VEC_length (breakpoint_p, found),
11893 sizeof (breakpoint_p),
11894 compare_breakpoints);
11895 prev = VEC_index (breakpoint_p, found, 0);
11896 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11897 {
11898 if (b == prev)
11899 {
11900 VEC_ordered_remove (breakpoint_p, found, ix);
11901 --ix;
11902 }
11903 }
11904
d6e956e5 11905 if (VEC_length(breakpoint_p, found) > 1)
4a64f543 11906 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11907 if (from_tty)
a3f17187 11908 {
d6e956e5 11909 if (VEC_length(breakpoint_p, found) == 1)
a3f17187
AC
11910 printf_unfiltered (_("Deleted breakpoint "));
11911 else
11912 printf_unfiltered (_("Deleted breakpoints "));
11913 }
d6e956e5
VP
11914
11915 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
80f8a6eb 11916 {
c5aa993b 11917 if (from_tty)
d6e956e5
VP
11918 printf_unfiltered ("%d ", b->number);
11919 delete_breakpoint (b);
c906108c 11920 }
80f8a6eb
MS
11921 if (from_tty)
11922 putchar_unfiltered ('\n');
8a2c437b
TT
11923
11924 do_cleanups (cleanups);
c906108c
SS
11925}
11926\f
11927/* Delete breakpoint in BS if they are `delete' breakpoints and
11928 all breakpoints that are marked for deletion, whether hit or not.
11929 This is called after any breakpoint is hit, or after errors. */
11930
11931void
fba45db2 11932breakpoint_auto_delete (bpstat bs)
c906108c 11933{
35df4500 11934 struct breakpoint *b, *b_tmp;
c906108c
SS
11935
11936 for (; bs; bs = bs->next)
f431efe5
PA
11937 if (bs->breakpoint_at
11938 && bs->breakpoint_at->disposition == disp_del
c906108c 11939 && bs->stop)
f431efe5 11940 delete_breakpoint (bs->breakpoint_at);
c906108c 11941
35df4500 11942 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11943 {
b5de0fa7 11944 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11945 delete_breakpoint (b);
11946 }
c906108c
SS
11947}
11948
4a64f543
MS
11949/* A comparison function for bp_location AP and BP being interfaced to
11950 qsort. Sort elements primarily by their ADDRESS (no matter what
11951 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11952 secondarily by ordering first permanent elements and
4a64f543 11953 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11954 qsort being an unstable algorithm. */
876fa593
JK
11955
11956static int
f5336ca5 11957bp_locations_compare (const void *ap, const void *bp)
876fa593 11958{
9a3c8263
SM
11959 const struct bp_location *a = *(const struct bp_location **) ap;
11960 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11961
11962 if (a->address != b->address)
11963 return (a->address > b->address) - (a->address < b->address);
11964
dea2aa5f
LM
11965 /* Sort locations at the same address by their pspace number, keeping
11966 locations of the same inferior (in a multi-inferior environment)
11967 grouped. */
11968
11969 if (a->pspace->num != b->pspace->num)
11970 return ((a->pspace->num > b->pspace->num)
11971 - (a->pspace->num < b->pspace->num));
11972
876fa593 11973 /* Sort permanent breakpoints first. */
1a853c52
PA
11974 if (a->permanent != b->permanent)
11975 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11976
c56a97f9
JK
11977 /* Make the internal GDB representation stable across GDB runs
11978 where A and B memory inside GDB can differ. Breakpoint locations of
11979 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11980
11981 if (a->owner->number != b->owner->number)
c56a97f9
JK
11982 return ((a->owner->number > b->owner->number)
11983 - (a->owner->number < b->owner->number));
876fa593
JK
11984
11985 return (a > b) - (a < b);
11986}
11987
f5336ca5
PA
11988/* Set bp_locations_placed_address_before_address_max and
11989 bp_locations_shadow_len_after_address_max according to the current
11990 content of the bp_locations array. */
f7545552
TT
11991
11992static void
f5336ca5 11993bp_locations_target_extensions_update (void)
f7545552 11994{
876fa593
JK
11995 struct bp_location *bl, **blp_tmp;
11996
f5336ca5
PA
11997 bp_locations_placed_address_before_address_max = 0;
11998 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11999
12000 ALL_BP_LOCATIONS (bl, blp_tmp)
12001 {
12002 CORE_ADDR start, end, addr;
12003
12004 if (!bp_location_has_shadow (bl))
12005 continue;
12006
12007 start = bl->target_info.placed_address;
12008 end = start + bl->target_info.shadow_len;
12009
12010 gdb_assert (bl->address >= start);
12011 addr = bl->address - start;
f5336ca5
PA
12012 if (addr > bp_locations_placed_address_before_address_max)
12013 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
12014
12015 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
12016
12017 gdb_assert (bl->address < end);
12018 addr = end - bl->address;
f5336ca5
PA
12019 if (addr > bp_locations_shadow_len_after_address_max)
12020 bp_locations_shadow_len_after_address_max = addr;
876fa593 12021 }
f7545552
TT
12022}
12023
1e4d1764
YQ
12024/* Download tracepoint locations if they haven't been. */
12025
12026static void
12027download_tracepoint_locations (void)
12028{
7ed2c994 12029 struct breakpoint *b;
dd2e65cc 12030 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 12031
5ed8105e 12032 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 12033
7ed2c994 12034 ALL_TRACEPOINTS (b)
1e4d1764 12035 {
7ed2c994 12036 struct bp_location *bl;
1e4d1764 12037 struct tracepoint *t;
f2a8bc8a 12038 int bp_location_downloaded = 0;
1e4d1764 12039
7ed2c994 12040 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
12041 ? !may_insert_fast_tracepoints
12042 : !may_insert_tracepoints))
12043 continue;
12044
dd2e65cc
YQ
12045 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12046 {
12047 if (target_can_download_tracepoint ())
12048 can_download_tracepoint = TRIBOOL_TRUE;
12049 else
12050 can_download_tracepoint = TRIBOOL_FALSE;
12051 }
12052
12053 if (can_download_tracepoint == TRIBOOL_FALSE)
12054 break;
12055
7ed2c994
YQ
12056 for (bl = b->loc; bl; bl = bl->next)
12057 {
12058 /* In tracepoint, locations are _never_ duplicated, so
12059 should_be_inserted is equivalent to
12060 unduplicated_should_be_inserted. */
12061 if (!should_be_inserted (bl) || bl->inserted)
12062 continue;
1e4d1764 12063
7ed2c994 12064 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 12065
7ed2c994 12066 target_download_tracepoint (bl);
1e4d1764 12067
7ed2c994 12068 bl->inserted = 1;
f2a8bc8a 12069 bp_location_downloaded = 1;
7ed2c994
YQ
12070 }
12071 t = (struct tracepoint *) b;
12072 t->number_on_target = b->number;
f2a8bc8a
YQ
12073 if (bp_location_downloaded)
12074 observer_notify_breakpoint_modified (b);
1e4d1764 12075 }
1e4d1764
YQ
12076}
12077
934709f0
PW
12078/* Swap the insertion/duplication state between two locations. */
12079
12080static void
12081swap_insertion (struct bp_location *left, struct bp_location *right)
12082{
12083 const int left_inserted = left->inserted;
12084 const int left_duplicate = left->duplicate;
b775012e 12085 const int left_needs_update = left->needs_update;
934709f0
PW
12086 const struct bp_target_info left_target_info = left->target_info;
12087
1e4d1764
YQ
12088 /* Locations of tracepoints can never be duplicated. */
12089 if (is_tracepoint (left->owner))
12090 gdb_assert (!left->duplicate);
12091 if (is_tracepoint (right->owner))
12092 gdb_assert (!right->duplicate);
12093
934709f0
PW
12094 left->inserted = right->inserted;
12095 left->duplicate = right->duplicate;
b775012e 12096 left->needs_update = right->needs_update;
934709f0
PW
12097 left->target_info = right->target_info;
12098 right->inserted = left_inserted;
12099 right->duplicate = left_duplicate;
b775012e 12100 right->needs_update = left_needs_update;
934709f0
PW
12101 right->target_info = left_target_info;
12102}
12103
b775012e
LM
12104/* Force the re-insertion of the locations at ADDRESS. This is called
12105 once a new/deleted/modified duplicate location is found and we are evaluating
12106 conditions on the target's side. Such conditions need to be updated on
12107 the target. */
12108
12109static void
12110force_breakpoint_reinsertion (struct bp_location *bl)
12111{
12112 struct bp_location **locp = NULL, **loc2p;
12113 struct bp_location *loc;
12114 CORE_ADDR address = 0;
12115 int pspace_num;
12116
12117 address = bl->address;
12118 pspace_num = bl->pspace->num;
12119
12120 /* This is only meaningful if the target is
12121 evaluating conditions and if the user has
12122 opted for condition evaluation on the target's
12123 side. */
12124 if (gdb_evaluates_breakpoint_condition_p ()
12125 || !target_supports_evaluation_of_breakpoint_conditions ())
12126 return;
12127
12128 /* Flag all breakpoint locations with this address and
12129 the same program space as the location
12130 as "its condition has changed". We need to
12131 update the conditions on the target's side. */
12132 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12133 {
12134 loc = *loc2p;
12135
12136 if (!is_breakpoint (loc->owner)
12137 || pspace_num != loc->pspace->num)
12138 continue;
12139
12140 /* Flag the location appropriately. We use a different state to
12141 let everyone know that we already updated the set of locations
12142 with addr bl->address and program space bl->pspace. This is so
12143 we don't have to keep calling these functions just to mark locations
12144 that have already been marked. */
12145 loc->condition_changed = condition_updated;
12146
12147 /* Free the agent expression bytecode as well. We will compute
12148 it later on. */
833177a4 12149 loc->cond_bytecode.reset ();
b775012e
LM
12150 }
12151}
44702360
PA
12152/* Called whether new breakpoints are created, or existing breakpoints
12153 deleted, to update the global location list and recompute which
12154 locations are duplicate of which.
b775012e 12155
04086b45
PA
12156 The INSERT_MODE flag determines whether locations may not, may, or
12157 shall be inserted now. See 'enum ugll_insert_mode' for more
12158 info. */
b60e7edf 12159
0d381245 12160static void
44702360 12161update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 12162{
74960c60 12163 struct breakpoint *b;
876fa593 12164 struct bp_location **locp, *loc;
f7545552 12165 struct cleanup *cleanups;
b775012e
LM
12166 /* Last breakpoint location address that was marked for update. */
12167 CORE_ADDR last_addr = 0;
12168 /* Last breakpoint location program space that was marked for update. */
12169 int last_pspace_num = -1;
f7545552 12170
2d134ed3
PA
12171 /* Used in the duplicates detection below. When iterating over all
12172 bp_locations, points to the first bp_location of a given address.
12173 Breakpoints and watchpoints of different types are never
12174 duplicates of each other. Keep one pointer for each type of
12175 breakpoint/watchpoint, so we only need to loop over all locations
12176 once. */
12177 struct bp_location *bp_loc_first; /* breakpoint */
12178 struct bp_location *wp_loc_first; /* hardware watchpoint */
12179 struct bp_location *awp_loc_first; /* access watchpoint */
12180 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 12181
f5336ca5
PA
12182 /* Saved former bp_locations array which we compare against the newly
12183 built bp_locations from the current state of ALL_BREAKPOINTS. */
12184 struct bp_location **old_locations, **old_locp;
12185 unsigned old_locations_count;
876fa593 12186
f5336ca5
PA
12187 old_locations = bp_locations;
12188 old_locations_count = bp_locations_count;
12189 bp_locations = NULL;
12190 bp_locations_count = 0;
12191 cleanups = make_cleanup (xfree, old_locations);
0d381245 12192
74960c60 12193 ALL_BREAKPOINTS (b)
876fa593 12194 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 12195 bp_locations_count++;
876fa593 12196
f5336ca5
PA
12197 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12198 locp = bp_locations;
876fa593
JK
12199 ALL_BREAKPOINTS (b)
12200 for (loc = b->loc; loc; loc = loc->next)
12201 *locp++ = loc;
f5336ca5
PA
12202 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12203 bp_locations_compare);
876fa593 12204
f5336ca5 12205 bp_locations_target_extensions_update ();
74960c60 12206
4a64f543
MS
12207 /* Identify bp_location instances that are no longer present in the
12208 new list, and therefore should be freed. Note that it's not
12209 necessary that those locations should be removed from inferior --
12210 if there's another location at the same address (previously
12211 marked as duplicate), we don't need to remove/insert the
12212 location.
876fa593 12213
4a64f543
MS
12214 LOCP is kept in sync with OLD_LOCP, each pointing to the current
12215 and former bp_location array state respectively. */
876fa593 12216
f5336ca5
PA
12217 locp = bp_locations;
12218 for (old_locp = old_locations;
12219 old_locp < old_locations + old_locations_count;
876fa593 12220 old_locp++)
74960c60 12221 {
876fa593 12222 struct bp_location *old_loc = *old_locp;
c7d46a38 12223 struct bp_location **loc2p;
876fa593 12224
e5dd4106 12225 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 12226 not, we have to free it. */
c7d46a38 12227 int found_object = 0;
20874c92
VP
12228 /* Tells if the location should remain inserted in the target. */
12229 int keep_in_target = 0;
12230 int removed = 0;
876fa593 12231
4a64f543
MS
12232 /* Skip LOCP entries which will definitely never be needed.
12233 Stop either at or being the one matching OLD_LOC. */
f5336ca5 12234 while (locp < bp_locations + bp_locations_count
c7d46a38 12235 && (*locp)->address < old_loc->address)
876fa593 12236 locp++;
c7d46a38
PA
12237
12238 for (loc2p = locp;
f5336ca5 12239 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
12240 && (*loc2p)->address == old_loc->address);
12241 loc2p++)
12242 {
b775012e
LM
12243 /* Check if this is a new/duplicated location or a duplicated
12244 location that had its condition modified. If so, we want to send
12245 its condition to the target if evaluation of conditions is taking
12246 place there. */
12247 if ((*loc2p)->condition_changed == condition_modified
12248 && (last_addr != old_loc->address
12249 || last_pspace_num != old_loc->pspace->num))
c7d46a38 12250 {
b775012e
LM
12251 force_breakpoint_reinsertion (*loc2p);
12252 last_pspace_num = old_loc->pspace->num;
c7d46a38 12253 }
b775012e
LM
12254
12255 if (*loc2p == old_loc)
12256 found_object = 1;
c7d46a38 12257 }
74960c60 12258
b775012e
LM
12259 /* We have already handled this address, update it so that we don't
12260 have to go through updates again. */
12261 last_addr = old_loc->address;
12262
12263 /* Target-side condition evaluation: Handle deleted locations. */
12264 if (!found_object)
12265 force_breakpoint_reinsertion (old_loc);
12266
4a64f543
MS
12267 /* If this location is no longer present, and inserted, look if
12268 there's maybe a new location at the same address. If so,
12269 mark that one inserted, and don't remove this one. This is
12270 needed so that we don't have a time window where a breakpoint
12271 at certain location is not inserted. */
74960c60 12272
876fa593 12273 if (old_loc->inserted)
0d381245 12274 {
4a64f543
MS
12275 /* If the location is inserted now, we might have to remove
12276 it. */
74960c60 12277
876fa593 12278 if (found_object && should_be_inserted (old_loc))
74960c60 12279 {
4a64f543
MS
12280 /* The location is still present in the location list,
12281 and still should be inserted. Don't do anything. */
20874c92 12282 keep_in_target = 1;
74960c60
VP
12283 }
12284 else
12285 {
b775012e
LM
12286 /* This location still exists, but it won't be kept in the
12287 target since it may have been disabled. We proceed to
12288 remove its target-side condition. */
12289
4a64f543
MS
12290 /* The location is either no longer present, or got
12291 disabled. See if there's another location at the
12292 same address, in which case we don't need to remove
12293 this one from the target. */
876fa593 12294
2bdf28a0 12295 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
12296 if (breakpoint_address_is_meaningful (old_loc->owner))
12297 {
876fa593 12298 for (loc2p = locp;
f5336ca5 12299 (loc2p < bp_locations + bp_locations_count
c7d46a38 12300 && (*loc2p)->address == old_loc->address);
876fa593
JK
12301 loc2p++)
12302 {
12303 struct bp_location *loc2 = *loc2p;
12304
2d134ed3 12305 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 12306 {
85d721b8
PA
12307 /* Read watchpoint locations are switched to
12308 access watchpoints, if the former are not
12309 supported, but the latter are. */
12310 if (is_hardware_watchpoint (old_loc->owner))
12311 {
12312 gdb_assert (is_hardware_watchpoint (loc2->owner));
12313 loc2->watchpoint_type = old_loc->watchpoint_type;
12314 }
12315
934709f0
PW
12316 /* loc2 is a duplicated location. We need to check
12317 if it should be inserted in case it will be
12318 unduplicated. */
12319 if (loc2 != old_loc
12320 && unduplicated_should_be_inserted (loc2))
c7d46a38 12321 {
934709f0 12322 swap_insertion (old_loc, loc2);
c7d46a38
PA
12323 keep_in_target = 1;
12324 break;
12325 }
876fa593
JK
12326 }
12327 }
12328 }
74960c60
VP
12329 }
12330
20874c92
VP
12331 if (!keep_in_target)
12332 {
834c0d03 12333 if (remove_breakpoint (old_loc))
20874c92 12334 {
4a64f543
MS
12335 /* This is just about all we can do. We could keep
12336 this location on the global list, and try to
12337 remove it next time, but there's no particular
12338 reason why we will succeed next time.
20874c92 12339
4a64f543
MS
12340 Note that at this point, old_loc->owner is still
12341 valid, as delete_breakpoint frees the breakpoint
12342 only after calling us. */
3e43a32a
MS
12343 printf_filtered (_("warning: Error removing "
12344 "breakpoint %d\n"),
876fa593 12345 old_loc->owner->number);
20874c92
VP
12346 }
12347 removed = 1;
12348 }
0d381245 12349 }
74960c60
VP
12350
12351 if (!found_object)
1c5cfe86 12352 {
fbea99ea 12353 if (removed && target_is_non_stop_p ()
1cf4d951 12354 && need_moribund_for_location_type (old_loc))
20874c92 12355 {
db82e815
PA
12356 /* This location was removed from the target. In
12357 non-stop mode, a race condition is possible where
12358 we've removed a breakpoint, but stop events for that
12359 breakpoint are already queued and will arrive later.
12360 We apply an heuristic to be able to distinguish such
12361 SIGTRAPs from other random SIGTRAPs: we keep this
12362 breakpoint location for a bit, and will retire it
12363 after we see some number of events. The theory here
12364 is that reporting of events should, "on the average",
12365 be fair, so after a while we'll see events from all
12366 threads that have anything of interest, and no longer
12367 need to keep this breakpoint location around. We
12368 don't hold locations forever so to reduce chances of
12369 mistaking a non-breakpoint SIGTRAP for a breakpoint
12370 SIGTRAP.
12371
12372 The heuristic failing can be disastrous on
12373 decr_pc_after_break targets.
12374
12375 On decr_pc_after_break targets, like e.g., x86-linux,
12376 if we fail to recognize a late breakpoint SIGTRAP,
12377 because events_till_retirement has reached 0 too
12378 soon, we'll fail to do the PC adjustment, and report
12379 a random SIGTRAP to the user. When the user resumes
12380 the inferior, it will most likely immediately crash
2dec564e 12381 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
12382 corrupted, because of being resumed e.g., in the
12383 middle of a multi-byte instruction, or skipped a
12384 one-byte instruction. This was actually seen happen
12385 on native x86-linux, and should be less rare on
12386 targets that do not support new thread events, like
12387 remote, due to the heuristic depending on
12388 thread_count.
12389
12390 Mistaking a random SIGTRAP for a breakpoint trap
12391 causes similar symptoms (PC adjustment applied when
12392 it shouldn't), but then again, playing with SIGTRAPs
12393 behind the debugger's back is asking for trouble.
12394
12395 Since hardware watchpoint traps are always
12396 distinguishable from other traps, so we don't need to
12397 apply keep hardware watchpoint moribund locations
12398 around. We simply always ignore hardware watchpoint
12399 traps we can no longer explain. */
12400
876fa593
JK
12401 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12402 old_loc->owner = NULL;
20874c92 12403
876fa593 12404 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
1c5cfe86
PA
12405 }
12406 else
f431efe5
PA
12407 {
12408 old_loc->owner = NULL;
12409 decref_bp_location (&old_loc);
12410 }
20874c92 12411 }
74960c60 12412 }
1c5cfe86 12413
348d480f
PA
12414 /* Rescan breakpoints at the same address and section, marking the
12415 first one as "first" and any others as "duplicates". This is so
12416 that the bpt instruction is only inserted once. If we have a
12417 permanent breakpoint at the same place as BPT, make that one the
12418 official one, and the rest as duplicates. Permanent breakpoints
12419 are sorted first for the same address.
12420
12421 Do the same for hardware watchpoints, but also considering the
12422 watchpoint's type (regular/access/read) and length. */
12423
12424 bp_loc_first = NULL;
12425 wp_loc_first = NULL;
12426 awp_loc_first = NULL;
12427 rwp_loc_first = NULL;
12428 ALL_BP_LOCATIONS (loc, locp)
12429 {
12430 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12431 non-NULL. */
348d480f 12432 struct bp_location **loc_first_p;
d3fbdd86 12433 b = loc->owner;
348d480f 12434
6f380991 12435 if (!unduplicated_should_be_inserted (loc)
348d480f 12436 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
12437 /* Don't detect duplicate for tracepoint locations because they are
12438 never duplicated. See the comments in field `duplicate' of
12439 `struct bp_location'. */
348d480f 12440 || is_tracepoint (b))
b775012e
LM
12441 {
12442 /* Clear the condition modification flag. */
12443 loc->condition_changed = condition_unchanged;
12444 continue;
12445 }
348d480f 12446
348d480f
PA
12447 if (b->type == bp_hardware_watchpoint)
12448 loc_first_p = &wp_loc_first;
12449 else if (b->type == bp_read_watchpoint)
12450 loc_first_p = &rwp_loc_first;
12451 else if (b->type == bp_access_watchpoint)
12452 loc_first_p = &awp_loc_first;
12453 else
12454 loc_first_p = &bp_loc_first;
12455
12456 if (*loc_first_p == NULL
12457 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12458 || !breakpoint_locations_match (loc, *loc_first_p))
12459 {
12460 *loc_first_p = loc;
12461 loc->duplicate = 0;
b775012e
LM
12462
12463 if (is_breakpoint (loc->owner) && loc->condition_changed)
12464 {
12465 loc->needs_update = 1;
12466 /* Clear the condition modification flag. */
12467 loc->condition_changed = condition_unchanged;
12468 }
348d480f
PA
12469 continue;
12470 }
12471
934709f0
PW
12472
12473 /* This and the above ensure the invariant that the first location
12474 is not duplicated, and is the inserted one.
12475 All following are marked as duplicated, and are not inserted. */
12476 if (loc->inserted)
12477 swap_insertion (loc, *loc_first_p);
348d480f
PA
12478 loc->duplicate = 1;
12479
b775012e
LM
12480 /* Clear the condition modification flag. */
12481 loc->condition_changed = condition_unchanged;
348d480f
PA
12482 }
12483
a25a5a45 12484 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12485 {
04086b45 12486 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12487 insert_breakpoint_locations ();
12488 else
12489 {
44702360
PA
12490 /* Even though the caller told us to not insert new
12491 locations, we may still need to update conditions on the
12492 target's side of breakpoints that were already inserted
12493 if the target is evaluating breakpoint conditions. We
b775012e
LM
12494 only update conditions for locations that are marked
12495 "needs_update". */
12496 update_inserted_breakpoint_locations ();
12497 }
12498 }
348d480f 12499
04086b45 12500 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764
YQ
12501 download_tracepoint_locations ();
12502
348d480f
PA
12503 do_cleanups (cleanups);
12504}
12505
12506void
12507breakpoint_retire_moribund (void)
12508{
12509 struct bp_location *loc;
12510 int ix;
12511
12512 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12513 if (--(loc->events_till_retirement) == 0)
12514 {
12515 decref_bp_location (&loc);
12516 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12517 --ix;
12518 }
12519}
12520
12521static void
44702360 12522update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12523{
348d480f 12524
492d29ea
PA
12525 TRY
12526 {
12527 update_global_location_list (insert_mode);
12528 }
12529 CATCH (e, RETURN_MASK_ERROR)
12530 {
12531 }
12532 END_CATCH
348d480f
PA
12533}
12534
12535/* Clear BKP from a BPS. */
12536
12537static void
12538bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12539{
12540 bpstat bs;
12541
12542 for (bs = bps; bs; bs = bs->next)
12543 if (bs->breakpoint_at == bpt)
12544 {
12545 bs->breakpoint_at = NULL;
12546 bs->old_val = NULL;
12547 /* bs->commands will be freed later. */
12548 }
12549}
12550
12551/* Callback for iterate_over_threads. */
12552static int
12553bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12554{
9a3c8263 12555 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12556
12557 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12558 return 0;
12559}
12560
12561/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12562 callbacks. */
12563
12564static void
12565say_where (struct breakpoint *b)
12566{
12567 struct value_print_options opts;
12568
12569 get_user_print_options (&opts);
12570
12571 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12572 single string. */
12573 if (b->loc == NULL)
12574 {
f00aae0f
KS
12575 /* For pending locations, the output differs slightly based
12576 on b->extra_string. If this is non-NULL, it contains either
12577 a condition or dprintf arguments. */
12578 if (b->extra_string == NULL)
12579 {
12580 printf_filtered (_(" (%s) pending."),
d28cd78a 12581 event_location_to_string (b->location.get ()));
f00aae0f
KS
12582 }
12583 else if (b->type == bp_dprintf)
12584 {
12585 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12586 event_location_to_string (b->location.get ()),
f00aae0f
KS
12587 b->extra_string);
12588 }
12589 else
12590 {
12591 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12592 event_location_to_string (b->location.get ()),
f00aae0f
KS
12593 b->extra_string);
12594 }
348d480f
PA
12595 }
12596 else
12597 {
2f202fde 12598 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12599 {
12600 printf_filtered (" at ");
12601 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12602 gdb_stdout);
12603 }
2f202fde 12604 if (b->loc->symtab != NULL)
f8eba3c6
TT
12605 {
12606 /* If there is a single location, we can print the location
12607 more nicely. */
12608 if (b->loc->next == NULL)
12609 printf_filtered (": file %s, line %d.",
05cba821
JK
12610 symtab_to_filename_for_display (b->loc->symtab),
12611 b->loc->line_number);
f8eba3c6
TT
12612 else
12613 /* This is not ideal, but each location may have a
12614 different file name, and this at least reflects the
12615 real situation somewhat. */
f00aae0f 12616 printf_filtered (": %s.",
d28cd78a 12617 event_location_to_string (b->location.get ()));
f8eba3c6 12618 }
348d480f
PA
12619
12620 if (b->loc->next)
12621 {
12622 struct bp_location *loc = b->loc;
12623 int n = 0;
12624 for (; loc; loc = loc->next)
12625 ++n;
12626 printf_filtered (" (%d locations)", n);
12627 }
12628 }
12629}
12630
348d480f
PA
12631/* Default bp_location_ops methods. */
12632
12633static void
12634bp_location_dtor (struct bp_location *self)
12635{
348d480f
PA
12636 xfree (self->function_name);
12637}
12638
12639static const struct bp_location_ops bp_location_ops =
12640{
12641 bp_location_dtor
12642};
12643
c1fc2657 12644/* Destructor for the breakpoint base class. */
348d480f 12645
c1fc2657 12646breakpoint::~breakpoint ()
348d480f 12647{
c1fc2657
SM
12648 decref_counted_command_line (&this->commands);
12649 xfree (this->cond_string);
12650 xfree (this->extra_string);
12651 xfree (this->filter);
348d480f
PA
12652}
12653
2060206e
PA
12654static struct bp_location *
12655base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12656{
5625a286 12657 return new bp_location (&bp_location_ops, self);
348d480f
PA
12658}
12659
2060206e
PA
12660static void
12661base_breakpoint_re_set (struct breakpoint *b)
12662{
12663 /* Nothing to re-set. */
12664}
12665
12666#define internal_error_pure_virtual_called() \
12667 gdb_assert_not_reached ("pure virtual function called")
12668
12669static int
12670base_breakpoint_insert_location (struct bp_location *bl)
12671{
12672 internal_error_pure_virtual_called ();
12673}
12674
12675static int
73971819
PA
12676base_breakpoint_remove_location (struct bp_location *bl,
12677 enum remove_bp_reason reason)
2060206e
PA
12678{
12679 internal_error_pure_virtual_called ();
12680}
12681
12682static int
12683base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12684 struct address_space *aspace,
09ac7c10
TT
12685 CORE_ADDR bp_addr,
12686 const struct target_waitstatus *ws)
2060206e
PA
12687{
12688 internal_error_pure_virtual_called ();
12689}
12690
12691static void
12692base_breakpoint_check_status (bpstat bs)
12693{
12694 /* Always stop. */
12695}
12696
12697/* A "works_in_software_mode" breakpoint_ops method that just internal
12698 errors. */
12699
12700static int
12701base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12702{
12703 internal_error_pure_virtual_called ();
12704}
12705
12706/* A "resources_needed" breakpoint_ops method that just internal
12707 errors. */
12708
12709static int
12710base_breakpoint_resources_needed (const struct bp_location *bl)
12711{
12712 internal_error_pure_virtual_called ();
12713}
12714
12715static enum print_stop_action
12716base_breakpoint_print_it (bpstat bs)
12717{
12718 internal_error_pure_virtual_called ();
12719}
12720
12721static void
12722base_breakpoint_print_one_detail (const struct breakpoint *self,
12723 struct ui_out *uiout)
12724{
12725 /* nothing */
12726}
12727
12728static void
12729base_breakpoint_print_mention (struct breakpoint *b)
12730{
12731 internal_error_pure_virtual_called ();
12732}
12733
12734static void
12735base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12736{
12737 internal_error_pure_virtual_called ();
12738}
12739
983af33b 12740static void
f00aae0f
KS
12741base_breakpoint_create_sals_from_location
12742 (const struct event_location *location,
12743 struct linespec_result *canonical,
12744 enum bptype type_wanted)
983af33b
SDJ
12745{
12746 internal_error_pure_virtual_called ();
12747}
12748
12749static void
12750base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12751 struct linespec_result *c,
e1e01040
PA
12752 gdb::unique_xmalloc_ptr<char> cond_string,
12753 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12754 enum bptype type_wanted,
12755 enum bpdisp disposition,
12756 int thread,
12757 int task, int ignore_count,
12758 const struct breakpoint_ops *o,
12759 int from_tty, int enabled,
44f238bb 12760 int internal, unsigned flags)
983af33b
SDJ
12761{
12762 internal_error_pure_virtual_called ();
12763}
12764
6c5b2ebe 12765static std::vector<symtab_and_line>
f00aae0f
KS
12766base_breakpoint_decode_location (struct breakpoint *b,
12767 const struct event_location *location,
6c5b2ebe 12768 struct program_space *search_pspace)
983af33b
SDJ
12769{
12770 internal_error_pure_virtual_called ();
12771}
12772
ab04a2af
TT
12773/* The default 'explains_signal' method. */
12774
47591c29 12775static int
427cd150 12776base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12777{
47591c29 12778 return 1;
ab04a2af
TT
12779}
12780
9d6e6e84
HZ
12781/* The default "after_condition_true" method. */
12782
12783static void
12784base_breakpoint_after_condition_true (struct bpstats *bs)
12785{
12786 /* Nothing to do. */
12787}
12788
ab04a2af 12789struct breakpoint_ops base_breakpoint_ops =
2060206e 12790{
2060206e
PA
12791 base_breakpoint_allocate_location,
12792 base_breakpoint_re_set,
12793 base_breakpoint_insert_location,
12794 base_breakpoint_remove_location,
12795 base_breakpoint_breakpoint_hit,
12796 base_breakpoint_check_status,
12797 base_breakpoint_resources_needed,
12798 base_breakpoint_works_in_software_mode,
12799 base_breakpoint_print_it,
12800 NULL,
12801 base_breakpoint_print_one_detail,
12802 base_breakpoint_print_mention,
983af33b 12803 base_breakpoint_print_recreate,
5f700d83 12804 base_breakpoint_create_sals_from_location,
983af33b 12805 base_breakpoint_create_breakpoints_sal,
5f700d83 12806 base_breakpoint_decode_location,
9d6e6e84
HZ
12807 base_breakpoint_explains_signal,
12808 base_breakpoint_after_condition_true,
2060206e
PA
12809};
12810
12811/* Default breakpoint_ops methods. */
12812
12813static void
348d480f
PA
12814bkpt_re_set (struct breakpoint *b)
12815{
06edf0c0 12816 /* FIXME: is this still reachable? */
9ef9e6a6 12817 if (breakpoint_event_location_empty_p (b))
06edf0c0 12818 {
f00aae0f 12819 /* Anything without a location can't be re-set. */
348d480f 12820 delete_breakpoint (b);
06edf0c0 12821 return;
348d480f 12822 }
06edf0c0
PA
12823
12824 breakpoint_re_set_default (b);
348d480f
PA
12825}
12826
2060206e 12827static int
348d480f
PA
12828bkpt_insert_location (struct bp_location *bl)
12829{
cd6c3b4f
YQ
12830 CORE_ADDR addr = bl->target_info.reqstd_address;
12831
579c6ad9 12832 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12833 bl->target_info.placed_address = addr;
12834
348d480f 12835 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12836 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12837 else
7c16b83e 12838 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12839}
12840
2060206e 12841static int
73971819 12842bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12843{
12844 if (bl->loc_type == bp_loc_hardware_breakpoint)
12845 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12846 else
73971819 12847 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12848}
12849
2060206e 12850static int
348d480f 12851bkpt_breakpoint_hit (const struct bp_location *bl,
09ac7c10
TT
12852 struct address_space *aspace, CORE_ADDR bp_addr,
12853 const struct target_waitstatus *ws)
348d480f 12854{
09ac7c10 12855 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12856 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12857 return 0;
12858
348d480f
PA
12859 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12860 aspace, bp_addr))
12861 return 0;
12862
12863 if (overlay_debugging /* unmapped overlay section */
12864 && section_is_overlay (bl->section)
12865 && !section_is_mapped (bl->section))
12866 return 0;
12867
12868 return 1;
12869}
12870
cd1608cc
PA
12871static int
12872dprintf_breakpoint_hit (const struct bp_location *bl,
12873 struct address_space *aspace, CORE_ADDR bp_addr,
12874 const struct target_waitstatus *ws)
12875{
12876 if (dprintf_style == dprintf_style_agent
12877 && target_can_run_breakpoint_commands ())
12878 {
12879 /* An agent-style dprintf never causes a stop. If we see a trap
12880 for this address it must be for a breakpoint that happens to
12881 be set at the same address. */
12882 return 0;
12883 }
12884
12885 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12886}
12887
2060206e 12888static int
348d480f
PA
12889bkpt_resources_needed (const struct bp_location *bl)
12890{
12891 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12892
12893 return 1;
12894}
12895
2060206e 12896static enum print_stop_action
348d480f
PA
12897bkpt_print_it (bpstat bs)
12898{
348d480f
PA
12899 struct breakpoint *b;
12900 const struct bp_location *bl;
001c8c33 12901 int bp_temp;
79a45e25 12902 struct ui_out *uiout = current_uiout;
348d480f
PA
12903
12904 gdb_assert (bs->bp_location_at != NULL);
12905
12906 bl = bs->bp_location_at;
12907 b = bs->breakpoint_at;
12908
001c8c33
PA
12909 bp_temp = b->disposition == disp_del;
12910 if (bl->address != bl->requested_address)
12911 breakpoint_adjustment_warning (bl->requested_address,
12912 bl->address,
12913 b->number, 1);
12914 annotate_breakpoint (b->number);
f303dbd6
PA
12915 maybe_print_thread_hit_breakpoint (uiout);
12916
001c8c33 12917 if (bp_temp)
112e8700 12918 uiout->text ("Temporary breakpoint ");
001c8c33 12919 else
112e8700
SM
12920 uiout->text ("Breakpoint ");
12921 if (uiout->is_mi_like_p ())
348d480f 12922 {
112e8700 12923 uiout->field_string ("reason",
001c8c33 12924 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12925 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12926 }
112e8700
SM
12927 uiout->field_int ("bkptno", b->number);
12928 uiout->text (", ");
06edf0c0 12929
001c8c33 12930 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12931}
12932
2060206e 12933static void
06edf0c0
PA
12934bkpt_print_mention (struct breakpoint *b)
12935{
112e8700 12936 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12937 return;
12938
12939 switch (b->type)
12940 {
12941 case bp_breakpoint:
12942 case bp_gnu_ifunc_resolver:
12943 if (b->disposition == disp_del)
12944 printf_filtered (_("Temporary breakpoint"));
12945 else
12946 printf_filtered (_("Breakpoint"));
12947 printf_filtered (_(" %d"), b->number);
12948 if (b->type == bp_gnu_ifunc_resolver)
12949 printf_filtered (_(" at gnu-indirect-function resolver"));
12950 break;
12951 case bp_hardware_breakpoint:
12952 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12953 break;
e7e0cddf
SS
12954 case bp_dprintf:
12955 printf_filtered (_("Dprintf %d"), b->number);
12956 break;
06edf0c0
PA
12957 }
12958
12959 say_where (b);
12960}
12961
2060206e 12962static void
06edf0c0
PA
12963bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12964{
12965 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12966 fprintf_unfiltered (fp, "tbreak");
12967 else if (tp->type == bp_breakpoint)
12968 fprintf_unfiltered (fp, "break");
12969 else if (tp->type == bp_hardware_breakpoint
12970 && tp->disposition == disp_del)
12971 fprintf_unfiltered (fp, "thbreak");
12972 else if (tp->type == bp_hardware_breakpoint)
12973 fprintf_unfiltered (fp, "hbreak");
12974 else
12975 internal_error (__FILE__, __LINE__,
12976 _("unhandled breakpoint type %d"), (int) tp->type);
12977
f00aae0f 12978 fprintf_unfiltered (fp, " %s",
d28cd78a 12979 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12980
12981 /* Print out extra_string if this breakpoint is pending. It might
12982 contain, for example, conditions that were set by the user. */
12983 if (tp->loc == NULL && tp->extra_string != NULL)
12984 fprintf_unfiltered (fp, " %s", tp->extra_string);
12985
dd11a36c 12986 print_recreate_thread (tp, fp);
06edf0c0
PA
12987}
12988
983af33b 12989static void
f00aae0f
KS
12990bkpt_create_sals_from_location (const struct event_location *location,
12991 struct linespec_result *canonical,
12992 enum bptype type_wanted)
983af33b 12993{
f00aae0f 12994 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12995}
12996
12997static void
12998bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12999 struct linespec_result *canonical,
e1e01040
PA
13000 gdb::unique_xmalloc_ptr<char> cond_string,
13001 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13002 enum bptype type_wanted,
13003 enum bpdisp disposition,
13004 int thread,
13005 int task, int ignore_count,
13006 const struct breakpoint_ops *ops,
13007 int from_tty, int enabled,
44f238bb 13008 int internal, unsigned flags)
983af33b 13009{
023fa29b 13010 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13011 std::move (cond_string),
13012 std::move (extra_string),
e7e0cddf 13013 type_wanted,
983af33b
SDJ
13014 disposition, thread, task,
13015 ignore_count, ops, from_tty,
44f238bb 13016 enabled, internal, flags);
983af33b
SDJ
13017}
13018
6c5b2ebe 13019static std::vector<symtab_and_line>
f00aae0f
KS
13020bkpt_decode_location (struct breakpoint *b,
13021 const struct event_location *location,
6c5b2ebe 13022 struct program_space *search_pspace)
983af33b 13023{
6c5b2ebe 13024 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
13025}
13026
06edf0c0
PA
13027/* Virtual table for internal breakpoints. */
13028
13029static void
13030internal_bkpt_re_set (struct breakpoint *b)
13031{
13032 switch (b->type)
13033 {
13034 /* Delete overlay event and longjmp master breakpoints; they
13035 will be reset later by breakpoint_re_set. */
13036 case bp_overlay_event:
13037 case bp_longjmp_master:
13038 case bp_std_terminate_master:
13039 case bp_exception_master:
13040 delete_breakpoint (b);
13041 break;
13042
13043 /* This breakpoint is special, it's set up when the inferior
13044 starts and we really don't want to touch it. */
13045 case bp_shlib_event:
13046
13047 /* Like bp_shlib_event, this breakpoint type is special. Once
13048 it is set up, we do not want to touch it. */
13049 case bp_thread_event:
13050 break;
13051 }
13052}
13053
13054static void
13055internal_bkpt_check_status (bpstat bs)
13056{
a9b3a50f
PA
13057 if (bs->breakpoint_at->type == bp_shlib_event)
13058 {
13059 /* If requested, stop when the dynamic linker notifies GDB of
13060 events. This allows the user to get control and place
13061 breakpoints in initializer routines for dynamically loaded
13062 objects (among other things). */
13063 bs->stop = stop_on_solib_events;
13064 bs->print = stop_on_solib_events;
13065 }
13066 else
13067 bs->stop = 0;
06edf0c0
PA
13068}
13069
13070static enum print_stop_action
13071internal_bkpt_print_it (bpstat bs)
13072{
06edf0c0 13073 struct breakpoint *b;
06edf0c0 13074
06edf0c0
PA
13075 b = bs->breakpoint_at;
13076
06edf0c0
PA
13077 switch (b->type)
13078 {
348d480f
PA
13079 case bp_shlib_event:
13080 /* Did we stop because the user set the stop_on_solib_events
13081 variable? (If so, we report this as a generic, "Stopped due
13082 to shlib event" message.) */
edcc5120 13083 print_solib_event (0);
348d480f
PA
13084 break;
13085
13086 case bp_thread_event:
13087 /* Not sure how we will get here.
13088 GDB should not stop for these breakpoints. */
13089 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
13090 break;
13091
13092 case bp_overlay_event:
13093 /* By analogy with the thread event, GDB should not stop for these. */
13094 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
13095 break;
13096
13097 case bp_longjmp_master:
13098 /* These should never be enabled. */
13099 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
13100 break;
13101
13102 case bp_std_terminate_master:
13103 /* These should never be enabled. */
13104 printf_filtered (_("std::terminate Master Breakpoint: "
13105 "gdb should not stop!\n"));
348d480f
PA
13106 break;
13107
13108 case bp_exception_master:
13109 /* These should never be enabled. */
13110 printf_filtered (_("Exception Master Breakpoint: "
13111 "gdb should not stop!\n"));
06edf0c0
PA
13112 break;
13113 }
13114
001c8c33 13115 return PRINT_NOTHING;
06edf0c0
PA
13116}
13117
13118static void
13119internal_bkpt_print_mention (struct breakpoint *b)
13120{
13121 /* Nothing to mention. These breakpoints are internal. */
13122}
13123
06edf0c0
PA
13124/* Virtual table for momentary breakpoints */
13125
13126static void
13127momentary_bkpt_re_set (struct breakpoint *b)
13128{
13129 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 13130 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
13131 Otherwise these should have been blown away via the cleanup chain
13132 or by breakpoint_init_inferior when we rerun the executable. */
13133}
13134
13135static void
13136momentary_bkpt_check_status (bpstat bs)
13137{
13138 /* Nothing. The point of these breakpoints is causing a stop. */
13139}
13140
13141static enum print_stop_action
13142momentary_bkpt_print_it (bpstat bs)
13143{
001c8c33 13144 return PRINT_UNKNOWN;
348d480f
PA
13145}
13146
06edf0c0
PA
13147static void
13148momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 13149{
06edf0c0 13150 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
13151}
13152
e2e4d78b
JK
13153/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13154
13155 It gets cleared already on the removal of the first one of such placed
13156 breakpoints. This is OK as they get all removed altogether. */
13157
c1fc2657 13158longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 13159{
c1fc2657 13160 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 13161
c1fc2657 13162 if (tp != NULL)
e2e4d78b 13163 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
13164}
13165
55aa24fb
SDJ
13166/* Specific methods for probe breakpoints. */
13167
13168static int
13169bkpt_probe_insert_location (struct bp_location *bl)
13170{
13171 int v = bkpt_insert_location (bl);
13172
13173 if (v == 0)
13174 {
13175 /* The insertion was successful, now let's set the probe's semaphore
13176 if needed. */
0ea5cda8
SDJ
13177 if (bl->probe.probe->pops->set_semaphore != NULL)
13178 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13179 bl->probe.objfile,
13180 bl->gdbarch);
55aa24fb
SDJ
13181 }
13182
13183 return v;
13184}
13185
13186static int
73971819
PA
13187bkpt_probe_remove_location (struct bp_location *bl,
13188 enum remove_bp_reason reason)
55aa24fb
SDJ
13189{
13190 /* Let's clear the semaphore before removing the location. */
0ea5cda8
SDJ
13191 if (bl->probe.probe->pops->clear_semaphore != NULL)
13192 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13193 bl->probe.objfile,
13194 bl->gdbarch);
55aa24fb 13195
73971819 13196 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
13197}
13198
13199static void
f00aae0f 13200bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 13201 struct linespec_result *canonical,
f00aae0f 13202 enum bptype type_wanted)
55aa24fb
SDJ
13203{
13204 struct linespec_sals lsal;
13205
c2f4122d 13206 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
13207 lsal.canonical
13208 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13209 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
13210}
13211
6c5b2ebe 13212static std::vector<symtab_and_line>
f00aae0f
KS
13213bkpt_probe_decode_location (struct breakpoint *b,
13214 const struct event_location *location,
6c5b2ebe 13215 struct program_space *search_pspace)
55aa24fb 13216{
6c5b2ebe
PA
13217 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
13218 if (sals.empty ())
55aa24fb 13219 error (_("probe not found"));
6c5b2ebe 13220 return sals;
55aa24fb
SDJ
13221}
13222
348d480f 13223/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 13224
348d480f
PA
13225static void
13226tracepoint_re_set (struct breakpoint *b)
13227{
13228 breakpoint_re_set_default (b);
13229}
876fa593 13230
348d480f
PA
13231static int
13232tracepoint_breakpoint_hit (const struct bp_location *bl,
09ac7c10
TT
13233 struct address_space *aspace, CORE_ADDR bp_addr,
13234 const struct target_waitstatus *ws)
348d480f
PA
13235{
13236 /* By definition, the inferior does not report stops at
13237 tracepoints. */
13238 return 0;
74960c60
VP
13239}
13240
13241static void
348d480f
PA
13242tracepoint_print_one_detail (const struct breakpoint *self,
13243 struct ui_out *uiout)
74960c60 13244{
d9b3f62e
PA
13245 struct tracepoint *tp = (struct tracepoint *) self;
13246 if (tp->static_trace_marker_id)
348d480f
PA
13247 {
13248 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 13249
112e8700
SM
13250 uiout->text ("\tmarker id is ");
13251 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 13252 tp->static_trace_marker_id);
112e8700 13253 uiout->text ("\n");
348d480f 13254 }
0d381245
VP
13255}
13256
a474d7c2 13257static void
348d480f 13258tracepoint_print_mention (struct breakpoint *b)
a474d7c2 13259{
112e8700 13260 if (current_uiout->is_mi_like_p ())
348d480f 13261 return;
cc59ec59 13262
348d480f
PA
13263 switch (b->type)
13264 {
13265 case bp_tracepoint:
13266 printf_filtered (_("Tracepoint"));
13267 printf_filtered (_(" %d"), b->number);
13268 break;
13269 case bp_fast_tracepoint:
13270 printf_filtered (_("Fast tracepoint"));
13271 printf_filtered (_(" %d"), b->number);
13272 break;
13273 case bp_static_tracepoint:
13274 printf_filtered (_("Static tracepoint"));
13275 printf_filtered (_(" %d"), b->number);
13276 break;
13277 default:
13278 internal_error (__FILE__, __LINE__,
13279 _("unhandled tracepoint type %d"), (int) b->type);
13280 }
13281
13282 say_where (b);
a474d7c2
PA
13283}
13284
348d480f 13285static void
d9b3f62e 13286tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 13287{
d9b3f62e
PA
13288 struct tracepoint *tp = (struct tracepoint *) self;
13289
13290 if (self->type == bp_fast_tracepoint)
348d480f 13291 fprintf_unfiltered (fp, "ftrace");
c93e8391 13292 else if (self->type == bp_static_tracepoint)
348d480f 13293 fprintf_unfiltered (fp, "strace");
d9b3f62e 13294 else if (self->type == bp_tracepoint)
348d480f
PA
13295 fprintf_unfiltered (fp, "trace");
13296 else
13297 internal_error (__FILE__, __LINE__,
d9b3f62e 13298 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 13299
f00aae0f 13300 fprintf_unfiltered (fp, " %s",
d28cd78a 13301 event_location_to_string (self->location.get ()));
d9b3f62e
PA
13302 print_recreate_thread (self, fp);
13303
13304 if (tp->pass_count)
13305 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
13306}
13307
983af33b 13308static void
f00aae0f
KS
13309tracepoint_create_sals_from_location (const struct event_location *location,
13310 struct linespec_result *canonical,
13311 enum bptype type_wanted)
983af33b 13312{
f00aae0f 13313 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
13314}
13315
13316static void
13317tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13318 struct linespec_result *canonical,
e1e01040
PA
13319 gdb::unique_xmalloc_ptr<char> cond_string,
13320 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13321 enum bptype type_wanted,
13322 enum bpdisp disposition,
13323 int thread,
13324 int task, int ignore_count,
13325 const struct breakpoint_ops *ops,
13326 int from_tty, int enabled,
44f238bb 13327 int internal, unsigned flags)
983af33b 13328{
023fa29b 13329 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13330 std::move (cond_string),
13331 std::move (extra_string),
e7e0cddf 13332 type_wanted,
983af33b
SDJ
13333 disposition, thread, task,
13334 ignore_count, ops, from_tty,
44f238bb 13335 enabled, internal, flags);
983af33b
SDJ
13336}
13337
6c5b2ebe 13338static std::vector<symtab_and_line>
f00aae0f
KS
13339tracepoint_decode_location (struct breakpoint *b,
13340 const struct event_location *location,
6c5b2ebe 13341 struct program_space *search_pspace)
983af33b 13342{
6c5b2ebe 13343 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
13344}
13345
2060206e 13346struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 13347
55aa24fb
SDJ
13348/* The breakpoint_ops structure to be use on tracepoints placed in a
13349 static probe. */
13350
13351static void
f00aae0f
KS
13352tracepoint_probe_create_sals_from_location
13353 (const struct event_location *location,
13354 struct linespec_result *canonical,
13355 enum bptype type_wanted)
55aa24fb
SDJ
13356{
13357 /* We use the same method for breakpoint on probes. */
f00aae0f 13358 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
13359}
13360
6c5b2ebe 13361static std::vector<symtab_and_line>
f00aae0f
KS
13362tracepoint_probe_decode_location (struct breakpoint *b,
13363 const struct event_location *location,
6c5b2ebe 13364 struct program_space *search_pspace)
55aa24fb
SDJ
13365{
13366 /* We use the same method for breakpoint on probes. */
6c5b2ebe 13367 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
13368}
13369
13370static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13371
5c2b4418
HZ
13372/* Dprintf breakpoint_ops methods. */
13373
13374static void
13375dprintf_re_set (struct breakpoint *b)
13376{
13377 breakpoint_re_set_default (b);
13378
f00aae0f
KS
13379 /* extra_string should never be non-NULL for dprintf. */
13380 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
13381
13382 /* 1 - connect to target 1, that can run breakpoint commands.
13383 2 - create a dprintf, which resolves fine.
13384 3 - disconnect from target 1
13385 4 - connect to target 2, that can NOT run breakpoint commands.
13386
13387 After steps #3/#4, you'll want the dprintf command list to
13388 be updated, because target 1 and 2 may well return different
13389 answers for target_can_run_breakpoint_commands().
13390 Given absence of finer grained resetting, we get to do
13391 it all the time. */
13392 if (b->extra_string != NULL)
13393 update_dprintf_command_list (b);
13394}
13395
2d9442cc
HZ
13396/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13397
13398static void
13399dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13400{
f00aae0f 13401 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 13402 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
13403 tp->extra_string);
13404 print_recreate_thread (tp, fp);
13405}
13406
9d6e6e84
HZ
13407/* Implement the "after_condition_true" breakpoint_ops method for
13408 dprintf.
13409
13410 dprintf's are implemented with regular commands in their command
13411 list, but we run the commands here instead of before presenting the
13412 stop to the user, as dprintf's don't actually cause a stop. This
13413 also makes it so that the commands of multiple dprintfs at the same
13414 address are all handled. */
13415
13416static void
13417dprintf_after_condition_true (struct bpstats *bs)
13418{
13419 struct cleanup *old_chain;
13420 struct bpstats tmp_bs = { NULL };
13421 struct bpstats *tmp_bs_p = &tmp_bs;
13422
13423 /* dprintf's never cause a stop. This wasn't set in the
13424 check_status hook instead because that would make the dprintf's
13425 condition not be evaluated. */
13426 bs->stop = 0;
13427
13428 /* Run the command list here. Take ownership of it instead of
13429 copying. We never want these commands to run later in
13430 bpstat_do_actions, if a breakpoint that causes a stop happens to
13431 be set at same address as this dprintf, or even if running the
13432 commands here throws. */
13433 tmp_bs.commands = bs->commands;
13434 bs->commands = NULL;
13435 old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13436
13437 bpstat_do_actions_1 (&tmp_bs_p);
13438
13439 /* 'tmp_bs.commands' will usually be NULL by now, but
13440 bpstat_do_actions_1 may return early without processing the whole
13441 list. */
13442 do_cleanups (old_chain);
13443}
13444
983af33b
SDJ
13445/* The breakpoint_ops structure to be used on static tracepoints with
13446 markers (`-m'). */
13447
13448static void
f00aae0f 13449strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 13450 struct linespec_result *canonical,
f00aae0f 13451 enum bptype type_wanted)
983af33b
SDJ
13452{
13453 struct linespec_sals lsal;
f00aae0f
KS
13454 const char *arg_start, *arg;
13455 char *str;
13456 struct cleanup *cleanup;
983af33b 13457
f00aae0f
KS
13458 arg = arg_start = get_linespec_location (location);
13459 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13460
f00aae0f
KS
13461 str = savestring (arg_start, arg - arg_start);
13462 cleanup = make_cleanup (xfree, str);
8e9e35b1 13463 canonical->location = new_linespec_location (&str);
f00aae0f 13464 do_cleanups (cleanup);
983af33b 13465
8e9e35b1
TT
13466 lsal.canonical
13467 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13468 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
13469}
13470
13471static void
13472strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13473 struct linespec_result *canonical,
e1e01040
PA
13474 gdb::unique_xmalloc_ptr<char> cond_string,
13475 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13476 enum bptype type_wanted,
13477 enum bpdisp disposition,
13478 int thread,
13479 int task, int ignore_count,
13480 const struct breakpoint_ops *ops,
13481 int from_tty, int enabled,
44f238bb 13482 int internal, unsigned flags)
983af33b 13483{
6c5b2ebe 13484 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
13485
13486 /* If the user is creating a static tracepoint by marker id
13487 (strace -m MARKER_ID), then store the sals index, so that
13488 breakpoint_re_set can try to match up which of the newly
13489 found markers corresponds to this one, and, don't try to
13490 expand multiple locations for each sal, given than SALS
13491 already should contain all sals for MARKER_ID. */
13492
6c5b2ebe 13493 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13494 {
6c5b2ebe
PA
13495 event_location_up location
13496 = copy_event_location (canonical->location.get ());
983af33b 13497
b270e6f9 13498 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13499 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13500 std::move (location), NULL,
e1e01040
PA
13501 std::move (cond_string),
13502 std::move (extra_string),
e7e0cddf 13503 type_wanted, disposition,
983af33b 13504 thread, task, ignore_count, ops,
44f238bb 13505 from_tty, enabled, internal, flags,
983af33b
SDJ
13506 canonical->special_display);
13507 /* Given that its possible to have multiple markers with
13508 the same string id, if the user is creating a static
13509 tracepoint by marker id ("strace -m MARKER_ID"), then
13510 store the sals index, so that breakpoint_re_set can
13511 try to match up which of the newly found markers
13512 corresponds to this one */
13513 tp->static_trace_marker_id_idx = i;
13514
b270e6f9 13515 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13516 }
13517}
13518
6c5b2ebe 13519static std::vector<symtab_and_line>
f00aae0f
KS
13520strace_marker_decode_location (struct breakpoint *b,
13521 const struct event_location *location,
6c5b2ebe 13522 struct program_space *search_pspace)
983af33b
SDJ
13523{
13524 struct tracepoint *tp = (struct tracepoint *) b;
f00aae0f 13525 const char *s = get_linespec_location (location);
983af33b 13526
6c5b2ebe
PA
13527 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13528 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13529 {
6c5b2ebe
PA
13530 sals[0] = sals[tp->static_trace_marker_id_idx];
13531 sals.resize (1);
13532 return sals;
983af33b
SDJ
13533 }
13534 else
13535 error (_("marker %s not found"), tp->static_trace_marker_id);
13536}
13537
13538static struct breakpoint_ops strace_marker_breakpoint_ops;
13539
13540static int
13541strace_marker_p (struct breakpoint *b)
13542{
13543 return b->ops == &strace_marker_breakpoint_ops;
13544}
13545
53a5351d 13546/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13547 structures. */
c906108c
SS
13548
13549void
fba45db2 13550delete_breakpoint (struct breakpoint *bpt)
c906108c 13551{
52f0bd74 13552 struct breakpoint *b;
c906108c 13553
8a3fe4f8 13554 gdb_assert (bpt != NULL);
c906108c 13555
4a64f543
MS
13556 /* Has this bp already been deleted? This can happen because
13557 multiple lists can hold pointers to bp's. bpstat lists are
13558 especial culprits.
13559
13560 One example of this happening is a watchpoint's scope bp. When
13561 the scope bp triggers, we notice that the watchpoint is out of
13562 scope, and delete it. We also delete its scope bp. But the
13563 scope bp is marked "auto-deleting", and is already on a bpstat.
13564 That bpstat is then checked for auto-deleting bp's, which are
13565 deleted.
13566
13567 A real solution to this problem might involve reference counts in
13568 bp's, and/or giving them pointers back to their referencing
13569 bpstat's, and teaching delete_breakpoint to only free a bp's
13570 storage when no more references were extent. A cheaper bandaid
13571 was chosen. */
c906108c
SS
13572 if (bpt->type == bp_none)
13573 return;
13574
4a64f543
MS
13575 /* At least avoid this stale reference until the reference counting
13576 of breakpoints gets resolved. */
d0fb5eae 13577 if (bpt->related_breakpoint != bpt)
e5a0a904 13578 {
d0fb5eae 13579 struct breakpoint *related;
3a5c3e22 13580 struct watchpoint *w;
d0fb5eae
JK
13581
13582 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13583 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13584 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13585 w = (struct watchpoint *) bpt;
13586 else
13587 w = NULL;
13588 if (w != NULL)
13589 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13590
13591 /* Unlink bpt from the bpt->related_breakpoint ring. */
13592 for (related = bpt; related->related_breakpoint != bpt;
13593 related = related->related_breakpoint);
13594 related->related_breakpoint = bpt->related_breakpoint;
13595 bpt->related_breakpoint = bpt;
e5a0a904
JK
13596 }
13597
a9634178
TJB
13598 /* watch_command_1 creates a watchpoint but only sets its number if
13599 update_watchpoint succeeds in creating its bp_locations. If there's
13600 a problem in that process, we'll be asked to delete the half-created
13601 watchpoint. In that case, don't announce the deletion. */
13602 if (bpt->number)
13603 observer_notify_breakpoint_deleted (bpt);
c906108c 13604
c906108c
SS
13605 if (breakpoint_chain == bpt)
13606 breakpoint_chain = bpt->next;
13607
c906108c
SS
13608 ALL_BREAKPOINTS (b)
13609 if (b->next == bpt)
c5aa993b
JM
13610 {
13611 b->next = bpt->next;
13612 break;
13613 }
c906108c 13614
f431efe5
PA
13615 /* Be sure no bpstat's are pointing at the breakpoint after it's
13616 been freed. */
13617 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13618 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13619 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13620 commands are associated with the bpstat; if we remove it here,
13621 then the later call to bpstat_do_actions (&stop_bpstat); in
13622 event-top.c won't do anything, and temporary breakpoints with
13623 commands won't work. */
13624
13625 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13626
4a64f543
MS
13627 /* Now that breakpoint is removed from breakpoint list, update the
13628 global location list. This will remove locations that used to
13629 belong to this breakpoint. Do this before freeing the breakpoint
13630 itself, since remove_breakpoint looks at location's owner. It
13631 might be better design to have location completely
13632 self-contained, but it's not the case now. */
44702360 13633 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13634
4a64f543
MS
13635 /* On the chance that someone will soon try again to delete this
13636 same bp, we mark it as deleted before freeing its storage. */
c906108c 13637 bpt->type = bp_none;
4d01a485 13638 delete bpt;
c906108c
SS
13639}
13640
4d6140d9
AC
13641static void
13642do_delete_breakpoint_cleanup (void *b)
13643{
9a3c8263 13644 delete_breakpoint ((struct breakpoint *) b);
4d6140d9
AC
13645}
13646
13647struct cleanup *
13648make_cleanup_delete_breakpoint (struct breakpoint *b)
13649{
13650 return make_cleanup (do_delete_breakpoint_cleanup, b);
13651}
13652
51be5b68
PA
13653/* Iterator function to call a user-provided callback function once
13654 for each of B and its related breakpoints. */
13655
13656static void
13657iterate_over_related_breakpoints (struct breakpoint *b,
13658 void (*function) (struct breakpoint *,
13659 void *),
13660 void *data)
13661{
13662 struct breakpoint *related;
13663
13664 related = b;
13665 do
13666 {
13667 struct breakpoint *next;
13668
13669 /* FUNCTION may delete RELATED. */
13670 next = related->related_breakpoint;
13671
13672 if (next == related)
13673 {
13674 /* RELATED is the last ring entry. */
13675 function (related, data);
13676
13677 /* FUNCTION may have deleted it, so we'd never reach back to
13678 B. There's nothing left to do anyway, so just break
13679 out. */
13680 break;
13681 }
13682 else
13683 function (related, data);
13684
13685 related = next;
13686 }
13687 while (related != b);
13688}
95a42b64
TT
13689
13690static void
13691do_delete_breakpoint (struct breakpoint *b, void *ignore)
13692{
13693 delete_breakpoint (b);
13694}
13695
51be5b68
PA
13696/* A callback for map_breakpoint_numbers that calls
13697 delete_breakpoint. */
13698
13699static void
13700do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13701{
13702 iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13703}
13704
c906108c 13705void
fba45db2 13706delete_command (char *arg, int from_tty)
c906108c 13707{
35df4500 13708 struct breakpoint *b, *b_tmp;
c906108c 13709
ea9365bb
TT
13710 dont_repeat ();
13711
c906108c
SS
13712 if (arg == 0)
13713 {
13714 int breaks_to_delete = 0;
13715
46c6471b
PA
13716 /* Delete all breakpoints if no argument. Do not delete
13717 internal breakpoints, these have to be deleted with an
13718 explicit breakpoint number argument. */
c5aa993b 13719 ALL_BREAKPOINTS (b)
46c6471b 13720 if (user_breakpoint_p (b))
973d738b
DJ
13721 {
13722 breaks_to_delete = 1;
13723 break;
13724 }
c906108c
SS
13725
13726 /* Ask user only if there are some breakpoints to delete. */
13727 if (!from_tty
e2e0b3e5 13728 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13729 {
35df4500 13730 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13731 if (user_breakpoint_p (b))
c5aa993b 13732 delete_breakpoint (b);
c906108c
SS
13733 }
13734 }
13735 else
51be5b68 13736 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
c906108c
SS
13737}
13738
c2f4122d
PA
13739/* Return true if all locations of B bound to PSPACE are pending. If
13740 PSPACE is NULL, all locations of all program spaces are
13741 considered. */
13742
0d381245 13743static int
c2f4122d 13744all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13745{
c2f4122d
PA
13746 struct bp_location *loc;
13747
13748 for (loc = b->loc; loc != NULL; loc = loc->next)
13749 if ((pspace == NULL
13750 || loc->pspace == pspace)
13751 && !loc->shlib_disabled
8645ff69 13752 && !loc->pspace->executing_startup)
0d381245
VP
13753 return 0;
13754 return 1;
fe3f5fa8
VP
13755}
13756
776592bf
DE
13757/* Subroutine of update_breakpoint_locations to simplify it.
13758 Return non-zero if multiple fns in list LOC have the same name.
13759 Null names are ignored. */
13760
13761static int
13762ambiguous_names_p (struct bp_location *loc)
13763{
13764 struct bp_location *l;
13765 htab_t htab = htab_create_alloc (13, htab_hash_string,
cc59ec59
MS
13766 (int (*) (const void *,
13767 const void *)) streq,
776592bf
DE
13768 NULL, xcalloc, xfree);
13769
13770 for (l = loc; l != NULL; l = l->next)
13771 {
13772 const char **slot;
13773 const char *name = l->function_name;
13774
13775 /* Allow for some names to be NULL, ignore them. */
13776 if (name == NULL)
13777 continue;
13778
13779 slot = (const char **) htab_find_slot (htab, (const void *) name,
13780 INSERT);
4a64f543
MS
13781 /* NOTE: We can assume slot != NULL here because xcalloc never
13782 returns NULL. */
776592bf
DE
13783 if (*slot != NULL)
13784 {
13785 htab_delete (htab);
13786 return 1;
13787 }
13788 *slot = name;
13789 }
13790
13791 htab_delete (htab);
13792 return 0;
13793}
13794
0fb4aa4b
PA
13795/* When symbols change, it probably means the sources changed as well,
13796 and it might mean the static tracepoint markers are no longer at
13797 the same address or line numbers they used to be at last we
13798 checked. Losing your static tracepoints whenever you rebuild is
13799 undesirable. This function tries to resync/rematch gdb static
13800 tracepoints with the markers on the target, for static tracepoints
13801 that have not been set by marker id. Static tracepoint that have
13802 been set by marker id are reset by marker id in breakpoint_re_set.
13803 The heuristic is:
13804
13805 1) For a tracepoint set at a specific address, look for a marker at
13806 the old PC. If one is found there, assume to be the same marker.
13807 If the name / string id of the marker found is different from the
13808 previous known name, assume that means the user renamed the marker
13809 in the sources, and output a warning.
13810
13811 2) For a tracepoint set at a given line number, look for a marker
13812 at the new address of the old line number. If one is found there,
13813 assume to be the same marker. If the name / string id of the
13814 marker found is different from the previous known name, assume that
13815 means the user renamed the marker in the sources, and output a
13816 warning.
13817
13818 3) If a marker is no longer found at the same address or line, it
13819 may mean the marker no longer exists. But it may also just mean
13820 the code changed a bit. Maybe the user added a few lines of code
13821 that made the marker move up or down (in line number terms). Ask
13822 the target for info about the marker with the string id as we knew
13823 it. If found, update line number and address in the matching
13824 static tracepoint. This will get confused if there's more than one
13825 marker with the same ID (possible in UST, although unadvised
13826 precisely because it confuses tools). */
13827
13828static struct symtab_and_line
13829update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13830{
d9b3f62e 13831 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13832 struct static_tracepoint_marker marker;
13833 CORE_ADDR pc;
0fb4aa4b
PA
13834
13835 pc = sal.pc;
13836 if (sal.line)
13837 find_line_pc (sal.symtab, sal.line, &pc);
13838
13839 if (target_static_tracepoint_marker_at (pc, &marker))
13840 {
d9b3f62e 13841 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
0fb4aa4b
PA
13842 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13843 b->number,
d9b3f62e 13844 tp->static_trace_marker_id, marker.str_id);
0fb4aa4b 13845
d9b3f62e
PA
13846 xfree (tp->static_trace_marker_id);
13847 tp->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
13848 release_static_tracepoint_marker (&marker);
13849
13850 return sal;
13851 }
13852
13853 /* Old marker wasn't found on target at lineno. Try looking it up
13854 by string ID. */
13855 if (!sal.explicit_pc
13856 && sal.line != 0
13857 && sal.symtab != NULL
d9b3f62e 13858 && tp->static_trace_marker_id != NULL)
0fb4aa4b
PA
13859 {
13860 VEC(static_tracepoint_marker_p) *markers;
13861
13862 markers
d9b3f62e 13863 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
0fb4aa4b
PA
13864
13865 if (!VEC_empty(static_tracepoint_marker_p, markers))
13866 {
0fb4aa4b 13867 struct symbol *sym;
80e1d417 13868 struct static_tracepoint_marker *tpmarker;
79a45e25 13869 struct ui_out *uiout = current_uiout;
67994074 13870 struct explicit_location explicit_loc;
0fb4aa4b 13871
80e1d417 13872 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
0fb4aa4b 13873
d9b3f62e 13874 xfree (tp->static_trace_marker_id);
80e1d417 13875 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
0fb4aa4b
PA
13876
13877 warning (_("marker for static tracepoint %d (%s) not "
13878 "found at previous line number"),
d9b3f62e 13879 b->number, tp->static_trace_marker_id);
0fb4aa4b 13880
51abb421 13881 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13882 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13883 uiout->text ("Now in ");
0fb4aa4b
PA
13884 if (sym)
13885 {
112e8700
SM
13886 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13887 uiout->text (" at ");
0fb4aa4b 13888 }
112e8700 13889 uiout->field_string ("file",
05cba821 13890 symtab_to_filename_for_display (sal2.symtab));
112e8700 13891 uiout->text (":");
0fb4aa4b 13892
112e8700 13893 if (uiout->is_mi_like_p ())
0fb4aa4b 13894 {
0b0865da 13895 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13896
112e8700 13897 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13898 }
13899
112e8700
SM
13900 uiout->field_int ("line", sal2.line);
13901 uiout->text ("\n");
0fb4aa4b 13902
80e1d417 13903 b->loc->line_number = sal2.line;
2f202fde 13904 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13905
d28cd78a 13906 b->location.reset (NULL);
67994074
KS
13907 initialize_explicit_location (&explicit_loc);
13908 explicit_loc.source_filename
00e52e53 13909 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13910 explicit_loc.line_offset.offset = b->loc->line_number;
13911 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13912 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13913
13914 /* Might be nice to check if function changed, and warn if
13915 so. */
13916
80e1d417 13917 release_static_tracepoint_marker (tpmarker);
0fb4aa4b
PA
13918 }
13919 }
13920 return sal;
13921}
13922
8d3788bd
VP
13923/* Returns 1 iff locations A and B are sufficiently same that
13924 we don't need to report breakpoint as changed. */
13925
13926static int
13927locations_are_equal (struct bp_location *a, struct bp_location *b)
13928{
13929 while (a && b)
13930 {
13931 if (a->address != b->address)
13932 return 0;
13933
13934 if (a->shlib_disabled != b->shlib_disabled)
13935 return 0;
13936
13937 if (a->enabled != b->enabled)
13938 return 0;
13939
13940 a = a->next;
13941 b = b->next;
13942 }
13943
13944 if ((a == NULL) != (b == NULL))
13945 return 0;
13946
13947 return 1;
13948}
13949
c2f4122d
PA
13950/* Split all locations of B that are bound to PSPACE out of B's
13951 location list to a separate list and return that list's head. If
13952 PSPACE is NULL, hoist out all locations of B. */
13953
13954static struct bp_location *
13955hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13956{
13957 struct bp_location head;
13958 struct bp_location *i = b->loc;
13959 struct bp_location **i_link = &b->loc;
13960 struct bp_location *hoisted = &head;
13961
13962 if (pspace == NULL)
13963 {
13964 i = b->loc;
13965 b->loc = NULL;
13966 return i;
13967 }
13968
13969 head.next = NULL;
13970
13971 while (i != NULL)
13972 {
13973 if (i->pspace == pspace)
13974 {
13975 *i_link = i->next;
13976 i->next = NULL;
13977 hoisted->next = i;
13978 hoisted = i;
13979 }
13980 else
13981 i_link = &i->next;
13982 i = *i_link;
13983 }
13984
13985 return head.next;
13986}
13987
13988/* Create new breakpoint locations for B (a hardware or software
13989 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13990 zero, then B is a ranged breakpoint. Only recreates locations for
13991 FILTER_PSPACE. Locations of other program spaces are left
13992 untouched. */
f1310107 13993
0e30163f 13994void
0d381245 13995update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13996 struct program_space *filter_pspace,
6c5b2ebe
PA
13997 gdb::array_view<const symtab_and_line> sals,
13998 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8
VP
13999{
14000 int i;
c2f4122d 14001 struct bp_location *existing_locations;
0d381245 14002
6c5b2ebe 14003 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
14004 {
14005 /* Ranged breakpoints have only one start location and one end
14006 location. */
14007 b->enable_state = bp_disabled;
f8eba3c6
TT
14008 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14009 "multiple locations found\n"),
14010 b->number);
14011 return;
14012 }
f1310107 14013
4a64f543
MS
14014 /* If there's no new locations, and all existing locations are
14015 pending, don't do anything. This optimizes the common case where
14016 all locations are in the same shared library, that was unloaded.
14017 We'd like to retain the location, so that when the library is
14018 loaded again, we don't loose the enabled/disabled status of the
14019 individual locations. */
6c5b2ebe 14020 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
14021 return;
14022
c2f4122d 14023 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 14024
6c5b2ebe 14025 for (const auto &sal : sals)
fe3f5fa8 14026 {
f8eba3c6
TT
14027 struct bp_location *new_loc;
14028
6c5b2ebe 14029 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 14030
6c5b2ebe 14031 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 14032
0d381245
VP
14033 /* Reparse conditions, they might contain references to the
14034 old symtab. */
14035 if (b->cond_string != NULL)
14036 {
bbc13ae3 14037 const char *s;
fe3f5fa8 14038
0d381245 14039 s = b->cond_string;
492d29ea 14040 TRY
0d381245 14041 {
6c5b2ebe
PA
14042 new_loc->cond = parse_exp_1 (&s, sal.pc,
14043 block_for_pc (sal.pc),
0d381245
VP
14044 0);
14045 }
492d29ea 14046 CATCH (e, RETURN_MASK_ERROR)
0d381245 14047 {
3e43a32a
MS
14048 warning (_("failed to reevaluate condition "
14049 "for breakpoint %d: %s"),
0d381245
VP
14050 b->number, e.message);
14051 new_loc->enabled = 0;
14052 }
492d29ea 14053 END_CATCH
0d381245 14054 }
fe3f5fa8 14055
6c5b2ebe 14056 if (!sals_end.empty ())
f1310107 14057 {
6c5b2ebe 14058 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 14059
6c5b2ebe 14060 new_loc->length = end - sals[0].pc + 1;
f1310107 14061 }
0d381245 14062 }
fe3f5fa8 14063
4a64f543
MS
14064 /* If possible, carry over 'disable' status from existing
14065 breakpoints. */
0d381245
VP
14066 {
14067 struct bp_location *e = existing_locations;
776592bf
DE
14068 /* If there are multiple breakpoints with the same function name,
14069 e.g. for inline functions, comparing function names won't work.
14070 Instead compare pc addresses; this is just a heuristic as things
14071 may have moved, but in practice it gives the correct answer
14072 often enough until a better solution is found. */
14073 int have_ambiguous_names = ambiguous_names_p (b->loc);
14074
0d381245
VP
14075 for (; e; e = e->next)
14076 {
14077 if (!e->enabled && e->function_name)
14078 {
14079 struct bp_location *l = b->loc;
776592bf
DE
14080 if (have_ambiguous_names)
14081 {
14082 for (; l; l = l->next)
f1310107 14083 if (breakpoint_locations_match (e, l))
776592bf
DE
14084 {
14085 l->enabled = 0;
14086 break;
14087 }
14088 }
14089 else
14090 {
14091 for (; l; l = l->next)
14092 if (l->function_name
14093 && strcmp (e->function_name, l->function_name) == 0)
14094 {
14095 l->enabled = 0;
14096 break;
14097 }
14098 }
0d381245
VP
14099 }
14100 }
14101 }
fe3f5fa8 14102
8d3788bd
VP
14103 if (!locations_are_equal (existing_locations, b->loc))
14104 observer_notify_breakpoint_modified (b);
fe3f5fa8
VP
14105}
14106
f00aae0f 14107/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
14108 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
14109
6c5b2ebe 14110static std::vector<symtab_and_line>
f00aae0f 14111location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 14112 struct program_space *search_pspace, int *found)
ef23e705 14113{
492d29ea 14114 struct gdb_exception exception = exception_none;
ef23e705 14115
983af33b 14116 gdb_assert (b->ops != NULL);
ef23e705 14117
6c5b2ebe
PA
14118 std::vector<symtab_and_line> sals;
14119
492d29ea 14120 TRY
ef23e705 14121 {
6c5b2ebe 14122 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 14123 }
492d29ea 14124 CATCH (e, RETURN_MASK_ERROR)
ef23e705
TJB
14125 {
14126 int not_found_and_ok = 0;
492d29ea
PA
14127
14128 exception = e;
14129
ef23e705
TJB
14130 /* For pending breakpoints, it's expected that parsing will
14131 fail until the right shared library is loaded. User has
14132 already told to create pending breakpoints and don't need
14133 extra messages. If breakpoint is in bp_shlib_disabled
14134 state, then user already saw the message about that
14135 breakpoint being disabled, and don't want to see more
14136 errors. */
58438ac1 14137 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
14138 && (b->condition_not_parsed
14139 || (b->loc != NULL
14140 && search_pspace != NULL
14141 && b->loc->pspace != search_pspace)
ef23e705 14142 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 14143 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
14144 || b->enable_state == bp_disabled))
14145 not_found_and_ok = 1;
14146
14147 if (!not_found_and_ok)
14148 {
14149 /* We surely don't want to warn about the same breakpoint
14150 10 times. One solution, implemented here, is disable
14151 the breakpoint on error. Another solution would be to
14152 have separate 'warning emitted' flag. Since this
14153 happens only when a binary has changed, I don't know
14154 which approach is better. */
14155 b->enable_state = bp_disabled;
14156 throw_exception (e);
14157 }
14158 }
492d29ea 14159 END_CATCH
ef23e705 14160
492d29ea 14161 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 14162 {
6c5b2ebe
PA
14163 for (auto &sal : sals)
14164 resolve_sal_pc (&sal);
f00aae0f 14165 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 14166 {
ed1d1739
KS
14167 char *cond_string, *extra_string;
14168 int thread, task;
ef23e705 14169
6c5b2ebe 14170 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
14171 &cond_string, &thread, &task,
14172 &extra_string);
f00aae0f 14173 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
14174 if (cond_string)
14175 b->cond_string = cond_string;
14176 b->thread = thread;
14177 b->task = task;
e7e0cddf 14178 if (extra_string)
f00aae0f
KS
14179 {
14180 xfree (b->extra_string);
14181 b->extra_string = extra_string;
14182 }
ef23e705
TJB
14183 b->condition_not_parsed = 0;
14184 }
14185
983af33b 14186 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 14187 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 14188
58438ac1
TT
14189 *found = 1;
14190 }
14191 else
14192 *found = 0;
ef23e705
TJB
14193
14194 return sals;
14195}
14196
348d480f
PA
14197/* The default re_set method, for typical hardware or software
14198 breakpoints. Reevaluate the breakpoint and recreate its
14199 locations. */
14200
14201static void
28010a5d 14202breakpoint_re_set_default (struct breakpoint *b)
ef23e705 14203{
c2f4122d 14204 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 14205 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 14206
6c5b2ebe
PA
14207 int found;
14208 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
14209 filter_pspace, &found);
ef23e705 14210 if (found)
6c5b2ebe 14211 expanded = std::move (sals);
ef23e705 14212
f00aae0f 14213 if (b->location_range_end != NULL)
f1310107 14214 {
6c5b2ebe
PA
14215 std::vector<symtab_and_line> sals_end
14216 = location_to_sals (b, b->location_range_end.get (),
14217 filter_pspace, &found);
f1310107 14218 if (found)
6c5b2ebe 14219 expanded_end = std::move (sals_end);
f1310107
TJB
14220 }
14221
c2f4122d 14222 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
14223}
14224
983af33b
SDJ
14225/* Default method for creating SALs from an address string. It basically
14226 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
14227
14228static void
f00aae0f
KS
14229create_sals_from_location_default (const struct event_location *location,
14230 struct linespec_result *canonical,
14231 enum bptype type_wanted)
983af33b 14232{
f00aae0f 14233 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
14234}
14235
14236/* Call create_breakpoints_sal for the given arguments. This is the default
14237 function for the `create_breakpoints_sal' method of
14238 breakpoint_ops. */
14239
14240static void
14241create_breakpoints_sal_default (struct gdbarch *gdbarch,
14242 struct linespec_result *canonical,
e1e01040
PA
14243 gdb::unique_xmalloc_ptr<char> cond_string,
14244 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
14245 enum bptype type_wanted,
14246 enum bpdisp disposition,
14247 int thread,
14248 int task, int ignore_count,
14249 const struct breakpoint_ops *ops,
14250 int from_tty, int enabled,
44f238bb 14251 int internal, unsigned flags)
983af33b 14252{
e1e01040
PA
14253 create_breakpoints_sal (gdbarch, canonical,
14254 std::move (cond_string),
14255 std::move (extra_string),
983af33b
SDJ
14256 type_wanted, disposition,
14257 thread, task, ignore_count, ops, from_tty,
44f238bb 14258 enabled, internal, flags);
983af33b
SDJ
14259}
14260
14261/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 14262 default function for the `decode_location' method of breakpoint_ops. */
983af33b 14263
6c5b2ebe 14264static std::vector<symtab_and_line>
f00aae0f
KS
14265decode_location_default (struct breakpoint *b,
14266 const struct event_location *location,
6c5b2ebe 14267 struct program_space *search_pspace)
983af33b
SDJ
14268{
14269 struct linespec_result canonical;
14270
c2f4122d 14271 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
14272 (struct symtab *) NULL, 0,
14273 &canonical, multiple_symbols_all,
14274 b->filter);
14275
14276 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 14277 gdb_assert (canonical.lsals.size () < 2);
983af33b 14278
6c5b2ebe 14279 if (!canonical.lsals.empty ())
983af33b 14280 {
6c5b2ebe
PA
14281 const linespec_sals &lsal = canonical.lsals[0];
14282 return std::move (lsal.sals);
983af33b 14283 }
6c5b2ebe 14284 return {};
983af33b
SDJ
14285}
14286
28010a5d
PA
14287/* Prepare the global context for a re-set of breakpoint B. */
14288
14289static struct cleanup *
14290prepare_re_set_context (struct breakpoint *b)
14291{
28010a5d 14292 input_radix = b->input_radix;
28010a5d
PA
14293 set_language (b->language);
14294
c2f4122d 14295 return make_cleanup (null_cleanup, NULL);
ef23e705
TJB
14296}
14297
c906108c
SS
14298/* Reset a breakpoint given it's struct breakpoint * BINT.
14299 The value we return ends up being the return value from catch_errors.
14300 Unused in this case. */
14301
14302static int
4efb68b1 14303breakpoint_re_set_one (void *bint)
c906108c 14304{
4a64f543 14305 /* Get past catch_errs. */
53a5351d 14306 struct breakpoint *b = (struct breakpoint *) bint;
348d480f 14307 struct cleanup *cleanups;
c906108c 14308
348d480f
PA
14309 cleanups = prepare_re_set_context (b);
14310 b->ops->re_set (b);
14311 do_cleanups (cleanups);
c906108c
SS
14312 return 0;
14313}
14314
c2f4122d
PA
14315/* Re-set breakpoint locations for the current program space.
14316 Locations bound to other program spaces are left untouched. */
14317
c906108c 14318void
69de3c6a 14319breakpoint_re_set (void)
c906108c 14320{
35df4500 14321 struct breakpoint *b, *b_tmp;
c906108c
SS
14322 enum language save_language;
14323 int save_input_radix;
c5aa993b 14324
c906108c
SS
14325 save_language = current_language->la_language;
14326 save_input_radix = input_radix;
2a7f3dff 14327
c5aa993b 14328 {
5ed8105e 14329 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 14330
5ed8105e
PA
14331 /* Note: we must not try to insert locations until after all
14332 breakpoints have been re-set. Otherwise, e.g., when re-setting
14333 breakpoint 1, we'd insert the locations of breakpoint 2, which
14334 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 14335
5ed8105e
PA
14336 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14337 {
14338 /* Format possible error msg. */
14339 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14340 b->number);
14341 struct cleanup *cleanups = make_cleanup (xfree, message);
14342 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14343 do_cleanups (cleanups);
14344 }
14345 set_language (save_language);
14346 input_radix = save_input_radix;
14347
14348 jit_breakpoint_re_set ();
14349 }
6c95b8df 14350
af02033e
PP
14351 create_overlay_event_breakpoint ();
14352 create_longjmp_master_breakpoint ();
14353 create_std_terminate_master_breakpoint ();
186c406b 14354 create_exception_master_breakpoint ();
2a7f3dff
PA
14355
14356 /* Now we can insert. */
14357 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
14358}
14359\f
c906108c
SS
14360/* Reset the thread number of this breakpoint:
14361
14362 - If the breakpoint is for all threads, leave it as-is.
4a64f543 14363 - Else, reset it to the current thread for inferior_ptid. */
c906108c 14364void
fba45db2 14365breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
14366{
14367 if (b->thread != -1)
14368 {
39f77062 14369 if (in_thread_list (inferior_ptid))
5d5658a1 14370 b->thread = ptid_to_global_thread_id (inferior_ptid);
6c95b8df
PA
14371
14372 /* We're being called after following a fork. The new fork is
14373 selected as current, and unless this was a vfork will have a
14374 different program space from the original thread. Reset that
14375 as well. */
14376 b->loc->pspace = current_program_space;
c906108c
SS
14377 }
14378}
14379
03ac34d5
MS
14380/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14381 If from_tty is nonzero, it prints a message to that effect,
14382 which ends with a period (no newline). */
14383
c906108c 14384void
fba45db2 14385set_ignore_count (int bptnum, int count, int from_tty)
c906108c 14386{
52f0bd74 14387 struct breakpoint *b;
c906108c
SS
14388
14389 if (count < 0)
14390 count = 0;
14391
14392 ALL_BREAKPOINTS (b)
14393 if (b->number == bptnum)
c5aa993b 14394 {
d77f58be
SS
14395 if (is_tracepoint (b))
14396 {
14397 if (from_tty && count != 0)
14398 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14399 bptnum);
14400 return;
14401 }
14402
c5aa993b 14403 b->ignore_count = count;
221ea385
KS
14404 if (from_tty)
14405 {
14406 if (count == 0)
3e43a32a
MS
14407 printf_filtered (_("Will stop next time "
14408 "breakpoint %d is reached."),
221ea385
KS
14409 bptnum);
14410 else if (count == 1)
a3f17187 14411 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
14412 bptnum);
14413 else
3e43a32a
MS
14414 printf_filtered (_("Will ignore next %d "
14415 "crossings of breakpoint %d."),
221ea385
KS
14416 count, bptnum);
14417 }
8d3788bd 14418 observer_notify_breakpoint_modified (b);
c5aa993b
JM
14419 return;
14420 }
c906108c 14421
8a3fe4f8 14422 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
14423}
14424
c906108c
SS
14425/* Command to set ignore-count of breakpoint N to COUNT. */
14426
14427static void
fba45db2 14428ignore_command (char *args, int from_tty)
c906108c
SS
14429{
14430 char *p = args;
52f0bd74 14431 int num;
c906108c
SS
14432
14433 if (p == 0)
e2e0b3e5 14434 error_no_arg (_("a breakpoint number"));
c5aa993b 14435
c906108c 14436 num = get_number (&p);
5c44784c 14437 if (num == 0)
8a3fe4f8 14438 error (_("bad breakpoint number: '%s'"), args);
c906108c 14439 if (*p == 0)
8a3fe4f8 14440 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
14441
14442 set_ignore_count (num,
14443 longest_to_int (value_as_long (parse_and_eval (p))),
14444 from_tty);
221ea385
KS
14445 if (from_tty)
14446 printf_filtered ("\n");
c906108c
SS
14447}
14448\f
14449/* Call FUNCTION on each of the breakpoints
14450 whose numbers are given in ARGS. */
14451
14452static void
896b6bda
PA
14453map_breakpoint_numbers (const char *args,
14454 void (*function) (struct breakpoint *,
14455 void *),
95a42b64 14456 void *data)
c906108c 14457{
52f0bd74
AC
14458 int num;
14459 struct breakpoint *b, *tmp;
c906108c 14460
b9d61307 14461 if (args == 0 || *args == '\0')
e2e0b3e5 14462 error_no_arg (_("one or more breakpoint numbers"));
c906108c 14463
bfd28288 14464 number_or_range_parser parser (args);
197f0a60 14465
bfd28288 14466 while (!parser.finished ())
c906108c 14467 {
bfd28288
PA
14468 const char *p = parser.cur_tok ();
14469 bool match = false;
197f0a60 14470
bfd28288 14471 num = parser.get_number ();
5c44784c 14472 if (num == 0)
c5aa993b 14473 {
8a3fe4f8 14474 warning (_("bad breakpoint number at or near '%s'"), p);
5c44784c
JM
14475 }
14476 else
14477 {
14478 ALL_BREAKPOINTS_SAFE (b, tmp)
14479 if (b->number == num)
14480 {
bfd28288 14481 match = true;
cdac0397 14482 function (b, data);
11cf8741 14483 break;
5c44784c 14484 }
bfd28288 14485 if (!match)
a3f17187 14486 printf_unfiltered (_("No breakpoint number %d.\n"), num);
c5aa993b 14487 }
c906108c
SS
14488 }
14489}
14490
0d381245
VP
14491static struct bp_location *
14492find_location_by_number (char *number)
14493{
14494 char *dot = strchr (number, '.');
14495 char *p1;
14496 int bp_num;
14497 int loc_num;
14498 struct breakpoint *b;
14499 struct bp_location *loc;
14500
14501 *dot = '\0';
14502
14503 p1 = number;
197f0a60 14504 bp_num = get_number (&p1);
0d381245
VP
14505 if (bp_num == 0)
14506 error (_("Bad breakpoint number '%s'"), number);
14507
14508 ALL_BREAKPOINTS (b)
14509 if (b->number == bp_num)
14510 {
14511 break;
14512 }
14513
14514 if (!b || b->number != bp_num)
14515 error (_("Bad breakpoint number '%s'"), number);
14516
14517 p1 = dot+1;
197f0a60 14518 loc_num = get_number (&p1);
0d381245
VP
14519 if (loc_num == 0)
14520 error (_("Bad breakpoint location number '%s'"), number);
14521
14522 --loc_num;
14523 loc = b->loc;
14524 for (;loc_num && loc; --loc_num, loc = loc->next)
14525 ;
14526 if (!loc)
14527 error (_("Bad breakpoint location number '%s'"), dot+1);
14528
14529 return loc;
14530}
14531
14532
1900040c
MS
14533/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14534 If from_tty is nonzero, it prints a message to that effect,
14535 which ends with a period (no newline). */
14536
c906108c 14537void
fba45db2 14538disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14539{
14540 /* Never disable a watchpoint scope breakpoint; we want to
14541 hit them when we leave scope so we can delete both the
14542 watchpoint and its scope breakpoint at that time. */
14543 if (bpt->type == bp_watchpoint_scope)
14544 return;
14545
b5de0fa7 14546 bpt->enable_state = bp_disabled;
c906108c 14547
b775012e
LM
14548 /* Mark breakpoint locations modified. */
14549 mark_breakpoint_modified (bpt);
14550
d248b706
KY
14551 if (target_supports_enable_disable_tracepoint ()
14552 && current_trace_status ()->running && is_tracepoint (bpt))
14553 {
14554 struct bp_location *location;
14555
14556 for (location = bpt->loc; location; location = location->next)
14557 target_disable_tracepoint (location);
14558 }
14559
44702360 14560 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14561
8d3788bd 14562 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14563}
14564
51be5b68
PA
14565/* A callback for iterate_over_related_breakpoints. */
14566
14567static void
14568do_disable_breakpoint (struct breakpoint *b, void *ignore)
14569{
14570 disable_breakpoint (b);
14571}
14572
95a42b64
TT
14573/* A callback for map_breakpoint_numbers that calls
14574 disable_breakpoint. */
14575
14576static void
14577do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14578{
51be5b68 14579 iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
95a42b64
TT
14580}
14581
c906108c 14582static void
fba45db2 14583disable_command (char *args, int from_tty)
c906108c 14584{
c906108c 14585 if (args == 0)
46c6471b
PA
14586 {
14587 struct breakpoint *bpt;
14588
14589 ALL_BREAKPOINTS (bpt)
14590 if (user_breakpoint_p (bpt))
14591 disable_breakpoint (bpt);
14592 }
9eaabc75 14593 else
0d381245 14594 {
9eaabc75
MW
14595 char *num = extract_arg (&args);
14596
14597 while (num)
d248b706 14598 {
9eaabc75 14599 if (strchr (num, '.'))
b775012e 14600 {
9eaabc75
MW
14601 struct bp_location *loc = find_location_by_number (num);
14602
14603 if (loc)
14604 {
14605 if (loc->enabled)
14606 {
14607 loc->enabled = 0;
14608 mark_breakpoint_location_modified (loc);
14609 }
14610 if (target_supports_enable_disable_tracepoint ()
14611 && current_trace_status ()->running && loc->owner
14612 && is_tracepoint (loc->owner))
14613 target_disable_tracepoint (loc);
14614 }
44702360 14615 update_global_location_list (UGLL_DONT_INSERT);
b775012e 14616 }
9eaabc75
MW
14617 else
14618 map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14619 num = extract_arg (&args);
d248b706 14620 }
0d381245 14621 }
c906108c
SS
14622}
14623
14624static void
816338b5
SS
14625enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14626 int count)
c906108c 14627{
afe38095 14628 int target_resources_ok;
c906108c
SS
14629
14630 if (bpt->type == bp_hardware_breakpoint)
14631 {
14632 int i;
c5aa993b 14633 i = hw_breakpoint_used_count ();
53a5351d 14634 target_resources_ok =
d92524f1 14635 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14636 i + 1, 0);
c906108c 14637 if (target_resources_ok == 0)
8a3fe4f8 14638 error (_("No hardware breakpoint support in the target."));
c906108c 14639 else if (target_resources_ok < 0)
8a3fe4f8 14640 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14641 }
14642
cc60f2e3 14643 if (is_watchpoint (bpt))
c906108c 14644 {
d07205c2 14645 /* Initialize it just to avoid a GCC false warning. */
f486487f 14646 enum enable_state orig_enable_state = bp_disabled;
dde02812 14647
492d29ea 14648 TRY
c906108c 14649 {
3a5c3e22
PA
14650 struct watchpoint *w = (struct watchpoint *) bpt;
14651
1e718ff1
TJB
14652 orig_enable_state = bpt->enable_state;
14653 bpt->enable_state = bp_enabled;
3a5c3e22 14654 update_watchpoint (w, 1 /* reparse */);
c906108c 14655 }
492d29ea 14656 CATCH (e, RETURN_MASK_ALL)
c5aa993b 14657 {
1e718ff1 14658 bpt->enable_state = orig_enable_state;
dde02812
ES
14659 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14660 bpt->number);
14661 return;
c5aa993b 14662 }
492d29ea 14663 END_CATCH
c906108c 14664 }
0101ce28 14665
b775012e
LM
14666 bpt->enable_state = bp_enabled;
14667
14668 /* Mark breakpoint locations modified. */
14669 mark_breakpoint_modified (bpt);
14670
d248b706
KY
14671 if (target_supports_enable_disable_tracepoint ()
14672 && current_trace_status ()->running && is_tracepoint (bpt))
14673 {
14674 struct bp_location *location;
14675
14676 for (location = bpt->loc; location; location = location->next)
14677 target_enable_tracepoint (location);
14678 }
14679
b4c291bb 14680 bpt->disposition = disposition;
816338b5 14681 bpt->enable_count = count;
44702360 14682 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14683
8d3788bd 14684 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14685}
14686
fe3f5fa8 14687
c906108c 14688void
fba45db2 14689enable_breakpoint (struct breakpoint *bpt)
c906108c 14690{
816338b5 14691 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14692}
14693
14694static void
14695do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14696{
14697 enable_breakpoint (bpt);
c906108c
SS
14698}
14699
95a42b64
TT
14700/* A callback for map_breakpoint_numbers that calls
14701 enable_breakpoint. */
14702
14703static void
14704do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14705{
51be5b68 14706 iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
95a42b64
TT
14707}
14708
c906108c
SS
14709/* The enable command enables the specified breakpoints (or all defined
14710 breakpoints) so they once again become (or continue to be) effective
1272ad14 14711 in stopping the inferior. */
c906108c 14712
c906108c 14713static void
fba45db2 14714enable_command (char *args, int from_tty)
c906108c 14715{
c906108c 14716 if (args == 0)
46c6471b
PA
14717 {
14718 struct breakpoint *bpt;
14719
14720 ALL_BREAKPOINTS (bpt)
14721 if (user_breakpoint_p (bpt))
14722 enable_breakpoint (bpt);
14723 }
9eaabc75 14724 else
0d381245 14725 {
9eaabc75
MW
14726 char *num = extract_arg (&args);
14727
14728 while (num)
d248b706 14729 {
9eaabc75 14730 if (strchr (num, '.'))
b775012e 14731 {
9eaabc75
MW
14732 struct bp_location *loc = find_location_by_number (num);
14733
14734 if (loc)
14735 {
14736 if (!loc->enabled)
14737 {
14738 loc->enabled = 1;
14739 mark_breakpoint_location_modified (loc);
14740 }
14741 if (target_supports_enable_disable_tracepoint ()
14742 && current_trace_status ()->running && loc->owner
14743 && is_tracepoint (loc->owner))
14744 target_enable_tracepoint (loc);
14745 }
44702360 14746 update_global_location_list (UGLL_MAY_INSERT);
b775012e 14747 }
9eaabc75
MW
14748 else
14749 map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14750 num = extract_arg (&args);
d248b706 14751 }
0d381245 14752 }
c906108c
SS
14753}
14754
816338b5
SS
14755/* This struct packages up disposition data for application to multiple
14756 breakpoints. */
14757
14758struct disp_data
14759{
14760 enum bpdisp disp;
14761 int count;
14762};
14763
c906108c 14764static void
51be5b68
PA
14765do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14766{
816338b5 14767 struct disp_data disp_data = *(struct disp_data *) arg;
51be5b68 14768
816338b5 14769 enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
51be5b68
PA
14770}
14771
14772static void
14773do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 14774{
816338b5 14775 struct disp_data disp = { disp_disable, 1 };
51be5b68
PA
14776
14777 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
c906108c
SS
14778}
14779
c906108c 14780static void
fba45db2 14781enable_once_command (char *args, int from_tty)
c906108c 14782{
51be5b68 14783 map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
c906108c
SS
14784}
14785
816338b5
SS
14786static void
14787do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14788{
14789 struct disp_data disp = { disp_disable, *(int *) countptr };
14790
14791 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14792}
14793
14794static void
14795enable_count_command (char *args, int from_tty)
14796{
b9d61307
SM
14797 int count;
14798
14799 if (args == NULL)
14800 error_no_arg (_("hit count"));
14801
14802 count = get_number (&args);
816338b5
SS
14803
14804 map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14805}
14806
c906108c 14807static void
51be5b68 14808do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 14809{
816338b5 14810 struct disp_data disp = { disp_del, 1 };
51be5b68
PA
14811
14812 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
c906108c
SS
14813}
14814
c906108c 14815static void
fba45db2 14816enable_delete_command (char *args, int from_tty)
c906108c 14817{
51be5b68 14818 map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
c906108c
SS
14819}
14820\f
fa8d40ab
JJ
14821static void
14822set_breakpoint_cmd (char *args, int from_tty)
14823{
14824}
14825
14826static void
14827show_breakpoint_cmd (char *args, int from_tty)
14828{
14829}
14830
1f3b5d1b
PP
14831/* Invalidate last known value of any hardware watchpoint if
14832 the memory which that value represents has been written to by
14833 GDB itself. */
14834
14835static void
8de0566d
YQ
14836invalidate_bp_value_on_memory_change (struct inferior *inferior,
14837 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14838 const bfd_byte *data)
14839{
14840 struct breakpoint *bp;
14841
14842 ALL_BREAKPOINTS (bp)
14843 if (bp->enable_state == bp_enabled
3a5c3e22 14844 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14845 {
3a5c3e22 14846 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14847
3a5c3e22
PA
14848 if (wp->val_valid && wp->val)
14849 {
14850 struct bp_location *loc;
14851
14852 for (loc = bp->loc; loc != NULL; loc = loc->next)
14853 if (loc->loc_type == bp_loc_hardware_watchpoint
14854 && loc->address + loc->length > addr
14855 && addr + len > loc->address)
14856 {
14857 value_free (wp->val);
14858 wp->val = NULL;
14859 wp->val_valid = 0;
14860 }
14861 }
1f3b5d1b
PP
14862 }
14863}
14864
8181d85f
DJ
14865/* Create and insert a breakpoint for software single step. */
14866
14867void
6c95b8df 14868insert_single_step_breakpoint (struct gdbarch *gdbarch,
4a64f543
MS
14869 struct address_space *aspace,
14870 CORE_ADDR next_pc)
8181d85f 14871{
7c16b83e
PA
14872 struct thread_info *tp = inferior_thread ();
14873 struct symtab_and_line sal;
14874 CORE_ADDR pc = next_pc;
8181d85f 14875
34b7e8a6
PA
14876 if (tp->control.single_step_breakpoints == NULL)
14877 {
14878 tp->control.single_step_breakpoints
5d5658a1 14879 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14880 }
8181d85f 14881
7c16b83e
PA
14882 sal = find_pc_line (pc, 0);
14883 sal.pc = pc;
14884 sal.section = find_pc_overlay (pc);
14885 sal.explicit_pc = 1;
34b7e8a6 14886 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14887
7c16b83e 14888 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14889}
14890
93f9a11f
YQ
14891/* Insert single step breakpoints according to the current state. */
14892
14893int
14894insert_single_step_breakpoints (struct gdbarch *gdbarch)
14895{
f5ea389a 14896 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14897 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14898
f5ea389a 14899 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14900
a0ff9e1a 14901 if (!next_pcs.empty ())
93f9a11f 14902 {
f5ea389a 14903 struct frame_info *frame = get_current_frame ();
93f9a11f
YQ
14904 struct address_space *aspace = get_frame_address_space (frame);
14905
a0ff9e1a 14906 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14907 insert_single_step_breakpoint (gdbarch, aspace, pc);
14908
93f9a11f
YQ
14909 return 1;
14910 }
14911 else
14912 return 0;
14913}
14914
34b7e8a6 14915/* See breakpoint.h. */
f02253f1
HZ
14916
14917int
7c16b83e
PA
14918breakpoint_has_location_inserted_here (struct breakpoint *bp,
14919 struct address_space *aspace,
14920 CORE_ADDR pc)
1aafd4da 14921{
7c16b83e 14922 struct bp_location *loc;
1aafd4da 14923
7c16b83e
PA
14924 for (loc = bp->loc; loc != NULL; loc = loc->next)
14925 if (loc->inserted
14926 && breakpoint_location_address_match (loc, aspace, pc))
14927 return 1;
1aafd4da 14928
7c16b83e 14929 return 0;
ef370185
JB
14930}
14931
14932/* Check whether a software single-step breakpoint is inserted at
14933 PC. */
14934
14935int
14936single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14937 CORE_ADDR pc)
14938{
34b7e8a6
PA
14939 struct breakpoint *bpt;
14940
14941 ALL_BREAKPOINTS (bpt)
14942 {
14943 if (bpt->type == bp_single_step
14944 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14945 return 1;
14946 }
14947 return 0;
1aafd4da
UW
14948}
14949
1042e4c0
SS
14950/* Tracepoint-specific operations. */
14951
14952/* Set tracepoint count to NUM. */
14953static void
14954set_tracepoint_count (int num)
14955{
14956 tracepoint_count = num;
4fa62494 14957 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14958}
14959
70221824 14960static void
1042e4c0
SS
14961trace_command (char *arg, int from_tty)
14962{
55aa24fb 14963 struct breakpoint_ops *ops;
55aa24fb 14964
ffc2605c
TT
14965 event_location_up location = string_to_event_location (&arg,
14966 current_language);
5b56227b 14967 if (location != NULL
ffc2605c 14968 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14969 ops = &tracepoint_probe_breakpoint_ops;
14970 else
14971 ops = &tracepoint_breakpoint_ops;
14972
558a9d82 14973 create_breakpoint (get_current_arch (),
ffc2605c 14974 location.get (),
f00aae0f 14975 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14976 0 /* tempflag */,
14977 bp_tracepoint /* type_wanted */,
14978 0 /* Ignore count */,
14979 pending_break_support,
14980 ops,
14981 from_tty,
14982 1 /* enabled */,
14983 0 /* internal */, 0);
1042e4c0
SS
14984}
14985
70221824 14986static void
7a697b8d
SS
14987ftrace_command (char *arg, int from_tty)
14988{
ffc2605c
TT
14989 event_location_up location = string_to_event_location (&arg,
14990 current_language);
558a9d82 14991 create_breakpoint (get_current_arch (),
ffc2605c 14992 location.get (),
f00aae0f 14993 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14994 0 /* tempflag */,
14995 bp_fast_tracepoint /* type_wanted */,
14996 0 /* Ignore count */,
14997 pending_break_support,
14998 &tracepoint_breakpoint_ops,
14999 from_tty,
15000 1 /* enabled */,
15001 0 /* internal */, 0);
0fb4aa4b
PA
15002}
15003
15004/* strace command implementation. Creates a static tracepoint. */
15005
70221824 15006static void
0fb4aa4b
PA
15007strace_command (char *arg, int from_tty)
15008{
983af33b 15009 struct breakpoint_ops *ops;
ffc2605c 15010 event_location_up location;
f00aae0f 15011 struct cleanup *back_to;
983af33b
SDJ
15012
15013 /* Decide if we are dealing with a static tracepoint marker (`-m'),
15014 or with a normal static tracepoint. */
61012eef 15015 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
15016 {
15017 ops = &strace_marker_breakpoint_ops;
15018 location = new_linespec_location (&arg);
15019 }
983af33b 15020 else
f00aae0f
KS
15021 {
15022 ops = &tracepoint_breakpoint_ops;
15023 location = string_to_event_location (&arg, current_language);
15024 }
983af33b 15025
558a9d82 15026 create_breakpoint (get_current_arch (),
ffc2605c 15027 location.get (),
f00aae0f 15028 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
15029 0 /* tempflag */,
15030 bp_static_tracepoint /* type_wanted */,
15031 0 /* Ignore count */,
15032 pending_break_support,
15033 ops,
15034 from_tty,
15035 1 /* enabled */,
15036 0 /* internal */, 0);
7a697b8d
SS
15037}
15038
409873ef
SS
15039/* Set up a fake reader function that gets command lines from a linked
15040 list that was acquired during tracepoint uploading. */
15041
15042static struct uploaded_tp *this_utp;
3149d8c1 15043static int next_cmd;
409873ef
SS
15044
15045static char *
15046read_uploaded_action (void)
15047{
15048 char *rslt;
15049
3149d8c1 15050 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
409873ef 15051
3149d8c1 15052 next_cmd++;
409873ef
SS
15053
15054 return rslt;
15055}
15056
00bf0b85
SS
15057/* Given information about a tracepoint as recorded on a target (which
15058 can be either a live system or a trace file), attempt to create an
15059 equivalent GDB tracepoint. This is not a reliable process, since
15060 the target does not necessarily have all the information used when
15061 the tracepoint was originally defined. */
15062
d9b3f62e 15063struct tracepoint *
00bf0b85 15064create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 15065{
409873ef 15066 char *addr_str, small_buf[100];
d9b3f62e 15067 struct tracepoint *tp;
fd9b8c24 15068
409873ef
SS
15069 if (utp->at_string)
15070 addr_str = utp->at_string;
15071 else
15072 {
15073 /* In the absence of a source location, fall back to raw
15074 address. Since there is no way to confirm that the address
15075 means the same thing as when the trace was started, warn the
15076 user. */
3e43a32a
MS
15077 warning (_("Uploaded tracepoint %d has no "
15078 "source location, using raw address"),
409873ef 15079 utp->number);
8c042590 15080 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
15081 addr_str = small_buf;
15082 }
15083
15084 /* There's not much we can do with a sequence of bytecodes. */
15085 if (utp->cond && !utp->cond_string)
3e43a32a
MS
15086 warning (_("Uploaded tracepoint %d condition "
15087 "has no source form, ignoring it"),
409873ef 15088 utp->number);
d5551862 15089
ffc2605c
TT
15090 event_location_up location = string_to_event_location (&addr_str,
15091 current_language);
8cdf0e15 15092 if (!create_breakpoint (get_current_arch (),
ffc2605c 15093 location.get (),
f00aae0f 15094 utp->cond_string, -1, addr_str,
e7e0cddf 15095 0 /* parse cond/thread */,
8cdf0e15 15096 0 /* tempflag */,
0fb4aa4b 15097 utp->type /* type_wanted */,
8cdf0e15
VP
15098 0 /* Ignore count */,
15099 pending_break_support,
348d480f 15100 &tracepoint_breakpoint_ops,
8cdf0e15 15101 0 /* from_tty */,
84f4c1fe 15102 utp->enabled /* enabled */,
44f238bb
PA
15103 0 /* internal */,
15104 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 15105 return NULL;
fd9b8c24 15106
409873ef 15107 /* Get the tracepoint we just created. */
fd9b8c24
PA
15108 tp = get_tracepoint (tracepoint_count);
15109 gdb_assert (tp != NULL);
d5551862 15110
00bf0b85
SS
15111 if (utp->pass > 0)
15112 {
8c042590 15113 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 15114 tp->number);
00bf0b85 15115
409873ef 15116 trace_pass_command (small_buf, 0);
00bf0b85
SS
15117 }
15118
409873ef
SS
15119 /* If we have uploaded versions of the original commands, set up a
15120 special-purpose "reader" function and call the usual command line
15121 reader, then pass the result to the breakpoint command-setting
15122 function. */
3149d8c1 15123 if (!VEC_empty (char_ptr, utp->cmd_strings))
00bf0b85 15124 {
93921405 15125 command_line_up cmd_list;
00bf0b85 15126
409873ef 15127 this_utp = utp;
3149d8c1 15128 next_cmd = 0;
d5551862 15129
409873ef
SS
15130 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15131
c1fc2657 15132 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 15133 }
3149d8c1
SS
15134 else if (!VEC_empty (char_ptr, utp->actions)
15135 || !VEC_empty (char_ptr, utp->step_actions))
3e43a32a
MS
15136 warning (_("Uploaded tracepoint %d actions "
15137 "have no source form, ignoring them"),
409873ef 15138 utp->number);
00bf0b85 15139
f196051f 15140 /* Copy any status information that might be available. */
c1fc2657 15141 tp->hit_count = utp->hit_count;
f196051f
SS
15142 tp->traceframe_usage = utp->traceframe_usage;
15143
00bf0b85 15144 return tp;
d9b3f62e 15145}
00bf0b85 15146
1042e4c0
SS
15147/* Print information on tracepoint number TPNUM_EXP, or all if
15148 omitted. */
15149
15150static void
11db9430 15151info_tracepoints_command (char *args, int from_tty)
1042e4c0 15152{
79a45e25 15153 struct ui_out *uiout = current_uiout;
e5a67952 15154 int num_printed;
1042e4c0 15155
e5a67952 15156 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
15157
15158 if (num_printed == 0)
1042e4c0 15159 {
e5a67952 15160 if (args == NULL || *args == '\0')
112e8700 15161 uiout->message ("No tracepoints.\n");
d77f58be 15162 else
112e8700 15163 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 15164 }
ad443146
SS
15165
15166 default_collect_info ();
1042e4c0
SS
15167}
15168
4a64f543 15169/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
15170 Not supported by all targets. */
15171static void
15172enable_trace_command (char *args, int from_tty)
15173{
15174 enable_command (args, from_tty);
15175}
15176
4a64f543 15177/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
15178 Not supported by all targets. */
15179static void
15180disable_trace_command (char *args, int from_tty)
15181{
15182 disable_command (args, from_tty);
15183}
15184
4a64f543 15185/* Remove a tracepoint (or all if no argument). */
1042e4c0
SS
15186static void
15187delete_trace_command (char *arg, int from_tty)
15188{
35df4500 15189 struct breakpoint *b, *b_tmp;
1042e4c0
SS
15190
15191 dont_repeat ();
15192
15193 if (arg == 0)
15194 {
15195 int breaks_to_delete = 0;
15196
15197 /* Delete all breakpoints if no argument.
15198 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
15199 have to be deleted with an explicit breakpoint number
15200 argument. */
1042e4c0 15201 ALL_TRACEPOINTS (b)
46c6471b 15202 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
15203 {
15204 breaks_to_delete = 1;
15205 break;
15206 }
1042e4c0
SS
15207
15208 /* Ask user only if there are some breakpoints to delete. */
15209 if (!from_tty
15210 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15211 {
35df4500 15212 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 15213 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 15214 delete_breakpoint (b);
1042e4c0
SS
15215 }
15216 }
15217 else
51be5b68 15218 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
1042e4c0
SS
15219}
15220
197f0a60
TT
15221/* Helper function for trace_pass_command. */
15222
15223static void
d9b3f62e 15224trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 15225{
d9b3f62e 15226 tp->pass_count = count;
c1fc2657 15227 observer_notify_breakpoint_modified (tp);
197f0a60
TT
15228 if (from_tty)
15229 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 15230 tp->number, count);
197f0a60
TT
15231}
15232
1042e4c0
SS
15233/* Set passcount for tracepoint.
15234
15235 First command argument is passcount, second is tracepoint number.
15236 If tracepoint number omitted, apply to most recently defined.
15237 Also accepts special argument "all". */
15238
15239static void
15240trace_pass_command (char *args, int from_tty)
15241{
d9b3f62e 15242 struct tracepoint *t1;
1042e4c0 15243 unsigned int count;
1042e4c0
SS
15244
15245 if (args == 0 || *args == 0)
3e43a32a
MS
15246 error (_("passcount command requires an "
15247 "argument (count + optional TP num)"));
1042e4c0 15248
4a64f543 15249 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 15250
529480d0 15251 args = skip_spaces (args);
1042e4c0
SS
15252 if (*args && strncasecmp (args, "all", 3) == 0)
15253 {
d9b3f62e
PA
15254 struct breakpoint *b;
15255
1042e4c0 15256 args += 3; /* Skip special argument "all". */
1042e4c0
SS
15257 if (*args)
15258 error (_("Junk at end of arguments."));
1042e4c0 15259
d9b3f62e 15260 ALL_TRACEPOINTS (b)
197f0a60 15261 {
d9b3f62e 15262 t1 = (struct tracepoint *) b;
197f0a60
TT
15263 trace_pass_set_count (t1, count, from_tty);
15264 }
15265 }
15266 else if (*args == '\0')
1042e4c0 15267 {
5fa1d40e 15268 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 15269 if (t1)
197f0a60
TT
15270 trace_pass_set_count (t1, count, from_tty);
15271 }
15272 else
15273 {
bfd28288
PA
15274 number_or_range_parser parser (args);
15275 while (!parser.finished ())
1042e4c0 15276 {
bfd28288 15277 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
15278 if (t1)
15279 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
15280 }
15281 }
1042e4c0
SS
15282}
15283
d9b3f62e 15284struct tracepoint *
1042e4c0
SS
15285get_tracepoint (int num)
15286{
15287 struct breakpoint *t;
15288
15289 ALL_TRACEPOINTS (t)
15290 if (t->number == num)
d9b3f62e 15291 return (struct tracepoint *) t;
1042e4c0
SS
15292
15293 return NULL;
15294}
15295
d5551862
SS
15296/* Find the tracepoint with the given target-side number (which may be
15297 different from the tracepoint number after disconnecting and
15298 reconnecting). */
15299
d9b3f62e 15300struct tracepoint *
d5551862
SS
15301get_tracepoint_by_number_on_target (int num)
15302{
d9b3f62e 15303 struct breakpoint *b;
d5551862 15304
d9b3f62e
PA
15305 ALL_TRACEPOINTS (b)
15306 {
15307 struct tracepoint *t = (struct tracepoint *) b;
15308
15309 if (t->number_on_target == num)
15310 return t;
15311 }
d5551862
SS
15312
15313 return NULL;
15314}
15315
1042e4c0 15316/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 15317 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
15318 If the argument is missing, the most recent tracepoint
15319 (tracepoint_count) is returned. */
15320
d9b3f62e 15321struct tracepoint *
197f0a60 15322get_tracepoint_by_number (char **arg,
bfd28288 15323 number_or_range_parser *parser)
1042e4c0 15324{
1042e4c0
SS
15325 struct breakpoint *t;
15326 int tpnum;
15327 char *instring = arg == NULL ? NULL : *arg;
15328
bfd28288 15329 if (parser != NULL)
197f0a60 15330 {
bfd28288
PA
15331 gdb_assert (!parser->finished ());
15332 tpnum = parser->get_number ();
197f0a60
TT
15333 }
15334 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 15335 tpnum = tracepoint_count;
1042e4c0 15336 else
197f0a60 15337 tpnum = get_number (arg);
1042e4c0
SS
15338
15339 if (tpnum <= 0)
15340 {
15341 if (instring && *instring)
15342 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15343 instring);
15344 else
5fa1d40e 15345 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
15346 return NULL;
15347 }
15348
15349 ALL_TRACEPOINTS (t)
15350 if (t->number == tpnum)
15351 {
d9b3f62e 15352 return (struct tracepoint *) t;
1042e4c0
SS
15353 }
15354
1042e4c0
SS
15355 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15356 return NULL;
15357}
15358
d9b3f62e
PA
15359void
15360print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15361{
15362 if (b->thread != -1)
15363 fprintf_unfiltered (fp, " thread %d", b->thread);
15364
15365 if (b->task != 0)
15366 fprintf_unfiltered (fp, " task %d", b->task);
15367
15368 fprintf_unfiltered (fp, "\n");
15369}
15370
6149aea9
PA
15371/* Save information on user settable breakpoints (watchpoints, etc) to
15372 a new script file named FILENAME. If FILTER is non-NULL, call it
15373 on each breakpoint and only include the ones for which it returns
15374 non-zero. */
15375
1042e4c0 15376static void
6149aea9
PA
15377save_breakpoints (char *filename, int from_tty,
15378 int (*filter) (const struct breakpoint *))
1042e4c0
SS
15379{
15380 struct breakpoint *tp;
6149aea9 15381 int any = 0;
6149aea9 15382 int extra_trace_bits = 0;
1042e4c0 15383
6149aea9
PA
15384 if (filename == 0 || *filename == 0)
15385 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15386
15387 /* See if we have anything to save. */
6149aea9 15388 ALL_BREAKPOINTS (tp)
1042e4c0 15389 {
6149aea9 15390 /* Skip internal and momentary breakpoints. */
09d682a4 15391 if (!user_breakpoint_p (tp))
6149aea9
PA
15392 continue;
15393
15394 /* If we have a filter, only save the breakpoints it accepts. */
15395 if (filter && !filter (tp))
15396 continue;
15397
15398 any = 1;
15399
15400 if (is_tracepoint (tp))
15401 {
15402 extra_trace_bits = 1;
15403
15404 /* We can stop searching. */
15405 break;
15406 }
1042e4c0 15407 }
6149aea9
PA
15408
15409 if (!any)
1042e4c0 15410 {
6149aea9 15411 warning (_("Nothing to save."));
1042e4c0
SS
15412 return;
15413 }
15414
ee0c3293 15415 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15416
15417 stdio_file fp;
15418
ee0c3293 15419 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15420 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15421 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15422
6149aea9 15423 if (extra_trace_bits)
d7e74731 15424 save_trace_state_variables (&fp);
8bf6485c 15425
6149aea9 15426 ALL_BREAKPOINTS (tp)
1042e4c0 15427 {
6149aea9 15428 /* Skip internal and momentary breakpoints. */
09d682a4 15429 if (!user_breakpoint_p (tp))
6149aea9 15430 continue;
8bf6485c 15431
6149aea9
PA
15432 /* If we have a filter, only save the breakpoints it accepts. */
15433 if (filter && !filter (tp))
15434 continue;
15435
d7e74731 15436 tp->ops->print_recreate (tp, &fp);
1042e4c0 15437
6149aea9
PA
15438 /* Note, we can't rely on tp->number for anything, as we can't
15439 assume the recreated breakpoint numbers will match. Use $bpnum
15440 instead. */
15441
15442 if (tp->cond_string)
d7e74731 15443 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15444
15445 if (tp->ignore_count)
d7e74731 15446 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15447
2d9442cc 15448 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15449 {
d7e74731 15450 fp.puts (" commands\n");
a7bdde9e 15451
d7e74731 15452 current_uiout->redirect (&fp);
492d29ea 15453 TRY
1042e4c0 15454 {
79a45e25 15455 print_command_lines (current_uiout, tp->commands->commands, 2);
a7bdde9e 15456 }
492d29ea
PA
15457 CATCH (ex, RETURN_MASK_ALL)
15458 {
112e8700 15459 current_uiout->redirect (NULL);
492d29ea
PA
15460 throw_exception (ex);
15461 }
15462 END_CATCH
1042e4c0 15463
112e8700 15464 current_uiout->redirect (NULL);
d7e74731 15465 fp.puts (" end\n");
1042e4c0 15466 }
6149aea9
PA
15467
15468 if (tp->enable_state == bp_disabled)
d7e74731 15469 fp.puts ("disable $bpnum\n");
6149aea9
PA
15470
15471 /* If this is a multi-location breakpoint, check if the locations
15472 should be individually disabled. Watchpoint locations are
15473 special, and not user visible. */
15474 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15475 {
15476 struct bp_location *loc;
15477 int n = 1;
15478
15479 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15480 if (!loc->enabled)
d7e74731 15481 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15482 }
1042e4c0 15483 }
8bf6485c 15484
6149aea9 15485 if (extra_trace_bits && *default_collect)
d7e74731 15486 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15487
1042e4c0 15488 if (from_tty)
ee0c3293 15489 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15490}
15491
15492/* The `save breakpoints' command. */
15493
15494static void
15495save_breakpoints_command (char *args, int from_tty)
15496{
15497 save_breakpoints (args, from_tty, NULL);
15498}
15499
15500/* The `save tracepoints' command. */
15501
15502static void
15503save_tracepoints_command (char *args, int from_tty)
15504{
15505 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15506}
15507
15508/* Create a vector of all tracepoints. */
15509
15510VEC(breakpoint_p) *
eeae04df 15511all_tracepoints (void)
1042e4c0
SS
15512{
15513 VEC(breakpoint_p) *tp_vec = 0;
15514 struct breakpoint *tp;
15515
15516 ALL_TRACEPOINTS (tp)
15517 {
15518 VEC_safe_push (breakpoint_p, tp_vec, tp);
15519 }
15520
15521 return tp_vec;
15522}
15523
c906108c 15524\f
629500fa
KS
15525/* This help string is used to consolidate all the help string for specifying
15526 locations used by several commands. */
15527
15528#define LOCATION_HELP_STRING \
15529"Linespecs are colon-separated lists of location parameters, such as\n\
15530source filename, function name, label name, and line number.\n\
15531Example: To specify the start of a label named \"the_top\" in the\n\
15532function \"fact\" in the file \"factorial.c\", use\n\
15533\"factorial.c:fact:the_top\".\n\
15534\n\
15535Address locations begin with \"*\" and specify an exact address in the\n\
15536program. Example: To specify the fourth byte past the start function\n\
15537\"main\", use \"*main + 4\".\n\
15538\n\
15539Explicit locations are similar to linespecs but use an option/argument\n\
15540syntax to specify location parameters.\n\
15541Example: To specify the start of the label named \"the_top\" in the\n\
15542function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15543-function fact -label the_top\".\n"
15544
4a64f543
MS
15545/* This help string is used for the break, hbreak, tbreak and thbreak
15546 commands. It is defined as a macro to prevent duplication.
15547 COMMAND should be a string constant containing the name of the
15548 command. */
629500fa 15549
31e2b00f 15550#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15551command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15552PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15553probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15554guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15555`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15556LOCATION may be a linespec, address, or explicit location as described\n\
15557below.\n\
15558\n\
dc10affe
PA
15559With no LOCATION, uses current execution address of the selected\n\
15560stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15561\n\
15562THREADNUM is the number from \"info threads\".\n\
15563CONDITION is a boolean expression.\n\
629500fa 15564\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15565Multiple breakpoints at one place are permitted, and useful if their\n\
15566conditions are different.\n\
31e2b00f
AS
15567\n\
15568Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15569
44feb3ce
TT
15570/* List of subcommands for "catch". */
15571static struct cmd_list_element *catch_cmdlist;
15572
15573/* List of subcommands for "tcatch". */
15574static struct cmd_list_element *tcatch_cmdlist;
15575
9ac4176b 15576void
a121b7c1 15577add_catch_command (const char *name, const char *docstring,
82ae6c8d 15578 cmd_sfunc_ftype *sfunc,
625e8578 15579 completer_ftype *completer,
44feb3ce
TT
15580 void *user_data_catch,
15581 void *user_data_tcatch)
15582{
15583 struct cmd_list_element *command;
15584
15585 command = add_cmd (name, class_breakpoint, NULL, docstring,
15586 &catch_cmdlist);
15587 set_cmd_sfunc (command, sfunc);
15588 set_cmd_context (command, user_data_catch);
a96d9b2e 15589 set_cmd_completer (command, completer);
44feb3ce
TT
15590
15591 command = add_cmd (name, class_breakpoint, NULL, docstring,
15592 &tcatch_cmdlist);
15593 set_cmd_sfunc (command, sfunc);
15594 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15595 set_cmd_completer (command, completer);
44feb3ce
TT
15596}
15597
6149aea9
PA
15598static void
15599save_command (char *arg, int from_tty)
15600{
3e43a32a
MS
15601 printf_unfiltered (_("\"save\" must be followed by "
15602 "the name of a save subcommand.\n"));
635c7e8a 15603 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15604}
15605
84f4c1fe
PM
15606struct breakpoint *
15607iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15608 void *data)
15609{
35df4500 15610 struct breakpoint *b, *b_tmp;
84f4c1fe 15611
35df4500 15612 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15613 {
15614 if ((*callback) (b, data))
15615 return b;
15616 }
15617
15618 return NULL;
15619}
15620
0574c78f
GB
15621/* Zero if any of the breakpoint's locations could be a location where
15622 functions have been inlined, nonzero otherwise. */
15623
15624static int
15625is_non_inline_function (struct breakpoint *b)
15626{
15627 /* The shared library event breakpoint is set on the address of a
15628 non-inline function. */
15629 if (b->type == bp_shlib_event)
15630 return 1;
15631
15632 return 0;
15633}
15634
15635/* Nonzero if the specified PC cannot be a location where functions
15636 have been inlined. */
15637
15638int
09ac7c10
TT
15639pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15640 const struct target_waitstatus *ws)
0574c78f
GB
15641{
15642 struct breakpoint *b;
15643 struct bp_location *bl;
15644
15645 ALL_BREAKPOINTS (b)
15646 {
15647 if (!is_non_inline_function (b))
15648 continue;
15649
15650 for (bl = b->loc; bl != NULL; bl = bl->next)
15651 {
15652 if (!bl->shlib_disabled
09ac7c10 15653 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15654 return 1;
15655 }
15656 }
15657
15658 return 0;
15659}
15660
2f202fde
JK
15661/* Remove any references to OBJFILE which is going to be freed. */
15662
15663void
15664breakpoint_free_objfile (struct objfile *objfile)
15665{
15666 struct bp_location **locp, *loc;
15667
15668 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15669 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15670 loc->symtab = NULL;
15671}
15672
2060206e
PA
15673void
15674initialize_breakpoint_ops (void)
15675{
15676 static int initialized = 0;
15677
15678 struct breakpoint_ops *ops;
15679
15680 if (initialized)
15681 return;
15682 initialized = 1;
15683
15684 /* The breakpoint_ops structure to be inherit by all kinds of
15685 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15686 internal and momentary breakpoints, etc.). */
15687 ops = &bkpt_base_breakpoint_ops;
15688 *ops = base_breakpoint_ops;
15689 ops->re_set = bkpt_re_set;
15690 ops->insert_location = bkpt_insert_location;
15691 ops->remove_location = bkpt_remove_location;
15692 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15693 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15694 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15695 ops->decode_location = bkpt_decode_location;
2060206e
PA
15696
15697 /* The breakpoint_ops structure to be used in regular breakpoints. */
15698 ops = &bkpt_breakpoint_ops;
15699 *ops = bkpt_base_breakpoint_ops;
15700 ops->re_set = bkpt_re_set;
15701 ops->resources_needed = bkpt_resources_needed;
15702 ops->print_it = bkpt_print_it;
15703 ops->print_mention = bkpt_print_mention;
15704 ops->print_recreate = bkpt_print_recreate;
15705
15706 /* Ranged breakpoints. */
15707 ops = &ranged_breakpoint_ops;
15708 *ops = bkpt_breakpoint_ops;
15709 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15710 ops->resources_needed = resources_needed_ranged_breakpoint;
15711 ops->print_it = print_it_ranged_breakpoint;
15712 ops->print_one = print_one_ranged_breakpoint;
15713 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15714 ops->print_mention = print_mention_ranged_breakpoint;
15715 ops->print_recreate = print_recreate_ranged_breakpoint;
15716
15717 /* Internal breakpoints. */
15718 ops = &internal_breakpoint_ops;
15719 *ops = bkpt_base_breakpoint_ops;
15720 ops->re_set = internal_bkpt_re_set;
15721 ops->check_status = internal_bkpt_check_status;
15722 ops->print_it = internal_bkpt_print_it;
15723 ops->print_mention = internal_bkpt_print_mention;
15724
15725 /* Momentary breakpoints. */
15726 ops = &momentary_breakpoint_ops;
15727 *ops = bkpt_base_breakpoint_ops;
15728 ops->re_set = momentary_bkpt_re_set;
15729 ops->check_status = momentary_bkpt_check_status;
15730 ops->print_it = momentary_bkpt_print_it;
15731 ops->print_mention = momentary_bkpt_print_mention;
15732
55aa24fb
SDJ
15733 /* Probe breakpoints. */
15734 ops = &bkpt_probe_breakpoint_ops;
15735 *ops = bkpt_breakpoint_ops;
15736 ops->insert_location = bkpt_probe_insert_location;
15737 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15738 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15739 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15740
2060206e
PA
15741 /* Watchpoints. */
15742 ops = &watchpoint_breakpoint_ops;
15743 *ops = base_breakpoint_ops;
15744 ops->re_set = re_set_watchpoint;
15745 ops->insert_location = insert_watchpoint;
15746 ops->remove_location = remove_watchpoint;
15747 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15748 ops->check_status = check_status_watchpoint;
15749 ops->resources_needed = resources_needed_watchpoint;
15750 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15751 ops->print_it = print_it_watchpoint;
15752 ops->print_mention = print_mention_watchpoint;
15753 ops->print_recreate = print_recreate_watchpoint;
427cd150 15754 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15755
15756 /* Masked watchpoints. */
15757 ops = &masked_watchpoint_breakpoint_ops;
15758 *ops = watchpoint_breakpoint_ops;
15759 ops->insert_location = insert_masked_watchpoint;
15760 ops->remove_location = remove_masked_watchpoint;
15761 ops->resources_needed = resources_needed_masked_watchpoint;
15762 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15763 ops->print_it = print_it_masked_watchpoint;
15764 ops->print_one_detail = print_one_detail_masked_watchpoint;
15765 ops->print_mention = print_mention_masked_watchpoint;
15766 ops->print_recreate = print_recreate_masked_watchpoint;
15767
15768 /* Tracepoints. */
15769 ops = &tracepoint_breakpoint_ops;
15770 *ops = base_breakpoint_ops;
15771 ops->re_set = tracepoint_re_set;
15772 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15773 ops->print_one_detail = tracepoint_print_one_detail;
15774 ops->print_mention = tracepoint_print_mention;
15775 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15776 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15777 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15778 ops->decode_location = tracepoint_decode_location;
983af33b 15779
55aa24fb
SDJ
15780 /* Probe tracepoints. */
15781 ops = &tracepoint_probe_breakpoint_ops;
15782 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15783 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15784 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15785
983af33b
SDJ
15786 /* Static tracepoints with marker (`-m'). */
15787 ops = &strace_marker_breakpoint_ops;
15788 *ops = tracepoint_breakpoint_ops;
5f700d83 15789 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15790 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15791 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15792
15793 /* Fork catchpoints. */
15794 ops = &catch_fork_breakpoint_ops;
15795 *ops = base_breakpoint_ops;
15796 ops->insert_location = insert_catch_fork;
15797 ops->remove_location = remove_catch_fork;
15798 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15799 ops->print_it = print_it_catch_fork;
15800 ops->print_one = print_one_catch_fork;
15801 ops->print_mention = print_mention_catch_fork;
15802 ops->print_recreate = print_recreate_catch_fork;
15803
15804 /* Vfork catchpoints. */
15805 ops = &catch_vfork_breakpoint_ops;
15806 *ops = base_breakpoint_ops;
15807 ops->insert_location = insert_catch_vfork;
15808 ops->remove_location = remove_catch_vfork;
15809 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15810 ops->print_it = print_it_catch_vfork;
15811 ops->print_one = print_one_catch_vfork;
15812 ops->print_mention = print_mention_catch_vfork;
15813 ops->print_recreate = print_recreate_catch_vfork;
15814
15815 /* Exec catchpoints. */
15816 ops = &catch_exec_breakpoint_ops;
15817 *ops = base_breakpoint_ops;
2060206e
PA
15818 ops->insert_location = insert_catch_exec;
15819 ops->remove_location = remove_catch_exec;
15820 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15821 ops->print_it = print_it_catch_exec;
15822 ops->print_one = print_one_catch_exec;
15823 ops->print_mention = print_mention_catch_exec;
15824 ops->print_recreate = print_recreate_catch_exec;
15825
edcc5120
TT
15826 /* Solib-related catchpoints. */
15827 ops = &catch_solib_breakpoint_ops;
15828 *ops = base_breakpoint_ops;
edcc5120
TT
15829 ops->insert_location = insert_catch_solib;
15830 ops->remove_location = remove_catch_solib;
15831 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15832 ops->check_status = check_status_catch_solib;
15833 ops->print_it = print_it_catch_solib;
15834 ops->print_one = print_one_catch_solib;
15835 ops->print_mention = print_mention_catch_solib;
15836 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15837
15838 ops = &dprintf_breakpoint_ops;
15839 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15840 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15841 ops->resources_needed = bkpt_resources_needed;
15842 ops->print_it = bkpt_print_it;
15843 ops->print_mention = bkpt_print_mention;
2d9442cc 15844 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15845 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15846 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15847}
15848
8bfd80db
YQ
15849/* Chain containing all defined "enable breakpoint" subcommands. */
15850
15851static struct cmd_list_element *enablebreaklist = NULL;
15852
c906108c 15853void
fba45db2 15854_initialize_breakpoint (void)
c906108c
SS
15855{
15856 struct cmd_list_element *c;
15857
2060206e
PA
15858 initialize_breakpoint_ops ();
15859
84acb35a 15860 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
63644780 15861 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
1f3b5d1b 15862 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
84acb35a 15863
55aa24fb
SDJ
15864 breakpoint_objfile_key
15865 = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
17450429 15866
c906108c
SS
15867 breakpoint_chain = 0;
15868 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15869 before a breakpoint is set. */
15870 breakpoint_count = 0;
15871
1042e4c0
SS
15872 tracepoint_count = 0;
15873
1bedd215
AC
15874 add_com ("ignore", class_breakpoint, ignore_command, _("\
15875Set ignore-count of breakpoint number N to COUNT.\n\
15876Usage is `ignore N COUNT'."));
c906108c 15877
1bedd215 15878 add_com ("commands", class_breakpoint, commands_command, _("\
18da0c51
MG
15879Set commands to be executed when the given breakpoints are hit.\n\
15880Give a space-separated breakpoint list as argument after \"commands\".\n\
15881A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15882(e.g. `5-7').\n\
c906108c
SS
15883With no argument, the targeted breakpoint is the last one set.\n\
15884The commands themselves follow starting on the next line.\n\
15885Type a line containing \"end\" to indicate the end of them.\n\
15886Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15887then no output is printed when it is hit, except what the commands print."));
c906108c 15888
d55637df 15889 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15890Specify breakpoint number N to break only if COND is true.\n\
c906108c 15891Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15892expression to be evaluated whenever breakpoint N is reached."));
d55637df 15893 set_cmd_completer (c, condition_completer);
c906108c 15894
1bedd215 15895 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15896Set a temporary breakpoint.\n\
c906108c
SS
15897Like \"break\" except the breakpoint is only temporary,\n\
15898so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15899by using \"enable delete\" on the breakpoint number.\n\
15900\n"
15901BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15902 set_cmd_completer (c, location_completer);
c94fdfd0 15903
1bedd215 15904 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15905Set a hardware assisted breakpoint.\n\
c906108c 15906Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15907some target hardware may not have this support.\n\
15908\n"
15909BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15910 set_cmd_completer (c, location_completer);
c906108c 15911
1bedd215 15912 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15913Set a temporary hardware assisted breakpoint.\n\
c906108c 15914Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15915so it will be deleted when hit.\n\
15916\n"
15917BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15918 set_cmd_completer (c, location_completer);
c906108c 15919
1bedd215
AC
15920 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15921Enable some breakpoints.\n\
c906108c
SS
15922Give breakpoint numbers (separated by spaces) as arguments.\n\
15923With no subcommand, breakpoints are enabled until you command otherwise.\n\
15924This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15925With a subcommand you can enable temporarily."),
c906108c 15926 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15927
15928 add_com_alias ("en", "enable", class_breakpoint, 1);
15929
84951ab5 15930 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15931Enable some breakpoints.\n\
c906108c
SS
15932Give breakpoint numbers (separated by spaces) as arguments.\n\
15933This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15934May be abbreviated to simply \"enable\".\n"),
c5aa993b 15935 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15936
1a966eab
AC
15937 add_cmd ("once", no_class, enable_once_command, _("\
15938Enable breakpoints for one hit. Give breakpoint numbers.\n\
15939If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15940 &enablebreaklist);
15941
1a966eab
AC
15942 add_cmd ("delete", no_class, enable_delete_command, _("\
15943Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15944If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15945 &enablebreaklist);
15946
816338b5
SS
15947 add_cmd ("count", no_class, enable_count_command, _("\
15948Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15949If a breakpoint is hit while enabled in this fashion,\n\
15950the count is decremented; when it reaches zero, the breakpoint is disabled."),
15951 &enablebreaklist);
15952
1a966eab
AC
15953 add_cmd ("delete", no_class, enable_delete_command, _("\
15954Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15955If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15956 &enablelist);
15957
1a966eab
AC
15958 add_cmd ("once", no_class, enable_once_command, _("\
15959Enable breakpoints for one hit. Give breakpoint numbers.\n\
15960If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15961 &enablelist);
15962
15963 add_cmd ("count", no_class, enable_count_command, _("\
15964Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15965If a breakpoint is hit while enabled in this fashion,\n\
15966the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15967 &enablelist);
15968
1bedd215
AC
15969 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15970Disable some breakpoints.\n\
c906108c
SS
15971Arguments are breakpoint numbers with spaces in between.\n\
15972To disable all breakpoints, give no argument.\n\
64b9b334 15973A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15974 &disablelist, "disable ", 1, &cmdlist);
15975 add_com_alias ("dis", "disable", class_breakpoint, 1);
15976 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15977
1a966eab
AC
15978 add_cmd ("breakpoints", class_alias, disable_command, _("\
15979Disable some breakpoints.\n\
c906108c
SS
15980Arguments are breakpoint numbers with spaces in between.\n\
15981To disable all breakpoints, give no argument.\n\
64b9b334 15982A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15983This command may be abbreviated \"disable\"."),
c906108c
SS
15984 &disablelist);
15985
1bedd215
AC
15986 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15987Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15988Arguments are breakpoint numbers with spaces in between.\n\
15989To delete all breakpoints, give no argument.\n\
15990\n\
15991Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15992The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15993 &deletelist, "delete ", 1, &cmdlist);
15994 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15995 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15996
1a966eab
AC
15997 add_cmd ("breakpoints", class_alias, delete_command, _("\
15998Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15999Arguments are breakpoint numbers with spaces in between.\n\
16000To delete all breakpoints, give no argument.\n\
1a966eab 16001This command may be abbreviated \"delete\"."),
c906108c
SS
16002 &deletelist);
16003
1bedd215 16004 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
16005Clear breakpoint at specified location.\n\
16006Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
16007\n\
16008With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
16009is executing in.\n"
16010"\n" LOCATION_HELP_STRING "\n\
1bedd215 16011See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 16012 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 16013
1bedd215 16014 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 16015Set breakpoint at specified location.\n"
31e2b00f 16016BREAK_ARGS_HELP ("break")));
5ba2abeb 16017 set_cmd_completer (c, location_completer);
c94fdfd0 16018
c906108c
SS
16019 add_com_alias ("b", "break", class_run, 1);
16020 add_com_alias ("br", "break", class_run, 1);
16021 add_com_alias ("bre", "break", class_run, 1);
16022 add_com_alias ("brea", "break", class_run, 1);
16023
c906108c
SS
16024 if (dbx_commands)
16025 {
1bedd215
AC
16026 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16027Break in function/address or break at a line in the current file."),
c5aa993b
JM
16028 &stoplist, "stop ", 1, &cmdlist);
16029 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 16030 _("Break in function or address."), &stoplist);
c5aa993b 16031 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 16032 _("Break at a line in the current file."), &stoplist);
11db9430 16033 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 16034Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
16035The \"Type\" column indicates one of:\n\
16036\tbreakpoint - normal breakpoint\n\
16037\twatchpoint - watchpoint\n\
16038The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16039the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16040breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
16041address and file/line number respectively.\n\
16042\n\
16043Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16044are set to the address of the last breakpoint listed unless the command\n\
16045is prefixed with \"server \".\n\n\
c906108c 16046Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 16047breakpoint set."));
c906108c
SS
16048 }
16049
11db9430 16050 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 16051Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
16052The \"Type\" column indicates one of:\n\
16053\tbreakpoint - normal breakpoint\n\
16054\twatchpoint - watchpoint\n\
16055The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16056the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16057breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
16058address and file/line number respectively.\n\
16059\n\
16060Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16061are set to the address of the last breakpoint listed unless the command\n\
16062is prefixed with \"server \".\n\n\
c906108c 16063Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 16064breakpoint set."));
c906108c 16065
6b04bdb7
MS
16066 add_info_alias ("b", "breakpoints", 1);
16067
1a966eab
AC
16068 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16069Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
16070The \"Type\" column indicates one of:\n\
16071\tbreakpoint - normal breakpoint\n\
16072\twatchpoint - watchpoint\n\
16073\tlongjmp - internal breakpoint used to step through longjmp()\n\
16074\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16075\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
16076\tfinish - internal breakpoint used by the \"finish\" command\n\
16077The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
16078the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16079breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
16080address and file/line number respectively.\n\
16081\n\
16082Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16083are set to the address of the last breakpoint listed unless the command\n\
16084is prefixed with \"server \".\n\n\
c906108c 16085Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 16086breakpoint set."),
c906108c
SS
16087 &maintenanceinfolist);
16088
44feb3ce
TT
16089 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16090Set catchpoints to catch events."),
16091 &catch_cmdlist, "catch ",
16092 0/*allow-unknown*/, &cmdlist);
16093
16094 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16095Set temporary catchpoints to catch events."),
16096 &tcatch_cmdlist, "tcatch ",
16097 0/*allow-unknown*/, &cmdlist);
16098
44feb3ce
TT
16099 add_catch_command ("fork", _("Catch calls to fork."),
16100 catch_fork_command_1,
a96d9b2e 16101 NULL,
44feb3ce
TT
16102 (void *) (uintptr_t) catch_fork_permanent,
16103 (void *) (uintptr_t) catch_fork_temporary);
16104 add_catch_command ("vfork", _("Catch calls to vfork."),
16105 catch_fork_command_1,
a96d9b2e 16106 NULL,
44feb3ce
TT
16107 (void *) (uintptr_t) catch_vfork_permanent,
16108 (void *) (uintptr_t) catch_vfork_temporary);
16109 add_catch_command ("exec", _("Catch calls to exec."),
16110 catch_exec_command_1,
a96d9b2e
SDJ
16111 NULL,
16112 CATCH_PERMANENT,
16113 CATCH_TEMPORARY);
edcc5120
TT
16114 add_catch_command ("load", _("Catch loads of shared libraries.\n\
16115Usage: catch load [REGEX]\n\
16116If REGEX is given, only stop for libraries matching the regular expression."),
16117 catch_load_command_1,
16118 NULL,
16119 CATCH_PERMANENT,
16120 CATCH_TEMPORARY);
16121 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16122Usage: catch unload [REGEX]\n\
16123If REGEX is given, only stop for libraries matching the regular expression."),
16124 catch_unload_command_1,
16125 NULL,
16126 CATCH_PERMANENT,
16127 CATCH_TEMPORARY);
c5aa993b 16128
1bedd215
AC
16129 c = add_com ("watch", class_breakpoint, watch_command, _("\
16130Set a watchpoint for an expression.\n\
06a64a0b 16131Usage: watch [-l|-location] EXPRESSION\n\
c906108c 16132A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16133an expression changes.\n\
16134If -l or -location is given, this evaluates EXPRESSION and watches\n\
16135the memory to which it refers."));
65d12d83 16136 set_cmd_completer (c, expression_completer);
c906108c 16137
1bedd215
AC
16138 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16139Set a read watchpoint for an expression.\n\
06a64a0b 16140Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 16141A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16142an expression is read.\n\
16143If -l or -location is given, this evaluates EXPRESSION and watches\n\
16144the memory to which it refers."));
65d12d83 16145 set_cmd_completer (c, expression_completer);
c906108c 16146
1bedd215
AC
16147 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16148Set a watchpoint for an expression.\n\
06a64a0b 16149Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 16150A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16151an expression is either read or written.\n\
16152If -l or -location is given, this evaluates EXPRESSION and watches\n\
16153the memory to which it refers."));
65d12d83 16154 set_cmd_completer (c, expression_completer);
c906108c 16155
11db9430 16156 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 16157Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 16158
920d2a44
AC
16159 /* XXX: cagney/2005-02-23: This should be a boolean, and should
16160 respond to changes - contrary to the description. */
85c07804
AC
16161 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16162 &can_use_hw_watchpoints, _("\
16163Set debugger's willingness to use watchpoint hardware."), _("\
16164Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
16165If zero, gdb will not use hardware for new watchpoints, even if\n\
16166such is available. (However, any hardware watchpoints that were\n\
16167created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
16168hardware.)"),
16169 NULL,
920d2a44 16170 show_can_use_hw_watchpoints,
85c07804 16171 &setlist, &showlist);
c906108c
SS
16172
16173 can_use_hw_watchpoints = 1;
fa8d40ab 16174
1042e4c0
SS
16175 /* Tracepoint manipulation commands. */
16176
16177 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 16178Set a tracepoint at specified location.\n\
1042e4c0
SS
16179\n"
16180BREAK_ARGS_HELP ("trace") "\n\
16181Do \"help tracepoints\" for info on other tracepoint commands."));
16182 set_cmd_completer (c, location_completer);
16183
16184 add_com_alias ("tp", "trace", class_alias, 0);
16185 add_com_alias ("tr", "trace", class_alias, 1);
16186 add_com_alias ("tra", "trace", class_alias, 1);
16187 add_com_alias ("trac", "trace", class_alias, 1);
16188
7a697b8d 16189 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 16190Set a fast tracepoint at specified location.\n\
7a697b8d
SS
16191\n"
16192BREAK_ARGS_HELP ("ftrace") "\n\
16193Do \"help tracepoints\" for info on other tracepoint commands."));
16194 set_cmd_completer (c, location_completer);
16195
0fb4aa4b 16196 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 16197Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
16198\n\
16199strace [LOCATION] [if CONDITION]\n\
629500fa
KS
16200LOCATION may be a linespec, explicit, or address location (described below) \n\
16201or -m MARKER_ID.\n\n\
16202If a marker id is specified, probe the marker with that name. With\n\
16203no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
16204Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16205This collects arbitrary user data passed in the probe point call to the\n\
16206tracing library. You can inspect it when analyzing the trace buffer,\n\
16207by printing the $_sdata variable like any other convenience variable.\n\
16208\n\
16209CONDITION is a boolean expression.\n\
629500fa 16210\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
16211Multiple tracepoints at one place are permitted, and useful if their\n\
16212conditions are different.\n\
0fb4aa4b
PA
16213\n\
16214Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16215Do \"help tracepoints\" for info on other tracepoint commands."));
16216 set_cmd_completer (c, location_completer);
16217
11db9430 16218 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 16219Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
16220Convenience variable \"$tpnum\" contains the number of the\n\
16221last tracepoint set."));
16222
16223 add_info_alias ("tp", "tracepoints", 1);
16224
16225 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16226Delete specified tracepoints.\n\
16227Arguments are tracepoint numbers, separated by spaces.\n\
16228No argument means delete all tracepoints."),
16229 &deletelist);
7e20dfcd 16230 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
16231
16232 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16233Disable specified tracepoints.\n\
16234Arguments are tracepoint numbers, separated by spaces.\n\
16235No argument means disable all tracepoints."),
16236 &disablelist);
16237 deprecate_cmd (c, "disable");
16238
16239 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16240Enable specified tracepoints.\n\
16241Arguments are tracepoint numbers, separated by spaces.\n\
16242No argument means enable all tracepoints."),
16243 &enablelist);
16244 deprecate_cmd (c, "enable");
16245
16246 add_com ("passcount", class_trace, trace_pass_command, _("\
16247Set the passcount for a tracepoint.\n\
16248The trace will end when the tracepoint has been passed 'count' times.\n\
16249Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16250if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16251
6149aea9
PA
16252 add_prefix_cmd ("save", class_breakpoint, save_command,
16253 _("Save breakpoint definitions as a script."),
16254 &save_cmdlist, "save ",
16255 0/*allow-unknown*/, &cmdlist);
16256
16257 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16258Save current breakpoint definitions as a script.\n\
cce7e648 16259This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
16260catchpoints, tracepoints). Use the 'source' command in another debug\n\
16261session to restore them."),
16262 &save_cmdlist);
16263 set_cmd_completer (c, filename_completer);
16264
16265 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 16266Save current tracepoint definitions as a script.\n\
6149aea9
PA
16267Use the 'source' command in another debug session to restore them."),
16268 &save_cmdlist);
1042e4c0
SS
16269 set_cmd_completer (c, filename_completer);
16270
6149aea9
PA
16271 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16272 deprecate_cmd (c, "save tracepoints");
16273
1bedd215 16274 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
16275Breakpoint specific settings\n\
16276Configure various breakpoint-specific variables such as\n\
1bedd215 16277pending breakpoint behavior"),
fa8d40ab
JJ
16278 &breakpoint_set_cmdlist, "set breakpoint ",
16279 0/*allow-unknown*/, &setlist);
1bedd215 16280 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
16281Breakpoint specific settings\n\
16282Configure various breakpoint-specific variables such as\n\
1bedd215 16283pending breakpoint behavior"),
fa8d40ab
JJ
16284 &breakpoint_show_cmdlist, "show breakpoint ",
16285 0/*allow-unknown*/, &showlist);
16286
7915a72c
AC
16287 add_setshow_auto_boolean_cmd ("pending", no_class,
16288 &pending_break_support, _("\
16289Set debugger's behavior regarding pending breakpoints."), _("\
16290Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
16291If on, an unrecognized breakpoint location will cause gdb to create a\n\
16292pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16293an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 16294user-query to see if a pending breakpoint should be created."),
2c5b56ce 16295 NULL,
920d2a44 16296 show_pending_break_support,
6e1d7d6c
AC
16297 &breakpoint_set_cmdlist,
16298 &breakpoint_show_cmdlist);
fa8d40ab
JJ
16299
16300 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
16301
16302 add_setshow_boolean_cmd ("auto-hw", no_class,
16303 &automatic_hardware_breakpoints, _("\
16304Set automatic usage of hardware breakpoints."), _("\
16305Show automatic usage of hardware breakpoints."), _("\
16306If set, the debugger will automatically use hardware breakpoints for\n\
16307breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16308a warning will be emitted for such breakpoints."),
16309 NULL,
16310 show_automatic_hardware_breakpoints,
16311 &breakpoint_set_cmdlist,
16312 &breakpoint_show_cmdlist);
74960c60 16313
a25a5a45
PA
16314 add_setshow_boolean_cmd ("always-inserted", class_support,
16315 &always_inserted_mode, _("\
74960c60
VP
16316Set mode for inserting breakpoints."), _("\
16317Show mode for inserting breakpoints."), _("\
a25a5a45
PA
16318When this mode is on, breakpoints are inserted immediately as soon as\n\
16319they're created, kept inserted even when execution stops, and removed\n\
16320only when the user deletes them. When this mode is off (the default),\n\
16321breakpoints are inserted only when execution continues, and removed\n\
16322when execution stops."),
72d0e2c5
YQ
16323 NULL,
16324 &show_always_inserted_mode,
16325 &breakpoint_set_cmdlist,
16326 &breakpoint_show_cmdlist);
f1310107 16327
b775012e
LM
16328 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16329 condition_evaluation_enums,
16330 &condition_evaluation_mode_1, _("\
16331Set mode of breakpoint condition evaluation."), _("\
16332Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 16333When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
16334evaluated on the host's side by GDB. When it is set to \"target\",\n\
16335breakpoint conditions will be downloaded to the target (if the target\n\
16336supports such feature) and conditions will be evaluated on the target's side.\n\
16337If this is set to \"auto\" (default), this will be automatically set to\n\
16338\"target\" if it supports condition evaluation, otherwise it will\n\
16339be set to \"gdb\""),
16340 &set_condition_evaluation_mode,
16341 &show_condition_evaluation_mode,
16342 &breakpoint_set_cmdlist,
16343 &breakpoint_show_cmdlist);
16344
f1310107
TJB
16345 add_com ("break-range", class_breakpoint, break_range_command, _("\
16346Set a breakpoint for an address range.\n\
16347break-range START-LOCATION, END-LOCATION\n\
16348where START-LOCATION and END-LOCATION can be one of the following:\n\
16349 LINENUM, for that line in the current file,\n\
16350 FILE:LINENUM, for that line in that file,\n\
16351 +OFFSET, for that number of lines after the current line\n\
16352 or the start of the range\n\
16353 FUNCTION, for the first line in that function,\n\
16354 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16355 *ADDRESS, for the instruction at that address.\n\
16356\n\
16357The breakpoint will stop execution of the inferior whenever it executes\n\
16358an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16359range (including START-LOCATION and END-LOCATION)."));
16360
e7e0cddf 16361 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16362Set a dynamic printf at specified location.\n\
e7e0cddf 16363dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16364location may be a linespec, explicit, or address location.\n"
16365"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16366 set_cmd_completer (c, location_completer);
16367
16368 add_setshow_enum_cmd ("dprintf-style", class_support,
16369 dprintf_style_enums, &dprintf_style, _("\
16370Set the style of usage for dynamic printf."), _("\
16371Show the style of usage for dynamic printf."), _("\
16372This setting chooses how GDB will do a dynamic printf.\n\
16373If the value is \"gdb\", then the printing is done by GDB to its own\n\
16374console, as with the \"printf\" command.\n\
16375If the value is \"call\", the print is done by calling a function in your\n\
16376program; by default printf(), but you can choose a different function or\n\
16377output stream by setting dprintf-function and dprintf-channel."),
16378 update_dprintf_commands, NULL,
16379 &setlist, &showlist);
16380
16381 dprintf_function = xstrdup ("printf");
16382 add_setshow_string_cmd ("dprintf-function", class_support,
16383 &dprintf_function, _("\
16384Set the function to use for dynamic printf"), _("\
16385Show the function to use for dynamic printf"), NULL,
16386 update_dprintf_commands, NULL,
16387 &setlist, &showlist);
16388
16389 dprintf_channel = xstrdup ("");
16390 add_setshow_string_cmd ("dprintf-channel", class_support,
16391 &dprintf_channel, _("\
16392Set the channel to use for dynamic printf"), _("\
16393Show the channel to use for dynamic printf"), NULL,
16394 update_dprintf_commands, NULL,
16395 &setlist, &showlist);
16396
d3ce09f5
SS
16397 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16398 &disconnected_dprintf, _("\
16399Set whether dprintf continues after GDB disconnects."), _("\
16400Show whether dprintf continues after GDB disconnects."), _("\
16401Use this to let dprintf commands continue to hit and produce output\n\
16402even if GDB disconnects or detaches from the target."),
16403 NULL,
16404 NULL,
16405 &setlist, &showlist);
16406
16407 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16408agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16409(target agent only) This is useful for formatted output in user-defined commands."));
16410
765dc015 16411 automatic_hardware_breakpoints = 1;
f3b1572e
PA
16412
16413 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
49fa26b0 16414 observer_attach_thread_exit (remove_threaded_breakpoints);
c906108c 16415}