[ARM] Mark USER_SPECIFIED_MACHINE_TYPE in disassemble_info.flags
[deliverable/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"
104c1213 84
e7e8980f
YQ
85/* Enums for exception-handling support. */
86enum exception_event_kind
87{
88 EX_EVENT_THROW,
591f19e8 89 EX_EVENT_RETHROW,
e7e8980f
YQ
90 EX_EVENT_CATCH
91};
92
4a64f543 93/* Prototypes for local functions. */
c906108c 94
a14ed312 95static void enable_delete_command (char *, int);
c906108c 96
a14ed312 97static void enable_once_command (char *, int);
c906108c 98
816338b5
SS
99static void enable_count_command (char *, int);
100
a14ed312 101static void disable_command (char *, int);
c906108c 102
a14ed312 103static void enable_command (char *, int);
c906108c 104
896b6bda
PA
105static void map_breakpoint_numbers (const char *,
106 void (*) (struct breakpoint *,
107 void *),
95a42b64 108 void *);
c906108c 109
a14ed312 110static void ignore_command (char *, int);
c906108c 111
4efb68b1 112static int breakpoint_re_set_one (void *);
c906108c 113
348d480f
PA
114static void breakpoint_re_set_default (struct breakpoint *);
115
f00aae0f
KS
116static void
117 create_sals_from_location_default (const struct event_location *location,
118 struct linespec_result *canonical,
119 enum bptype type_wanted);
983af33b
SDJ
120
121static void create_breakpoints_sal_default (struct gdbarch *,
122 struct linespec_result *,
e1e01040
PA
123 gdb::unique_xmalloc_ptr<char>,
124 gdb::unique_xmalloc_ptr<char>,
125 enum bptype,
983af33b
SDJ
126 enum bpdisp, int, int,
127 int,
128 const struct breakpoint_ops *,
44f238bb 129 int, int, int, unsigned);
983af33b 130
f00aae0f
KS
131static void decode_location_default (struct breakpoint *b,
132 const struct event_location *location,
c2f4122d 133 struct program_space *search_pspace,
f00aae0f 134 struct symtabs_and_lines *sals);
983af33b 135
a14ed312 136static void clear_command (char *, int);
c906108c 137
a14ed312 138static void catch_command (char *, int);
c906108c 139
a9634178 140static int can_use_hardware_watchpoint (struct value *);
c906108c 141
98deb0da 142static void break_command_1 (char *, int, int);
c906108c 143
a14ed312 144static void mention (struct breakpoint *);
c906108c 145
348d480f
PA
146static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
147 enum bptype,
c0a91b2b 148 const struct breakpoint_ops *);
3742cc8b
YQ
149static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
150 const struct symtab_and_line *);
151
4a64f543
MS
152/* This function is used in gdbtk sources and thus can not be made
153 static. */
63c252f8 154struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 155 struct symtab_and_line,
c0a91b2b
TT
156 enum bptype,
157 const struct breakpoint_ops *);
c906108c 158
06edf0c0
PA
159static struct breakpoint *
160 momentary_breakpoint_from_master (struct breakpoint *orig,
161 enum bptype type,
a1aa2221
LM
162 const struct breakpoint_ops *ops,
163 int loc_enabled);
06edf0c0 164
76897487
KB
165static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
166
a6d9a66e
UW
167static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
168 CORE_ADDR bpaddr,
88f7da05 169 enum bptype bptype);
76897487 170
6c95b8df
PA
171static void describe_other_breakpoints (struct gdbarch *,
172 struct program_space *, CORE_ADDR,
5af949e3 173 struct obj_section *, int);
c906108c 174
85d721b8
PA
175static int watchpoint_locations_match (struct bp_location *loc1,
176 struct bp_location *loc2);
177
f1310107
TJB
178static int breakpoint_location_address_match (struct bp_location *bl,
179 struct address_space *aspace,
180 CORE_ADDR addr);
181
d35ae833
PA
182static int breakpoint_location_address_range_overlap (struct bp_location *,
183 struct address_space *,
184 CORE_ADDR, int);
185
a14ed312 186static void breakpoints_info (char *, int);
c906108c 187
d77f58be
SS
188static void watchpoints_info (char *, int);
189
e5a67952
MS
190static int breakpoint_1 (char *, int,
191 int (*) (const struct breakpoint *));
c906108c 192
4efb68b1 193static int breakpoint_cond_eval (void *);
c906108c 194
4efb68b1 195static void cleanup_executing_breakpoints (void *);
c906108c 196
a14ed312 197static void commands_command (char *, int);
c906108c 198
a14ed312 199static void condition_command (char *, int);
c906108c 200
834c0d03 201static int remove_breakpoint (struct bp_location *);
b2b6a7da 202static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 203
e514a9d6 204static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 205
4efb68b1 206static int watchpoint_check (void *);
c906108c 207
a14ed312 208static void maintenance_info_breakpoints (char *, int);
c906108c 209
a14ed312 210static int hw_breakpoint_used_count (void);
c906108c 211
a1398e0c
PA
212static int hw_watchpoint_use_count (struct breakpoint *);
213
214static int hw_watchpoint_used_count_others (struct breakpoint *except,
215 enum bptype type,
216 int *other_type_used);
c906108c 217
a14ed312 218static void hbreak_command (char *, int);
c906108c 219
a14ed312 220static void thbreak_command (char *, int);
c906108c 221
816338b5
SS
222static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
223 int count);
c906108c 224
a14ed312 225static void stop_command (char *arg, int from_tty);
7a292a7a 226
a14ed312 227static void stopin_command (char *arg, int from_tty);
7a292a7a 228
a14ed312 229static void stopat_command (char *arg, int from_tty);
7a292a7a 230
a14ed312 231static void tcatch_command (char *arg, int from_tty);
7a292a7a 232
fe3f5fa8 233static void free_bp_location (struct bp_location *loc);
f431efe5
PA
234static void incref_bp_location (struct bp_location *loc);
235static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 236
39d61571 237static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 238
44702360
PA
239/* update_global_location_list's modes of operation wrt to whether to
240 insert locations now. */
241enum ugll_insert_mode
242{
243 /* Don't insert any breakpoint locations into the inferior, only
244 remove already-inserted locations that no longer should be
245 inserted. Functions that delete a breakpoint or breakpoints
246 should specify this mode, so that deleting a breakpoint doesn't
247 have the side effect of inserting the locations of other
248 breakpoints that are marked not-inserted, but should_be_inserted
249 returns true on them.
250
251 This behavior is useful is situations close to tear-down -- e.g.,
252 after an exec, while the target still has execution, but
253 breakpoint shadows of the previous executable image should *NOT*
254 be restored to the new image; or before detaching, where the
255 target still has execution and wants to delete breakpoints from
256 GDB's lists, and all breakpoints had already been removed from
257 the inferior. */
258 UGLL_DONT_INSERT,
259
a25a5a45
PA
260 /* May insert breakpoints iff breakpoints_should_be_inserted_now
261 claims breakpoints should be inserted now. */
04086b45
PA
262 UGLL_MAY_INSERT,
263
a25a5a45
PA
264 /* Insert locations now, irrespective of
265 breakpoints_should_be_inserted_now. E.g., say all threads are
266 stopped right now, and the user did "continue". We need to
267 insert breakpoints _before_ resuming the target, but
268 UGLL_MAY_INSERT wouldn't insert them, because
269 breakpoints_should_be_inserted_now returns false at that point,
270 as no thread is running yet. */
04086b45 271 UGLL_INSERT
44702360
PA
272};
273
274static void update_global_location_list (enum ugll_insert_mode);
a5606eee 275
44702360 276static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 277
d77f58be 278static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
279
280static void insert_breakpoint_locations (void);
a5606eee 281
1042e4c0
SS
282static void tracepoints_info (char *, int);
283
284static void delete_trace_command (char *, int);
285
286static void enable_trace_command (char *, int);
287
288static void disable_trace_command (char *, int);
289
290static void trace_pass_command (char *, int);
291
558a9d82
YQ
292static void set_tracepoint_count (int num);
293
9c06b0b4
TJB
294static int is_masked_watchpoint (const struct breakpoint *b);
295
b775012e
LM
296static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
297
983af33b
SDJ
298/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
299 otherwise. */
300
301static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 302
2060206e
PA
303/* The breakpoint_ops structure to be inherited by all breakpoint_ops
304 that are implemented on top of software or hardware breakpoints
305 (user breakpoints, internal and momentary breakpoints, etc.). */
306static struct breakpoint_ops bkpt_base_breakpoint_ops;
307
308/* Internal breakpoints class type. */
06edf0c0 309static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
310
311/* Momentary breakpoints class type. */
06edf0c0
PA
312static struct breakpoint_ops momentary_breakpoint_ops;
313
2060206e
PA
314/* The breakpoint_ops structure to be used in regular user created
315 breakpoints. */
316struct breakpoint_ops bkpt_breakpoint_ops;
317
55aa24fb
SDJ
318/* Breakpoints set on probes. */
319static struct breakpoint_ops bkpt_probe_breakpoint_ops;
320
e7e0cddf 321/* Dynamic printf class type. */
c5867ab6 322struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 323
d3ce09f5
SS
324/* The style in which to perform a dynamic printf. This is a user
325 option because different output options have different tradeoffs;
326 if GDB does the printing, there is better error handling if there
327 is a problem with any of the arguments, but using an inferior
328 function lets you have special-purpose printers and sending of
329 output to the same place as compiled-in print functions. */
330
331static const char dprintf_style_gdb[] = "gdb";
332static const char dprintf_style_call[] = "call";
333static const char dprintf_style_agent[] = "agent";
334static const char *const dprintf_style_enums[] = {
335 dprintf_style_gdb,
336 dprintf_style_call,
337 dprintf_style_agent,
338 NULL
339};
340static const char *dprintf_style = dprintf_style_gdb;
341
342/* The function to use for dynamic printf if the preferred style is to
343 call into the inferior. The value is simply a string that is
344 copied into the command, so it can be anything that GDB can
345 evaluate to a callable address, not necessarily a function name. */
346
bde6261a 347static char *dprintf_function;
d3ce09f5
SS
348
349/* The channel to use for dynamic printf if the preferred style is to
350 call into the inferior; if a nonempty string, it will be passed to
351 the call as the first argument, with the format string as the
352 second. As with the dprintf function, this can be anything that
353 GDB knows how to evaluate, so in addition to common choices like
354 "stderr", this could be an app-specific expression like
355 "mystreams[curlogger]". */
356
bde6261a 357static char *dprintf_channel;
d3ce09f5
SS
358
359/* True if dprintf commands should continue to operate even if GDB
360 has disconnected. */
361static int disconnected_dprintf = 1;
362
5cea2a26
PA
363/* A reference-counted struct command_line. This lets multiple
364 breakpoints share a single command list. */
365struct counted_command_line
366{
367 /* The reference count. */
368 int refc;
369
370 /* The command list. */
371 struct command_line *commands;
372};
373
374struct command_line *
375breakpoint_commands (struct breakpoint *b)
376{
377 return b->commands ? b->commands->commands : NULL;
378}
3daf8fe5 379
f3b1572e
PA
380/* Flag indicating that a command has proceeded the inferior past the
381 current breakpoint. */
382
383static int breakpoint_proceeded;
384
956a9fb9 385const char *
2cec12e5
AR
386bpdisp_text (enum bpdisp disp)
387{
4a64f543
MS
388 /* NOTE: the following values are a part of MI protocol and
389 represent values of 'disp' field returned when inferior stops at
390 a breakpoint. */
bc043ef3 391 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 392
2cec12e5
AR
393 return bpdisps[(int) disp];
394}
c906108c 395
4a64f543 396/* Prototypes for exported functions. */
c906108c 397/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 398 if such is available. */
c906108c
SS
399static int can_use_hw_watchpoints;
400
920d2a44
AC
401static void
402show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
403 struct cmd_list_element *c,
404 const char *value)
405{
3e43a32a
MS
406 fprintf_filtered (file,
407 _("Debugger's willingness to use "
408 "watchpoint hardware is %s.\n"),
920d2a44
AC
409 value);
410}
411
fa8d40ab
JJ
412/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
413 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 414 for unrecognized breakpoint locations.
fa8d40ab
JJ
415 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
416static enum auto_boolean pending_break_support;
920d2a44
AC
417static void
418show_pending_break_support (struct ui_file *file, int from_tty,
419 struct cmd_list_element *c,
420 const char *value)
421{
3e43a32a
MS
422 fprintf_filtered (file,
423 _("Debugger's behavior regarding "
424 "pending breakpoints is %s.\n"),
920d2a44
AC
425 value);
426}
fa8d40ab 427
765dc015 428/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 429 set with "break" but falling in read-only memory.
765dc015
VP
430 If 0, gdb will warn about such breakpoints, but won't automatically
431 use hardware breakpoints. */
432static int automatic_hardware_breakpoints;
433static void
434show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
435 struct cmd_list_element *c,
436 const char *value)
437{
3e43a32a
MS
438 fprintf_filtered (file,
439 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
440 value);
441}
442
a25a5a45
PA
443/* If on, GDB keeps breakpoints inserted even if the inferior is
444 stopped, and immediately inserts any new breakpoints as soon as
445 they're created. If off (default), GDB keeps breakpoints off of
446 the target as long as possible. That is, it delays inserting
447 breakpoints until the next resume, and removes them again when the
448 target fully stops. This is a bit safer in case GDB crashes while
449 processing user input. */
450static int always_inserted_mode = 0;
72d0e2c5 451
33e5cbd6 452static void
74960c60 453show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 454 struct cmd_list_element *c, const char *value)
74960c60 455{
a25a5a45
PA
456 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
457 value);
74960c60
VP
458}
459
b57bacec
PA
460/* See breakpoint.h. */
461
33e5cbd6 462int
a25a5a45 463breakpoints_should_be_inserted_now (void)
33e5cbd6 464{
a25a5a45
PA
465 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
466 {
467 /* If breakpoints are global, they should be inserted even if no
468 thread under gdb's control is running, or even if there are
469 no threads under GDB's control yet. */
470 return 1;
471 }
472 else if (target_has_execution)
473 {
372316f1
PA
474 struct thread_info *tp;
475
a25a5a45
PA
476 if (always_inserted_mode)
477 {
478 /* The user wants breakpoints inserted even if all threads
479 are stopped. */
480 return 1;
481 }
482
b57bacec
PA
483 if (threads_are_executing ())
484 return 1;
372316f1
PA
485
486 /* Don't remove breakpoints yet if, even though all threads are
487 stopped, we still have events to process. */
488 ALL_NON_EXITED_THREADS (tp)
489 if (tp->resumed
490 && tp->suspend.waitstatus_pending_p)
491 return 1;
a25a5a45
PA
492 }
493 return 0;
33e5cbd6 494}
765dc015 495
b775012e
LM
496static const char condition_evaluation_both[] = "host or target";
497
498/* Modes for breakpoint condition evaluation. */
499static const char condition_evaluation_auto[] = "auto";
500static const char condition_evaluation_host[] = "host";
501static const char condition_evaluation_target[] = "target";
502static const char *const condition_evaluation_enums[] = {
503 condition_evaluation_auto,
504 condition_evaluation_host,
505 condition_evaluation_target,
506 NULL
507};
508
509/* Global that holds the current mode for breakpoint condition evaluation. */
510static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
511
512/* Global that we use to display information to the user (gets its value from
513 condition_evaluation_mode_1. */
514static const char *condition_evaluation_mode = condition_evaluation_auto;
515
516/* Translate a condition evaluation mode MODE into either "host"
517 or "target". This is used mostly to translate from "auto" to the
518 real setting that is being used. It returns the translated
519 evaluation mode. */
520
521static const char *
522translate_condition_evaluation_mode (const char *mode)
523{
524 if (mode == condition_evaluation_auto)
525 {
526 if (target_supports_evaluation_of_breakpoint_conditions ())
527 return condition_evaluation_target;
528 else
529 return condition_evaluation_host;
530 }
531 else
532 return mode;
533}
534
535/* Discovers what condition_evaluation_auto translates to. */
536
537static const char *
538breakpoint_condition_evaluation_mode (void)
539{
540 return translate_condition_evaluation_mode (condition_evaluation_mode);
541}
542
543/* Return true if GDB should evaluate breakpoint conditions or false
544 otherwise. */
545
546static int
547gdb_evaluates_breakpoint_condition_p (void)
548{
549 const char *mode = breakpoint_condition_evaluation_mode ();
550
551 return (mode == condition_evaluation_host);
552}
553
a14ed312 554void _initialize_breakpoint (void);
c906108c 555
c906108c
SS
556/* Are we executing breakpoint commands? */
557static int executing_breakpoint_commands;
558
c02f5703
MS
559/* Are overlay event breakpoints enabled? */
560static int overlay_events_enabled;
561
e09342b5
TJB
562/* See description in breakpoint.h. */
563int target_exact_watchpoints = 0;
564
c906108c 565/* Walk the following statement or block through all breakpoints.
e5dd4106 566 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 567 current breakpoint. */
c906108c 568
5c44784c 569#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 570
5c44784c
JM
571#define ALL_BREAKPOINTS_SAFE(B,TMP) \
572 for (B = breakpoint_chain; \
573 B ? (TMP=B->next, 1): 0; \
574 B = TMP)
c906108c 575
4a64f543
MS
576/* Similar iterator for the low-level breakpoints. SAFE variant is
577 not provided so update_global_location_list must not be called
578 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 579
876fa593 580#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
581 for (BP_TMP = bp_locations; \
582 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 583 BP_TMP++)
7cc221ef 584
b775012e
LM
585/* Iterates through locations with address ADDRESS for the currently selected
586 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
587 to where the loop should start from.
588 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
589 appropriate location to start with. */
590
591#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
592 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
593 BP_LOCP_TMP = BP_LOCP_START; \
594 BP_LOCP_START \
f5336ca5 595 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
596 && (*BP_LOCP_TMP)->address == ADDRESS); \
597 BP_LOCP_TMP++)
598
1042e4c0
SS
599/* Iterator for tracepoints only. */
600
601#define ALL_TRACEPOINTS(B) \
602 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 603 if (is_tracepoint (B))
1042e4c0 604
7cc221ef 605/* Chains of all breakpoints defined. */
c906108c
SS
606
607struct breakpoint *breakpoint_chain;
608
f5336ca5 609/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
876fa593 610
f5336ca5 611static struct bp_location **bp_locations;
876fa593 612
f5336ca5 613/* Number of elements of BP_LOCATIONS. */
876fa593 614
f5336ca5 615static unsigned bp_locations_count;
876fa593 616
4a64f543 617/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 618 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 619 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 620 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 621 an address you need to read. */
876fa593 622
f5336ca5 623static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 624
4a64f543
MS
625/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
626 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
627 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
628 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 629 scan for shadow bytes for an address you need to read. */
876fa593 630
f5336ca5 631static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 632
4a64f543 633/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
634 from the bp_locations array, but for which a hit may still be
635 reported by a target. */
20874c92
VP
636VEC(bp_location_p) *moribund_locations = NULL;
637
c906108c
SS
638/* Number of last breakpoint made. */
639
95a42b64
TT
640static int breakpoint_count;
641
86b17b60
PA
642/* The value of `breakpoint_count' before the last command that
643 created breakpoints. If the last (break-like) command created more
644 than one breakpoint, then the difference between BREAKPOINT_COUNT
645 and PREV_BREAKPOINT_COUNT is more than one. */
646static int prev_breakpoint_count;
c906108c 647
1042e4c0
SS
648/* Number of last tracepoint made. */
649
95a42b64 650static int tracepoint_count;
1042e4c0 651
6149aea9
PA
652static struct cmd_list_element *breakpoint_set_cmdlist;
653static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 654struct cmd_list_element *save_cmdlist;
6149aea9 655
badd37ce
SDJ
656/* See declaration at breakpoint.h. */
657
658struct breakpoint *
659breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
660 void *user_data)
661{
662 struct breakpoint *b = NULL;
663
664 ALL_BREAKPOINTS (b)
665 {
666 if (func (b, user_data) != 0)
667 break;
668 }
669
670 return b;
671}
672
468d015d
JJ
673/* Return whether a breakpoint is an active enabled breakpoint. */
674static int
675breakpoint_enabled (struct breakpoint *b)
676{
0d381245 677 return (b->enable_state == bp_enabled);
468d015d
JJ
678}
679
c906108c
SS
680/* Set breakpoint count to NUM. */
681
95a42b64 682static void
fba45db2 683set_breakpoint_count (int num)
c906108c 684{
86b17b60 685 prev_breakpoint_count = breakpoint_count;
c906108c 686 breakpoint_count = num;
4fa62494 687 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
688}
689
86b17b60
PA
690/* Used by `start_rbreak_breakpoints' below, to record the current
691 breakpoint count before "rbreak" creates any breakpoint. */
692static int rbreak_start_breakpoint_count;
693
95a42b64
TT
694/* Called at the start an "rbreak" command to record the first
695 breakpoint made. */
86b17b60 696
95a42b64
TT
697void
698start_rbreak_breakpoints (void)
699{
86b17b60 700 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
701}
702
703/* Called at the end of an "rbreak" command to record the last
704 breakpoint made. */
86b17b60 705
95a42b64
TT
706void
707end_rbreak_breakpoints (void)
708{
86b17b60 709 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
710}
711
4a64f543 712/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
713
714void
fba45db2 715clear_breakpoint_hit_counts (void)
c906108c
SS
716{
717 struct breakpoint *b;
718
719 ALL_BREAKPOINTS (b)
720 b->hit_count = 0;
721}
722
9add0f1b
TT
723/* Allocate a new counted_command_line with reference count of 1.
724 The new structure owns COMMANDS. */
725
726static struct counted_command_line *
727alloc_counted_command_line (struct command_line *commands)
728{
8d749320 729 struct counted_command_line *result = XNEW (struct counted_command_line);
cc59ec59 730
9add0f1b
TT
731 result->refc = 1;
732 result->commands = commands;
8d749320 733
9add0f1b
TT
734 return result;
735}
736
737/* Increment reference count. This does nothing if CMD is NULL. */
738
739static void
740incref_counted_command_line (struct counted_command_line *cmd)
741{
742 if (cmd)
743 ++cmd->refc;
744}
745
746/* Decrement reference count. If the reference count reaches 0,
747 destroy the counted_command_line. Sets *CMDP to NULL. This does
748 nothing if *CMDP is NULL. */
749
750static void
751decref_counted_command_line (struct counted_command_line **cmdp)
752{
753 if (*cmdp)
754 {
755 if (--(*cmdp)->refc == 0)
756 {
757 free_command_lines (&(*cmdp)->commands);
758 xfree (*cmdp);
759 }
760 *cmdp = NULL;
761 }
762}
763
764/* A cleanup function that calls decref_counted_command_line. */
765
766static void
767do_cleanup_counted_command_line (void *arg)
768{
9a3c8263 769 decref_counted_command_line ((struct counted_command_line **) arg);
9add0f1b
TT
770}
771
772/* Create a cleanup that calls decref_counted_command_line on the
773 argument. */
774
775static struct cleanup *
776make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
777{
778 return make_cleanup (do_cleanup_counted_command_line, cmdp);
779}
780
c906108c 781\f
48cb2d85
VP
782/* Return the breakpoint with the specified number, or NULL
783 if the number does not refer to an existing breakpoint. */
784
785struct breakpoint *
786get_breakpoint (int num)
787{
788 struct breakpoint *b;
789
790 ALL_BREAKPOINTS (b)
791 if (b->number == num)
792 return b;
793
794 return NULL;
795}
5c44784c 796
c906108c 797\f
adc36818 798
b775012e
LM
799/* Mark locations as "conditions have changed" in case the target supports
800 evaluating conditions on its side. */
801
802static void
803mark_breakpoint_modified (struct breakpoint *b)
804{
805 struct bp_location *loc;
806
807 /* This is only meaningful if the target is
808 evaluating conditions and if the user has
809 opted for condition evaluation on the target's
810 side. */
811 if (gdb_evaluates_breakpoint_condition_p ()
812 || !target_supports_evaluation_of_breakpoint_conditions ())
813 return;
814
815 if (!is_breakpoint (b))
816 return;
817
818 for (loc = b->loc; loc; loc = loc->next)
819 loc->condition_changed = condition_modified;
820}
821
822/* Mark location as "conditions have changed" in case the target supports
823 evaluating conditions on its side. */
824
825static void
826mark_breakpoint_location_modified (struct bp_location *loc)
827{
828 /* This is only meaningful if the target is
829 evaluating conditions and if the user has
830 opted for condition evaluation on the target's
831 side. */
832 if (gdb_evaluates_breakpoint_condition_p ()
833 || !target_supports_evaluation_of_breakpoint_conditions ())
834
835 return;
836
837 if (!is_breakpoint (loc->owner))
838 return;
839
840 loc->condition_changed = condition_modified;
841}
842
843/* Sets the condition-evaluation mode using the static global
844 condition_evaluation_mode. */
845
846static void
847set_condition_evaluation_mode (char *args, int from_tty,
848 struct cmd_list_element *c)
849{
b775012e
LM
850 const char *old_mode, *new_mode;
851
852 if ((condition_evaluation_mode_1 == condition_evaluation_target)
853 && !target_supports_evaluation_of_breakpoint_conditions ())
854 {
855 condition_evaluation_mode_1 = condition_evaluation_mode;
856 warning (_("Target does not support breakpoint condition evaluation.\n"
857 "Using host evaluation mode instead."));
858 return;
859 }
860
861 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
862 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
863
abf1152a
JK
864 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
865 settings was "auto". */
866 condition_evaluation_mode = condition_evaluation_mode_1;
867
b775012e
LM
868 /* Only update the mode if the user picked a different one. */
869 if (new_mode != old_mode)
870 {
871 struct bp_location *loc, **loc_tmp;
872 /* If the user switched to a different evaluation mode, we
873 need to synch the changes with the target as follows:
874
875 "host" -> "target": Send all (valid) conditions to the target.
876 "target" -> "host": Remove all the conditions from the target.
877 */
878
b775012e
LM
879 if (new_mode == condition_evaluation_target)
880 {
881 /* Mark everything modified and synch conditions with the
882 target. */
883 ALL_BP_LOCATIONS (loc, loc_tmp)
884 mark_breakpoint_location_modified (loc);
885 }
886 else
887 {
888 /* Manually mark non-duplicate locations to synch conditions
889 with the target. We do this to remove all the conditions the
890 target knows about. */
891 ALL_BP_LOCATIONS (loc, loc_tmp)
892 if (is_breakpoint (loc->owner) && loc->inserted)
893 loc->needs_update = 1;
894 }
895
896 /* Do the update. */
44702360 897 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
898 }
899
900 return;
901}
902
903/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
904 what "auto" is translating to. */
905
906static void
907show_condition_evaluation_mode (struct ui_file *file, int from_tty,
908 struct cmd_list_element *c, const char *value)
909{
910 if (condition_evaluation_mode == condition_evaluation_auto)
911 fprintf_filtered (file,
912 _("Breakpoint condition evaluation "
913 "mode is %s (currently %s).\n"),
914 value,
915 breakpoint_condition_evaluation_mode ());
916 else
917 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
918 value);
919}
920
921/* A comparison function for bp_location AP and BP that is used by
922 bsearch. This comparison function only cares about addresses, unlike
f5336ca5 923 the more general bp_locations_compare function. */
b775012e
LM
924
925static int
f5336ca5 926bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 927{
9a3c8263
SM
928 const struct bp_location *a = *(const struct bp_location **) ap;
929 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
930
931 if (a->address == b->address)
932 return 0;
933 else
934 return ((a->address > b->address) - (a->address < b->address));
935}
936
937/* Helper function to skip all bp_locations with addresses
938 less than ADDRESS. It returns the first bp_location that
939 is greater than or equal to ADDRESS. If none is found, just
940 return NULL. */
941
942static struct bp_location **
943get_first_locp_gte_addr (CORE_ADDR address)
944{
945 struct bp_location dummy_loc;
946 struct bp_location *dummy_locp = &dummy_loc;
947 struct bp_location **locp_found = NULL;
948
949 /* Initialize the dummy location's address field. */
b775012e
LM
950 dummy_loc.address = address;
951
952 /* Find a close match to the first location at ADDRESS. */
9a3c8263 953 locp_found = ((struct bp_location **)
f5336ca5 954 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 955 sizeof (struct bp_location **),
f5336ca5 956 bp_locations_compare_addrs));
b775012e
LM
957
958 /* Nothing was found, nothing left to do. */
959 if (locp_found == NULL)
960 return NULL;
961
962 /* We may have found a location that is at ADDRESS but is not the first in the
963 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 964 while ((locp_found - 1) >= bp_locations
b775012e
LM
965 && (*(locp_found - 1))->address == address)
966 locp_found--;
967
968 return locp_found;
969}
970
adc36818 971void
7a26bd4d 972set_breakpoint_condition (struct breakpoint *b, const char *exp,
adc36818
PM
973 int from_tty)
974{
3a5c3e22
PA
975 xfree (b->cond_string);
976 b->cond_string = NULL;
adc36818 977
3a5c3e22 978 if (is_watchpoint (b))
adc36818 979 {
3a5c3e22
PA
980 struct watchpoint *w = (struct watchpoint *) b;
981
4d01a485 982 w->cond_exp.reset ();
3a5c3e22
PA
983 }
984 else
985 {
986 struct bp_location *loc;
987
988 for (loc = b->loc; loc; loc = loc->next)
989 {
4d01a485 990 loc->cond.reset ();
b775012e
LM
991
992 /* No need to free the condition agent expression
993 bytecode (if we have one). We will handle this
994 when we go through update_global_location_list. */
3a5c3e22 995 }
adc36818 996 }
adc36818
PM
997
998 if (*exp == 0)
999 {
1000 if (from_tty)
1001 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1002 }
1003 else
1004 {
bbc13ae3 1005 const char *arg = exp;
cc59ec59 1006
adc36818
PM
1007 /* I don't know if it matters whether this is the string the user
1008 typed in or the decompiled expression. */
1009 b->cond_string = xstrdup (arg);
1010 b->condition_not_parsed = 0;
1011
1012 if (is_watchpoint (b))
1013 {
3a5c3e22
PA
1014 struct watchpoint *w = (struct watchpoint *) b;
1015
adc36818
PM
1016 innermost_block = NULL;
1017 arg = exp;
1bb9788d 1018 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
adc36818
PM
1019 if (*arg)
1020 error (_("Junk at end of expression"));
3a5c3e22 1021 w->cond_exp_valid_block = innermost_block;
adc36818
PM
1022 }
1023 else
1024 {
3a5c3e22
PA
1025 struct bp_location *loc;
1026
adc36818
PM
1027 for (loc = b->loc; loc; loc = loc->next)
1028 {
1029 arg = exp;
1030 loc->cond =
1bb9788d
TT
1031 parse_exp_1 (&arg, loc->address,
1032 block_for_pc (loc->address), 0);
adc36818
PM
1033 if (*arg)
1034 error (_("Junk at end of expression"));
1035 }
1036 }
1037 }
b775012e
LM
1038 mark_breakpoint_modified (b);
1039
8d3788bd 1040 observer_notify_breakpoint_modified (b);
adc36818
PM
1041}
1042
d55637df
TT
1043/* Completion for the "condition" command. */
1044
eb3ff9a5 1045static void
6f937416 1046condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 1047 completion_tracker &tracker,
6f937416 1048 const char *text, const char *word)
d55637df 1049{
6f937416 1050 const char *space;
d55637df 1051
6f937416
PA
1052 text = skip_spaces_const (text);
1053 space = skip_to_space_const (text);
d55637df
TT
1054 if (*space == '\0')
1055 {
1056 int len;
1057 struct breakpoint *b;
1058 VEC (char_ptr) *result = NULL;
1059
1060 if (text[0] == '$')
1061 {
1062 /* We don't support completion of history indices. */
eb3ff9a5
PA
1063 if (!isdigit (text[1]))
1064 complete_internalvar (tracker, &text[1]);
1065 return;
d55637df
TT
1066 }
1067
1068 /* We're completing the breakpoint number. */
1069 len = strlen (text);
1070
1071 ALL_BREAKPOINTS (b)
58ce7251
SDJ
1072 {
1073 char number[50];
1074
1075 xsnprintf (number, sizeof (number), "%d", b->number);
1076
1077 if (strncmp (number, text, len) == 0)
eb3ff9a5
PA
1078 {
1079 gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
1080 tracker.add_completion (std::move (copy));
1081 }
58ce7251 1082 }
d55637df 1083
eb3ff9a5 1084 return;
d55637df
TT
1085 }
1086
1087 /* We're completing the expression part. */
6f937416 1088 text = skip_spaces_const (space);
eb3ff9a5 1089 expression_completer (cmd, tracker, text, word);
d55637df
TT
1090}
1091
c906108c
SS
1092/* condition N EXP -- set break condition of breakpoint N to EXP. */
1093
1094static void
fba45db2 1095condition_command (char *arg, int from_tty)
c906108c 1096{
52f0bd74 1097 struct breakpoint *b;
c906108c 1098 char *p;
52f0bd74 1099 int bnum;
c906108c
SS
1100
1101 if (arg == 0)
e2e0b3e5 1102 error_no_arg (_("breakpoint number"));
c906108c
SS
1103
1104 p = arg;
1105 bnum = get_number (&p);
5c44784c 1106 if (bnum == 0)
8a3fe4f8 1107 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
1108
1109 ALL_BREAKPOINTS (b)
1110 if (b->number == bnum)
2f069f6f 1111 {
6dddc817
DE
1112 /* Check if this breakpoint has a "stop" method implemented in an
1113 extension language. This method and conditions entered into GDB
1114 from the CLI are mutually exclusive. */
1115 const struct extension_language_defn *extlang
1116 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1117
1118 if (extlang != NULL)
1119 {
1120 error (_("Only one stop condition allowed. There is currently"
1121 " a %s stop condition defined for this breakpoint."),
1122 ext_lang_capitalized_name (extlang));
1123 }
2566ad2d 1124 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
1125
1126 if (is_breakpoint (b))
44702360 1127 update_global_location_list (UGLL_MAY_INSERT);
b775012e 1128
2f069f6f
JB
1129 return;
1130 }
c906108c 1131
8a3fe4f8 1132 error (_("No breakpoint number %d."), bnum);
c906108c
SS
1133}
1134
a7bdde9e
VP
1135/* Check that COMMAND do not contain commands that are suitable
1136 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1137 Throw if any such commands is found. */
1138
a7bdde9e
VP
1139static void
1140check_no_tracepoint_commands (struct command_line *commands)
1141{
1142 struct command_line *c;
cc59ec59 1143
a7bdde9e
VP
1144 for (c = commands; c; c = c->next)
1145 {
1146 int i;
1147
1148 if (c->control_type == while_stepping_control)
3e43a32a
MS
1149 error (_("The 'while-stepping' command can "
1150 "only be used for tracepoints"));
a7bdde9e
VP
1151
1152 for (i = 0; i < c->body_count; ++i)
1153 check_no_tracepoint_commands ((c->body_list)[i]);
1154
1155 /* Not that command parsing removes leading whitespace and comment
4a64f543 1156 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1157 command directly. */
1158 if (strstr (c->line, "collect ") == c->line)
1159 error (_("The 'collect' command can only be used for tracepoints"));
1160
51661e93
VP
1161 if (strstr (c->line, "teval ") == c->line)
1162 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1163 }
1164}
1165
c1fc2657 1166struct longjmp_breakpoint : public breakpoint
3b0871f4 1167{
c1fc2657 1168 ~longjmp_breakpoint () override;
3b0871f4
SM
1169};
1170
d77f58be
SS
1171/* Encapsulate tests for different types of tracepoints. */
1172
3b0871f4
SM
1173static bool
1174is_tracepoint_type (bptype type)
d9b3f62e
PA
1175{
1176 return (type == bp_tracepoint
1177 || type == bp_fast_tracepoint
1178 || type == bp_static_tracepoint);
1179}
1180
3b0871f4
SM
1181static bool
1182is_longjmp_type (bptype type)
1183{
1184 return type == bp_longjmp || type == bp_exception;
1185}
1186
a7bdde9e 1187int
d77f58be 1188is_tracepoint (const struct breakpoint *b)
a7bdde9e 1189{
d9b3f62e 1190 return is_tracepoint_type (b->type);
a7bdde9e 1191}
d9b3f62e 1192
a5e364af
SM
1193/* Factory function to create an appropriate instance of breakpoint given
1194 TYPE. */
1195
1196static std::unique_ptr<breakpoint>
1197new_breakpoint_from_type (bptype type)
1198{
1199 breakpoint *b;
1200
1201 if (is_tracepoint_type (type))
c1fc2657 1202 b = new tracepoint ();
3b0871f4 1203 else if (is_longjmp_type (type))
c1fc2657 1204 b = new longjmp_breakpoint ();
a5e364af
SM
1205 else
1206 b = new breakpoint ();
1207
1208 return std::unique_ptr<breakpoint> (b);
1209}
1210
e5dd4106 1211/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1212 breakpoint. This function will throw an exception if a problem is
1213 found. */
48cb2d85 1214
95a42b64
TT
1215static void
1216validate_commands_for_breakpoint (struct breakpoint *b,
1217 struct command_line *commands)
48cb2d85 1218{
d77f58be 1219 if (is_tracepoint (b))
a7bdde9e 1220 {
c9a6ce02 1221 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1222 struct command_line *c;
1223 struct command_line *while_stepping = 0;
c9a6ce02
PA
1224
1225 /* Reset the while-stepping step count. The previous commands
1226 might have included a while-stepping action, while the new
1227 ones might not. */
1228 t->step_count = 0;
1229
1230 /* We need to verify that each top-level element of commands is
1231 valid for tracepoints, that there's at most one
1232 while-stepping element, and that the while-stepping's body
1233 has valid tracing commands excluding nested while-stepping.
1234 We also need to validate the tracepoint action line in the
1235 context of the tracepoint --- validate_actionline actually
1236 has side effects, like setting the tracepoint's
1237 while-stepping STEP_COUNT, in addition to checking if the
1238 collect/teval actions parse and make sense in the
1239 tracepoint's context. */
a7bdde9e
VP
1240 for (c = commands; c; c = c->next)
1241 {
a7bdde9e
VP
1242 if (c->control_type == while_stepping_control)
1243 {
1244 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1245 error (_("The 'while-stepping' command "
1246 "cannot be used for fast tracepoint"));
0fb4aa4b 1247 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1248 error (_("The 'while-stepping' command "
1249 "cannot be used for static tracepoint"));
a7bdde9e
VP
1250
1251 if (while_stepping)
3e43a32a
MS
1252 error (_("The 'while-stepping' command "
1253 "can be used only once"));
a7bdde9e
VP
1254 else
1255 while_stepping = c;
1256 }
c9a6ce02
PA
1257
1258 validate_actionline (c->line, b);
a7bdde9e
VP
1259 }
1260 if (while_stepping)
1261 {
1262 struct command_line *c2;
1263
1264 gdb_assert (while_stepping->body_count == 1);
1265 c2 = while_stepping->body_list[0];
1266 for (; c2; c2 = c2->next)
1267 {
a7bdde9e
VP
1268 if (c2->control_type == while_stepping_control)
1269 error (_("The 'while-stepping' command cannot be nested"));
1270 }
1271 }
1272 }
1273 else
1274 {
1275 check_no_tracepoint_commands (commands);
1276 }
95a42b64
TT
1277}
1278
0fb4aa4b
PA
1279/* Return a vector of all the static tracepoints set at ADDR. The
1280 caller is responsible for releasing the vector. */
1281
1282VEC(breakpoint_p) *
1283static_tracepoints_here (CORE_ADDR addr)
1284{
1285 struct breakpoint *b;
1286 VEC(breakpoint_p) *found = 0;
1287 struct bp_location *loc;
1288
1289 ALL_BREAKPOINTS (b)
1290 if (b->type == bp_static_tracepoint)
1291 {
1292 for (loc = b->loc; loc; loc = loc->next)
1293 if (loc->address == addr)
1294 VEC_safe_push(breakpoint_p, found, b);
1295 }
1296
1297 return found;
1298}
1299
95a42b64 1300/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1301 validate that only allowed commands are included. */
95a42b64
TT
1302
1303void
4a64f543 1304breakpoint_set_commands (struct breakpoint *b,
93921405 1305 command_line_up &&commands)
95a42b64 1306{
93921405 1307 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1308
9add0f1b 1309 decref_counted_command_line (&b->commands);
93921405 1310 b->commands = alloc_counted_command_line (commands.release ());
8d3788bd 1311 observer_notify_breakpoint_modified (b);
48cb2d85
VP
1312}
1313
45a43567
TT
1314/* Set the internal `silent' flag on the breakpoint. Note that this
1315 is not the same as the "silent" that may appear in the breakpoint's
1316 commands. */
1317
1318void
1319breakpoint_set_silent (struct breakpoint *b, int silent)
1320{
1321 int old_silent = b->silent;
1322
1323 b->silent = silent;
1324 if (old_silent != silent)
8d3788bd 1325 observer_notify_breakpoint_modified (b);
45a43567
TT
1326}
1327
1328/* Set the thread for this breakpoint. If THREAD is -1, make the
1329 breakpoint work for any thread. */
1330
1331void
1332breakpoint_set_thread (struct breakpoint *b, int thread)
1333{
1334 int old_thread = b->thread;
1335
1336 b->thread = thread;
1337 if (old_thread != thread)
8d3788bd 1338 observer_notify_breakpoint_modified (b);
45a43567
TT
1339}
1340
1341/* Set the task for this breakpoint. If TASK is 0, make the
1342 breakpoint work for any task. */
1343
1344void
1345breakpoint_set_task (struct breakpoint *b, int task)
1346{
1347 int old_task = b->task;
1348
1349 b->task = task;
1350 if (old_task != task)
8d3788bd 1351 observer_notify_breakpoint_modified (b);
45a43567
TT
1352}
1353
95a42b64
TT
1354void
1355check_tracepoint_command (char *line, void *closure)
a7bdde9e 1356{
9a3c8263 1357 struct breakpoint *b = (struct breakpoint *) closure;
cc59ec59 1358
6f937416 1359 validate_actionline (line, b);
a7bdde9e
VP
1360}
1361
95a42b64
TT
1362/* A structure used to pass information through
1363 map_breakpoint_numbers. */
1364
1365struct commands_info
1366{
1367 /* True if the command was typed at a tty. */
1368 int from_tty;
86b17b60
PA
1369
1370 /* The breakpoint range spec. */
896b6bda 1371 const char *arg;
86b17b60 1372
95a42b64
TT
1373 /* Non-NULL if the body of the commands are being read from this
1374 already-parsed command. */
1375 struct command_line *control;
86b17b60 1376
95a42b64
TT
1377 /* The command lines read from the user, or NULL if they have not
1378 yet been read. */
1379 struct counted_command_line *cmd;
1380};
1381
1382/* A callback for map_breakpoint_numbers that sets the commands for
1383 commands_command. */
1384
c906108c 1385static void
95a42b64 1386do_map_commands_command (struct breakpoint *b, void *data)
c906108c 1387{
9a3c8263 1388 struct commands_info *info = (struct commands_info *) data;
c906108c 1389
95a42b64
TT
1390 if (info->cmd == NULL)
1391 {
93921405 1392 command_line_up l;
5c44784c 1393
95a42b64
TT
1394 if (info->control != NULL)
1395 l = copy_command_lines (info->control->body_list[0]);
1396 else
86b17b60
PA
1397 {
1398 struct cleanup *old_chain;
1399 char *str;
c5aa993b 1400
3e43a32a
MS
1401 str = xstrprintf (_("Type commands for breakpoint(s) "
1402 "%s, one per line."),
86b17b60
PA
1403 info->arg);
1404
1405 old_chain = make_cleanup (xfree, str);
1406
1407 l = read_command_lines (str,
1408 info->from_tty, 1,
d77f58be 1409 (is_tracepoint (b)
86b17b60
PA
1410 ? check_tracepoint_command : 0),
1411 b);
1412
1413 do_cleanups (old_chain);
1414 }
a7bdde9e 1415
93921405 1416 info->cmd = alloc_counted_command_line (l.release ());
95a42b64
TT
1417 }
1418
1419 /* If a breakpoint was on the list more than once, we don't need to
1420 do anything. */
1421 if (b->commands != info->cmd)
1422 {
1423 validate_commands_for_breakpoint (b, info->cmd->commands);
1424 incref_counted_command_line (info->cmd);
1425 decref_counted_command_line (&b->commands);
1426 b->commands = info->cmd;
8d3788bd 1427 observer_notify_breakpoint_modified (b);
c5aa993b 1428 }
95a42b64
TT
1429}
1430
1431static void
896b6bda 1432commands_command_1 (const char *arg, int from_tty,
4a64f543 1433 struct command_line *control)
95a42b64
TT
1434{
1435 struct cleanup *cleanups;
1436 struct commands_info info;
1437
1438 info.from_tty = from_tty;
1439 info.control = control;
1440 info.cmd = NULL;
1441 /* If we read command lines from the user, then `info' will hold an
1442 extra reference to the commands that we must clean up. */
1443 cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1444
896b6bda
PA
1445 std::string new_arg;
1446
95a42b64
TT
1447 if (arg == NULL || !*arg)
1448 {
86b17b60 1449 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1450 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1451 breakpoint_count);
95a42b64 1452 else if (breakpoint_count > 0)
896b6bda 1453 new_arg = string_printf ("%d", breakpoint_count);
95a42b64 1454 }
9766ced4 1455 else
896b6bda 1456 new_arg = arg;
86b17b60 1457
896b6bda 1458 info.arg = new_arg.c_str ();
95a42b64 1459
896b6bda 1460 map_breakpoint_numbers (info.arg, do_map_commands_command, &info);
95a42b64
TT
1461
1462 if (info.cmd == NULL)
1463 error (_("No breakpoints specified."));
1464
1465 do_cleanups (cleanups);
1466}
1467
1468static void
1469commands_command (char *arg, int from_tty)
1470{
1471 commands_command_1 (arg, from_tty, NULL);
c906108c 1472}
40c03ae8
EZ
1473
1474/* Like commands_command, but instead of reading the commands from
1475 input stream, takes them from an already parsed command structure.
1476
1477 This is used by cli-script.c to DTRT with breakpoint commands
1478 that are part of if and while bodies. */
1479enum command_control_type
896b6bda 1480commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1481{
95a42b64
TT
1482 commands_command_1 (arg, 0, cmd);
1483 return simple_control;
40c03ae8 1484}
876fa593
JK
1485
1486/* Return non-zero if BL->TARGET_INFO contains valid information. */
1487
1488static int
1489bp_location_has_shadow (struct bp_location *bl)
1490{
1491 if (bl->loc_type != bp_loc_software_breakpoint)
1492 return 0;
1493 if (!bl->inserted)
1494 return 0;
1495 if (bl->target_info.shadow_len == 0)
e5dd4106 1496 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1497 return 0;
1498 return 1;
1499}
1500
9d497a19
PA
1501/* Update BUF, which is LEN bytes read from the target address
1502 MEMADDR, by replacing a memory breakpoint with its shadowed
1503 contents.
1504
1505 If READBUF is not NULL, this buffer must not overlap with the of
1506 the breakpoint location's shadow_contents buffer. Otherwise, a
1507 failed assertion internal error will be raised. */
1508
1509static void
1510one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1511 const gdb_byte *writebuf_org,
1512 ULONGEST memaddr, LONGEST len,
1513 struct bp_target_info *target_info,
1514 struct gdbarch *gdbarch)
1515{
1516 /* Now do full processing of the found relevant range of elements. */
1517 CORE_ADDR bp_addr = 0;
1518 int bp_size = 0;
1519 int bptoffset = 0;
1520
1521 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1522 current_program_space->aspace, 0))
1523 {
1524 /* The breakpoint is inserted in a different address space. */
1525 return;
1526 }
1527
1528 /* Addresses and length of the part of the breakpoint that
1529 we need to copy. */
1530 bp_addr = target_info->placed_address;
1531 bp_size = target_info->shadow_len;
1532
1533 if (bp_addr + bp_size <= memaddr)
1534 {
1535 /* The breakpoint is entirely before the chunk of memory we are
1536 reading. */
1537 return;
1538 }
1539
1540 if (bp_addr >= memaddr + len)
1541 {
1542 /* The breakpoint is entirely after the chunk of memory we are
1543 reading. */
1544 return;
1545 }
1546
1547 /* Offset within shadow_contents. */
1548 if (bp_addr < memaddr)
1549 {
1550 /* Only copy the second part of the breakpoint. */
1551 bp_size -= memaddr - bp_addr;
1552 bptoffset = memaddr - bp_addr;
1553 bp_addr = memaddr;
1554 }
1555
1556 if (bp_addr + bp_size > memaddr + len)
1557 {
1558 /* Only copy the first part of the breakpoint. */
1559 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1560 }
1561
1562 if (readbuf != NULL)
1563 {
1564 /* Verify that the readbuf buffer does not overlap with the
1565 shadow_contents buffer. */
1566 gdb_assert (target_info->shadow_contents >= readbuf + len
1567 || readbuf >= (target_info->shadow_contents
1568 + target_info->shadow_len));
1569
1570 /* Update the read buffer with this inserted breakpoint's
1571 shadow. */
1572 memcpy (readbuf + bp_addr - memaddr,
1573 target_info->shadow_contents + bptoffset, bp_size);
1574 }
1575 else
1576 {
1577 const unsigned char *bp;
0d5ed153
MR
1578 CORE_ADDR addr = target_info->reqstd_address;
1579 int placed_size;
9d497a19
PA
1580
1581 /* Update the shadow with what we want to write to memory. */
1582 memcpy (target_info->shadow_contents + bptoffset,
1583 writebuf_org + bp_addr - memaddr, bp_size);
1584
1585 /* Determine appropriate breakpoint contents and size for this
1586 address. */
0d5ed153 1587 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1588
1589 /* Update the final write buffer with this inserted
1590 breakpoint's INSN. */
1591 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1592 }
1593}
1594
8defab1a 1595/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1596 by replacing any memory breakpoints with their shadowed contents.
1597
35c63cd8
JB
1598 If READBUF is not NULL, this buffer must not overlap with any of
1599 the breakpoint location's shadow_contents buffers. Otherwise,
1600 a failed assertion internal error will be raised.
1601
876fa593 1602 The range of shadowed area by each bp_location is:
f5336ca5
PA
1603 bl->address - bp_locations_placed_address_before_address_max
1604 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1605 The range we were requested to resolve shadows for is:
1606 memaddr ... memaddr + len
1607 Thus the safe cutoff boundaries for performance optimization are
35df4500 1608 memaddr + len <= (bl->address
f5336ca5 1609 - bp_locations_placed_address_before_address_max)
876fa593 1610 and:
f5336ca5 1611 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1612
8defab1a 1613void
f0ba3972
PA
1614breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1615 const gdb_byte *writebuf_org,
1616 ULONGEST memaddr, LONGEST len)
c906108c 1617{
4a64f543
MS
1618 /* Left boundary, right boundary and median element of our binary
1619 search. */
876fa593
JK
1620 unsigned bc_l, bc_r, bc;
1621
4a64f543
MS
1622 /* Find BC_L which is a leftmost element which may affect BUF
1623 content. It is safe to report lower value but a failure to
1624 report higher one. */
876fa593
JK
1625
1626 bc_l = 0;
f5336ca5 1627 bc_r = bp_locations_count;
876fa593
JK
1628 while (bc_l + 1 < bc_r)
1629 {
35df4500 1630 struct bp_location *bl;
876fa593
JK
1631
1632 bc = (bc_l + bc_r) / 2;
f5336ca5 1633 bl = bp_locations[bc];
876fa593 1634
4a64f543
MS
1635 /* Check first BL->ADDRESS will not overflow due to the added
1636 constant. Then advance the left boundary only if we are sure
1637 the BC element can in no way affect the BUF content (MEMADDR
1638 to MEMADDR + LEN range).
876fa593 1639
f5336ca5 1640 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1641 offset so that we cannot miss a breakpoint with its shadow
1642 range tail still reaching MEMADDR. */
c5aa993b 1643
f5336ca5 1644 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1645 >= bl->address)
f5336ca5 1646 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1647 <= memaddr))
876fa593
JK
1648 bc_l = bc;
1649 else
1650 bc_r = bc;
1651 }
1652
128070bb
PA
1653 /* Due to the binary search above, we need to make sure we pick the
1654 first location that's at BC_L's address. E.g., if there are
1655 multiple locations at the same address, BC_L may end up pointing
1656 at a duplicate location, and miss the "master"/"inserted"
1657 location. Say, given locations L1, L2 and L3 at addresses A and
1658 B:
1659
1660 L1@A, L2@A, L3@B, ...
1661
1662 BC_L could end up pointing at location L2, while the "master"
1663 location could be L1. Since the `loc->inserted' flag is only set
1664 on "master" locations, we'd forget to restore the shadow of L1
1665 and L2. */
1666 while (bc_l > 0
f5336ca5 1667 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1668 bc_l--;
1669
876fa593
JK
1670 /* Now do full processing of the found relevant range of elements. */
1671
f5336ca5 1672 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1673 {
f5336ca5 1674 struct bp_location *bl = bp_locations[bc];
876fa593 1675
35df4500
TJB
1676 /* bp_location array has BL->OWNER always non-NULL. */
1677 if (bl->owner->type == bp_none)
8a3fe4f8 1678 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1679 bl->owner->number);
ffce0d52 1680
e5dd4106 1681 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1682 content. */
1683
f5336ca5
PA
1684 if (bl->address >= bp_locations_placed_address_before_address_max
1685 && memaddr + len <= (bl->address
1686 - bp_locations_placed_address_before_address_max))
876fa593
JK
1687 break;
1688
35df4500 1689 if (!bp_location_has_shadow (bl))
c5aa993b 1690 continue;
6c95b8df 1691
9d497a19
PA
1692 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1693 memaddr, len, &bl->target_info, bl->gdbarch);
1694 }
c906108c 1695}
9d497a19 1696
c906108c 1697\f
c5aa993b 1698
b775012e
LM
1699/* Return true if BPT is either a software breakpoint or a hardware
1700 breakpoint. */
1701
1702int
1703is_breakpoint (const struct breakpoint *bpt)
1704{
1705 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1706 || bpt->type == bp_hardware_breakpoint
1707 || bpt->type == bp_dprintf);
b775012e
LM
1708}
1709
60e1c644
PA
1710/* Return true if BPT is of any hardware watchpoint kind. */
1711
a5606eee 1712static int
d77f58be 1713is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1714{
1715 return (bpt->type == bp_hardware_watchpoint
1716 || bpt->type == bp_read_watchpoint
1717 || bpt->type == bp_access_watchpoint);
1718}
7270d8f2 1719
60e1c644
PA
1720/* Return true if BPT is of any watchpoint kind, hardware or
1721 software. */
1722
3a5c3e22 1723int
d77f58be 1724is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1725{
1726 return (is_hardware_watchpoint (bpt)
1727 || bpt->type == bp_watchpoint);
1728}
1729
3a5c3e22
PA
1730/* Returns true if the current thread and its running state are safe
1731 to evaluate or update watchpoint B. Watchpoints on local
1732 expressions need to be evaluated in the context of the thread that
1733 was current when the watchpoint was created, and, that thread needs
1734 to be stopped to be able to select the correct frame context.
1735 Watchpoints on global expressions can be evaluated on any thread,
1736 and in any state. It is presently left to the target allowing
1737 memory accesses when threads are running. */
f6bc2008
PA
1738
1739static int
3a5c3e22 1740watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1741{
c1fc2657 1742 return (b->pspace == current_program_space
d0d8b0c6
JK
1743 && (ptid_equal (b->watchpoint_thread, null_ptid)
1744 || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1745 && !is_executing (inferior_ptid))));
f6bc2008
PA
1746}
1747
d0fb5eae
JK
1748/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1749 associated bp_watchpoint_scope breakpoint. */
1750
1751static void
3a5c3e22 1752watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1753{
c1fc2657 1754 if (w->related_breakpoint != w)
d0fb5eae 1755 {
c1fc2657
SM
1756 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1757 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1758 w->related_breakpoint->disposition = disp_del_at_next_stop;
1759 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1760 w->related_breakpoint = w;
d0fb5eae 1761 }
c1fc2657 1762 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1763}
1764
bb9d5f81
PP
1765/* Extract a bitfield value from value VAL using the bit parameters contained in
1766 watchpoint W. */
1767
1768static struct value *
1769extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1770{
1771 struct value *bit_val;
1772
1773 if (val == NULL)
1774 return NULL;
1775
1776 bit_val = allocate_value (value_type (val));
1777
1778 unpack_value_bitfield (bit_val,
1779 w->val_bitpos,
1780 w->val_bitsize,
1781 value_contents_for_printing (val),
1782 value_offset (val),
1783 val);
1784
1785 return bit_val;
1786}
1787
c6d81124
PA
1788/* Allocate a dummy location and add it to B, which must be a software
1789 watchpoint. This is required because even if a software watchpoint
1790 is not watching any memory, bpstat_stop_status requires a location
1791 to be able to report stops. */
1792
1793static void
1794software_watchpoint_add_no_memory_location (struct breakpoint *b,
1795 struct program_space *pspace)
1796{
1797 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1798
1799 b->loc = allocate_bp_location (b);
1800 b->loc->pspace = pspace;
1801 b->loc->address = -1;
1802 b->loc->length = -1;
1803}
1804
1805/* Returns true if B is a software watchpoint that is not watching any
1806 memory (e.g., "watch $pc"). */
1807
1808static int
1809is_no_memory_software_watchpoint (struct breakpoint *b)
1810{
1811 return (b->type == bp_watchpoint
1812 && b->loc != NULL
1813 && b->loc->next == NULL
1814 && b->loc->address == -1
1815 && b->loc->length == -1);
1816}
1817
567e1b4e
JB
1818/* Assuming that B is a watchpoint:
1819 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1820 - Evaluate expression and store the result in B->val
567e1b4e
JB
1821 - Evaluate the condition if there is one, and store the result
1822 in b->loc->cond.
a5606eee
VP
1823 - Update the list of values that must be watched in B->loc.
1824
4a64f543
MS
1825 If the watchpoint disposition is disp_del_at_next_stop, then do
1826 nothing. If this is local watchpoint that is out of scope, delete
1827 it.
1828
1829 Even with `set breakpoint always-inserted on' the watchpoints are
1830 removed + inserted on each stop here. Normal breakpoints must
1831 never be removed because they might be missed by a running thread
1832 when debugging in non-stop mode. On the other hand, hardware
1833 watchpoints (is_hardware_watchpoint; processed here) are specific
1834 to each LWP since they are stored in each LWP's hardware debug
1835 registers. Therefore, such LWP must be stopped first in order to
1836 be able to modify its hardware watchpoints.
1837
1838 Hardware watchpoints must be reset exactly once after being
1839 presented to the user. It cannot be done sooner, because it would
1840 reset the data used to present the watchpoint hit to the user. And
1841 it must not be done later because it could display the same single
1842 watchpoint hit during multiple GDB stops. Note that the latter is
1843 relevant only to the hardware watchpoint types bp_read_watchpoint
1844 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1845 not user-visible - its hit is suppressed if the memory content has
1846 not changed.
1847
1848 The following constraints influence the location where we can reset
1849 hardware watchpoints:
1850
1851 * target_stopped_by_watchpoint and target_stopped_data_address are
1852 called several times when GDB stops.
1853
1854 [linux]
1855 * Multiple hardware watchpoints can be hit at the same time,
1856 causing GDB to stop. GDB only presents one hardware watchpoint
1857 hit at a time as the reason for stopping, and all the other hits
1858 are presented later, one after the other, each time the user
1859 requests the execution to be resumed. Execution is not resumed
1860 for the threads still having pending hit event stored in
1861 LWP_INFO->STATUS. While the watchpoint is already removed from
1862 the inferior on the first stop the thread hit event is kept being
1863 reported from its cached value by linux_nat_stopped_data_address
1864 until the real thread resume happens after the watchpoint gets
1865 presented and thus its LWP_INFO->STATUS gets reset.
1866
1867 Therefore the hardware watchpoint hit can get safely reset on the
1868 watchpoint removal from inferior. */
a79d3c27 1869
b40ce68a 1870static void
3a5c3e22 1871update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1872{
a5606eee 1873 int within_current_scope;
a5606eee 1874 struct frame_id saved_frame_id;
66076460 1875 int frame_saved;
a5606eee 1876
f6bc2008
PA
1877 /* If this is a local watchpoint, we only want to check if the
1878 watchpoint frame is in scope if the current thread is the thread
1879 that was used to create the watchpoint. */
1880 if (!watchpoint_in_thread_scope (b))
1881 return;
1882
c1fc2657 1883 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1884 return;
1885
66076460 1886 frame_saved = 0;
a5606eee
VP
1887
1888 /* Determine if the watchpoint is within scope. */
1889 if (b->exp_valid_block == NULL)
1890 within_current_scope = 1;
1891 else
1892 {
b5db5dfc
UW
1893 struct frame_info *fi = get_current_frame ();
1894 struct gdbarch *frame_arch = get_frame_arch (fi);
1895 CORE_ADDR frame_pc = get_frame_pc (fi);
1896
c9cf6e20
MG
1897 /* If we're at a point where the stack has been destroyed
1898 (e.g. in a function epilogue), unwinding may not work
1899 properly. Do not attempt to recreate locations at this
b5db5dfc 1900 point. See similar comments in watchpoint_check. */
c9cf6e20 1901 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1902 return;
66076460
DJ
1903
1904 /* Save the current frame's ID so we can restore it after
1905 evaluating the watchpoint expression on its own frame. */
1906 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1907 took a frame parameter, so that we didn't have to change the
1908 selected frame. */
1909 frame_saved = 1;
1910 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1911
a5606eee
VP
1912 fi = frame_find_by_id (b->watchpoint_frame);
1913 within_current_scope = (fi != NULL);
1914 if (within_current_scope)
1915 select_frame (fi);
1916 }
1917
b5db5dfc
UW
1918 /* We don't free locations. They are stored in the bp_location array
1919 and update_global_location_list will eventually delete them and
1920 remove breakpoints if needed. */
c1fc2657 1921 b->loc = NULL;
b5db5dfc 1922
a5606eee
VP
1923 if (within_current_scope && reparse)
1924 {
bbc13ae3 1925 const char *s;
d63d0675 1926
4d01a485 1927 b->exp.reset ();
d63d0675 1928 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1929 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1930 /* If the meaning of expression itself changed, the old value is
1931 no longer relevant. We don't want to report a watchpoint hit
1932 to the user when the old value and the new value may actually
1933 be completely different objects. */
1934 value_free (b->val);
fa4727a6
DJ
1935 b->val = NULL;
1936 b->val_valid = 0;
60e1c644
PA
1937
1938 /* Note that unlike with breakpoints, the watchpoint's condition
1939 expression is stored in the breakpoint object, not in the
1940 locations (re)created below. */
c1fc2657 1941 if (b->cond_string != NULL)
60e1c644 1942 {
4d01a485 1943 b->cond_exp.reset ();
60e1c644 1944
c1fc2657 1945 s = b->cond_string;
1bb9788d 1946 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1947 }
a5606eee 1948 }
a5606eee
VP
1949
1950 /* If we failed to parse the expression, for example because
1951 it refers to a global variable in a not-yet-loaded shared library,
1952 don't try to insert watchpoint. We don't automatically delete
1953 such watchpoint, though, since failure to parse expression
1954 is different from out-of-scope watchpoint. */
e8369a73 1955 if (!target_has_execution)
2d134ed3
PA
1956 {
1957 /* Without execution, memory can't change. No use to try and
1958 set watchpoint locations. The watchpoint will be reset when
1959 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1960 if (!can_use_hw_watchpoints)
1961 {
c1fc2657
SM
1962 if (b->ops->works_in_software_mode (b))
1963 b->type = bp_watchpoint;
e8369a73 1964 else
638aa5a1
AB
1965 error (_("Can't set read/access watchpoint when "
1966 "hardware watchpoints are disabled."));
e8369a73 1967 }
2d134ed3
PA
1968 }
1969 else if (within_current_scope && b->exp)
a5606eee 1970 {
0cf6dd15 1971 int pc = 0;
fa4727a6 1972 struct value *val_chain, *v, *result, *next;
2d134ed3 1973 struct program_space *frame_pspace;
a5606eee 1974
4d01a485 1975 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1976
a5606eee
VP
1977 /* Avoid setting b->val if it's already set. The meaning of
1978 b->val is 'the last value' user saw, and we should update
1979 it only if we reported that last value to user. As it
9c06b0b4
TJB
1980 happens, the code that reports it updates b->val directly.
1981 We don't keep track of the memory value for masked
1982 watchpoints. */
c1fc2657 1983 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1984 {
bb9d5f81
PP
1985 if (b->val_bitsize != 0)
1986 {
1987 v = extract_bitfield_from_watchpoint_value (b, v);
1988 if (v != NULL)
1989 release_value (v);
1990 }
fa4727a6
DJ
1991 b->val = v;
1992 b->val_valid = 1;
1993 }
a5606eee 1994
2d134ed3
PA
1995 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1996
a5606eee 1997 /* Look at each value on the value chain. */
9fa40276 1998 for (v = val_chain; v; v = value_next (v))
a5606eee
VP
1999 {
2000 /* If it's a memory location, and GDB actually needed
2001 its contents to evaluate the expression, then we
fa4727a6
DJ
2002 must watch it. If the first value returned is
2003 still lazy, that means an error occurred reading it;
2004 watch it anyway in case it becomes readable. */
a5606eee 2005 if (VALUE_LVAL (v) == lval_memory
fa4727a6 2006 && (v == val_chain || ! value_lazy (v)))
a5606eee
VP
2007 {
2008 struct type *vtype = check_typedef (value_type (v));
7270d8f2 2009
a5606eee
VP
2010 /* We only watch structs and arrays if user asked
2011 for it explicitly, never if they just happen to
2012 appear in the middle of some value chain. */
fa4727a6 2013 if (v == result
a5606eee
VP
2014 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2015 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2016 {
2017 CORE_ADDR addr;
f486487f 2018 enum target_hw_bp_type type;
a5606eee 2019 struct bp_location *loc, **tmp;
bb9d5f81
PP
2020 int bitpos = 0, bitsize = 0;
2021
2022 if (value_bitsize (v) != 0)
2023 {
2024 /* Extract the bit parameters out from the bitfield
2025 sub-expression. */
2026 bitpos = value_bitpos (v);
2027 bitsize = value_bitsize (v);
2028 }
2029 else if (v == result && b->val_bitsize != 0)
2030 {
2031 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2032 lvalue whose bit parameters are saved in the fields
2033 VAL_BITPOS and VAL_BITSIZE. */
2034 bitpos = b->val_bitpos;
2035 bitsize = b->val_bitsize;
2036 }
a5606eee 2037
42ae5230 2038 addr = value_address (v);
bb9d5f81
PP
2039 if (bitsize != 0)
2040 {
2041 /* Skip the bytes that don't contain the bitfield. */
2042 addr += bitpos / 8;
2043 }
2044
a5606eee 2045 type = hw_write;
c1fc2657 2046 if (b->type == bp_read_watchpoint)
a5606eee 2047 type = hw_read;
c1fc2657 2048 else if (b->type == bp_access_watchpoint)
a5606eee 2049 type = hw_access;
3a5c3e22 2050
c1fc2657
SM
2051 loc = allocate_bp_location (b);
2052 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
2053 ;
2054 *tmp = loc;
a6d9a66e 2055 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
2056
2057 loc->pspace = frame_pspace;
a5606eee 2058 loc->address = addr;
bb9d5f81
PP
2059
2060 if (bitsize != 0)
2061 {
2062 /* Just cover the bytes that make up the bitfield. */
2063 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2064 }
2065 else
2066 loc->length = TYPE_LENGTH (value_type (v));
2067
a5606eee
VP
2068 loc->watchpoint_type = type;
2069 }
2070 }
9fa40276
TJB
2071 }
2072
2073 /* Change the type of breakpoint between hardware assisted or
2074 an ordinary watchpoint depending on the hardware support
2075 and free hardware slots. REPARSE is set when the inferior
2076 is started. */
a9634178 2077 if (reparse)
9fa40276 2078 {
e09342b5 2079 int reg_cnt;
9fa40276
TJB
2080 enum bp_loc_type loc_type;
2081 struct bp_location *bl;
a5606eee 2082
a9634178 2083 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
2084
2085 if (reg_cnt)
9fa40276
TJB
2086 {
2087 int i, target_resources_ok, other_type_used;
a1398e0c 2088 enum bptype type;
9fa40276 2089
a9634178
TJB
2090 /* Use an exact watchpoint when there's only one memory region to be
2091 watched, and only one debug register is needed to watch it. */
2092 b->exact = target_exact_watchpoints && reg_cnt == 1;
2093
9fa40276 2094 /* We need to determine how many resources are already
e09342b5
TJB
2095 used for all other hardware watchpoints plus this one
2096 to see if we still have enough resources to also fit
a1398e0c
PA
2097 this watchpoint in as well. */
2098
2099 /* If this is a software watchpoint, we try to turn it
2100 to a hardware one -- count resources as if B was of
2101 hardware watchpoint type. */
c1fc2657 2102 type = b->type;
a1398e0c
PA
2103 if (type == bp_watchpoint)
2104 type = bp_hardware_watchpoint;
2105
2106 /* This watchpoint may or may not have been placed on
2107 the list yet at this point (it won't be in the list
2108 if we're trying to create it for the first time,
2109 through watch_command), so always account for it
2110 manually. */
2111
2112 /* Count resources used by all watchpoints except B. */
c1fc2657 2113 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
2114
2115 /* Add in the resources needed for B. */
c1fc2657 2116 i += hw_watchpoint_use_count (b);
a1398e0c
PA
2117
2118 target_resources_ok
2119 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 2120 if (target_resources_ok <= 0)
a9634178 2121 {
c1fc2657 2122 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
2123
2124 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
2125 error (_("Target does not support this type of "
2126 "hardware watchpoint."));
9c06b0b4
TJB
2127 else if (target_resources_ok < 0 && !sw_mode)
2128 error (_("There are not enough available hardware "
2129 "resources for this watchpoint."));
a1398e0c
PA
2130
2131 /* Downgrade to software watchpoint. */
c1fc2657 2132 b->type = bp_watchpoint;
a1398e0c
PA
2133 }
2134 else
2135 {
2136 /* If this was a software watchpoint, we've just
2137 found we have enough resources to turn it to a
2138 hardware watchpoint. Otherwise, this is a
2139 nop. */
c1fc2657 2140 b->type = type;
a9634178 2141 }
9fa40276 2142 }
c1fc2657 2143 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
2144 {
2145 if (!can_use_hw_watchpoints)
2146 error (_("Can't set read/access watchpoint when "
2147 "hardware watchpoints are disabled."));
2148 else
2149 error (_("Expression cannot be implemented with "
2150 "read/access watchpoint."));
2151 }
9fa40276 2152 else
c1fc2657 2153 b->type = bp_watchpoint;
9fa40276 2154
c1fc2657 2155 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 2156 : bp_loc_hardware_watchpoint);
c1fc2657 2157 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
2158 bl->loc_type = loc_type;
2159 }
2160
2161 for (v = val_chain; v; v = next)
2162 {
a5606eee
VP
2163 next = value_next (v);
2164 if (v != b->val)
2165 value_free (v);
2166 }
2167
c7437ca6
PA
2168 /* If a software watchpoint is not watching any memory, then the
2169 above left it without any location set up. But,
2170 bpstat_stop_status requires a location to be able to report
2171 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
2172 if (b->type == bp_watchpoint && b->loc == NULL)
2173 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
2174 }
2175 else if (!within_current_scope)
7270d8f2 2176 {
ac74f770
MS
2177 printf_filtered (_("\
2178Watchpoint %d deleted because the program has left the block\n\
2179in which its expression is valid.\n"),
c1fc2657 2180 b->number);
d0fb5eae 2181 watchpoint_del_at_next_stop (b);
7270d8f2 2182 }
a5606eee
VP
2183
2184 /* Restore the selected frame. */
66076460
DJ
2185 if (frame_saved)
2186 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
2187}
2188
a5606eee 2189
74960c60 2190/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
2191 inserted in the inferior. We don't differentiate the type of BL's owner
2192 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2193 breakpoint_ops is not defined, because in insert_bp_location,
2194 tracepoint's insert_location will not be called. */
74960c60 2195static int
35df4500 2196should_be_inserted (struct bp_location *bl)
74960c60 2197{
35df4500 2198 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2199 return 0;
2200
35df4500 2201 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2202 return 0;
2203
35df4500 2204 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2205 return 0;
2206
f8eba3c6
TT
2207 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2208 return 0;
2209
56710373
PA
2210 /* This is set for example, when we're attached to the parent of a
2211 vfork, and have detached from the child. The child is running
2212 free, and we expect it to do an exec or exit, at which point the
2213 OS makes the parent schedulable again (and the target reports
2214 that the vfork is done). Until the child is done with the shared
2215 memory region, do not insert breakpoints in the parent, otherwise
2216 the child could still trip on the parent's breakpoints. Since
2217 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2218 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2219 return 0;
2220
31e77af2 2221 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2222 location, except if the breakpoint is a single-step breakpoint,
2223 and the breakpoint's thread is the thread which is stepping past
2224 a breakpoint. */
31e77af2
PA
2225 if ((bl->loc_type == bp_loc_software_breakpoint
2226 || bl->loc_type == bp_loc_hardware_breakpoint)
2227 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2228 bl->address)
2229 /* The single-step breakpoint may be inserted at the location
2230 we're trying to step if the instruction branches to itself.
2231 However, the instruction won't be executed at all and it may
2232 break the semantics of the instruction, for example, the
2233 instruction is a conditional branch or updates some flags.
2234 We can't fix it unless GDB is able to emulate the instruction
2235 or switch to displaced stepping. */
2236 && !(bl->owner->type == bp_single_step
2237 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2238 {
2239 if (debug_infrun)
2240 {
2241 fprintf_unfiltered (gdb_stdlog,
2242 "infrun: skipping breakpoint: "
2243 "stepping past insn at: %s\n",
2244 paddress (bl->gdbarch, bl->address));
2245 }
2246 return 0;
2247 }
31e77af2 2248
963f9c80
PA
2249 /* Don't insert watchpoints if we're trying to step past the
2250 instruction that triggered one. */
2251 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2252 && stepping_past_nonsteppable_watchpoint ())
2253 {
2254 if (debug_infrun)
2255 {
2256 fprintf_unfiltered (gdb_stdlog,
2257 "infrun: stepping past non-steppable watchpoint. "
2258 "skipping watchpoint at %s:%d\n",
2259 paddress (bl->gdbarch, bl->address),
2260 bl->length);
2261 }
2262 return 0;
2263 }
2264
74960c60
VP
2265 return 1;
2266}
2267
934709f0
PW
2268/* Same as should_be_inserted but does the check assuming
2269 that the location is not duplicated. */
2270
2271static int
2272unduplicated_should_be_inserted (struct bp_location *bl)
2273{
2274 int result;
2275 const int save_duplicate = bl->duplicate;
2276
2277 bl->duplicate = 0;
2278 result = should_be_inserted (bl);
2279 bl->duplicate = save_duplicate;
2280 return result;
2281}
2282
b775012e
LM
2283/* Parses a conditional described by an expression COND into an
2284 agent expression bytecode suitable for evaluation
2285 by the bytecode interpreter. Return NULL if there was
2286 any error during parsing. */
2287
833177a4 2288static agent_expr_up
b775012e
LM
2289parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2290{
833177a4 2291 if (cond == NULL)
b775012e
LM
2292 return NULL;
2293
833177a4
PA
2294 agent_expr_up aexpr;
2295
b775012e
LM
2296 /* We don't want to stop processing, so catch any errors
2297 that may show up. */
492d29ea 2298 TRY
b775012e 2299 {
036e657b 2300 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2301 }
2302
492d29ea 2303 CATCH (ex, RETURN_MASK_ERROR)
b775012e
LM
2304 {
2305 /* If we got here, it means the condition could not be parsed to a valid
2306 bytecode expression and thus can't be evaluated on the target's side.
2307 It's no use iterating through the conditions. */
b775012e 2308 }
492d29ea 2309 END_CATCH
b775012e
LM
2310
2311 /* We have a valid agent expression. */
2312 return aexpr;
2313}
2314
2315/* Based on location BL, create a list of breakpoint conditions to be
2316 passed on to the target. If we have duplicated locations with different
2317 conditions, we will add such conditions to the list. The idea is that the
2318 target will evaluate the list of conditions and will only notify GDB when
2319 one of them is true. */
2320
2321static void
2322build_target_condition_list (struct bp_location *bl)
2323{
2324 struct bp_location **locp = NULL, **loc2p;
2325 int null_condition_or_parse_error = 0;
2326 int modified = bl->needs_update;
2327 struct bp_location *loc;
2328
8b4f3082 2329 /* Release conditions left over from a previous insert. */
3cde5c42 2330 bl->target_info.conditions.clear ();
8b4f3082 2331
b775012e
LM
2332 /* This is only meaningful if the target is
2333 evaluating conditions and if the user has
2334 opted for condition evaluation on the target's
2335 side. */
2336 if (gdb_evaluates_breakpoint_condition_p ()
2337 || !target_supports_evaluation_of_breakpoint_conditions ())
2338 return;
2339
2340 /* Do a first pass to check for locations with no assigned
2341 conditions or conditions that fail to parse to a valid agent expression
2342 bytecode. If any of these happen, then it's no use to send conditions
2343 to the target since this location will always trigger and generate a
2344 response back to GDB. */
2345 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2346 {
2347 loc = (*loc2p);
2348 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2349 {
2350 if (modified)
2351 {
b775012e
LM
2352 /* Re-parse the conditions since something changed. In that
2353 case we already freed the condition bytecodes (see
2354 force_breakpoint_reinsertion). We just
2355 need to parse the condition to bytecodes again. */
833177a4
PA
2356 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2357 loc->cond.get ());
b775012e
LM
2358 }
2359
2360 /* If we have a NULL bytecode expression, it means something
2361 went wrong or we have a null condition expression. */
2362 if (!loc->cond_bytecode)
2363 {
2364 null_condition_or_parse_error = 1;
2365 break;
2366 }
2367 }
2368 }
2369
2370 /* If any of these happened, it means we will have to evaluate the conditions
2371 for the location's address on gdb's side. It is no use keeping bytecodes
2372 for all the other duplicate locations, thus we free all of them here.
2373
2374 This is so we have a finer control over which locations' conditions are
2375 being evaluated by GDB or the remote stub. */
2376 if (null_condition_or_parse_error)
2377 {
2378 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2379 {
2380 loc = (*loc2p);
2381 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2382 {
2383 /* Only go as far as the first NULL bytecode is
2384 located. */
2385 if (!loc->cond_bytecode)
2386 return;
2387
833177a4 2388 loc->cond_bytecode.reset ();
b775012e
LM
2389 }
2390 }
2391 }
2392
2393 /* No NULL conditions or failed bytecode generation. Build a condition list
2394 for this location's address. */
2395 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2396 {
2397 loc = (*loc2p);
2398 if (loc->cond
2399 && is_breakpoint (loc->owner)
2400 && loc->pspace->num == bl->pspace->num
2401 && loc->owner->enable_state == bp_enabled
2402 && loc->enabled)
3cde5c42
PA
2403 {
2404 /* Add the condition to the vector. This will be used later
2405 to send the conditions to the target. */
2406 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2407 }
b775012e
LM
2408 }
2409
2410 return;
2411}
2412
d3ce09f5
SS
2413/* Parses a command described by string CMD into an agent expression
2414 bytecode suitable for evaluation by the bytecode interpreter.
2415 Return NULL if there was any error during parsing. */
2416
833177a4 2417static agent_expr_up
d3ce09f5
SS
2418parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2419{
2420 struct cleanup *old_cleanups = 0;
4d01a485 2421 struct expression **argvec;
bbc13ae3
KS
2422 const char *cmdrest;
2423 const char *format_start, *format_end;
d3ce09f5
SS
2424 struct format_piece *fpieces;
2425 int nargs;
2426 struct gdbarch *gdbarch = get_current_arch ();
2427
833177a4 2428 if (cmd == NULL)
d3ce09f5
SS
2429 return NULL;
2430
2431 cmdrest = cmd;
2432
2433 if (*cmdrest == ',')
2434 ++cmdrest;
bbc13ae3 2435 cmdrest = skip_spaces_const (cmdrest);
d3ce09f5
SS
2436
2437 if (*cmdrest++ != '"')
2438 error (_("No format string following the location"));
2439
2440 format_start = cmdrest;
2441
2442 fpieces = parse_format_string (&cmdrest);
2443
2444 old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2445
2446 format_end = cmdrest;
2447
2448 if (*cmdrest++ != '"')
2449 error (_("Bad format string, non-terminated '\"'."));
2450
bbc13ae3 2451 cmdrest = skip_spaces_const (cmdrest);
d3ce09f5
SS
2452
2453 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2454 error (_("Invalid argument syntax"));
2455
2456 if (*cmdrest == ',')
2457 cmdrest++;
bbc13ae3 2458 cmdrest = skip_spaces_const (cmdrest);
d3ce09f5
SS
2459
2460 /* For each argument, make an expression. */
2461
2462 argvec = (struct expression **) alloca (strlen (cmd)
2463 * sizeof (struct expression *));
2464
2465 nargs = 0;
2466 while (*cmdrest != '\0')
2467 {
bbc13ae3 2468 const char *cmd1;
d3ce09f5
SS
2469
2470 cmd1 = cmdrest;
4d01a485
PA
2471 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2472 argvec[nargs++] = expr.release ();
d3ce09f5
SS
2473 cmdrest = cmd1;
2474 if (*cmdrest == ',')
2475 ++cmdrest;
2476 }
2477
833177a4
PA
2478 agent_expr_up aexpr;
2479
d3ce09f5
SS
2480 /* We don't want to stop processing, so catch any errors
2481 that may show up. */
492d29ea 2482 TRY
d3ce09f5 2483 {
036e657b
JB
2484 aexpr = gen_printf (scope, gdbarch, 0, 0,
2485 format_start, format_end - format_start,
2486 fpieces, nargs, argvec);
d3ce09f5 2487 }
492d29ea 2488 CATCH (ex, RETURN_MASK_ERROR)
d3ce09f5
SS
2489 {
2490 /* If we got here, it means the command could not be parsed to a valid
2491 bytecode expression and thus can't be evaluated on the target's side.
2492 It's no use iterating through the other commands. */
d3ce09f5 2493 }
492d29ea
PA
2494 END_CATCH
2495
2496 do_cleanups (old_cleanups);
d3ce09f5 2497
d3ce09f5
SS
2498 /* We have a valid agent expression, return it. */
2499 return aexpr;
2500}
2501
2502/* Based on location BL, create a list of breakpoint commands to be
2503 passed on to the target. If we have duplicated locations with
2504 different commands, we will add any such to the list. */
2505
2506static void
2507build_target_command_list (struct bp_location *bl)
2508{
2509 struct bp_location **locp = NULL, **loc2p;
2510 int null_command_or_parse_error = 0;
2511 int modified = bl->needs_update;
2512 struct bp_location *loc;
2513
3cde5c42
PA
2514 /* Clear commands left over from a previous insert. */
2515 bl->target_info.tcommands.clear ();
8b4f3082 2516
41fac0cf 2517 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2518 return;
2519
41fac0cf
PA
2520 /* For now, limit to agent-style dprintf breakpoints. */
2521 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2522 return;
2523
41fac0cf
PA
2524 /* For now, if we have any duplicate location that isn't a dprintf,
2525 don't install the target-side commands, as that would make the
2526 breakpoint not be reported to the core, and we'd lose
2527 control. */
2528 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2529 {
2530 loc = (*loc2p);
2531 if (is_breakpoint (loc->owner)
2532 && loc->pspace->num == bl->pspace->num
2533 && loc->owner->type != bp_dprintf)
2534 return;
2535 }
2536
d3ce09f5
SS
2537 /* Do a first pass to check for locations with no assigned
2538 conditions or conditions that fail to parse to a valid agent expression
2539 bytecode. If any of these happen, then it's no use to send conditions
2540 to the target since this location will always trigger and generate a
2541 response back to GDB. */
2542 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2543 {
2544 loc = (*loc2p);
2545 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2546 {
2547 if (modified)
2548 {
d3ce09f5
SS
2549 /* Re-parse the commands since something changed. In that
2550 case we already freed the command bytecodes (see
2551 force_breakpoint_reinsertion). We just
2552 need to parse the command to bytecodes again. */
833177a4
PA
2553 loc->cmd_bytecode
2554 = parse_cmd_to_aexpr (bl->address,
2555 loc->owner->extra_string);
d3ce09f5
SS
2556 }
2557
2558 /* If we have a NULL bytecode expression, it means something
2559 went wrong or we have a null command expression. */
2560 if (!loc->cmd_bytecode)
2561 {
2562 null_command_or_parse_error = 1;
2563 break;
2564 }
2565 }
2566 }
2567
2568 /* If anything failed, then we're not doing target-side commands,
2569 and so clean up. */
2570 if (null_command_or_parse_error)
2571 {
2572 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2573 {
2574 loc = (*loc2p);
2575 if (is_breakpoint (loc->owner)
2576 && loc->pspace->num == bl->pspace->num)
2577 {
2578 /* Only go as far as the first NULL bytecode is
2579 located. */
40fb6c5e 2580 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2581 return;
2582
833177a4 2583 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2584 }
2585 }
2586 }
2587
2588 /* No NULL commands or failed bytecode generation. Build a command list
2589 for this location's address. */
2590 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2591 {
2592 loc = (*loc2p);
2593 if (loc->owner->extra_string
2594 && is_breakpoint (loc->owner)
2595 && loc->pspace->num == bl->pspace->num
2596 && loc->owner->enable_state == bp_enabled
2597 && loc->enabled)
3cde5c42
PA
2598 {
2599 /* Add the command to the vector. This will be used later
2600 to send the commands to the target. */
2601 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2602 }
d3ce09f5
SS
2603 }
2604
2605 bl->target_info.persist = 0;
2606 /* Maybe flag this location as persistent. */
2607 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2608 bl->target_info.persist = 1;
2609}
2610
833b7ab5
YQ
2611/* Return the kind of breakpoint on address *ADDR. Get the kind
2612 of breakpoint according to ADDR except single-step breakpoint.
2613 Get the kind of single-step breakpoint according to the current
2614 registers state. */
cd6c3b4f
YQ
2615
2616static int
2617breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2618{
833b7ab5
YQ
2619 if (bl->owner->type == bp_single_step)
2620 {
2621 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2622 struct regcache *regcache;
2623
2624 regcache = get_thread_regcache (thr->ptid);
2625
2626 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2627 regcache, addr);
2628 }
2629 else
2630 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2631}
2632
35df4500
TJB
2633/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2634 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2635 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2636 Returns 0 for success, 1 if the bp_location type is not supported or
2637 -1 for failure.
879bfdc2 2638
4a64f543
MS
2639 NOTE drow/2003-09-09: This routine could be broken down to an
2640 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2641static int
35df4500 2642insert_bp_location (struct bp_location *bl,
26bb91f3 2643 struct ui_file *tmp_error_stream,
3fbb6ffa 2644 int *disabled_breaks,
dd61ec5c
MW
2645 int *hw_breakpoint_error,
2646 int *hw_bp_error_explained_already)
879bfdc2 2647{
0000e5cc
PA
2648 enum errors bp_err = GDB_NO_ERROR;
2649 const char *bp_err_message = NULL;
879bfdc2 2650
b775012e 2651 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2652 return 0;
2653
35c63cd8
JB
2654 /* Note we don't initialize bl->target_info, as that wipes out
2655 the breakpoint location's shadow_contents if the breakpoint
2656 is still inserted at that location. This in turn breaks
2657 target_read_memory which depends on these buffers when
2658 a memory read is requested at the breakpoint location:
2659 Once the target_info has been wiped, we fail to see that
2660 we have a breakpoint inserted at that address and thus
2661 read the breakpoint instead of returning the data saved in
2662 the breakpoint location's shadow contents. */
0d5ed153 2663 bl->target_info.reqstd_address = bl->address;
35df4500 2664 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2665 bl->target_info.length = bl->length;
8181d85f 2666
b775012e
LM
2667 /* When working with target-side conditions, we must pass all the conditions
2668 for the same breakpoint address down to the target since GDB will not
2669 insert those locations. With a list of breakpoint conditions, the target
2670 can decide when to stop and notify GDB. */
2671
2672 if (is_breakpoint (bl->owner))
2673 {
2674 build_target_condition_list (bl);
d3ce09f5
SS
2675 build_target_command_list (bl);
2676 /* Reset the modification marker. */
b775012e
LM
2677 bl->needs_update = 0;
2678 }
2679
35df4500
TJB
2680 if (bl->loc_type == bp_loc_software_breakpoint
2681 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2682 {
35df4500 2683 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2684 {
2685 /* If the explicitly specified breakpoint type
2686 is not hardware breakpoint, check the memory map to see
2687 if the breakpoint address is in read only memory or not.
4a64f543 2688
765dc015
VP
2689 Two important cases are:
2690 - location type is not hardware breakpoint, memory
2691 is readonly. We change the type of the location to
2692 hardware breakpoint.
4a64f543
MS
2693 - location type is hardware breakpoint, memory is
2694 read-write. This means we've previously made the
2695 location hardware one, but then the memory map changed,
2696 so we undo.
765dc015 2697
4a64f543
MS
2698 When breakpoints are removed, remove_breakpoints will use
2699 location types we've just set here, the only possible
2700 problem is that memory map has changed during running
2701 program, but it's not going to work anyway with current
2702 gdb. */
765dc015 2703 struct mem_region *mr
0d5ed153 2704 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2705
2706 if (mr)
2707 {
2708 if (automatic_hardware_breakpoints)
2709 {
765dc015
VP
2710 enum bp_loc_type new_type;
2711
2712 if (mr->attrib.mode != MEM_RW)
2713 new_type = bp_loc_hardware_breakpoint;
2714 else
2715 new_type = bp_loc_software_breakpoint;
2716
35df4500 2717 if (new_type != bl->loc_type)
765dc015
VP
2718 {
2719 static int said = 0;
cc59ec59 2720
35df4500 2721 bl->loc_type = new_type;
765dc015
VP
2722 if (!said)
2723 {
3e43a32a
MS
2724 fprintf_filtered (gdb_stdout,
2725 _("Note: automatically using "
2726 "hardware breakpoints for "
2727 "read-only addresses.\n"));
765dc015
VP
2728 said = 1;
2729 }
2730 }
2731 }
35df4500 2732 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2733 && mr->attrib.mode != MEM_RW)
2734 {
2735 fprintf_unfiltered (tmp_error_stream,
2736 _("Cannot insert breakpoint %d.\n"
2737 "Cannot set software breakpoint "
2738 "at read-only address %s\n"),
2739 bl->owner->number,
2740 paddress (bl->gdbarch, bl->address));
2741 return 1;
2742 }
765dc015
VP
2743 }
2744 }
2745
879bfdc2
DJ
2746 /* First check to see if we have to handle an overlay. */
2747 if (overlay_debugging == ovly_off
35df4500
TJB
2748 || bl->section == NULL
2749 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2750 {
2751 /* No overlay handling: just set the breakpoint. */
492d29ea 2752 TRY
dd61ec5c 2753 {
0000e5cc
PA
2754 int val;
2755
dd61ec5c 2756 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2757 if (val)
2758 bp_err = GENERIC_ERROR;
dd61ec5c 2759 }
492d29ea 2760 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2761 {
0000e5cc
PA
2762 bp_err = e.error;
2763 bp_err_message = e.message;
dd61ec5c 2764 }
492d29ea 2765 END_CATCH
879bfdc2
DJ
2766 }
2767 else
2768 {
4a64f543 2769 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2770 Shall we set a breakpoint at the LMA? */
2771 if (!overlay_events_enabled)
2772 {
2773 /* Yes -- overlay event support is not active,
2774 so we must try to set a breakpoint at the LMA.
2775 This will not work for a hardware breakpoint. */
35df4500 2776 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2777 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2778 bl->owner->number);
879bfdc2
DJ
2779 else
2780 {
35df4500
TJB
2781 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2782 bl->section);
879bfdc2 2783 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2784 bl->overlay_target_info = bl->target_info;
0d5ed153 2785 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2786
2787 /* No overlay handling: just set the breakpoint. */
492d29ea 2788 TRY
0000e5cc
PA
2789 {
2790 int val;
2791
579c6ad9 2792 bl->overlay_target_info.kind
cd6c3b4f
YQ
2793 = breakpoint_kind (bl, &addr);
2794 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2795 val = target_insert_breakpoint (bl->gdbarch,
2796 &bl->overlay_target_info);
2797 if (val)
2798 bp_err = GENERIC_ERROR;
2799 }
492d29ea 2800 CATCH (e, RETURN_MASK_ALL)
0000e5cc
PA
2801 {
2802 bp_err = e.error;
2803 bp_err_message = e.message;
2804 }
492d29ea 2805 END_CATCH
0000e5cc
PA
2806
2807 if (bp_err != GDB_NO_ERROR)
99361f52 2808 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2809 "Overlay breakpoint %d "
2810 "failed: in ROM?\n",
35df4500 2811 bl->owner->number);
879bfdc2
DJ
2812 }
2813 }
2814 /* Shall we set a breakpoint at the VMA? */
35df4500 2815 if (section_is_mapped (bl->section))
879bfdc2
DJ
2816 {
2817 /* Yes. This overlay section is mapped into memory. */
492d29ea 2818 TRY
dd61ec5c 2819 {
0000e5cc
PA
2820 int val;
2821
dd61ec5c 2822 val = bl->owner->ops->insert_location (bl);
0000e5cc
PA
2823 if (val)
2824 bp_err = GENERIC_ERROR;
dd61ec5c 2825 }
492d29ea 2826 CATCH (e, RETURN_MASK_ALL)
dd61ec5c 2827 {
0000e5cc
PA
2828 bp_err = e.error;
2829 bp_err_message = e.message;
dd61ec5c 2830 }
492d29ea 2831 END_CATCH
879bfdc2
DJ
2832 }
2833 else
2834 {
2835 /* No. This breakpoint will not be inserted.
2836 No error, but do not mark the bp as 'inserted'. */
2837 return 0;
2838 }
2839 }
2840
0000e5cc 2841 if (bp_err != GDB_NO_ERROR)
879bfdc2
DJ
2842 {
2843 /* Can't set the breakpoint. */
0000e5cc
PA
2844
2845 /* In some cases, we might not be able to insert a
2846 breakpoint in a shared library that has already been
2847 removed, but we have not yet processed the shlib unload
2848 event. Unfortunately, some targets that implement
076855f9
PA
2849 breakpoint insertion themselves can't tell why the
2850 breakpoint insertion failed (e.g., the remote target
2851 doesn't define error codes), so we must treat generic
2852 errors as memory errors. */
0000e5cc 2853 if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
076855f9 2854 && bl->loc_type == bp_loc_software_breakpoint
08351840 2855 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2856 || shared_objfile_contains_address_p (bl->pspace,
2857 bl->address)))
879bfdc2 2858 {
4a64f543 2859 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2860 bl->shlib_disabled = 1;
8d3788bd 2861 observer_notify_breakpoint_modified (bl->owner);
3fbb6ffa
TJB
2862 if (!*disabled_breaks)
2863 {
2864 fprintf_unfiltered (tmp_error_stream,
2865 "Cannot insert breakpoint %d.\n",
2866 bl->owner->number);
2867 fprintf_unfiltered (tmp_error_stream,
2868 "Temporarily disabling shared "
2869 "library breakpoints:\n");
2870 }
2871 *disabled_breaks = 1;
879bfdc2 2872 fprintf_unfiltered (tmp_error_stream,
35df4500 2873 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2874 return 0;
879bfdc2
DJ
2875 }
2876 else
879bfdc2 2877 {
35df4500 2878 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2879 {
0000e5cc
PA
2880 *hw_breakpoint_error = 1;
2881 *hw_bp_error_explained_already = bp_err_message != NULL;
dd61ec5c
MW
2882 fprintf_unfiltered (tmp_error_stream,
2883 "Cannot insert hardware breakpoint %d%s",
0000e5cc
PA
2884 bl->owner->number, bp_err_message ? ":" : ".\n");
2885 if (bp_err_message != NULL)
2886 fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
879bfdc2
DJ
2887 }
2888 else
2889 {
0000e5cc
PA
2890 if (bp_err_message == NULL)
2891 {
2892 char *message
2893 = memory_error_message (TARGET_XFER_E_IO,
2894 bl->gdbarch, bl->address);
2895 struct cleanup *old_chain = make_cleanup (xfree, message);
2896
2897 fprintf_unfiltered (tmp_error_stream,
2898 "Cannot insert breakpoint %d.\n"
2899 "%s\n",
2900 bl->owner->number, message);
2901 do_cleanups (old_chain);
2902 }
2903 else
2904 {
2905 fprintf_unfiltered (tmp_error_stream,
2906 "Cannot insert breakpoint %d: %s\n",
2907 bl->owner->number,
2908 bp_err_message);
2909 }
879bfdc2 2910 }
0000e5cc 2911 return 1;
879bfdc2
DJ
2912
2913 }
2914 }
2915 else
35df4500 2916 bl->inserted = 1;
879bfdc2 2917
0000e5cc 2918 return 0;
879bfdc2
DJ
2919 }
2920
35df4500 2921 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2922 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2923 watchpoints. It's not clear that it's necessary... */
35df4500 2924 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2925 {
0000e5cc
PA
2926 int val;
2927
77b06cd7
TJB
2928 gdb_assert (bl->owner->ops != NULL
2929 && bl->owner->ops->insert_location != NULL);
2930
2931 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2932
2933 /* If trying to set a read-watchpoint, and it turns out it's not
2934 supported, try emulating one with an access watchpoint. */
35df4500 2935 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2936 {
2937 struct bp_location *loc, **loc_temp;
2938
2939 /* But don't try to insert it, if there's already another
2940 hw_access location that would be considered a duplicate
2941 of this one. */
2942 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2943 if (loc != bl
85d721b8 2944 && loc->watchpoint_type == hw_access
35df4500 2945 && watchpoint_locations_match (bl, loc))
85d721b8 2946 {
35df4500
TJB
2947 bl->duplicate = 1;
2948 bl->inserted = 1;
2949 bl->target_info = loc->target_info;
2950 bl->watchpoint_type = hw_access;
85d721b8
PA
2951 val = 0;
2952 break;
2953 }
2954
2955 if (val == 1)
2956 {
77b06cd7
TJB
2957 bl->watchpoint_type = hw_access;
2958 val = bl->owner->ops->insert_location (bl);
2959
2960 if (val)
2961 /* Back to the original value. */
2962 bl->watchpoint_type = hw_read;
85d721b8
PA
2963 }
2964 }
2965
35df4500 2966 bl->inserted = (val == 0);
879bfdc2
DJ
2967 }
2968
35df4500 2969 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2970 {
0000e5cc
PA
2971 int val;
2972
77b06cd7
TJB
2973 gdb_assert (bl->owner->ops != NULL
2974 && bl->owner->ops->insert_location != NULL);
2975
2976 val = bl->owner->ops->insert_location (bl);
2977 if (val)
2978 {
2979 bl->owner->enable_state = bp_disabled;
2980
2981 if (val == 1)
2982 warning (_("\
2983Error inserting catchpoint %d: Your system does not support this type\n\
2984of catchpoint."), bl->owner->number);
2985 else
2986 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2987 }
2988
2989 bl->inserted = (val == 0);
1640b821
DJ
2990
2991 /* We've already printed an error message if there was a problem
2992 inserting this catchpoint, and we've disabled the catchpoint,
2993 so just return success. */
2994 return 0;
879bfdc2
DJ
2995 }
2996
2997 return 0;
2998}
2999
6c95b8df
PA
3000/* This function is called when program space PSPACE is about to be
3001 deleted. It takes care of updating breakpoints to not reference
3002 PSPACE anymore. */
3003
3004void
3005breakpoint_program_space_exit (struct program_space *pspace)
3006{
3007 struct breakpoint *b, *b_temp;
876fa593 3008 struct bp_location *loc, **loc_temp;
6c95b8df
PA
3009
3010 /* Remove any breakpoint that was set through this program space. */
3011 ALL_BREAKPOINTS_SAFE (b, b_temp)
3012 {
3013 if (b->pspace == pspace)
3014 delete_breakpoint (b);
3015 }
3016
3017 /* Breakpoints set through other program spaces could have locations
3018 bound to PSPACE as well. Remove those. */
876fa593 3019 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
3020 {
3021 struct bp_location *tmp;
3022
3023 if (loc->pspace == pspace)
3024 {
2bdf28a0 3025 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
3026 if (loc->owner->loc == loc)
3027 loc->owner->loc = loc->next;
3028 else
3029 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3030 if (tmp->next == loc)
3031 {
3032 tmp->next = loc->next;
3033 break;
3034 }
3035 }
3036 }
3037
3038 /* Now update the global location list to permanently delete the
3039 removed locations above. */
44702360 3040 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
3041}
3042
74960c60
VP
3043/* Make sure all breakpoints are inserted in inferior.
3044 Throws exception on any error.
3045 A breakpoint that is already inserted won't be inserted
3046 again, so calling this function twice is safe. */
3047void
3048insert_breakpoints (void)
3049{
3050 struct breakpoint *bpt;
3051
3052 ALL_BREAKPOINTS (bpt)
3053 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
3054 {
3055 struct watchpoint *w = (struct watchpoint *) bpt;
3056
3057 update_watchpoint (w, 0 /* don't reparse. */);
3058 }
74960c60 3059
04086b45
PA
3060 /* Updating watchpoints creates new locations, so update the global
3061 location list. Explicitly tell ugll to insert locations and
3062 ignore breakpoints_always_inserted_mode. */
3063 update_global_location_list (UGLL_INSERT);
74960c60
VP
3064}
3065
20388dd6
YQ
3066/* Invoke CALLBACK for each of bp_location. */
3067
3068void
3069iterate_over_bp_locations (walk_bp_location_callback callback)
3070{
3071 struct bp_location *loc, **loc_tmp;
3072
3073 ALL_BP_LOCATIONS (loc, loc_tmp)
3074 {
3075 callback (loc, NULL);
3076 }
3077}
3078
b775012e
LM
3079/* This is used when we need to synch breakpoint conditions between GDB and the
3080 target. It is the case with deleting and disabling of breakpoints when using
3081 always-inserted mode. */
3082
3083static void
3084update_inserted_breakpoint_locations (void)
3085{
3086 struct bp_location *bl, **blp_tmp;
3087 int error_flag = 0;
3088 int val = 0;
3089 int disabled_breaks = 0;
3090 int hw_breakpoint_error = 0;
dd61ec5c 3091 int hw_bp_details_reported = 0;
b775012e 3092
d7e74731 3093 string_file tmp_error_stream;
b775012e
LM
3094
3095 /* Explicitly mark the warning -- this will only be printed if
3096 there was an error. */
d7e74731 3097 tmp_error_stream.puts ("Warning:\n");
b775012e 3098
5ed8105e 3099 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
3100
3101 ALL_BP_LOCATIONS (bl, blp_tmp)
3102 {
3103 /* We only want to update software breakpoints and hardware
3104 breakpoints. */
3105 if (!is_breakpoint (bl->owner))
3106 continue;
3107
3108 /* We only want to update locations that are already inserted
3109 and need updating. This is to avoid unwanted insertion during
3110 deletion of breakpoints. */
3111 if (!bl->inserted || (bl->inserted && !bl->needs_update))
3112 continue;
3113
3114 switch_to_program_space_and_thread (bl->pspace);
3115
3116 /* For targets that support global breakpoints, there's no need
3117 to select an inferior to insert breakpoint to. In fact, even
3118 if we aren't attached to any process yet, we should still
3119 insert breakpoints. */
f5656ead 3120 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
b775012e
LM
3121 && ptid_equal (inferior_ptid, null_ptid))
3122 continue;
3123
d7e74731 3124 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3125 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
3126 if (val)
3127 error_flag = val;
3128 }
3129
3130 if (error_flag)
3131 {
3132 target_terminal_ours_for_output ();
3133 error_stream (tmp_error_stream);
3134 }
b775012e
LM
3135}
3136
c30eee59 3137/* Used when starting or continuing the program. */
c906108c 3138
74960c60
VP
3139static void
3140insert_breakpoint_locations (void)
c906108c 3141{
a5606eee 3142 struct breakpoint *bpt;
35df4500 3143 struct bp_location *bl, **blp_tmp;
eacd795a 3144 int error_flag = 0;
c906108c 3145 int val = 0;
3fbb6ffa 3146 int disabled_breaks = 0;
81d0cc19 3147 int hw_breakpoint_error = 0;
dd61ec5c 3148 int hw_bp_error_explained_already = 0;
c906108c 3149
d7e74731
PA
3150 string_file tmp_error_stream;
3151
81d0cc19
GS
3152 /* Explicitly mark the warning -- this will only be printed if
3153 there was an error. */
d7e74731 3154 tmp_error_stream.puts ("Warning:\n");
6c95b8df 3155
5ed8105e 3156 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3157
35df4500 3158 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 3159 {
b775012e 3160 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
3161 continue;
3162
4a64f543
MS
3163 /* There is no point inserting thread-specific breakpoints if
3164 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3165 has BL->OWNER always non-NULL. */
35df4500 3166 if (bl->owner->thread != -1
5d5658a1 3167 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
3168 continue;
3169
35df4500 3170 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
3171
3172 /* For targets that support global breakpoints, there's no need
3173 to select an inferior to insert breakpoint to. In fact, even
3174 if we aren't attached to any process yet, we should still
3175 insert breakpoints. */
f5656ead 3176 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
3177 && ptid_equal (inferior_ptid, null_ptid))
3178 continue;
3179
d7e74731 3180 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3181 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 3182 if (val)
eacd795a 3183 error_flag = val;
879bfdc2 3184 }
c906108c 3185
4a64f543
MS
3186 /* If we failed to insert all locations of a watchpoint, remove
3187 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
3188 ALL_BREAKPOINTS (bpt)
3189 {
3190 int some_failed = 0;
3191 struct bp_location *loc;
3192
3193 if (!is_hardware_watchpoint (bpt))
3194 continue;
3195
d6b74ac4 3196 if (!breakpoint_enabled (bpt))
a5606eee 3197 continue;
74960c60
VP
3198
3199 if (bpt->disposition == disp_del_at_next_stop)
3200 continue;
a5606eee
VP
3201
3202 for (loc = bpt->loc; loc; loc = loc->next)
56710373 3203 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
3204 {
3205 some_failed = 1;
3206 break;
3207 }
3208 if (some_failed)
3209 {
3210 for (loc = bpt->loc; loc; loc = loc->next)
3211 if (loc->inserted)
834c0d03 3212 remove_breakpoint (loc);
a5606eee
VP
3213
3214 hw_breakpoint_error = 1;
d7e74731
PA
3215 tmp_error_stream.printf ("Could not insert "
3216 "hardware watchpoint %d.\n",
3217 bpt->number);
eacd795a 3218 error_flag = -1;
a5606eee
VP
3219 }
3220 }
3221
eacd795a 3222 if (error_flag)
81d0cc19
GS
3223 {
3224 /* If a hardware breakpoint or watchpoint was inserted, add a
3225 message about possibly exhausted resources. */
dd61ec5c 3226 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3227 {
d7e74731 3228 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3229You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3230 }
81d0cc19
GS
3231 target_terminal_ours_for_output ();
3232 error_stream (tmp_error_stream);
3233 }
c906108c
SS
3234}
3235
c30eee59
TJB
3236/* Used when the program stops.
3237 Returns zero if successful, or non-zero if there was a problem
3238 removing a breakpoint location. */
3239
c906108c 3240int
fba45db2 3241remove_breakpoints (void)
c906108c 3242{
35df4500 3243 struct bp_location *bl, **blp_tmp;
3a1bae8e 3244 int val = 0;
c906108c 3245
35df4500 3246 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3247 {
1e4d1764 3248 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3249 val |= remove_breakpoint (bl);
c5aa993b 3250 }
3a1bae8e 3251 return val;
c906108c
SS
3252}
3253
49fa26b0
PA
3254/* When a thread exits, remove breakpoints that are related to
3255 that thread. */
3256
3257static void
3258remove_threaded_breakpoints (struct thread_info *tp, int silent)
3259{
3260 struct breakpoint *b, *b_tmp;
3261
3262 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3263 {
5d5658a1 3264 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3265 {
3266 b->disposition = disp_del_at_next_stop;
3267
3268 printf_filtered (_("\
43792cf0
PA
3269Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3270 b->number, print_thread_id (tp));
49fa26b0
PA
3271
3272 /* Hide it from the user. */
3273 b->number = 0;
3274 }
3275 }
3276}
3277
6c95b8df
PA
3278/* Remove breakpoints of process PID. */
3279
3280int
3281remove_breakpoints_pid (int pid)
3282{
35df4500 3283 struct bp_location *bl, **blp_tmp;
6c95b8df
PA
3284 int val;
3285 struct inferior *inf = find_inferior_pid (pid);
3286
35df4500 3287 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3288 {
35df4500 3289 if (bl->pspace != inf->pspace)
6c95b8df
PA
3290 continue;
3291
fc126975 3292 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3293 {
834c0d03 3294 val = remove_breakpoint (bl);
6c95b8df
PA
3295 if (val != 0)
3296 return val;
3297 }
3298 }
3299 return 0;
3300}
3301
c906108c 3302int
fba45db2 3303reattach_breakpoints (int pid)
c906108c 3304{
6c95b8df 3305 struct cleanup *old_chain;
35df4500 3306 struct bp_location *bl, **blp_tmp;
c906108c 3307 int val;
dd61ec5c 3308 int dummy1 = 0, dummy2 = 0, dummy3 = 0;
6c95b8df
PA
3309 struct inferior *inf;
3310 struct thread_info *tp;
3311
3312 tp = any_live_thread_of_process (pid);
3313 if (tp == NULL)
3314 return 1;
3315
3316 inf = find_inferior_pid (pid);
3317 old_chain = save_inferior_ptid ();
3318
3319 inferior_ptid = tp->ptid;
a4954f26 3320
d7e74731 3321 string_file tmp_error_stream;
c906108c 3322
35df4500 3323 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3324 {
35df4500 3325 if (bl->pspace != inf->pspace)
6c95b8df
PA
3326 continue;
3327
35df4500 3328 if (bl->inserted)
c5aa993b 3329 {
35df4500 3330 bl->inserted = 0;
d7e74731 3331 val = insert_bp_location (bl, &tmp_error_stream, &dummy1, &dummy2, &dummy3);
c5aa993b
JM
3332 if (val != 0)
3333 {
ce696e05 3334 do_cleanups (old_chain);
c5aa993b
JM
3335 return val;
3336 }
3337 }
3338 }
ce696e05 3339 do_cleanups (old_chain);
c906108c
SS
3340 return 0;
3341}
3342
e58b0e63
PA
3343static int internal_breakpoint_number = -1;
3344
84f4c1fe
PM
3345/* Set the breakpoint number of B, depending on the value of INTERNAL.
3346 If INTERNAL is non-zero, the breakpoint number will be populated
3347 from internal_breakpoint_number and that variable decremented.
e5dd4106 3348 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3349 breakpoint_count and that value incremented. Internal breakpoints
3350 do not set the internal var bpnum. */
3351static void
3352set_breakpoint_number (int internal, struct breakpoint *b)
3353{
3354 if (internal)
3355 b->number = internal_breakpoint_number--;
3356 else
3357 {
3358 set_breakpoint_count (breakpoint_count + 1);
3359 b->number = breakpoint_count;
3360 }
3361}
3362
e62c965a 3363static struct breakpoint *
a6d9a66e 3364create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3365 CORE_ADDR address, enum bptype type,
c0a91b2b 3366 const struct breakpoint_ops *ops)
e62c965a 3367{
e62c965a
PP
3368 struct symtab_and_line sal;
3369 struct breakpoint *b;
3370
4a64f543 3371 init_sal (&sal); /* Initialize to zeroes. */
e62c965a
PP
3372
3373 sal.pc = address;
3374 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3375 sal.pspace = current_program_space;
e62c965a 3376
06edf0c0 3377 b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3378 b->number = internal_breakpoint_number--;
3379 b->disposition = disp_donttouch;
3380
3381 return b;
3382}
3383
17450429
PP
3384static const char *const longjmp_names[] =
3385 {
3386 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3387 };
3388#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3389
3390/* Per-objfile data private to breakpoint.c. */
3391struct breakpoint_objfile_data
3392{
3393 /* Minimal symbol for "_ovly_debug_event" (if any). */
3b7344d5 3394 struct bound_minimal_symbol overlay_msym;
17450429
PP
3395
3396 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
3b7344d5 3397 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
17450429 3398
28106bc2
SDJ
3399 /* True if we have looked for longjmp probes. */
3400 int longjmp_searched;
3401
3402 /* SystemTap probe points for longjmp (if any). */
3403 VEC (probe_p) *longjmp_probes;
3404
17450429 3405 /* Minimal symbol for "std::terminate()" (if any). */
3b7344d5 3406 struct bound_minimal_symbol terminate_msym;
17450429
PP
3407
3408 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
3b7344d5 3409 struct bound_minimal_symbol exception_msym;
28106bc2
SDJ
3410
3411 /* True if we have looked for exception probes. */
3412 int exception_searched;
3413
3414 /* SystemTap probe points for unwinding (if any). */
3415 VEC (probe_p) *exception_probes;
17450429
PP
3416};
3417
3418static const struct objfile_data *breakpoint_objfile_key;
3419
3420/* Minimal symbol not found sentinel. */
3421static struct minimal_symbol msym_not_found;
3422
3423/* Returns TRUE if MSYM point to the "not found" sentinel. */
3424
3425static int
3426msym_not_found_p (const struct minimal_symbol *msym)
3427{
3428 return msym == &msym_not_found;
3429}
3430
3431/* Return per-objfile data needed by breakpoint.c.
3432 Allocate the data if necessary. */
3433
3434static struct breakpoint_objfile_data *
3435get_breakpoint_objfile_data (struct objfile *objfile)
3436{
3437 struct breakpoint_objfile_data *bp_objfile_data;
3438
9a3c8263
SM
3439 bp_objfile_data = ((struct breakpoint_objfile_data *)
3440 objfile_data (objfile, breakpoint_objfile_key));
17450429
PP
3441 if (bp_objfile_data == NULL)
3442 {
8d749320
SM
3443 bp_objfile_data =
3444 XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
17450429
PP
3445
3446 memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3447 set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3448 }
3449 return bp_objfile_data;
3450}
3451
28106bc2
SDJ
3452static void
3453free_breakpoint_probes (struct objfile *obj, void *data)
3454{
9a3c8263
SM
3455 struct breakpoint_objfile_data *bp_objfile_data
3456 = (struct breakpoint_objfile_data *) data;
28106bc2
SDJ
3457
3458 VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3459 VEC_free (probe_p, bp_objfile_data->exception_probes);
3460}
3461
e62c965a 3462static void
af02033e 3463create_overlay_event_breakpoint (void)
e62c965a 3464{
69de3c6a 3465 struct objfile *objfile;
af02033e 3466 const char *const func_name = "_ovly_debug_event";
e62c965a 3467
69de3c6a
PP
3468 ALL_OBJFILES (objfile)
3469 {
3470 struct breakpoint *b;
17450429
PP
3471 struct breakpoint_objfile_data *bp_objfile_data;
3472 CORE_ADDR addr;
67994074 3473 struct explicit_location explicit_loc;
69de3c6a 3474
17450429
PP
3475 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3476
3b7344d5 3477 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3478 continue;
3479
3b7344d5 3480 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3481 {
3b7344d5 3482 struct bound_minimal_symbol m;
17450429
PP
3483
3484 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3485 if (m.minsym == NULL)
17450429
PP
3486 {
3487 /* Avoid future lookups in this objfile. */
3b7344d5 3488 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3489 continue;
3490 }
3491 bp_objfile_data->overlay_msym = m;
3492 }
e62c965a 3493
77e371c0 3494 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3495 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3496 bp_overlay_event,
3497 &internal_breakpoint_ops);
67994074
KS
3498 initialize_explicit_location (&explicit_loc);
3499 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3500 b->location = new_explicit_location (&explicit_loc);
e62c965a 3501
69de3c6a
PP
3502 if (overlay_debugging == ovly_auto)
3503 {
3504 b->enable_state = bp_enabled;
3505 overlay_events_enabled = 1;
3506 }
3507 else
3508 {
3509 b->enable_state = bp_disabled;
3510 overlay_events_enabled = 0;
3511 }
e62c965a 3512 }
e62c965a
PP
3513}
3514
0fd8e87f 3515static void
af02033e 3516create_longjmp_master_breakpoint (void)
0fd8e87f 3517{
6c95b8df 3518 struct program_space *pspace;
6c95b8df 3519
5ed8105e 3520 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3521
6c95b8df 3522 ALL_PSPACES (pspace)
af02033e
PP
3523 {
3524 struct objfile *objfile;
3525
3526 set_current_program_space (pspace);
3527
3528 ALL_OBJFILES (objfile)
0fd8e87f 3529 {
af02033e
PP
3530 int i;
3531 struct gdbarch *gdbarch;
17450429 3532 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3533
af02033e 3534 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3535
17450429
PP
3536 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3537
28106bc2
SDJ
3538 if (!bp_objfile_data->longjmp_searched)
3539 {
25f9533e
SDJ
3540 VEC (probe_p) *ret;
3541
3542 ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3543 if (ret != NULL)
3544 {
3545 /* We are only interested in checking one element. */
3546 struct probe *p = VEC_index (probe_p, ret, 0);
3547
3548 if (!can_evaluate_probe_arguments (p))
3549 {
3550 /* We cannot use the probe interface here, because it does
3551 not know how to evaluate arguments. */
3552 VEC_free (probe_p, ret);
3553 ret = NULL;
3554 }
3555 }
3556 bp_objfile_data->longjmp_probes = ret;
28106bc2
SDJ
3557 bp_objfile_data->longjmp_searched = 1;
3558 }
3559
3560 if (bp_objfile_data->longjmp_probes != NULL)
3561 {
3562 int i;
3563 struct probe *probe;
3564 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3565
3566 for (i = 0;
3567 VEC_iterate (probe_p,
3568 bp_objfile_data->longjmp_probes,
3569 i, probe);
3570 ++i)
3571 {
3572 struct breakpoint *b;
3573
729662a5
TT
3574 b = create_internal_breakpoint (gdbarch,
3575 get_probe_address (probe,
3576 objfile),
28106bc2
SDJ
3577 bp_longjmp_master,
3578 &internal_breakpoint_ops);
d28cd78a 3579 b->location = new_probe_location ("-probe-stap libc:longjmp");
28106bc2
SDJ
3580 b->enable_state = bp_disabled;
3581 }
3582
3583 continue;
3584 }
3585
0569175e
TSD
3586 if (!gdbarch_get_longjmp_target_p (gdbarch))
3587 continue;
3588
17450429 3589 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
af02033e
PP
3590 {
3591 struct breakpoint *b;
af02033e 3592 const char *func_name;
17450429 3593 CORE_ADDR addr;
67994074 3594 struct explicit_location explicit_loc;
6c95b8df 3595
3b7344d5 3596 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
af02033e 3597 continue;
0fd8e87f 3598
17450429 3599 func_name = longjmp_names[i];
3b7344d5 3600 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
17450429 3601 {
3b7344d5 3602 struct bound_minimal_symbol m;
17450429
PP
3603
3604 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3605 if (m.minsym == NULL)
17450429
PP
3606 {
3607 /* Prevent future lookups in this objfile. */
3b7344d5 3608 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
17450429
PP
3609 continue;
3610 }
3611 bp_objfile_data->longjmp_msym[i] = m;
3612 }
3613
77e371c0 3614 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
06edf0c0
PA
3615 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3616 &internal_breakpoint_ops);
67994074
KS
3617 initialize_explicit_location (&explicit_loc);
3618 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3619 b->location = new_explicit_location (&explicit_loc);
af02033e
PP
3620 b->enable_state = bp_disabled;
3621 }
0fd8e87f 3622 }
af02033e 3623 }
0fd8e87f
UW
3624}
3625
af02033e 3626/* Create a master std::terminate breakpoint. */
aa7d318d 3627static void
af02033e 3628create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3629{
3630 struct program_space *pspace;
af02033e 3631 const char *const func_name = "std::terminate()";
aa7d318d 3632
5ed8105e 3633 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3634
3635 ALL_PSPACES (pspace)
17450429
PP
3636 {
3637 struct objfile *objfile;
3638 CORE_ADDR addr;
3639
3640 set_current_program_space (pspace);
3641
aa7d318d
TT
3642 ALL_OBJFILES (objfile)
3643 {
3644 struct breakpoint *b;
17450429 3645 struct breakpoint_objfile_data *bp_objfile_data;
67994074 3646 struct explicit_location explicit_loc;
aa7d318d 3647
17450429 3648 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3649
3b7344d5 3650 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
17450429
PP
3651 continue;
3652
3b7344d5 3653 if (bp_objfile_data->terminate_msym.minsym == NULL)
17450429 3654 {
3b7344d5 3655 struct bound_minimal_symbol m;
17450429
PP
3656
3657 m = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5
TT
3658 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3659 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
17450429
PP
3660 {
3661 /* Prevent future lookups in this objfile. */
3b7344d5 3662 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
17450429
PP
3663 continue;
3664 }
3665 bp_objfile_data->terminate_msym = m;
3666 }
aa7d318d 3667
77e371c0 3668 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
17450429 3669 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3670 bp_std_terminate_master,
3671 &internal_breakpoint_ops);
67994074
KS
3672 initialize_explicit_location (&explicit_loc);
3673 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3674 b->location = new_explicit_location (&explicit_loc);
aa7d318d
TT
3675 b->enable_state = bp_disabled;
3676 }
17450429 3677 }
aa7d318d
TT
3678}
3679
186c406b
TT
3680/* Install a master breakpoint on the unwinder's debug hook. */
3681
70221824 3682static void
186c406b
TT
3683create_exception_master_breakpoint (void)
3684{
3685 struct objfile *objfile;
17450429 3686 const char *const func_name = "_Unwind_DebugHook";
186c406b
TT
3687
3688 ALL_OBJFILES (objfile)
3689 {
17450429
PP
3690 struct breakpoint *b;
3691 struct gdbarch *gdbarch;
3692 struct breakpoint_objfile_data *bp_objfile_data;
3693 CORE_ADDR addr;
67994074 3694 struct explicit_location explicit_loc;
17450429
PP
3695
3696 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3697
28106bc2
SDJ
3698 /* We prefer the SystemTap probe point if it exists. */
3699 if (!bp_objfile_data->exception_searched)
3700 {
25f9533e
SDJ
3701 VEC (probe_p) *ret;
3702
3703 ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3704
3705 if (ret != NULL)
3706 {
3707 /* We are only interested in checking one element. */
3708 struct probe *p = VEC_index (probe_p, ret, 0);
3709
3710 if (!can_evaluate_probe_arguments (p))
3711 {
3712 /* We cannot use the probe interface here, because it does
3713 not know how to evaluate arguments. */
3714 VEC_free (probe_p, ret);
3715 ret = NULL;
3716 }
3717 }
3718 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3719 bp_objfile_data->exception_searched = 1;
3720 }
3721
3722 if (bp_objfile_data->exception_probes != NULL)
3723 {
3724 struct gdbarch *gdbarch = get_objfile_arch (objfile);
3725 int i;
3726 struct probe *probe;
3727
3728 for (i = 0;
3729 VEC_iterate (probe_p,
3730 bp_objfile_data->exception_probes,
3731 i, probe);
3732 ++i)
3733 {
3734 struct breakpoint *b;
3735
729662a5
TT
3736 b = create_internal_breakpoint (gdbarch,
3737 get_probe_address (probe,
3738 objfile),
28106bc2
SDJ
3739 bp_exception_master,
3740 &internal_breakpoint_ops);
d28cd78a 3741 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3742 b->enable_state = bp_disabled;
3743 }
3744
3745 continue;
3746 }
3747
3748 /* Otherwise, try the hook function. */
3749
3b7344d5 3750 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3751 continue;
3752
3753 gdbarch = get_objfile_arch (objfile);
186c406b 3754
3b7344d5 3755 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3756 {
3b7344d5 3757 struct bound_minimal_symbol debug_hook;
186c406b 3758
17450429 3759 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3760 if (debug_hook.minsym == NULL)
17450429 3761 {
3b7344d5 3762 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3763 continue;
3764 }
3765
3766 bp_objfile_data->exception_msym = debug_hook;
186c406b 3767 }
17450429 3768
77e371c0 3769 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
17450429
PP
3770 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3771 &current_target);
06edf0c0
PA
3772 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3773 &internal_breakpoint_ops);
67994074
KS
3774 initialize_explicit_location (&explicit_loc);
3775 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3776 b->location = new_explicit_location (&explicit_loc);
17450429 3777 b->enable_state = bp_disabled;
186c406b 3778 }
186c406b
TT
3779}
3780
9ef9e6a6
KS
3781/* Does B have a location spec? */
3782
3783static int
3784breakpoint_event_location_empty_p (const struct breakpoint *b)
3785{
d28cd78a 3786 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3787}
3788
c906108c 3789void
fba45db2 3790update_breakpoints_after_exec (void)
c906108c 3791{
35df4500 3792 struct breakpoint *b, *b_tmp;
876fa593 3793 struct bp_location *bploc, **bplocp_tmp;
c906108c 3794
25b22b0a
PA
3795 /* We're about to delete breakpoints from GDB's lists. If the
3796 INSERTED flag is true, GDB will try to lift the breakpoints by
3797 writing the breakpoints' "shadow contents" back into memory. The
3798 "shadow contents" are NOT valid after an exec, so GDB should not
3799 do that. Instead, the target is responsible from marking
3800 breakpoints out as soon as it detects an exec. We don't do that
3801 here instead, because there may be other attempts to delete
3802 breakpoints after detecting an exec and before reaching here. */
876fa593 3803 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3804 if (bploc->pspace == current_program_space)
3805 gdb_assert (!bploc->inserted);
c906108c 3806
35df4500 3807 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3808 {
6c95b8df
PA
3809 if (b->pspace != current_program_space)
3810 continue;
3811
4a64f543 3812 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3813 if (b->type == bp_shlib_event)
3814 {
3815 delete_breakpoint (b);
3816 continue;
3817 }
c906108c 3818
4a64f543 3819 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3820 if (b->type == bp_jit_event)
3821 {
3822 delete_breakpoint (b);
3823 continue;
3824 }
3825
1900040c 3826 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3827 as must overlay event and longjmp master breakpoints. */
3828 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3829 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3830 || b->type == bp_exception_master)
c4093a6a
JM
3831 {
3832 delete_breakpoint (b);
3833 continue;
3834 }
3835
4a64f543 3836 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3837 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3838 {
3839 delete_breakpoint (b);
3840 continue;
3841 }
3842
7c16b83e
PA
3843 /* Just like single-step breakpoints. */
3844 if (b->type == bp_single_step)
3845 {
3846 delete_breakpoint (b);
3847 continue;
3848 }
3849
611c83ae
PA
3850 /* Longjmp and longjmp-resume breakpoints are also meaningless
3851 after an exec. */
186c406b 3852 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3853 || b->type == bp_longjmp_call_dummy
186c406b 3854 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3855 {
3856 delete_breakpoint (b);
3857 continue;
3858 }
3859
ce78b96d
JB
3860 if (b->type == bp_catchpoint)
3861 {
3862 /* For now, none of the bp_catchpoint breakpoints need to
3863 do anything at this point. In the future, if some of
3864 the catchpoints need to something, we will need to add
3865 a new method, and call this method from here. */
3866 continue;
3867 }
3868
c5aa993b
JM
3869 /* bp_finish is a special case. The only way we ought to be able
3870 to see one of these when an exec() has happened, is if the user
3871 caught a vfork, and then said "finish". Ordinarily a finish just
3872 carries them to the call-site of the current callee, by setting
3873 a temporary bp there and resuming. But in this case, the finish
3874 will carry them entirely through the vfork & exec.
3875
3876 We don't want to allow a bp_finish to remain inserted now. But
3877 we can't safely delete it, 'cause finish_command has a handle to
3878 the bp on a bpstat, and will later want to delete it. There's a
3879 chance (and I've seen it happen) that if we delete the bp_finish
3880 here, that its storage will get reused by the time finish_command
3881 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3882 We really must allow finish_command to delete a bp_finish.
3883
e5dd4106 3884 In the absence of a general solution for the "how do we know
53a5351d
JM
3885 it's safe to delete something others may have handles to?"
3886 problem, what we'll do here is just uninsert the bp_finish, and
3887 let finish_command delete it.
3888
3889 (We know the bp_finish is "doomed" in the sense that it's
3890 momentary, and will be deleted as soon as finish_command sees
3891 the inferior stopped. So it doesn't matter that the bp's
3892 address is probably bogus in the new a.out, unlike e.g., the
3893 solib breakpoints.) */
c5aa993b 3894
c5aa993b
JM
3895 if (b->type == bp_finish)
3896 {
3897 continue;
3898 }
3899
3900 /* Without a symbolic address, we have little hope of the
3901 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3902 a.out. */
9ef9e6a6 3903 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3904 {
3905 delete_breakpoint (b);
3906 continue;
3907 }
c5aa993b 3908 }
c906108c
SS
3909}
3910
3911int
d80ee84f 3912detach_breakpoints (ptid_t ptid)
c906108c 3913{
35df4500 3914 struct bp_location *bl, **blp_tmp;
3a1bae8e 3915 int val = 0;
ce696e05 3916 struct cleanup *old_chain = save_inferior_ptid ();
6c95b8df 3917 struct inferior *inf = current_inferior ();
c5aa993b 3918
dfd4cc63 3919 if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
8a3fe4f8 3920 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3921
6c95b8df 3922 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3923 inferior_ptid = ptid;
35df4500 3924 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3925 {
35df4500 3926 if (bl->pspace != inf->pspace)
6c95b8df
PA
3927 continue;
3928
bd9673a4
PW
3929 /* This function must physically remove breakpoints locations
3930 from the specified ptid, without modifying the breakpoint
3931 package's state. Locations of type bp_loc_other are only
3932 maintained at GDB side. So, there is no need to remove
3933 these bp_loc_other locations. Moreover, removing these
3934 would modify the breakpoint package's state. */
3935 if (bl->loc_type == bp_loc_other)
3936 continue;
3937
35df4500 3938 if (bl->inserted)
b2b6a7da 3939 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3940 }
d03285ec 3941
ce696e05 3942 do_cleanups (old_chain);
3a1bae8e 3943 return val;
c906108c
SS
3944}
3945
35df4500 3946/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3947 Note that this is used to detach breakpoints from a child fork.
3948 When we get here, the child isn't in the inferior list, and neither
3949 do we have objects to represent its address space --- we should
35df4500 3950 *not* look at bl->pspace->aspace here. */
6c95b8df 3951
c906108c 3952static int
b2b6a7da 3953remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3954{
3955 int val;
c5aa993b 3956
35df4500
TJB
3957 /* BL is never in moribund_locations by our callers. */
3958 gdb_assert (bl->owner != NULL);
2bdf28a0 3959
74960c60
VP
3960 /* The type of none suggests that owner is actually deleted.
3961 This should not ever happen. */
35df4500 3962 gdb_assert (bl->owner->type != bp_none);
0bde7532 3963
35df4500
TJB
3964 if (bl->loc_type == bp_loc_software_breakpoint
3965 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3966 {
c02f5703
MS
3967 /* "Normal" instruction breakpoint: either the standard
3968 trap-instruction bp (bp_breakpoint), or a
3969 bp_hardware_breakpoint. */
3970
3971 /* First check to see if we have to handle an overlay. */
3972 if (overlay_debugging == ovly_off
35df4500
TJB
3973 || bl->section == NULL
3974 || !(section_is_overlay (bl->section)))
c02f5703
MS
3975 {
3976 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3977
3978 /* If we're trying to uninsert a memory breakpoint that we
3979 know is set in a dynamic object that is marked
3980 shlib_disabled, then either the dynamic object was
3981 removed with "remove-symbol-file" or with
3982 "nosharedlibrary". In the former case, we don't know
3983 whether another dynamic object might have loaded over the
3984 breakpoint's address -- the user might well let us know
3985 about it next with add-symbol-file (the whole point of
d03de421 3986 add-symbol-file is letting the user manually maintain a
08351840
PA
3987 list of dynamically loaded objects). If we have the
3988 breakpoint's shadow memory, that is, this is a software
3989 breakpoint managed by GDB, check whether the breakpoint
3990 is still inserted in memory, to avoid overwriting wrong
3991 code with stale saved shadow contents. Note that HW
3992 breakpoints don't have shadow memory, as they're
3993 implemented using a mechanism that is not dependent on
3994 being able to modify the target's memory, and as such
3995 they should always be removed. */
3996 if (bl->shlib_disabled
3997 && bl->target_info.shadow_len != 0
3998 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3999 val = 0;
4000 else
73971819 4001 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 4002 }
c906108c
SS
4003 else
4004 {
4a64f543 4005 /* This breakpoint is in an overlay section.
c02f5703
MS
4006 Did we set a breakpoint at the LMA? */
4007 if (!overlay_events_enabled)
4008 {
4009 /* Yes -- overlay event support is not active, so we
4010 should have set a breakpoint at the LMA. Remove it.
4011 */
c02f5703
MS
4012 /* Ignore any failures: if the LMA is in ROM, we will
4013 have already warned when we failed to insert it. */
35df4500
TJB
4014 if (bl->loc_type == bp_loc_hardware_breakpoint)
4015 target_remove_hw_breakpoint (bl->gdbarch,
4016 &bl->overlay_target_info);
c02f5703 4017 else
35df4500 4018 target_remove_breakpoint (bl->gdbarch,
73971819
PA
4019 &bl->overlay_target_info,
4020 reason);
c02f5703
MS
4021 }
4022 /* Did we set a breakpoint at the VMA?
4023 If so, we will have marked the breakpoint 'inserted'. */
35df4500 4024 if (bl->inserted)
c906108c 4025 {
c02f5703
MS
4026 /* Yes -- remove it. Previously we did not bother to
4027 remove the breakpoint if the section had been
4028 unmapped, but let's not rely on that being safe. We
4029 don't know what the overlay manager might do. */
aa67235e
UW
4030
4031 /* However, we should remove *software* breakpoints only
4032 if the section is still mapped, or else we overwrite
4033 wrong code with the saved shadow contents. */
348d480f
PA
4034 if (bl->loc_type == bp_loc_hardware_breakpoint
4035 || section_is_mapped (bl->section))
73971819 4036 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
4037 else
4038 val = 0;
c906108c 4039 }
c02f5703
MS
4040 else
4041 {
4042 /* No -- not inserted, so no need to remove. No error. */
4043 val = 0;
4044 }
c906108c 4045 }
879d1e6b 4046
08351840
PA
4047 /* In some cases, we might not be able to remove a breakpoint in
4048 a shared library that has already been removed, but we have
4049 not yet processed the shlib unload event. Similarly for an
4050 unloaded add-symbol-file object - the user might not yet have
4051 had the chance to remove-symbol-file it. shlib_disabled will
4052 be set if the library/object has already been removed, but
4053 the breakpoint hasn't been uninserted yet, e.g., after
4054 "nosharedlibrary" or "remove-symbol-file" with breakpoints
4055 always-inserted mode. */
076855f9 4056 if (val
08351840
PA
4057 && (bl->loc_type == bp_loc_software_breakpoint
4058 && (bl->shlib_disabled
4059 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
4060 || shared_objfile_contains_address_p (bl->pspace,
4061 bl->address))))
879d1e6b
UW
4062 val = 0;
4063
c906108c
SS
4064 if (val)
4065 return val;
b2b6a7da 4066 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 4067 }
35df4500 4068 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 4069 {
77b06cd7
TJB
4070 gdb_assert (bl->owner->ops != NULL
4071 && bl->owner->ops->remove_location != NULL);
4072
b2b6a7da 4073 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 4074 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 4075
c906108c 4076 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 4077 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 4078 warning (_("Could not remove hardware watchpoint %d."),
35df4500 4079 bl->owner->number);
c906108c 4080 }
35df4500
TJB
4081 else if (bl->owner->type == bp_catchpoint
4082 && breakpoint_enabled (bl->owner)
4083 && !bl->duplicate)
ce78b96d 4084 {
77b06cd7
TJB
4085 gdb_assert (bl->owner->ops != NULL
4086 && bl->owner->ops->remove_location != NULL);
ce78b96d 4087
73971819 4088 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
4089 if (val)
4090 return val;
77b06cd7 4091
b2b6a7da 4092 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 4093 }
c906108c
SS
4094
4095 return 0;
4096}
4097
6c95b8df 4098static int
834c0d03 4099remove_breakpoint (struct bp_location *bl)
6c95b8df 4100{
35df4500
TJB
4101 /* BL is never in moribund_locations by our callers. */
4102 gdb_assert (bl->owner != NULL);
2bdf28a0 4103
6c95b8df
PA
4104 /* The type of none suggests that owner is actually deleted.
4105 This should not ever happen. */
35df4500 4106 gdb_assert (bl->owner->type != bp_none);
6c95b8df 4107
5ed8105e 4108 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 4109
35df4500 4110 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 4111
5ed8105e 4112 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
4113}
4114
c906108c
SS
4115/* Clear the "inserted" flag in all breakpoints. */
4116
25b22b0a 4117void
fba45db2 4118mark_breakpoints_out (void)
c906108c 4119{
35df4500 4120 struct bp_location *bl, **blp_tmp;
c906108c 4121
35df4500 4122 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 4123 if (bl->pspace == current_program_space)
35df4500 4124 bl->inserted = 0;
c906108c
SS
4125}
4126
53a5351d
JM
4127/* Clear the "inserted" flag in all breakpoints and delete any
4128 breakpoints which should go away between runs of the program.
c906108c
SS
4129
4130 Plus other such housekeeping that has to be done for breakpoints
4131 between runs.
4132
53a5351d
JM
4133 Note: this function gets called at the end of a run (by
4134 generic_mourn_inferior) and when a run begins (by
4a64f543 4135 init_wait_for_inferior). */
c906108c
SS
4136
4137
4138
4139void
fba45db2 4140breakpoint_init_inferior (enum inf_context context)
c906108c 4141{
35df4500 4142 struct breakpoint *b, *b_tmp;
870f88f7 4143 struct bp_location *bl;
1c5cfe86 4144 int ix;
6c95b8df 4145 struct program_space *pspace = current_program_space;
c906108c 4146
50c71eaf
PA
4147 /* If breakpoint locations are shared across processes, then there's
4148 nothing to do. */
f5656ead 4149 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
4150 return;
4151
1a853c52 4152 mark_breakpoints_out ();
075f6582 4153
35df4500 4154 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 4155 {
6c95b8df
PA
4156 if (b->loc && b->loc->pspace != pspace)
4157 continue;
4158
c5aa993b
JM
4159 switch (b->type)
4160 {
4161 case bp_call_dummy:
e2e4d78b 4162 case bp_longjmp_call_dummy:
c906108c 4163
c5aa993b 4164 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
4165 cause problems when the inferior is rerun, so we better get
4166 rid of it. */
4167
4168 case bp_watchpoint_scope:
4169
4170 /* Also get rid of scope breakpoints. */
4171
4172 case bp_shlib_event:
4173
4174 /* Also remove solib event breakpoints. Their addresses may
4175 have changed since the last time we ran the program.
4176 Actually we may now be debugging against different target;
4177 and so the solib backend that installed this breakpoint may
4178 not be used in by the target. E.g.,
4179
4180 (gdb) file prog-linux
4181 (gdb) run # native linux target
4182 ...
4183 (gdb) kill
4184 (gdb) file prog-win.exe
4185 (gdb) tar rem :9999 # remote Windows gdbserver.
4186 */
c906108c 4187
f59f708a
PA
4188 case bp_step_resume:
4189
4190 /* Also remove step-resume breakpoints. */
4191
7c16b83e
PA
4192 case bp_single_step:
4193
4194 /* Also remove single-step breakpoints. */
4195
c5aa993b
JM
4196 delete_breakpoint (b);
4197 break;
c906108c 4198
c5aa993b
JM
4199 case bp_watchpoint:
4200 case bp_hardware_watchpoint:
4201 case bp_read_watchpoint:
4202 case bp_access_watchpoint:
3a5c3e22
PA
4203 {
4204 struct watchpoint *w = (struct watchpoint *) b;
c906108c 4205
3a5c3e22
PA
4206 /* Likewise for watchpoints on local expressions. */
4207 if (w->exp_valid_block != NULL)
4208 delete_breakpoint (b);
63000888 4209 else
3a5c3e22 4210 {
63000888
PA
4211 /* Get rid of existing locations, which are no longer
4212 valid. New ones will be created in
4213 update_watchpoint, when the inferior is restarted.
4214 The next update_global_location_list call will
4215 garbage collect them. */
4216 b->loc = NULL;
4217
4218 if (context == inf_starting)
4219 {
4220 /* Reset val field to force reread of starting value in
4221 insert_breakpoints. */
4222 if (w->val)
4223 value_free (w->val);
4224 w->val = NULL;
4225 w->val_valid = 0;
4226 }
4227 }
3a5c3e22 4228 }
c5aa993b
JM
4229 break;
4230 default:
c5aa993b
JM
4231 break;
4232 }
4233 }
1c5cfe86
PA
4234
4235 /* Get rid of the moribund locations. */
35df4500
TJB
4236 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4237 decref_bp_location (&bl);
1c5cfe86 4238 VEC_free (bp_location_p, moribund_locations);
c906108c
SS
4239}
4240
6c95b8df
PA
4241/* These functions concern about actual breakpoints inserted in the
4242 target --- to e.g. check if we need to do decr_pc adjustment or if
4243 we need to hop over the bkpt --- so we check for address space
4244 match, not program space. */
4245
c2c6d25f
JM
4246/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4247 exists at PC. It returns ordinary_breakpoint_here if it's an
4248 ordinary breakpoint, or permanent_breakpoint_here if it's a
4249 permanent breakpoint.
4250 - When continuing from a location with an ordinary breakpoint, we
4251 actually single step once before calling insert_breakpoints.
e5dd4106 4252 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
4253 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4254 the target, to advance the PC past the breakpoint. */
c906108c 4255
c2c6d25f 4256enum breakpoint_here
6c95b8df 4257breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
c906108c 4258{
35df4500 4259 struct bp_location *bl, **blp_tmp;
c2c6d25f 4260 int any_breakpoint_here = 0;
c906108c 4261
35df4500 4262 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 4263 {
35df4500
TJB
4264 if (bl->loc_type != bp_loc_software_breakpoint
4265 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4266 continue;
4267
f1310107 4268 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 4269 if ((breakpoint_enabled (bl->owner)
1a853c52 4270 || bl->permanent)
f1310107 4271 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
4272 {
4273 if (overlay_debugging
35df4500
TJB
4274 && section_is_overlay (bl->section)
4275 && !section_is_mapped (bl->section))
075f6582 4276 continue; /* unmapped overlay -- can't be a match */
1a853c52 4277 else if (bl->permanent)
075f6582
DJ
4278 return permanent_breakpoint_here;
4279 else
4280 any_breakpoint_here = 1;
4281 }
4282 }
c906108c 4283
f486487f 4284 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4285}
4286
d35ae833
PA
4287/* See breakpoint.h. */
4288
4289int
4290breakpoint_in_range_p (struct address_space *aspace,
4291 CORE_ADDR addr, ULONGEST len)
4292{
4293 struct bp_location *bl, **blp_tmp;
4294
4295 ALL_BP_LOCATIONS (bl, blp_tmp)
4296 {
4297 if (bl->loc_type != bp_loc_software_breakpoint
4298 && bl->loc_type != bp_loc_hardware_breakpoint)
4299 continue;
4300
4301 if ((breakpoint_enabled (bl->owner)
4302 || bl->permanent)
4303 && breakpoint_location_address_range_overlap (bl, aspace,
4304 addr, len))
4305 {
4306 if (overlay_debugging
4307 && section_is_overlay (bl->section)
4308 && !section_is_mapped (bl->section))
4309 {
4310 /* Unmapped overlay -- can't be a match. */
4311 continue;
4312 }
4313
4314 return 1;
4315 }
4316 }
4317
4318 return 0;
4319}
4320
1c5cfe86
PA
4321/* Return true if there's a moribund breakpoint at PC. */
4322
4323int
6c95b8df 4324moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
1c5cfe86
PA
4325{
4326 struct bp_location *loc;
4327 int ix;
4328
4329 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f1310107 4330 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4331 return 1;
4332
4333 return 0;
4334}
c2c6d25f 4335
f7ce857f
PA
4336/* Returns non-zero iff BL is inserted at PC, in address space
4337 ASPACE. */
4338
4339static int
4340bp_location_inserted_here_p (struct bp_location *bl,
4341 struct address_space *aspace, CORE_ADDR pc)
4342{
4343 if (bl->inserted
4344 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4345 aspace, pc))
4346 {
4347 if (overlay_debugging
4348 && section_is_overlay (bl->section)
4349 && !section_is_mapped (bl->section))
4350 return 0; /* unmapped overlay -- can't be a match */
4351 else
4352 return 1;
4353 }
4354 return 0;
4355}
4356
a1fd2fa5 4357/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4358
4359int
a1fd2fa5 4360breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
c906108c 4361{
f7ce857f 4362 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4363
f7ce857f 4364 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4365 {
f7ce857f
PA
4366 struct bp_location *bl = *blp;
4367
35df4500
TJB
4368 if (bl->loc_type != bp_loc_software_breakpoint
4369 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4370 continue;
4371
f7ce857f
PA
4372 if (bp_location_inserted_here_p (bl, aspace, pc))
4373 return 1;
c5aa993b 4374 }
c36b740a
VP
4375 return 0;
4376}
4377
a1fd2fa5
PA
4378/* This function returns non-zero iff there is a software breakpoint
4379 inserted at PC. */
c36b740a
VP
4380
4381int
a1fd2fa5
PA
4382software_breakpoint_inserted_here_p (struct address_space *aspace,
4383 CORE_ADDR pc)
4fa8626c 4384{
f7ce857f 4385 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4386
f7ce857f 4387 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4388 {
f7ce857f
PA
4389 struct bp_location *bl = *blp;
4390
35df4500 4391 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4392 continue;
4393
f7ce857f
PA
4394 if (bp_location_inserted_here_p (bl, aspace, pc))
4395 return 1;
4fa8626c
DJ
4396 }
4397
4398 return 0;
9c02b525
PA
4399}
4400
4401/* See breakpoint.h. */
4402
4403int
4404hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4405 CORE_ADDR pc)
4406{
4407 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4408
4409 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4410 {
4411 struct bp_location *bl = *blp;
4412
4413 if (bl->loc_type != bp_loc_hardware_breakpoint)
4414 continue;
4415
4416 if (bp_location_inserted_here_p (bl, aspace, pc))
4417 return 1;
4418 }
4419
4420 return 0;
4fa8626c
DJ
4421}
4422
9093389c
PA
4423int
4424hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4425 CORE_ADDR addr, ULONGEST len)
4426{
4427 struct breakpoint *bpt;
4428
4429 ALL_BREAKPOINTS (bpt)
4430 {
4431 struct bp_location *loc;
4432
4433 if (bpt->type != bp_hardware_watchpoint
4434 && bpt->type != bp_access_watchpoint)
4435 continue;
4436
4437 if (!breakpoint_enabled (bpt))
4438 continue;
4439
4440 for (loc = bpt->loc; loc; loc = loc->next)
4441 if (loc->pspace->aspace == aspace && loc->inserted)
4442 {
4443 CORE_ADDR l, h;
4444
4445 /* Check for intersection. */
768adc05
PA
4446 l = std::max<CORE_ADDR> (loc->address, addr);
4447 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4448 if (l < h)
4449 return 1;
4450 }
4451 }
4452 return 0;
4453}
c906108c 4454\f
c5aa993b 4455
c906108c
SS
4456/* bpstat stuff. External routines' interfaces are documented
4457 in breakpoint.h. */
4458
4459int
c326b90e 4460is_catchpoint (struct breakpoint *ep)
c906108c 4461{
533be4dd 4462 return (ep->type == bp_catchpoint);
c906108c
SS
4463}
4464
f431efe5
PA
4465/* Frees any storage that is part of a bpstat. Does not walk the
4466 'next' chain. */
4467
4468static void
198757a8
VP
4469bpstat_free (bpstat bs)
4470{
4471 if (bs->old_val != NULL)
4472 value_free (bs->old_val);
9add0f1b 4473 decref_counted_command_line (&bs->commands);
f431efe5 4474 decref_bp_location (&bs->bp_location_at);
198757a8
VP
4475 xfree (bs);
4476}
4477
c906108c
SS
4478/* Clear a bpstat so that it says we are not at any breakpoint.
4479 Also free any storage that is part of a bpstat. */
4480
4481void
fba45db2 4482bpstat_clear (bpstat *bsp)
c906108c
SS
4483{
4484 bpstat p;
4485 bpstat q;
4486
4487 if (bsp == 0)
4488 return;
4489 p = *bsp;
4490 while (p != NULL)
4491 {
4492 q = p->next;
198757a8 4493 bpstat_free (p);
c906108c
SS
4494 p = q;
4495 }
4496 *bsp = NULL;
4497}
4498
4499/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4500 is part of the bpstat is copied as well. */
4501
4502bpstat
fba45db2 4503bpstat_copy (bpstat bs)
c906108c
SS
4504{
4505 bpstat p = NULL;
4506 bpstat tmp;
4507 bpstat retval = NULL;
4508
4509 if (bs == NULL)
4510 return bs;
4511
4512 for (; bs != NULL; bs = bs->next)
4513 {
4514 tmp = (bpstat) xmalloc (sizeof (*tmp));
4515 memcpy (tmp, bs, sizeof (*tmp));
9add0f1b 4516 incref_counted_command_line (tmp->commands);
f431efe5 4517 incref_bp_location (tmp->bp_location_at);
31cc81e9 4518 if (bs->old_val != NULL)
3c3185ac
JK
4519 {
4520 tmp->old_val = value_copy (bs->old_val);
4521 release_value (tmp->old_val);
4522 }
31cc81e9 4523
c906108c
SS
4524 if (p == NULL)
4525 /* This is the first thing in the chain. */
4526 retval = tmp;
4527 else
4528 p->next = tmp;
4529 p = tmp;
4530 }
4531 p->next = NULL;
4532 return retval;
4533}
4534
4a64f543 4535/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4536
4537bpstat
fba45db2 4538bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4539{
c5aa993b
JM
4540 if (bsp == NULL)
4541 return NULL;
c906108c 4542
c5aa993b
JM
4543 for (; bsp != NULL; bsp = bsp->next)
4544 {
f431efe5 4545 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4546 return bsp;
4547 }
c906108c
SS
4548 return NULL;
4549}
4550
ab04a2af
TT
4551/* See breakpoint.h. */
4552
47591c29 4553int
427cd150 4554bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4555{
ab04a2af
TT
4556 for (; bsp != NULL; bsp = bsp->next)
4557 {
427cd150
TT
4558 if (bsp->breakpoint_at == NULL)
4559 {
4560 /* A moribund location can never explain a signal other than
4561 GDB_SIGNAL_TRAP. */
4562 if (sig == GDB_SIGNAL_TRAP)
47591c29 4563 return 1;
427cd150
TT
4564 }
4565 else
47591c29
PA
4566 {
4567 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4568 sig))
4569 return 1;
4570 }
ab04a2af
TT
4571 }
4572
47591c29 4573 return 0;
ab04a2af
TT
4574}
4575
4a64f543
MS
4576/* Put in *NUM the breakpoint number of the first breakpoint we are
4577 stopped at. *BSP upon return is a bpstat which points to the
4578 remaining breakpoints stopped at (but which is not guaranteed to be
4579 good for anything but further calls to bpstat_num).
4580
8671a17b
PA
4581 Return 0 if passed a bpstat which does not indicate any breakpoints.
4582 Return -1 if stopped at a breakpoint that has been deleted since
4583 we set it.
4584 Return 1 otherwise. */
c906108c
SS
4585
4586int
8671a17b 4587bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4588{
4589 struct breakpoint *b;
4590
4591 if ((*bsp) == NULL)
4592 return 0; /* No more breakpoint values */
8671a17b 4593
4a64f543
MS
4594 /* We assume we'll never have several bpstats that correspond to a
4595 single breakpoint -- otherwise, this function might return the
4596 same number more than once and this will look ugly. */
f431efe5 4597 b = (*bsp)->breakpoint_at;
8671a17b
PA
4598 *bsp = (*bsp)->next;
4599 if (b == NULL)
4600 return -1; /* breakpoint that's been deleted since */
4601
4602 *num = b->number; /* We have its number */
4603 return 1;
c906108c
SS
4604}
4605
e93ca019 4606/* See breakpoint.h. */
c906108c
SS
4607
4608void
e93ca019 4609bpstat_clear_actions (void)
c906108c 4610{
e93ca019
JK
4611 struct thread_info *tp;
4612 bpstat bs;
4613
4614 if (ptid_equal (inferior_ptid, null_ptid))
4615 return;
4616
4617 tp = find_thread_ptid (inferior_ptid);
4618 if (tp == NULL)
4619 return;
4620
4621 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4622 {
9add0f1b 4623 decref_counted_command_line (&bs->commands);
abf85f46 4624
c906108c
SS
4625 if (bs->old_val != NULL)
4626 {
4627 value_free (bs->old_val);
4628 bs->old_val = NULL;
4629 }
4630 }
4631}
4632
f3b1572e
PA
4633/* Called when a command is about to proceed the inferior. */
4634
4635static void
4636breakpoint_about_to_proceed (void)
4637{
4638 if (!ptid_equal (inferior_ptid, null_ptid))
4639 {
4640 struct thread_info *tp = inferior_thread ();
4641
4642 /* Allow inferior function calls in breakpoint commands to not
4643 interrupt the command list. When the call finishes
4644 successfully, the inferior will be standing at the same
4645 breakpoint as if nothing happened. */
16c381f0 4646 if (tp->control.in_infcall)
f3b1572e
PA
4647 return;
4648 }
4649
4650 breakpoint_proceeded = 1;
4651}
4652
4a64f543
MS
4653/* Stub for cleaning up our state if we error-out of a breakpoint
4654 command. */
c906108c 4655static void
4efb68b1 4656cleanup_executing_breakpoints (void *ignore)
c906108c
SS
4657{
4658 executing_breakpoint_commands = 0;
4659}
4660
abf85f46
JK
4661/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4662 or its equivalent. */
4663
4664static int
4665command_line_is_silent (struct command_line *cmd)
4666{
4f45d445 4667 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4668}
4669
4a64f543
MS
4670/* Execute all the commands associated with all the breakpoints at
4671 this location. Any of these commands could cause the process to
4672 proceed beyond this point, etc. We look out for such changes by
4673 checking the global "breakpoint_proceeded" after each command.
c906108c 4674
347bddb7
PA
4675 Returns true if a breakpoint command resumed the inferior. In that
4676 case, it is the caller's responsibility to recall it again with the
4677 bpstat of the current thread. */
4678
4679static int
4680bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4681{
4682 bpstat bs;
4683 struct cleanup *old_chain;
347bddb7 4684 int again = 0;
c906108c
SS
4685
4686 /* Avoid endless recursion if a `source' command is contained
4687 in bs->commands. */
4688 if (executing_breakpoint_commands)
347bddb7 4689 return 0;
c906108c
SS
4690
4691 executing_breakpoint_commands = 1;
4692 old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4693
1ac32117 4694 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4695
4a64f543 4696 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4697 bs = *bsp;
4698
4699 breakpoint_proceeded = 0;
4700 for (; bs != NULL; bs = bs->next)
4701 {
9add0f1b 4702 struct counted_command_line *ccmd;
6c50ab1c
JB
4703 struct command_line *cmd;
4704 struct cleanup *this_cmd_tree_chain;
4705
4706 /* Take ownership of the BSP's command tree, if it has one.
4707
4708 The command tree could legitimately contain commands like
4709 'step' and 'next', which call clear_proceed_status, which
4710 frees stop_bpstat's command tree. To make sure this doesn't
4711 free the tree we're executing out from under us, we need to
4712 take ownership of the tree ourselves. Since a given bpstat's
4713 commands are only executed once, we don't need to copy it; we
4714 can clear the pointer in the bpstat, and make sure we free
4715 the tree when we're done. */
9add0f1b
TT
4716 ccmd = bs->commands;
4717 bs->commands = NULL;
abf85f46
JK
4718 this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4719 cmd = ccmd ? ccmd->commands : NULL;
4720 if (command_line_is_silent (cmd))
4721 {
4722 /* The action has been already done by bpstat_stop_status. */
4723 cmd = cmd->next;
4724 }
6c50ab1c 4725
c906108c
SS
4726 while (cmd != NULL)
4727 {
4728 execute_control_command (cmd);
4729
4730 if (breakpoint_proceeded)
4731 break;
4732 else
4733 cmd = cmd->next;
4734 }
6c50ab1c
JB
4735
4736 /* We can free this command tree now. */
4737 do_cleanups (this_cmd_tree_chain);
4738
c906108c 4739 if (breakpoint_proceeded)
32c1e744 4740 {
cb814510 4741 if (current_ui->async)
347bddb7
PA
4742 /* If we are in async mode, then the target might be still
4743 running, not stopped at any breakpoint, so nothing for
4744 us to do here -- just return to the event loop. */
4745 ;
32c1e744
VP
4746 else
4747 /* In sync mode, when execute_control_command returns
4748 we're already standing on the next breakpoint.
347bddb7
PA
4749 Breakpoint commands for that stop were not run, since
4750 execute_command does not run breakpoint commands --
4751 only command_line_handler does, but that one is not
4752 involved in execution of breakpoint commands. So, we
4753 can now execute breakpoint commands. It should be
4754 noted that making execute_command do bpstat actions is
4755 not an option -- in this case we'll have recursive
4756 invocation of bpstat for each breakpoint with a
4757 command, and can easily blow up GDB stack. Instead, we
4758 return true, which will trigger the caller to recall us
4759 with the new stop_bpstat. */
4760 again = 1;
4761 break;
32c1e744 4762 }
c906108c 4763 }
c2b8ed2c 4764 do_cleanups (old_chain);
347bddb7
PA
4765 return again;
4766}
4767
4768void
4769bpstat_do_actions (void)
4770{
353d1d73
JK
4771 struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4772
347bddb7
PA
4773 /* Do any commands attached to breakpoint we are stopped at. */
4774 while (!ptid_equal (inferior_ptid, null_ptid)
4775 && target_has_execution
4776 && !is_exited (inferior_ptid)
4777 && !is_executing (inferior_ptid))
4778 /* Since in sync mode, bpstat_do_actions may resume the inferior,
4779 and only return when it is stopped at the next breakpoint, we
4780 keep doing breakpoint actions until it returns false to
4781 indicate the inferior was not resumed. */
16c381f0 4782 if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
347bddb7 4783 break;
353d1d73
JK
4784
4785 discard_cleanups (cleanup_if_error);
c906108c
SS
4786}
4787
fa4727a6
DJ
4788/* Print out the (old or new) value associated with a watchpoint. */
4789
4790static void
4791watchpoint_value_print (struct value *val, struct ui_file *stream)
4792{
4793 if (val == NULL)
4794 fprintf_unfiltered (stream, _("<unreadable>"));
4795 else
79a45b7d
TT
4796 {
4797 struct value_print_options opts;
4798 get_user_print_options (&opts);
4799 value_print (val, stream, &opts);
4800 }
fa4727a6
DJ
4801}
4802
f303dbd6
PA
4803/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4804 debugging multiple threads. */
4805
4806void
4807maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4808{
112e8700 4809 if (uiout->is_mi_like_p ())
f303dbd6
PA
4810 return;
4811
112e8700 4812 uiout->text ("\n");
f303dbd6
PA
4813
4814 if (show_thread_that_caused_stop ())
4815 {
4816 const char *name;
4817 struct thread_info *thr = inferior_thread ();
4818
112e8700
SM
4819 uiout->text ("Thread ");
4820 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4821
4822 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4823 if (name != NULL)
4824 {
112e8700
SM
4825 uiout->text (" \"");
4826 uiout->field_fmt ("name", "%s", name);
4827 uiout->text ("\"");
f303dbd6
PA
4828 }
4829
112e8700 4830 uiout->text (" hit ");
f303dbd6
PA
4831 }
4832}
4833
e514a9d6 4834/* Generic routine for printing messages indicating why we
4a64f543 4835 stopped. The behavior of this function depends on the value
e514a9d6
JM
4836 'print_it' in the bpstat structure. Under some circumstances we
4837 may decide not to print anything here and delegate the task to
4a64f543 4838 normal_stop(). */
e514a9d6
JM
4839
4840static enum print_stop_action
4841print_bp_stop_message (bpstat bs)
4842{
4843 switch (bs->print_it)
4844 {
4845 case print_it_noop:
4a64f543 4846 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4847 return PRINT_UNKNOWN;
4848 break;
4849
4850 case print_it_done:
4851 /* We still want to print the frame, but we already printed the
4a64f543 4852 relevant messages. */
e514a9d6
JM
4853 return PRINT_SRC_AND_LOC;
4854 break;
4855
4856 case print_it_normal:
4f8d1dc6 4857 {
f431efe5
PA
4858 struct breakpoint *b = bs->breakpoint_at;
4859
1a6a67de
TJB
4860 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4861 which has since been deleted. */
4862 if (b == NULL)
4863 return PRINT_UNKNOWN;
4864
348d480f
PA
4865 /* Normal case. Call the breakpoint's print_it method. */
4866 return b->ops->print_it (bs);
4f8d1dc6 4867 }
348d480f 4868 break;
3086aeae 4869
e514a9d6 4870 default:
8e65ff28 4871 internal_error (__FILE__, __LINE__,
e2e0b3e5 4872 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4873 break;
c906108c 4874 }
c906108c
SS
4875}
4876
edcc5120
TT
4877/* A helper function that prints a shared library stopped event. */
4878
4879static void
4880print_solib_event (int is_catchpoint)
4881{
4882 int any_deleted
4883 = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4884 int any_added
4885 = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4886
4887 if (!is_catchpoint)
4888 {
4889 if (any_added || any_deleted)
112e8700 4890 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4891 else
112e8700
SM
4892 current_uiout->text (_("Stopped due to shared library event (no "
4893 "libraries added or removed)\n"));
edcc5120
TT
4894 }
4895
112e8700
SM
4896 if (current_uiout->is_mi_like_p ())
4897 current_uiout->field_string ("reason",
4898 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4899
4900 if (any_deleted)
4901 {
edcc5120
TT
4902 char *name;
4903 int ix;
4904
112e8700 4905 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4906 ui_out_emit_list list_emitter (current_uiout, "removed");
edcc5120
TT
4907 for (ix = 0;
4908 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4909 ix, name);
4910 ++ix)
4911 {
4912 if (ix > 0)
112e8700
SM
4913 current_uiout->text (" ");
4914 current_uiout->field_string ("library", name);
4915 current_uiout->text ("\n");
edcc5120 4916 }
edcc5120
TT
4917 }
4918
4919 if (any_added)
4920 {
4921 struct so_list *iter;
4922 int ix;
edcc5120 4923
112e8700 4924 current_uiout->text (_(" Inferior loaded "));
10f489e5 4925 ui_out_emit_list list_emitter (current_uiout, "added");
edcc5120
TT
4926 for (ix = 0;
4927 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4928 ix, iter);
4929 ++ix)
4930 {
4931 if (ix > 0)
112e8700
SM
4932 current_uiout->text (" ");
4933 current_uiout->field_string ("library", iter->so_name);
4934 current_uiout->text ("\n");
edcc5120 4935 }
edcc5120
TT
4936 }
4937}
4938
e514a9d6
JM
4939/* Print a message indicating what happened. This is called from
4940 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4941 list - a list of the eventpoints that caused this stop. KIND is
4942 the target_waitkind for the stopping event. This
e514a9d6
JM
4943 routine calls the generic print routine for printing a message
4944 about reasons for stopping. This will print (for example) the
4945 "Breakpoint n," part of the output. The return value of this
4946 routine is one of:
c906108c 4947
4a64f543 4948 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4949 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4950 code to print the location. An example is
c5aa993b
JM
4951 "Breakpoint 1, " which should be followed by
4952 the location.
917317f4 4953 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4954 to also print the location part of the message.
4955 An example is the catch/throw messages, which
4a64f543 4956 don't require a location appended to the end.
917317f4 4957 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4958 further info to be printed. */
c906108c 4959
917317f4 4960enum print_stop_action
36dfb11c 4961bpstat_print (bpstat bs, int kind)
c906108c 4962{
f486487f 4963 enum print_stop_action val;
c5aa993b 4964
c906108c 4965 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4966 (Currently all watchpoints go on the bpstat whether hit or not.
4967 That probably could (should) be changed, provided care is taken
c906108c 4968 with respect to bpstat_explains_signal). */
e514a9d6
JM
4969 for (; bs; bs = bs->next)
4970 {
4971 val = print_bp_stop_message (bs);
4972 if (val == PRINT_SRC_ONLY
4973 || val == PRINT_SRC_AND_LOC
4974 || val == PRINT_NOTHING)
4975 return val;
4976 }
c906108c 4977
36dfb11c
TT
4978 /* If we had hit a shared library event breakpoint,
4979 print_bp_stop_message would print out this message. If we hit an
4980 OS-level shared library event, do the same thing. */
4981 if (kind == TARGET_WAITKIND_LOADED)
4982 {
edcc5120 4983 print_solib_event (0);
36dfb11c
TT
4984 return PRINT_NOTHING;
4985 }
4986
e514a9d6 4987 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4988 with and nothing was printed. */
917317f4 4989 return PRINT_UNKNOWN;
c906108c
SS
4990}
4991
c42bd95a
DE
4992/* Evaluate the expression EXP and return 1 if value is zero.
4993 This returns the inverse of the condition because it is called
4994 from catch_errors which returns 0 if an exception happened, and if an
4995 exception happens we want execution to stop.
4a64f543 4996 The argument is a "struct expression *" that has been cast to a
c42bd95a 4997 "void *" to make it pass through catch_errors. */
c906108c
SS
4998
4999static int
4efb68b1 5000breakpoint_cond_eval (void *exp)
c906108c 5001{
278cd55f 5002 struct value *mark = value_mark ();
c5aa993b 5003 int i = !value_true (evaluate_expression ((struct expression *) exp));
cc59ec59 5004
c906108c
SS
5005 value_free_to_mark (mark);
5006 return i;
5007}
5008
5760d0ab 5009/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c
SS
5010
5011static bpstat
5760d0ab 5012bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
c906108c
SS
5013{
5014 bpstat bs;
5015
5016 bs = (bpstat) xmalloc (sizeof (*bs));
5760d0ab
JK
5017 bs->next = NULL;
5018 **bs_link_pointer = bs;
5019 *bs_link_pointer = &bs->next;
f431efe5
PA
5020 bs->breakpoint_at = bl->owner;
5021 bs->bp_location_at = bl;
5022 incref_bp_location (bl);
c906108c
SS
5023 /* If the condition is false, etc., don't do the commands. */
5024 bs->commands = NULL;
5025 bs->old_val = NULL;
5026 bs->print_it = print_it_normal;
5027 return bs;
5028}
5029\f
d983da9c
DJ
5030/* The target has stopped with waitstatus WS. Check if any hardware
5031 watchpoints have triggered, according to the target. */
5032
5033int
5034watchpoints_triggered (struct target_waitstatus *ws)
5035{
d92524f1 5036 int stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
5037 CORE_ADDR addr;
5038 struct breakpoint *b;
5039
5040 if (!stopped_by_watchpoint)
5041 {
5042 /* We were not stopped by a watchpoint. Mark all watchpoints
5043 as not triggered. */
5044 ALL_BREAKPOINTS (b)
cc60f2e3 5045 if (is_hardware_watchpoint (b))
3a5c3e22
PA
5046 {
5047 struct watchpoint *w = (struct watchpoint *) b;
5048
5049 w->watchpoint_triggered = watch_triggered_no;
5050 }
d983da9c
DJ
5051
5052 return 0;
5053 }
5054
5055 if (!target_stopped_data_address (&current_target, &addr))
5056 {
5057 /* We were stopped by a watchpoint, but we don't know where.
5058 Mark all watchpoints as unknown. */
5059 ALL_BREAKPOINTS (b)
cc60f2e3 5060 if (is_hardware_watchpoint (b))
3a5c3e22
PA
5061 {
5062 struct watchpoint *w = (struct watchpoint *) b;
5063
5064 w->watchpoint_triggered = watch_triggered_unknown;
5065 }
d983da9c 5066
3c4797ba 5067 return 1;
d983da9c
DJ
5068 }
5069
5070 /* The target could report the data address. Mark watchpoints
5071 affected by this data address as triggered, and all others as not
5072 triggered. */
5073
5074 ALL_BREAKPOINTS (b)
cc60f2e3 5075 if (is_hardware_watchpoint (b))
d983da9c 5076 {
3a5c3e22 5077 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 5078 struct bp_location *loc;
d983da9c 5079
3a5c3e22 5080 w->watchpoint_triggered = watch_triggered_no;
a5606eee 5081 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 5082 {
3a5c3e22 5083 if (is_masked_watchpoint (b))
9c06b0b4 5084 {
3a5c3e22
PA
5085 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5086 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
5087
5088 if (newaddr == start)
5089 {
3a5c3e22 5090 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
5091 break;
5092 }
5093 }
5094 /* Exact match not required. Within range is sufficient. */
5095 else if (target_watchpoint_addr_within_range (&current_target,
5096 addr, loc->address,
5097 loc->length))
5098 {
3a5c3e22 5099 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
5100 break;
5101 }
5102 }
d983da9c
DJ
5103 }
5104
5105 return 1;
5106}
5107
c906108c
SS
5108/* Possible return values for watchpoint_check (this can't be an enum
5109 because of check_errors). */
5110/* The watchpoint has been deleted. */
5111#define WP_DELETED 1
5112/* The value has changed. */
5113#define WP_VALUE_CHANGED 2
5114/* The value has not changed. */
5115#define WP_VALUE_NOT_CHANGED 3
60e1c644
PA
5116/* Ignore this watchpoint, no matter if the value changed or not. */
5117#define WP_IGNORE 4
c906108c
SS
5118
5119#define BP_TEMPFLAG 1
5120#define BP_HARDWAREFLAG 2
5121
4a64f543
MS
5122/* Evaluate watchpoint condition expression and check if its value
5123 changed.
553e4c11
JB
5124
5125 P should be a pointer to struct bpstat, but is defined as a void *
5126 in order for this function to be usable with catch_errors. */
c906108c
SS
5127
5128static int
4efb68b1 5129watchpoint_check (void *p)
c906108c
SS
5130{
5131 bpstat bs = (bpstat) p;
3a5c3e22 5132 struct watchpoint *b;
c906108c
SS
5133 struct frame_info *fr;
5134 int within_current_scope;
5135
f431efe5 5136 /* BS is built from an existing struct breakpoint. */
2bdf28a0 5137 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 5138 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 5139
f6bc2008
PA
5140 /* If this is a local watchpoint, we only want to check if the
5141 watchpoint frame is in scope if the current thread is the thread
5142 that was used to create the watchpoint. */
5143 if (!watchpoint_in_thread_scope (b))
60e1c644 5144 return WP_IGNORE;
f6bc2008 5145
c906108c
SS
5146 if (b->exp_valid_block == NULL)
5147 within_current_scope = 1;
5148 else
5149 {
edb3359d
DJ
5150 struct frame_info *frame = get_current_frame ();
5151 struct gdbarch *frame_arch = get_frame_arch (frame);
5152 CORE_ADDR frame_pc = get_frame_pc (frame);
5153
c9cf6e20 5154 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
5155 still in the function but the stack frame has already been
5156 invalidated. Since we can't rely on the values of local
5157 variables after the stack has been destroyed, we are treating
5158 the watchpoint in that state as `not changed' without further
5159 checking. Don't mark watchpoints as changed if the current
5160 frame is in an epilogue - even if they are in some other
5161 frame, our view of the stack is likely to be wrong and
5162 frame_find_by_id could error out. */
c9cf6e20 5163 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 5164 return WP_IGNORE;
a0f49112 5165
101dcfbe 5166 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 5167 within_current_scope = (fr != NULL);
69fbadd5
DJ
5168
5169 /* If we've gotten confused in the unwinder, we might have
5170 returned a frame that can't describe this variable. */
edb3359d
DJ
5171 if (within_current_scope)
5172 {
5173 struct symbol *function;
5174
5175 function = get_frame_function (fr);
5176 if (function == NULL
5177 || !contained_in (b->exp_valid_block,
5178 SYMBOL_BLOCK_VALUE (function)))
5179 within_current_scope = 0;
5180 }
69fbadd5 5181
edb3359d 5182 if (within_current_scope)
c906108c
SS
5183 /* If we end up stopping, the current frame will get selected
5184 in normal_stop. So this call to select_frame won't affect
5185 the user. */
0f7d239c 5186 select_frame (fr);
c906108c 5187 }
c5aa993b 5188
c906108c
SS
5189 if (within_current_scope)
5190 {
4a64f543
MS
5191 /* We use value_{,free_to_}mark because it could be a *long*
5192 time before we return to the command level and call
5193 free_all_values. We can't call free_all_values because we
5194 might be in the middle of evaluating a function call. */
c906108c 5195
0cf6dd15 5196 int pc = 0;
9c06b0b4 5197 struct value *mark;
fa4727a6
DJ
5198 struct value *new_val;
5199
c1fc2657 5200 if (is_masked_watchpoint (b))
9c06b0b4
TJB
5201 /* Since we don't know the exact trigger address (from
5202 stopped_data_address), just tell the user we've triggered
5203 a mask watchpoint. */
5204 return WP_VALUE_CHANGED;
5205
5206 mark = value_mark ();
4d01a485 5207 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 5208
bb9d5f81
PP
5209 if (b->val_bitsize != 0)
5210 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5211
4a64f543
MS
5212 /* We use value_equal_contents instead of value_equal because
5213 the latter coerces an array to a pointer, thus comparing just
5214 the address of the array instead of its contents. This is
5215 not what we want. */
fa4727a6 5216 if ((b->val != NULL) != (new_val != NULL)
218d2fc6 5217 || (b->val != NULL && !value_equal_contents (b->val, new_val)))
c906108c 5218 {
fa4727a6
DJ
5219 if (new_val != NULL)
5220 {
5221 release_value (new_val);
5222 value_free_to_mark (mark);
5223 }
c906108c
SS
5224 bs->old_val = b->val;
5225 b->val = new_val;
fa4727a6 5226 b->val_valid = 1;
c906108c
SS
5227 return WP_VALUE_CHANGED;
5228 }
5229 else
5230 {
60e1c644 5231 /* Nothing changed. */
c906108c 5232 value_free_to_mark (mark);
c906108c
SS
5233 return WP_VALUE_NOT_CHANGED;
5234 }
5235 }
5236 else
5237 {
5238 /* This seems like the only logical thing to do because
c5aa993b
JM
5239 if we temporarily ignored the watchpoint, then when
5240 we reenter the block in which it is valid it contains
5241 garbage (in the case of a function, it may have two
5242 garbage values, one before and one after the prologue).
5243 So we can't even detect the first assignment to it and
5244 watch after that (since the garbage may or may not equal
5245 the first value assigned). */
348d480f
PA
5246 /* We print all the stop information in
5247 breakpoint_ops->print_it, but in this case, by the time we
5248 call breakpoint_ops->print_it this bp will be deleted
5249 already. So we have no choice but print the information
5250 here. */
468afe6c 5251
0e454242 5252 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
5253 {
5254 struct ui_out *uiout = current_uiout;
5255
112e8700
SM
5256 if (uiout->is_mi_like_p ())
5257 uiout->field_string
5258 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5259 uiout->text ("\nWatchpoint ");
c1fc2657 5260 uiout->field_int ("wpnum", b->number);
112e8700 5261 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
5262 "which its expression is valid.\n");
5263 }
4ce44c66 5264
cdac0397 5265 /* Make sure the watchpoint's commands aren't executed. */
c1fc2657 5266 decref_counted_command_line (&b->commands);
d0fb5eae 5267 watchpoint_del_at_next_stop (b);
c906108c
SS
5268
5269 return WP_DELETED;
5270 }
5271}
5272
18a18393 5273/* Return true if it looks like target has stopped due to hitting
348d480f
PA
5274 breakpoint location BL. This function does not check if we should
5275 stop, only if BL explains the stop. */
5276
18a18393 5277static int
6c95b8df 5278bpstat_check_location (const struct bp_location *bl,
09ac7c10
TT
5279 struct address_space *aspace, CORE_ADDR bp_addr,
5280 const struct target_waitstatus *ws)
18a18393
VP
5281{
5282 struct breakpoint *b = bl->owner;
5283
348d480f 5284 /* BL is from an existing breakpoint. */
2bdf28a0
JK
5285 gdb_assert (b != NULL);
5286
09ac7c10 5287 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
5288}
5289
3a5c3e22
PA
5290/* Determine if the watched values have actually changed, and we
5291 should stop. If not, set BS->stop to 0. */
5292
18a18393
VP
5293static void
5294bpstat_check_watchpoint (bpstat bs)
5295{
2bdf28a0 5296 const struct bp_location *bl;
3a5c3e22 5297 struct watchpoint *b;
2bdf28a0
JK
5298
5299 /* BS is built for existing struct breakpoint. */
f431efe5 5300 bl = bs->bp_location_at;
2bdf28a0 5301 gdb_assert (bl != NULL);
3a5c3e22 5302 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5303 gdb_assert (b != NULL);
18a18393 5304
18a18393 5305 {
18a18393
VP
5306 int must_check_value = 0;
5307
c1fc2657 5308 if (b->type == bp_watchpoint)
18a18393
VP
5309 /* For a software watchpoint, we must always check the
5310 watched value. */
5311 must_check_value = 1;
5312 else if (b->watchpoint_triggered == watch_triggered_yes)
5313 /* We have a hardware watchpoint (read, write, or access)
5314 and the target earlier reported an address watched by
5315 this watchpoint. */
5316 must_check_value = 1;
5317 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5318 && b->type == bp_hardware_watchpoint)
18a18393
VP
5319 /* We were stopped by a hardware watchpoint, but the target could
5320 not report the data address. We must check the watchpoint's
5321 value. Access and read watchpoints are out of luck; without
5322 a data address, we can't figure it out. */
5323 must_check_value = 1;
3a5c3e22 5324
18a18393
VP
5325 if (must_check_value)
5326 {
3e43a32a
MS
5327 char *message
5328 = xstrprintf ("Error evaluating expression for watchpoint %d\n",
c1fc2657 5329 b->number);
18a18393
VP
5330 struct cleanup *cleanups = make_cleanup (xfree, message);
5331 int e = catch_errors (watchpoint_check, bs, message,
5332 RETURN_MASK_ALL);
5333 do_cleanups (cleanups);
5334 switch (e)
5335 {
5336 case WP_DELETED:
5337 /* We've already printed what needs to be printed. */
5338 bs->print_it = print_it_done;
5339 /* Stop. */
5340 break;
60e1c644
PA
5341 case WP_IGNORE:
5342 bs->print_it = print_it_noop;
5343 bs->stop = 0;
5344 break;
18a18393 5345 case WP_VALUE_CHANGED:
c1fc2657 5346 if (b->type == bp_read_watchpoint)
18a18393 5347 {
85d721b8
PA
5348 /* There are two cases to consider here:
5349
4a64f543 5350 1. We're watching the triggered memory for reads.
85d721b8
PA
5351 In that case, trust the target, and always report
5352 the watchpoint hit to the user. Even though
5353 reads don't cause value changes, the value may
5354 have changed since the last time it was read, and
5355 since we're not trapping writes, we will not see
5356 those, and as such we should ignore our notion of
5357 old value.
5358
4a64f543 5359 2. We're watching the triggered memory for both
85d721b8
PA
5360 reads and writes. There are two ways this may
5361 happen:
5362
4a64f543 5363 2.1. This is a target that can't break on data
85d721b8
PA
5364 reads only, but can break on accesses (reads or
5365 writes), such as e.g., x86. We detect this case
5366 at the time we try to insert read watchpoints.
5367
4a64f543 5368 2.2. Otherwise, the target supports read
85d721b8
PA
5369 watchpoints, but, the user set an access or write
5370 watchpoint watching the same memory as this read
5371 watchpoint.
5372
5373 If we're watching memory writes as well as reads,
5374 ignore watchpoint hits when we find that the
5375 value hasn't changed, as reads don't cause
5376 changes. This still gives false positives when
5377 the program writes the same value to memory as
5378 what there was already in memory (we will confuse
5379 it for a read), but it's much better than
5380 nothing. */
5381
5382 int other_write_watchpoint = 0;
5383
5384 if (bl->watchpoint_type == hw_read)
5385 {
5386 struct breakpoint *other_b;
5387
5388 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5389 if (other_b->type == bp_hardware_watchpoint
5390 || other_b->type == bp_access_watchpoint)
85d721b8 5391 {
3a5c3e22
PA
5392 struct watchpoint *other_w =
5393 (struct watchpoint *) other_b;
5394
5395 if (other_w->watchpoint_triggered
5396 == watch_triggered_yes)
5397 {
5398 other_write_watchpoint = 1;
5399 break;
5400 }
85d721b8
PA
5401 }
5402 }
5403
5404 if (other_write_watchpoint
5405 || bl->watchpoint_type == hw_access)
5406 {
5407 /* We're watching the same memory for writes,
5408 and the value changed since the last time we
5409 updated it, so this trap must be for a write.
5410 Ignore it. */
5411 bs->print_it = print_it_noop;
5412 bs->stop = 0;
5413 }
18a18393
VP
5414 }
5415 break;
5416 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5417 if (b->type == bp_hardware_watchpoint
5418 || b->type == bp_watchpoint)
18a18393
VP
5419 {
5420 /* Don't stop: write watchpoints shouldn't fire if
5421 the value hasn't changed. */
5422 bs->print_it = print_it_noop;
5423 bs->stop = 0;
5424 }
5425 /* Stop. */
5426 break;
5427 default:
5428 /* Can't happen. */
5429 case 0:
5430 /* Error from catch_errors. */
468afe6c 5431 {
0e454242 5432 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
5433 {
5434 printf_filtered (_("Watchpoint %d deleted.\n"),
c1fc2657 5435 b->number);
468afe6c
PA
5436 }
5437 watchpoint_del_at_next_stop (b);
5438 /* We've already printed what needs to be printed. */
5439 bs->print_it = print_it_done;
5440 }
18a18393
VP
5441 break;
5442 }
5443 }
5444 else /* must_check_value == 0 */
5445 {
5446 /* This is a case where some watchpoint(s) triggered, but
5447 not at the address of this watchpoint, or else no
5448 watchpoint triggered after all. So don't print
5449 anything for this watchpoint. */
5450 bs->print_it = print_it_noop;
5451 bs->stop = 0;
5452 }
5453 }
5454}
5455
7d4df6a4
DE
5456/* For breakpoints that are currently marked as telling gdb to stop,
5457 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5458 of breakpoint referred to by BS. If we should not stop for this
5459 breakpoint, set BS->stop to 0. */
f431efe5 5460
18a18393
VP
5461static void
5462bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5463{
2bdf28a0
JK
5464 const struct bp_location *bl;
5465 struct breakpoint *b;
7d4df6a4
DE
5466 int value_is_zero = 0;
5467 struct expression *cond;
5468
5469 gdb_assert (bs->stop);
2bdf28a0
JK
5470
5471 /* BS is built for existing struct breakpoint. */
f431efe5 5472 bl = bs->bp_location_at;
2bdf28a0 5473 gdb_assert (bl != NULL);
f431efe5 5474 b = bs->breakpoint_at;
2bdf28a0 5475 gdb_assert (b != NULL);
18a18393 5476
b775012e
LM
5477 /* Even if the target evaluated the condition on its end and notified GDB, we
5478 need to do so again since GDB does not know if we stopped due to a
5479 breakpoint or a single step breakpoint. */
5480
18a18393 5481 if (frame_id_p (b->frame_id)
edb3359d 5482 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5483 {
7d4df6a4
DE
5484 bs->stop = 0;
5485 return;
5486 }
60e1c644 5487
12ab52e9
PA
5488 /* If this is a thread/task-specific breakpoint, don't waste cpu
5489 evaluating the condition if this isn't the specified
5490 thread/task. */
5d5658a1 5491 if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
12ab52e9
PA
5492 || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5493
6c1b0f7b
DE
5494 {
5495 bs->stop = 0;
5496 return;
5497 }
5498
6dddc817
DE
5499 /* Evaluate extension language breakpoints that have a "stop" method
5500 implemented. */
5501 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5502
7d4df6a4
DE
5503 if (is_watchpoint (b))
5504 {
5505 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5506
4d01a485 5507 cond = w->cond_exp.get ();
7d4df6a4
DE
5508 }
5509 else
4d01a485 5510 cond = bl->cond.get ();
60e1c644 5511
7d4df6a4
DE
5512 if (cond && b->disposition != disp_del_at_next_stop)
5513 {
5514 int within_current_scope = 1;
5515 struct watchpoint * w;
60e1c644 5516
7d4df6a4
DE
5517 /* We use value_mark and value_free_to_mark because it could
5518 be a long time before we return to the command level and
5519 call free_all_values. We can't call free_all_values
5520 because we might be in the middle of evaluating a
5521 function call. */
5522 struct value *mark = value_mark ();
5523
5524 if (is_watchpoint (b))
5525 w = (struct watchpoint *) b;
5526 else
5527 w = NULL;
5528
5529 /* Need to select the frame, with all that implies so that
5530 the conditions will have the right context. Because we
5531 use the frame, we will not see an inlined function's
5532 variables when we arrive at a breakpoint at the start
5533 of the inlined function; the current frame will be the
5534 call site. */
5535 if (w == NULL || w->cond_exp_valid_block == NULL)
5536 select_frame (get_current_frame ());
5537 else
18a18393 5538 {
7d4df6a4
DE
5539 struct frame_info *frame;
5540
5541 /* For local watchpoint expressions, which particular
5542 instance of a local is being watched matters, so we
5543 keep track of the frame to evaluate the expression
5544 in. To evaluate the condition however, it doesn't
5545 really matter which instantiation of the function
5546 where the condition makes sense triggers the
5547 watchpoint. This allows an expression like "watch
5548 global if q > 10" set in `func', catch writes to
5549 global on all threads that call `func', or catch
5550 writes on all recursive calls of `func' by a single
5551 thread. We simply always evaluate the condition in
5552 the innermost frame that's executing where it makes
5553 sense to evaluate the condition. It seems
5554 intuitive. */
5555 frame = block_innermost_frame (w->cond_exp_valid_block);
5556 if (frame != NULL)
5557 select_frame (frame);
5558 else
5559 within_current_scope = 0;
18a18393 5560 }
7d4df6a4
DE
5561 if (within_current_scope)
5562 value_is_zero
5563 = catch_errors (breakpoint_cond_eval, cond,
5564 "Error in testing breakpoint condition:\n",
5565 RETURN_MASK_ALL);
5566 else
18a18393 5567 {
7d4df6a4
DE
5568 warning (_("Watchpoint condition cannot be tested "
5569 "in the current scope"));
5570 /* If we failed to set the right context for this
5571 watchpoint, unconditionally report it. */
5572 value_is_zero = 0;
18a18393 5573 }
7d4df6a4
DE
5574 /* FIXME-someday, should give breakpoint #. */
5575 value_free_to_mark (mark);
18a18393 5576 }
7d4df6a4
DE
5577
5578 if (cond && value_is_zero)
5579 {
5580 bs->stop = 0;
5581 }
7d4df6a4
DE
5582 else if (b->ignore_count > 0)
5583 {
5584 b->ignore_count--;
5585 bs->stop = 0;
5586 /* Increase the hit count even though we don't stop. */
5587 ++(b->hit_count);
5588 observer_notify_breakpoint_modified (b);
5589 }
18a18393
VP
5590}
5591
1cf4d951
PA
5592/* Returns true if we need to track moribund locations of LOC's type
5593 on the current target. */
5594
5595static int
5596need_moribund_for_location_type (struct bp_location *loc)
5597{
5598 return ((loc->loc_type == bp_loc_software_breakpoint
5599 && !target_supports_stopped_by_sw_breakpoint ())
5600 || (loc->loc_type == bp_loc_hardware_breakpoint
5601 && !target_supports_stopped_by_hw_breakpoint ()));
5602}
5603
18a18393 5604
9709f61c 5605/* Get a bpstat associated with having just stopped at address
d983da9c 5606 BP_ADDR in thread PTID.
c906108c 5607
d983da9c 5608 Determine whether we stopped at a breakpoint, etc, or whether we
4a64f543
MS
5609 don't understand this stop. Result is a chain of bpstat's such
5610 that:
c906108c 5611
c5aa993b 5612 if we don't understand the stop, the result is a null pointer.
c906108c 5613
c5aa993b 5614 if we understand why we stopped, the result is not null.
c906108c 5615
c5aa993b
JM
5616 Each element of the chain refers to a particular breakpoint or
5617 watchpoint at which we have stopped. (We may have stopped for
5618 several reasons concurrently.)
c906108c 5619
c5aa993b
JM
5620 Each element of the chain has valid next, breakpoint_at,
5621 commands, FIXME??? fields. */
c906108c
SS
5622
5623bpstat
6c95b8df 5624bpstat_stop_status (struct address_space *aspace,
09ac7c10
TT
5625 CORE_ADDR bp_addr, ptid_t ptid,
5626 const struct target_waitstatus *ws)
c906108c 5627{
0d381245 5628 struct breakpoint *b = NULL;
afe38095 5629 struct bp_location *bl;
20874c92 5630 struct bp_location *loc;
5760d0ab
JK
5631 /* First item of allocated bpstat's. */
5632 bpstat bs_head = NULL, *bs_link = &bs_head;
c906108c 5633 /* Pointer to the last thing in the chain currently. */
5760d0ab 5634 bpstat bs;
20874c92 5635 int ix;
429374b8 5636 int need_remove_insert;
f431efe5 5637 int removed_any;
c906108c 5638
f431efe5
PA
5639 /* First, build the bpstat chain with locations that explain a
5640 target stop, while being careful to not set the target running,
5641 as that may invalidate locations (in particular watchpoint
5642 locations are recreated). Resuming will happen here with
5643 breakpoint conditions or watchpoint expressions that include
5644 inferior function calls. */
c5aa993b 5645
429374b8
JK
5646 ALL_BREAKPOINTS (b)
5647 {
1a853c52 5648 if (!breakpoint_enabled (b))
429374b8 5649 continue;
a5606eee 5650
429374b8
JK
5651 for (bl = b->loc; bl != NULL; bl = bl->next)
5652 {
4a64f543
MS
5653 /* For hardware watchpoints, we look only at the first
5654 location. The watchpoint_check function will work on the
5655 entire expression, not the individual locations. For
5656 read watchpoints, the watchpoints_triggered function has
5657 checked all locations already. */
429374b8
JK
5658 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5659 break;
18a18393 5660
f6592439 5661 if (!bl->enabled || bl->shlib_disabled)
429374b8 5662 continue;
c5aa993b 5663
09ac7c10 5664 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5665 continue;
c5aa993b 5666
4a64f543
MS
5667 /* Come here if it's a watchpoint, or if the break address
5668 matches. */
c5aa993b 5669
4a64f543
MS
5670 bs = bpstat_alloc (bl, &bs_link); /* Alloc a bpstat to
5671 explain stop. */
c5aa993b 5672
f431efe5
PA
5673 /* Assume we stop. Should we find a watchpoint that is not
5674 actually triggered, or if the condition of the breakpoint
5675 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5676 bs->stop = 1;
5677 bs->print = 1;
d983da9c 5678
f431efe5
PA
5679 /* If this is a scope breakpoint, mark the associated
5680 watchpoint as triggered so that we will handle the
5681 out-of-scope event. We'll get to the watchpoint next
5682 iteration. */
d0fb5eae 5683 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5684 {
5685 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5686
5687 w->watchpoint_triggered = watch_triggered_yes;
5688 }
f431efe5
PA
5689 }
5690 }
5691
7c16b83e 5692 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5693 if (!target_supports_stopped_by_sw_breakpoint ()
5694 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5695 {
1cf4d951 5696 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
f431efe5 5697 {
1cf4d951
PA
5698 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5699 && need_moribund_for_location_type (loc))
5700 {
5701 bs = bpstat_alloc (loc, &bs_link);
5702 /* For hits of moribund locations, we should just proceed. */
5703 bs->stop = 0;
5704 bs->print = 0;
5705 bs->print_it = print_it_noop;
5706 }
f431efe5
PA
5707 }
5708 }
5709
edcc5120
TT
5710 /* A bit of special processing for shlib breakpoints. We need to
5711 process solib loading here, so that the lists of loaded and
5712 unloaded libraries are correct before we handle "catch load" and
5713 "catch unload". */
5714 for (bs = bs_head; bs != NULL; bs = bs->next)
5715 {
5d268276 5716 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5717 {
5718 handle_solib_event ();
5719 break;
5720 }
5721 }
5722
f431efe5
PA
5723 /* Now go through the locations that caused the target to stop, and
5724 check whether we're interested in reporting this stop to higher
5725 layers, or whether we should resume the target transparently. */
5726
5727 removed_any = 0;
5728
5760d0ab 5729 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5730 {
5731 if (!bs->stop)
5732 continue;
5733
f431efe5 5734 b = bs->breakpoint_at;
348d480f
PA
5735 b->ops->check_status (bs);
5736 if (bs->stop)
28010a5d 5737 {
348d480f 5738 bpstat_check_breakpoint_conditions (bs, ptid);
f431efe5 5739
429374b8
JK
5740 if (bs->stop)
5741 {
5742 ++(b->hit_count);
8d3788bd 5743 observer_notify_breakpoint_modified (b);
c906108c 5744
4a64f543 5745 /* We will stop here. */
429374b8
JK
5746 if (b->disposition == disp_disable)
5747 {
816338b5 5748 --(b->enable_count);
1a853c52 5749 if (b->enable_count <= 0)
429374b8 5750 b->enable_state = bp_disabled;
f431efe5 5751 removed_any = 1;
429374b8
JK
5752 }
5753 if (b->silent)
5754 bs->print = 0;
5755 bs->commands = b->commands;
9add0f1b 5756 incref_counted_command_line (bs->commands);
abf85f46
JK
5757 if (command_line_is_silent (bs->commands
5758 ? bs->commands->commands : NULL))
5759 bs->print = 0;
9d6e6e84
HZ
5760
5761 b->ops->after_condition_true (bs);
429374b8
JK
5762 }
5763
348d480f 5764 }
a9b3a50f
PA
5765
5766 /* Print nothing for this entry if we don't stop or don't
5767 print. */
5768 if (!bs->stop || !bs->print)
5769 bs->print_it = print_it_noop;
429374b8 5770 }
876fa593 5771
d983da9c
DJ
5772 /* If we aren't stopping, the value of some hardware watchpoint may
5773 not have changed, but the intermediate memory locations we are
5774 watching may have. Don't bother if we're stopping; this will get
5775 done later. */
d832cb68 5776 need_remove_insert = 0;
5760d0ab
JK
5777 if (! bpstat_causes_stop (bs_head))
5778 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5779 if (!bs->stop
f431efe5
PA
5780 && bs->breakpoint_at
5781 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5782 {
3a5c3e22
PA
5783 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5784
5785 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5786 need_remove_insert = 1;
d983da9c
DJ
5787 }
5788
d832cb68 5789 if (need_remove_insert)
44702360 5790 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5791 else if (removed_any)
44702360 5792 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5793
5760d0ab 5794 return bs_head;
c906108c 5795}
628fe4e4
JK
5796
5797static void
5798handle_jit_event (void)
5799{
5800 struct frame_info *frame;
5801 struct gdbarch *gdbarch;
5802
243a9253
PA
5803 if (debug_infrun)
5804 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5805
628fe4e4
JK
5806 /* Switch terminal for any messages produced by
5807 breakpoint_re_set. */
5808 target_terminal_ours_for_output ();
5809
5810 frame = get_current_frame ();
5811 gdbarch = get_frame_arch (frame);
5812
5813 jit_event_handler (gdbarch);
5814
5815 target_terminal_inferior ();
5816}
5817
5818/* Prepare WHAT final decision for infrun. */
5819
5820/* Decide what infrun needs to do with this bpstat. */
5821
c906108c 5822struct bpstat_what
0e30163f 5823bpstat_what (bpstat bs_head)
c906108c 5824{
c906108c 5825 struct bpstat_what retval;
0e30163f 5826 bpstat bs;
c906108c 5827
628fe4e4 5828 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5829 retval.call_dummy = STOP_NONE;
186c406b 5830 retval.is_longjmp = 0;
628fe4e4 5831
0e30163f 5832 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5833 {
628fe4e4
JK
5834 /* Extract this BS's action. After processing each BS, we check
5835 if its action overrides all we've seem so far. */
5836 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5837 enum bptype bptype;
5838
c906108c 5839 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5840 {
5841 /* I suspect this can happen if it was a momentary
5842 breakpoint which has since been deleted. */
5843 bptype = bp_none;
5844 }
20874c92 5845 else
f431efe5 5846 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5847
5848 switch (bptype)
c906108c
SS
5849 {
5850 case bp_none:
628fe4e4 5851 break;
c906108c
SS
5852 case bp_breakpoint:
5853 case bp_hardware_breakpoint:
7c16b83e 5854 case bp_single_step:
c906108c
SS
5855 case bp_until:
5856 case bp_finish:
a9b3a50f 5857 case bp_shlib_event:
c906108c
SS
5858 if (bs->stop)
5859 {
5860 if (bs->print)
628fe4e4 5861 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5862 else
628fe4e4 5863 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5864 }
5865 else
628fe4e4 5866 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5867 break;
5868 case bp_watchpoint:
5869 case bp_hardware_watchpoint:
5870 case bp_read_watchpoint:
5871 case bp_access_watchpoint:
5872 if (bs->stop)
5873 {
5874 if (bs->print)
628fe4e4 5875 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5876 else
628fe4e4 5877 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5878 }
5879 else
628fe4e4
JK
5880 {
5881 /* There was a watchpoint, but we're not stopping.
5882 This requires no further action. */
5883 }
c906108c
SS
5884 break;
5885 case bp_longjmp:
e2e4d78b 5886 case bp_longjmp_call_dummy:
186c406b 5887 case bp_exception:
0a39bb32
PA
5888 if (bs->stop)
5889 {
5890 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5891 retval.is_longjmp = bptype != bp_exception;
5892 }
5893 else
5894 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5895 break;
5896 case bp_longjmp_resume:
186c406b 5897 case bp_exception_resume:
0a39bb32
PA
5898 if (bs->stop)
5899 {
5900 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5901 retval.is_longjmp = bptype == bp_longjmp_resume;
5902 }
5903 else
5904 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5905 break;
5906 case bp_step_resume:
5907 if (bs->stop)
628fe4e4
JK
5908 this_action = BPSTAT_WHAT_STEP_RESUME;
5909 else
c906108c 5910 {
628fe4e4
JK
5911 /* It is for the wrong frame. */
5912 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5913 }
c906108c 5914 break;
2c03e5be
PA
5915 case bp_hp_step_resume:
5916 if (bs->stop)
5917 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5918 else
5919 {
5920 /* It is for the wrong frame. */
5921 this_action = BPSTAT_WHAT_SINGLE;
5922 }
5923 break;
c906108c 5924 case bp_watchpoint_scope:
c4093a6a 5925 case bp_thread_event:
1900040c 5926 case bp_overlay_event:
0fd8e87f 5927 case bp_longjmp_master:
aa7d318d 5928 case bp_std_terminate_master:
186c406b 5929 case bp_exception_master:
628fe4e4 5930 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5931 break;
ce78b96d 5932 case bp_catchpoint:
c5aa993b
JM
5933 if (bs->stop)
5934 {
5935 if (bs->print)
628fe4e4 5936 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5937 else
628fe4e4 5938 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5939 }
5940 else
628fe4e4
JK
5941 {
5942 /* There was a catchpoint, but we're not stopping.
5943 This requires no further action. */
5944 }
5945 break;
628fe4e4 5946 case bp_jit_event:
628fe4e4 5947 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5948 break;
c906108c 5949 case bp_call_dummy:
53a5351d
JM
5950 /* Make sure the action is stop (silent or noisy),
5951 so infrun.c pops the dummy frame. */
aa7d318d 5952 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5953 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5954 break;
5955 case bp_std_terminate:
5956 /* Make sure the action is stop (silent or noisy),
5957 so infrun.c pops the dummy frame. */
aa7d318d 5958 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5959 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5960 break;
1042e4c0 5961 case bp_tracepoint:
7a697b8d 5962 case bp_fast_tracepoint:
0fb4aa4b 5963 case bp_static_tracepoint:
1042e4c0
SS
5964 /* Tracepoint hits should not be reported back to GDB, and
5965 if one got through somehow, it should have been filtered
5966 out already. */
5967 internal_error (__FILE__, __LINE__,
7a697b8d 5968 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5969 break;
5970 case bp_gnu_ifunc_resolver:
5971 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5972 this_action = BPSTAT_WHAT_SINGLE;
5973 break;
5974 case bp_gnu_ifunc_resolver_return:
5975 /* The breakpoint will be removed, execution will restart from the
5976 PC of the former breakpoint. */
5977 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5978 break;
e7e0cddf
SS
5979
5980 case bp_dprintf:
a11cfd87
HZ
5981 if (bs->stop)
5982 this_action = BPSTAT_WHAT_STOP_SILENT;
5983 else
5984 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5985 break;
5986
628fe4e4
JK
5987 default:
5988 internal_error (__FILE__, __LINE__,
5989 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5990 }
628fe4e4 5991
325fac50 5992 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5993 }
628fe4e4 5994
243a9253
PA
5995 return retval;
5996}
628fe4e4 5997
243a9253
PA
5998void
5999bpstat_run_callbacks (bpstat bs_head)
6000{
6001 bpstat bs;
628fe4e4 6002
0e30163f
JK
6003 for (bs = bs_head; bs != NULL; bs = bs->next)
6004 {
6005 struct breakpoint *b = bs->breakpoint_at;
6006
6007 if (b == NULL)
6008 continue;
6009 switch (b->type)
6010 {
243a9253
PA
6011 case bp_jit_event:
6012 handle_jit_event ();
6013 break;
0e30163f
JK
6014 case bp_gnu_ifunc_resolver:
6015 gnu_ifunc_resolver_stop (b);
6016 break;
6017 case bp_gnu_ifunc_resolver_return:
6018 gnu_ifunc_resolver_return_stop (b);
6019 break;
6020 }
6021 }
c906108c
SS
6022}
6023
6024/* Nonzero if we should step constantly (e.g. watchpoints on machines
6025 without hardware support). This isn't related to a specific bpstat,
6026 just to things like whether watchpoints are set. */
6027
c5aa993b 6028int
fba45db2 6029bpstat_should_step (void)
c906108c
SS
6030{
6031 struct breakpoint *b;
cc59ec59 6032
c906108c 6033 ALL_BREAKPOINTS (b)
717a8278 6034 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 6035 return 1;
c906108c
SS
6036 return 0;
6037}
6038
67822962
PA
6039int
6040bpstat_causes_stop (bpstat bs)
6041{
6042 for (; bs != NULL; bs = bs->next)
6043 if (bs->stop)
6044 return 1;
6045
6046 return 0;
6047}
6048
c906108c 6049\f
c5aa993b 6050
170b53b2
UW
6051/* Compute a string of spaces suitable to indent the next line
6052 so it starts at the position corresponding to the table column
6053 named COL_NAME in the currently active table of UIOUT. */
6054
6055static char *
6056wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6057{
6058 static char wrap_indent[80];
6059 int i, total_width, width, align;
c5209615 6060 const char *text;
170b53b2
UW
6061
6062 total_width = 0;
112e8700 6063 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
6064 {
6065 if (strcmp (text, col_name) == 0)
6066 {
6067 gdb_assert (total_width < sizeof wrap_indent);
6068 memset (wrap_indent, ' ', total_width);
6069 wrap_indent[total_width] = 0;
6070
6071 return wrap_indent;
6072 }
6073
6074 total_width += width + 1;
6075 }
6076
6077 return NULL;
6078}
6079
b775012e
LM
6080/* Determine if the locations of this breakpoint will have their conditions
6081 evaluated by the target, host or a mix of both. Returns the following:
6082
6083 "host": Host evals condition.
6084 "host or target": Host or Target evals condition.
6085 "target": Target evals condition.
6086*/
6087
6088static const char *
6089bp_condition_evaluator (struct breakpoint *b)
6090{
6091 struct bp_location *bl;
6092 char host_evals = 0;
6093 char target_evals = 0;
6094
6095 if (!b)
6096 return NULL;
6097
6098 if (!is_breakpoint (b))
6099 return NULL;
6100
6101 if (gdb_evaluates_breakpoint_condition_p ()
6102 || !target_supports_evaluation_of_breakpoint_conditions ())
6103 return condition_evaluation_host;
6104
6105 for (bl = b->loc; bl; bl = bl->next)
6106 {
6107 if (bl->cond_bytecode)
6108 target_evals++;
6109 else
6110 host_evals++;
6111 }
6112
6113 if (host_evals && target_evals)
6114 return condition_evaluation_both;
6115 else if (target_evals)
6116 return condition_evaluation_target;
6117 else
6118 return condition_evaluation_host;
6119}
6120
6121/* Determine the breakpoint location's condition evaluator. This is
6122 similar to bp_condition_evaluator, but for locations. */
6123
6124static const char *
6125bp_location_condition_evaluator (struct bp_location *bl)
6126{
6127 if (bl && !is_breakpoint (bl->owner))
6128 return NULL;
6129
6130 if (gdb_evaluates_breakpoint_condition_p ()
6131 || !target_supports_evaluation_of_breakpoint_conditions ())
6132 return condition_evaluation_host;
6133
6134 if (bl && bl->cond_bytecode)
6135 return condition_evaluation_target;
6136 else
6137 return condition_evaluation_host;
6138}
6139
859825b8
JK
6140/* Print the LOC location out of the list of B->LOC locations. */
6141
170b53b2
UW
6142static void
6143print_breakpoint_location (struct breakpoint *b,
6144 struct bp_location *loc)
0d381245 6145{
79a45e25 6146 struct ui_out *uiout = current_uiout;
5ed8105e
PA
6147
6148 scoped_restore_current_program_space restore_pspace;
6c95b8df 6149
859825b8
JK
6150 if (loc != NULL && loc->shlib_disabled)
6151 loc = NULL;
6152
6c95b8df
PA
6153 if (loc != NULL)
6154 set_current_program_space (loc->pspace);
6155
56435ebe 6156 if (b->display_canonical)
d28cd78a 6157 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 6158 else if (loc && loc->symtab)
0d381245
VP
6159 {
6160 struct symbol *sym
6161 = find_pc_sect_function (loc->address, loc->section);
6162 if (sym)
6163 {
112e8700
SM
6164 uiout->text ("in ");
6165 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
6166 uiout->text (" ");
6167 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
6168 uiout->text ("at ");
0d381245 6169 }
112e8700 6170 uiout->field_string ("file",
05cba821 6171 symtab_to_filename_for_display (loc->symtab));
112e8700 6172 uiout->text (":");
05cba821 6173
112e8700
SM
6174 if (uiout->is_mi_like_p ())
6175 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 6176
112e8700 6177 uiout->field_int ("line", loc->line_number);
0d381245 6178 }
859825b8 6179 else if (loc)
0d381245 6180 {
d7e74731 6181 string_file stb;
170b53b2 6182
d7e74731 6183 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 6184 demangle, "");
112e8700 6185 uiout->field_stream ("at", stb);
0d381245 6186 }
859825b8 6187 else
f00aae0f 6188 {
d28cd78a
TT
6189 uiout->field_string ("pending",
6190 event_location_to_string (b->location.get ()));
f00aae0f
KS
6191 /* If extra_string is available, it could be holding a condition
6192 or dprintf arguments. In either case, make sure it is printed,
6193 too, but only for non-MI streams. */
112e8700 6194 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
6195 {
6196 if (b->type == bp_dprintf)
112e8700 6197 uiout->text (",");
f00aae0f 6198 else
112e8700
SM
6199 uiout->text (" ");
6200 uiout->text (b->extra_string);
f00aae0f
KS
6201 }
6202 }
6c95b8df 6203
b775012e
LM
6204 if (loc && is_breakpoint (b)
6205 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6206 && bp_condition_evaluator (b) == condition_evaluation_both)
6207 {
112e8700
SM
6208 uiout->text (" (");
6209 uiout->field_string ("evaluated-by",
b775012e 6210 bp_location_condition_evaluator (loc));
112e8700 6211 uiout->text (")");
b775012e 6212 }
0d381245
VP
6213}
6214
269b11a2
PA
6215static const char *
6216bptype_string (enum bptype type)
c906108c 6217{
c4093a6a
JM
6218 struct ep_type_description
6219 {
6220 enum bptype type;
a121b7c1 6221 const char *description;
c4093a6a
JM
6222 };
6223 static struct ep_type_description bptypes[] =
c906108c 6224 {
c5aa993b
JM
6225 {bp_none, "?deleted?"},
6226 {bp_breakpoint, "breakpoint"},
c906108c 6227 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 6228 {bp_single_step, "sw single-step"},
c5aa993b
JM
6229 {bp_until, "until"},
6230 {bp_finish, "finish"},
6231 {bp_watchpoint, "watchpoint"},
c906108c 6232 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
6233 {bp_read_watchpoint, "read watchpoint"},
6234 {bp_access_watchpoint, "acc watchpoint"},
6235 {bp_longjmp, "longjmp"},
6236 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 6237 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
6238 {bp_exception, "exception"},
6239 {bp_exception_resume, "exception resume"},
c5aa993b 6240 {bp_step_resume, "step resume"},
2c03e5be 6241 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
6242 {bp_watchpoint_scope, "watchpoint scope"},
6243 {bp_call_dummy, "call dummy"},
aa7d318d 6244 {bp_std_terminate, "std::terminate"},
c5aa993b 6245 {bp_shlib_event, "shlib events"},
c4093a6a 6246 {bp_thread_event, "thread events"},
1900040c 6247 {bp_overlay_event, "overlay events"},
0fd8e87f 6248 {bp_longjmp_master, "longjmp master"},
aa7d318d 6249 {bp_std_terminate_master, "std::terminate master"},
186c406b 6250 {bp_exception_master, "exception master"},
ce78b96d 6251 {bp_catchpoint, "catchpoint"},
1042e4c0 6252 {bp_tracepoint, "tracepoint"},
7a697b8d 6253 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 6254 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 6255 {bp_dprintf, "dprintf"},
4efc6507 6256 {bp_jit_event, "jit events"},
0e30163f
JK
6257 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6258 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 6259 };
269b11a2
PA
6260
6261 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6262 || ((int) type != bptypes[(int) type].type))
6263 internal_error (__FILE__, __LINE__,
6264 _("bptypes table does not describe type #%d."),
6265 (int) type);
6266
6267 return bptypes[(int) type].description;
6268}
6269
998580f1
MK
6270/* For MI, output a field named 'thread-groups' with a list as the value.
6271 For CLI, prefix the list with the string 'inf'. */
6272
6273static void
6274output_thread_groups (struct ui_out *uiout,
6275 const char *field_name,
6276 VEC(int) *inf_num,
6277 int mi_only)
6278{
112e8700 6279 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
6280 int inf;
6281 int i;
6282
6283 /* For backward compatibility, don't display inferiors in CLI unless
6284 there are several. Always display them for MI. */
6285 if (!is_mi && mi_only)
6286 return;
6287
10f489e5 6288 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6289
998580f1
MK
6290 for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6291 {
6292 if (is_mi)
6293 {
6294 char mi_group[10];
6295
6296 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
112e8700 6297 uiout->field_string (NULL, mi_group);
998580f1
MK
6298 }
6299 else
6300 {
6301 if (i == 0)
112e8700 6302 uiout->text (" inf ");
998580f1 6303 else
112e8700 6304 uiout->text (", ");
998580f1 6305
112e8700 6306 uiout->text (plongest (inf));
998580f1
MK
6307 }
6308 }
998580f1
MK
6309}
6310
269b11a2
PA
6311/* Print B to gdb_stdout. */
6312
6313static void
6314print_one_breakpoint_location (struct breakpoint *b,
6315 struct bp_location *loc,
6316 int loc_number,
6317 struct bp_location **last_loc,
269b11a2
PA
6318 int allflag)
6319{
6320 struct command_line *l;
c2c6d25f 6321 static char bpenables[] = "nynny";
c906108c 6322
79a45e25 6323 struct ui_out *uiout = current_uiout;
0d381245
VP
6324 int header_of_multiple = 0;
6325 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6326 struct value_print_options opts;
6327
6328 get_user_print_options (&opts);
0d381245
VP
6329
6330 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6331 /* See comment in print_one_breakpoint concerning treatment of
6332 breakpoints with single disabled location. */
0d381245
VP
6333 if (loc == NULL
6334 && (b->loc != NULL
6335 && (b->loc->next != NULL || !b->loc->enabled)))
6336 header_of_multiple = 1;
6337 if (loc == NULL)
6338 loc = b->loc;
6339
c4093a6a
JM
6340 annotate_record ();
6341
6342 /* 1 */
6343 annotate_field (0);
0d381245
VP
6344 if (part_of_multiple)
6345 {
6346 char *formatted;
0c6773c1 6347 formatted = xstrprintf ("%d.%d", b->number, loc_number);
112e8700 6348 uiout->field_string ("number", formatted);
0d381245
VP
6349 xfree (formatted);
6350 }
6351 else
6352 {
112e8700 6353 uiout->field_int ("number", b->number);
0d381245 6354 }
c4093a6a
JM
6355
6356 /* 2 */
6357 annotate_field (1);
0d381245 6358 if (part_of_multiple)
112e8700 6359 uiout->field_skip ("type");
269b11a2 6360 else
112e8700 6361 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6362
6363 /* 3 */
6364 annotate_field (2);
0d381245 6365 if (part_of_multiple)
112e8700 6366 uiout->field_skip ("disp");
0d381245 6367 else
112e8700 6368 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6369
c4093a6a
JM
6370
6371 /* 4 */
6372 annotate_field (3);
0d381245 6373 if (part_of_multiple)
112e8700 6374 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6375 else
112e8700
SM
6376 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6377 uiout->spaces (2);
0d381245 6378
c4093a6a
JM
6379
6380 /* 5 and 6 */
3086aeae 6381 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6382 {
4a64f543
MS
6383 /* Although the print_one can possibly print all locations,
6384 calling it here is not likely to get any nice result. So,
6385 make sure there's just one location. */
0d381245 6386 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6387 b->ops->print_one (b, last_loc);
0d381245 6388 }
3086aeae
DJ
6389 else
6390 switch (b->type)
6391 {
6392 case bp_none:
6393 internal_error (__FILE__, __LINE__,
e2e0b3e5 6394 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6395 break;
c906108c 6396
3086aeae
DJ
6397 case bp_watchpoint:
6398 case bp_hardware_watchpoint:
6399 case bp_read_watchpoint:
6400 case bp_access_watchpoint:
3a5c3e22
PA
6401 {
6402 struct watchpoint *w = (struct watchpoint *) b;
6403
6404 /* Field 4, the address, is omitted (which makes the columns
6405 not line up too nicely with the headers, but the effect
6406 is relatively readable). */
6407 if (opts.addressprint)
112e8700 6408 uiout->field_skip ("addr");
3a5c3e22 6409 annotate_field (5);
112e8700 6410 uiout->field_string ("what", w->exp_string);
3a5c3e22 6411 }
3086aeae
DJ
6412 break;
6413
3086aeae
DJ
6414 case bp_breakpoint:
6415 case bp_hardware_breakpoint:
7c16b83e 6416 case bp_single_step:
3086aeae
DJ
6417 case bp_until:
6418 case bp_finish:
6419 case bp_longjmp:
6420 case bp_longjmp_resume:
e2e4d78b 6421 case bp_longjmp_call_dummy:
186c406b
TT
6422 case bp_exception:
6423 case bp_exception_resume:
3086aeae 6424 case bp_step_resume:
2c03e5be 6425 case bp_hp_step_resume:
3086aeae
DJ
6426 case bp_watchpoint_scope:
6427 case bp_call_dummy:
aa7d318d 6428 case bp_std_terminate:
3086aeae
DJ
6429 case bp_shlib_event:
6430 case bp_thread_event:
6431 case bp_overlay_event:
0fd8e87f 6432 case bp_longjmp_master:
aa7d318d 6433 case bp_std_terminate_master:
186c406b 6434 case bp_exception_master:
1042e4c0 6435 case bp_tracepoint:
7a697b8d 6436 case bp_fast_tracepoint:
0fb4aa4b 6437 case bp_static_tracepoint:
e7e0cddf 6438 case bp_dprintf:
4efc6507 6439 case bp_jit_event:
0e30163f
JK
6440 case bp_gnu_ifunc_resolver:
6441 case bp_gnu_ifunc_resolver_return:
79a45b7d 6442 if (opts.addressprint)
3086aeae
DJ
6443 {
6444 annotate_field (4);
54e52265 6445 if (header_of_multiple)
112e8700 6446 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6447 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6448 uiout->field_string ("addr", "<PENDING>");
0101ce28 6449 else
112e8700 6450 uiout->field_core_addr ("addr",
5af949e3 6451 loc->gdbarch, loc->address);
3086aeae
DJ
6452 }
6453 annotate_field (5);
0d381245 6454 if (!header_of_multiple)
170b53b2 6455 print_breakpoint_location (b, loc);
0d381245 6456 if (b->loc)
a6d9a66e 6457 *last_loc = b->loc;
3086aeae
DJ
6458 break;
6459 }
c906108c 6460
6c95b8df 6461
998580f1 6462 if (loc != NULL && !header_of_multiple)
6c95b8df
PA
6463 {
6464 struct inferior *inf;
998580f1
MK
6465 VEC(int) *inf_num = NULL;
6466 int mi_only = 1;
6c95b8df 6467
998580f1 6468 ALL_INFERIORS (inf)
6c95b8df
PA
6469 {
6470 if (inf->pspace == loc->pspace)
998580f1 6471 VEC_safe_push (int, inf_num, inf->num);
6c95b8df 6472 }
998580f1
MK
6473
6474 /* For backward compatibility, don't display inferiors in CLI unless
6475 there are several. Always display for MI. */
6476 if (allflag
6477 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6478 && (number_of_program_spaces () > 1
6479 || number_of_inferiors () > 1)
6480 /* LOC is for existing B, it cannot be in
6481 moribund_locations and thus having NULL OWNER. */
6482 && loc->owner->type != bp_catchpoint))
6483 mi_only = 0;
6484 output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6485 VEC_free (int, inf_num);
6c95b8df
PA
6486 }
6487
4a306c9a 6488 if (!part_of_multiple)
c4093a6a 6489 {
4a306c9a
JB
6490 if (b->thread != -1)
6491 {
6492 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6493 "stop only in" line a little further down. */
112e8700
SM
6494 uiout->text (" thread ");
6495 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6496 }
6497 else if (b->task != 0)
6498 {
112e8700
SM
6499 uiout->text (" task ");
6500 uiout->field_int ("task", b->task);
4a306c9a 6501 }
c4093a6a 6502 }
f1310107 6503
112e8700 6504 uiout->text ("\n");
f1310107 6505
348d480f 6506 if (!part_of_multiple)
f1310107
TJB
6507 b->ops->print_one_detail (b, uiout);
6508
0d381245 6509 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6510 {
6511 annotate_field (6);
112e8700 6512 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6513 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6514 the frame ID. */
112e8700 6515 uiout->field_core_addr ("frame",
5af949e3 6516 b->gdbarch, b->frame_id.stack_addr);
112e8700 6517 uiout->text ("\n");
c4093a6a
JM
6518 }
6519
28010a5d 6520 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6521 {
6522 annotate_field (7);
d77f58be 6523 if (is_tracepoint (b))
112e8700 6524 uiout->text ("\ttrace only if ");
1042e4c0 6525 else
112e8700
SM
6526 uiout->text ("\tstop only if ");
6527 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6528
6529 /* Print whether the target is doing the breakpoint's condition
6530 evaluation. If GDB is doing the evaluation, don't print anything. */
6531 if (is_breakpoint (b)
6532 && breakpoint_condition_evaluation_mode ()
6533 == condition_evaluation_target)
6534 {
112e8700
SM
6535 uiout->text (" (");
6536 uiout->field_string ("evaluated-by",
b775012e 6537 bp_condition_evaluator (b));
112e8700 6538 uiout->text (" evals)");
b775012e 6539 }
112e8700 6540 uiout->text ("\n");
0101ce28
JJ
6541 }
6542
0d381245 6543 if (!part_of_multiple && b->thread != -1)
c4093a6a 6544 {
4a64f543 6545 /* FIXME should make an annotation for this. */
112e8700
SM
6546 uiout->text ("\tstop only in thread ");
6547 if (uiout->is_mi_like_p ())
6548 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6549 else
6550 {
6551 struct thread_info *thr = find_thread_global_id (b->thread);
6552
112e8700 6553 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6554 }
112e8700 6555 uiout->text ("\n");
c4093a6a
JM
6556 }
6557
556ec64d
YQ
6558 if (!part_of_multiple)
6559 {
6560 if (b->hit_count)
31f56a27
YQ
6561 {
6562 /* FIXME should make an annotation for this. */
6563 if (is_catchpoint (b))
112e8700 6564 uiout->text ("\tcatchpoint");
31f56a27 6565 else if (is_tracepoint (b))
112e8700 6566 uiout->text ("\ttracepoint");
31f56a27 6567 else
112e8700
SM
6568 uiout->text ("\tbreakpoint");
6569 uiout->text (" already hit ");
6570 uiout->field_int ("times", b->hit_count);
31f56a27 6571 if (b->hit_count == 1)
112e8700 6572 uiout->text (" time\n");
31f56a27 6573 else
112e8700 6574 uiout->text (" times\n");
31f56a27 6575 }
556ec64d
YQ
6576 else
6577 {
31f56a27 6578 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6579 if (uiout->is_mi_like_p ())
6580 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6581 }
6582 }
8b93c638 6583
0d381245 6584 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6585 {
6586 annotate_field (8);
112e8700
SM
6587 uiout->text ("\tignore next ");
6588 uiout->field_int ("ignore", b->ignore_count);
6589 uiout->text (" hits\n");
c4093a6a 6590 }
059fb39f 6591
816338b5
SS
6592 /* Note that an enable count of 1 corresponds to "enable once"
6593 behavior, which is reported by the combination of enablement and
6594 disposition, so we don't need to mention it here. */
6595 if (!part_of_multiple && b->enable_count > 1)
6596 {
6597 annotate_field (8);
112e8700 6598 uiout->text ("\tdisable after ");
816338b5
SS
6599 /* Tweak the wording to clarify that ignore and enable counts
6600 are distinct, and have additive effect. */
6601 if (b->ignore_count)
112e8700 6602 uiout->text ("additional ");
816338b5 6603 else
112e8700
SM
6604 uiout->text ("next ");
6605 uiout->field_int ("enable", b->enable_count);
6606 uiout->text (" hits\n");
816338b5
SS
6607 }
6608
f196051f
SS
6609 if (!part_of_multiple && is_tracepoint (b))
6610 {
6611 struct tracepoint *tp = (struct tracepoint *) b;
6612
6613 if (tp->traceframe_usage)
6614 {
112e8700
SM
6615 uiout->text ("\ttrace buffer usage ");
6616 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6617 uiout->text (" bytes\n");
f196051f
SS
6618 }
6619 }
d3ce09f5 6620
9add0f1b 6621 l = b->commands ? b->commands->commands : NULL;
059fb39f 6622 if (!part_of_multiple && l)
c4093a6a
JM
6623 {
6624 annotate_field (9);
2e783024 6625 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6626 print_command_lines (uiout, l, 4);
c4093a6a 6627 }
d24317b4 6628
d9b3f62e 6629 if (is_tracepoint (b))
1042e4c0 6630 {
d9b3f62e
PA
6631 struct tracepoint *t = (struct tracepoint *) b;
6632
6633 if (!part_of_multiple && t->pass_count)
6634 {
6635 annotate_field (10);
112e8700
SM
6636 uiout->text ("\tpass count ");
6637 uiout->field_int ("pass", t->pass_count);
6638 uiout->text (" \n");
d9b3f62e 6639 }
f2a8bc8a
YQ
6640
6641 /* Don't display it when tracepoint or tracepoint location is
6642 pending. */
6643 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6644 {
6645 annotate_field (11);
6646
112e8700
SM
6647 if (uiout->is_mi_like_p ())
6648 uiout->field_string ("installed",
f2a8bc8a
YQ
6649 loc->inserted ? "y" : "n");
6650 else
6651 {
6652 if (loc->inserted)
112e8700 6653 uiout->text ("\t");
f2a8bc8a 6654 else
112e8700
SM
6655 uiout->text ("\tnot ");
6656 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6657 }
6658 }
1042e4c0
SS
6659 }
6660
112e8700 6661 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6662 {
3a5c3e22
PA
6663 if (is_watchpoint (b))
6664 {
6665 struct watchpoint *w = (struct watchpoint *) b;
6666
112e8700 6667 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6668 }
f00aae0f 6669 else if (b->location != NULL
d28cd78a 6670 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6671 uiout->field_string ("original-location",
d28cd78a 6672 event_location_to_string (b->location.get ()));
d24317b4 6673 }
c4093a6a 6674}
c5aa993b 6675
0d381245
VP
6676static void
6677print_one_breakpoint (struct breakpoint *b,
4a64f543 6678 struct bp_location **last_loc,
6c95b8df 6679 int allflag)
0d381245 6680{
79a45e25 6681 struct ui_out *uiout = current_uiout;
8d3788bd 6682
2e783024
TT
6683 {
6684 ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
8d3788bd 6685
2e783024
TT
6686 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6687 }
0d381245
VP
6688
6689 /* If this breakpoint has custom print function,
6690 it's already printed. Otherwise, print individual
6691 locations, if any. */
6692 if (b->ops == NULL || b->ops->print_one == NULL)
6693 {
4a64f543
MS
6694 /* If breakpoint has a single location that is disabled, we
6695 print it as if it had several locations, since otherwise it's
6696 hard to represent "breakpoint enabled, location disabled"
6697 situation.
6698
6699 Note that while hardware watchpoints have several locations
a3be7890 6700 internally, that's not a property exposed to user. */
0d381245 6701 if (b->loc
a5606eee 6702 && !is_hardware_watchpoint (b)
8d3788bd 6703 && (b->loc->next || !b->loc->enabled))
0d381245
VP
6704 {
6705 struct bp_location *loc;
6706 int n = 1;
8d3788bd 6707
0d381245 6708 for (loc = b->loc; loc; loc = loc->next, ++n)
8d3788bd 6709 {
2e783024 6710 ui_out_emit_tuple tuple_emitter (uiout, NULL);
8d3788bd 6711 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6712 }
0d381245
VP
6713 }
6714 }
6715}
6716
a6d9a66e
UW
6717static int
6718breakpoint_address_bits (struct breakpoint *b)
6719{
6720 int print_address_bits = 0;
6721 struct bp_location *loc;
6722
c6d81124
PA
6723 /* Software watchpoints that aren't watching memory don't have an
6724 address to print. */
6725 if (is_no_memory_software_watchpoint (b))
6726 return 0;
6727
a6d9a66e
UW
6728 for (loc = b->loc; loc; loc = loc->next)
6729 {
c7437ca6
PA
6730 int addr_bit;
6731
c7437ca6 6732 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6733 if (addr_bit > print_address_bits)
6734 print_address_bits = addr_bit;
6735 }
6736
6737 return print_address_bits;
6738}
0d381245 6739
c4093a6a
JM
6740struct captured_breakpoint_query_args
6741 {
6742 int bnum;
6743 };
c5aa993b 6744
c4093a6a 6745static int
2b65245e 6746do_captured_breakpoint_query (struct ui_out *uiout, void *data)
c4093a6a 6747{
9a3c8263
SM
6748 struct captured_breakpoint_query_args *args
6749 = (struct captured_breakpoint_query_args *) data;
52f0bd74 6750 struct breakpoint *b;
a6d9a66e 6751 struct bp_location *dummy_loc = NULL;
cc59ec59 6752
c4093a6a
JM
6753 ALL_BREAKPOINTS (b)
6754 {
6755 if (args->bnum == b->number)
c5aa993b 6756 {
12c5a436 6757 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6758 return GDB_RC_OK;
c5aa993b 6759 }
c4093a6a
JM
6760 }
6761 return GDB_RC_NONE;
6762}
c5aa993b 6763
c4093a6a 6764enum gdb_rc
4a64f543
MS
6765gdb_breakpoint_query (struct ui_out *uiout, int bnum,
6766 char **error_message)
c4093a6a
JM
6767{
6768 struct captured_breakpoint_query_args args;
cc59ec59 6769
c4093a6a
JM
6770 args.bnum = bnum;
6771 /* For the moment we don't trust print_one_breakpoint() to not throw
4a64f543 6772 an error. */
b0b13bb4
DJ
6773 if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6774 error_message, RETURN_MASK_ALL) < 0)
6775 return GDB_RC_FAIL;
6776 else
6777 return GDB_RC_OK;
c4093a6a 6778}
c5aa993b 6779
09d682a4
TT
6780/* Return true if this breakpoint was set by the user, false if it is
6781 internal or momentary. */
6782
6783int
6784user_breakpoint_p (struct breakpoint *b)
6785{
46c6471b 6786 return b->number > 0;
09d682a4
TT
6787}
6788
93daf339
TT
6789/* See breakpoint.h. */
6790
6791int
6792pending_breakpoint_p (struct breakpoint *b)
6793{
6794 return b->loc == NULL;
6795}
6796
7f3b0473 6797/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6798 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6799 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6800 FILTER is non-NULL, call it on each breakpoint and only include the
6801 ones for which it returns non-zero. Return the total number of
6802 breakpoints listed. */
c906108c 6803
d77f58be 6804static int
e5a67952 6805breakpoint_1 (char *args, int allflag,
4a64f543 6806 int (*filter) (const struct breakpoint *))
c4093a6a 6807{
52f0bd74 6808 struct breakpoint *b;
a6d9a66e 6809 struct bp_location *last_loc = NULL;
7f3b0473 6810 int nr_printable_breakpoints;
79a45b7d 6811 struct value_print_options opts;
a6d9a66e 6812 int print_address_bits = 0;
269b11a2 6813 int print_type_col_width = 14;
79a45e25 6814 struct ui_out *uiout = current_uiout;
269b11a2 6815
79a45b7d
TT
6816 get_user_print_options (&opts);
6817
4a64f543
MS
6818 /* Compute the number of rows in the table, as well as the size
6819 required for address fields. */
7f3b0473
AC
6820 nr_printable_breakpoints = 0;
6821 ALL_BREAKPOINTS (b)
e5a67952
MS
6822 {
6823 /* If we have a filter, only list the breakpoints it accepts. */
6824 if (filter && !filter (b))
6825 continue;
6826
6827 /* If we have an "args" string, it is a list of breakpoints to
6828 accept. Skip the others. */
6829 if (args != NULL && *args != '\0')
6830 {
6831 if (allflag && parse_and_eval_long (args) != b->number)
6832 continue;
6833 if (!allflag && !number_is_in_list (args, b->number))
6834 continue;
6835 }
269b11a2 6836
e5a67952
MS
6837 if (allflag || user_breakpoint_p (b))
6838 {
6839 int addr_bit, type_len;
a6d9a66e 6840
e5a67952
MS
6841 addr_bit = breakpoint_address_bits (b);
6842 if (addr_bit > print_address_bits)
6843 print_address_bits = addr_bit;
269b11a2 6844
e5a67952
MS
6845 type_len = strlen (bptype_string (b->type));
6846 if (type_len > print_type_col_width)
6847 print_type_col_width = type_len;
6848
6849 nr_printable_breakpoints++;
6850 }
6851 }
7f3b0473 6852
4a2b031d
TT
6853 {
6854 ui_out_emit_table table_emitter (uiout,
6855 opts.addressprint ? 6 : 5,
6856 nr_printable_breakpoints,
6857 "BreakpointTable");
6858
6859 if (nr_printable_breakpoints > 0)
6860 annotate_breakpoints_headers ();
6861 if (nr_printable_breakpoints > 0)
6862 annotate_field (0);
6863 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6864 if (nr_printable_breakpoints > 0)
6865 annotate_field (1);
6866 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6867 if (nr_printable_breakpoints > 0)
6868 annotate_field (2);
6869 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6870 if (nr_printable_breakpoints > 0)
6871 annotate_field (3);
6872 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6873 if (opts.addressprint)
6874 {
6875 if (nr_printable_breakpoints > 0)
6876 annotate_field (4);
6877 if (print_address_bits <= 32)
6878 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6879 else
6880 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6881 }
6882 if (nr_printable_breakpoints > 0)
6883 annotate_field (5);
6884 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6885 uiout->table_body ();
6886 if (nr_printable_breakpoints > 0)
6887 annotate_breakpoints_table ();
6888
6889 ALL_BREAKPOINTS (b)
6890 {
6891 QUIT;
6892 /* If we have a filter, only list the breakpoints it accepts. */
6893 if (filter && !filter (b))
6894 continue;
e5a67952 6895
4a2b031d
TT
6896 /* If we have an "args" string, it is a list of breakpoints to
6897 accept. Skip the others. */
e5a67952 6898
4a2b031d
TT
6899 if (args != NULL && *args != '\0')
6900 {
6901 if (allflag) /* maintenance info breakpoint */
6902 {
6903 if (parse_and_eval_long (args) != b->number)
6904 continue;
6905 }
6906 else /* all others */
6907 {
6908 if (!number_is_in_list (args, b->number))
6909 continue;
6910 }
6911 }
6912 /* We only print out user settable breakpoints unless the
6913 allflag is set. */
6914 if (allflag || user_breakpoint_p (b))
6915 print_one_breakpoint (b, &last_loc, allflag);
6916 }
6917 }
698384cd 6918
7f3b0473 6919 if (nr_printable_breakpoints == 0)
c906108c 6920 {
4a64f543
MS
6921 /* If there's a filter, let the caller decide how to report
6922 empty list. */
d77f58be
SS
6923 if (!filter)
6924 {
e5a67952 6925 if (args == NULL || *args == '\0')
112e8700 6926 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6927 else
112e8700 6928 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6929 args);
d77f58be 6930 }
c906108c
SS
6931 }
6932 else
c4093a6a 6933 {
a6d9a66e
UW
6934 if (last_loc && !server_command)
6935 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6936 }
c906108c 6937
4a64f543 6938 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6939 there have been breakpoints? */
c906108c 6940 annotate_breakpoints_table_end ();
d77f58be
SS
6941
6942 return nr_printable_breakpoints;
c906108c
SS
6943}
6944
ad443146
SS
6945/* Display the value of default-collect in a way that is generally
6946 compatible with the breakpoint list. */
6947
6948static void
6949default_collect_info (void)
6950{
79a45e25
PA
6951 struct ui_out *uiout = current_uiout;
6952
ad443146
SS
6953 /* If it has no value (which is frequently the case), say nothing; a
6954 message like "No default-collect." gets in user's face when it's
6955 not wanted. */
6956 if (!*default_collect)
6957 return;
6958
6959 /* The following phrase lines up nicely with per-tracepoint collect
6960 actions. */
112e8700
SM
6961 uiout->text ("default collect ");
6962 uiout->field_string ("default-collect", default_collect);
6963 uiout->text (" \n");
ad443146
SS
6964}
6965
c906108c 6966static void
e5a67952 6967breakpoints_info (char *args, int from_tty)
c906108c 6968{
e5a67952 6969 breakpoint_1 (args, 0, NULL);
ad443146
SS
6970
6971 default_collect_info ();
d77f58be
SS
6972}
6973
6974static void
e5a67952 6975watchpoints_info (char *args, int from_tty)
d77f58be 6976{
e5a67952 6977 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6978 struct ui_out *uiout = current_uiout;
d77f58be
SS
6979
6980 if (num_printed == 0)
6981 {
e5a67952 6982 if (args == NULL || *args == '\0')
112e8700 6983 uiout->message ("No watchpoints.\n");
d77f58be 6984 else
112e8700 6985 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6986 }
c906108c
SS
6987}
6988
7a292a7a 6989static void
e5a67952 6990maintenance_info_breakpoints (char *args, int from_tty)
c906108c 6991{
e5a67952 6992 breakpoint_1 (args, 1, NULL);
ad443146
SS
6993
6994 default_collect_info ();
c906108c
SS
6995}
6996
0d381245 6997static int
714835d5 6998breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6999 struct program_space *pspace,
714835d5 7000 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
7001{
7002 struct bp_location *bl = b->loc;
cc59ec59 7003
0d381245
VP
7004 for (; bl; bl = bl->next)
7005 {
6c95b8df
PA
7006 if (bl->pspace == pspace
7007 && bl->address == pc
0d381245
VP
7008 && (!overlay_debugging || bl->section == section))
7009 return 1;
7010 }
7011 return 0;
7012}
7013
672f9b60 7014/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
7015 concerns with logical breakpoints, so we match program spaces, not
7016 address spaces. */
c906108c
SS
7017
7018static void
6c95b8df
PA
7019describe_other_breakpoints (struct gdbarch *gdbarch,
7020 struct program_space *pspace, CORE_ADDR pc,
5af949e3 7021 struct obj_section *section, int thread)
c906108c 7022{
52f0bd74
AC
7023 int others = 0;
7024 struct breakpoint *b;
c906108c
SS
7025
7026 ALL_BREAKPOINTS (b)
672f9b60
KP
7027 others += (user_breakpoint_p (b)
7028 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
7029 if (others > 0)
7030 {
a3f17187
AC
7031 if (others == 1)
7032 printf_filtered (_("Note: breakpoint "));
7033 else /* if (others == ???) */
7034 printf_filtered (_("Note: breakpoints "));
c906108c 7035 ALL_BREAKPOINTS (b)
672f9b60 7036 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
7037 {
7038 others--;
7039 printf_filtered ("%d", b->number);
7040 if (b->thread == -1 && thread != -1)
7041 printf_filtered (" (all threads)");
7042 else if (b->thread != -1)
7043 printf_filtered (" (thread %d)", b->thread);
7044 printf_filtered ("%s%s ",
059fb39f 7045 ((b->enable_state == bp_disabled
f8eba3c6 7046 || b->enable_state == bp_call_disabled)
0d381245 7047 ? " (disabled)"
0d381245
VP
7048 : ""),
7049 (others > 1) ? ","
7050 : ((others == 1) ? " and" : ""));
7051 }
a3f17187 7052 printf_filtered (_("also set at pc "));
5af949e3 7053 fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
c906108c
SS
7054 printf_filtered (".\n");
7055 }
7056}
7057\f
c906108c 7058
e4f237da 7059/* Return true iff it is meaningful to use the address member of
244558af
LM
7060 BPT locations. For some breakpoint types, the locations' address members
7061 are irrelevant and it makes no sense to attempt to compare them to other
7062 addresses (or use them for any other purpose either).
e4f237da 7063
4a64f543 7064 More specifically, each of the following breakpoint types will
244558af 7065 always have a zero valued location address and we don't want to mark
4a64f543 7066 breakpoints of any of these types to be a duplicate of an actual
244558af 7067 breakpoint location at address zero:
e4f237da
KB
7068
7069 bp_watchpoint
2d134ed3
PA
7070 bp_catchpoint
7071
7072*/
e4f237da
KB
7073
7074static int
7075breakpoint_address_is_meaningful (struct breakpoint *bpt)
7076{
7077 enum bptype type = bpt->type;
7078
2d134ed3
PA
7079 return (type != bp_watchpoint && type != bp_catchpoint);
7080}
7081
7082/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7083 true if LOC1 and LOC2 represent the same watchpoint location. */
7084
7085static int
4a64f543
MS
7086watchpoint_locations_match (struct bp_location *loc1,
7087 struct bp_location *loc2)
2d134ed3 7088{
3a5c3e22
PA
7089 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7090 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7091
7092 /* Both of them must exist. */
7093 gdb_assert (w1 != NULL);
7094 gdb_assert (w2 != NULL);
2bdf28a0 7095
4a64f543
MS
7096 /* If the target can evaluate the condition expression in hardware,
7097 then we we need to insert both watchpoints even if they are at
7098 the same place. Otherwise the watchpoint will only trigger when
7099 the condition of whichever watchpoint was inserted evaluates to
7100 true, not giving a chance for GDB to check the condition of the
7101 other watchpoint. */
3a5c3e22 7102 if ((w1->cond_exp
4a64f543
MS
7103 && target_can_accel_watchpoint_condition (loc1->address,
7104 loc1->length,
0cf6dd15 7105 loc1->watchpoint_type,
4d01a485 7106 w1->cond_exp.get ()))
3a5c3e22 7107 || (w2->cond_exp
4a64f543
MS
7108 && target_can_accel_watchpoint_condition (loc2->address,
7109 loc2->length,
0cf6dd15 7110 loc2->watchpoint_type,
4d01a485 7111 w2->cond_exp.get ())))
0cf6dd15
TJB
7112 return 0;
7113
85d721b8
PA
7114 /* Note that this checks the owner's type, not the location's. In
7115 case the target does not support read watchpoints, but does
7116 support access watchpoints, we'll have bp_read_watchpoint
7117 watchpoints with hw_access locations. Those should be considered
7118 duplicates of hw_read locations. The hw_read locations will
7119 become hw_access locations later. */
2d134ed3
PA
7120 return (loc1->owner->type == loc2->owner->type
7121 && loc1->pspace->aspace == loc2->pspace->aspace
7122 && loc1->address == loc2->address
7123 && loc1->length == loc2->length);
e4f237da
KB
7124}
7125
31e77af2 7126/* See breakpoint.h. */
6c95b8df 7127
31e77af2 7128int
6c95b8df
PA
7129breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7130 struct address_space *aspace2, CORE_ADDR addr2)
7131{
f5656ead 7132 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
7133 || aspace1 == aspace2)
7134 && addr1 == addr2);
7135}
7136
f1310107
TJB
7137/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7138 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
7139 matches ASPACE2. On targets that have global breakpoints, the address
7140 space doesn't really matter. */
7141
7142static int
7143breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7144 int len1, struct address_space *aspace2,
7145 CORE_ADDR addr2)
7146{
f5656ead 7147 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
7148 || aspace1 == aspace2)
7149 && addr2 >= addr1 && addr2 < addr1 + len1);
7150}
7151
7152/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
7153 a ranged breakpoint. In most targets, a match happens only if ASPACE
7154 matches the breakpoint's address space. On targets that have global
7155 breakpoints, the address space doesn't really matter. */
7156
7157static int
7158breakpoint_location_address_match (struct bp_location *bl,
7159 struct address_space *aspace,
7160 CORE_ADDR addr)
7161{
7162 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7163 aspace, addr)
7164 || (bl->length
7165 && breakpoint_address_match_range (bl->pspace->aspace,
7166 bl->address, bl->length,
7167 aspace, addr)));
7168}
7169
d35ae833
PA
7170/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7171 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
7172 match happens only if ASPACE matches the breakpoint's address
7173 space. On targets that have global breakpoints, the address space
7174 doesn't really matter. */
7175
7176static int
7177breakpoint_location_address_range_overlap (struct bp_location *bl,
7178 struct address_space *aspace,
7179 CORE_ADDR addr, int len)
7180{
7181 if (gdbarch_has_global_breakpoints (target_gdbarch ())
7182 || bl->pspace->aspace == aspace)
7183 {
7184 int bl_len = bl->length != 0 ? bl->length : 1;
7185
7186 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7187 return 1;
7188 }
7189 return 0;
7190}
7191
1e4d1764
YQ
7192/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7193 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7194 true, otherwise returns false. */
7195
7196static int
7197tracepoint_locations_match (struct bp_location *loc1,
7198 struct bp_location *loc2)
7199{
7200 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7201 /* Since tracepoint locations are never duplicated with others', tracepoint
7202 locations at the same address of different tracepoints are regarded as
7203 different locations. */
7204 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7205 else
7206 return 0;
7207}
7208
2d134ed3
PA
7209/* Assuming LOC1 and LOC2's types' have meaningful target addresses
7210 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7211 represent the same location. */
7212
7213static int
4a64f543
MS
7214breakpoint_locations_match (struct bp_location *loc1,
7215 struct bp_location *loc2)
2d134ed3 7216{
2bdf28a0
JK
7217 int hw_point1, hw_point2;
7218
7219 /* Both of them must not be in moribund_locations. */
7220 gdb_assert (loc1->owner != NULL);
7221 gdb_assert (loc2->owner != NULL);
7222
7223 hw_point1 = is_hardware_watchpoint (loc1->owner);
7224 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
7225
7226 if (hw_point1 != hw_point2)
7227 return 0;
7228 else if (hw_point1)
7229 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
7230 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7231 return tracepoint_locations_match (loc1, loc2);
2d134ed3 7232 else
f1310107
TJB
7233 /* We compare bp_location.length in order to cover ranged breakpoints. */
7234 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7235 loc2->pspace->aspace, loc2->address)
7236 && loc1->length == loc2->length);
2d134ed3
PA
7237}
7238
76897487
KB
7239static void
7240breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7241 int bnum, int have_bnum)
7242{
f63fbe86
MS
7243 /* The longest string possibly returned by hex_string_custom
7244 is 50 chars. These must be at least that big for safety. */
7245 char astr1[64];
7246 char astr2[64];
76897487 7247
bb599908
PH
7248 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7249 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 7250 if (have_bnum)
8a3fe4f8 7251 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
7252 bnum, astr1, astr2);
7253 else
8a3fe4f8 7254 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
7255}
7256
4a64f543
MS
7257/* Adjust a breakpoint's address to account for architectural
7258 constraints on breakpoint placement. Return the adjusted address.
7259 Note: Very few targets require this kind of adjustment. For most
7260 targets, this function is simply the identity function. */
76897487
KB
7261
7262static CORE_ADDR
a6d9a66e
UW
7263adjust_breakpoint_address (struct gdbarch *gdbarch,
7264 CORE_ADDR bpaddr, enum bptype bptype)
76897487 7265{
a6d9a66e 7266 if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
76897487
KB
7267 {
7268 /* Very few targets need any kind of breakpoint adjustment. */
7269 return bpaddr;
7270 }
88f7da05
KB
7271 else if (bptype == bp_watchpoint
7272 || bptype == bp_hardware_watchpoint
7273 || bptype == bp_read_watchpoint
7274 || bptype == bp_access_watchpoint
fe798b75 7275 || bptype == bp_catchpoint)
88f7da05
KB
7276 {
7277 /* Watchpoints and the various bp_catch_* eventpoints should not
7278 have their addresses modified. */
7279 return bpaddr;
7280 }
7c16b83e
PA
7281 else if (bptype == bp_single_step)
7282 {
7283 /* Single-step breakpoints should not have their addresses
7284 modified. If there's any architectural constrain that
7285 applies to this address, then it should have already been
7286 taken into account when the breakpoint was created in the
7287 first place. If we didn't do this, stepping through e.g.,
7288 Thumb-2 IT blocks would break. */
7289 return bpaddr;
7290 }
76897487
KB
7291 else
7292 {
7293 CORE_ADDR adjusted_bpaddr;
7294
7295 /* Some targets have architectural constraints on the placement
7296 of breakpoint instructions. Obtain the adjusted address. */
a6d9a66e 7297 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
76897487
KB
7298
7299 /* An adjusted breakpoint address can significantly alter
7300 a user's expectations. Print a warning if an adjustment
7301 is required. */
7302 if (adjusted_bpaddr != bpaddr)
7303 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7304
7305 return adjusted_bpaddr;
7306 }
7307}
7308
5625a286 7309bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
7cc221ef 7310{
5625a286 7311 bp_location *loc = this;
7cc221ef 7312
348d480f
PA
7313 gdb_assert (ops != NULL);
7314
28010a5d
PA
7315 loc->ops = ops;
7316 loc->owner = owner;
b775012e 7317 loc->cond_bytecode = NULL;
0d381245
VP
7318 loc->shlib_disabled = 0;
7319 loc->enabled = 1;
e049a4b5 7320
28010a5d 7321 switch (owner->type)
e049a4b5
DJ
7322 {
7323 case bp_breakpoint:
7c16b83e 7324 case bp_single_step:
e049a4b5
DJ
7325 case bp_until:
7326 case bp_finish:
7327 case bp_longjmp:
7328 case bp_longjmp_resume:
e2e4d78b 7329 case bp_longjmp_call_dummy:
186c406b
TT
7330 case bp_exception:
7331 case bp_exception_resume:
e049a4b5 7332 case bp_step_resume:
2c03e5be 7333 case bp_hp_step_resume:
e049a4b5
DJ
7334 case bp_watchpoint_scope:
7335 case bp_call_dummy:
aa7d318d 7336 case bp_std_terminate:
e049a4b5
DJ
7337 case bp_shlib_event:
7338 case bp_thread_event:
7339 case bp_overlay_event:
4efc6507 7340 case bp_jit_event:
0fd8e87f 7341 case bp_longjmp_master:
aa7d318d 7342 case bp_std_terminate_master:
186c406b 7343 case bp_exception_master:
0e30163f
JK
7344 case bp_gnu_ifunc_resolver:
7345 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7346 case bp_dprintf:
e049a4b5 7347 loc->loc_type = bp_loc_software_breakpoint;
b775012e 7348 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7349 break;
7350 case bp_hardware_breakpoint:
7351 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 7352 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
7353 break;
7354 case bp_hardware_watchpoint:
7355 case bp_read_watchpoint:
7356 case bp_access_watchpoint:
7357 loc->loc_type = bp_loc_hardware_watchpoint;
7358 break;
7359 case bp_watchpoint:
ce78b96d 7360 case bp_catchpoint:
15c3d785
PA
7361 case bp_tracepoint:
7362 case bp_fast_tracepoint:
0fb4aa4b 7363 case bp_static_tracepoint:
e049a4b5
DJ
7364 loc->loc_type = bp_loc_other;
7365 break;
7366 default:
e2e0b3e5 7367 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7368 }
7369
f431efe5 7370 loc->refc = 1;
28010a5d
PA
7371}
7372
7373/* Allocate a struct bp_location. */
7374
7375static struct bp_location *
7376allocate_bp_location (struct breakpoint *bpt)
7377{
348d480f
PA
7378 return bpt->ops->allocate_location (bpt);
7379}
7cc221ef 7380
f431efe5
PA
7381static void
7382free_bp_location (struct bp_location *loc)
fe3f5fa8 7383{
348d480f 7384 loc->ops->dtor (loc);
4d01a485 7385 delete loc;
fe3f5fa8
VP
7386}
7387
f431efe5
PA
7388/* Increment reference count. */
7389
7390static void
7391incref_bp_location (struct bp_location *bl)
7392{
7393 ++bl->refc;
7394}
7395
7396/* Decrement reference count. If the reference count reaches 0,
7397 destroy the bp_location. Sets *BLP to NULL. */
7398
7399static void
7400decref_bp_location (struct bp_location **blp)
7401{
0807b50c
PA
7402 gdb_assert ((*blp)->refc > 0);
7403
f431efe5
PA
7404 if (--(*blp)->refc == 0)
7405 free_bp_location (*blp);
7406 *blp = NULL;
7407}
7408
346774a9 7409/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7410
346774a9
PA
7411static void
7412add_to_breakpoint_chain (struct breakpoint *b)
c906108c 7413{
346774a9 7414 struct breakpoint *b1;
c906108c 7415
346774a9
PA
7416 /* Add this breakpoint to the end of the chain so that a list of
7417 breakpoints will come out in order of increasing numbers. */
7418
7419 b1 = breakpoint_chain;
7420 if (b1 == 0)
7421 breakpoint_chain = b;
7422 else
7423 {
7424 while (b1->next)
7425 b1 = b1->next;
7426 b1->next = b;
7427 }
7428}
7429
7430/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7431
7432static void
7433init_raw_breakpoint_without_location (struct breakpoint *b,
7434 struct gdbarch *gdbarch,
28010a5d 7435 enum bptype bptype,
c0a91b2b 7436 const struct breakpoint_ops *ops)
346774a9 7437{
348d480f
PA
7438 gdb_assert (ops != NULL);
7439
28010a5d 7440 b->ops = ops;
4d28f7a8 7441 b->type = bptype;
a6d9a66e 7442 b->gdbarch = gdbarch;
c906108c
SS
7443 b->language = current_language->la_language;
7444 b->input_radix = input_radix;
d0fb5eae 7445 b->related_breakpoint = b;
346774a9
PA
7446}
7447
7448/* Helper to set_raw_breakpoint below. Creates a breakpoint
7449 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7450
7451static struct breakpoint *
7452set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7453 enum bptype bptype,
c0a91b2b 7454 const struct breakpoint_ops *ops)
346774a9 7455{
3b0871f4 7456 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7457
3b0871f4
SM
7458 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7459 add_to_breakpoint_chain (b.get ());
7460
7461 return b.release ();
0d381245
VP
7462}
7463
0e30163f
JK
7464/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7465 resolutions should be made as the user specified the location explicitly
7466 enough. */
7467
0d381245 7468static void
0e30163f 7469set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7470{
2bdf28a0
JK
7471 gdb_assert (loc->owner != NULL);
7472
0d381245 7473 if (loc->owner->type == bp_breakpoint
1042e4c0 7474 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7475 || is_tracepoint (loc->owner))
0d381245 7476 {
0e30163f 7477 int is_gnu_ifunc;
2c02bd72 7478 const char *function_name;
6a3a010b 7479 CORE_ADDR func_addr;
0e30163f 7480
2c02bd72 7481 find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6a3a010b 7482 &func_addr, NULL, &is_gnu_ifunc);
0e30163f
JK
7483
7484 if (is_gnu_ifunc && !explicit_loc)
7485 {
7486 struct breakpoint *b = loc->owner;
7487
7488 gdb_assert (loc->pspace == current_program_space);
2c02bd72 7489 if (gnu_ifunc_resolve_name (function_name,
0e30163f
JK
7490 &loc->requested_address))
7491 {
7492 /* Recalculate ADDRESS based on new REQUESTED_ADDRESS. */
7493 loc->address = adjust_breakpoint_address (loc->gdbarch,
7494 loc->requested_address,
7495 b->type);
7496 }
7497 else if (b->type == bp_breakpoint && b->loc == loc
7498 && loc->next == NULL && b->related_breakpoint == b)
7499 {
7500 /* Create only the whole new breakpoint of this type but do not
7501 mess more complicated breakpoints with multiple locations. */
7502 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7503 /* Remember the resolver's address for use by the return
7504 breakpoint. */
7505 loc->related_address = func_addr;
0e30163f
JK
7506 }
7507 }
7508
2c02bd72
DE
7509 if (function_name)
7510 loc->function_name = xstrdup (function_name);
0d381245
VP
7511 }
7512}
7513
a6d9a66e 7514/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7515struct gdbarch *
a6d9a66e
UW
7516get_sal_arch (struct symtab_and_line sal)
7517{
7518 if (sal.section)
7519 return get_objfile_arch (sal.section->objfile);
7520 if (sal.symtab)
eb822aa6 7521 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7522
7523 return NULL;
7524}
7525
346774a9
PA
7526/* Low level routine for partially initializing a breakpoint of type
7527 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7528 file name, and line number are provided by SAL.
0d381245
VP
7529
7530 It is expected that the caller will complete the initialization of
7531 the newly created breakpoint struct as well as output any status
c56053d2 7532 information regarding the creation of a new breakpoint. */
0d381245 7533
346774a9
PA
7534static void
7535init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7536 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7537 const struct breakpoint_ops *ops)
0d381245 7538{
28010a5d 7539 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7540
3742cc8b 7541 add_location_to_breakpoint (b, &sal);
0d381245 7542
6c95b8df
PA
7543 if (bptype != bp_catchpoint)
7544 gdb_assert (sal.pspace != NULL);
7545
f8eba3c6
TT
7546 /* Store the program space that was used to set the breakpoint,
7547 except for ordinary breakpoints, which are independent of the
7548 program space. */
7549 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7550 b->pspace = sal.pspace;
346774a9 7551}
c906108c 7552
346774a9
PA
7553/* set_raw_breakpoint is a low level routine for allocating and
7554 partially initializing a breakpoint of type BPTYPE. The newly
7555 created breakpoint's address, section, source file name, and line
7556 number are provided by SAL. The newly created and partially
7557 initialized breakpoint is added to the breakpoint chain and
7558 is also returned as the value of this function.
7559
7560 It is expected that the caller will complete the initialization of
7561 the newly created breakpoint struct as well as output any status
7562 information regarding the creation of a new breakpoint. In
7563 particular, set_raw_breakpoint does NOT set the breakpoint
7564 number! Care should be taken to not allow an error to occur
7565 prior to completing the initialization of the breakpoint. If this
7566 should happen, a bogus breakpoint will be left on the chain. */
7567
7568struct breakpoint *
7569set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7570 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7571 const struct breakpoint_ops *ops)
346774a9 7572{
3b0871f4 7573 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7574
3b0871f4
SM
7575 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7576 add_to_breakpoint_chain (b.get ());
7577
7578 return b.release ();
c906108c
SS
7579}
7580
53a5351d 7581/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7582 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7583 initiated the operation. */
c906108c
SS
7584
7585void
186c406b 7586set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7587{
35df4500 7588 struct breakpoint *b, *b_tmp;
5d5658a1 7589 int thread = tp->global_num;
0fd8e87f
UW
7590
7591 /* To avoid having to rescan all objfile symbols at every step,
7592 we maintain a list of continually-inserted but always disabled
7593 longjmp "master" breakpoints. Here, we simply create momentary
7594 clones of those and enable them for the requested thread. */
35df4500 7595 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7596 if (b->pspace == current_program_space
186c406b
TT
7597 && (b->type == bp_longjmp_master
7598 || b->type == bp_exception_master))
0fd8e87f 7599 {
06edf0c0
PA
7600 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7601 struct breakpoint *clone;
cc59ec59 7602
e2e4d78b
JK
7603 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7604 after their removal. */
06edf0c0 7605 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7606 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7607 clone->thread = thread;
7608 }
186c406b
TT
7609
7610 tp->initiating_frame = frame;
c906108c
SS
7611}
7612
611c83ae 7613/* Delete all longjmp breakpoints from THREAD. */
c906108c 7614void
611c83ae 7615delete_longjmp_breakpoint (int thread)
c906108c 7616{
35df4500 7617 struct breakpoint *b, *b_tmp;
c906108c 7618
35df4500 7619 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7620 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7621 {
7622 if (b->thread == thread)
7623 delete_breakpoint (b);
7624 }
c906108c
SS
7625}
7626
f59f708a
PA
7627void
7628delete_longjmp_breakpoint_at_next_stop (int thread)
7629{
7630 struct breakpoint *b, *b_tmp;
7631
7632 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7633 if (b->type == bp_longjmp || b->type == bp_exception)
7634 {
7635 if (b->thread == thread)
7636 b->disposition = disp_del_at_next_stop;
7637 }
7638}
7639
e2e4d78b
JK
7640/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7641 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7642 pointer to any of them. Return NULL if this system cannot place longjmp
7643 breakpoints. */
7644
7645struct breakpoint *
7646set_longjmp_breakpoint_for_call_dummy (void)
7647{
7648 struct breakpoint *b, *retval = NULL;
7649
7650 ALL_BREAKPOINTS (b)
7651 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7652 {
7653 struct breakpoint *new_b;
7654
7655 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7656 &momentary_breakpoint_ops,
7657 1);
5d5658a1 7658 new_b->thread = ptid_to_global_thread_id (inferior_ptid);
e2e4d78b
JK
7659
7660 /* Link NEW_B into the chain of RETVAL breakpoints. */
7661
7662 gdb_assert (new_b->related_breakpoint == new_b);
7663 if (retval == NULL)
7664 retval = new_b;
7665 new_b->related_breakpoint = retval;
7666 while (retval->related_breakpoint != new_b->related_breakpoint)
7667 retval = retval->related_breakpoint;
7668 retval->related_breakpoint = new_b;
7669 }
7670
7671 return retval;
7672}
7673
7674/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7675 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7676 stack.
7677
7678 You should call this function only at places where it is safe to currently
7679 unwind the whole stack. Failed stack unwind would discard live dummy
7680 frames. */
7681
7682void
b67a2c6f 7683check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7684{
7685 struct breakpoint *b, *b_tmp;
7686
7687 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7688 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7689 {
7690 struct breakpoint *dummy_b = b->related_breakpoint;
7691
7692 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7693 dummy_b = dummy_b->related_breakpoint;
7694 if (dummy_b->type != bp_call_dummy
7695 || frame_find_by_id (dummy_b->frame_id) != NULL)
7696 continue;
7697
b67a2c6f 7698 dummy_frame_discard (dummy_b->frame_id, tp->ptid);
e2e4d78b
JK
7699
7700 while (b->related_breakpoint != b)
7701 {
7702 if (b_tmp == b->related_breakpoint)
7703 b_tmp = b->related_breakpoint->next;
7704 delete_breakpoint (b->related_breakpoint);
7705 }
7706 delete_breakpoint (b);
7707 }
7708}
7709
1900040c
MS
7710void
7711enable_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_enabled;
44702360 7719 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7720 overlay_events_enabled = 1;
1900040c
MS
7721 }
7722}
7723
7724void
7725disable_overlay_breakpoints (void)
7726{
52f0bd74 7727 struct breakpoint *b;
1900040c
MS
7728
7729 ALL_BREAKPOINTS (b)
7730 if (b->type == bp_overlay_event)
7731 {
7732 b->enable_state = bp_disabled;
44702360 7733 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7734 overlay_events_enabled = 0;
1900040c
MS
7735 }
7736}
7737
aa7d318d
TT
7738/* Set an active std::terminate breakpoint for each std::terminate
7739 master breakpoint. */
7740void
7741set_std_terminate_breakpoint (void)
7742{
35df4500 7743 struct breakpoint *b, *b_tmp;
aa7d318d 7744
35df4500 7745 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7746 if (b->pspace == current_program_space
7747 && b->type == bp_std_terminate_master)
7748 {
06edf0c0 7749 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7750 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7751 }
7752}
7753
7754/* Delete all the std::terminate breakpoints. */
7755void
7756delete_std_terminate_breakpoint (void)
7757{
35df4500 7758 struct breakpoint *b, *b_tmp;
aa7d318d 7759
35df4500 7760 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7761 if (b->type == bp_std_terminate)
7762 delete_breakpoint (b);
7763}
7764
c4093a6a 7765struct breakpoint *
a6d9a66e 7766create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7767{
7768 struct breakpoint *b;
c4093a6a 7769
06edf0c0
PA
7770 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7771 &internal_breakpoint_ops);
7772
b5de0fa7 7773 b->enable_state = bp_enabled;
f00aae0f 7774 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7775 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7776
44702360 7777 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7778
c4093a6a
JM
7779 return b;
7780}
7781
0101ce28
JJ
7782struct lang_and_radix
7783 {
7784 enum language lang;
7785 int radix;
7786 };
7787
4efc6507
DE
7788/* Create a breakpoint for JIT code registration and unregistration. */
7789
7790struct breakpoint *
7791create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7792{
2a7f3dff
PA
7793 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7794 &internal_breakpoint_ops);
4efc6507 7795}
0101ce28 7796
03673fc7
PP
7797/* Remove JIT code registration and unregistration breakpoint(s). */
7798
7799void
7800remove_jit_event_breakpoints (void)
7801{
7802 struct breakpoint *b, *b_tmp;
7803
7804 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7805 if (b->type == bp_jit_event
7806 && b->loc->pspace == current_program_space)
7807 delete_breakpoint (b);
7808}
7809
cae688ec
JJ
7810void
7811remove_solib_event_breakpoints (void)
7812{
35df4500 7813 struct breakpoint *b, *b_tmp;
cae688ec 7814
35df4500 7815 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7816 if (b->type == bp_shlib_event
7817 && b->loc->pspace == current_program_space)
cae688ec
JJ
7818 delete_breakpoint (b);
7819}
7820
f37f681c
PA
7821/* See breakpoint.h. */
7822
7823void
7824remove_solib_event_breakpoints_at_next_stop (void)
7825{
7826 struct breakpoint *b, *b_tmp;
7827
7828 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7829 if (b->type == bp_shlib_event
7830 && b->loc->pspace == current_program_space)
7831 b->disposition = disp_del_at_next_stop;
7832}
7833
04086b45
PA
7834/* Helper for create_solib_event_breakpoint /
7835 create_and_insert_solib_event_breakpoint. Allows specifying which
7836 INSERT_MODE to pass through to update_global_location_list. */
7837
7838static struct breakpoint *
7839create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7840 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7841{
7842 struct breakpoint *b;
7843
06edf0c0
PA
7844 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7845 &internal_breakpoint_ops);
04086b45 7846 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7847 return b;
7848}
7849
04086b45
PA
7850struct breakpoint *
7851create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7852{
7853 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7854}
7855
f37f681c
PA
7856/* See breakpoint.h. */
7857
7858struct breakpoint *
7859create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7860{
7861 struct breakpoint *b;
7862
04086b45
PA
7863 /* Explicitly tell update_global_location_list to insert
7864 locations. */
7865 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7866 if (!b->loc->inserted)
7867 {
7868 delete_breakpoint (b);
7869 return NULL;
7870 }
7871 return b;
7872}
7873
cae688ec
JJ
7874/* Disable any breakpoints that are on code in shared libraries. Only
7875 apply to enabled breakpoints, disabled ones can just stay disabled. */
7876
7877void
cb851954 7878disable_breakpoints_in_shlibs (void)
cae688ec 7879{
876fa593 7880 struct bp_location *loc, **locp_tmp;
cae688ec 7881
876fa593 7882 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7883 {
2bdf28a0 7884 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7885 struct breakpoint *b = loc->owner;
2bdf28a0 7886
4a64f543
MS
7887 /* We apply the check to all breakpoints, including disabled for
7888 those with loc->duplicate set. This is so that when breakpoint
7889 becomes enabled, or the duplicate is removed, gdb will try to
7890 insert all breakpoints. If we don't set shlib_disabled here,
7891 we'll try to insert those breakpoints and fail. */
1042e4c0 7892 if (((b->type == bp_breakpoint)
508ccb1f 7893 || (b->type == bp_jit_event)
1042e4c0 7894 || (b->type == bp_hardware_breakpoint)
d77f58be 7895 || (is_tracepoint (b)))
6c95b8df 7896 && loc->pspace == current_program_space
0d381245 7897 && !loc->shlib_disabled
6c95b8df 7898 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7899 )
0d381245
VP
7900 {
7901 loc->shlib_disabled = 1;
7902 }
cae688ec
JJ
7903 }
7904}
7905
63644780
NB
7906/* Disable any breakpoints and tracepoints that are in SOLIB upon
7907 notification of unloaded_shlib. Only apply to enabled breakpoints,
7908 disabled ones can just stay disabled. */
84acb35a 7909
75149521 7910static void
84acb35a
JJ
7911disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7912{
876fa593 7913 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7914 int disabled_shlib_breaks = 0;
7915
876fa593 7916 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7917 {
2bdf28a0 7918 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7919 struct breakpoint *b = loc->owner;
cc59ec59 7920
1e4d1764 7921 if (solib->pspace == loc->pspace
e2dd7057 7922 && !loc->shlib_disabled
1e4d1764
YQ
7923 && (((b->type == bp_breakpoint
7924 || b->type == bp_jit_event
7925 || b->type == bp_hardware_breakpoint)
7926 && (loc->loc_type == bp_loc_hardware_breakpoint
7927 || loc->loc_type == bp_loc_software_breakpoint))
7928 || is_tracepoint (b))
e2dd7057 7929 && solib_contains_address_p (solib, loc->address))
84acb35a 7930 {
e2dd7057
PP
7931 loc->shlib_disabled = 1;
7932 /* At this point, we cannot rely on remove_breakpoint
7933 succeeding so we must mark the breakpoint as not inserted
7934 to prevent future errors occurring in remove_breakpoints. */
7935 loc->inserted = 0;
8d3788bd
VP
7936
7937 /* This may cause duplicate notifications for the same breakpoint. */
7938 observer_notify_breakpoint_modified (b);
7939
e2dd7057
PP
7940 if (!disabled_shlib_breaks)
7941 {
7942 target_terminal_ours_for_output ();
3e43a32a
MS
7943 warning (_("Temporarily disabling breakpoints "
7944 "for unloaded shared library \"%s\""),
e2dd7057 7945 solib->so_name);
84acb35a 7946 }
e2dd7057 7947 disabled_shlib_breaks = 1;
84acb35a
JJ
7948 }
7949 }
84acb35a
JJ
7950}
7951
63644780
NB
7952/* Disable any breakpoints and tracepoints in OBJFILE upon
7953 notification of free_objfile. Only apply to enabled breakpoints,
7954 disabled ones can just stay disabled. */
7955
7956static void
7957disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7958{
7959 struct breakpoint *b;
7960
7961 if (objfile == NULL)
7962 return;
7963
d03de421
PA
7964 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7965 managed by the user with add-symbol-file/remove-symbol-file.
7966 Similarly to how breakpoints in shared libraries are handled in
7967 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7968 shlib_disabled so they end up uninserted on the next global
7969 location list update. Shared libraries not loaded by the user
7970 aren't handled here -- they're already handled in
7971 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7972 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7973 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7974 main objfile). */
7975 if ((objfile->flags & OBJF_SHARED) == 0
7976 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7977 return;
7978
7979 ALL_BREAKPOINTS (b)
7980 {
7981 struct bp_location *loc;
7982 int bp_modified = 0;
7983
7984 if (!is_breakpoint (b) && !is_tracepoint (b))
7985 continue;
7986
7987 for (loc = b->loc; loc != NULL; loc = loc->next)
7988 {
7989 CORE_ADDR loc_addr = loc->address;
7990
7991 if (loc->loc_type != bp_loc_hardware_breakpoint
7992 && loc->loc_type != bp_loc_software_breakpoint)
7993 continue;
7994
7995 if (loc->shlib_disabled != 0)
7996 continue;
7997
7998 if (objfile->pspace != loc->pspace)
7999 continue;
8000
8001 if (loc->loc_type != bp_loc_hardware_breakpoint
8002 && loc->loc_type != bp_loc_software_breakpoint)
8003 continue;
8004
8005 if (is_addr_in_objfile (loc_addr, objfile))
8006 {
8007 loc->shlib_disabled = 1;
08351840
PA
8008 /* At this point, we don't know whether the object was
8009 unmapped from the inferior or not, so leave the
8010 inserted flag alone. We'll handle failure to
8011 uninsert quietly, in case the object was indeed
8012 unmapped. */
63644780
NB
8013
8014 mark_breakpoint_location_modified (loc);
8015
8016 bp_modified = 1;
8017 }
8018 }
8019
8020 if (bp_modified)
8021 observer_notify_breakpoint_modified (b);
8022 }
8023}
8024
ce78b96d
JB
8025/* FORK & VFORK catchpoints. */
8026
e29a4733 8027/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
8028 catchpoint. A breakpoint is really of this type iff its ops pointer points
8029 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 8030
c1fc2657 8031struct fork_catchpoint : public breakpoint
e29a4733 8032{
e29a4733
PA
8033 /* Process id of a child process whose forking triggered this
8034 catchpoint. This field is only valid immediately after this
8035 catchpoint has triggered. */
8036 ptid_t forked_inferior_pid;
8037};
8038
4a64f543
MS
8039/* Implement the "insert" breakpoint_ops method for fork
8040 catchpoints. */
ce78b96d 8041
77b06cd7
TJB
8042static int
8043insert_catch_fork (struct bp_location *bl)
ce78b96d 8044{
dfd4cc63 8045 return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8046}
8047
4a64f543
MS
8048/* Implement the "remove" breakpoint_ops method for fork
8049 catchpoints. */
ce78b96d
JB
8050
8051static int
73971819 8052remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 8053{
dfd4cc63 8054 return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8055}
8056
8057/* Implement the "breakpoint_hit" breakpoint_ops method for fork
8058 catchpoints. */
8059
8060static int
f1310107 8061breakpoint_hit_catch_fork (const struct bp_location *bl,
09ac7c10
TT
8062 struct address_space *aspace, CORE_ADDR bp_addr,
8063 const struct target_waitstatus *ws)
ce78b96d 8064{
e29a4733
PA
8065 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8066
f90263c1
TT
8067 if (ws->kind != TARGET_WAITKIND_FORKED)
8068 return 0;
8069
8070 c->forked_inferior_pid = ws->value.related_pid;
8071 return 1;
ce78b96d
JB
8072}
8073
4a64f543
MS
8074/* Implement the "print_it" breakpoint_ops method for fork
8075 catchpoints. */
ce78b96d
JB
8076
8077static enum print_stop_action
348d480f 8078print_it_catch_fork (bpstat bs)
ce78b96d 8079{
36dfb11c 8080 struct ui_out *uiout = current_uiout;
348d480f
PA
8081 struct breakpoint *b = bs->breakpoint_at;
8082 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 8083
ce78b96d 8084 annotate_catchpoint (b->number);
f303dbd6 8085 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8086 if (b->disposition == disp_del)
112e8700 8087 uiout->text ("Temporary catchpoint ");
36dfb11c 8088 else
112e8700
SM
8089 uiout->text ("Catchpoint ");
8090 if (uiout->is_mi_like_p ())
36dfb11c 8091 {
112e8700
SM
8092 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
8093 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8094 }
112e8700
SM
8095 uiout->field_int ("bkptno", b->number);
8096 uiout->text (" (forked process ");
8097 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8098 uiout->text ("), ");
ce78b96d
JB
8099 return PRINT_SRC_AND_LOC;
8100}
8101
4a64f543
MS
8102/* Implement the "print_one" breakpoint_ops method for fork
8103 catchpoints. */
ce78b96d
JB
8104
8105static void
a6d9a66e 8106print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 8107{
e29a4733 8108 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 8109 struct value_print_options opts;
79a45e25 8110 struct ui_out *uiout = current_uiout;
79a45b7d
TT
8111
8112 get_user_print_options (&opts);
8113
4a64f543
MS
8114 /* Field 4, the address, is omitted (which makes the columns not
8115 line up too nicely with the headers, but the effect is relatively
8116 readable). */
79a45b7d 8117 if (opts.addressprint)
112e8700 8118 uiout->field_skip ("addr");
ce78b96d 8119 annotate_field (5);
112e8700 8120 uiout->text ("fork");
e29a4733 8121 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 8122 {
112e8700
SM
8123 uiout->text (", process ");
8124 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8125 uiout->spaces (1);
ce78b96d 8126 }
8ac3646f 8127
112e8700
SM
8128 if (uiout->is_mi_like_p ())
8129 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
8130}
8131
8132/* Implement the "print_mention" breakpoint_ops method for fork
8133 catchpoints. */
8134
8135static void
8136print_mention_catch_fork (struct breakpoint *b)
8137{
8138 printf_filtered (_("Catchpoint %d (fork)"), b->number);
8139}
8140
6149aea9
PA
8141/* Implement the "print_recreate" breakpoint_ops method for fork
8142 catchpoints. */
8143
8144static void
8145print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8146{
8147 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 8148 print_recreate_thread (b, fp);
6149aea9
PA
8149}
8150
ce78b96d
JB
8151/* The breakpoint_ops structure to be used in fork catchpoints. */
8152
2060206e 8153static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 8154
4a64f543
MS
8155/* Implement the "insert" breakpoint_ops method for vfork
8156 catchpoints. */
ce78b96d 8157
77b06cd7
TJB
8158static int
8159insert_catch_vfork (struct bp_location *bl)
ce78b96d 8160{
dfd4cc63 8161 return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8162}
8163
4a64f543
MS
8164/* Implement the "remove" breakpoint_ops method for vfork
8165 catchpoints. */
ce78b96d
JB
8166
8167static int
73971819 8168remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 8169{
dfd4cc63 8170 return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
ce78b96d
JB
8171}
8172
8173/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8174 catchpoints. */
8175
8176static int
f1310107 8177breakpoint_hit_catch_vfork (const struct bp_location *bl,
09ac7c10
TT
8178 struct address_space *aspace, CORE_ADDR bp_addr,
8179 const struct target_waitstatus *ws)
ce78b96d 8180{
e29a4733
PA
8181 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8182
f90263c1
TT
8183 if (ws->kind != TARGET_WAITKIND_VFORKED)
8184 return 0;
8185
8186 c->forked_inferior_pid = ws->value.related_pid;
8187 return 1;
ce78b96d
JB
8188}
8189
4a64f543
MS
8190/* Implement the "print_it" breakpoint_ops method for vfork
8191 catchpoints. */
ce78b96d
JB
8192
8193static enum print_stop_action
348d480f 8194print_it_catch_vfork (bpstat bs)
ce78b96d 8195{
36dfb11c 8196 struct ui_out *uiout = current_uiout;
348d480f 8197 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
8198 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8199
ce78b96d 8200 annotate_catchpoint (b->number);
f303dbd6 8201 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8202 if (b->disposition == disp_del)
112e8700 8203 uiout->text ("Temporary catchpoint ");
36dfb11c 8204 else
112e8700
SM
8205 uiout->text ("Catchpoint ");
8206 if (uiout->is_mi_like_p ())
36dfb11c 8207 {
112e8700
SM
8208 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
8209 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8210 }
112e8700
SM
8211 uiout->field_int ("bkptno", b->number);
8212 uiout->text (" (vforked process ");
8213 uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
8214 uiout->text ("), ");
ce78b96d
JB
8215 return PRINT_SRC_AND_LOC;
8216}
8217
4a64f543
MS
8218/* Implement the "print_one" breakpoint_ops method for vfork
8219 catchpoints. */
ce78b96d
JB
8220
8221static void
a6d9a66e 8222print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 8223{
e29a4733 8224 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 8225 struct value_print_options opts;
79a45e25 8226 struct ui_out *uiout = current_uiout;
79a45b7d
TT
8227
8228 get_user_print_options (&opts);
4a64f543
MS
8229 /* Field 4, the address, is omitted (which makes the columns not
8230 line up too nicely with the headers, but the effect is relatively
8231 readable). */
79a45b7d 8232 if (opts.addressprint)
112e8700 8233 uiout->field_skip ("addr");
ce78b96d 8234 annotate_field (5);
112e8700 8235 uiout->text ("vfork");
e29a4733 8236 if (!ptid_equal (c->forked_inferior_pid, null_ptid))
ce78b96d 8237 {
112e8700
SM
8238 uiout->text (", process ");
8239 uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
8240 uiout->spaces (1);
ce78b96d 8241 }
8ac3646f 8242
112e8700
SM
8243 if (uiout->is_mi_like_p ())
8244 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
8245}
8246
8247/* Implement the "print_mention" breakpoint_ops method for vfork
8248 catchpoints. */
8249
8250static void
8251print_mention_catch_vfork (struct breakpoint *b)
8252{
8253 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8254}
8255
6149aea9
PA
8256/* Implement the "print_recreate" breakpoint_ops method for vfork
8257 catchpoints. */
8258
8259static void
8260print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8261{
8262 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 8263 print_recreate_thread (b, fp);
6149aea9
PA
8264}
8265
ce78b96d
JB
8266/* The breakpoint_ops structure to be used in vfork catchpoints. */
8267
2060206e 8268static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 8269
edcc5120 8270/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 8271 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
8272 CATCH_SOLIB_BREAKPOINT_OPS. */
8273
c1fc2657 8274struct solib_catchpoint : public breakpoint
edcc5120 8275{
c1fc2657 8276 ~solib_catchpoint () override;
edcc5120
TT
8277
8278 /* True for "catch load", false for "catch unload". */
8279 unsigned char is_load;
8280
8281 /* Regular expression to match, if any. COMPILED is only valid when
8282 REGEX is non-NULL. */
8283 char *regex;
2d7cc5c7 8284 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
8285};
8286
c1fc2657 8287solib_catchpoint::~solib_catchpoint ()
edcc5120 8288{
c1fc2657 8289 xfree (this->regex);
edcc5120
TT
8290}
8291
8292static int
8293insert_catch_solib (struct bp_location *ignore)
8294{
8295 return 0;
8296}
8297
8298static int
73971819 8299remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
8300{
8301 return 0;
8302}
8303
8304static int
8305breakpoint_hit_catch_solib (const struct bp_location *bl,
8306 struct address_space *aspace,
8307 CORE_ADDR bp_addr,
8308 const struct target_waitstatus *ws)
8309{
8310 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8311 struct breakpoint *other;
8312
8313 if (ws->kind == TARGET_WAITKIND_LOADED)
8314 return 1;
8315
8316 ALL_BREAKPOINTS (other)
8317 {
8318 struct bp_location *other_bl;
8319
8320 if (other == bl->owner)
8321 continue;
8322
8323 if (other->type != bp_shlib_event)
8324 continue;
8325
c1fc2657 8326 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
8327 continue;
8328
8329 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8330 {
8331 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8332 return 1;
8333 }
8334 }
8335
8336 return 0;
8337}
8338
8339static void
8340check_status_catch_solib (struct bpstats *bs)
8341{
8342 struct solib_catchpoint *self
8343 = (struct solib_catchpoint *) bs->breakpoint_at;
8344 int ix;
8345
8346 if (self->is_load)
8347 {
8348 struct so_list *iter;
8349
8350 for (ix = 0;
8351 VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8352 ix, iter);
8353 ++ix)
8354 {
8355 if (!self->regex
2d7cc5c7 8356 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8357 return;
8358 }
8359 }
8360 else
8361 {
8362 char *iter;
8363
8364 for (ix = 0;
8365 VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8366 ix, iter);
8367 ++ix)
8368 {
8369 if (!self->regex
2d7cc5c7 8370 || self->compiled->exec (iter, 0, NULL, 0) == 0)
edcc5120
TT
8371 return;
8372 }
8373 }
8374
8375 bs->stop = 0;
8376 bs->print_it = print_it_noop;
8377}
8378
8379static enum print_stop_action
8380print_it_catch_solib (bpstat bs)
8381{
8382 struct breakpoint *b = bs->breakpoint_at;
8383 struct ui_out *uiout = current_uiout;
8384
8385 annotate_catchpoint (b->number);
f303dbd6 8386 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8387 if (b->disposition == disp_del)
112e8700 8388 uiout->text ("Temporary catchpoint ");
edcc5120 8389 else
112e8700
SM
8390 uiout->text ("Catchpoint ");
8391 uiout->field_int ("bkptno", b->number);
8392 uiout->text ("\n");
8393 if (uiout->is_mi_like_p ())
8394 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8395 print_solib_event (1);
8396 return PRINT_SRC_AND_LOC;
8397}
8398
8399static void
8400print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8401{
8402 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8403 struct value_print_options opts;
8404 struct ui_out *uiout = current_uiout;
8405 char *msg;
8406
8407 get_user_print_options (&opts);
8408 /* Field 4, the address, is omitted (which makes the columns not
8409 line up too nicely with the headers, but the effect is relatively
8410 readable). */
8411 if (opts.addressprint)
8412 {
8413 annotate_field (4);
112e8700 8414 uiout->field_skip ("addr");
edcc5120
TT
8415 }
8416
8417 annotate_field (5);
8418 if (self->is_load)
8419 {
8420 if (self->regex)
8421 msg = xstrprintf (_("load of library matching %s"), self->regex);
8422 else
8423 msg = xstrdup (_("load of library"));
8424 }
8425 else
8426 {
8427 if (self->regex)
8428 msg = xstrprintf (_("unload of library matching %s"), self->regex);
8429 else
8430 msg = xstrdup (_("unload of library"));
8431 }
112e8700 8432 uiout->field_string ("what", msg);
edcc5120 8433 xfree (msg);
8ac3646f 8434
112e8700
SM
8435 if (uiout->is_mi_like_p ())
8436 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8437}
8438
8439static void
8440print_mention_catch_solib (struct breakpoint *b)
8441{
8442 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8443
8444 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8445 self->is_load ? "load" : "unload");
8446}
8447
8448static void
8449print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8450{
8451 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8452
8453 fprintf_unfiltered (fp, "%s %s",
8454 b->disposition == disp_del ? "tcatch" : "catch",
8455 self->is_load ? "load" : "unload");
8456 if (self->regex)
8457 fprintf_unfiltered (fp, " %s", self->regex);
8458 fprintf_unfiltered (fp, "\n");
8459}
8460
8461static struct breakpoint_ops catch_solib_breakpoint_ops;
8462
91985142
MG
8463/* Shared helper function (MI and CLI) for creating and installing
8464 a shared object event catchpoint. If IS_LOAD is non-zero then
8465 the events to be caught are load events, otherwise they are
8466 unload events. If IS_TEMP is non-zero the catchpoint is a
8467 temporary one. If ENABLED is non-zero the catchpoint is
8468 created in an enabled state. */
edcc5120 8469
91985142 8470void
a121b7c1 8471add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120
TT
8472{
8473 struct solib_catchpoint *c;
8474 struct gdbarch *gdbarch = get_current_arch ();
edcc5120
TT
8475 struct cleanup *cleanup;
8476
edcc5120
TT
8477 if (!arg)
8478 arg = "";
a121b7c1 8479 arg = skip_spaces_const (arg);
edcc5120 8480
4d01a485 8481 c = new solib_catchpoint ();
edcc5120
TT
8482 cleanup = make_cleanup (xfree, c);
8483
8484 if (*arg != '\0')
8485 {
2d7cc5c7
PA
8486 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8487 _("Invalid regexp")));
edcc5120
TT
8488 c->regex = xstrdup (arg);
8489 }
8490
8491 c->is_load = is_load;
c1fc2657 8492 init_catchpoint (c, gdbarch, is_temp, NULL,
edcc5120
TT
8493 &catch_solib_breakpoint_ops);
8494
c1fc2657 8495 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8496
edcc5120 8497 discard_cleanups (cleanup);
c1fc2657 8498 install_breakpoint (0, c, 1);
edcc5120
TT
8499}
8500
91985142
MG
8501/* A helper function that does all the work for "catch load" and
8502 "catch unload". */
8503
8504static void
8505catch_load_or_unload (char *arg, int from_tty, int is_load,
8506 struct cmd_list_element *command)
8507{
8508 int tempflag;
8509 const int enabled = 1;
8510
8511 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8512
8513 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8514}
8515
edcc5120
TT
8516static void
8517catch_load_command_1 (char *arg, int from_tty,
8518 struct cmd_list_element *command)
8519{
8520 catch_load_or_unload (arg, from_tty, 1, command);
8521}
8522
8523static void
8524catch_unload_command_1 (char *arg, int from_tty,
8525 struct cmd_list_element *command)
8526{
8527 catch_load_or_unload (arg, from_tty, 0, command);
8528}
8529
346774a9
PA
8530/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8531 is non-zero, then make the breakpoint temporary. If COND_STRING is
8532 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8533 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8534
ab04a2af 8535void
346774a9
PA
8536init_catchpoint (struct breakpoint *b,
8537 struct gdbarch *gdbarch, int tempflag,
63160a43 8538 const char *cond_string,
c0a91b2b 8539 const struct breakpoint_ops *ops)
c906108c 8540{
c5aa993b 8541 struct symtab_and_line sal;
346774a9 8542
fe39c653 8543 init_sal (&sal);
6c95b8df 8544 sal.pspace = current_program_space;
c5aa993b 8545
28010a5d 8546 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8547
1b36a34b 8548 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8549 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8550}
8551
28010a5d 8552void
3ea46bff 8553install_breakpoint (int internal, struct breakpoint *b, int update_gll)
c56053d2
PA
8554{
8555 add_to_breakpoint_chain (b);
3a5c3e22 8556 set_breakpoint_number (internal, b);
558a9d82
YQ
8557 if (is_tracepoint (b))
8558 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8559 if (!internal)
8560 mention (b);
c56053d2 8561 observer_notify_breakpoint_created (b);
3ea46bff
YQ
8562
8563 if (update_gll)
44702360 8564 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8565}
8566
9b70b993 8567static void
a6d9a66e 8568create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8569 int tempflag, const char *cond_string,
c0a91b2b 8570 const struct breakpoint_ops *ops)
c906108c 8571{
4d01a485 8572 struct fork_catchpoint *c = new fork_catchpoint ();
ce78b96d 8573
c1fc2657 8574 init_catchpoint (c, gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8575
8576 c->forked_inferior_pid = null_ptid;
8577
c1fc2657 8578 install_breakpoint (0, c, 1);
c906108c
SS
8579}
8580
fe798b75
JB
8581/* Exec catchpoints. */
8582
b4d90040 8583/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8584 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8585 CATCH_EXEC_BREAKPOINT_OPS. */
8586
c1fc2657 8587struct exec_catchpoint : public breakpoint
b4d90040 8588{
c1fc2657 8589 ~exec_catchpoint () override;
b4d90040
PA
8590
8591 /* Filename of a program whose exec triggered this catchpoint.
8592 This field is only valid immediately after this catchpoint has
8593 triggered. */
8594 char *exec_pathname;
8595};
8596
c1fc2657 8597/* Exec catchpoint destructor. */
b4d90040 8598
c1fc2657 8599exec_catchpoint::~exec_catchpoint ()
b4d90040 8600{
c1fc2657 8601 xfree (this->exec_pathname);
b4d90040
PA
8602}
8603
77b06cd7
TJB
8604static int
8605insert_catch_exec (struct bp_location *bl)
c906108c 8606{
dfd4cc63 8607 return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8608}
c906108c 8609
fe798b75 8610static int
73971819 8611remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8612{
dfd4cc63 8613 return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
fe798b75 8614}
c906108c 8615
fe798b75 8616static int
f1310107 8617breakpoint_hit_catch_exec (const struct bp_location *bl,
09ac7c10
TT
8618 struct address_space *aspace, CORE_ADDR bp_addr,
8619 const struct target_waitstatus *ws)
fe798b75 8620{
b4d90040
PA
8621 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8622
f90263c1
TT
8623 if (ws->kind != TARGET_WAITKIND_EXECD)
8624 return 0;
8625
8626 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8627 return 1;
fe798b75 8628}
c906108c 8629
fe798b75 8630static enum print_stop_action
348d480f 8631print_it_catch_exec (bpstat bs)
fe798b75 8632{
36dfb11c 8633 struct ui_out *uiout = current_uiout;
348d480f 8634 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8635 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8636
fe798b75 8637 annotate_catchpoint (b->number);
f303dbd6 8638 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8639 if (b->disposition == disp_del)
112e8700 8640 uiout->text ("Temporary catchpoint ");
36dfb11c 8641 else
112e8700
SM
8642 uiout->text ("Catchpoint ");
8643 if (uiout->is_mi_like_p ())
36dfb11c 8644 {
112e8700
SM
8645 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8646 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8647 }
112e8700
SM
8648 uiout->field_int ("bkptno", b->number);
8649 uiout->text (" (exec'd ");
8650 uiout->field_string ("new-exec", c->exec_pathname);
8651 uiout->text ("), ");
36dfb11c 8652
fe798b75 8653 return PRINT_SRC_AND_LOC;
c906108c
SS
8654}
8655
fe798b75 8656static void
a6d9a66e 8657print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8658{
b4d90040 8659 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8660 struct value_print_options opts;
79a45e25 8661 struct ui_out *uiout = current_uiout;
fe798b75
JB
8662
8663 get_user_print_options (&opts);
8664
8665 /* Field 4, the address, is omitted (which makes the columns
8666 not line up too nicely with the headers, but the effect
8667 is relatively readable). */
8668 if (opts.addressprint)
112e8700 8669 uiout->field_skip ("addr");
fe798b75 8670 annotate_field (5);
112e8700 8671 uiout->text ("exec");
b4d90040 8672 if (c->exec_pathname != NULL)
fe798b75 8673 {
112e8700
SM
8674 uiout->text (", program \"");
8675 uiout->field_string ("what", c->exec_pathname);
8676 uiout->text ("\" ");
fe798b75 8677 }
8ac3646f 8678
112e8700
SM
8679 if (uiout->is_mi_like_p ())
8680 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8681}
8682
8683static void
8684print_mention_catch_exec (struct breakpoint *b)
8685{
8686 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8687}
8688
6149aea9
PA
8689/* Implement the "print_recreate" breakpoint_ops method for exec
8690 catchpoints. */
8691
8692static void
8693print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8694{
8695 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8696 print_recreate_thread (b, fp);
6149aea9
PA
8697}
8698
2060206e 8699static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8700
c906108c 8701static int
fba45db2 8702hw_breakpoint_used_count (void)
c906108c 8703{
c906108c 8704 int i = 0;
f1310107
TJB
8705 struct breakpoint *b;
8706 struct bp_location *bl;
c906108c
SS
8707
8708 ALL_BREAKPOINTS (b)
c5aa993b 8709 {
d6b74ac4 8710 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8711 for (bl = b->loc; bl; bl = bl->next)
8712 {
8713 /* Special types of hardware breakpoints may use more than
8714 one register. */
348d480f 8715 i += b->ops->resources_needed (bl);
f1310107 8716 }
c5aa993b 8717 }
c906108c
SS
8718
8719 return i;
8720}
8721
a1398e0c
PA
8722/* Returns the resources B would use if it were a hardware
8723 watchpoint. */
8724
c906108c 8725static int
a1398e0c 8726hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8727{
c906108c 8728 int i = 0;
e09342b5 8729 struct bp_location *bl;
c906108c 8730
a1398e0c
PA
8731 if (!breakpoint_enabled (b))
8732 return 0;
8733
8734 for (bl = b->loc; bl; bl = bl->next)
8735 {
8736 /* Special types of hardware watchpoints may use more than
8737 one register. */
8738 i += b->ops->resources_needed (bl);
8739 }
8740
8741 return i;
8742}
8743
8744/* Returns the sum the used resources of all hardware watchpoints of
8745 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8746 the sum of the used resources of all hardware watchpoints of other
8747 types _not_ TYPE. */
8748
8749static int
8750hw_watchpoint_used_count_others (struct breakpoint *except,
8751 enum bptype type, int *other_type_used)
8752{
8753 int i = 0;
8754 struct breakpoint *b;
8755
c906108c
SS
8756 *other_type_used = 0;
8757 ALL_BREAKPOINTS (b)
e09342b5 8758 {
a1398e0c
PA
8759 if (b == except)
8760 continue;
e09342b5
TJB
8761 if (!breakpoint_enabled (b))
8762 continue;
8763
a1398e0c
PA
8764 if (b->type == type)
8765 i += hw_watchpoint_use_count (b);
8766 else if (is_hardware_watchpoint (b))
8767 *other_type_used = 1;
e09342b5
TJB
8768 }
8769
c906108c
SS
8770 return i;
8771}
8772
c906108c 8773void
fba45db2 8774disable_watchpoints_before_interactive_call_start (void)
c906108c 8775{
c5aa993b 8776 struct breakpoint *b;
c906108c
SS
8777
8778 ALL_BREAKPOINTS (b)
c5aa993b 8779 {
cc60f2e3 8780 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8781 {
b5de0fa7 8782 b->enable_state = bp_call_disabled;
44702360 8783 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8784 }
8785 }
c906108c
SS
8786}
8787
8788void
fba45db2 8789enable_watchpoints_after_interactive_call_stop (void)
c906108c 8790{
c5aa993b 8791 struct breakpoint *b;
c906108c
SS
8792
8793 ALL_BREAKPOINTS (b)
c5aa993b 8794 {
cc60f2e3 8795 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8796 {
b5de0fa7 8797 b->enable_state = bp_enabled;
44702360 8798 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8799 }
8800 }
c906108c
SS
8801}
8802
8bea4e01
UW
8803void
8804disable_breakpoints_before_startup (void)
8805{
6c95b8df 8806 current_program_space->executing_startup = 1;
44702360 8807 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8808}
8809
8810void
8811enable_breakpoints_after_startup (void)
8812{
6c95b8df 8813 current_program_space->executing_startup = 0;
f8eba3c6 8814 breakpoint_re_set ();
8bea4e01
UW
8815}
8816
7c16b83e
PA
8817/* Create a new single-step breakpoint for thread THREAD, with no
8818 locations. */
c906108c 8819
7c16b83e
PA
8820static struct breakpoint *
8821new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8822{
4d01a485 8823 struct breakpoint *b = new breakpoint ();
7c16b83e
PA
8824
8825 init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
8826 &momentary_breakpoint_ops);
8827
8828 b->disposition = disp_donttouch;
8829 b->frame_id = null_frame_id;
8830
8831 b->thread = thread;
8832 gdb_assert (b->thread != 0);
8833
8834 add_to_breakpoint_chain (b);
8835
8836 return b;
8837}
8838
8839/* Set a momentary breakpoint of type TYPE at address specified by
8840 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8841 frame. */
c906108c
SS
8842
8843struct breakpoint *
a6d9a66e
UW
8844set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8845 struct frame_id frame_id, enum bptype type)
c906108c 8846{
52f0bd74 8847 struct breakpoint *b;
edb3359d 8848
193facb3
JK
8849 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8850 tail-called one. */
8851 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8852
06edf0c0 8853 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8854 b->enable_state = bp_enabled;
8855 b->disposition = disp_donttouch;
818dd999 8856 b->frame_id = frame_id;
c906108c 8857
4a64f543
MS
8858 /* If we're debugging a multi-threaded program, then we want
8859 momentary breakpoints to be active in only a single thread of
8860 control. */
39f77062 8861 if (in_thread_list (inferior_ptid))
5d5658a1 8862 b->thread = ptid_to_global_thread_id (inferior_ptid);
c906108c 8863
44702360 8864 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8865
c906108c
SS
8866 return b;
8867}
611c83ae 8868
06edf0c0 8869/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8870 The new breakpoint will have type TYPE, use OPS as its
8871 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8872
06edf0c0
PA
8873static struct breakpoint *
8874momentary_breakpoint_from_master (struct breakpoint *orig,
8875 enum bptype type,
a1aa2221
LM
8876 const struct breakpoint_ops *ops,
8877 int loc_enabled)
e58b0e63
PA
8878{
8879 struct breakpoint *copy;
8880
06edf0c0 8881 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8882 copy->loc = allocate_bp_location (copy);
0e30163f 8883 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8884
a6d9a66e 8885 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8886 copy->loc->requested_address = orig->loc->requested_address;
8887 copy->loc->address = orig->loc->address;
8888 copy->loc->section = orig->loc->section;
6c95b8df 8889 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8890 copy->loc->probe = orig->loc->probe;
f8eba3c6 8891 copy->loc->line_number = orig->loc->line_number;
2f202fde 8892 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8893 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8894 copy->frame_id = orig->frame_id;
8895 copy->thread = orig->thread;
6c95b8df 8896 copy->pspace = orig->pspace;
e58b0e63
PA
8897
8898 copy->enable_state = bp_enabled;
8899 copy->disposition = disp_donttouch;
8900 copy->number = internal_breakpoint_number--;
8901
44702360 8902 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8903 return copy;
8904}
8905
06edf0c0
PA
8906/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8907 ORIG is NULL. */
8908
8909struct breakpoint *
8910clone_momentary_breakpoint (struct breakpoint *orig)
8911{
8912 /* If there's nothing to clone, then return nothing. */
8913 if (orig == NULL)
8914 return NULL;
8915
a1aa2221 8916 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8917}
8918
611c83ae 8919struct breakpoint *
a6d9a66e
UW
8920set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8921 enum bptype type)
611c83ae
PA
8922{
8923 struct symtab_and_line sal;
8924
8925 sal = find_pc_line (pc, 0);
8926 sal.pc = pc;
8927 sal.section = find_pc_overlay (pc);
8928 sal.explicit_pc = 1;
8929
a6d9a66e 8930 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8931}
c906108c 8932\f
c5aa993b 8933
c906108c
SS
8934/* Tell the user we have just set a breakpoint B. */
8935
8936static void
fba45db2 8937mention (struct breakpoint *b)
c906108c 8938{
348d480f 8939 b->ops->print_mention (b);
112e8700 8940 if (current_uiout->is_mi_like_p ())
fb40c209 8941 return;
c906108c
SS
8942 printf_filtered ("\n");
8943}
c906108c 8944\f
c5aa993b 8945
1a853c52
PA
8946static int bp_loc_is_permanent (struct bp_location *loc);
8947
0d381245 8948static struct bp_location *
39d61571 8949add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8950 const struct symtab_and_line *sal)
8951{
8952 struct bp_location *loc, **tmp;
3742cc8b
YQ
8953 CORE_ADDR adjusted_address;
8954 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8955
8956 if (loc_gdbarch == NULL)
8957 loc_gdbarch = b->gdbarch;
8958
8959 /* Adjust the breakpoint's address prior to allocating a location.
8960 Once we call allocate_bp_location(), that mostly uninitialized
8961 location will be placed on the location chain. Adjustment of the
8962 breakpoint may cause target_read_memory() to be called and we do
8963 not want its scan of the location chain to find a breakpoint and
8964 location that's only been partially initialized. */
8965 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8966 sal->pc, b->type);
0d381245 8967
d30113d4 8968 /* Sort the locations by their ADDRESS. */
39d61571 8969 loc = allocate_bp_location (b);
d30113d4
JK
8970 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8971 tmp = &((*tmp)->next))
0d381245 8972 ;
d30113d4 8973 loc->next = *tmp;
0d381245 8974 *tmp = loc;
3742cc8b 8975
0d381245 8976 loc->requested_address = sal->pc;
3742cc8b 8977 loc->address = adjusted_address;
6c95b8df 8978 loc->pspace = sal->pspace;
729662a5
TT
8979 loc->probe.probe = sal->probe;
8980 loc->probe.objfile = sal->objfile;
6c95b8df 8981 gdb_assert (loc->pspace != NULL);
0d381245 8982 loc->section = sal->section;
3742cc8b 8983 loc->gdbarch = loc_gdbarch;
f8eba3c6 8984 loc->line_number = sal->line;
2f202fde 8985 loc->symtab = sal->symtab;
f8eba3c6 8986
0e30163f
JK
8987 set_breakpoint_location_function (loc,
8988 sal->explicit_pc || sal->explicit_line);
1a853c52 8989
6ae88661
LM
8990 /* While by definition, permanent breakpoints are already present in the
8991 code, we don't mark the location as inserted. Normally one would expect
8992 that GDB could rely on that breakpoint instruction to stop the program,
8993 thus removing the need to insert its own breakpoint, except that executing
8994 the breakpoint instruction can kill the target instead of reporting a
8995 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8996 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8997 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8998 breakpoint be inserted normally results in QEMU knowing about the GDB
8999 breakpoint, and thus trap before the breakpoint instruction is executed.
9000 (If GDB later needs to continue execution past the permanent breakpoint,
9001 it manually increments the PC, thus avoiding executing the breakpoint
9002 instruction.) */
1a853c52 9003 if (bp_loc_is_permanent (loc))
6ae88661 9004 loc->permanent = 1;
1a853c52 9005
0d381245
VP
9006 return loc;
9007}
514f746b
AR
9008\f
9009
1cf4d951 9010/* See breakpoint.h. */
514f746b 9011
1cf4d951
PA
9012int
9013program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
9014{
9015 int len;
9016 CORE_ADDR addr;
1afeeb75 9017 const gdb_byte *bpoint;
514f746b 9018 gdb_byte *target_mem;
939c61fa
JK
9019 struct cleanup *cleanup;
9020 int retval = 0;
514f746b 9021
1cf4d951
PA
9022 addr = address;
9023 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9024
9025 /* Software breakpoints unsupported? */
9026 if (bpoint == NULL)
9027 return 0;
9028
224c3ddb 9029 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
9030
9031 /* Enable the automatic memory restoration from breakpoints while
9032 we read the memory. Otherwise we could say about our temporary
9033 breakpoints they are permanent. */
9034 cleanup = make_show_memory_breakpoints_cleanup (0);
9035
9036 if (target_read_memory (address, target_mem, len) == 0
9037 && memcmp (target_mem, bpoint, len) == 0)
9038 retval = 1;
9039
9040 do_cleanups (cleanup);
9041
9042 return retval;
9043}
9044
9045/* Return 1 if LOC is pointing to a permanent breakpoint,
9046 return 0 otherwise. */
9047
9048static int
9049bp_loc_is_permanent (struct bp_location *loc)
9050{
514f746b
AR
9051 gdb_assert (loc != NULL);
9052
244558af
LM
9053 /* If we have a catchpoint or a watchpoint, just return 0. We should not
9054 attempt to read from the addresses the locations of these breakpoint types
9055 point to. program_breakpoint_here_p, below, will attempt to read
9056 memory. */
9057 if (!breakpoint_address_is_meaningful (loc->owner))
9058 return 0;
9059
5ed8105e 9060 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9061 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 9062 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
9063}
9064
e7e0cddf
SS
9065/* Build a command list for the dprintf corresponding to the current
9066 settings of the dprintf style options. */
9067
9068static void
9069update_dprintf_command_list (struct breakpoint *b)
9070{
9071 char *dprintf_args = b->extra_string;
9072 char *printf_line = NULL;
9073
9074 if (!dprintf_args)
9075 return;
9076
9077 dprintf_args = skip_spaces (dprintf_args);
9078
9079 /* Allow a comma, as it may have terminated a location, but don't
9080 insist on it. */
9081 if (*dprintf_args == ',')
9082 ++dprintf_args;
9083 dprintf_args = skip_spaces (dprintf_args);
9084
9085 if (*dprintf_args != '"')
9086 error (_("Bad format string, missing '\"'."));
9087
d3ce09f5 9088 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 9089 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 9090 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
9091 {
9092 if (!dprintf_function)
9093 error (_("No function supplied for dprintf call"));
9094
9095 if (dprintf_channel && strlen (dprintf_channel) > 0)
9096 printf_line = xstrprintf ("call (void) %s (%s,%s)",
9097 dprintf_function,
9098 dprintf_channel,
9099 dprintf_args);
9100 else
9101 printf_line = xstrprintf ("call (void) %s (%s)",
9102 dprintf_function,
9103 dprintf_args);
9104 }
d3ce09f5
SS
9105 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9106 {
9107 if (target_can_run_breakpoint_commands ())
9108 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9109 else
9110 {
9111 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9112 printf_line = xstrprintf ("printf %s", dprintf_args);
9113 }
9114 }
e7e0cddf
SS
9115 else
9116 internal_error (__FILE__, __LINE__,
9117 _("Invalid dprintf style."));
9118
f28045c2 9119 gdb_assert (printf_line != NULL);
9d6e6e84 9120 /* Manufacture a printf sequence. */
f28045c2 9121 {
8d749320 9122 struct command_line *printf_cmd_line = XNEW (struct command_line);
e7e0cddf 9123
f28045c2
YQ
9124 printf_cmd_line->control_type = simple_control;
9125 printf_cmd_line->body_count = 0;
9126 printf_cmd_line->body_list = NULL;
9d6e6e84 9127 printf_cmd_line->next = NULL;
f28045c2 9128 printf_cmd_line->line = printf_line;
e7e0cddf 9129
93921405 9130 breakpoint_set_commands (b, command_line_up (printf_cmd_line));
f28045c2 9131 }
e7e0cddf
SS
9132}
9133
9134/* Update all dprintf commands, making their command lists reflect
9135 current style settings. */
9136
9137static void
9138update_dprintf_commands (char *args, int from_tty,
9139 struct cmd_list_element *c)
9140{
9141 struct breakpoint *b;
9142
9143 ALL_BREAKPOINTS (b)
9144 {
9145 if (b->type == bp_dprintf)
9146 update_dprintf_command_list (b);
9147 }
9148}
c3f6f71d 9149
f00aae0f
KS
9150/* Create a breakpoint with SAL as location. Use LOCATION
9151 as a description of the location, and COND_STRING
b35a8b2f
DE
9152 as condition expression. If LOCATION is NULL then create an
9153 "address location" from the address in the SAL. */
018d34a4
VP
9154
9155static void
d9b3f62e 9156init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
f00aae0f 9157 struct symtabs_and_lines sals,
ffc2605c 9158 event_location_up &&location,
e1e01040
PA
9159 gdb::unique_xmalloc_ptr<char> filter,
9160 gdb::unique_xmalloc_ptr<char> cond_string,
9161 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9162 enum bptype type, enum bpdisp disposition,
9163 int thread, int task, int ignore_count,
c0a91b2b 9164 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9165 int enabled, int internal, unsigned flags,
9166 int display_canonical)
018d34a4 9167{
0d381245 9168 int i;
018d34a4
VP
9169
9170 if (type == bp_hardware_breakpoint)
9171 {
fbbd034e
AS
9172 int target_resources_ok;
9173
9174 i = hw_breakpoint_used_count ();
9175 target_resources_ok =
9176 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
9177 i + 1, 0);
9178 if (target_resources_ok == 0)
9179 error (_("No hardware breakpoint support in the target."));
9180 else if (target_resources_ok < 0)
9181 error (_("Hardware breakpoints used exceeds limit."));
9182 }
9183
6c95b8df
PA
9184 gdb_assert (sals.nelts > 0);
9185
0d381245
VP
9186 for (i = 0; i < sals.nelts; ++i)
9187 {
9188 struct symtab_and_line sal = sals.sals[i];
9189 struct bp_location *loc;
9190
9191 if (from_tty)
5af949e3
UW
9192 {
9193 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9194 if (!loc_gdbarch)
9195 loc_gdbarch = gdbarch;
9196
9197 describe_other_breakpoints (loc_gdbarch,
6c95b8df 9198 sal.pspace, sal.pc, sal.section, thread);
5af949e3 9199 }
0d381245
VP
9200
9201 if (i == 0)
9202 {
d9b3f62e 9203 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 9204 b->thread = thread;
4a306c9a 9205 b->task = task;
855a6e68 9206
e1e01040
PA
9207 b->cond_string = cond_string.release ();
9208 b->extra_string = extra_string.release ();
0d381245 9209 b->ignore_count = ignore_count;
41447f92 9210 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 9211 b->disposition = disposition;
6c95b8df 9212
44f238bb
PA
9213 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9214 b->loc->inserted = 1;
9215
0fb4aa4b
PA
9216 if (type == bp_static_tracepoint)
9217 {
d9b3f62e 9218 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
9219 struct static_tracepoint_marker marker;
9220
983af33b 9221 if (strace_marker_p (b))
0fb4aa4b
PA
9222 {
9223 /* We already know the marker exists, otherwise, we
9224 wouldn't see a sal for it. */
d28cd78a
TT
9225 const char *p
9226 = &event_location_to_string (b->location.get ())[3];
f00aae0f 9227 const char *endp;
0fb4aa4b 9228 char *marker_str;
0fb4aa4b 9229
f00aae0f 9230 p = skip_spaces_const (p);
0fb4aa4b 9231
f00aae0f 9232 endp = skip_to_space_const (p);
0fb4aa4b
PA
9233
9234 marker_str = savestring (p, endp - p);
d9b3f62e 9235 t->static_trace_marker_id = marker_str;
0fb4aa4b 9236
3e43a32a
MS
9237 printf_filtered (_("Probed static tracepoint "
9238 "marker \"%s\"\n"),
d9b3f62e 9239 t->static_trace_marker_id);
0fb4aa4b
PA
9240 }
9241 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9242 {
d9b3f62e 9243 t->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
9244 release_static_tracepoint_marker (&marker);
9245
3e43a32a
MS
9246 printf_filtered (_("Probed static tracepoint "
9247 "marker \"%s\"\n"),
d9b3f62e 9248 t->static_trace_marker_id);
0fb4aa4b
PA
9249 }
9250 else
3e43a32a
MS
9251 warning (_("Couldn't determine the static "
9252 "tracepoint marker to probe"));
0fb4aa4b
PA
9253 }
9254
0d381245
VP
9255 loc = b->loc;
9256 }
9257 else
018d34a4 9258 {
39d61571 9259 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
9260 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9261 loc->inserted = 1;
0d381245
VP
9262 }
9263
9264 if (b->cond_string)
9265 {
bbc13ae3
KS
9266 const char *arg = b->cond_string;
9267
1bb9788d
TT
9268 loc->cond = parse_exp_1 (&arg, loc->address,
9269 block_for_pc (loc->address), 0);
0d381245 9270 if (*arg)
588ae58c 9271 error (_("Garbage '%s' follows condition"), arg);
018d34a4 9272 }
e7e0cddf
SS
9273
9274 /* Dynamic printf requires and uses additional arguments on the
9275 command line, otherwise it's an error. */
9276 if (type == bp_dprintf)
9277 {
9278 if (b->extra_string)
9279 update_dprintf_command_list (b);
9280 else
9281 error (_("Format string required"));
9282 }
9283 else if (b->extra_string)
588ae58c 9284 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 9285 }
018d34a4 9286
56435ebe 9287 b->display_canonical = display_canonical;
f00aae0f 9288 if (location != NULL)
d28cd78a 9289 b->location = std::move (location);
018d34a4 9290 else
d28cd78a 9291 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 9292 b->filter = filter.release ();
d9b3f62e 9293}
018d34a4 9294
d9b3f62e
PA
9295static void
9296create_breakpoint_sal (struct gdbarch *gdbarch,
f00aae0f 9297 struct symtabs_and_lines sals,
ffc2605c 9298 event_location_up &&location,
e1e01040
PA
9299 gdb::unique_xmalloc_ptr<char> filter,
9300 gdb::unique_xmalloc_ptr<char> cond_string,
9301 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9302 enum bptype type, enum bpdisp disposition,
9303 int thread, int task, int ignore_count,
c0a91b2b 9304 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9305 int enabled, int internal, unsigned flags,
9306 int display_canonical)
d9b3f62e 9307{
a5e364af 9308 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 9309
a5e364af 9310 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 9311 sals, std::move (location),
e1e01040
PA
9312 std::move (filter),
9313 std::move (cond_string),
9314 std::move (extra_string),
d9b3f62e
PA
9315 type, disposition,
9316 thread, task, ignore_count,
9317 ops, from_tty,
44f238bb
PA
9318 enabled, internal, flags,
9319 display_canonical);
d9b3f62e 9320
a5e364af 9321 install_breakpoint (internal, b.release (), 0);
018d34a4
VP
9322}
9323
9324/* Add SALS.nelts breakpoints to the breakpoint table. For each
9325 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9326 value. COND_STRING, if not NULL, specified the condition to be
9327 used for all breakpoints. Essentially the only case where
9328 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9329 function. In that case, it's still not possible to specify
9330 separate conditions for different overloaded functions, so
9331 we take just a single condition string.
9332
c3f6f71d 9333 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 9334 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
9335 array contents). If the function fails (error() is called), the
9336 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 9337 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
9338
9339static void
8cdf0e15 9340create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 9341 struct linespec_result *canonical,
e1e01040
PA
9342 gdb::unique_xmalloc_ptr<char> cond_string,
9343 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
9344 enum bptype type, enum bpdisp disposition,
9345 int thread, int task, int ignore_count,
c0a91b2b 9346 const struct breakpoint_ops *ops, int from_tty,
44f238bb 9347 int enabled, int internal, unsigned flags)
c906108c 9348{
018d34a4 9349 int i;
f8eba3c6 9350 struct linespec_sals *lsal;
cc59ec59 9351
f8eba3c6
TT
9352 if (canonical->pre_expanded)
9353 gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9354
9355 for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
c3f6f71d 9356 {
f00aae0f 9357 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 9358 'break', without arguments. */
ffc2605c 9359 event_location_up location
f00aae0f 9360 = (canonical->location != NULL
8e9e35b1 9361 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040
PA
9362 gdb::unique_xmalloc_ptr<char> filter_string
9363 (lsal->canonical != NULL ? xstrdup (lsal->canonical) : NULL);
0d381245 9364
f8eba3c6 9365 create_breakpoint_sal (gdbarch, lsal->sals,
ffc2605c 9366 std::move (location),
e1e01040
PA
9367 std::move (filter_string),
9368 std::move (cond_string),
9369 std::move (extra_string),
e7e0cddf 9370 type, disposition,
84f4c1fe 9371 thread, task, ignore_count, ops,
44f238bb 9372 from_tty, enabled, internal, flags,
56435ebe 9373 canonical->special_display);
c3f6f71d 9374 }
c3f6f71d 9375}
c906108c 9376
f00aae0f 9377/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 9378 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
9379 addresses found. LOCATION points to the end of the SAL (for
9380 linespec locations).
9998af43
TJB
9381
9382 The array and the line spec strings are allocated on the heap, it is
9383 the caller's responsibility to free them. */
c906108c 9384
b9362cc7 9385static void
f00aae0f 9386parse_breakpoint_sals (const struct event_location *location,
58438ac1 9387 struct linespec_result *canonical)
c3f6f71d 9388{
f00aae0f
KS
9389 struct symtab_and_line cursal;
9390
9391 if (event_location_type (location) == LINESPEC_LOCATION)
9392 {
9393 const char *address = get_linespec_location (location);
9394
9395 if (address == NULL)
9396 {
9397 /* The last displayed codepoint, if it's valid, is our default
9398 breakpoint address. */
9399 if (last_displayed_sal_is_valid ())
9400 {
9401 struct linespec_sals lsal;
9402 struct symtab_and_line sal;
9403 CORE_ADDR pc;
9404
9405 init_sal (&sal); /* Initialize to zeroes. */
8d749320 9406 lsal.sals.sals = XNEW (struct symtab_and_line);
f00aae0f
KS
9407
9408 /* Set sal's pspace, pc, symtab, and line to the values
9409 corresponding to the last call to print_frame_info.
9410 Be sure to reinitialize LINE with NOTCURRENT == 0
9411 as the breakpoint line number is inappropriate otherwise.
9412 find_pc_line would adjust PC, re-set it back. */
9413 get_last_displayed_sal (&sal);
9414 pc = sal.pc;
9415 sal = find_pc_line (pc, 0);
9416
9417 /* "break" without arguments is equivalent to "break *PC"
9418 where PC is the last displayed codepoint's address. So
9419 make sure to set sal.explicit_pc to prevent GDB from
9420 trying to expand the list of sals to include all other
9421 instances with the same symtab and line. */
9422 sal.pc = pc;
9423 sal.explicit_pc = 1;
9424
9425 lsal.sals.sals[0] = sal;
9426 lsal.sals.nelts = 1;
9427 lsal.canonical = NULL;
9428
9429 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9430 return;
9431 }
9432 else
9433 error (_("No default breakpoint address now."));
c906108c 9434 }
c906108c 9435 }
f00aae0f
KS
9436
9437 /* Force almost all breakpoints to be in terms of the
9438 current_source_symtab (which is decode_line_1's default).
9439 This should produce the results we want almost all of the
9440 time while leaving default_breakpoint_* alone.
9441
9442 ObjC: However, don't match an Objective-C method name which
9443 may have a '+' or '-' succeeded by a '['. */
9444 cursal = get_current_source_symtab_and_line ();
9445 if (last_displayed_sal_is_valid ())
c906108c 9446 {
f00aae0f 9447 const char *address = NULL;
cc80f267 9448
f00aae0f
KS
9449 if (event_location_type (location) == LINESPEC_LOCATION)
9450 address = get_linespec_location (location);
cc80f267 9451
f00aae0f
KS
9452 if (!cursal.symtab
9453 || (address != NULL
9454 && strchr ("+-", address[0]) != NULL
9455 && address[1] != '['))
9456 {
c2f4122d 9457 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9458 get_last_displayed_symtab (),
9459 get_last_displayed_line (),
9460 canonical, NULL, NULL);
9461 return;
9462 }
c906108c 9463 }
f00aae0f 9464
c2f4122d 9465 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9466 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9467}
c906108c 9468
c906108c 9469
c3f6f71d 9470/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9471 inserted as a breakpoint. If it can't throw an error. */
c906108c 9472
b9362cc7 9473static void
23e7acfb 9474breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
c3f6f71d
JM
9475{
9476 int i;
cc59ec59 9477
c3f6f71d 9478 for (i = 0; i < sals->nelts; i++)
ee53e872 9479 resolve_sal_pc (&sals->sals[i]);
c3f6f71d
JM
9480}
9481
7a697b8d
SS
9482/* Fast tracepoints may have restrictions on valid locations. For
9483 instance, a fast tracepoint using a jump instead of a trap will
9484 likely have to overwrite more bytes than a trap would, and so can
9485 only be placed where the instruction is longer than the jump, or a
9486 multi-instruction sequence does not have a jump into the middle of
9487 it, etc. */
9488
9489static void
9490check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9491 struct symtabs_and_lines *sals)
9492{
9493 int i, rslt;
9494 struct symtab_and_line *sal;
9495 char *msg;
9496 struct cleanup *old_chain;
9497
9498 for (i = 0; i < sals->nelts; i++)
9499 {
f8eba3c6
TT
9500 struct gdbarch *sarch;
9501
7a697b8d
SS
9502 sal = &sals->sals[i];
9503
f8eba3c6
TT
9504 sarch = get_sal_arch (*sal);
9505 /* We fall back to GDBARCH if there is no architecture
9506 associated with SAL. */
9507 if (sarch == NULL)
9508 sarch = gdbarch;
6b940e6a 9509 rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc, &msg);
7a697b8d
SS
9510 old_chain = make_cleanup (xfree, msg);
9511
9512 if (!rslt)
53c3572a 9513 error (_("May not have a fast tracepoint at %s%s"),
f8eba3c6 9514 paddress (sarch, sal->pc), (msg ? msg : ""));
7a697b8d
SS
9515
9516 do_cleanups (old_chain);
9517 }
9518}
9519
018d34a4
VP
9520/* Given TOK, a string specification of condition and thread, as
9521 accepted by the 'break' command, extract the condition
9522 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9523 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9524 If no condition is found, *COND_STRING is set to NULL.
9525 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9526
9527static void
bbc13ae3 9528find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9529 char **cond_string, int *thread, int *task,
9530 char **rest)
018d34a4
VP
9531{
9532 *cond_string = NULL;
9533 *thread = -1;
ed1d1739
KS
9534 *task = 0;
9535 *rest = NULL;
9536
018d34a4
VP
9537 while (tok && *tok)
9538 {
bbc13ae3 9539 const char *end_tok;
018d34a4 9540 int toklen;
bbc13ae3
KS
9541 const char *cond_start = NULL;
9542 const char *cond_end = NULL;
cc59ec59 9543
bbc13ae3 9544 tok = skip_spaces_const (tok);
e7e0cddf
SS
9545
9546 if ((*tok == '"' || *tok == ',') && rest)
9547 {
9548 *rest = savestring (tok, strlen (tok));
9549 return;
9550 }
9551
bbc13ae3 9552 end_tok = skip_to_space_const (tok);
d634f2de 9553
018d34a4 9554 toklen = end_tok - tok;
d634f2de 9555
018d34a4
VP
9556 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9557 {
9558 tok = cond_start = end_tok + 1;
4d01a485 9559 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9560 cond_end = tok;
d634f2de 9561 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9562 }
9563 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9564 {
5d5658a1
PA
9565 const char *tmptok;
9566 struct thread_info *thr;
d634f2de 9567
018d34a4 9568 tok = end_tok + 1;
5d5658a1 9569 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9570 if (tok == tmptok)
9571 error (_("Junk after thread keyword."));
5d5658a1 9572 *thread = thr->global_num;
bbc13ae3 9573 tok = tmptok;
018d34a4 9574 }
4a306c9a
JB
9575 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9576 {
9577 char *tmptok;
9578
9579 tok = end_tok + 1;
bbc13ae3 9580 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9581 if (tok == tmptok)
9582 error (_("Junk after task keyword."));
9583 if (!valid_task_id (*task))
b6199126 9584 error (_("Unknown task %d."), *task);
bbc13ae3 9585 tok = tmptok;
4a306c9a 9586 }
e7e0cddf
SS
9587 else if (rest)
9588 {
9589 *rest = savestring (tok, strlen (tok));
ccab2054 9590 return;
e7e0cddf 9591 }
018d34a4
VP
9592 else
9593 error (_("Junk at end of arguments."));
9594 }
9595}
9596
0fb4aa4b
PA
9597/* Decode a static tracepoint marker spec. */
9598
9599static struct symtabs_and_lines
f00aae0f 9600decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b
PA
9601{
9602 VEC(static_tracepoint_marker_p) *markers = NULL;
9603 struct symtabs_and_lines sals;
0fb4aa4b 9604 struct cleanup *old_chain;
f00aae0f
KS
9605 const char *p = &(*arg_p)[3];
9606 const char *endp;
0fb4aa4b
PA
9607 char *marker_str;
9608 int i;
9609
f00aae0f 9610 p = skip_spaces_const (p);
0fb4aa4b 9611
f00aae0f 9612 endp = skip_to_space_const (p);
0fb4aa4b
PA
9613
9614 marker_str = savestring (p, endp - p);
9615 old_chain = make_cleanup (xfree, marker_str);
9616
9617 markers = target_static_tracepoint_markers_by_strid (marker_str);
9618 if (VEC_empty(static_tracepoint_marker_p, markers))
9619 error (_("No known static tracepoint marker named %s"), marker_str);
9620
9621 sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
8d749320 9622 sals.sals = XNEWVEC (struct symtab_and_line, sals.nelts);
0fb4aa4b
PA
9623
9624 for (i = 0; i < sals.nelts; i++)
9625 {
9626 struct static_tracepoint_marker *marker;
9627
9628 marker = VEC_index (static_tracepoint_marker_p, markers, i);
9629
9630 init_sal (&sals.sals[i]);
9631
9632 sals.sals[i] = find_pc_line (marker->address, 0);
9633 sals.sals[i].pc = marker->address;
9634
9635 release_static_tracepoint_marker (marker);
9636 }
9637
9638 do_cleanups (old_chain);
9639
9640 *arg_p = endp;
9641 return sals;
9642}
9643
f00aae0f 9644/* See breakpoint.h. */
0101ce28 9645
8cdf0e15
VP
9646int
9647create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9648 const struct event_location *location,
9649 const char *cond_string,
9650 int thread, const char *extra_string,
f00aae0f 9651 int parse_extra,
0fb4aa4b 9652 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9653 int ignore_count,
9654 enum auto_boolean pending_break_support,
c0a91b2b 9655 const struct breakpoint_ops *ops,
44f238bb
PA
9656 int from_tty, int enabled, int internal,
9657 unsigned flags)
c3f6f71d 9658{
7efd8fc2 9659 struct linespec_result canonical;
80c99de1 9660 struct cleanup *bkpt_chain = NULL;
0101ce28 9661 int pending = 0;
4a306c9a 9662 int task = 0;
86b17b60 9663 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9664
348d480f
PA
9665 gdb_assert (ops != NULL);
9666
f00aae0f
KS
9667 /* If extra_string isn't useful, set it to NULL. */
9668 if (extra_string != NULL && *extra_string == '\0')
9669 extra_string = NULL;
9670
492d29ea 9671 TRY
b78a6381 9672 {
f00aae0f 9673 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9674 }
492d29ea 9675 CATCH (e, RETURN_MASK_ERROR)
0101ce28 9676 {
492d29ea
PA
9677 /* If caller is interested in rc value from parse, set
9678 value. */
9679 if (e.error == NOT_FOUND_ERROR)
0101ce28 9680 {
05ff989b
AC
9681 /* If pending breakpoint support is turned off, throw
9682 error. */
fa8d40ab
JJ
9683
9684 if (pending_break_support == AUTO_BOOLEAN_FALSE)
723a2275
VP
9685 throw_exception (e);
9686
9687 exception_print (gdb_stderr, e);
fa8d40ab 9688
05ff989b
AC
9689 /* If pending breakpoint support is auto query and the user
9690 selects no, then simply return the error code. */
059fb39f 9691 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9692 && !nquery (_("Make %s pending on future shared library load? "),
9693 bptype_string (type_wanted)))
fd9b8c24 9694 return 0;
fa8d40ab 9695
05ff989b
AC
9696 /* At this point, either the user was queried about setting
9697 a pending breakpoint and selected yes, or pending
9698 breakpoint behavior is on and thus a pending breakpoint
9699 is defaulted on behalf of the user. */
f00aae0f 9700 pending = 1;
0101ce28 9701 }
492d29ea
PA
9702 else
9703 throw_exception (e);
0101ce28 9704 }
492d29ea
PA
9705 END_CATCH
9706
f00aae0f 9707 if (!pending && VEC_empty (linespec_sals, canonical.sals))
492d29ea 9708 return 0;
c3f6f71d 9709
c3f6f71d
JM
9710 /* ----------------------------- SNIP -----------------------------
9711 Anything added to the cleanup chain beyond this point is assumed
9712 to be part of a breakpoint. If the breakpoint create succeeds
80c99de1
PA
9713 then the memory is not reclaimed. */
9714 bkpt_chain = make_cleanup (null_cleanup, 0);
c3f6f71d 9715
c3f6f71d
JM
9716 /* Resolve all line numbers to PC's and verify that the addresses
9717 are ok for the target. */
0101ce28 9718 if (!pending)
f8eba3c6
TT
9719 {
9720 int ix;
9721 struct linespec_sals *iter;
9722
9723 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9724 breakpoint_sals_to_pc (&iter->sals);
9725 }
c3f6f71d 9726
7a697b8d 9727 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9728 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6
TT
9729 {
9730 int ix;
9731 struct linespec_sals *iter;
9732
9733 for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9734 check_fast_tracepoint_sals (gdbarch, &iter->sals);
9735 }
7a697b8d 9736
c3f6f71d
JM
9737 /* Verify that condition can be parsed, before setting any
9738 breakpoints. Allocate a separate condition expression for each
4a64f543 9739 breakpoint. */
0101ce28 9740 if (!pending)
c3f6f71d 9741 {
e1e01040
PA
9742 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9743 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9744
f00aae0f 9745 if (parse_extra)
72b2ff0e 9746 {
0878d0fa 9747 char *rest;
e1e01040 9748 char *cond;
52d361e1
YQ
9749 struct linespec_sals *lsal;
9750
9751 lsal = VEC_index (linespec_sals, canonical.sals, 0);
9752
0878d0fa
YQ
9753 /* Here we only parse 'arg' to separate condition
9754 from thread number, so parsing in context of first
9755 sal is OK. When setting the breakpoint we'll
9756 re-parse it in context of each sal. */
9757
f00aae0f 9758 find_condition_and_thread (extra_string, lsal->sals.sals[0].pc,
e1e01040
PA
9759 &cond, &thread, &task, &rest);
9760 cond_string_copy.reset (cond);
9761 extra_string_copy.reset (rest);
72b2ff0e 9762 }
2f069f6f 9763 else
72b2ff0e 9764 {
f00aae0f
KS
9765 if (type_wanted != bp_dprintf
9766 && extra_string != NULL && *extra_string != '\0')
9767 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9768
9769 /* Create a private copy of condition string. */
9770 if (cond_string)
e1e01040 9771 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9772 /* Create a private copy of any extra string. */
9773 if (extra_string)
e1e01040 9774 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9775 }
0fb4aa4b 9776
52d361e1 9777 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9778 std::move (cond_string_copy),
9779 std::move (extra_string_copy),
9780 type_wanted,
d9b3f62e
PA
9781 tempflag ? disp_del : disp_donttouch,
9782 thread, task, ignore_count, ops,
44f238bb 9783 from_tty, enabled, internal, flags);
c906108c 9784 }
0101ce28
JJ
9785 else
9786 {
a5e364af 9787 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9788
a5e364af 9789 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9790 b->location = copy_event_location (location);
bfccc43c 9791
f00aae0f
KS
9792 if (parse_extra)
9793 b->cond_string = NULL;
e12c7713
MK
9794 else
9795 {
9796 /* Create a private copy of condition string. */
e1e01040 9797 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9798 b->thread = thread;
e12c7713 9799 }
f00aae0f
KS
9800
9801 /* Create a private copy of any extra string. */
e1e01040 9802 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9803 b->ignore_count = ignore_count;
0101ce28 9804 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9805 b->condition_not_parsed = 1;
41447f92 9806 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9807 if ((type_wanted != bp_breakpoint
9808 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9809 b->pspace = current_program_space;
8bea4e01 9810
a5e364af 9811 install_breakpoint (internal, b.release (), 0);
0101ce28
JJ
9812 }
9813
f8eba3c6 9814 if (VEC_length (linespec_sals, canonical.sals) > 1)
95a42b64 9815 {
3e43a32a
MS
9816 warning (_("Multiple breakpoints were set.\nUse the "
9817 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9818 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9819 }
9820
80c99de1
PA
9821 /* That's it. Discard the cleanups for data inserted into the
9822 breakpoint. */
9823 discard_cleanups (bkpt_chain);
217dc9e2 9824
80c99de1 9825 /* error call may happen here - have BKPT_CHAIN already discarded. */
44702360 9826 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9827
9828 return 1;
c3f6f71d 9829}
c906108c 9830
348d480f 9831/* Set a breakpoint.
72b2ff0e
VP
9832 ARG is a string describing breakpoint address,
9833 condition, and thread.
9834 FLAG specifies if a breakpoint is hardware on,
9835 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9836 and BP_TEMPFLAG. */
348d480f 9837
98deb0da 9838static void
72b2ff0e 9839break_command_1 (char *arg, int flag, int from_tty)
c3f6f71d 9840{
72b2ff0e 9841 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9842 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9843 ? bp_hardware_breakpoint
9844 : bp_breakpoint);
55aa24fb 9845 struct breakpoint_ops *ops;
f00aae0f 9846
ffc2605c 9847 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9848
9849 /* Matching breakpoints on probes. */
5b56227b 9850 if (location != NULL
ffc2605c 9851 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9852 ops = &bkpt_probe_breakpoint_ops;
9853 else
9854 ops = &bkpt_breakpoint_ops;
c3f6f71d 9855
8cdf0e15 9856 create_breakpoint (get_current_arch (),
ffc2605c 9857 location.get (),
f00aae0f 9858 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9859 tempflag, type_wanted,
8cdf0e15
VP
9860 0 /* Ignore count */,
9861 pending_break_support,
55aa24fb 9862 ops,
8cdf0e15 9863 from_tty,
84f4c1fe 9864 1 /* enabled */,
44f238bb
PA
9865 0 /* internal */,
9866 0);
c906108c
SS
9867}
9868
c906108c
SS
9869/* Helper function for break_command_1 and disassemble_command. */
9870
9871void
fba45db2 9872resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9873{
9874 CORE_ADDR pc;
9875
9876 if (sal->pc == 0 && sal->symtab != NULL)
9877 {
9878 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9879 error (_("No line %d in file \"%s\"."),
05cba821 9880 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9881 sal->pc = pc;
6a048695 9882
4a64f543
MS
9883 /* If this SAL corresponds to a breakpoint inserted using a line
9884 number, then skip the function prologue if necessary. */
6a048695 9885 if (sal->explicit_line)
059acae7 9886 skip_prologue_sal (sal);
c906108c
SS
9887 }
9888
9889 if (sal->section == 0 && sal->symtab != NULL)
9890 {
346d1dfe 9891 const struct blockvector *bv;
3977b71f 9892 const struct block *b;
c5aa993b 9893 struct symbol *sym;
c906108c 9894
43f3e411
DE
9895 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9896 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9897 if (bv != NULL)
9898 {
7f0df278 9899 sym = block_linkage_function (b);
c906108c
SS
9900 if (sym != NULL)
9901 {
eb822aa6
DE
9902 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9903 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9904 sym);
c906108c
SS
9905 }
9906 else
9907 {
4a64f543
MS
9908 /* It really is worthwhile to have the section, so we'll
9909 just have to look harder. This case can be executed
9910 if we have line numbers but no functions (as can
9911 happen in assembly source). */
c906108c 9912
5ed8105e 9913 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9914 switch_to_program_space_and_thread (sal->pspace);
c906108c 9915
5ed8105e 9916 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9917 if (msym.minsym)
efd66ac6 9918 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9919 }
9920 }
9921 }
9922}
9923
9924void
fba45db2 9925break_command (char *arg, int from_tty)
c906108c 9926{
db107f19 9927 break_command_1 (arg, 0, from_tty);
c906108c
SS
9928}
9929
c906108c 9930void
fba45db2 9931tbreak_command (char *arg, int from_tty)
c906108c 9932{
db107f19 9933 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9934}
9935
c906108c 9936static void
fba45db2 9937hbreak_command (char *arg, int from_tty)
c906108c 9938{
db107f19 9939 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9940}
9941
9942static void
fba45db2 9943thbreak_command (char *arg, int from_tty)
c906108c 9944{
db107f19 9945 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9946}
9947
9948static void
fba45db2 9949stop_command (char *arg, int from_tty)
c906108c 9950{
a3f17187 9951 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9952Usage: stop in <function | address>\n\
a3f17187 9953 stop at <line>\n"));
c906108c
SS
9954}
9955
9956static void
fba45db2 9957stopin_command (char *arg, int from_tty)
c906108c
SS
9958{
9959 int badInput = 0;
9960
c5aa993b 9961 if (arg == (char *) NULL)
c906108c
SS
9962 badInput = 1;
9963 else if (*arg != '*')
9964 {
9965 char *argptr = arg;
9966 int hasColon = 0;
9967
4a64f543 9968 /* Look for a ':'. If this is a line number specification, then
53a5351d 9969 say it is bad, otherwise, it should be an address or
4a64f543 9970 function/method name. */
c906108c 9971 while (*argptr && !hasColon)
c5aa993b
JM
9972 {
9973 hasColon = (*argptr == ':');
9974 argptr++;
9975 }
c906108c
SS
9976
9977 if (hasColon)
c5aa993b 9978 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9979 else
c5aa993b 9980 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9981 }
9982
9983 if (badInput)
a3f17187 9984 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9985 else
db107f19 9986 break_command_1 (arg, 0, from_tty);
c906108c
SS
9987}
9988
9989static void
fba45db2 9990stopat_command (char *arg, int from_tty)
c906108c
SS
9991{
9992 int badInput = 0;
9993
c5aa993b 9994 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9995 badInput = 1;
9996 else
9997 {
9998 char *argptr = arg;
9999 int hasColon = 0;
10000
4a64f543
MS
10001 /* Look for a ':'. If there is a '::' then get out, otherwise
10002 it is probably a line number. */
c906108c 10003 while (*argptr && !hasColon)
c5aa993b
JM
10004 {
10005 hasColon = (*argptr == ':');
10006 argptr++;
10007 }
c906108c
SS
10008
10009 if (hasColon)
c5aa993b 10010 badInput = (*argptr == ':'); /* we have class::method */
c906108c 10011 else
c5aa993b 10012 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
10013 }
10014
10015 if (badInput)
a3f17187 10016 printf_filtered (_("Usage: stop at <line>\n"));
c906108c 10017 else
db107f19 10018 break_command_1 (arg, 0, from_tty);
c906108c
SS
10019}
10020
e7e0cddf
SS
10021/* The dynamic printf command is mostly like a regular breakpoint, but
10022 with a prewired command list consisting of a single output command,
10023 built from extra arguments supplied on the dprintf command
10024 line. */
10025
da821c7b 10026static void
e7e0cddf
SS
10027dprintf_command (char *arg, int from_tty)
10028{
ffc2605c 10029 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
10030
10031 /* If non-NULL, ARG should have been advanced past the location;
10032 the next character must be ','. */
10033 if (arg != NULL)
10034 {
10035 if (arg[0] != ',' || arg[1] == '\0')
10036 error (_("Format string required"));
10037 else
10038 {
10039 /* Skip the comma. */
10040 ++arg;
10041 }
10042 }
10043
e7e0cddf 10044 create_breakpoint (get_current_arch (),
ffc2605c 10045 location.get (),
f00aae0f 10046 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
10047 0, bp_dprintf,
10048 0 /* Ignore count */,
10049 pending_break_support,
10050 &dprintf_breakpoint_ops,
10051 from_tty,
10052 1 /* enabled */,
10053 0 /* internal */,
10054 0);
10055}
10056
d3ce09f5
SS
10057static void
10058agent_printf_command (char *arg, int from_tty)
10059{
10060 error (_("May only run agent-printf on the target"));
10061}
10062
f1310107
TJB
10063/* Implement the "breakpoint_hit" breakpoint_ops method for
10064 ranged breakpoints. */
10065
10066static int
10067breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10068 struct address_space *aspace,
09ac7c10
TT
10069 CORE_ADDR bp_addr,
10070 const struct target_waitstatus *ws)
f1310107 10071{
09ac7c10 10072 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 10073 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
10074 return 0;
10075
f1310107
TJB
10076 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10077 bl->length, aspace, bp_addr);
10078}
10079
10080/* Implement the "resources_needed" breakpoint_ops method for
10081 ranged breakpoints. */
10082
10083static int
10084resources_needed_ranged_breakpoint (const struct bp_location *bl)
10085{
10086 return target_ranged_break_num_registers ();
10087}
10088
10089/* Implement the "print_it" breakpoint_ops method for
10090 ranged breakpoints. */
10091
10092static enum print_stop_action
348d480f 10093print_it_ranged_breakpoint (bpstat bs)
f1310107 10094{
348d480f 10095 struct breakpoint *b = bs->breakpoint_at;
f1310107 10096 struct bp_location *bl = b->loc;
79a45e25 10097 struct ui_out *uiout = current_uiout;
f1310107
TJB
10098
10099 gdb_assert (b->type == bp_hardware_breakpoint);
10100
10101 /* Ranged breakpoints have only one location. */
10102 gdb_assert (bl && bl->next == NULL);
10103
10104 annotate_breakpoint (b->number);
f303dbd6
PA
10105
10106 maybe_print_thread_hit_breakpoint (uiout);
10107
f1310107 10108 if (b->disposition == disp_del)
112e8700 10109 uiout->text ("Temporary ranged breakpoint ");
f1310107 10110 else
112e8700
SM
10111 uiout->text ("Ranged breakpoint ");
10112 if (uiout->is_mi_like_p ())
f1310107 10113 {
112e8700 10114 uiout->field_string ("reason",
f1310107 10115 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 10116 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 10117 }
112e8700
SM
10118 uiout->field_int ("bkptno", b->number);
10119 uiout->text (", ");
f1310107
TJB
10120
10121 return PRINT_SRC_AND_LOC;
10122}
10123
10124/* Implement the "print_one" breakpoint_ops method for
10125 ranged breakpoints. */
10126
10127static void
10128print_one_ranged_breakpoint (struct breakpoint *b,
10129 struct bp_location **last_loc)
10130{
10131 struct bp_location *bl = b->loc;
10132 struct value_print_options opts;
79a45e25 10133 struct ui_out *uiout = current_uiout;
f1310107
TJB
10134
10135 /* Ranged breakpoints have only one location. */
10136 gdb_assert (bl && bl->next == NULL);
10137
10138 get_user_print_options (&opts);
10139
10140 if (opts.addressprint)
10141 /* We don't print the address range here, it will be printed later
10142 by print_one_detail_ranged_breakpoint. */
112e8700 10143 uiout->field_skip ("addr");
f1310107
TJB
10144 annotate_field (5);
10145 print_breakpoint_location (b, bl);
10146 *last_loc = bl;
10147}
10148
10149/* Implement the "print_one_detail" breakpoint_ops method for
10150 ranged breakpoints. */
10151
10152static void
10153print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10154 struct ui_out *uiout)
10155{
10156 CORE_ADDR address_start, address_end;
10157 struct bp_location *bl = b->loc;
d7e74731 10158 string_file stb;
f1310107
TJB
10159
10160 gdb_assert (bl);
10161
10162 address_start = bl->address;
10163 address_end = address_start + bl->length - 1;
10164
112e8700 10165 uiout->text ("\taddress range: ");
d7e74731
PA
10166 stb.printf ("[%s, %s]",
10167 print_core_address (bl->gdbarch, address_start),
10168 print_core_address (bl->gdbarch, address_end));
112e8700
SM
10169 uiout->field_stream ("addr", stb);
10170 uiout->text ("\n");
f1310107
TJB
10171}
10172
10173/* Implement the "print_mention" breakpoint_ops method for
10174 ranged breakpoints. */
10175
10176static void
10177print_mention_ranged_breakpoint (struct breakpoint *b)
10178{
10179 struct bp_location *bl = b->loc;
79a45e25 10180 struct ui_out *uiout = current_uiout;
f1310107
TJB
10181
10182 gdb_assert (bl);
10183 gdb_assert (b->type == bp_hardware_breakpoint);
10184
112e8700 10185 if (uiout->is_mi_like_p ())
f1310107
TJB
10186 return;
10187
10188 printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10189 b->number, paddress (bl->gdbarch, bl->address),
10190 paddress (bl->gdbarch, bl->address + bl->length - 1));
10191}
10192
10193/* Implement the "print_recreate" breakpoint_ops method for
10194 ranged breakpoints. */
10195
10196static void
10197print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10198{
f00aae0f 10199 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
10200 event_location_to_string (b->location.get ()),
10201 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 10202 print_recreate_thread (b, fp);
f1310107
TJB
10203}
10204
10205/* The breakpoint_ops structure to be used in ranged breakpoints. */
10206
2060206e 10207static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
10208
10209/* Find the address where the end of the breakpoint range should be
10210 placed, given the SAL of the end of the range. This is so that if
10211 the user provides a line number, the end of the range is set to the
10212 last instruction of the given line. */
10213
10214static CORE_ADDR
10215find_breakpoint_range_end (struct symtab_and_line sal)
10216{
10217 CORE_ADDR end;
10218
10219 /* If the user provided a PC value, use it. Otherwise,
10220 find the address of the end of the given location. */
10221 if (sal.explicit_pc)
10222 end = sal.pc;
10223 else
10224 {
10225 int ret;
10226 CORE_ADDR start;
10227
10228 ret = find_line_pc_range (sal, &start, &end);
10229 if (!ret)
10230 error (_("Could not find location of the end of the range."));
10231
10232 /* find_line_pc_range returns the start of the next line. */
10233 end--;
10234 }
10235
10236 return end;
10237}
10238
10239/* Implement the "break-range" CLI command. */
10240
10241static void
10242break_range_command (char *arg, int from_tty)
10243{
870f88f7 10244 char *arg_start, *addr_string_start;
f1310107
TJB
10245 struct linespec_result canonical_start, canonical_end;
10246 int bp_count, can_use_bp, length;
10247 CORE_ADDR end;
10248 struct breakpoint *b;
10249 struct symtab_and_line sal_start, sal_end;
f1310107 10250 struct cleanup *cleanup_bkpt;
f8eba3c6 10251 struct linespec_sals *lsal_start, *lsal_end;
f1310107
TJB
10252
10253 /* We don't support software ranged breakpoints. */
10254 if (target_ranged_break_num_registers () < 0)
10255 error (_("This target does not support hardware ranged breakpoints."));
10256
10257 bp_count = hw_breakpoint_used_count ();
10258 bp_count += target_ranged_break_num_registers ();
10259 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10260 bp_count, 0);
10261 if (can_use_bp < 0)
10262 error (_("Hardware breakpoints used exceeds limit."));
10263
f8eba3c6 10264 arg = skip_spaces (arg);
f1310107
TJB
10265 if (arg == NULL || arg[0] == '\0')
10266 error(_("No address range specified."));
10267
f8eba3c6 10268 arg_start = arg;
ffc2605c
TT
10269 event_location_up start_location = string_to_event_location (&arg,
10270 current_language);
10271 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
10272
10273 if (arg[0] != ',')
10274 error (_("Too few arguments."));
f8eba3c6 10275 else if (VEC_empty (linespec_sals, canonical_start.sals))
f1310107 10276 error (_("Could not find location of the beginning of the range."));
f8eba3c6
TT
10277
10278 lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10279
10280 if (VEC_length (linespec_sals, canonical_start.sals) > 1
10281 || lsal_start->sals.nelts != 1)
f1310107
TJB
10282 error (_("Cannot create a ranged breakpoint with multiple locations."));
10283
f8eba3c6
TT
10284 sal_start = lsal_start->sals.sals[0];
10285 addr_string_start = savestring (arg_start, arg - arg_start);
16e802b9 10286 cleanup_bkpt = make_cleanup (xfree, addr_string_start);
f1310107
TJB
10287
10288 arg++; /* Skip the comma. */
f8eba3c6 10289 arg = skip_spaces (arg);
f1310107
TJB
10290
10291 /* Parse the end location. */
10292
f1310107
TJB
10293 arg_start = arg;
10294
f8eba3c6 10295 /* We call decode_line_full directly here instead of using
f1310107
TJB
10296 parse_breakpoint_sals because we need to specify the start location's
10297 symtab and line as the default symtab and line for the end of the
10298 range. This makes it possible to have ranges like "foo.c:27, +14",
10299 where +14 means 14 lines from the start location. */
ffc2605c
TT
10300 event_location_up end_location = string_to_event_location (&arg,
10301 current_language);
10302 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
10303 sal_start.symtab, sal_start.line,
10304 &canonical_end, NULL, NULL);
10305
f8eba3c6 10306 if (VEC_empty (linespec_sals, canonical_end.sals))
f1310107 10307 error (_("Could not find location of the end of the range."));
f8eba3c6
TT
10308
10309 lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10310 if (VEC_length (linespec_sals, canonical_end.sals) > 1
10311 || lsal_end->sals.nelts != 1)
f1310107
TJB
10312 error (_("Cannot create a ranged breakpoint with multiple locations."));
10313
f8eba3c6 10314 sal_end = lsal_end->sals.sals[0];
f1310107
TJB
10315
10316 end = find_breakpoint_range_end (sal_end);
10317 if (sal_start.pc > end)
177b42fe 10318 error (_("Invalid address range, end precedes start."));
f1310107
TJB
10319
10320 length = end - sal_start.pc + 1;
10321 if (length < 0)
10322 /* Length overflowed. */
10323 error (_("Address range too large."));
10324 else if (length == 1)
10325 {
10326 /* This range is simple enough to be handled by
10327 the `hbreak' command. */
10328 hbreak_command (addr_string_start, 1);
10329
10330 do_cleanups (cleanup_bkpt);
10331
10332 return;
10333 }
10334
10335 /* Now set up the breakpoint. */
10336 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 10337 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
10338 set_breakpoint_count (breakpoint_count + 1);
10339 b->number = breakpoint_count;
10340 b->disposition = disp_donttouch;
d28cd78a
TT
10341 b->location = std::move (start_location);
10342 b->location_range_end = std::move (end_location);
f1310107
TJB
10343 b->loc->length = length;
10344
f8eba3c6 10345 do_cleanups (cleanup_bkpt);
f1310107
TJB
10346
10347 mention (b);
8d3788bd 10348 observer_notify_breakpoint_created (b);
44702360 10349 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
10350}
10351
4a64f543
MS
10352/* Return non-zero if EXP is verified as constant. Returned zero
10353 means EXP is variable. Also the constant detection may fail for
10354 some constant expressions and in such case still falsely return
10355 zero. */
2e6e3d9c 10356
65d79d4b
SDJ
10357static int
10358watchpoint_exp_is_const (const struct expression *exp)
10359{
10360 int i = exp->nelts;
10361
10362 while (i > 0)
10363 {
10364 int oplenp, argsp;
10365
10366 /* We are only interested in the descriptor of each element. */
10367 operator_length (exp, i, &oplenp, &argsp);
10368 i -= oplenp;
10369
10370 switch (exp->elts[i].opcode)
10371 {
10372 case BINOP_ADD:
10373 case BINOP_SUB:
10374 case BINOP_MUL:
10375 case BINOP_DIV:
10376 case BINOP_REM:
10377 case BINOP_MOD:
10378 case BINOP_LSH:
10379 case BINOP_RSH:
10380 case BINOP_LOGICAL_AND:
10381 case BINOP_LOGICAL_OR:
10382 case BINOP_BITWISE_AND:
10383 case BINOP_BITWISE_IOR:
10384 case BINOP_BITWISE_XOR:
10385 case BINOP_EQUAL:
10386 case BINOP_NOTEQUAL:
10387 case BINOP_LESS:
10388 case BINOP_GTR:
10389 case BINOP_LEQ:
10390 case BINOP_GEQ:
10391 case BINOP_REPEAT:
10392 case BINOP_COMMA:
10393 case BINOP_EXP:
10394 case BINOP_MIN:
10395 case BINOP_MAX:
10396 case BINOP_INTDIV:
10397 case BINOP_CONCAT:
65d79d4b
SDJ
10398 case TERNOP_COND:
10399 case TERNOP_SLICE:
65d79d4b
SDJ
10400
10401 case OP_LONG:
10402 case OP_DOUBLE:
10403 case OP_DECFLOAT:
10404 case OP_LAST:
10405 case OP_COMPLEX:
10406 case OP_STRING:
65d79d4b
SDJ
10407 case OP_ARRAY:
10408 case OP_TYPE:
608b4967
TT
10409 case OP_TYPEOF:
10410 case OP_DECLTYPE:
6e72ca20 10411 case OP_TYPEID:
65d79d4b
SDJ
10412 case OP_NAME:
10413 case OP_OBJC_NSSTRING:
10414
10415 case UNOP_NEG:
10416 case UNOP_LOGICAL_NOT:
10417 case UNOP_COMPLEMENT:
10418 case UNOP_ADDR:
10419 case UNOP_HIGH:
aeaa2474 10420 case UNOP_CAST:
9eaf6705
TT
10421
10422 case UNOP_CAST_TYPE:
10423 case UNOP_REINTERPRET_CAST:
10424 case UNOP_DYNAMIC_CAST:
4a64f543
MS
10425 /* Unary, binary and ternary operators: We have to check
10426 their operands. If they are constant, then so is the
10427 result of that operation. For instance, if A and B are
10428 determined to be constants, then so is "A + B".
10429
10430 UNOP_IND is one exception to the rule above, because the
10431 value of *ADDR is not necessarily a constant, even when
10432 ADDR is. */
65d79d4b
SDJ
10433 break;
10434
10435 case OP_VAR_VALUE:
10436 /* Check whether the associated symbol is a constant.
4a64f543 10437
65d79d4b 10438 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
10439 possible that a buggy compiler could mark a variable as
10440 constant even when it is not, and TYPE_CONST would return
10441 true in this case, while SYMBOL_CLASS wouldn't.
10442
10443 We also have to check for function symbols because they
10444 are always constant. */
65d79d4b
SDJ
10445 {
10446 struct symbol *s = exp->elts[i + 2].symbol;
10447
10448 if (SYMBOL_CLASS (s) != LOC_BLOCK
10449 && SYMBOL_CLASS (s) != LOC_CONST
10450 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10451 return 0;
10452 break;
10453 }
10454
10455 /* The default action is to return 0 because we are using
10456 the optimistic approach here: If we don't know something,
10457 then it is not a constant. */
10458 default:
10459 return 0;
10460 }
10461 }
10462
10463 return 1;
10464}
10465
c1fc2657 10466/* Watchpoint destructor. */
3a5c3e22 10467
c1fc2657 10468watchpoint::~watchpoint ()
3a5c3e22 10469{
c1fc2657
SM
10470 xfree (this->exp_string);
10471 xfree (this->exp_string_reparse);
10472 value_free (this->val);
3a5c3e22
PA
10473}
10474
348d480f
PA
10475/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10476
10477static void
10478re_set_watchpoint (struct breakpoint *b)
10479{
3a5c3e22
PA
10480 struct watchpoint *w = (struct watchpoint *) b;
10481
348d480f
PA
10482 /* Watchpoint can be either on expression using entirely global
10483 variables, or it can be on local variables.
10484
10485 Watchpoints of the first kind are never auto-deleted, and even
10486 persist across program restarts. Since they can use variables
10487 from shared libraries, we need to reparse expression as libraries
10488 are loaded and unloaded.
10489
10490 Watchpoints on local variables can also change meaning as result
10491 of solib event. For example, if a watchpoint uses both a local
10492 and a global variables in expression, it's a local watchpoint,
10493 but unloading of a shared library will make the expression
10494 invalid. This is not a very common use case, but we still
10495 re-evaluate expression, to avoid surprises to the user.
10496
10497 Note that for local watchpoints, we re-evaluate it only if
10498 watchpoints frame id is still valid. If it's not, it means the
10499 watchpoint is out of scope and will be deleted soon. In fact,
10500 I'm not sure we'll ever be called in this case.
10501
10502 If a local watchpoint's frame id is still valid, then
3a5c3e22 10503 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10504
3a5c3e22
PA
10505 Don't do anything about disabled watchpoints, since they will be
10506 reevaluated again when enabled. */
10507 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10508}
10509
77b06cd7
TJB
10510/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10511
10512static int
10513insert_watchpoint (struct bp_location *bl)
10514{
3a5c3e22
PA
10515 struct watchpoint *w = (struct watchpoint *) bl->owner;
10516 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10517
10518 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10519 w->cond_exp.get ());
77b06cd7
TJB
10520}
10521
10522/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10523
10524static int
73971819 10525remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10526{
3a5c3e22
PA
10527 struct watchpoint *w = (struct watchpoint *) bl->owner;
10528 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10529
10530 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10531 w->cond_exp.get ());
e09342b5
TJB
10532}
10533
e09342b5 10534static int
348d480f 10535breakpoint_hit_watchpoint (const struct bp_location *bl,
09ac7c10
TT
10536 struct address_space *aspace, CORE_ADDR bp_addr,
10537 const struct target_waitstatus *ws)
e09342b5 10538{
348d480f 10539 struct breakpoint *b = bl->owner;
3a5c3e22 10540 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10541
348d480f
PA
10542 /* Continuable hardware watchpoints are treated as non-existent if the
10543 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10544 some data address). Otherwise gdb won't stop on a break instruction
10545 in the code (not from a breakpoint) when a hardware watchpoint has
10546 been defined. Also skip watchpoints which we know did not trigger
10547 (did not match the data address). */
10548 if (is_hardware_watchpoint (b)
3a5c3e22 10549 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10550 return 0;
9c06b0b4 10551
348d480f 10552 return 1;
9c06b0b4
TJB
10553}
10554
348d480f
PA
10555static void
10556check_status_watchpoint (bpstat bs)
9c06b0b4 10557{
348d480f 10558 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10559
348d480f 10560 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10561}
10562
10563/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10564 hardware watchpoints. */
9c06b0b4
TJB
10565
10566static int
348d480f 10567resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10568{
3a5c3e22
PA
10569 struct watchpoint *w = (struct watchpoint *) bl->owner;
10570 int length = w->exact? 1 : bl->length;
348d480f
PA
10571
10572 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10573}
10574
10575/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10576 hardware watchpoints. */
9c06b0b4
TJB
10577
10578static int
348d480f 10579works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10580{
efa80663
PA
10581 /* Read and access watchpoints only work with hardware support. */
10582 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10583}
10584
9c06b0b4 10585static enum print_stop_action
348d480f 10586print_it_watchpoint (bpstat bs)
9c06b0b4 10587{
348d480f
PA
10588 struct cleanup *old_chain;
10589 struct breakpoint *b;
348d480f 10590 enum print_stop_action result;
3a5c3e22 10591 struct watchpoint *w;
79a45e25 10592 struct ui_out *uiout = current_uiout;
348d480f
PA
10593
10594 gdb_assert (bs->bp_location_at != NULL);
10595
348d480f 10596 b = bs->breakpoint_at;
3a5c3e22 10597 w = (struct watchpoint *) b;
348d480f 10598
d7e74731 10599 old_chain = make_cleanup (null_cleanup, NULL);
9c06b0b4 10600
f303dbd6
PA
10601 annotate_watchpoint (b->number);
10602 maybe_print_thread_hit_breakpoint (uiout);
10603
d7e74731
PA
10604 string_file stb;
10605
9c06b0b4
TJB
10606 switch (b->type)
10607 {
348d480f 10608 case bp_watchpoint:
9c06b0b4 10609 case bp_hardware_watchpoint:
112e8700
SM
10610 if (uiout->is_mi_like_p ())
10611 uiout->field_string
10612 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10613 mention (b);
10614 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
112e8700 10615 uiout->text ("\nOld value = ");
d7e74731 10616 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10617 uiout->field_stream ("old", stb);
10618 uiout->text ("\nNew value = ");
d7e74731 10619 watchpoint_value_print (w->val, &stb);
112e8700
SM
10620 uiout->field_stream ("new", stb);
10621 uiout->text ("\n");
348d480f
PA
10622 /* More than one watchpoint may have been triggered. */
10623 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10624 break;
10625
10626 case bp_read_watchpoint:
112e8700
SM
10627 if (uiout->is_mi_like_p ())
10628 uiout->field_string
10629 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10630 mention (b);
10631 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
112e8700 10632 uiout->text ("\nValue = ");
d7e74731 10633 watchpoint_value_print (w->val, &stb);
112e8700
SM
10634 uiout->field_stream ("value", stb);
10635 uiout->text ("\n");
348d480f 10636 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10637 break;
10638
10639 case bp_access_watchpoint:
348d480f
PA
10640 if (bs->old_val != NULL)
10641 {
112e8700
SM
10642 if (uiout->is_mi_like_p ())
10643 uiout->field_string
10644 ("reason",
348d480f
PA
10645 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10646 mention (b);
10647 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
112e8700 10648 uiout->text ("\nOld value = ");
d7e74731 10649 watchpoint_value_print (bs->old_val, &stb);
112e8700
SM
10650 uiout->field_stream ("old", stb);
10651 uiout->text ("\nNew value = ");
348d480f
PA
10652 }
10653 else
10654 {
10655 mention (b);
112e8700
SM
10656 if (uiout->is_mi_like_p ())
10657 uiout->field_string
10658 ("reason",
348d480f
PA
10659 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10660 make_cleanup_ui_out_tuple_begin_end (uiout, "value");
112e8700 10661 uiout->text ("\nValue = ");
348d480f 10662 }
d7e74731 10663 watchpoint_value_print (w->val, &stb);
112e8700
SM
10664 uiout->field_stream ("new", stb);
10665 uiout->text ("\n");
348d480f 10666 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10667 break;
10668 default:
348d480f 10669 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10670 }
10671
348d480f
PA
10672 do_cleanups (old_chain);
10673 return result;
10674}
10675
10676/* Implement the "print_mention" breakpoint_ops method for hardware
10677 watchpoints. */
10678
10679static void
10680print_mention_watchpoint (struct breakpoint *b)
10681{
3a5c3e22 10682 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10683 struct ui_out *uiout = current_uiout;
46b9c129 10684 const char *tuple_name;
348d480f
PA
10685
10686 switch (b->type)
10687 {
10688 case bp_watchpoint:
112e8700 10689 uiout->text ("Watchpoint ");
46b9c129 10690 tuple_name = "wpt";
348d480f
PA
10691 break;
10692 case bp_hardware_watchpoint:
112e8700 10693 uiout->text ("Hardware watchpoint ");
46b9c129 10694 tuple_name = "wpt";
348d480f
PA
10695 break;
10696 case bp_read_watchpoint:
112e8700 10697 uiout->text ("Hardware read watchpoint ");
46b9c129 10698 tuple_name = "hw-rwpt";
348d480f
PA
10699 break;
10700 case bp_access_watchpoint:
112e8700 10701 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10702 tuple_name = "hw-awpt";
348d480f
PA
10703 break;
10704 default:
10705 internal_error (__FILE__, __LINE__,
10706 _("Invalid hardware watchpoint type."));
10707 }
10708
46b9c129 10709 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10710 uiout->field_int ("number", b->number);
10711 uiout->text (": ");
10712 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10713}
10714
10715/* Implement the "print_recreate" breakpoint_ops method for
10716 watchpoints. */
10717
10718static void
10719print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10720{
3a5c3e22
PA
10721 struct watchpoint *w = (struct watchpoint *) b;
10722
348d480f
PA
10723 switch (b->type)
10724 {
10725 case bp_watchpoint:
10726 case bp_hardware_watchpoint:
10727 fprintf_unfiltered (fp, "watch");
10728 break;
10729 case bp_read_watchpoint:
10730 fprintf_unfiltered (fp, "rwatch");
10731 break;
10732 case bp_access_watchpoint:
10733 fprintf_unfiltered (fp, "awatch");
10734 break;
10735 default:
10736 internal_error (__FILE__, __LINE__,
10737 _("Invalid watchpoint type."));
10738 }
10739
3a5c3e22 10740 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10741 print_recreate_thread (b, fp);
348d480f
PA
10742}
10743
427cd150
TT
10744/* Implement the "explains_signal" breakpoint_ops method for
10745 watchpoints. */
10746
47591c29 10747static int
427cd150
TT
10748explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10749{
10750 /* A software watchpoint cannot cause a signal other than
10751 GDB_SIGNAL_TRAP. */
10752 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10753 return 0;
427cd150 10754
47591c29 10755 return 1;
427cd150
TT
10756}
10757
348d480f
PA
10758/* The breakpoint_ops structure to be used in hardware watchpoints. */
10759
2060206e 10760static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10761
10762/* Implement the "insert" breakpoint_ops method for
10763 masked hardware watchpoints. */
10764
10765static int
10766insert_masked_watchpoint (struct bp_location *bl)
10767{
3a5c3e22
PA
10768 struct watchpoint *w = (struct watchpoint *) bl->owner;
10769
10770 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10771 bl->watchpoint_type);
10772}
10773
10774/* Implement the "remove" breakpoint_ops method for
10775 masked hardware watchpoints. */
10776
10777static int
73971819 10778remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10779{
3a5c3e22
PA
10780 struct watchpoint *w = (struct watchpoint *) bl->owner;
10781
10782 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10783 bl->watchpoint_type);
10784}
10785
10786/* Implement the "resources_needed" breakpoint_ops method for
10787 masked hardware watchpoints. */
10788
10789static int
10790resources_needed_masked_watchpoint (const struct bp_location *bl)
10791{
3a5c3e22
PA
10792 struct watchpoint *w = (struct watchpoint *) bl->owner;
10793
10794 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10795}
10796
10797/* Implement the "works_in_software_mode" breakpoint_ops method for
10798 masked hardware watchpoints. */
10799
10800static int
10801works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10802{
10803 return 0;
10804}
10805
10806/* Implement the "print_it" breakpoint_ops method for
10807 masked hardware watchpoints. */
10808
10809static enum print_stop_action
10810print_it_masked_watchpoint (bpstat bs)
10811{
10812 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10813 struct ui_out *uiout = current_uiout;
348d480f
PA
10814
10815 /* Masked watchpoints have only one location. */
10816 gdb_assert (b->loc && b->loc->next == NULL);
10817
f303dbd6
PA
10818 annotate_watchpoint (b->number);
10819 maybe_print_thread_hit_breakpoint (uiout);
10820
348d480f
PA
10821 switch (b->type)
10822 {
10823 case bp_hardware_watchpoint:
112e8700
SM
10824 if (uiout->is_mi_like_p ())
10825 uiout->field_string
10826 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10827 break;
10828
10829 case bp_read_watchpoint:
112e8700
SM
10830 if (uiout->is_mi_like_p ())
10831 uiout->field_string
10832 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10833 break;
10834
10835 case bp_access_watchpoint:
112e8700
SM
10836 if (uiout->is_mi_like_p ())
10837 uiout->field_string
10838 ("reason",
348d480f
PA
10839 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10840 break;
10841 default:
10842 internal_error (__FILE__, __LINE__,
10843 _("Invalid hardware watchpoint type."));
10844 }
10845
10846 mention (b);
112e8700 10847 uiout->text (_("\n\
9c06b0b4
TJB
10848Check the underlying instruction at PC for the memory\n\
10849address and value which triggered this watchpoint.\n"));
112e8700 10850 uiout->text ("\n");
9c06b0b4
TJB
10851
10852 /* More than one watchpoint may have been triggered. */
10853 return PRINT_UNKNOWN;
10854}
10855
10856/* Implement the "print_one_detail" breakpoint_ops method for
10857 masked hardware watchpoints. */
10858
10859static void
10860print_one_detail_masked_watchpoint (const struct breakpoint *b,
10861 struct ui_out *uiout)
10862{
3a5c3e22
PA
10863 struct watchpoint *w = (struct watchpoint *) b;
10864
9c06b0b4
TJB
10865 /* Masked watchpoints have only one location. */
10866 gdb_assert (b->loc && b->loc->next == NULL);
10867
112e8700
SM
10868 uiout->text ("\tmask ");
10869 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10870 uiout->text ("\n");
9c06b0b4
TJB
10871}
10872
10873/* Implement the "print_mention" breakpoint_ops method for
10874 masked hardware watchpoints. */
10875
10876static void
10877print_mention_masked_watchpoint (struct breakpoint *b)
10878{
3a5c3e22 10879 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10880 struct ui_out *uiout = current_uiout;
46b9c129 10881 const char *tuple_name;
9c06b0b4
TJB
10882
10883 switch (b->type)
10884 {
10885 case bp_hardware_watchpoint:
112e8700 10886 uiout->text ("Masked hardware watchpoint ");
46b9c129 10887 tuple_name = "wpt";
9c06b0b4
TJB
10888 break;
10889 case bp_read_watchpoint:
112e8700 10890 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10891 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10892 break;
10893 case bp_access_watchpoint:
112e8700 10894 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10895 tuple_name = "hw-awpt";
9c06b0b4
TJB
10896 break;
10897 default:
10898 internal_error (__FILE__, __LINE__,
10899 _("Invalid hardware watchpoint type."));
10900 }
10901
46b9c129 10902 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10903 uiout->field_int ("number", b->number);
10904 uiout->text (": ");
10905 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10906}
10907
10908/* Implement the "print_recreate" breakpoint_ops method for
10909 masked hardware watchpoints. */
10910
10911static void
10912print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10913{
3a5c3e22 10914 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10915 char tmp[40];
10916
10917 switch (b->type)
10918 {
10919 case bp_hardware_watchpoint:
10920 fprintf_unfiltered (fp, "watch");
10921 break;
10922 case bp_read_watchpoint:
10923 fprintf_unfiltered (fp, "rwatch");
10924 break;
10925 case bp_access_watchpoint:
10926 fprintf_unfiltered (fp, "awatch");
10927 break;
10928 default:
10929 internal_error (__FILE__, __LINE__,
10930 _("Invalid hardware watchpoint type."));
10931 }
10932
3a5c3e22
PA
10933 sprintf_vma (tmp, w->hw_wp_mask);
10934 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10935 print_recreate_thread (b, fp);
9c06b0b4
TJB
10936}
10937
10938/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10939
2060206e 10940static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10941
10942/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10943
10944static int
10945is_masked_watchpoint (const struct breakpoint *b)
10946{
10947 return b->ops == &masked_watchpoint_breakpoint_ops;
10948}
10949
53a5351d
JM
10950/* accessflag: hw_write: watch write,
10951 hw_read: watch read,
10952 hw_access: watch access (read or write) */
c906108c 10953static void
bbc13ae3 10954watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10955 int just_location, int internal)
c906108c 10956{
c1fc2657 10957 struct breakpoint *scope_breakpoint = NULL;
270140bd 10958 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
a1442452 10959 struct value *val, *mark, *result;
bb9d5f81 10960 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10961 const char *exp_start = NULL;
10962 const char *exp_end = NULL;
10963 const char *tok, *end_tok;
9c06b0b4 10964 int toklen = -1;
bbc13ae3
KS
10965 const char *cond_start = NULL;
10966 const char *cond_end = NULL;
c906108c 10967 enum bptype bp_type;
37e4754d 10968 int thread = -1;
0cf6dd15 10969 int pc = 0;
9c06b0b4
TJB
10970 /* Flag to indicate whether we are going to use masks for
10971 the hardware watchpoint. */
10972 int use_mask = 0;
10973 CORE_ADDR mask = 0;
3a5c3e22 10974 struct watchpoint *w;
bbc13ae3
KS
10975 char *expression;
10976 struct cleanup *back_to;
c906108c 10977
37e4754d
LM
10978 /* Make sure that we actually have parameters to parse. */
10979 if (arg != NULL && arg[0] != '\0')
10980 {
bbc13ae3
KS
10981 const char *value_start;
10982
10983 exp_end = arg + strlen (arg);
37e4754d 10984
9c06b0b4
TJB
10985 /* Look for "parameter value" pairs at the end
10986 of the arguments string. */
bbc13ae3 10987 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10988 {
10989 /* Skip whitespace at the end of the argument list. */
10990 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10991 tok--;
10992
10993 /* Find the beginning of the last token.
10994 This is the value of the parameter. */
10995 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10996 tok--;
10997 value_start = tok + 1;
10998
10999 /* Skip whitespace. */
11000 while (tok > arg && (*tok == ' ' || *tok == '\t'))
11001 tok--;
11002
11003 end_tok = tok;
11004
11005 /* Find the beginning of the second to last token.
11006 This is the parameter itself. */
11007 while (tok > arg && (*tok != ' ' && *tok != '\t'))
11008 tok--;
11009 tok++;
11010 toklen = end_tok - tok + 1;
11011
61012eef 11012 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 11013 {
5d5658a1 11014 struct thread_info *thr;
9c06b0b4
TJB
11015 /* At this point we've found a "thread" token, which means
11016 the user is trying to set a watchpoint that triggers
11017 only in a specific thread. */
5d5658a1 11018 const char *endp;
37e4754d 11019
9c06b0b4
TJB
11020 if (thread != -1)
11021 error(_("You can specify only one thread."));
37e4754d 11022
9c06b0b4 11023 /* Extract the thread ID from the next token. */
5d5658a1 11024 thr = parse_thread_id (value_start, &endp);
37e4754d 11025
5d5658a1 11026 /* Check if the user provided a valid thread ID. */
9c06b0b4 11027 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 11028 invalid_thread_id_error (value_start);
9c06b0b4 11029
5d5658a1 11030 thread = thr->global_num;
9c06b0b4 11031 }
61012eef 11032 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
11033 {
11034 /* We've found a "mask" token, which means the user wants to
11035 create a hardware watchpoint that is going to have the mask
11036 facility. */
11037 struct value *mask_value, *mark;
37e4754d 11038
9c06b0b4
TJB
11039 if (use_mask)
11040 error(_("You can specify only one mask."));
37e4754d 11041
9c06b0b4 11042 use_mask = just_location = 1;
37e4754d 11043
9c06b0b4
TJB
11044 mark = value_mark ();
11045 mask_value = parse_to_comma_and_eval (&value_start);
11046 mask = value_as_address (mask_value);
11047 value_free_to_mark (mark);
11048 }
11049 else
11050 /* We didn't recognize what we found. We should stop here. */
11051 break;
37e4754d 11052
9c06b0b4
TJB
11053 /* Truncate the string and get rid of the "parameter value" pair before
11054 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 11055 exp_end = tok;
9c06b0b4 11056 }
37e4754d 11057 }
bbc13ae3
KS
11058 else
11059 exp_end = arg;
37e4754d 11060
bbc13ae3
KS
11061 /* Parse the rest of the arguments. From here on out, everything
11062 is in terms of a newly allocated string instead of the original
11063 ARG. */
c906108c 11064 innermost_block = NULL;
bbc13ae3
KS
11065 expression = savestring (arg, exp_end - arg);
11066 back_to = make_cleanup (xfree, expression);
11067 exp_start = arg = expression;
4d01a485 11068 expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
c906108c 11069 exp_end = arg;
fa8a61dc
TT
11070 /* Remove trailing whitespace from the expression before saving it.
11071 This makes the eventual display of the expression string a bit
11072 prettier. */
11073 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11074 --exp_end;
11075
65d79d4b 11076 /* Checking if the expression is not constant. */
4d01a485 11077 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
11078 {
11079 int len;
11080
11081 len = exp_end - exp_start;
11082 while (len > 0 && isspace (exp_start[len - 1]))
11083 len--;
11084 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11085 }
11086
c906108c
SS
11087 exp_valid_block = innermost_block;
11088 mark = value_mark ();
4d01a485 11089 fetch_subexp_value (exp.get (), &pc, &val, &result, NULL, just_location);
06a64a0b 11090
bb9d5f81
PP
11091 if (val != NULL && just_location)
11092 {
11093 saved_bitpos = value_bitpos (val);
11094 saved_bitsize = value_bitsize (val);
11095 }
11096
06a64a0b
TT
11097 if (just_location)
11098 {
9c06b0b4
TJB
11099 int ret;
11100
06a64a0b 11101 exp_valid_block = NULL;
a1442452 11102 val = value_addr (result);
06a64a0b
TT
11103 release_value (val);
11104 value_free_to_mark (mark);
9c06b0b4
TJB
11105
11106 if (use_mask)
11107 {
11108 ret = target_masked_watch_num_registers (value_as_address (val),
11109 mask);
11110 if (ret == -1)
11111 error (_("This target does not support masked watchpoints."));
11112 else if (ret == -2)
11113 error (_("Invalid mask or memory region."));
11114 }
06a64a0b
TT
11115 }
11116 else if (val != NULL)
fa4727a6 11117 release_value (val);
c906108c 11118
bbc13ae3
KS
11119 tok = skip_spaces_const (arg);
11120 end_tok = skip_to_space_const (tok);
c906108c
SS
11121
11122 toklen = end_tok - tok;
11123 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11124 {
60e1c644 11125 innermost_block = NULL;
c906108c 11126 tok = cond_start = end_tok + 1;
4d01a485 11127 parse_exp_1 (&tok, 0, 0, 0);
60e1c644
PA
11128
11129 /* The watchpoint expression may not be local, but the condition
11130 may still be. E.g.: `watch global if local > 0'. */
11131 cond_exp_valid_block = innermost_block;
11132
c906108c
SS
11133 cond_end = tok;
11134 }
11135 if (*tok)
8a3fe4f8 11136 error (_("Junk at end of command."));
c906108c 11137
441d7c93
PA
11138 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
11139
11140 /* Save this because create_internal_breakpoint below invalidates
11141 'wp_frame'. */
11142 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
11143
11144 /* If the expression is "local", then set up a "watchpoint scope"
11145 breakpoint at the point where we've left the scope of the watchpoint
11146 expression. Create the scope breakpoint before the watchpoint, so
11147 that we will encounter it first in bpstat_stop_status. */
441d7c93 11148 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 11149 {
441d7c93
PA
11150 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
11151
11152 if (frame_id_p (caller_frame_id))
edb3359d 11153 {
441d7c93
PA
11154 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
11155 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
11156
edb3359d 11157 scope_breakpoint
441d7c93 11158 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
11159 bp_watchpoint_scope,
11160 &momentary_breakpoint_ops);
d983da9c 11161
441d7c93
PA
11162 /* create_internal_breakpoint could invalidate WP_FRAME. */
11163 wp_frame = NULL;
11164
edb3359d 11165 scope_breakpoint->enable_state = bp_enabled;
d983da9c 11166
edb3359d
DJ
11167 /* Automatically delete the breakpoint when it hits. */
11168 scope_breakpoint->disposition = disp_del;
d983da9c 11169
edb3359d 11170 /* Only break in the proper frame (help with recursion). */
441d7c93 11171 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 11172
edb3359d 11173 /* Set the address at which we will stop. */
441d7c93
PA
11174 scope_breakpoint->loc->gdbarch = caller_arch;
11175 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 11176 scope_breakpoint->loc->address
a6d9a66e
UW
11177 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11178 scope_breakpoint->loc->requested_address,
edb3359d
DJ
11179 scope_breakpoint->type);
11180 }
d983da9c
DJ
11181 }
11182
e8369a73
AB
11183 /* Now set up the breakpoint. We create all watchpoints as hardware
11184 watchpoints here even if hardware watchpoints are turned off, a call
11185 to update_watchpoint later in this function will cause the type to
11186 drop back to bp_watchpoint (software watchpoint) if required. */
11187
11188 if (accessflag == hw_read)
11189 bp_type = bp_read_watchpoint;
11190 else if (accessflag == hw_access)
11191 bp_type = bp_access_watchpoint;
11192 else
11193 bp_type = bp_hardware_watchpoint;
3a5c3e22 11194
4d01a485 11195 w = new watchpoint ();
c1fc2657 11196
348d480f 11197 if (use_mask)
c1fc2657 11198 init_raw_breakpoint_without_location (w, NULL, bp_type,
3a5c3e22 11199 &masked_watchpoint_breakpoint_ops);
348d480f 11200 else
c1fc2657 11201 init_raw_breakpoint_without_location (w, NULL, bp_type,
3a5c3e22 11202 &watchpoint_breakpoint_ops);
c1fc2657
SM
11203 w->thread = thread;
11204 w->disposition = disp_donttouch;
11205 w->pspace = current_program_space;
b22e99fd 11206 w->exp = std::move (exp);
3a5c3e22
PA
11207 w->exp_valid_block = exp_valid_block;
11208 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
11209 if (just_location)
11210 {
11211 struct type *t = value_type (val);
11212 CORE_ADDR addr = value_as_address (val);
06a64a0b 11213
43cc5389
TT
11214 w->exp_string_reparse
11215 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 11216
3a5c3e22 11217 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 11218 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
11219 }
11220 else
3a5c3e22 11221 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
11222
11223 if (use_mask)
11224 {
3a5c3e22 11225 w->hw_wp_mask = mask;
9c06b0b4
TJB
11226 }
11227 else
11228 {
3a5c3e22 11229 w->val = val;
bb9d5f81
PP
11230 w->val_bitpos = saved_bitpos;
11231 w->val_bitsize = saved_bitsize;
3a5c3e22 11232 w->val_valid = 1;
9c06b0b4 11233 }
77b06cd7 11234
c906108c 11235 if (cond_start)
c1fc2657 11236 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 11237 else
c1fc2657 11238 w->cond_string = 0;
c5aa993b 11239
441d7c93 11240 if (frame_id_p (watchpoint_frame))
f6bc2008 11241 {
441d7c93 11242 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 11243 w->watchpoint_thread = inferior_ptid;
f6bc2008 11244 }
c906108c 11245 else
f6bc2008 11246 {
3a5c3e22
PA
11247 w->watchpoint_frame = null_frame_id;
11248 w->watchpoint_thread = null_ptid;
f6bc2008 11249 }
c906108c 11250
d983da9c 11251 if (scope_breakpoint != NULL)
c906108c 11252 {
d983da9c
DJ
11253 /* The scope breakpoint is related to the watchpoint. We will
11254 need to act on them together. */
c1fc2657
SM
11255 w->related_breakpoint = scope_breakpoint;
11256 scope_breakpoint->related_breakpoint = w;
c906108c 11257 }
d983da9c 11258
06a64a0b
TT
11259 if (!just_location)
11260 value_free_to_mark (mark);
2d134ed3 11261
492d29ea 11262 TRY
a9634178
TJB
11263 {
11264 /* Finally update the new watchpoint. This creates the locations
11265 that should be inserted. */
3a5c3e22 11266 update_watchpoint (w, 1);
a9634178 11267 }
492d29ea 11268 CATCH (e, RETURN_MASK_ALL)
a9634178 11269 {
c1fc2657 11270 delete_breakpoint (w);
a9634178
TJB
11271 throw_exception (e);
11272 }
492d29ea 11273 END_CATCH
a9634178 11274
c1fc2657 11275 install_breakpoint (internal, w, 1);
bbc13ae3 11276 do_cleanups (back_to);
c906108c
SS
11277}
11278
e09342b5 11279/* Return count of debug registers needed to watch the given expression.
e09342b5 11280 If the watchpoint cannot be handled in hardware return zero. */
c906108c 11281
c906108c 11282static int
a9634178 11283can_use_hardware_watchpoint (struct value *v)
c906108c
SS
11284{
11285 int found_memory_cnt = 0;
2e70b7b9 11286 struct value *head = v;
c906108c
SS
11287
11288 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 11289 if (!can_use_hw_watchpoints)
c906108c 11290 return 0;
c5aa993b 11291
5c44784c
JM
11292 /* Make sure that the value of the expression depends only upon
11293 memory contents, and values computed from them within GDB. If we
11294 find any register references or function calls, we can't use a
11295 hardware watchpoint.
11296
11297 The idea here is that evaluating an expression generates a series
11298 of values, one holding the value of every subexpression. (The
11299 expression a*b+c has five subexpressions: a, b, a*b, c, and
11300 a*b+c.) GDB's values hold almost enough information to establish
11301 the criteria given above --- they identify memory lvalues,
11302 register lvalues, computed values, etcetera. So we can evaluate
11303 the expression, and then scan the chain of values that leaves
11304 behind to decide whether we can detect any possible change to the
11305 expression's final value using only hardware watchpoints.
11306
11307 However, I don't think that the values returned by inferior
11308 function calls are special in any way. So this function may not
11309 notice that an expression involving an inferior function call
11310 can't be watched with hardware watchpoints. FIXME. */
17cf0ecd 11311 for (; v; v = value_next (v))
c906108c 11312 {
5c44784c 11313 if (VALUE_LVAL (v) == lval_memory)
c906108c 11314 {
8464be76
DJ
11315 if (v != head && value_lazy (v))
11316 /* A lazy memory lvalue in the chain is one that GDB never
11317 needed to fetch; we either just used its address (e.g.,
11318 `a' in `a.b') or we never needed it at all (e.g., `a'
11319 in `a,b'). This doesn't apply to HEAD; if that is
11320 lazy then it was not readable, but watch it anyway. */
5c44784c 11321 ;
53a5351d 11322 else
5c44784c
JM
11323 {
11324 /* Ahh, memory we actually used! Check if we can cover
11325 it with hardware watchpoints. */
df407dfe 11326 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
11327
11328 /* We only watch structs and arrays if user asked for it
11329 explicitly, never if they just happen to appear in a
11330 middle of some value chain. */
11331 if (v == head
11332 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11333 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11334 {
42ae5230 11335 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
11336 int len;
11337 int num_regs;
11338
a9634178 11339 len = (target_exact_watchpoints
e09342b5
TJB
11340 && is_scalar_type_recursive (vtype))?
11341 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 11342
e09342b5
TJB
11343 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11344 if (!num_regs)
2e70b7b9
MS
11345 return 0;
11346 else
e09342b5 11347 found_memory_cnt += num_regs;
2e70b7b9 11348 }
5c44784c 11349 }
c5aa993b 11350 }
5086187c
AC
11351 else if (VALUE_LVAL (v) != not_lval
11352 && deprecated_value_modifiable (v) == 0)
38b6c3b3 11353 return 0; /* These are values from the history (e.g., $1). */
5086187c 11354 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 11355 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
11356 }
11357
11358 /* The expression itself looks suitable for using a hardware
11359 watchpoint, but give the target machine a chance to reject it. */
11360 return found_memory_cnt;
11361}
11362
8b93c638 11363void
84f4c1fe 11364watch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11365{
84f4c1fe 11366 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
11367}
11368
06a64a0b
TT
11369/* A helper function that looks for the "-location" argument and then
11370 calls watch_command_1. */
11371
11372static void
11373watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11374{
11375 int just_location = 0;
11376
11377 if (arg
11378 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11379 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11380 {
e9cafbcc 11381 arg = skip_spaces (arg);
06a64a0b
TT
11382 just_location = 1;
11383 }
11384
84f4c1fe 11385 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 11386}
8926118c 11387
c5aa993b 11388static void
fba45db2 11389watch_command (char *arg, int from_tty)
c906108c 11390{
06a64a0b 11391 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
11392}
11393
8b93c638 11394void
84f4c1fe 11395rwatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11396{
84f4c1fe 11397 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 11398}
8926118c 11399
c5aa993b 11400static void
fba45db2 11401rwatch_command (char *arg, int from_tty)
c906108c 11402{
06a64a0b 11403 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
11404}
11405
8b93c638 11406void
84f4c1fe 11407awatch_command_wrapper (char *arg, int from_tty, int internal)
8b93c638 11408{
84f4c1fe 11409 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 11410}
8926118c 11411
c5aa993b 11412static void
fba45db2 11413awatch_command (char *arg, int from_tty)
c906108c 11414{
06a64a0b 11415 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 11416}
c906108c 11417\f
c5aa993b 11418
cfc31633
PA
11419/* Data for the FSM that manages the until(location)/advance commands
11420 in infcmd.c. Here because it uses the mechanisms of
11421 breakpoints. */
c906108c 11422
cfc31633 11423struct until_break_fsm
bfec99b2 11424{
cfc31633
PA
11425 /* The base class. */
11426 struct thread_fsm thread_fsm;
11427
11428 /* The thread that as current when the command was executed. */
11429 int thread;
11430
11431 /* The breakpoint set at the destination location. */
11432 struct breakpoint *location_breakpoint;
11433
11434 /* Breakpoint set at the return address in the caller frame. May be
11435 NULL. */
11436 struct breakpoint *caller_breakpoint;
bfec99b2
PA
11437};
11438
8980e177
PA
11439static void until_break_fsm_clean_up (struct thread_fsm *self,
11440 struct thread_info *thread);
11441static int until_break_fsm_should_stop (struct thread_fsm *self,
11442 struct thread_info *thread);
cfc31633
PA
11443static enum async_reply_reason
11444 until_break_fsm_async_reply_reason (struct thread_fsm *self);
11445
11446/* until_break_fsm's vtable. */
11447
11448static struct thread_fsm_ops until_break_fsm_ops =
11449{
11450 NULL, /* dtor */
11451 until_break_fsm_clean_up,
11452 until_break_fsm_should_stop,
11453 NULL, /* return_value */
11454 until_break_fsm_async_reply_reason,
11455};
11456
11457/* Allocate a new until_break_command_fsm. */
11458
11459static struct until_break_fsm *
8980e177 11460new_until_break_fsm (struct interp *cmd_interp, int thread,
cfc31633
PA
11461 struct breakpoint *location_breakpoint,
11462 struct breakpoint *caller_breakpoint)
11463{
11464 struct until_break_fsm *sm;
11465
11466 sm = XCNEW (struct until_break_fsm);
8980e177 11467 thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
cfc31633
PA
11468
11469 sm->thread = thread;
11470 sm->location_breakpoint = location_breakpoint;
11471 sm->caller_breakpoint = caller_breakpoint;
11472
11473 return sm;
11474}
11475
11476/* Implementation of the 'should_stop' FSM method for the
11477 until(location)/advance commands. */
11478
11479static int
8980e177
PA
11480until_break_fsm_should_stop (struct thread_fsm *self,
11481 struct thread_info *tp)
cfc31633
PA
11482{
11483 struct until_break_fsm *sm = (struct until_break_fsm *) self;
cfc31633
PA
11484
11485 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11486 sm->location_breakpoint) != NULL
11487 || (sm->caller_breakpoint != NULL
11488 && bpstat_find_breakpoint (tp->control.stop_bpstat,
11489 sm->caller_breakpoint) != NULL))
11490 thread_fsm_set_finished (self);
11491
11492 return 1;
11493}
11494
11495/* Implementation of the 'clean_up' FSM method for the
11496 until(location)/advance commands. */
11497
c2c6d25f 11498static void
8980e177
PA
11499until_break_fsm_clean_up (struct thread_fsm *self,
11500 struct thread_info *thread)
43ff13b4 11501{
cfc31633 11502 struct until_break_fsm *sm = (struct until_break_fsm *) self;
bfec99b2 11503
cfc31633
PA
11504 /* Clean up our temporary breakpoints. */
11505 if (sm->location_breakpoint != NULL)
11506 {
11507 delete_breakpoint (sm->location_breakpoint);
11508 sm->location_breakpoint = NULL;
11509 }
11510 if (sm->caller_breakpoint != NULL)
11511 {
11512 delete_breakpoint (sm->caller_breakpoint);
11513 sm->caller_breakpoint = NULL;
11514 }
11515 delete_longjmp_breakpoint (sm->thread);
11516}
11517
11518/* Implementation of the 'async_reply_reason' FSM method for the
11519 until(location)/advance commands. */
11520
11521static enum async_reply_reason
11522until_break_fsm_async_reply_reason (struct thread_fsm *self)
11523{
11524 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11525}
11526
c906108c 11527void
ae66c1fc 11528until_break_command (char *arg, int from_tty, int anywhere)
c906108c
SS
11529{
11530 struct symtabs_and_lines sals;
11531 struct symtab_and_line sal;
8556afb4
PA
11532 struct frame_info *frame;
11533 struct gdbarch *frame_gdbarch;
11534 struct frame_id stack_frame_id;
11535 struct frame_id caller_frame_id;
cfc31633
PA
11536 struct breakpoint *location_breakpoint;
11537 struct breakpoint *caller_breakpoint = NULL;
ffc2605c 11538 struct cleanup *old_chain;
186c406b
TT
11539 int thread;
11540 struct thread_info *tp;
cfc31633 11541 struct until_break_fsm *sm;
c906108c 11542
70509625 11543 clear_proceed_status (0);
c906108c
SS
11544
11545 /* Set a breakpoint where the user wants it and at return from
4a64f543 11546 this function. */
c5aa993b 11547
ffc2605c 11548 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11549
1bfeeb0f 11550 if (last_displayed_sal_is_valid ())
ffc2605c 11551 sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
1bfeeb0f 11552 get_last_displayed_symtab (),
f8eba3c6 11553 get_last_displayed_line ());
c906108c 11554 else
ffc2605c 11555 sals = decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
c2f4122d 11556 NULL, (struct symtab *) NULL, 0);
c5aa993b 11557
c906108c 11558 if (sals.nelts != 1)
8a3fe4f8 11559 error (_("Couldn't get information on specified line."));
c5aa993b 11560
c906108c 11561 sal = sals.sals[0];
4a64f543 11562 xfree (sals.sals); /* malloc'd, so freed. */
c5aa993b 11563
c906108c 11564 if (*arg)
8a3fe4f8 11565 error (_("Junk at end of arguments."));
c5aa993b 11566
c906108c 11567 resolve_sal_pc (&sal);
c5aa993b 11568
186c406b 11569 tp = inferior_thread ();
5d5658a1 11570 thread = tp->global_num;
186c406b 11571
883bc8d1
PA
11572 old_chain = make_cleanup (null_cleanup, NULL);
11573
8556afb4
PA
11574 /* Note linespec handling above invalidates the frame chain.
11575 Installing a breakpoint also invalidates the frame chain (as it
11576 may need to switch threads), so do any frame handling before
11577 that. */
11578
11579 frame = get_selected_frame (NULL);
11580 frame_gdbarch = get_frame_arch (frame);
11581 stack_frame_id = get_stack_frame_id (frame);
11582 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11583
ae66c1fc
EZ
11584 /* Keep within the current frame, or in frames called by the current
11585 one. */
edb3359d 11586
883bc8d1 11587 if (frame_id_p (caller_frame_id))
c906108c 11588 {
883bc8d1 11589 struct symtab_and_line sal2;
cfc31633 11590 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11591
11592 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11593 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11594 caller_gdbarch = frame_unwind_caller_arch (frame);
11595 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11596 sal2,
11597 caller_frame_id,
11598 bp_until);
11599 make_cleanup_delete_breakpoint (caller_breakpoint);
186c406b 11600
883bc8d1 11601 set_longjmp_breakpoint (tp, caller_frame_id);
186c406b 11602 make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
c906108c 11603 }
c5aa993b 11604
c70a6932
JK
11605 /* set_momentary_breakpoint could invalidate FRAME. */
11606 frame = NULL;
11607
883bc8d1
PA
11608 if (anywhere)
11609 /* If the user told us to continue until a specified location,
11610 we don't specify a frame at which we need to stop. */
cfc31633
PA
11611 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11612 null_frame_id, bp_until);
883bc8d1
PA
11613 else
11614 /* Otherwise, specify the selected frame, because we want to stop
11615 only at the very same frame. */
cfc31633
PA
11616 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11617 stack_frame_id, bp_until);
11618 make_cleanup_delete_breakpoint (location_breakpoint);
883bc8d1 11619
8980e177 11620 sm = new_until_break_fsm (command_interp (), tp->global_num,
5d5658a1 11621 location_breakpoint, caller_breakpoint);
cfc31633 11622 tp->thread_fsm = &sm->thread_fsm;
f107f563 11623
cfc31633 11624 discard_cleanups (old_chain);
f107f563 11625
cfc31633 11626 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11627}
ae66c1fc 11628
c906108c
SS
11629/* This function attempts to parse an optional "if <cond>" clause
11630 from the arg string. If one is not found, it returns NULL.
c5aa993b 11631
c906108c
SS
11632 Else, it returns a pointer to the condition string. (It does not
11633 attempt to evaluate the string against a particular block.) And,
11634 it updates arg to point to the first character following the parsed
4a64f543 11635 if clause in the arg string. */
53a5351d 11636
63160a43
PA
11637const char *
11638ep_parse_optional_if_clause (const char **arg)
c906108c 11639{
63160a43 11640 const char *cond_string;
c5aa993b
JM
11641
11642 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11643 return NULL;
c5aa993b 11644
4a64f543 11645 /* Skip the "if" keyword. */
c906108c 11646 (*arg) += 2;
c5aa993b 11647
c906108c 11648 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11649 condition string. */
63160a43 11650 *arg = skip_spaces_const (*arg);
c906108c 11651 cond_string = *arg;
c5aa993b 11652
4a64f543
MS
11653 /* Assume that the condition occupies the remainder of the arg
11654 string. */
c906108c 11655 (*arg) += strlen (cond_string);
c5aa993b 11656
c906108c
SS
11657 return cond_string;
11658}
c5aa993b 11659
c906108c
SS
11660/* Commands to deal with catching events, such as signals, exceptions,
11661 process start/exit, etc. */
c5aa993b
JM
11662
11663typedef enum
11664{
44feb3ce
TT
11665 catch_fork_temporary, catch_vfork_temporary,
11666 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11667}
11668catch_fork_kind;
11669
c906108c 11670static void
63160a43 11671catch_fork_command_1 (char *arg_entry, int from_tty,
cc59ec59 11672 struct cmd_list_element *command)
c906108c 11673{
63160a43 11674 const char *arg = arg_entry;
a6d9a66e 11675 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11676 const char *cond_string = NULL;
44feb3ce
TT
11677 catch_fork_kind fork_kind;
11678 int tempflag;
11679
11680 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11681 tempflag = (fork_kind == catch_fork_temporary
11682 || fork_kind == catch_vfork_temporary);
c5aa993b 11683
44feb3ce
TT
11684 if (!arg)
11685 arg = "";
63160a43 11686 arg = skip_spaces_const (arg);
c5aa993b 11687
c906108c 11688 /* The allowed syntax is:
c5aa993b
JM
11689 catch [v]fork
11690 catch [v]fork if <cond>
11691
4a64f543 11692 First, check if there's an if clause. */
c906108c 11693 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11694
c906108c 11695 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11696 error (_("Junk at end of arguments."));
c5aa993b 11697
c906108c 11698 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11699 and enable reporting of such events. */
c5aa993b
JM
11700 switch (fork_kind)
11701 {
44feb3ce
TT
11702 case catch_fork_temporary:
11703 case catch_fork_permanent:
a6d9a66e 11704 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11705 &catch_fork_breakpoint_ops);
c906108c 11706 break;
44feb3ce
TT
11707 case catch_vfork_temporary:
11708 case catch_vfork_permanent:
a6d9a66e 11709 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11710 &catch_vfork_breakpoint_ops);
c906108c 11711 break;
c5aa993b 11712 default:
8a3fe4f8 11713 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11714 break;
c5aa993b 11715 }
c906108c
SS
11716}
11717
11718static void
63160a43 11719catch_exec_command_1 (char *arg_entry, int from_tty,
cc59ec59 11720 struct cmd_list_element *command)
c906108c 11721{
63160a43 11722 const char *arg = arg_entry;
b4d90040 11723 struct exec_catchpoint *c;
a6d9a66e 11724 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11725 int tempflag;
63160a43 11726 const char *cond_string = NULL;
c906108c 11727
44feb3ce
TT
11728 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11729
11730 if (!arg)
11731 arg = "";
63160a43 11732 arg = skip_spaces_const (arg);
c906108c
SS
11733
11734 /* The allowed syntax is:
c5aa993b
JM
11735 catch exec
11736 catch exec if <cond>
c906108c 11737
4a64f543 11738 First, check if there's an if clause. */
c906108c
SS
11739 cond_string = ep_parse_optional_if_clause (&arg);
11740
11741 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11742 error (_("Junk at end of arguments."));
c906108c 11743
4d01a485 11744 c = new exec_catchpoint ();
c1fc2657 11745 init_catchpoint (c, gdbarch, tempflag, cond_string,
b4d90040
PA
11746 &catch_exec_breakpoint_ops);
11747 c->exec_pathname = NULL;
11748
c1fc2657 11749 install_breakpoint (0, c, 1);
c906108c 11750}
c5aa993b 11751
9ac4176b 11752void
28010a5d
PA
11753init_ada_exception_breakpoint (struct breakpoint *b,
11754 struct gdbarch *gdbarch,
11755 struct symtab_and_line sal,
11756 char *addr_string,
c0a91b2b 11757 const struct breakpoint_ops *ops,
28010a5d 11758 int tempflag,
349774ef 11759 int enabled,
28010a5d 11760 int from_tty)
f7f9143b 11761{
f7f9143b
JB
11762 if (from_tty)
11763 {
5af949e3
UW
11764 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11765 if (!loc_gdbarch)
11766 loc_gdbarch = gdbarch;
11767
6c95b8df
PA
11768 describe_other_breakpoints (loc_gdbarch,
11769 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11770 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11771 version for exception catchpoints, because two catchpoints
11772 used for different exception names will use the same address.
11773 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11774 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11775 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11776 the user what type of catchpoint it is. The above is good
11777 enough for now, though. */
11778 }
11779
28010a5d 11780 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11781
349774ef 11782 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11783 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11784 b->location = string_to_event_location (&addr_string,
11785 language_def (language_ada));
f7f9143b 11786 b->language = language_ada;
f7f9143b
JB
11787}
11788
c906108c 11789static void
fba45db2 11790catch_command (char *arg, int from_tty)
c906108c 11791{
44feb3ce 11792 error (_("Catch requires an event name."));
c906108c
SS
11793}
11794\f
11795
11796static void
fba45db2 11797tcatch_command (char *arg, int from_tty)
c906108c 11798{
44feb3ce 11799 error (_("Catch requires an event name."));
c906108c
SS
11800}
11801
8a2c437b
TT
11802/* A qsort comparison function that sorts breakpoints in order. */
11803
11804static int
11805compare_breakpoints (const void *a, const void *b)
11806{
9a3c8263 11807 const breakpoint_p *ba = (const breakpoint_p *) a;
8a2c437b 11808 uintptr_t ua = (uintptr_t) *ba;
9a3c8263 11809 const breakpoint_p *bb = (const breakpoint_p *) b;
8a2c437b
TT
11810 uintptr_t ub = (uintptr_t) *bb;
11811
11812 if ((*ba)->number < (*bb)->number)
11813 return -1;
11814 else if ((*ba)->number > (*bb)->number)
11815 return 1;
11816
11817 /* Now sort by address, in case we see, e..g, two breakpoints with
11818 the number 0. */
11819 if (ua < ub)
11820 return -1;
94b0e70d 11821 return ua > ub ? 1 : 0;
8a2c437b
TT
11822}
11823
80f8a6eb 11824/* Delete breakpoints by address or line. */
c906108c
SS
11825
11826static void
fba45db2 11827clear_command (char *arg, int from_tty)
c906108c 11828{
8a2c437b 11829 struct breakpoint *b, *prev;
d6e956e5
VP
11830 VEC(breakpoint_p) *found = 0;
11831 int ix;
c906108c
SS
11832 int default_match;
11833 struct symtabs_and_lines sals;
11834 struct symtab_and_line sal;
c906108c 11835 int i;
8a2c437b 11836 struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
c906108c
SS
11837
11838 if (arg)
11839 {
39cf75f7
DE
11840 sals = decode_line_with_current_source (arg,
11841 (DECODE_LINE_FUNFIRSTLINE
11842 | DECODE_LINE_LIST_MODE));
cf4ded82 11843 make_cleanup (xfree, sals.sals);
c906108c
SS
11844 default_match = 0;
11845 }
11846 else
11847 {
8d749320 11848 sals.sals = XNEW (struct symtab_and_line);
80f8a6eb 11849 make_cleanup (xfree, sals.sals);
4a64f543 11850 init_sal (&sal); /* Initialize to zeroes. */
1bfeeb0f
JL
11851
11852 /* Set sal's line, symtab, pc, and pspace to the values
11853 corresponding to the last call to print_frame_info. If the
11854 codepoint is not valid, this will set all the fields to 0. */
11855 get_last_displayed_sal (&sal);
c906108c 11856 if (sal.symtab == 0)
8a3fe4f8 11857 error (_("No source file specified."));
c906108c
SS
11858
11859 sals.sals[0] = sal;
11860 sals.nelts = 1;
11861
11862 default_match = 1;
11863 }
11864
4a64f543
MS
11865 /* We don't call resolve_sal_pc here. That's not as bad as it
11866 seems, because all existing breakpoints typically have both
11867 file/line and pc set. So, if clear is given file/line, we can
11868 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11869
11870 We only support clearing given the address explicitly
11871 present in breakpoint table. Say, we've set breakpoint
4a64f543 11872 at file:line. There were several PC values for that file:line,
ed0616c6 11873 due to optimization, all in one block.
4a64f543
MS
11874
11875 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11876 PC corresponding to the same file:line, the breakpoint won't
11877 be cleared. We probably can still clear the breakpoint, but
11878 since the other PC value is never presented to user, user
11879 can only find it by guessing, and it does not seem important
11880 to support that. */
11881
4a64f543
MS
11882 /* For each line spec given, delete bps which correspond to it. Do
11883 it in two passes, solely to preserve the current behavior that
11884 from_tty is forced true if we delete more than one
11885 breakpoint. */
c906108c 11886
80f8a6eb 11887 found = NULL;
8a2c437b 11888 make_cleanup (VEC_cleanup (breakpoint_p), &found);
c906108c
SS
11889 for (i = 0; i < sals.nelts; i++)
11890 {
05cba821
JK
11891 const char *sal_fullname;
11892
c906108c 11893 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11894 If line given (pc == 0), clear all bpts on specified line.
11895 If defaulting, clear all bpts on default line
c906108c 11896 or at default pc.
c5aa993b
JM
11897
11898 defaulting sal.pc != 0 tests to do
11899
11900 0 1 pc
11901 1 1 pc _and_ line
11902 0 0 line
11903 1 0 <can't happen> */
c906108c
SS
11904
11905 sal = sals.sals[i];
05cba821
JK
11906 sal_fullname = (sal.symtab == NULL
11907 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11908
4a64f543 11909 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11910 ALL_BREAKPOINTS (b)
c5aa993b 11911 {
0d381245 11912 int match = 0;
4a64f543 11913 /* Are we going to delete b? */
cc60f2e3 11914 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11915 {
11916 struct bp_location *loc = b->loc;
11917 for (; loc; loc = loc->next)
11918 {
f8eba3c6
TT
11919 /* If the user specified file:line, don't allow a PC
11920 match. This matches historical gdb behavior. */
11921 int pc_match = (!sal.explicit_line
11922 && sal.pc
11923 && (loc->pspace == sal.pspace)
11924 && (loc->address == sal.pc)
11925 && (!section_is_overlay (loc->section)
11926 || loc->section == sal.section));
4aac40c8
TT
11927 int line_match = 0;
11928
11929 if ((default_match || sal.explicit_line)
2f202fde 11930 && loc->symtab != NULL
05cba821 11931 && sal_fullname != NULL
4aac40c8 11932 && sal.pspace == loc->pspace
05cba821
JK
11933 && loc->line_number == sal.line
11934 && filename_cmp (symtab_to_fullname (loc->symtab),
11935 sal_fullname) == 0)
11936 line_match = 1;
4aac40c8 11937
0d381245
VP
11938 if (pc_match || line_match)
11939 {
11940 match = 1;
11941 break;
11942 }
11943 }
11944 }
11945
11946 if (match)
d6e956e5 11947 VEC_safe_push(breakpoint_p, found, b);
c906108c 11948 }
80f8a6eb 11949 }
8a2c437b 11950
80f8a6eb 11951 /* Now go thru the 'found' chain and delete them. */
d6e956e5 11952 if (VEC_empty(breakpoint_p, found))
80f8a6eb
MS
11953 {
11954 if (arg)
8a3fe4f8 11955 error (_("No breakpoint at %s."), arg);
80f8a6eb 11956 else
8a3fe4f8 11957 error (_("No breakpoint at this line."));
80f8a6eb 11958 }
c906108c 11959
8a2c437b
TT
11960 /* Remove duplicates from the vec. */
11961 qsort (VEC_address (breakpoint_p, found),
11962 VEC_length (breakpoint_p, found),
11963 sizeof (breakpoint_p),
11964 compare_breakpoints);
11965 prev = VEC_index (breakpoint_p, found, 0);
11966 for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11967 {
11968 if (b == prev)
11969 {
11970 VEC_ordered_remove (breakpoint_p, found, ix);
11971 --ix;
11972 }
11973 }
11974
d6e956e5 11975 if (VEC_length(breakpoint_p, found) > 1)
4a64f543 11976 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11977 if (from_tty)
a3f17187 11978 {
d6e956e5 11979 if (VEC_length(breakpoint_p, found) == 1)
a3f17187
AC
11980 printf_unfiltered (_("Deleted breakpoint "));
11981 else
11982 printf_unfiltered (_("Deleted breakpoints "));
11983 }
d6e956e5
VP
11984
11985 for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
80f8a6eb 11986 {
c5aa993b 11987 if (from_tty)
d6e956e5
VP
11988 printf_unfiltered ("%d ", b->number);
11989 delete_breakpoint (b);
c906108c 11990 }
80f8a6eb
MS
11991 if (from_tty)
11992 putchar_unfiltered ('\n');
8a2c437b
TT
11993
11994 do_cleanups (cleanups);
c906108c
SS
11995}
11996\f
11997/* Delete breakpoint in BS if they are `delete' breakpoints and
11998 all breakpoints that are marked for deletion, whether hit or not.
11999 This is called after any breakpoint is hit, or after errors. */
12000
12001void
fba45db2 12002breakpoint_auto_delete (bpstat bs)
c906108c 12003{
35df4500 12004 struct breakpoint *b, *b_tmp;
c906108c
SS
12005
12006 for (; bs; bs = bs->next)
f431efe5
PA
12007 if (bs->breakpoint_at
12008 && bs->breakpoint_at->disposition == disp_del
c906108c 12009 && bs->stop)
f431efe5 12010 delete_breakpoint (bs->breakpoint_at);
c906108c 12011
35df4500 12012 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 12013 {
b5de0fa7 12014 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
12015 delete_breakpoint (b);
12016 }
c906108c
SS
12017}
12018
4a64f543
MS
12019/* A comparison function for bp_location AP and BP being interfaced to
12020 qsort. Sort elements primarily by their ADDRESS (no matter what
12021 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 12022 secondarily by ordering first permanent elements and
4a64f543 12023 terciarily just ensuring the array is sorted stable way despite
e5dd4106 12024 qsort being an unstable algorithm. */
876fa593
JK
12025
12026static int
f5336ca5 12027bp_locations_compare (const void *ap, const void *bp)
876fa593 12028{
9a3c8263
SM
12029 const struct bp_location *a = *(const struct bp_location **) ap;
12030 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
12031
12032 if (a->address != b->address)
12033 return (a->address > b->address) - (a->address < b->address);
12034
dea2aa5f
LM
12035 /* Sort locations at the same address by their pspace number, keeping
12036 locations of the same inferior (in a multi-inferior environment)
12037 grouped. */
12038
12039 if (a->pspace->num != b->pspace->num)
12040 return ((a->pspace->num > b->pspace->num)
12041 - (a->pspace->num < b->pspace->num));
12042
876fa593 12043 /* Sort permanent breakpoints first. */
1a853c52
PA
12044 if (a->permanent != b->permanent)
12045 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 12046
c56a97f9
JK
12047 /* Make the internal GDB representation stable across GDB runs
12048 where A and B memory inside GDB can differ. Breakpoint locations of
12049 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
12050
12051 if (a->owner->number != b->owner->number)
c56a97f9
JK
12052 return ((a->owner->number > b->owner->number)
12053 - (a->owner->number < b->owner->number));
876fa593
JK
12054
12055 return (a > b) - (a < b);
12056}
12057
f5336ca5
PA
12058/* Set bp_locations_placed_address_before_address_max and
12059 bp_locations_shadow_len_after_address_max according to the current
12060 content of the bp_locations array. */
f7545552
TT
12061
12062static void
f5336ca5 12063bp_locations_target_extensions_update (void)
f7545552 12064{
876fa593
JK
12065 struct bp_location *bl, **blp_tmp;
12066
f5336ca5
PA
12067 bp_locations_placed_address_before_address_max = 0;
12068 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
12069
12070 ALL_BP_LOCATIONS (bl, blp_tmp)
12071 {
12072 CORE_ADDR start, end, addr;
12073
12074 if (!bp_location_has_shadow (bl))
12075 continue;
12076
12077 start = bl->target_info.placed_address;
12078 end = start + bl->target_info.shadow_len;
12079
12080 gdb_assert (bl->address >= start);
12081 addr = bl->address - start;
f5336ca5
PA
12082 if (addr > bp_locations_placed_address_before_address_max)
12083 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
12084
12085 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
12086
12087 gdb_assert (bl->address < end);
12088 addr = end - bl->address;
f5336ca5
PA
12089 if (addr > bp_locations_shadow_len_after_address_max)
12090 bp_locations_shadow_len_after_address_max = addr;
876fa593 12091 }
f7545552
TT
12092}
12093
1e4d1764
YQ
12094/* Download tracepoint locations if they haven't been. */
12095
12096static void
12097download_tracepoint_locations (void)
12098{
7ed2c994 12099 struct breakpoint *b;
dd2e65cc 12100 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 12101
5ed8105e 12102 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 12103
7ed2c994 12104 ALL_TRACEPOINTS (b)
1e4d1764 12105 {
7ed2c994 12106 struct bp_location *bl;
1e4d1764 12107 struct tracepoint *t;
f2a8bc8a 12108 int bp_location_downloaded = 0;
1e4d1764 12109
7ed2c994 12110 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
12111 ? !may_insert_fast_tracepoints
12112 : !may_insert_tracepoints))
12113 continue;
12114
dd2e65cc
YQ
12115 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12116 {
12117 if (target_can_download_tracepoint ())
12118 can_download_tracepoint = TRIBOOL_TRUE;
12119 else
12120 can_download_tracepoint = TRIBOOL_FALSE;
12121 }
12122
12123 if (can_download_tracepoint == TRIBOOL_FALSE)
12124 break;
12125
7ed2c994
YQ
12126 for (bl = b->loc; bl; bl = bl->next)
12127 {
12128 /* In tracepoint, locations are _never_ duplicated, so
12129 should_be_inserted is equivalent to
12130 unduplicated_should_be_inserted. */
12131 if (!should_be_inserted (bl) || bl->inserted)
12132 continue;
1e4d1764 12133
7ed2c994 12134 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 12135
7ed2c994 12136 target_download_tracepoint (bl);
1e4d1764 12137
7ed2c994 12138 bl->inserted = 1;
f2a8bc8a 12139 bp_location_downloaded = 1;
7ed2c994
YQ
12140 }
12141 t = (struct tracepoint *) b;
12142 t->number_on_target = b->number;
f2a8bc8a
YQ
12143 if (bp_location_downloaded)
12144 observer_notify_breakpoint_modified (b);
1e4d1764 12145 }
1e4d1764
YQ
12146}
12147
934709f0
PW
12148/* Swap the insertion/duplication state between two locations. */
12149
12150static void
12151swap_insertion (struct bp_location *left, struct bp_location *right)
12152{
12153 const int left_inserted = left->inserted;
12154 const int left_duplicate = left->duplicate;
b775012e 12155 const int left_needs_update = left->needs_update;
934709f0
PW
12156 const struct bp_target_info left_target_info = left->target_info;
12157
1e4d1764
YQ
12158 /* Locations of tracepoints can never be duplicated. */
12159 if (is_tracepoint (left->owner))
12160 gdb_assert (!left->duplicate);
12161 if (is_tracepoint (right->owner))
12162 gdb_assert (!right->duplicate);
12163
934709f0
PW
12164 left->inserted = right->inserted;
12165 left->duplicate = right->duplicate;
b775012e 12166 left->needs_update = right->needs_update;
934709f0
PW
12167 left->target_info = right->target_info;
12168 right->inserted = left_inserted;
12169 right->duplicate = left_duplicate;
b775012e 12170 right->needs_update = left_needs_update;
934709f0
PW
12171 right->target_info = left_target_info;
12172}
12173
b775012e
LM
12174/* Force the re-insertion of the locations at ADDRESS. This is called
12175 once a new/deleted/modified duplicate location is found and we are evaluating
12176 conditions on the target's side. Such conditions need to be updated on
12177 the target. */
12178
12179static void
12180force_breakpoint_reinsertion (struct bp_location *bl)
12181{
12182 struct bp_location **locp = NULL, **loc2p;
12183 struct bp_location *loc;
12184 CORE_ADDR address = 0;
12185 int pspace_num;
12186
12187 address = bl->address;
12188 pspace_num = bl->pspace->num;
12189
12190 /* This is only meaningful if the target is
12191 evaluating conditions and if the user has
12192 opted for condition evaluation on the target's
12193 side. */
12194 if (gdb_evaluates_breakpoint_condition_p ()
12195 || !target_supports_evaluation_of_breakpoint_conditions ())
12196 return;
12197
12198 /* Flag all breakpoint locations with this address and
12199 the same program space as the location
12200 as "its condition has changed". We need to
12201 update the conditions on the target's side. */
12202 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12203 {
12204 loc = *loc2p;
12205
12206 if (!is_breakpoint (loc->owner)
12207 || pspace_num != loc->pspace->num)
12208 continue;
12209
12210 /* Flag the location appropriately. We use a different state to
12211 let everyone know that we already updated the set of locations
12212 with addr bl->address and program space bl->pspace. This is so
12213 we don't have to keep calling these functions just to mark locations
12214 that have already been marked. */
12215 loc->condition_changed = condition_updated;
12216
12217 /* Free the agent expression bytecode as well. We will compute
12218 it later on. */
833177a4 12219 loc->cond_bytecode.reset ();
b775012e
LM
12220 }
12221}
44702360
PA
12222/* Called whether new breakpoints are created, or existing breakpoints
12223 deleted, to update the global location list and recompute which
12224 locations are duplicate of which.
b775012e 12225
04086b45
PA
12226 The INSERT_MODE flag determines whether locations may not, may, or
12227 shall be inserted now. See 'enum ugll_insert_mode' for more
12228 info. */
b60e7edf 12229
0d381245 12230static void
44702360 12231update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 12232{
74960c60 12233 struct breakpoint *b;
876fa593 12234 struct bp_location **locp, *loc;
f7545552 12235 struct cleanup *cleanups;
b775012e
LM
12236 /* Last breakpoint location address that was marked for update. */
12237 CORE_ADDR last_addr = 0;
12238 /* Last breakpoint location program space that was marked for update. */
12239 int last_pspace_num = -1;
f7545552 12240
2d134ed3
PA
12241 /* Used in the duplicates detection below. When iterating over all
12242 bp_locations, points to the first bp_location of a given address.
12243 Breakpoints and watchpoints of different types are never
12244 duplicates of each other. Keep one pointer for each type of
12245 breakpoint/watchpoint, so we only need to loop over all locations
12246 once. */
12247 struct bp_location *bp_loc_first; /* breakpoint */
12248 struct bp_location *wp_loc_first; /* hardware watchpoint */
12249 struct bp_location *awp_loc_first; /* access watchpoint */
12250 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 12251
f5336ca5
PA
12252 /* Saved former bp_locations array which we compare against the newly
12253 built bp_locations from the current state of ALL_BREAKPOINTS. */
12254 struct bp_location **old_locations, **old_locp;
12255 unsigned old_locations_count;
876fa593 12256
f5336ca5
PA
12257 old_locations = bp_locations;
12258 old_locations_count = bp_locations_count;
12259 bp_locations = NULL;
12260 bp_locations_count = 0;
12261 cleanups = make_cleanup (xfree, old_locations);
0d381245 12262
74960c60 12263 ALL_BREAKPOINTS (b)
876fa593 12264 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 12265 bp_locations_count++;
876fa593 12266
f5336ca5
PA
12267 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
12268 locp = bp_locations;
876fa593
JK
12269 ALL_BREAKPOINTS (b)
12270 for (loc = b->loc; loc; loc = loc->next)
12271 *locp++ = loc;
f5336ca5
PA
12272 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
12273 bp_locations_compare);
876fa593 12274
f5336ca5 12275 bp_locations_target_extensions_update ();
74960c60 12276
4a64f543
MS
12277 /* Identify bp_location instances that are no longer present in the
12278 new list, and therefore should be freed. Note that it's not
12279 necessary that those locations should be removed from inferior --
12280 if there's another location at the same address (previously
12281 marked as duplicate), we don't need to remove/insert the
12282 location.
876fa593 12283
4a64f543
MS
12284 LOCP is kept in sync with OLD_LOCP, each pointing to the current
12285 and former bp_location array state respectively. */
876fa593 12286
f5336ca5
PA
12287 locp = bp_locations;
12288 for (old_locp = old_locations;
12289 old_locp < old_locations + old_locations_count;
876fa593 12290 old_locp++)
74960c60 12291 {
876fa593 12292 struct bp_location *old_loc = *old_locp;
c7d46a38 12293 struct bp_location **loc2p;
876fa593 12294
e5dd4106 12295 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 12296 not, we have to free it. */
c7d46a38 12297 int found_object = 0;
20874c92
VP
12298 /* Tells if the location should remain inserted in the target. */
12299 int keep_in_target = 0;
12300 int removed = 0;
876fa593 12301
4a64f543
MS
12302 /* Skip LOCP entries which will definitely never be needed.
12303 Stop either at or being the one matching OLD_LOC. */
f5336ca5 12304 while (locp < bp_locations + bp_locations_count
c7d46a38 12305 && (*locp)->address < old_loc->address)
876fa593 12306 locp++;
c7d46a38
PA
12307
12308 for (loc2p = locp;
f5336ca5 12309 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
12310 && (*loc2p)->address == old_loc->address);
12311 loc2p++)
12312 {
b775012e
LM
12313 /* Check if this is a new/duplicated location or a duplicated
12314 location that had its condition modified. If so, we want to send
12315 its condition to the target if evaluation of conditions is taking
12316 place there. */
12317 if ((*loc2p)->condition_changed == condition_modified
12318 && (last_addr != old_loc->address
12319 || last_pspace_num != old_loc->pspace->num))
c7d46a38 12320 {
b775012e
LM
12321 force_breakpoint_reinsertion (*loc2p);
12322 last_pspace_num = old_loc->pspace->num;
c7d46a38 12323 }
b775012e
LM
12324
12325 if (*loc2p == old_loc)
12326 found_object = 1;
c7d46a38 12327 }
74960c60 12328
b775012e
LM
12329 /* We have already handled this address, update it so that we don't
12330 have to go through updates again. */
12331 last_addr = old_loc->address;
12332
12333 /* Target-side condition evaluation: Handle deleted locations. */
12334 if (!found_object)
12335 force_breakpoint_reinsertion (old_loc);
12336
4a64f543
MS
12337 /* If this location is no longer present, and inserted, look if
12338 there's maybe a new location at the same address. If so,
12339 mark that one inserted, and don't remove this one. This is
12340 needed so that we don't have a time window where a breakpoint
12341 at certain location is not inserted. */
74960c60 12342
876fa593 12343 if (old_loc->inserted)
0d381245 12344 {
4a64f543
MS
12345 /* If the location is inserted now, we might have to remove
12346 it. */
74960c60 12347
876fa593 12348 if (found_object && should_be_inserted (old_loc))
74960c60 12349 {
4a64f543
MS
12350 /* The location is still present in the location list,
12351 and still should be inserted. Don't do anything. */
20874c92 12352 keep_in_target = 1;
74960c60
VP
12353 }
12354 else
12355 {
b775012e
LM
12356 /* This location still exists, but it won't be kept in the
12357 target since it may have been disabled. We proceed to
12358 remove its target-side condition. */
12359
4a64f543
MS
12360 /* The location is either no longer present, or got
12361 disabled. See if there's another location at the
12362 same address, in which case we don't need to remove
12363 this one from the target. */
876fa593 12364
2bdf28a0 12365 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
12366 if (breakpoint_address_is_meaningful (old_loc->owner))
12367 {
876fa593 12368 for (loc2p = locp;
f5336ca5 12369 (loc2p < bp_locations + bp_locations_count
c7d46a38 12370 && (*loc2p)->address == old_loc->address);
876fa593
JK
12371 loc2p++)
12372 {
12373 struct bp_location *loc2 = *loc2p;
12374
2d134ed3 12375 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 12376 {
85d721b8
PA
12377 /* Read watchpoint locations are switched to
12378 access watchpoints, if the former are not
12379 supported, but the latter are. */
12380 if (is_hardware_watchpoint (old_loc->owner))
12381 {
12382 gdb_assert (is_hardware_watchpoint (loc2->owner));
12383 loc2->watchpoint_type = old_loc->watchpoint_type;
12384 }
12385
934709f0
PW
12386 /* loc2 is a duplicated location. We need to check
12387 if it should be inserted in case it will be
12388 unduplicated. */
12389 if (loc2 != old_loc
12390 && unduplicated_should_be_inserted (loc2))
c7d46a38 12391 {
934709f0 12392 swap_insertion (old_loc, loc2);
c7d46a38
PA
12393 keep_in_target = 1;
12394 break;
12395 }
876fa593
JK
12396 }
12397 }
12398 }
74960c60
VP
12399 }
12400
20874c92
VP
12401 if (!keep_in_target)
12402 {
834c0d03 12403 if (remove_breakpoint (old_loc))
20874c92 12404 {
4a64f543
MS
12405 /* This is just about all we can do. We could keep
12406 this location on the global list, and try to
12407 remove it next time, but there's no particular
12408 reason why we will succeed next time.
20874c92 12409
4a64f543
MS
12410 Note that at this point, old_loc->owner is still
12411 valid, as delete_breakpoint frees the breakpoint
12412 only after calling us. */
3e43a32a
MS
12413 printf_filtered (_("warning: Error removing "
12414 "breakpoint %d\n"),
876fa593 12415 old_loc->owner->number);
20874c92
VP
12416 }
12417 removed = 1;
12418 }
0d381245 12419 }
74960c60
VP
12420
12421 if (!found_object)
1c5cfe86 12422 {
fbea99ea 12423 if (removed && target_is_non_stop_p ()
1cf4d951 12424 && need_moribund_for_location_type (old_loc))
20874c92 12425 {
db82e815
PA
12426 /* This location was removed from the target. In
12427 non-stop mode, a race condition is possible where
12428 we've removed a breakpoint, but stop events for that
12429 breakpoint are already queued and will arrive later.
12430 We apply an heuristic to be able to distinguish such
12431 SIGTRAPs from other random SIGTRAPs: we keep this
12432 breakpoint location for a bit, and will retire it
12433 after we see some number of events. The theory here
12434 is that reporting of events should, "on the average",
12435 be fair, so after a while we'll see events from all
12436 threads that have anything of interest, and no longer
12437 need to keep this breakpoint location around. We
12438 don't hold locations forever so to reduce chances of
12439 mistaking a non-breakpoint SIGTRAP for a breakpoint
12440 SIGTRAP.
12441
12442 The heuristic failing can be disastrous on
12443 decr_pc_after_break targets.
12444
12445 On decr_pc_after_break targets, like e.g., x86-linux,
12446 if we fail to recognize a late breakpoint SIGTRAP,
12447 because events_till_retirement has reached 0 too
12448 soon, we'll fail to do the PC adjustment, and report
12449 a random SIGTRAP to the user. When the user resumes
12450 the inferior, it will most likely immediately crash
2dec564e 12451 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
12452 corrupted, because of being resumed e.g., in the
12453 middle of a multi-byte instruction, or skipped a
12454 one-byte instruction. This was actually seen happen
12455 on native x86-linux, and should be less rare on
12456 targets that do not support new thread events, like
12457 remote, due to the heuristic depending on
12458 thread_count.
12459
12460 Mistaking a random SIGTRAP for a breakpoint trap
12461 causes similar symptoms (PC adjustment applied when
12462 it shouldn't), but then again, playing with SIGTRAPs
12463 behind the debugger's back is asking for trouble.
12464
12465 Since hardware watchpoint traps are always
12466 distinguishable from other traps, so we don't need to
12467 apply keep hardware watchpoint moribund locations
12468 around. We simply always ignore hardware watchpoint
12469 traps we can no longer explain. */
12470
876fa593
JK
12471 old_loc->events_till_retirement = 3 * (thread_count () + 1);
12472 old_loc->owner = NULL;
20874c92 12473
876fa593 12474 VEC_safe_push (bp_location_p, moribund_locations, old_loc);
1c5cfe86
PA
12475 }
12476 else
f431efe5
PA
12477 {
12478 old_loc->owner = NULL;
12479 decref_bp_location (&old_loc);
12480 }
20874c92 12481 }
74960c60 12482 }
1c5cfe86 12483
348d480f
PA
12484 /* Rescan breakpoints at the same address and section, marking the
12485 first one as "first" and any others as "duplicates". This is so
12486 that the bpt instruction is only inserted once. If we have a
12487 permanent breakpoint at the same place as BPT, make that one the
12488 official one, and the rest as duplicates. Permanent breakpoints
12489 are sorted first for the same address.
12490
12491 Do the same for hardware watchpoints, but also considering the
12492 watchpoint's type (regular/access/read) and length. */
12493
12494 bp_loc_first = NULL;
12495 wp_loc_first = NULL;
12496 awp_loc_first = NULL;
12497 rwp_loc_first = NULL;
12498 ALL_BP_LOCATIONS (loc, locp)
12499 {
12500 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12501 non-NULL. */
348d480f 12502 struct bp_location **loc_first_p;
d3fbdd86 12503 b = loc->owner;
348d480f 12504
6f380991 12505 if (!unduplicated_should_be_inserted (loc)
348d480f 12506 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
12507 /* Don't detect duplicate for tracepoint locations because they are
12508 never duplicated. See the comments in field `duplicate' of
12509 `struct bp_location'. */
348d480f 12510 || is_tracepoint (b))
b775012e
LM
12511 {
12512 /* Clear the condition modification flag. */
12513 loc->condition_changed = condition_unchanged;
12514 continue;
12515 }
348d480f 12516
348d480f
PA
12517 if (b->type == bp_hardware_watchpoint)
12518 loc_first_p = &wp_loc_first;
12519 else if (b->type == bp_read_watchpoint)
12520 loc_first_p = &rwp_loc_first;
12521 else if (b->type == bp_access_watchpoint)
12522 loc_first_p = &awp_loc_first;
12523 else
12524 loc_first_p = &bp_loc_first;
12525
12526 if (*loc_first_p == NULL
12527 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12528 || !breakpoint_locations_match (loc, *loc_first_p))
12529 {
12530 *loc_first_p = loc;
12531 loc->duplicate = 0;
b775012e
LM
12532
12533 if (is_breakpoint (loc->owner) && loc->condition_changed)
12534 {
12535 loc->needs_update = 1;
12536 /* Clear the condition modification flag. */
12537 loc->condition_changed = condition_unchanged;
12538 }
348d480f
PA
12539 continue;
12540 }
12541
934709f0
PW
12542
12543 /* This and the above ensure the invariant that the first location
12544 is not duplicated, and is the inserted one.
12545 All following are marked as duplicated, and are not inserted. */
12546 if (loc->inserted)
12547 swap_insertion (loc, *loc_first_p);
348d480f
PA
12548 loc->duplicate = 1;
12549
b775012e
LM
12550 /* Clear the condition modification flag. */
12551 loc->condition_changed = condition_unchanged;
348d480f
PA
12552 }
12553
a25a5a45 12554 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12555 {
04086b45 12556 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12557 insert_breakpoint_locations ();
12558 else
12559 {
44702360
PA
12560 /* Even though the caller told us to not insert new
12561 locations, we may still need to update conditions on the
12562 target's side of breakpoints that were already inserted
12563 if the target is evaluating breakpoint conditions. We
b775012e
LM
12564 only update conditions for locations that are marked
12565 "needs_update". */
12566 update_inserted_breakpoint_locations ();
12567 }
12568 }
348d480f 12569
04086b45 12570 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764
YQ
12571 download_tracepoint_locations ();
12572
348d480f
PA
12573 do_cleanups (cleanups);
12574}
12575
12576void
12577breakpoint_retire_moribund (void)
12578{
12579 struct bp_location *loc;
12580 int ix;
12581
12582 for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12583 if (--(loc->events_till_retirement) == 0)
12584 {
12585 decref_bp_location (&loc);
12586 VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12587 --ix;
12588 }
12589}
12590
12591static void
44702360 12592update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12593{
348d480f 12594
492d29ea
PA
12595 TRY
12596 {
12597 update_global_location_list (insert_mode);
12598 }
12599 CATCH (e, RETURN_MASK_ERROR)
12600 {
12601 }
12602 END_CATCH
348d480f
PA
12603}
12604
12605/* Clear BKP from a BPS. */
12606
12607static void
12608bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12609{
12610 bpstat bs;
12611
12612 for (bs = bps; bs; bs = bs->next)
12613 if (bs->breakpoint_at == bpt)
12614 {
12615 bs->breakpoint_at = NULL;
12616 bs->old_val = NULL;
12617 /* bs->commands will be freed later. */
12618 }
12619}
12620
12621/* Callback for iterate_over_threads. */
12622static int
12623bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12624{
9a3c8263 12625 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12626
12627 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12628 return 0;
12629}
12630
12631/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12632 callbacks. */
12633
12634static void
12635say_where (struct breakpoint *b)
12636{
12637 struct value_print_options opts;
12638
12639 get_user_print_options (&opts);
12640
12641 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12642 single string. */
12643 if (b->loc == NULL)
12644 {
f00aae0f
KS
12645 /* For pending locations, the output differs slightly based
12646 on b->extra_string. If this is non-NULL, it contains either
12647 a condition or dprintf arguments. */
12648 if (b->extra_string == NULL)
12649 {
12650 printf_filtered (_(" (%s) pending."),
d28cd78a 12651 event_location_to_string (b->location.get ()));
f00aae0f
KS
12652 }
12653 else if (b->type == bp_dprintf)
12654 {
12655 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12656 event_location_to_string (b->location.get ()),
f00aae0f
KS
12657 b->extra_string);
12658 }
12659 else
12660 {
12661 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12662 event_location_to_string (b->location.get ()),
f00aae0f
KS
12663 b->extra_string);
12664 }
348d480f
PA
12665 }
12666 else
12667 {
2f202fde 12668 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12669 {
12670 printf_filtered (" at ");
12671 fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12672 gdb_stdout);
12673 }
2f202fde 12674 if (b->loc->symtab != NULL)
f8eba3c6
TT
12675 {
12676 /* If there is a single location, we can print the location
12677 more nicely. */
12678 if (b->loc->next == NULL)
12679 printf_filtered (": file %s, line %d.",
05cba821
JK
12680 symtab_to_filename_for_display (b->loc->symtab),
12681 b->loc->line_number);
f8eba3c6
TT
12682 else
12683 /* This is not ideal, but each location may have a
12684 different file name, and this at least reflects the
12685 real situation somewhat. */
f00aae0f 12686 printf_filtered (": %s.",
d28cd78a 12687 event_location_to_string (b->location.get ()));
f8eba3c6 12688 }
348d480f
PA
12689
12690 if (b->loc->next)
12691 {
12692 struct bp_location *loc = b->loc;
12693 int n = 0;
12694 for (; loc; loc = loc->next)
12695 ++n;
12696 printf_filtered (" (%d locations)", n);
12697 }
12698 }
12699}
12700
348d480f
PA
12701/* Default bp_location_ops methods. */
12702
12703static void
12704bp_location_dtor (struct bp_location *self)
12705{
348d480f
PA
12706 xfree (self->function_name);
12707}
12708
12709static const struct bp_location_ops bp_location_ops =
12710{
12711 bp_location_dtor
12712};
12713
c1fc2657 12714/* Destructor for the breakpoint base class. */
348d480f 12715
c1fc2657 12716breakpoint::~breakpoint ()
348d480f 12717{
c1fc2657
SM
12718 decref_counted_command_line (&this->commands);
12719 xfree (this->cond_string);
12720 xfree (this->extra_string);
12721 xfree (this->filter);
348d480f
PA
12722}
12723
2060206e
PA
12724static struct bp_location *
12725base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12726{
5625a286 12727 return new bp_location (&bp_location_ops, self);
348d480f
PA
12728}
12729
2060206e
PA
12730static void
12731base_breakpoint_re_set (struct breakpoint *b)
12732{
12733 /* Nothing to re-set. */
12734}
12735
12736#define internal_error_pure_virtual_called() \
12737 gdb_assert_not_reached ("pure virtual function called")
12738
12739static int
12740base_breakpoint_insert_location (struct bp_location *bl)
12741{
12742 internal_error_pure_virtual_called ();
12743}
12744
12745static int
73971819
PA
12746base_breakpoint_remove_location (struct bp_location *bl,
12747 enum remove_bp_reason reason)
2060206e
PA
12748{
12749 internal_error_pure_virtual_called ();
12750}
12751
12752static int
12753base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12754 struct address_space *aspace,
09ac7c10
TT
12755 CORE_ADDR bp_addr,
12756 const struct target_waitstatus *ws)
2060206e
PA
12757{
12758 internal_error_pure_virtual_called ();
12759}
12760
12761static void
12762base_breakpoint_check_status (bpstat bs)
12763{
12764 /* Always stop. */
12765}
12766
12767/* A "works_in_software_mode" breakpoint_ops method that just internal
12768 errors. */
12769
12770static int
12771base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12772{
12773 internal_error_pure_virtual_called ();
12774}
12775
12776/* A "resources_needed" breakpoint_ops method that just internal
12777 errors. */
12778
12779static int
12780base_breakpoint_resources_needed (const struct bp_location *bl)
12781{
12782 internal_error_pure_virtual_called ();
12783}
12784
12785static enum print_stop_action
12786base_breakpoint_print_it (bpstat bs)
12787{
12788 internal_error_pure_virtual_called ();
12789}
12790
12791static void
12792base_breakpoint_print_one_detail (const struct breakpoint *self,
12793 struct ui_out *uiout)
12794{
12795 /* nothing */
12796}
12797
12798static void
12799base_breakpoint_print_mention (struct breakpoint *b)
12800{
12801 internal_error_pure_virtual_called ();
12802}
12803
12804static void
12805base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12806{
12807 internal_error_pure_virtual_called ();
12808}
12809
983af33b 12810static void
f00aae0f
KS
12811base_breakpoint_create_sals_from_location
12812 (const struct event_location *location,
12813 struct linespec_result *canonical,
12814 enum bptype type_wanted)
983af33b
SDJ
12815{
12816 internal_error_pure_virtual_called ();
12817}
12818
12819static void
12820base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12821 struct linespec_result *c,
e1e01040
PA
12822 gdb::unique_xmalloc_ptr<char> cond_string,
12823 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12824 enum bptype type_wanted,
12825 enum bpdisp disposition,
12826 int thread,
12827 int task, int ignore_count,
12828 const struct breakpoint_ops *o,
12829 int from_tty, int enabled,
44f238bb 12830 int internal, unsigned flags)
983af33b
SDJ
12831{
12832 internal_error_pure_virtual_called ();
12833}
12834
12835static void
f00aae0f
KS
12836base_breakpoint_decode_location (struct breakpoint *b,
12837 const struct event_location *location,
c2f4122d 12838 struct program_space *search_pspace,
983af33b
SDJ
12839 struct symtabs_and_lines *sals)
12840{
12841 internal_error_pure_virtual_called ();
12842}
12843
ab04a2af
TT
12844/* The default 'explains_signal' method. */
12845
47591c29 12846static int
427cd150 12847base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12848{
47591c29 12849 return 1;
ab04a2af
TT
12850}
12851
9d6e6e84
HZ
12852/* The default "after_condition_true" method. */
12853
12854static void
12855base_breakpoint_after_condition_true (struct bpstats *bs)
12856{
12857 /* Nothing to do. */
12858}
12859
ab04a2af 12860struct breakpoint_ops base_breakpoint_ops =
2060206e 12861{
2060206e
PA
12862 base_breakpoint_allocate_location,
12863 base_breakpoint_re_set,
12864 base_breakpoint_insert_location,
12865 base_breakpoint_remove_location,
12866 base_breakpoint_breakpoint_hit,
12867 base_breakpoint_check_status,
12868 base_breakpoint_resources_needed,
12869 base_breakpoint_works_in_software_mode,
12870 base_breakpoint_print_it,
12871 NULL,
12872 base_breakpoint_print_one_detail,
12873 base_breakpoint_print_mention,
983af33b 12874 base_breakpoint_print_recreate,
5f700d83 12875 base_breakpoint_create_sals_from_location,
983af33b 12876 base_breakpoint_create_breakpoints_sal,
5f700d83 12877 base_breakpoint_decode_location,
9d6e6e84
HZ
12878 base_breakpoint_explains_signal,
12879 base_breakpoint_after_condition_true,
2060206e
PA
12880};
12881
12882/* Default breakpoint_ops methods. */
12883
12884static void
348d480f
PA
12885bkpt_re_set (struct breakpoint *b)
12886{
06edf0c0 12887 /* FIXME: is this still reachable? */
9ef9e6a6 12888 if (breakpoint_event_location_empty_p (b))
06edf0c0 12889 {
f00aae0f 12890 /* Anything without a location can't be re-set. */
348d480f 12891 delete_breakpoint (b);
06edf0c0 12892 return;
348d480f 12893 }
06edf0c0
PA
12894
12895 breakpoint_re_set_default (b);
348d480f
PA
12896}
12897
2060206e 12898static int
348d480f
PA
12899bkpt_insert_location (struct bp_location *bl)
12900{
cd6c3b4f
YQ
12901 CORE_ADDR addr = bl->target_info.reqstd_address;
12902
579c6ad9 12903 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12904 bl->target_info.placed_address = addr;
12905
348d480f 12906 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12907 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12908 else
7c16b83e 12909 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12910}
12911
2060206e 12912static int
73971819 12913bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12914{
12915 if (bl->loc_type == bp_loc_hardware_breakpoint)
12916 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12917 else
73971819 12918 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12919}
12920
2060206e 12921static int
348d480f 12922bkpt_breakpoint_hit (const struct bp_location *bl,
09ac7c10
TT
12923 struct address_space *aspace, CORE_ADDR bp_addr,
12924 const struct target_waitstatus *ws)
348d480f 12925{
09ac7c10 12926 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12927 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12928 return 0;
12929
348d480f
PA
12930 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12931 aspace, bp_addr))
12932 return 0;
12933
12934 if (overlay_debugging /* unmapped overlay section */
12935 && section_is_overlay (bl->section)
12936 && !section_is_mapped (bl->section))
12937 return 0;
12938
12939 return 1;
12940}
12941
cd1608cc
PA
12942static int
12943dprintf_breakpoint_hit (const struct bp_location *bl,
12944 struct address_space *aspace, CORE_ADDR bp_addr,
12945 const struct target_waitstatus *ws)
12946{
12947 if (dprintf_style == dprintf_style_agent
12948 && target_can_run_breakpoint_commands ())
12949 {
12950 /* An agent-style dprintf never causes a stop. If we see a trap
12951 for this address it must be for a breakpoint that happens to
12952 be set at the same address. */
12953 return 0;
12954 }
12955
12956 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12957}
12958
2060206e 12959static int
348d480f
PA
12960bkpt_resources_needed (const struct bp_location *bl)
12961{
12962 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12963
12964 return 1;
12965}
12966
2060206e 12967static enum print_stop_action
348d480f
PA
12968bkpt_print_it (bpstat bs)
12969{
348d480f
PA
12970 struct breakpoint *b;
12971 const struct bp_location *bl;
001c8c33 12972 int bp_temp;
79a45e25 12973 struct ui_out *uiout = current_uiout;
348d480f
PA
12974
12975 gdb_assert (bs->bp_location_at != NULL);
12976
12977 bl = bs->bp_location_at;
12978 b = bs->breakpoint_at;
12979
001c8c33
PA
12980 bp_temp = b->disposition == disp_del;
12981 if (bl->address != bl->requested_address)
12982 breakpoint_adjustment_warning (bl->requested_address,
12983 bl->address,
12984 b->number, 1);
12985 annotate_breakpoint (b->number);
f303dbd6
PA
12986 maybe_print_thread_hit_breakpoint (uiout);
12987
001c8c33 12988 if (bp_temp)
112e8700 12989 uiout->text ("Temporary breakpoint ");
001c8c33 12990 else
112e8700
SM
12991 uiout->text ("Breakpoint ");
12992 if (uiout->is_mi_like_p ())
348d480f 12993 {
112e8700 12994 uiout->field_string ("reason",
001c8c33 12995 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12996 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12997 }
112e8700
SM
12998 uiout->field_int ("bkptno", b->number);
12999 uiout->text (", ");
06edf0c0 13000
001c8c33 13001 return PRINT_SRC_AND_LOC;
06edf0c0
PA
13002}
13003
2060206e 13004static void
06edf0c0
PA
13005bkpt_print_mention (struct breakpoint *b)
13006{
112e8700 13007 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
13008 return;
13009
13010 switch (b->type)
13011 {
13012 case bp_breakpoint:
13013 case bp_gnu_ifunc_resolver:
13014 if (b->disposition == disp_del)
13015 printf_filtered (_("Temporary breakpoint"));
13016 else
13017 printf_filtered (_("Breakpoint"));
13018 printf_filtered (_(" %d"), b->number);
13019 if (b->type == bp_gnu_ifunc_resolver)
13020 printf_filtered (_(" at gnu-indirect-function resolver"));
13021 break;
13022 case bp_hardware_breakpoint:
13023 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13024 break;
e7e0cddf
SS
13025 case bp_dprintf:
13026 printf_filtered (_("Dprintf %d"), b->number);
13027 break;
06edf0c0
PA
13028 }
13029
13030 say_where (b);
13031}
13032
2060206e 13033static void
06edf0c0
PA
13034bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13035{
13036 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13037 fprintf_unfiltered (fp, "tbreak");
13038 else if (tp->type == bp_breakpoint)
13039 fprintf_unfiltered (fp, "break");
13040 else if (tp->type == bp_hardware_breakpoint
13041 && tp->disposition == disp_del)
13042 fprintf_unfiltered (fp, "thbreak");
13043 else if (tp->type == bp_hardware_breakpoint)
13044 fprintf_unfiltered (fp, "hbreak");
13045 else
13046 internal_error (__FILE__, __LINE__,
13047 _("unhandled breakpoint type %d"), (int) tp->type);
13048
f00aae0f 13049 fprintf_unfiltered (fp, " %s",
d28cd78a 13050 event_location_to_string (tp->location.get ()));
f00aae0f
KS
13051
13052 /* Print out extra_string if this breakpoint is pending. It might
13053 contain, for example, conditions that were set by the user. */
13054 if (tp->loc == NULL && tp->extra_string != NULL)
13055 fprintf_unfiltered (fp, " %s", tp->extra_string);
13056
dd11a36c 13057 print_recreate_thread (tp, fp);
06edf0c0
PA
13058}
13059
983af33b 13060static void
f00aae0f
KS
13061bkpt_create_sals_from_location (const struct event_location *location,
13062 struct linespec_result *canonical,
13063 enum bptype type_wanted)
983af33b 13064{
f00aae0f 13065 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
13066}
13067
13068static void
13069bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13070 struct linespec_result *canonical,
e1e01040
PA
13071 gdb::unique_xmalloc_ptr<char> cond_string,
13072 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13073 enum bptype type_wanted,
13074 enum bpdisp disposition,
13075 int thread,
13076 int task, int ignore_count,
13077 const struct breakpoint_ops *ops,
13078 int from_tty, int enabled,
44f238bb 13079 int internal, unsigned flags)
983af33b 13080{
023fa29b 13081 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13082 std::move (cond_string),
13083 std::move (extra_string),
e7e0cddf 13084 type_wanted,
983af33b
SDJ
13085 disposition, thread, task,
13086 ignore_count, ops, from_tty,
44f238bb 13087 enabled, internal, flags);
983af33b
SDJ
13088}
13089
13090static void
f00aae0f
KS
13091bkpt_decode_location (struct breakpoint *b,
13092 const struct event_location *location,
c2f4122d 13093 struct program_space *search_pspace,
983af33b
SDJ
13094 struct symtabs_and_lines *sals)
13095{
c2f4122d 13096 decode_location_default (b, location, search_pspace, sals);
983af33b
SDJ
13097}
13098
06edf0c0
PA
13099/* Virtual table for internal breakpoints. */
13100
13101static void
13102internal_bkpt_re_set (struct breakpoint *b)
13103{
13104 switch (b->type)
13105 {
13106 /* Delete overlay event and longjmp master breakpoints; they
13107 will be reset later by breakpoint_re_set. */
13108 case bp_overlay_event:
13109 case bp_longjmp_master:
13110 case bp_std_terminate_master:
13111 case bp_exception_master:
13112 delete_breakpoint (b);
13113 break;
13114
13115 /* This breakpoint is special, it's set up when the inferior
13116 starts and we really don't want to touch it. */
13117 case bp_shlib_event:
13118
13119 /* Like bp_shlib_event, this breakpoint type is special. Once
13120 it is set up, we do not want to touch it. */
13121 case bp_thread_event:
13122 break;
13123 }
13124}
13125
13126static void
13127internal_bkpt_check_status (bpstat bs)
13128{
a9b3a50f
PA
13129 if (bs->breakpoint_at->type == bp_shlib_event)
13130 {
13131 /* If requested, stop when the dynamic linker notifies GDB of
13132 events. This allows the user to get control and place
13133 breakpoints in initializer routines for dynamically loaded
13134 objects (among other things). */
13135 bs->stop = stop_on_solib_events;
13136 bs->print = stop_on_solib_events;
13137 }
13138 else
13139 bs->stop = 0;
06edf0c0
PA
13140}
13141
13142static enum print_stop_action
13143internal_bkpt_print_it (bpstat bs)
13144{
06edf0c0 13145 struct breakpoint *b;
06edf0c0 13146
06edf0c0
PA
13147 b = bs->breakpoint_at;
13148
06edf0c0
PA
13149 switch (b->type)
13150 {
348d480f
PA
13151 case bp_shlib_event:
13152 /* Did we stop because the user set the stop_on_solib_events
13153 variable? (If so, we report this as a generic, "Stopped due
13154 to shlib event" message.) */
edcc5120 13155 print_solib_event (0);
348d480f
PA
13156 break;
13157
13158 case bp_thread_event:
13159 /* Not sure how we will get here.
13160 GDB should not stop for these breakpoints. */
13161 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
13162 break;
13163
13164 case bp_overlay_event:
13165 /* By analogy with the thread event, GDB should not stop for these. */
13166 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
13167 break;
13168
13169 case bp_longjmp_master:
13170 /* These should never be enabled. */
13171 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
13172 break;
13173
13174 case bp_std_terminate_master:
13175 /* These should never be enabled. */
13176 printf_filtered (_("std::terminate Master Breakpoint: "
13177 "gdb should not stop!\n"));
348d480f
PA
13178 break;
13179
13180 case bp_exception_master:
13181 /* These should never be enabled. */
13182 printf_filtered (_("Exception Master Breakpoint: "
13183 "gdb should not stop!\n"));
06edf0c0
PA
13184 break;
13185 }
13186
001c8c33 13187 return PRINT_NOTHING;
06edf0c0
PA
13188}
13189
13190static void
13191internal_bkpt_print_mention (struct breakpoint *b)
13192{
13193 /* Nothing to mention. These breakpoints are internal. */
13194}
13195
06edf0c0
PA
13196/* Virtual table for momentary breakpoints */
13197
13198static void
13199momentary_bkpt_re_set (struct breakpoint *b)
13200{
13201 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 13202 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
13203 Otherwise these should have been blown away via the cleanup chain
13204 or by breakpoint_init_inferior when we rerun the executable. */
13205}
13206
13207static void
13208momentary_bkpt_check_status (bpstat bs)
13209{
13210 /* Nothing. The point of these breakpoints is causing a stop. */
13211}
13212
13213static enum print_stop_action
13214momentary_bkpt_print_it (bpstat bs)
13215{
001c8c33 13216 return PRINT_UNKNOWN;
348d480f
PA
13217}
13218
06edf0c0
PA
13219static void
13220momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 13221{
06edf0c0 13222 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
13223}
13224
e2e4d78b
JK
13225/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13226
13227 It gets cleared already on the removal of the first one of such placed
13228 breakpoints. This is OK as they get all removed altogether. */
13229
c1fc2657 13230longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 13231{
c1fc2657 13232 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 13233
c1fc2657 13234 if (tp != NULL)
e2e4d78b 13235 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
13236}
13237
55aa24fb
SDJ
13238/* Specific methods for probe breakpoints. */
13239
13240static int
13241bkpt_probe_insert_location (struct bp_location *bl)
13242{
13243 int v = bkpt_insert_location (bl);
13244
13245 if (v == 0)
13246 {
13247 /* The insertion was successful, now let's set the probe's semaphore
13248 if needed. */
0ea5cda8
SDJ
13249 if (bl->probe.probe->pops->set_semaphore != NULL)
13250 bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13251 bl->probe.objfile,
13252 bl->gdbarch);
55aa24fb
SDJ
13253 }
13254
13255 return v;
13256}
13257
13258static int
73971819
PA
13259bkpt_probe_remove_location (struct bp_location *bl,
13260 enum remove_bp_reason reason)
55aa24fb
SDJ
13261{
13262 /* Let's clear the semaphore before removing the location. */
0ea5cda8
SDJ
13263 if (bl->probe.probe->pops->clear_semaphore != NULL)
13264 bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13265 bl->probe.objfile,
13266 bl->gdbarch);
55aa24fb 13267
73971819 13268 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
13269}
13270
13271static void
f00aae0f 13272bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 13273 struct linespec_result *canonical,
f00aae0f 13274 enum bptype type_wanted)
55aa24fb
SDJ
13275{
13276 struct linespec_sals lsal;
13277
c2f4122d 13278 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
13279 lsal.canonical
13280 = xstrdup (event_location_to_string (canonical->location.get ()));
55aa24fb
SDJ
13281 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13282}
13283
13284static void
f00aae0f
KS
13285bkpt_probe_decode_location (struct breakpoint *b,
13286 const struct event_location *location,
c2f4122d 13287 struct program_space *search_pspace,
55aa24fb
SDJ
13288 struct symtabs_and_lines *sals)
13289{
c2f4122d 13290 *sals = parse_probes (location, search_pspace, NULL);
55aa24fb
SDJ
13291 if (!sals->sals)
13292 error (_("probe not found"));
13293}
13294
348d480f 13295/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 13296
348d480f
PA
13297static void
13298tracepoint_re_set (struct breakpoint *b)
13299{
13300 breakpoint_re_set_default (b);
13301}
876fa593 13302
348d480f
PA
13303static int
13304tracepoint_breakpoint_hit (const struct bp_location *bl,
09ac7c10
TT
13305 struct address_space *aspace, CORE_ADDR bp_addr,
13306 const struct target_waitstatus *ws)
348d480f
PA
13307{
13308 /* By definition, the inferior does not report stops at
13309 tracepoints. */
13310 return 0;
74960c60
VP
13311}
13312
13313static void
348d480f
PA
13314tracepoint_print_one_detail (const struct breakpoint *self,
13315 struct ui_out *uiout)
74960c60 13316{
d9b3f62e
PA
13317 struct tracepoint *tp = (struct tracepoint *) self;
13318 if (tp->static_trace_marker_id)
348d480f
PA
13319 {
13320 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 13321
112e8700
SM
13322 uiout->text ("\tmarker id is ");
13323 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 13324 tp->static_trace_marker_id);
112e8700 13325 uiout->text ("\n");
348d480f 13326 }
0d381245
VP
13327}
13328
a474d7c2 13329static void
348d480f 13330tracepoint_print_mention (struct breakpoint *b)
a474d7c2 13331{
112e8700 13332 if (current_uiout->is_mi_like_p ())
348d480f 13333 return;
cc59ec59 13334
348d480f
PA
13335 switch (b->type)
13336 {
13337 case bp_tracepoint:
13338 printf_filtered (_("Tracepoint"));
13339 printf_filtered (_(" %d"), b->number);
13340 break;
13341 case bp_fast_tracepoint:
13342 printf_filtered (_("Fast tracepoint"));
13343 printf_filtered (_(" %d"), b->number);
13344 break;
13345 case bp_static_tracepoint:
13346 printf_filtered (_("Static tracepoint"));
13347 printf_filtered (_(" %d"), b->number);
13348 break;
13349 default:
13350 internal_error (__FILE__, __LINE__,
13351 _("unhandled tracepoint type %d"), (int) b->type);
13352 }
13353
13354 say_where (b);
a474d7c2
PA
13355}
13356
348d480f 13357static void
d9b3f62e 13358tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 13359{
d9b3f62e
PA
13360 struct tracepoint *tp = (struct tracepoint *) self;
13361
13362 if (self->type == bp_fast_tracepoint)
348d480f 13363 fprintf_unfiltered (fp, "ftrace");
c93e8391 13364 else if (self->type == bp_static_tracepoint)
348d480f 13365 fprintf_unfiltered (fp, "strace");
d9b3f62e 13366 else if (self->type == bp_tracepoint)
348d480f
PA
13367 fprintf_unfiltered (fp, "trace");
13368 else
13369 internal_error (__FILE__, __LINE__,
d9b3f62e 13370 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 13371
f00aae0f 13372 fprintf_unfiltered (fp, " %s",
d28cd78a 13373 event_location_to_string (self->location.get ()));
d9b3f62e
PA
13374 print_recreate_thread (self, fp);
13375
13376 if (tp->pass_count)
13377 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
13378}
13379
983af33b 13380static void
f00aae0f
KS
13381tracepoint_create_sals_from_location (const struct event_location *location,
13382 struct linespec_result *canonical,
13383 enum bptype type_wanted)
983af33b 13384{
f00aae0f 13385 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
13386}
13387
13388static void
13389tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13390 struct linespec_result *canonical,
e1e01040
PA
13391 gdb::unique_xmalloc_ptr<char> cond_string,
13392 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13393 enum bptype type_wanted,
13394 enum bpdisp disposition,
13395 int thread,
13396 int task, int ignore_count,
13397 const struct breakpoint_ops *ops,
13398 int from_tty, int enabled,
44f238bb 13399 int internal, unsigned flags)
983af33b 13400{
023fa29b 13401 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13402 std::move (cond_string),
13403 std::move (extra_string),
e7e0cddf 13404 type_wanted,
983af33b
SDJ
13405 disposition, thread, task,
13406 ignore_count, ops, from_tty,
44f238bb 13407 enabled, internal, flags);
983af33b
SDJ
13408}
13409
13410static void
f00aae0f
KS
13411tracepoint_decode_location (struct breakpoint *b,
13412 const struct event_location *location,
c2f4122d 13413 struct program_space *search_pspace,
983af33b
SDJ
13414 struct symtabs_and_lines *sals)
13415{
c2f4122d 13416 decode_location_default (b, location, search_pspace, sals);
983af33b
SDJ
13417}
13418
2060206e 13419struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 13420
55aa24fb
SDJ
13421/* The breakpoint_ops structure to be use on tracepoints placed in a
13422 static probe. */
13423
13424static void
f00aae0f
KS
13425tracepoint_probe_create_sals_from_location
13426 (const struct event_location *location,
13427 struct linespec_result *canonical,
13428 enum bptype type_wanted)
55aa24fb
SDJ
13429{
13430 /* We use the same method for breakpoint on probes. */
f00aae0f 13431 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
13432}
13433
13434static void
f00aae0f
KS
13435tracepoint_probe_decode_location (struct breakpoint *b,
13436 const struct event_location *location,
c2f4122d 13437 struct program_space *search_pspace,
55aa24fb
SDJ
13438 struct symtabs_and_lines *sals)
13439{
13440 /* We use the same method for breakpoint on probes. */
c2f4122d 13441 bkpt_probe_decode_location (b, location, search_pspace, sals);
55aa24fb
SDJ
13442}
13443
13444static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13445
5c2b4418
HZ
13446/* Dprintf breakpoint_ops methods. */
13447
13448static void
13449dprintf_re_set (struct breakpoint *b)
13450{
13451 breakpoint_re_set_default (b);
13452
f00aae0f
KS
13453 /* extra_string should never be non-NULL for dprintf. */
13454 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
13455
13456 /* 1 - connect to target 1, that can run breakpoint commands.
13457 2 - create a dprintf, which resolves fine.
13458 3 - disconnect from target 1
13459 4 - connect to target 2, that can NOT run breakpoint commands.
13460
13461 After steps #3/#4, you'll want the dprintf command list to
13462 be updated, because target 1 and 2 may well return different
13463 answers for target_can_run_breakpoint_commands().
13464 Given absence of finer grained resetting, we get to do
13465 it all the time. */
13466 if (b->extra_string != NULL)
13467 update_dprintf_command_list (b);
13468}
13469
2d9442cc
HZ
13470/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13471
13472static void
13473dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13474{
f00aae0f 13475 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 13476 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
13477 tp->extra_string);
13478 print_recreate_thread (tp, fp);
13479}
13480
9d6e6e84
HZ
13481/* Implement the "after_condition_true" breakpoint_ops method for
13482 dprintf.
13483
13484 dprintf's are implemented with regular commands in their command
13485 list, but we run the commands here instead of before presenting the
13486 stop to the user, as dprintf's don't actually cause a stop. This
13487 also makes it so that the commands of multiple dprintfs at the same
13488 address are all handled. */
13489
13490static void
13491dprintf_after_condition_true (struct bpstats *bs)
13492{
13493 struct cleanup *old_chain;
13494 struct bpstats tmp_bs = { NULL };
13495 struct bpstats *tmp_bs_p = &tmp_bs;
13496
13497 /* dprintf's never cause a stop. This wasn't set in the
13498 check_status hook instead because that would make the dprintf's
13499 condition not be evaluated. */
13500 bs->stop = 0;
13501
13502 /* Run the command list here. Take ownership of it instead of
13503 copying. We never want these commands to run later in
13504 bpstat_do_actions, if a breakpoint that causes a stop happens to
13505 be set at same address as this dprintf, or even if running the
13506 commands here throws. */
13507 tmp_bs.commands = bs->commands;
13508 bs->commands = NULL;
13509 old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13510
13511 bpstat_do_actions_1 (&tmp_bs_p);
13512
13513 /* 'tmp_bs.commands' will usually be NULL by now, but
13514 bpstat_do_actions_1 may return early without processing the whole
13515 list. */
13516 do_cleanups (old_chain);
13517}
13518
983af33b
SDJ
13519/* The breakpoint_ops structure to be used on static tracepoints with
13520 markers (`-m'). */
13521
13522static void
f00aae0f 13523strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 13524 struct linespec_result *canonical,
f00aae0f 13525 enum bptype type_wanted)
983af33b
SDJ
13526{
13527 struct linespec_sals lsal;
f00aae0f
KS
13528 const char *arg_start, *arg;
13529 char *str;
13530 struct cleanup *cleanup;
983af33b 13531
f00aae0f
KS
13532 arg = arg_start = get_linespec_location (location);
13533 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13534
f00aae0f
KS
13535 str = savestring (arg_start, arg - arg_start);
13536 cleanup = make_cleanup (xfree, str);
8e9e35b1 13537 canonical->location = new_linespec_location (&str);
f00aae0f 13538 do_cleanups (cleanup);
983af33b 13539
8e9e35b1
TT
13540 lsal.canonical
13541 = xstrdup (event_location_to_string (canonical->location.get ()));
983af33b
SDJ
13542 VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13543}
13544
13545static void
13546strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13547 struct linespec_result *canonical,
e1e01040
PA
13548 gdb::unique_xmalloc_ptr<char> cond_string,
13549 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13550 enum bptype type_wanted,
13551 enum bpdisp disposition,
13552 int thread,
13553 int task, int ignore_count,
13554 const struct breakpoint_ops *ops,
13555 int from_tty, int enabled,
44f238bb 13556 int internal, unsigned flags)
983af33b
SDJ
13557{
13558 int i;
52d361e1
YQ
13559 struct linespec_sals *lsal = VEC_index (linespec_sals,
13560 canonical->sals, 0);
983af33b
SDJ
13561
13562 /* If the user is creating a static tracepoint by marker id
13563 (strace -m MARKER_ID), then store the sals index, so that
13564 breakpoint_re_set can try to match up which of the newly
13565 found markers corresponds to this one, and, don't try to
13566 expand multiple locations for each sal, given than SALS
13567 already should contain all sals for MARKER_ID. */
13568
13569 for (i = 0; i < lsal->sals.nelts; ++i)
13570 {
13571 struct symtabs_and_lines expanded;
13572 struct tracepoint *tp;
ffc2605c 13573 event_location_up location;
983af33b
SDJ
13574
13575 expanded.nelts = 1;
13576 expanded.sals = &lsal->sals.sals[i];
13577
8e9e35b1 13578 location = copy_event_location (canonical->location.get ());
983af33b 13579
4d01a485 13580 tp = new tracepoint ();
c1fc2657 13581 init_breakpoint_sal (tp, gdbarch, expanded,
ffc2605c 13582 std::move (location), NULL,
e1e01040
PA
13583 std::move (cond_string),
13584 std::move (extra_string),
e7e0cddf 13585 type_wanted, disposition,
983af33b 13586 thread, task, ignore_count, ops,
44f238bb 13587 from_tty, enabled, internal, flags,
983af33b
SDJ
13588 canonical->special_display);
13589 /* Given that its possible to have multiple markers with
13590 the same string id, if the user is creating a static
13591 tracepoint by marker id ("strace -m MARKER_ID"), then
13592 store the sals index, so that breakpoint_re_set can
13593 try to match up which of the newly found markers
13594 corresponds to this one */
13595 tp->static_trace_marker_id_idx = i;
13596
c1fc2657 13597 install_breakpoint (internal, tp, 0);
983af33b
SDJ
13598 }
13599}
13600
13601static void
f00aae0f
KS
13602strace_marker_decode_location (struct breakpoint *b,
13603 const struct event_location *location,
c2f4122d 13604 struct program_space *search_pspace,
983af33b
SDJ
13605 struct symtabs_and_lines *sals)
13606{
13607 struct tracepoint *tp = (struct tracepoint *) b;
f00aae0f 13608 const char *s = get_linespec_location (location);
983af33b 13609
f00aae0f 13610 *sals = decode_static_tracepoint_spec (&s);
983af33b
SDJ
13611 if (sals->nelts > tp->static_trace_marker_id_idx)
13612 {
13613 sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13614 sals->nelts = 1;
13615 }
13616 else
13617 error (_("marker %s not found"), tp->static_trace_marker_id);
13618}
13619
13620static struct breakpoint_ops strace_marker_breakpoint_ops;
13621
13622static int
13623strace_marker_p (struct breakpoint *b)
13624{
13625 return b->ops == &strace_marker_breakpoint_ops;
13626}
13627
53a5351d 13628/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13629 structures. */
c906108c
SS
13630
13631void
fba45db2 13632delete_breakpoint (struct breakpoint *bpt)
c906108c 13633{
52f0bd74 13634 struct breakpoint *b;
c906108c 13635
8a3fe4f8 13636 gdb_assert (bpt != NULL);
c906108c 13637
4a64f543
MS
13638 /* Has this bp already been deleted? This can happen because
13639 multiple lists can hold pointers to bp's. bpstat lists are
13640 especial culprits.
13641
13642 One example of this happening is a watchpoint's scope bp. When
13643 the scope bp triggers, we notice that the watchpoint is out of
13644 scope, and delete it. We also delete its scope bp. But the
13645 scope bp is marked "auto-deleting", and is already on a bpstat.
13646 That bpstat is then checked for auto-deleting bp's, which are
13647 deleted.
13648
13649 A real solution to this problem might involve reference counts in
13650 bp's, and/or giving them pointers back to their referencing
13651 bpstat's, and teaching delete_breakpoint to only free a bp's
13652 storage when no more references were extent. A cheaper bandaid
13653 was chosen. */
c906108c
SS
13654 if (bpt->type == bp_none)
13655 return;
13656
4a64f543
MS
13657 /* At least avoid this stale reference until the reference counting
13658 of breakpoints gets resolved. */
d0fb5eae 13659 if (bpt->related_breakpoint != bpt)
e5a0a904 13660 {
d0fb5eae 13661 struct breakpoint *related;
3a5c3e22 13662 struct watchpoint *w;
d0fb5eae
JK
13663
13664 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13665 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13666 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13667 w = (struct watchpoint *) bpt;
13668 else
13669 w = NULL;
13670 if (w != NULL)
13671 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13672
13673 /* Unlink bpt from the bpt->related_breakpoint ring. */
13674 for (related = bpt; related->related_breakpoint != bpt;
13675 related = related->related_breakpoint);
13676 related->related_breakpoint = bpt->related_breakpoint;
13677 bpt->related_breakpoint = bpt;
e5a0a904
JK
13678 }
13679
a9634178
TJB
13680 /* watch_command_1 creates a watchpoint but only sets its number if
13681 update_watchpoint succeeds in creating its bp_locations. If there's
13682 a problem in that process, we'll be asked to delete the half-created
13683 watchpoint. In that case, don't announce the deletion. */
13684 if (bpt->number)
13685 observer_notify_breakpoint_deleted (bpt);
c906108c 13686
c906108c
SS
13687 if (breakpoint_chain == bpt)
13688 breakpoint_chain = bpt->next;
13689
c906108c
SS
13690 ALL_BREAKPOINTS (b)
13691 if (b->next == bpt)
c5aa993b
JM
13692 {
13693 b->next = bpt->next;
13694 break;
13695 }
c906108c 13696
f431efe5
PA
13697 /* Be sure no bpstat's are pointing at the breakpoint after it's
13698 been freed. */
13699 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13700 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13701 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13702 commands are associated with the bpstat; if we remove it here,
13703 then the later call to bpstat_do_actions (&stop_bpstat); in
13704 event-top.c won't do anything, and temporary breakpoints with
13705 commands won't work. */
13706
13707 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13708
4a64f543
MS
13709 /* Now that breakpoint is removed from breakpoint list, update the
13710 global location list. This will remove locations that used to
13711 belong to this breakpoint. Do this before freeing the breakpoint
13712 itself, since remove_breakpoint looks at location's owner. It
13713 might be better design to have location completely
13714 self-contained, but it's not the case now. */
44702360 13715 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13716
4a64f543
MS
13717 /* On the chance that someone will soon try again to delete this
13718 same bp, we mark it as deleted before freeing its storage. */
c906108c 13719 bpt->type = bp_none;
4d01a485 13720 delete bpt;
c906108c
SS
13721}
13722
4d6140d9
AC
13723static void
13724do_delete_breakpoint_cleanup (void *b)
13725{
9a3c8263 13726 delete_breakpoint ((struct breakpoint *) b);
4d6140d9
AC
13727}
13728
13729struct cleanup *
13730make_cleanup_delete_breakpoint (struct breakpoint *b)
13731{
13732 return make_cleanup (do_delete_breakpoint_cleanup, b);
13733}
13734
51be5b68
PA
13735/* Iterator function to call a user-provided callback function once
13736 for each of B and its related breakpoints. */
13737
13738static void
13739iterate_over_related_breakpoints (struct breakpoint *b,
13740 void (*function) (struct breakpoint *,
13741 void *),
13742 void *data)
13743{
13744 struct breakpoint *related;
13745
13746 related = b;
13747 do
13748 {
13749 struct breakpoint *next;
13750
13751 /* FUNCTION may delete RELATED. */
13752 next = related->related_breakpoint;
13753
13754 if (next == related)
13755 {
13756 /* RELATED is the last ring entry. */
13757 function (related, data);
13758
13759 /* FUNCTION may have deleted it, so we'd never reach back to
13760 B. There's nothing left to do anyway, so just break
13761 out. */
13762 break;
13763 }
13764 else
13765 function (related, data);
13766
13767 related = next;
13768 }
13769 while (related != b);
13770}
95a42b64
TT
13771
13772static void
13773do_delete_breakpoint (struct breakpoint *b, void *ignore)
13774{
13775 delete_breakpoint (b);
13776}
13777
51be5b68
PA
13778/* A callback for map_breakpoint_numbers that calls
13779 delete_breakpoint. */
13780
13781static void
13782do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13783{
13784 iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13785}
13786
c906108c 13787void
fba45db2 13788delete_command (char *arg, int from_tty)
c906108c 13789{
35df4500 13790 struct breakpoint *b, *b_tmp;
c906108c 13791
ea9365bb
TT
13792 dont_repeat ();
13793
c906108c
SS
13794 if (arg == 0)
13795 {
13796 int breaks_to_delete = 0;
13797
46c6471b
PA
13798 /* Delete all breakpoints if no argument. Do not delete
13799 internal breakpoints, these have to be deleted with an
13800 explicit breakpoint number argument. */
c5aa993b 13801 ALL_BREAKPOINTS (b)
46c6471b 13802 if (user_breakpoint_p (b))
973d738b
DJ
13803 {
13804 breaks_to_delete = 1;
13805 break;
13806 }
c906108c
SS
13807
13808 /* Ask user only if there are some breakpoints to delete. */
13809 if (!from_tty
e2e0b3e5 13810 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13811 {
35df4500 13812 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13813 if (user_breakpoint_p (b))
c5aa993b 13814 delete_breakpoint (b);
c906108c
SS
13815 }
13816 }
13817 else
51be5b68 13818 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
c906108c
SS
13819}
13820
c2f4122d
PA
13821/* Return true if all locations of B bound to PSPACE are pending. If
13822 PSPACE is NULL, all locations of all program spaces are
13823 considered. */
13824
0d381245 13825static int
c2f4122d 13826all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13827{
c2f4122d
PA
13828 struct bp_location *loc;
13829
13830 for (loc = b->loc; loc != NULL; loc = loc->next)
13831 if ((pspace == NULL
13832 || loc->pspace == pspace)
13833 && !loc->shlib_disabled
8645ff69 13834 && !loc->pspace->executing_startup)
0d381245
VP
13835 return 0;
13836 return 1;
fe3f5fa8
VP
13837}
13838
776592bf
DE
13839/* Subroutine of update_breakpoint_locations to simplify it.
13840 Return non-zero if multiple fns in list LOC have the same name.
13841 Null names are ignored. */
13842
13843static int
13844ambiguous_names_p (struct bp_location *loc)
13845{
13846 struct bp_location *l;
13847 htab_t htab = htab_create_alloc (13, htab_hash_string,
cc59ec59
MS
13848 (int (*) (const void *,
13849 const void *)) streq,
776592bf
DE
13850 NULL, xcalloc, xfree);
13851
13852 for (l = loc; l != NULL; l = l->next)
13853 {
13854 const char **slot;
13855 const char *name = l->function_name;
13856
13857 /* Allow for some names to be NULL, ignore them. */
13858 if (name == NULL)
13859 continue;
13860
13861 slot = (const char **) htab_find_slot (htab, (const void *) name,
13862 INSERT);
4a64f543
MS
13863 /* NOTE: We can assume slot != NULL here because xcalloc never
13864 returns NULL. */
776592bf
DE
13865 if (*slot != NULL)
13866 {
13867 htab_delete (htab);
13868 return 1;
13869 }
13870 *slot = name;
13871 }
13872
13873 htab_delete (htab);
13874 return 0;
13875}
13876
0fb4aa4b
PA
13877/* When symbols change, it probably means the sources changed as well,
13878 and it might mean the static tracepoint markers are no longer at
13879 the same address or line numbers they used to be at last we
13880 checked. Losing your static tracepoints whenever you rebuild is
13881 undesirable. This function tries to resync/rematch gdb static
13882 tracepoints with the markers on the target, for static tracepoints
13883 that have not been set by marker id. Static tracepoint that have
13884 been set by marker id are reset by marker id in breakpoint_re_set.
13885 The heuristic is:
13886
13887 1) For a tracepoint set at a specific address, look for a marker at
13888 the old PC. If one is found there, assume to be the same marker.
13889 If the name / string id of the marker found is different from the
13890 previous known name, assume that means the user renamed the marker
13891 in the sources, and output a warning.
13892
13893 2) For a tracepoint set at a given line number, look for a marker
13894 at the new address of the old line number. If one is found there,
13895 assume to be the same marker. If the name / string id of the
13896 marker found is different from the previous known name, assume that
13897 means the user renamed the marker in the sources, and output a
13898 warning.
13899
13900 3) If a marker is no longer found at the same address or line, it
13901 may mean the marker no longer exists. But it may also just mean
13902 the code changed a bit. Maybe the user added a few lines of code
13903 that made the marker move up or down (in line number terms). Ask
13904 the target for info about the marker with the string id as we knew
13905 it. If found, update line number and address in the matching
13906 static tracepoint. This will get confused if there's more than one
13907 marker with the same ID (possible in UST, although unadvised
13908 precisely because it confuses tools). */
13909
13910static struct symtab_and_line
13911update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13912{
d9b3f62e 13913 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13914 struct static_tracepoint_marker marker;
13915 CORE_ADDR pc;
0fb4aa4b
PA
13916
13917 pc = sal.pc;
13918 if (sal.line)
13919 find_line_pc (sal.symtab, sal.line, &pc);
13920
13921 if (target_static_tracepoint_marker_at (pc, &marker))
13922 {
d9b3f62e 13923 if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
0fb4aa4b
PA
13924 warning (_("static tracepoint %d changed probed marker from %s to %s"),
13925 b->number,
d9b3f62e 13926 tp->static_trace_marker_id, marker.str_id);
0fb4aa4b 13927
d9b3f62e
PA
13928 xfree (tp->static_trace_marker_id);
13929 tp->static_trace_marker_id = xstrdup (marker.str_id);
0fb4aa4b
PA
13930 release_static_tracepoint_marker (&marker);
13931
13932 return sal;
13933 }
13934
13935 /* Old marker wasn't found on target at lineno. Try looking it up
13936 by string ID. */
13937 if (!sal.explicit_pc
13938 && sal.line != 0
13939 && sal.symtab != NULL
d9b3f62e 13940 && tp->static_trace_marker_id != NULL)
0fb4aa4b
PA
13941 {
13942 VEC(static_tracepoint_marker_p) *markers;
13943
13944 markers
d9b3f62e 13945 = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
0fb4aa4b
PA
13946
13947 if (!VEC_empty(static_tracepoint_marker_p, markers))
13948 {
80e1d417 13949 struct symtab_and_line sal2;
0fb4aa4b 13950 struct symbol *sym;
80e1d417 13951 struct static_tracepoint_marker *tpmarker;
79a45e25 13952 struct ui_out *uiout = current_uiout;
67994074 13953 struct explicit_location explicit_loc;
0fb4aa4b 13954
80e1d417 13955 tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
0fb4aa4b 13956
d9b3f62e 13957 xfree (tp->static_trace_marker_id);
80e1d417 13958 tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
0fb4aa4b
PA
13959
13960 warning (_("marker for static tracepoint %d (%s) not "
13961 "found at previous line number"),
d9b3f62e 13962 b->number, tp->static_trace_marker_id);
0fb4aa4b 13963
80e1d417 13964 init_sal (&sal2);
0fb4aa4b 13965
80e1d417 13966 sal2.pc = tpmarker->address;
0fb4aa4b 13967
80e1d417
AS
13968 sal2 = find_pc_line (tpmarker->address, 0);
13969 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13970 uiout->text ("Now in ");
0fb4aa4b
PA
13971 if (sym)
13972 {
112e8700
SM
13973 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13974 uiout->text (" at ");
0fb4aa4b 13975 }
112e8700 13976 uiout->field_string ("file",
05cba821 13977 symtab_to_filename_for_display (sal2.symtab));
112e8700 13978 uiout->text (":");
0fb4aa4b 13979
112e8700 13980 if (uiout->is_mi_like_p ())
0fb4aa4b 13981 {
0b0865da 13982 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13983
112e8700 13984 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13985 }
13986
112e8700
SM
13987 uiout->field_int ("line", sal2.line);
13988 uiout->text ("\n");
0fb4aa4b 13989
80e1d417 13990 b->loc->line_number = sal2.line;
2f202fde 13991 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13992
d28cd78a 13993 b->location.reset (NULL);
67994074
KS
13994 initialize_explicit_location (&explicit_loc);
13995 explicit_loc.source_filename
00e52e53 13996 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13997 explicit_loc.line_offset.offset = b->loc->line_number;
13998 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13999 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
14000
14001 /* Might be nice to check if function changed, and warn if
14002 so. */
14003
80e1d417 14004 release_static_tracepoint_marker (tpmarker);
0fb4aa4b
PA
14005 }
14006 }
14007 return sal;
14008}
14009
8d3788bd
VP
14010/* Returns 1 iff locations A and B are sufficiently same that
14011 we don't need to report breakpoint as changed. */
14012
14013static int
14014locations_are_equal (struct bp_location *a, struct bp_location *b)
14015{
14016 while (a && b)
14017 {
14018 if (a->address != b->address)
14019 return 0;
14020
14021 if (a->shlib_disabled != b->shlib_disabled)
14022 return 0;
14023
14024 if (a->enabled != b->enabled)
14025 return 0;
14026
14027 a = a->next;
14028 b = b->next;
14029 }
14030
14031 if ((a == NULL) != (b == NULL))
14032 return 0;
14033
14034 return 1;
14035}
14036
c2f4122d
PA
14037/* Split all locations of B that are bound to PSPACE out of B's
14038 location list to a separate list and return that list's head. If
14039 PSPACE is NULL, hoist out all locations of B. */
14040
14041static struct bp_location *
14042hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
14043{
14044 struct bp_location head;
14045 struct bp_location *i = b->loc;
14046 struct bp_location **i_link = &b->loc;
14047 struct bp_location *hoisted = &head;
14048
14049 if (pspace == NULL)
14050 {
14051 i = b->loc;
14052 b->loc = NULL;
14053 return i;
14054 }
14055
14056 head.next = NULL;
14057
14058 while (i != NULL)
14059 {
14060 if (i->pspace == pspace)
14061 {
14062 *i_link = i->next;
14063 i->next = NULL;
14064 hoisted->next = i;
14065 hoisted = i;
14066 }
14067 else
14068 i_link = &i->next;
14069 i = *i_link;
14070 }
14071
14072 return head.next;
14073}
14074
14075/* Create new breakpoint locations for B (a hardware or software
14076 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
14077 zero, then B is a ranged breakpoint. Only recreates locations for
14078 FILTER_PSPACE. Locations of other program spaces are left
14079 untouched. */
f1310107 14080
0e30163f 14081void
0d381245 14082update_breakpoint_locations (struct breakpoint *b,
c2f4122d 14083 struct program_space *filter_pspace,
f1310107
TJB
14084 struct symtabs_and_lines sals,
14085 struct symtabs_and_lines sals_end)
fe3f5fa8
VP
14086{
14087 int i;
c2f4122d 14088 struct bp_location *existing_locations;
0d381245 14089
f8eba3c6
TT
14090 if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14091 {
14092 /* Ranged breakpoints have only one start location and one end
14093 location. */
14094 b->enable_state = bp_disabled;
f8eba3c6
TT
14095 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14096 "multiple locations found\n"),
14097 b->number);
14098 return;
14099 }
f1310107 14100
4a64f543
MS
14101 /* If there's no new locations, and all existing locations are
14102 pending, don't do anything. This optimizes the common case where
14103 all locations are in the same shared library, that was unloaded.
14104 We'd like to retain the location, so that when the library is
14105 loaded again, we don't loose the enabled/disabled status of the
14106 individual locations. */
c2f4122d 14107 if (all_locations_are_pending (b, filter_pspace) && sals.nelts == 0)
fe3f5fa8
VP
14108 return;
14109
c2f4122d 14110 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 14111
0d381245 14112 for (i = 0; i < sals.nelts; ++i)
fe3f5fa8 14113 {
f8eba3c6
TT
14114 struct bp_location *new_loc;
14115
14116 switch_to_program_space_and_thread (sals.sals[i].pspace);
14117
14118 new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
fe3f5fa8 14119
0d381245
VP
14120 /* Reparse conditions, they might contain references to the
14121 old symtab. */
14122 if (b->cond_string != NULL)
14123 {
bbc13ae3 14124 const char *s;
fe3f5fa8 14125
0d381245 14126 s = b->cond_string;
492d29ea 14127 TRY
0d381245 14128 {
1bb9788d
TT
14129 new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14130 block_for_pc (sals.sals[i].pc),
0d381245
VP
14131 0);
14132 }
492d29ea 14133 CATCH (e, RETURN_MASK_ERROR)
0d381245 14134 {
3e43a32a
MS
14135 warning (_("failed to reevaluate condition "
14136 "for breakpoint %d: %s"),
0d381245
VP
14137 b->number, e.message);
14138 new_loc->enabled = 0;
14139 }
492d29ea 14140 END_CATCH
0d381245 14141 }
fe3f5fa8 14142
f1310107
TJB
14143 if (sals_end.nelts)
14144 {
14145 CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14146
14147 new_loc->length = end - sals.sals[0].pc + 1;
14148 }
0d381245 14149 }
fe3f5fa8 14150
4a64f543
MS
14151 /* If possible, carry over 'disable' status from existing
14152 breakpoints. */
0d381245
VP
14153 {
14154 struct bp_location *e = existing_locations;
776592bf
DE
14155 /* If there are multiple breakpoints with the same function name,
14156 e.g. for inline functions, comparing function names won't work.
14157 Instead compare pc addresses; this is just a heuristic as things
14158 may have moved, but in practice it gives the correct answer
14159 often enough until a better solution is found. */
14160 int have_ambiguous_names = ambiguous_names_p (b->loc);
14161
0d381245
VP
14162 for (; e; e = e->next)
14163 {
14164 if (!e->enabled && e->function_name)
14165 {
14166 struct bp_location *l = b->loc;
776592bf
DE
14167 if (have_ambiguous_names)
14168 {
14169 for (; l; l = l->next)
f1310107 14170 if (breakpoint_locations_match (e, l))
776592bf
DE
14171 {
14172 l->enabled = 0;
14173 break;
14174 }
14175 }
14176 else
14177 {
14178 for (; l; l = l->next)
14179 if (l->function_name
14180 && strcmp (e->function_name, l->function_name) == 0)
14181 {
14182 l->enabled = 0;
14183 break;
14184 }
14185 }
0d381245
VP
14186 }
14187 }
14188 }
fe3f5fa8 14189
8d3788bd
VP
14190 if (!locations_are_equal (existing_locations, b->loc))
14191 observer_notify_breakpoint_modified (b);
fe3f5fa8
VP
14192}
14193
f00aae0f 14194/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
14195 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
14196
14197static struct symtabs_and_lines
f00aae0f 14198location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 14199 struct program_space *search_pspace, int *found)
ef23e705 14200{
02d20e4a 14201 struct symtabs_and_lines sals = {0};
492d29ea 14202 struct gdb_exception exception = exception_none;
ef23e705 14203
983af33b 14204 gdb_assert (b->ops != NULL);
ef23e705 14205
492d29ea 14206 TRY
ef23e705 14207 {
c2f4122d 14208 b->ops->decode_location (b, location, search_pspace, &sals);
ef23e705 14209 }
492d29ea 14210 CATCH (e, RETURN_MASK_ERROR)
ef23e705
TJB
14211 {
14212 int not_found_and_ok = 0;
492d29ea
PA
14213
14214 exception = e;
14215
ef23e705
TJB
14216 /* For pending breakpoints, it's expected that parsing will
14217 fail until the right shared library is loaded. User has
14218 already told to create pending breakpoints and don't need
14219 extra messages. If breakpoint is in bp_shlib_disabled
14220 state, then user already saw the message about that
14221 breakpoint being disabled, and don't want to see more
14222 errors. */
58438ac1 14223 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
14224 && (b->condition_not_parsed
14225 || (b->loc != NULL
14226 && search_pspace != NULL
14227 && b->loc->pspace != search_pspace)
ef23e705 14228 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 14229 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
14230 || b->enable_state == bp_disabled))
14231 not_found_and_ok = 1;
14232
14233 if (!not_found_and_ok)
14234 {
14235 /* We surely don't want to warn about the same breakpoint
14236 10 times. One solution, implemented here, is disable
14237 the breakpoint on error. Another solution would be to
14238 have separate 'warning emitted' flag. Since this
14239 happens only when a binary has changed, I don't know
14240 which approach is better. */
14241 b->enable_state = bp_disabled;
14242 throw_exception (e);
14243 }
14244 }
492d29ea 14245 END_CATCH
ef23e705 14246
492d29ea 14247 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 14248 {
f8eba3c6 14249 int i;
ef23e705 14250
f8eba3c6
TT
14251 for (i = 0; i < sals.nelts; ++i)
14252 resolve_sal_pc (&sals.sals[i]);
f00aae0f 14253 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 14254 {
ed1d1739
KS
14255 char *cond_string, *extra_string;
14256 int thread, task;
ef23e705 14257
f00aae0f 14258 find_condition_and_thread (b->extra_string, sals.sals[0].pc,
e7e0cddf
SS
14259 &cond_string, &thread, &task,
14260 &extra_string);
f00aae0f 14261 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
14262 if (cond_string)
14263 b->cond_string = cond_string;
14264 b->thread = thread;
14265 b->task = task;
e7e0cddf 14266 if (extra_string)
f00aae0f
KS
14267 {
14268 xfree (b->extra_string);
14269 b->extra_string = extra_string;
14270 }
ef23e705
TJB
14271 b->condition_not_parsed = 0;
14272 }
14273
983af33b 14274 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
ef23e705 14275 sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
ef23e705 14276
58438ac1
TT
14277 *found = 1;
14278 }
14279 else
14280 *found = 0;
ef23e705
TJB
14281
14282 return sals;
14283}
14284
348d480f
PA
14285/* The default re_set method, for typical hardware or software
14286 breakpoints. Reevaluate the breakpoint and recreate its
14287 locations. */
14288
14289static void
28010a5d 14290breakpoint_re_set_default (struct breakpoint *b)
ef23e705
TJB
14291{
14292 int found;
f1310107 14293 struct symtabs_and_lines sals, sals_end;
ef23e705 14294 struct symtabs_and_lines expanded = {0};
f1310107 14295 struct symtabs_and_lines expanded_end = {0};
c2f4122d 14296 struct program_space *filter_pspace = current_program_space;
ef23e705 14297
d28cd78a 14298 sals = location_to_sals (b, b->location.get (), filter_pspace, &found);
ef23e705
TJB
14299 if (found)
14300 {
14301 make_cleanup (xfree, sals.sals);
f8eba3c6 14302 expanded = sals;
ef23e705
TJB
14303 }
14304
f00aae0f 14305 if (b->location_range_end != NULL)
f1310107 14306 {
d28cd78a 14307 sals_end = location_to_sals (b, b->location_range_end.get (),
c2f4122d 14308 filter_pspace, &found);
f1310107
TJB
14309 if (found)
14310 {
14311 make_cleanup (xfree, sals_end.sals);
f8eba3c6 14312 expanded_end = sals_end;
f1310107
TJB
14313 }
14314 }
14315
c2f4122d 14316 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
14317}
14318
983af33b
SDJ
14319/* Default method for creating SALs from an address string. It basically
14320 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
14321
14322static void
f00aae0f
KS
14323create_sals_from_location_default (const struct event_location *location,
14324 struct linespec_result *canonical,
14325 enum bptype type_wanted)
983af33b 14326{
f00aae0f 14327 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
14328}
14329
14330/* Call create_breakpoints_sal for the given arguments. This is the default
14331 function for the `create_breakpoints_sal' method of
14332 breakpoint_ops. */
14333
14334static void
14335create_breakpoints_sal_default (struct gdbarch *gdbarch,
14336 struct linespec_result *canonical,
e1e01040
PA
14337 gdb::unique_xmalloc_ptr<char> cond_string,
14338 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
14339 enum bptype type_wanted,
14340 enum bpdisp disposition,
14341 int thread,
14342 int task, int ignore_count,
14343 const struct breakpoint_ops *ops,
14344 int from_tty, int enabled,
44f238bb 14345 int internal, unsigned flags)
983af33b 14346{
e1e01040
PA
14347 create_breakpoints_sal (gdbarch, canonical,
14348 std::move (cond_string),
14349 std::move (extra_string),
983af33b
SDJ
14350 type_wanted, disposition,
14351 thread, task, ignore_count, ops, from_tty,
44f238bb 14352 enabled, internal, flags);
983af33b
SDJ
14353}
14354
14355/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 14356 default function for the `decode_location' method of breakpoint_ops. */
983af33b
SDJ
14357
14358static void
f00aae0f
KS
14359decode_location_default (struct breakpoint *b,
14360 const struct event_location *location,
c2f4122d 14361 struct program_space *search_pspace,
983af33b
SDJ
14362 struct symtabs_and_lines *sals)
14363{
14364 struct linespec_result canonical;
14365
c2f4122d 14366 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
14367 (struct symtab *) NULL, 0,
14368 &canonical, multiple_symbols_all,
14369 b->filter);
14370
14371 /* We should get 0 or 1 resulting SALs. */
14372 gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14373
14374 if (VEC_length (linespec_sals, canonical.sals) > 0)
14375 {
14376 struct linespec_sals *lsal;
14377
14378 lsal = VEC_index (linespec_sals, canonical.sals, 0);
14379 *sals = lsal->sals;
14380 /* Arrange it so the destructor does not free the
14381 contents. */
14382 lsal->sals.sals = NULL;
14383 }
983af33b
SDJ
14384}
14385
28010a5d
PA
14386/* Prepare the global context for a re-set of breakpoint B. */
14387
14388static struct cleanup *
14389prepare_re_set_context (struct breakpoint *b)
14390{
28010a5d 14391 input_radix = b->input_radix;
28010a5d
PA
14392 set_language (b->language);
14393
c2f4122d 14394 return make_cleanup (null_cleanup, NULL);
ef23e705
TJB
14395}
14396
c906108c
SS
14397/* Reset a breakpoint given it's struct breakpoint * BINT.
14398 The value we return ends up being the return value from catch_errors.
14399 Unused in this case. */
14400
14401static int
4efb68b1 14402breakpoint_re_set_one (void *bint)
c906108c 14403{
4a64f543 14404 /* Get past catch_errs. */
53a5351d 14405 struct breakpoint *b = (struct breakpoint *) bint;
348d480f 14406 struct cleanup *cleanups;
c906108c 14407
348d480f
PA
14408 cleanups = prepare_re_set_context (b);
14409 b->ops->re_set (b);
14410 do_cleanups (cleanups);
c906108c
SS
14411 return 0;
14412}
14413
c2f4122d
PA
14414/* Re-set breakpoint locations for the current program space.
14415 Locations bound to other program spaces are left untouched. */
14416
c906108c 14417void
69de3c6a 14418breakpoint_re_set (void)
c906108c 14419{
35df4500 14420 struct breakpoint *b, *b_tmp;
c906108c
SS
14421 enum language save_language;
14422 int save_input_radix;
c5aa993b 14423
c906108c
SS
14424 save_language = current_language->la_language;
14425 save_input_radix = input_radix;
2a7f3dff 14426
c5aa993b 14427 {
5ed8105e 14428 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 14429
5ed8105e
PA
14430 /* Note: we must not try to insert locations until after all
14431 breakpoints have been re-set. Otherwise, e.g., when re-setting
14432 breakpoint 1, we'd insert the locations of breakpoint 2, which
14433 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 14434
5ed8105e
PA
14435 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14436 {
14437 /* Format possible error msg. */
14438 char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14439 b->number);
14440 struct cleanup *cleanups = make_cleanup (xfree, message);
14441 catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14442 do_cleanups (cleanups);
14443 }
14444 set_language (save_language);
14445 input_radix = save_input_radix;
14446
14447 jit_breakpoint_re_set ();
14448 }
6c95b8df 14449
af02033e
PP
14450 create_overlay_event_breakpoint ();
14451 create_longjmp_master_breakpoint ();
14452 create_std_terminate_master_breakpoint ();
186c406b 14453 create_exception_master_breakpoint ();
2a7f3dff
PA
14454
14455 /* Now we can insert. */
14456 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
14457}
14458\f
c906108c
SS
14459/* Reset the thread number of this breakpoint:
14460
14461 - If the breakpoint is for all threads, leave it as-is.
4a64f543 14462 - Else, reset it to the current thread for inferior_ptid. */
c906108c 14463void
fba45db2 14464breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
14465{
14466 if (b->thread != -1)
14467 {
39f77062 14468 if (in_thread_list (inferior_ptid))
5d5658a1 14469 b->thread = ptid_to_global_thread_id (inferior_ptid);
6c95b8df
PA
14470
14471 /* We're being called after following a fork. The new fork is
14472 selected as current, and unless this was a vfork will have a
14473 different program space from the original thread. Reset that
14474 as well. */
14475 b->loc->pspace = current_program_space;
c906108c
SS
14476 }
14477}
14478
03ac34d5
MS
14479/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14480 If from_tty is nonzero, it prints a message to that effect,
14481 which ends with a period (no newline). */
14482
c906108c 14483void
fba45db2 14484set_ignore_count (int bptnum, int count, int from_tty)
c906108c 14485{
52f0bd74 14486 struct breakpoint *b;
c906108c
SS
14487
14488 if (count < 0)
14489 count = 0;
14490
14491 ALL_BREAKPOINTS (b)
14492 if (b->number == bptnum)
c5aa993b 14493 {
d77f58be
SS
14494 if (is_tracepoint (b))
14495 {
14496 if (from_tty && count != 0)
14497 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14498 bptnum);
14499 return;
14500 }
14501
c5aa993b 14502 b->ignore_count = count;
221ea385
KS
14503 if (from_tty)
14504 {
14505 if (count == 0)
3e43a32a
MS
14506 printf_filtered (_("Will stop next time "
14507 "breakpoint %d is reached."),
221ea385
KS
14508 bptnum);
14509 else if (count == 1)
a3f17187 14510 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
14511 bptnum);
14512 else
3e43a32a
MS
14513 printf_filtered (_("Will ignore next %d "
14514 "crossings of breakpoint %d."),
221ea385
KS
14515 count, bptnum);
14516 }
8d3788bd 14517 observer_notify_breakpoint_modified (b);
c5aa993b
JM
14518 return;
14519 }
c906108c 14520
8a3fe4f8 14521 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
14522}
14523
c906108c
SS
14524/* Command to set ignore-count of breakpoint N to COUNT. */
14525
14526static void
fba45db2 14527ignore_command (char *args, int from_tty)
c906108c
SS
14528{
14529 char *p = args;
52f0bd74 14530 int num;
c906108c
SS
14531
14532 if (p == 0)
e2e0b3e5 14533 error_no_arg (_("a breakpoint number"));
c5aa993b 14534
c906108c 14535 num = get_number (&p);
5c44784c 14536 if (num == 0)
8a3fe4f8 14537 error (_("bad breakpoint number: '%s'"), args);
c906108c 14538 if (*p == 0)
8a3fe4f8 14539 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
14540
14541 set_ignore_count (num,
14542 longest_to_int (value_as_long (parse_and_eval (p))),
14543 from_tty);
221ea385
KS
14544 if (from_tty)
14545 printf_filtered ("\n");
c906108c
SS
14546}
14547\f
14548/* Call FUNCTION on each of the breakpoints
14549 whose numbers are given in ARGS. */
14550
14551static void
896b6bda
PA
14552map_breakpoint_numbers (const char *args,
14553 void (*function) (struct breakpoint *,
14554 void *),
95a42b64 14555 void *data)
c906108c 14556{
52f0bd74
AC
14557 int num;
14558 struct breakpoint *b, *tmp;
c906108c 14559
b9d61307 14560 if (args == 0 || *args == '\0')
e2e0b3e5 14561 error_no_arg (_("one or more breakpoint numbers"));
c906108c 14562
bfd28288 14563 number_or_range_parser parser (args);
197f0a60 14564
bfd28288 14565 while (!parser.finished ())
c906108c 14566 {
bfd28288
PA
14567 const char *p = parser.cur_tok ();
14568 bool match = false;
197f0a60 14569
bfd28288 14570 num = parser.get_number ();
5c44784c 14571 if (num == 0)
c5aa993b 14572 {
8a3fe4f8 14573 warning (_("bad breakpoint number at or near '%s'"), p);
5c44784c
JM
14574 }
14575 else
14576 {
14577 ALL_BREAKPOINTS_SAFE (b, tmp)
14578 if (b->number == num)
14579 {
bfd28288 14580 match = true;
cdac0397 14581 function (b, data);
11cf8741 14582 break;
5c44784c 14583 }
bfd28288 14584 if (!match)
a3f17187 14585 printf_unfiltered (_("No breakpoint number %d.\n"), num);
c5aa993b 14586 }
c906108c
SS
14587 }
14588}
14589
0d381245
VP
14590static struct bp_location *
14591find_location_by_number (char *number)
14592{
14593 char *dot = strchr (number, '.');
14594 char *p1;
14595 int bp_num;
14596 int loc_num;
14597 struct breakpoint *b;
14598 struct bp_location *loc;
14599
14600 *dot = '\0';
14601
14602 p1 = number;
197f0a60 14603 bp_num = get_number (&p1);
0d381245
VP
14604 if (bp_num == 0)
14605 error (_("Bad breakpoint number '%s'"), number);
14606
14607 ALL_BREAKPOINTS (b)
14608 if (b->number == bp_num)
14609 {
14610 break;
14611 }
14612
14613 if (!b || b->number != bp_num)
14614 error (_("Bad breakpoint number '%s'"), number);
14615
14616 p1 = dot+1;
197f0a60 14617 loc_num = get_number (&p1);
0d381245
VP
14618 if (loc_num == 0)
14619 error (_("Bad breakpoint location number '%s'"), number);
14620
14621 --loc_num;
14622 loc = b->loc;
14623 for (;loc_num && loc; --loc_num, loc = loc->next)
14624 ;
14625 if (!loc)
14626 error (_("Bad breakpoint location number '%s'"), dot+1);
14627
14628 return loc;
14629}
14630
14631
1900040c
MS
14632/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14633 If from_tty is nonzero, it prints a message to that effect,
14634 which ends with a period (no newline). */
14635
c906108c 14636void
fba45db2 14637disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14638{
14639 /* Never disable a watchpoint scope breakpoint; we want to
14640 hit them when we leave scope so we can delete both the
14641 watchpoint and its scope breakpoint at that time. */
14642 if (bpt->type == bp_watchpoint_scope)
14643 return;
14644
b5de0fa7 14645 bpt->enable_state = bp_disabled;
c906108c 14646
b775012e
LM
14647 /* Mark breakpoint locations modified. */
14648 mark_breakpoint_modified (bpt);
14649
d248b706
KY
14650 if (target_supports_enable_disable_tracepoint ()
14651 && current_trace_status ()->running && is_tracepoint (bpt))
14652 {
14653 struct bp_location *location;
14654
14655 for (location = bpt->loc; location; location = location->next)
14656 target_disable_tracepoint (location);
14657 }
14658
44702360 14659 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14660
8d3788bd 14661 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14662}
14663
51be5b68
PA
14664/* A callback for iterate_over_related_breakpoints. */
14665
14666static void
14667do_disable_breakpoint (struct breakpoint *b, void *ignore)
14668{
14669 disable_breakpoint (b);
14670}
14671
95a42b64
TT
14672/* A callback for map_breakpoint_numbers that calls
14673 disable_breakpoint. */
14674
14675static void
14676do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14677{
51be5b68 14678 iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
95a42b64
TT
14679}
14680
c906108c 14681static void
fba45db2 14682disable_command (char *args, int from_tty)
c906108c 14683{
c906108c 14684 if (args == 0)
46c6471b
PA
14685 {
14686 struct breakpoint *bpt;
14687
14688 ALL_BREAKPOINTS (bpt)
14689 if (user_breakpoint_p (bpt))
14690 disable_breakpoint (bpt);
14691 }
9eaabc75 14692 else
0d381245 14693 {
9eaabc75
MW
14694 char *num = extract_arg (&args);
14695
14696 while (num)
d248b706 14697 {
9eaabc75 14698 if (strchr (num, '.'))
b775012e 14699 {
9eaabc75
MW
14700 struct bp_location *loc = find_location_by_number (num);
14701
14702 if (loc)
14703 {
14704 if (loc->enabled)
14705 {
14706 loc->enabled = 0;
14707 mark_breakpoint_location_modified (loc);
14708 }
14709 if (target_supports_enable_disable_tracepoint ()
14710 && current_trace_status ()->running && loc->owner
14711 && is_tracepoint (loc->owner))
14712 target_disable_tracepoint (loc);
14713 }
44702360 14714 update_global_location_list (UGLL_DONT_INSERT);
b775012e 14715 }
9eaabc75
MW
14716 else
14717 map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14718 num = extract_arg (&args);
d248b706 14719 }
0d381245 14720 }
c906108c
SS
14721}
14722
14723static void
816338b5
SS
14724enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14725 int count)
c906108c 14726{
afe38095 14727 int target_resources_ok;
c906108c
SS
14728
14729 if (bpt->type == bp_hardware_breakpoint)
14730 {
14731 int i;
c5aa993b 14732 i = hw_breakpoint_used_count ();
53a5351d 14733 target_resources_ok =
d92524f1 14734 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14735 i + 1, 0);
c906108c 14736 if (target_resources_ok == 0)
8a3fe4f8 14737 error (_("No hardware breakpoint support in the target."));
c906108c 14738 else if (target_resources_ok < 0)
8a3fe4f8 14739 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14740 }
14741
cc60f2e3 14742 if (is_watchpoint (bpt))
c906108c 14743 {
d07205c2 14744 /* Initialize it just to avoid a GCC false warning. */
f486487f 14745 enum enable_state orig_enable_state = bp_disabled;
dde02812 14746
492d29ea 14747 TRY
c906108c 14748 {
3a5c3e22
PA
14749 struct watchpoint *w = (struct watchpoint *) bpt;
14750
1e718ff1
TJB
14751 orig_enable_state = bpt->enable_state;
14752 bpt->enable_state = bp_enabled;
3a5c3e22 14753 update_watchpoint (w, 1 /* reparse */);
c906108c 14754 }
492d29ea 14755 CATCH (e, RETURN_MASK_ALL)
c5aa993b 14756 {
1e718ff1 14757 bpt->enable_state = orig_enable_state;
dde02812
ES
14758 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14759 bpt->number);
14760 return;
c5aa993b 14761 }
492d29ea 14762 END_CATCH
c906108c 14763 }
0101ce28 14764
b775012e
LM
14765 bpt->enable_state = bp_enabled;
14766
14767 /* Mark breakpoint locations modified. */
14768 mark_breakpoint_modified (bpt);
14769
d248b706
KY
14770 if (target_supports_enable_disable_tracepoint ()
14771 && current_trace_status ()->running && is_tracepoint (bpt))
14772 {
14773 struct bp_location *location;
14774
14775 for (location = bpt->loc; location; location = location->next)
14776 target_enable_tracepoint (location);
14777 }
14778
b4c291bb 14779 bpt->disposition = disposition;
816338b5 14780 bpt->enable_count = count;
44702360 14781 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14782
8d3788bd 14783 observer_notify_breakpoint_modified (bpt);
c906108c
SS
14784}
14785
fe3f5fa8 14786
c906108c 14787void
fba45db2 14788enable_breakpoint (struct breakpoint *bpt)
c906108c 14789{
816338b5 14790 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14791}
14792
14793static void
14794do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14795{
14796 enable_breakpoint (bpt);
c906108c
SS
14797}
14798
95a42b64
TT
14799/* A callback for map_breakpoint_numbers that calls
14800 enable_breakpoint. */
14801
14802static void
14803do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14804{
51be5b68 14805 iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
95a42b64
TT
14806}
14807
c906108c
SS
14808/* The enable command enables the specified breakpoints (or all defined
14809 breakpoints) so they once again become (or continue to be) effective
1272ad14 14810 in stopping the inferior. */
c906108c 14811
c906108c 14812static void
fba45db2 14813enable_command (char *args, int from_tty)
c906108c 14814{
c906108c 14815 if (args == 0)
46c6471b
PA
14816 {
14817 struct breakpoint *bpt;
14818
14819 ALL_BREAKPOINTS (bpt)
14820 if (user_breakpoint_p (bpt))
14821 enable_breakpoint (bpt);
14822 }
9eaabc75 14823 else
0d381245 14824 {
9eaabc75
MW
14825 char *num = extract_arg (&args);
14826
14827 while (num)
d248b706 14828 {
9eaabc75 14829 if (strchr (num, '.'))
b775012e 14830 {
9eaabc75
MW
14831 struct bp_location *loc = find_location_by_number (num);
14832
14833 if (loc)
14834 {
14835 if (!loc->enabled)
14836 {
14837 loc->enabled = 1;
14838 mark_breakpoint_location_modified (loc);
14839 }
14840 if (target_supports_enable_disable_tracepoint ()
14841 && current_trace_status ()->running && loc->owner
14842 && is_tracepoint (loc->owner))
14843 target_enable_tracepoint (loc);
14844 }
44702360 14845 update_global_location_list (UGLL_MAY_INSERT);
b775012e 14846 }
9eaabc75
MW
14847 else
14848 map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14849 num = extract_arg (&args);
d248b706 14850 }
0d381245 14851 }
c906108c
SS
14852}
14853
816338b5
SS
14854/* This struct packages up disposition data for application to multiple
14855 breakpoints. */
14856
14857struct disp_data
14858{
14859 enum bpdisp disp;
14860 int count;
14861};
14862
c906108c 14863static void
51be5b68
PA
14864do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14865{
816338b5 14866 struct disp_data disp_data = *(struct disp_data *) arg;
51be5b68 14867
816338b5 14868 enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
51be5b68
PA
14869}
14870
14871static void
14872do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 14873{
816338b5 14874 struct disp_data disp = { disp_disable, 1 };
51be5b68
PA
14875
14876 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
c906108c
SS
14877}
14878
c906108c 14879static void
fba45db2 14880enable_once_command (char *args, int from_tty)
c906108c 14881{
51be5b68 14882 map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
c906108c
SS
14883}
14884
816338b5
SS
14885static void
14886do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14887{
14888 struct disp_data disp = { disp_disable, *(int *) countptr };
14889
14890 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14891}
14892
14893static void
14894enable_count_command (char *args, int from_tty)
14895{
b9d61307
SM
14896 int count;
14897
14898 if (args == NULL)
14899 error_no_arg (_("hit count"));
14900
14901 count = get_number (&args);
816338b5
SS
14902
14903 map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14904}
14905
c906108c 14906static void
51be5b68 14907do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
c906108c 14908{
816338b5 14909 struct disp_data disp = { disp_del, 1 };
51be5b68
PA
14910
14911 iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
c906108c
SS
14912}
14913
c906108c 14914static void
fba45db2 14915enable_delete_command (char *args, int from_tty)
c906108c 14916{
51be5b68 14917 map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
c906108c
SS
14918}
14919\f
fa8d40ab
JJ
14920static void
14921set_breakpoint_cmd (char *args, int from_tty)
14922{
14923}
14924
14925static void
14926show_breakpoint_cmd (char *args, int from_tty)
14927{
14928}
14929
1f3b5d1b
PP
14930/* Invalidate last known value of any hardware watchpoint if
14931 the memory which that value represents has been written to by
14932 GDB itself. */
14933
14934static void
8de0566d
YQ
14935invalidate_bp_value_on_memory_change (struct inferior *inferior,
14936 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14937 const bfd_byte *data)
14938{
14939 struct breakpoint *bp;
14940
14941 ALL_BREAKPOINTS (bp)
14942 if (bp->enable_state == bp_enabled
3a5c3e22 14943 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14944 {
3a5c3e22 14945 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14946
3a5c3e22
PA
14947 if (wp->val_valid && wp->val)
14948 {
14949 struct bp_location *loc;
14950
14951 for (loc = bp->loc; loc != NULL; loc = loc->next)
14952 if (loc->loc_type == bp_loc_hardware_watchpoint
14953 && loc->address + loc->length > addr
14954 && addr + len > loc->address)
14955 {
14956 value_free (wp->val);
14957 wp->val = NULL;
14958 wp->val_valid = 0;
14959 }
14960 }
1f3b5d1b
PP
14961 }
14962}
14963
8181d85f
DJ
14964/* Create and insert a breakpoint for software single step. */
14965
14966void
6c95b8df 14967insert_single_step_breakpoint (struct gdbarch *gdbarch,
4a64f543
MS
14968 struct address_space *aspace,
14969 CORE_ADDR next_pc)
8181d85f 14970{
7c16b83e
PA
14971 struct thread_info *tp = inferior_thread ();
14972 struct symtab_and_line sal;
14973 CORE_ADDR pc = next_pc;
8181d85f 14974
34b7e8a6
PA
14975 if (tp->control.single_step_breakpoints == NULL)
14976 {
14977 tp->control.single_step_breakpoints
5d5658a1 14978 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14979 }
8181d85f 14980
7c16b83e
PA
14981 sal = find_pc_line (pc, 0);
14982 sal.pc = pc;
14983 sal.section = find_pc_overlay (pc);
14984 sal.explicit_pc = 1;
34b7e8a6 14985 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14986
7c16b83e 14987 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14988}
14989
93f9a11f
YQ
14990/* Insert single step breakpoints according to the current state. */
14991
14992int
14993insert_single_step_breakpoints (struct gdbarch *gdbarch)
14994{
f5ea389a 14995 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14996 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14997
f5ea389a 14998 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14999
a0ff9e1a 15000 if (!next_pcs.empty ())
93f9a11f 15001 {
f5ea389a 15002 struct frame_info *frame = get_current_frame ();
93f9a11f
YQ
15003 struct address_space *aspace = get_frame_address_space (frame);
15004
a0ff9e1a 15005 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
15006 insert_single_step_breakpoint (gdbarch, aspace, pc);
15007
93f9a11f
YQ
15008 return 1;
15009 }
15010 else
15011 return 0;
15012}
15013
34b7e8a6 15014/* See breakpoint.h. */
f02253f1
HZ
15015
15016int
7c16b83e
PA
15017breakpoint_has_location_inserted_here (struct breakpoint *bp,
15018 struct address_space *aspace,
15019 CORE_ADDR pc)
1aafd4da 15020{
7c16b83e 15021 struct bp_location *loc;
1aafd4da 15022
7c16b83e
PA
15023 for (loc = bp->loc; loc != NULL; loc = loc->next)
15024 if (loc->inserted
15025 && breakpoint_location_address_match (loc, aspace, pc))
15026 return 1;
1aafd4da 15027
7c16b83e 15028 return 0;
ef370185
JB
15029}
15030
15031/* Check whether a software single-step breakpoint is inserted at
15032 PC. */
15033
15034int
15035single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15036 CORE_ADDR pc)
15037{
34b7e8a6
PA
15038 struct breakpoint *bpt;
15039
15040 ALL_BREAKPOINTS (bpt)
15041 {
15042 if (bpt->type == bp_single_step
15043 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15044 return 1;
15045 }
15046 return 0;
1aafd4da
UW
15047}
15048
1042e4c0
SS
15049/* Tracepoint-specific operations. */
15050
15051/* Set tracepoint count to NUM. */
15052static void
15053set_tracepoint_count (int num)
15054{
15055 tracepoint_count = num;
4fa62494 15056 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
15057}
15058
70221824 15059static void
1042e4c0
SS
15060trace_command (char *arg, int from_tty)
15061{
55aa24fb 15062 struct breakpoint_ops *ops;
55aa24fb 15063
ffc2605c
TT
15064 event_location_up location = string_to_event_location (&arg,
15065 current_language);
5b56227b 15066 if (location != NULL
ffc2605c 15067 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
15068 ops = &tracepoint_probe_breakpoint_ops;
15069 else
15070 ops = &tracepoint_breakpoint_ops;
15071
558a9d82 15072 create_breakpoint (get_current_arch (),
ffc2605c 15073 location.get (),
f00aae0f 15074 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
15075 0 /* tempflag */,
15076 bp_tracepoint /* type_wanted */,
15077 0 /* Ignore count */,
15078 pending_break_support,
15079 ops,
15080 from_tty,
15081 1 /* enabled */,
15082 0 /* internal */, 0);
1042e4c0
SS
15083}
15084
70221824 15085static void
7a697b8d
SS
15086ftrace_command (char *arg, int from_tty)
15087{
ffc2605c
TT
15088 event_location_up location = string_to_event_location (&arg,
15089 current_language);
558a9d82 15090 create_breakpoint (get_current_arch (),
ffc2605c 15091 location.get (),
f00aae0f 15092 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
15093 0 /* tempflag */,
15094 bp_fast_tracepoint /* type_wanted */,
15095 0 /* Ignore count */,
15096 pending_break_support,
15097 &tracepoint_breakpoint_ops,
15098 from_tty,
15099 1 /* enabled */,
15100 0 /* internal */, 0);
0fb4aa4b
PA
15101}
15102
15103/* strace command implementation. Creates a static tracepoint. */
15104
70221824 15105static void
0fb4aa4b
PA
15106strace_command (char *arg, int from_tty)
15107{
983af33b 15108 struct breakpoint_ops *ops;
ffc2605c 15109 event_location_up location;
f00aae0f 15110 struct cleanup *back_to;
983af33b
SDJ
15111
15112 /* Decide if we are dealing with a static tracepoint marker (`-m'),
15113 or with a normal static tracepoint. */
61012eef 15114 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
15115 {
15116 ops = &strace_marker_breakpoint_ops;
15117 location = new_linespec_location (&arg);
15118 }
983af33b 15119 else
f00aae0f
KS
15120 {
15121 ops = &tracepoint_breakpoint_ops;
15122 location = string_to_event_location (&arg, current_language);
15123 }
983af33b 15124
558a9d82 15125 create_breakpoint (get_current_arch (),
ffc2605c 15126 location.get (),
f00aae0f 15127 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
15128 0 /* tempflag */,
15129 bp_static_tracepoint /* type_wanted */,
15130 0 /* Ignore count */,
15131 pending_break_support,
15132 ops,
15133 from_tty,
15134 1 /* enabled */,
15135 0 /* internal */, 0);
7a697b8d
SS
15136}
15137
409873ef
SS
15138/* Set up a fake reader function that gets command lines from a linked
15139 list that was acquired during tracepoint uploading. */
15140
15141static struct uploaded_tp *this_utp;
3149d8c1 15142static int next_cmd;
409873ef
SS
15143
15144static char *
15145read_uploaded_action (void)
15146{
15147 char *rslt;
15148
3149d8c1 15149 VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
409873ef 15150
3149d8c1 15151 next_cmd++;
409873ef
SS
15152
15153 return rslt;
15154}
15155
00bf0b85
SS
15156/* Given information about a tracepoint as recorded on a target (which
15157 can be either a live system or a trace file), attempt to create an
15158 equivalent GDB tracepoint. This is not a reliable process, since
15159 the target does not necessarily have all the information used when
15160 the tracepoint was originally defined. */
15161
d9b3f62e 15162struct tracepoint *
00bf0b85 15163create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 15164{
409873ef 15165 char *addr_str, small_buf[100];
d9b3f62e 15166 struct tracepoint *tp;
fd9b8c24 15167
409873ef
SS
15168 if (utp->at_string)
15169 addr_str = utp->at_string;
15170 else
15171 {
15172 /* In the absence of a source location, fall back to raw
15173 address. Since there is no way to confirm that the address
15174 means the same thing as when the trace was started, warn the
15175 user. */
3e43a32a
MS
15176 warning (_("Uploaded tracepoint %d has no "
15177 "source location, using raw address"),
409873ef 15178 utp->number);
8c042590 15179 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
15180 addr_str = small_buf;
15181 }
15182
15183 /* There's not much we can do with a sequence of bytecodes. */
15184 if (utp->cond && !utp->cond_string)
3e43a32a
MS
15185 warning (_("Uploaded tracepoint %d condition "
15186 "has no source form, ignoring it"),
409873ef 15187 utp->number);
d5551862 15188
ffc2605c
TT
15189 event_location_up location = string_to_event_location (&addr_str,
15190 current_language);
8cdf0e15 15191 if (!create_breakpoint (get_current_arch (),
ffc2605c 15192 location.get (),
f00aae0f 15193 utp->cond_string, -1, addr_str,
e7e0cddf 15194 0 /* parse cond/thread */,
8cdf0e15 15195 0 /* tempflag */,
0fb4aa4b 15196 utp->type /* type_wanted */,
8cdf0e15
VP
15197 0 /* Ignore count */,
15198 pending_break_support,
348d480f 15199 &tracepoint_breakpoint_ops,
8cdf0e15 15200 0 /* from_tty */,
84f4c1fe 15201 utp->enabled /* enabled */,
44f238bb
PA
15202 0 /* internal */,
15203 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 15204 return NULL;
fd9b8c24 15205
409873ef 15206 /* Get the tracepoint we just created. */
fd9b8c24
PA
15207 tp = get_tracepoint (tracepoint_count);
15208 gdb_assert (tp != NULL);
d5551862 15209
00bf0b85
SS
15210 if (utp->pass > 0)
15211 {
8c042590 15212 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 15213 tp->number);
00bf0b85 15214
409873ef 15215 trace_pass_command (small_buf, 0);
00bf0b85
SS
15216 }
15217
409873ef
SS
15218 /* If we have uploaded versions of the original commands, set up a
15219 special-purpose "reader" function and call the usual command line
15220 reader, then pass the result to the breakpoint command-setting
15221 function. */
3149d8c1 15222 if (!VEC_empty (char_ptr, utp->cmd_strings))
00bf0b85 15223 {
93921405 15224 command_line_up cmd_list;
00bf0b85 15225
409873ef 15226 this_utp = utp;
3149d8c1 15227 next_cmd = 0;
d5551862 15228
409873ef
SS
15229 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15230
c1fc2657 15231 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 15232 }
3149d8c1
SS
15233 else if (!VEC_empty (char_ptr, utp->actions)
15234 || !VEC_empty (char_ptr, utp->step_actions))
3e43a32a
MS
15235 warning (_("Uploaded tracepoint %d actions "
15236 "have no source form, ignoring them"),
409873ef 15237 utp->number);
00bf0b85 15238
f196051f 15239 /* Copy any status information that might be available. */
c1fc2657 15240 tp->hit_count = utp->hit_count;
f196051f
SS
15241 tp->traceframe_usage = utp->traceframe_usage;
15242
00bf0b85 15243 return tp;
d9b3f62e 15244}
00bf0b85 15245
1042e4c0
SS
15246/* Print information on tracepoint number TPNUM_EXP, or all if
15247 omitted. */
15248
15249static void
e5a67952 15250tracepoints_info (char *args, int from_tty)
1042e4c0 15251{
79a45e25 15252 struct ui_out *uiout = current_uiout;
e5a67952 15253 int num_printed;
1042e4c0 15254
e5a67952 15255 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
15256
15257 if (num_printed == 0)
1042e4c0 15258 {
e5a67952 15259 if (args == NULL || *args == '\0')
112e8700 15260 uiout->message ("No tracepoints.\n");
d77f58be 15261 else
112e8700 15262 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 15263 }
ad443146
SS
15264
15265 default_collect_info ();
1042e4c0
SS
15266}
15267
4a64f543 15268/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
15269 Not supported by all targets. */
15270static void
15271enable_trace_command (char *args, int from_tty)
15272{
15273 enable_command (args, from_tty);
15274}
15275
4a64f543 15276/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
15277 Not supported by all targets. */
15278static void
15279disable_trace_command (char *args, int from_tty)
15280{
15281 disable_command (args, from_tty);
15282}
15283
4a64f543 15284/* Remove a tracepoint (or all if no argument). */
1042e4c0
SS
15285static void
15286delete_trace_command (char *arg, int from_tty)
15287{
35df4500 15288 struct breakpoint *b, *b_tmp;
1042e4c0
SS
15289
15290 dont_repeat ();
15291
15292 if (arg == 0)
15293 {
15294 int breaks_to_delete = 0;
15295
15296 /* Delete all breakpoints if no argument.
15297 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
15298 have to be deleted with an explicit breakpoint number
15299 argument. */
1042e4c0 15300 ALL_TRACEPOINTS (b)
46c6471b 15301 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
15302 {
15303 breaks_to_delete = 1;
15304 break;
15305 }
1042e4c0
SS
15306
15307 /* Ask user only if there are some breakpoints to delete. */
15308 if (!from_tty
15309 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15310 {
35df4500 15311 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 15312 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 15313 delete_breakpoint (b);
1042e4c0
SS
15314 }
15315 }
15316 else
51be5b68 15317 map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
1042e4c0
SS
15318}
15319
197f0a60
TT
15320/* Helper function for trace_pass_command. */
15321
15322static void
d9b3f62e 15323trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 15324{
d9b3f62e 15325 tp->pass_count = count;
c1fc2657 15326 observer_notify_breakpoint_modified (tp);
197f0a60
TT
15327 if (from_tty)
15328 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 15329 tp->number, count);
197f0a60
TT
15330}
15331
1042e4c0
SS
15332/* Set passcount for tracepoint.
15333
15334 First command argument is passcount, second is tracepoint number.
15335 If tracepoint number omitted, apply to most recently defined.
15336 Also accepts special argument "all". */
15337
15338static void
15339trace_pass_command (char *args, int from_tty)
15340{
d9b3f62e 15341 struct tracepoint *t1;
1042e4c0 15342 unsigned int count;
1042e4c0
SS
15343
15344 if (args == 0 || *args == 0)
3e43a32a
MS
15345 error (_("passcount command requires an "
15346 "argument (count + optional TP num)"));
1042e4c0 15347
4a64f543 15348 count = strtoul (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 15349
529480d0 15350 args = skip_spaces (args);
1042e4c0
SS
15351 if (*args && strncasecmp (args, "all", 3) == 0)
15352 {
d9b3f62e
PA
15353 struct breakpoint *b;
15354
1042e4c0 15355 args += 3; /* Skip special argument "all". */
1042e4c0
SS
15356 if (*args)
15357 error (_("Junk at end of arguments."));
1042e4c0 15358
d9b3f62e 15359 ALL_TRACEPOINTS (b)
197f0a60 15360 {
d9b3f62e 15361 t1 = (struct tracepoint *) b;
197f0a60
TT
15362 trace_pass_set_count (t1, count, from_tty);
15363 }
15364 }
15365 else if (*args == '\0')
1042e4c0 15366 {
5fa1d40e 15367 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 15368 if (t1)
197f0a60
TT
15369 trace_pass_set_count (t1, count, from_tty);
15370 }
15371 else
15372 {
bfd28288
PA
15373 number_or_range_parser parser (args);
15374 while (!parser.finished ())
1042e4c0 15375 {
bfd28288 15376 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
15377 if (t1)
15378 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
15379 }
15380 }
1042e4c0
SS
15381}
15382
d9b3f62e 15383struct tracepoint *
1042e4c0
SS
15384get_tracepoint (int num)
15385{
15386 struct breakpoint *t;
15387
15388 ALL_TRACEPOINTS (t)
15389 if (t->number == num)
d9b3f62e 15390 return (struct tracepoint *) t;
1042e4c0
SS
15391
15392 return NULL;
15393}
15394
d5551862
SS
15395/* Find the tracepoint with the given target-side number (which may be
15396 different from the tracepoint number after disconnecting and
15397 reconnecting). */
15398
d9b3f62e 15399struct tracepoint *
d5551862
SS
15400get_tracepoint_by_number_on_target (int num)
15401{
d9b3f62e 15402 struct breakpoint *b;
d5551862 15403
d9b3f62e
PA
15404 ALL_TRACEPOINTS (b)
15405 {
15406 struct tracepoint *t = (struct tracepoint *) b;
15407
15408 if (t->number_on_target == num)
15409 return t;
15410 }
d5551862
SS
15411
15412 return NULL;
15413}
15414
1042e4c0 15415/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 15416 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
15417 If the argument is missing, the most recent tracepoint
15418 (tracepoint_count) is returned. */
15419
d9b3f62e 15420struct tracepoint *
197f0a60 15421get_tracepoint_by_number (char **arg,
bfd28288 15422 number_or_range_parser *parser)
1042e4c0 15423{
1042e4c0
SS
15424 struct breakpoint *t;
15425 int tpnum;
15426 char *instring = arg == NULL ? NULL : *arg;
15427
bfd28288 15428 if (parser != NULL)
197f0a60 15429 {
bfd28288
PA
15430 gdb_assert (!parser->finished ());
15431 tpnum = parser->get_number ();
197f0a60
TT
15432 }
15433 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 15434 tpnum = tracepoint_count;
1042e4c0 15435 else
197f0a60 15436 tpnum = get_number (arg);
1042e4c0
SS
15437
15438 if (tpnum <= 0)
15439 {
15440 if (instring && *instring)
15441 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15442 instring);
15443 else
5fa1d40e 15444 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
15445 return NULL;
15446 }
15447
15448 ALL_TRACEPOINTS (t)
15449 if (t->number == tpnum)
15450 {
d9b3f62e 15451 return (struct tracepoint *) t;
1042e4c0
SS
15452 }
15453
1042e4c0
SS
15454 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15455 return NULL;
15456}
15457
d9b3f62e
PA
15458void
15459print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15460{
15461 if (b->thread != -1)
15462 fprintf_unfiltered (fp, " thread %d", b->thread);
15463
15464 if (b->task != 0)
15465 fprintf_unfiltered (fp, " task %d", b->task);
15466
15467 fprintf_unfiltered (fp, "\n");
15468}
15469
6149aea9
PA
15470/* Save information on user settable breakpoints (watchpoints, etc) to
15471 a new script file named FILENAME. If FILTER is non-NULL, call it
15472 on each breakpoint and only include the ones for which it returns
15473 non-zero. */
15474
1042e4c0 15475static void
6149aea9
PA
15476save_breakpoints (char *filename, int from_tty,
15477 int (*filter) (const struct breakpoint *))
1042e4c0
SS
15478{
15479 struct breakpoint *tp;
6149aea9 15480 int any = 0;
6149aea9 15481 int extra_trace_bits = 0;
1042e4c0 15482
6149aea9
PA
15483 if (filename == 0 || *filename == 0)
15484 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15485
15486 /* See if we have anything to save. */
6149aea9 15487 ALL_BREAKPOINTS (tp)
1042e4c0 15488 {
6149aea9 15489 /* Skip internal and momentary breakpoints. */
09d682a4 15490 if (!user_breakpoint_p (tp))
6149aea9
PA
15491 continue;
15492
15493 /* If we have a filter, only save the breakpoints it accepts. */
15494 if (filter && !filter (tp))
15495 continue;
15496
15497 any = 1;
15498
15499 if (is_tracepoint (tp))
15500 {
15501 extra_trace_bits = 1;
15502
15503 /* We can stop searching. */
15504 break;
15505 }
1042e4c0 15506 }
6149aea9
PA
15507
15508 if (!any)
1042e4c0 15509 {
6149aea9 15510 warning (_("Nothing to save."));
1042e4c0
SS
15511 return;
15512 }
15513
ee0c3293 15514 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15515
15516 stdio_file fp;
15517
ee0c3293 15518 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15519 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15520 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15521
6149aea9 15522 if (extra_trace_bits)
d7e74731 15523 save_trace_state_variables (&fp);
8bf6485c 15524
6149aea9 15525 ALL_BREAKPOINTS (tp)
1042e4c0 15526 {
6149aea9 15527 /* Skip internal and momentary breakpoints. */
09d682a4 15528 if (!user_breakpoint_p (tp))
6149aea9 15529 continue;
8bf6485c 15530
6149aea9
PA
15531 /* If we have a filter, only save the breakpoints it accepts. */
15532 if (filter && !filter (tp))
15533 continue;
15534
d7e74731 15535 tp->ops->print_recreate (tp, &fp);
1042e4c0 15536
6149aea9
PA
15537 /* Note, we can't rely on tp->number for anything, as we can't
15538 assume the recreated breakpoint numbers will match. Use $bpnum
15539 instead. */
15540
15541 if (tp->cond_string)
d7e74731 15542 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15543
15544 if (tp->ignore_count)
d7e74731 15545 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15546
2d9442cc 15547 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15548 {
d7e74731 15549 fp.puts (" commands\n");
a7bdde9e 15550
d7e74731 15551 current_uiout->redirect (&fp);
492d29ea 15552 TRY
1042e4c0 15553 {
79a45e25 15554 print_command_lines (current_uiout, tp->commands->commands, 2);
a7bdde9e 15555 }
492d29ea
PA
15556 CATCH (ex, RETURN_MASK_ALL)
15557 {
112e8700 15558 current_uiout->redirect (NULL);
492d29ea
PA
15559 throw_exception (ex);
15560 }
15561 END_CATCH
1042e4c0 15562
112e8700 15563 current_uiout->redirect (NULL);
d7e74731 15564 fp.puts (" end\n");
1042e4c0 15565 }
6149aea9
PA
15566
15567 if (tp->enable_state == bp_disabled)
d7e74731 15568 fp.puts ("disable $bpnum\n");
6149aea9
PA
15569
15570 /* If this is a multi-location breakpoint, check if the locations
15571 should be individually disabled. Watchpoint locations are
15572 special, and not user visible. */
15573 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15574 {
15575 struct bp_location *loc;
15576 int n = 1;
15577
15578 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15579 if (!loc->enabled)
d7e74731 15580 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15581 }
1042e4c0 15582 }
8bf6485c 15583
6149aea9 15584 if (extra_trace_bits && *default_collect)
d7e74731 15585 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15586
1042e4c0 15587 if (from_tty)
ee0c3293 15588 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15589}
15590
15591/* The `save breakpoints' command. */
15592
15593static void
15594save_breakpoints_command (char *args, int from_tty)
15595{
15596 save_breakpoints (args, from_tty, NULL);
15597}
15598
15599/* The `save tracepoints' command. */
15600
15601static void
15602save_tracepoints_command (char *args, int from_tty)
15603{
15604 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15605}
15606
15607/* Create a vector of all tracepoints. */
15608
15609VEC(breakpoint_p) *
eeae04df 15610all_tracepoints (void)
1042e4c0
SS
15611{
15612 VEC(breakpoint_p) *tp_vec = 0;
15613 struct breakpoint *tp;
15614
15615 ALL_TRACEPOINTS (tp)
15616 {
15617 VEC_safe_push (breakpoint_p, tp_vec, tp);
15618 }
15619
15620 return tp_vec;
15621}
15622
c906108c 15623\f
629500fa
KS
15624/* This help string is used to consolidate all the help string for specifying
15625 locations used by several commands. */
15626
15627#define LOCATION_HELP_STRING \
15628"Linespecs are colon-separated lists of location parameters, such as\n\
15629source filename, function name, label name, and line number.\n\
15630Example: To specify the start of a label named \"the_top\" in the\n\
15631function \"fact\" in the file \"factorial.c\", use\n\
15632\"factorial.c:fact:the_top\".\n\
15633\n\
15634Address locations begin with \"*\" and specify an exact address in the\n\
15635program. Example: To specify the fourth byte past the start function\n\
15636\"main\", use \"*main + 4\".\n\
15637\n\
15638Explicit locations are similar to linespecs but use an option/argument\n\
15639syntax to specify location parameters.\n\
15640Example: To specify the start of the label named \"the_top\" in the\n\
15641function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15642-function fact -label the_top\".\n"
15643
4a64f543
MS
15644/* This help string is used for the break, hbreak, tbreak and thbreak
15645 commands. It is defined as a macro to prevent duplication.
15646 COMMAND should be a string constant containing the name of the
15647 command. */
629500fa 15648
31e2b00f 15649#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15650command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15651PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15652probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15653guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15654`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15655LOCATION may be a linespec, address, or explicit location as described\n\
15656below.\n\
15657\n\
dc10affe
PA
15658With no LOCATION, uses current execution address of the selected\n\
15659stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15660\n\
15661THREADNUM is the number from \"info threads\".\n\
15662CONDITION is a boolean expression.\n\
629500fa 15663\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15664Multiple breakpoints at one place are permitted, and useful if their\n\
15665conditions are different.\n\
31e2b00f
AS
15666\n\
15667Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15668
44feb3ce
TT
15669/* List of subcommands for "catch". */
15670static struct cmd_list_element *catch_cmdlist;
15671
15672/* List of subcommands for "tcatch". */
15673static struct cmd_list_element *tcatch_cmdlist;
15674
9ac4176b 15675void
a121b7c1 15676add_catch_command (const char *name, const char *docstring,
82ae6c8d 15677 cmd_sfunc_ftype *sfunc,
625e8578 15678 completer_ftype *completer,
44feb3ce
TT
15679 void *user_data_catch,
15680 void *user_data_tcatch)
15681{
15682 struct cmd_list_element *command;
15683
15684 command = add_cmd (name, class_breakpoint, NULL, docstring,
15685 &catch_cmdlist);
15686 set_cmd_sfunc (command, sfunc);
15687 set_cmd_context (command, user_data_catch);
a96d9b2e 15688 set_cmd_completer (command, completer);
44feb3ce
TT
15689
15690 command = add_cmd (name, class_breakpoint, NULL, docstring,
15691 &tcatch_cmdlist);
15692 set_cmd_sfunc (command, sfunc);
15693 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15694 set_cmd_completer (command, completer);
44feb3ce
TT
15695}
15696
6149aea9
PA
15697static void
15698save_command (char *arg, int from_tty)
15699{
3e43a32a
MS
15700 printf_unfiltered (_("\"save\" must be followed by "
15701 "the name of a save subcommand.\n"));
635c7e8a 15702 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15703}
15704
84f4c1fe
PM
15705struct breakpoint *
15706iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15707 void *data)
15708{
35df4500 15709 struct breakpoint *b, *b_tmp;
84f4c1fe 15710
35df4500 15711 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15712 {
15713 if ((*callback) (b, data))
15714 return b;
15715 }
15716
15717 return NULL;
15718}
15719
0574c78f
GB
15720/* Zero if any of the breakpoint's locations could be a location where
15721 functions have been inlined, nonzero otherwise. */
15722
15723static int
15724is_non_inline_function (struct breakpoint *b)
15725{
15726 /* The shared library event breakpoint is set on the address of a
15727 non-inline function. */
15728 if (b->type == bp_shlib_event)
15729 return 1;
15730
15731 return 0;
15732}
15733
15734/* Nonzero if the specified PC cannot be a location where functions
15735 have been inlined. */
15736
15737int
09ac7c10
TT
15738pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15739 const struct target_waitstatus *ws)
0574c78f
GB
15740{
15741 struct breakpoint *b;
15742 struct bp_location *bl;
15743
15744 ALL_BREAKPOINTS (b)
15745 {
15746 if (!is_non_inline_function (b))
15747 continue;
15748
15749 for (bl = b->loc; bl != NULL; bl = bl->next)
15750 {
15751 if (!bl->shlib_disabled
09ac7c10 15752 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15753 return 1;
15754 }
15755 }
15756
15757 return 0;
15758}
15759
2f202fde
JK
15760/* Remove any references to OBJFILE which is going to be freed. */
15761
15762void
15763breakpoint_free_objfile (struct objfile *objfile)
15764{
15765 struct bp_location **locp, *loc;
15766
15767 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15768 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15769 loc->symtab = NULL;
15770}
15771
2060206e
PA
15772void
15773initialize_breakpoint_ops (void)
15774{
15775 static int initialized = 0;
15776
15777 struct breakpoint_ops *ops;
15778
15779 if (initialized)
15780 return;
15781 initialized = 1;
15782
15783 /* The breakpoint_ops structure to be inherit by all kinds of
15784 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15785 internal and momentary breakpoints, etc.). */
15786 ops = &bkpt_base_breakpoint_ops;
15787 *ops = base_breakpoint_ops;
15788 ops->re_set = bkpt_re_set;
15789 ops->insert_location = bkpt_insert_location;
15790 ops->remove_location = bkpt_remove_location;
15791 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15792 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15793 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15794 ops->decode_location = bkpt_decode_location;
2060206e
PA
15795
15796 /* The breakpoint_ops structure to be used in regular breakpoints. */
15797 ops = &bkpt_breakpoint_ops;
15798 *ops = bkpt_base_breakpoint_ops;
15799 ops->re_set = bkpt_re_set;
15800 ops->resources_needed = bkpt_resources_needed;
15801 ops->print_it = bkpt_print_it;
15802 ops->print_mention = bkpt_print_mention;
15803 ops->print_recreate = bkpt_print_recreate;
15804
15805 /* Ranged breakpoints. */
15806 ops = &ranged_breakpoint_ops;
15807 *ops = bkpt_breakpoint_ops;
15808 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15809 ops->resources_needed = resources_needed_ranged_breakpoint;
15810 ops->print_it = print_it_ranged_breakpoint;
15811 ops->print_one = print_one_ranged_breakpoint;
15812 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15813 ops->print_mention = print_mention_ranged_breakpoint;
15814 ops->print_recreate = print_recreate_ranged_breakpoint;
15815
15816 /* Internal breakpoints. */
15817 ops = &internal_breakpoint_ops;
15818 *ops = bkpt_base_breakpoint_ops;
15819 ops->re_set = internal_bkpt_re_set;
15820 ops->check_status = internal_bkpt_check_status;
15821 ops->print_it = internal_bkpt_print_it;
15822 ops->print_mention = internal_bkpt_print_mention;
15823
15824 /* Momentary breakpoints. */
15825 ops = &momentary_breakpoint_ops;
15826 *ops = bkpt_base_breakpoint_ops;
15827 ops->re_set = momentary_bkpt_re_set;
15828 ops->check_status = momentary_bkpt_check_status;
15829 ops->print_it = momentary_bkpt_print_it;
15830 ops->print_mention = momentary_bkpt_print_mention;
15831
55aa24fb
SDJ
15832 /* Probe breakpoints. */
15833 ops = &bkpt_probe_breakpoint_ops;
15834 *ops = bkpt_breakpoint_ops;
15835 ops->insert_location = bkpt_probe_insert_location;
15836 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15837 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15838 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15839
2060206e
PA
15840 /* Watchpoints. */
15841 ops = &watchpoint_breakpoint_ops;
15842 *ops = base_breakpoint_ops;
15843 ops->re_set = re_set_watchpoint;
15844 ops->insert_location = insert_watchpoint;
15845 ops->remove_location = remove_watchpoint;
15846 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15847 ops->check_status = check_status_watchpoint;
15848 ops->resources_needed = resources_needed_watchpoint;
15849 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15850 ops->print_it = print_it_watchpoint;
15851 ops->print_mention = print_mention_watchpoint;
15852 ops->print_recreate = print_recreate_watchpoint;
427cd150 15853 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15854
15855 /* Masked watchpoints. */
15856 ops = &masked_watchpoint_breakpoint_ops;
15857 *ops = watchpoint_breakpoint_ops;
15858 ops->insert_location = insert_masked_watchpoint;
15859 ops->remove_location = remove_masked_watchpoint;
15860 ops->resources_needed = resources_needed_masked_watchpoint;
15861 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15862 ops->print_it = print_it_masked_watchpoint;
15863 ops->print_one_detail = print_one_detail_masked_watchpoint;
15864 ops->print_mention = print_mention_masked_watchpoint;
15865 ops->print_recreate = print_recreate_masked_watchpoint;
15866
15867 /* Tracepoints. */
15868 ops = &tracepoint_breakpoint_ops;
15869 *ops = base_breakpoint_ops;
15870 ops->re_set = tracepoint_re_set;
15871 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15872 ops->print_one_detail = tracepoint_print_one_detail;
15873 ops->print_mention = tracepoint_print_mention;
15874 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15875 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15876 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15877 ops->decode_location = tracepoint_decode_location;
983af33b 15878
55aa24fb
SDJ
15879 /* Probe tracepoints. */
15880 ops = &tracepoint_probe_breakpoint_ops;
15881 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15882 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15883 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15884
983af33b
SDJ
15885 /* Static tracepoints with marker (`-m'). */
15886 ops = &strace_marker_breakpoint_ops;
15887 *ops = tracepoint_breakpoint_ops;
5f700d83 15888 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15889 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15890 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15891
15892 /* Fork catchpoints. */
15893 ops = &catch_fork_breakpoint_ops;
15894 *ops = base_breakpoint_ops;
15895 ops->insert_location = insert_catch_fork;
15896 ops->remove_location = remove_catch_fork;
15897 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15898 ops->print_it = print_it_catch_fork;
15899 ops->print_one = print_one_catch_fork;
15900 ops->print_mention = print_mention_catch_fork;
15901 ops->print_recreate = print_recreate_catch_fork;
15902
15903 /* Vfork catchpoints. */
15904 ops = &catch_vfork_breakpoint_ops;
15905 *ops = base_breakpoint_ops;
15906 ops->insert_location = insert_catch_vfork;
15907 ops->remove_location = remove_catch_vfork;
15908 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15909 ops->print_it = print_it_catch_vfork;
15910 ops->print_one = print_one_catch_vfork;
15911 ops->print_mention = print_mention_catch_vfork;
15912 ops->print_recreate = print_recreate_catch_vfork;
15913
15914 /* Exec catchpoints. */
15915 ops = &catch_exec_breakpoint_ops;
15916 *ops = base_breakpoint_ops;
2060206e
PA
15917 ops->insert_location = insert_catch_exec;
15918 ops->remove_location = remove_catch_exec;
15919 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15920 ops->print_it = print_it_catch_exec;
15921 ops->print_one = print_one_catch_exec;
15922 ops->print_mention = print_mention_catch_exec;
15923 ops->print_recreate = print_recreate_catch_exec;
15924
edcc5120
TT
15925 /* Solib-related catchpoints. */
15926 ops = &catch_solib_breakpoint_ops;
15927 *ops = base_breakpoint_ops;
edcc5120
TT
15928 ops->insert_location = insert_catch_solib;
15929 ops->remove_location = remove_catch_solib;
15930 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15931 ops->check_status = check_status_catch_solib;
15932 ops->print_it = print_it_catch_solib;
15933 ops->print_one = print_one_catch_solib;
15934 ops->print_mention = print_mention_catch_solib;
15935 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15936
15937 ops = &dprintf_breakpoint_ops;
15938 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15939 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15940 ops->resources_needed = bkpt_resources_needed;
15941 ops->print_it = bkpt_print_it;
15942 ops->print_mention = bkpt_print_mention;
2d9442cc 15943 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15944 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15945 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15946}
15947
8bfd80db
YQ
15948/* Chain containing all defined "enable breakpoint" subcommands. */
15949
15950static struct cmd_list_element *enablebreaklist = NULL;
15951
c906108c 15952void
fba45db2 15953_initialize_breakpoint (void)
c906108c
SS
15954{
15955 struct cmd_list_element *c;
15956
2060206e
PA
15957 initialize_breakpoint_ops ();
15958
84acb35a 15959 observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
63644780 15960 observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
1f3b5d1b 15961 observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
84acb35a 15962
55aa24fb
SDJ
15963 breakpoint_objfile_key
15964 = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
17450429 15965
c906108c
SS
15966 breakpoint_chain = 0;
15967 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15968 before a breakpoint is set. */
15969 breakpoint_count = 0;
15970
1042e4c0
SS
15971 tracepoint_count = 0;
15972
1bedd215
AC
15973 add_com ("ignore", class_breakpoint, ignore_command, _("\
15974Set ignore-count of breakpoint number N to COUNT.\n\
15975Usage is `ignore N COUNT'."));
c906108c 15976
1bedd215 15977 add_com ("commands", class_breakpoint, commands_command, _("\
18da0c51
MG
15978Set commands to be executed when the given breakpoints are hit.\n\
15979Give a space-separated breakpoint list as argument after \"commands\".\n\
15980A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15981(e.g. `5-7').\n\
c906108c
SS
15982With no argument, the targeted breakpoint is the last one set.\n\
15983The commands themselves follow starting on the next line.\n\
15984Type a line containing \"end\" to indicate the end of them.\n\
15985Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15986then no output is printed when it is hit, except what the commands print."));
c906108c 15987
d55637df 15988 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15989Specify breakpoint number N to break only if COND is true.\n\
c906108c 15990Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15991expression to be evaluated whenever breakpoint N is reached."));
d55637df 15992 set_cmd_completer (c, condition_completer);
c906108c 15993
1bedd215 15994 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15995Set a temporary breakpoint.\n\
c906108c
SS
15996Like \"break\" except the breakpoint is only temporary,\n\
15997so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15998by using \"enable delete\" on the breakpoint number.\n\
15999\n"
16000BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 16001 set_cmd_completer (c, location_completer);
c94fdfd0 16002
1bedd215 16003 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 16004Set a hardware assisted breakpoint.\n\
c906108c 16005Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
16006some target hardware may not have this support.\n\
16007\n"
16008BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 16009 set_cmd_completer (c, location_completer);
c906108c 16010
1bedd215 16011 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 16012Set a temporary hardware assisted breakpoint.\n\
c906108c 16013Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
16014so it will be deleted when hit.\n\
16015\n"
16016BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 16017 set_cmd_completer (c, location_completer);
c906108c 16018
1bedd215
AC
16019 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16020Enable some breakpoints.\n\
c906108c
SS
16021Give breakpoint numbers (separated by spaces) as arguments.\n\
16022With no subcommand, breakpoints are enabled until you command otherwise.\n\
16023This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 16024With a subcommand you can enable temporarily."),
c906108c 16025 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
16026
16027 add_com_alias ("en", "enable", class_breakpoint, 1);
16028
84951ab5 16029 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 16030Enable some breakpoints.\n\
c906108c
SS
16031Give breakpoint numbers (separated by spaces) as arguments.\n\
16032This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 16033May be abbreviated to simply \"enable\".\n"),
c5aa993b 16034 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 16035
1a966eab
AC
16036 add_cmd ("once", no_class, enable_once_command, _("\
16037Enable breakpoints for one hit. Give breakpoint numbers.\n\
16038If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
16039 &enablebreaklist);
16040
1a966eab
AC
16041 add_cmd ("delete", no_class, enable_delete_command, _("\
16042Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
16043If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
16044 &enablebreaklist);
16045
816338b5
SS
16046 add_cmd ("count", no_class, enable_count_command, _("\
16047Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
16048If a breakpoint is hit while enabled in this fashion,\n\
16049the count is decremented; when it reaches zero, the breakpoint is disabled."),
16050 &enablebreaklist);
16051
1a966eab
AC
16052 add_cmd ("delete", no_class, enable_delete_command, _("\
16053Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
16054If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
16055 &enablelist);
16056
1a966eab
AC
16057 add_cmd ("once", no_class, enable_once_command, _("\
16058Enable breakpoints for one hit. Give breakpoint numbers.\n\
16059If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
16060 &enablelist);
16061
16062 add_cmd ("count", no_class, enable_count_command, _("\
16063Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
16064If a breakpoint is hit while enabled in this fashion,\n\
16065the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
16066 &enablelist);
16067
1bedd215
AC
16068 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16069Disable some breakpoints.\n\
c906108c
SS
16070Arguments are breakpoint numbers with spaces in between.\n\
16071To disable all breakpoints, give no argument.\n\
64b9b334 16072A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
16073 &disablelist, "disable ", 1, &cmdlist);
16074 add_com_alias ("dis", "disable", class_breakpoint, 1);
16075 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 16076
1a966eab
AC
16077 add_cmd ("breakpoints", class_alias, disable_command, _("\
16078Disable some breakpoints.\n\
c906108c
SS
16079Arguments are breakpoint numbers with spaces in between.\n\
16080To disable all breakpoints, give no argument.\n\
64b9b334 16081A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 16082This command may be abbreviated \"disable\"."),
c906108c
SS
16083 &disablelist);
16084
1bedd215
AC
16085 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16086Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
16087Arguments are breakpoint numbers with spaces in between.\n\
16088To delete all breakpoints, give no argument.\n\
16089\n\
16090Also a prefix command for deletion of other GDB objects.\n\
1bedd215 16091The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
16092 &deletelist, "delete ", 1, &cmdlist);
16093 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 16094 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 16095
1a966eab
AC
16096 add_cmd ("breakpoints", class_alias, delete_command, _("\
16097Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
16098Arguments are breakpoint numbers with spaces in between.\n\
16099To delete all breakpoints, give no argument.\n\
1a966eab 16100This command may be abbreviated \"delete\"."),
c906108c
SS
16101 &deletelist);
16102
1bedd215 16103 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
16104Clear breakpoint at specified location.\n\
16105Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
16106\n\
16107With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
16108is executing in.\n"
16109"\n" LOCATION_HELP_STRING "\n\
1bedd215 16110See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 16111 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 16112
1bedd215 16113 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 16114Set breakpoint at specified location.\n"
31e2b00f 16115BREAK_ARGS_HELP ("break")));
5ba2abeb 16116 set_cmd_completer (c, location_completer);
c94fdfd0 16117
c906108c
SS
16118 add_com_alias ("b", "break", class_run, 1);
16119 add_com_alias ("br", "break", class_run, 1);
16120 add_com_alias ("bre", "break", class_run, 1);
16121 add_com_alias ("brea", "break", class_run, 1);
16122
c906108c
SS
16123 if (dbx_commands)
16124 {
1bedd215
AC
16125 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16126Break in function/address or break at a line in the current file."),
c5aa993b
JM
16127 &stoplist, "stop ", 1, &cmdlist);
16128 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 16129 _("Break in function or address."), &stoplist);
c5aa993b 16130 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 16131 _("Break at a line in the current file."), &stoplist);
1bedd215
AC
16132 add_com ("status", class_info, breakpoints_info, _("\
16133Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
16134The \"Type\" column indicates one of:\n\
16135\tbreakpoint - normal breakpoint\n\
16136\twatchpoint - watchpoint\n\
16137The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16138the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16139breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
16140address and file/line number respectively.\n\
16141\n\
16142Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16143are set to the address of the last breakpoint listed unless the command\n\
16144is prefixed with \"server \".\n\n\
c906108c 16145Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 16146breakpoint set."));
c906108c
SS
16147 }
16148
1bedd215 16149 add_info ("breakpoints", breakpoints_info, _("\
e5a67952 16150Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
16151The \"Type\" column indicates one of:\n\
16152\tbreakpoint - normal breakpoint\n\
16153\twatchpoint - watchpoint\n\
16154The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16155the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16156breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
16157address and file/line number respectively.\n\
16158\n\
16159Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16160are set to the address of the last breakpoint listed unless the command\n\
16161is prefixed with \"server \".\n\n\
c906108c 16162Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 16163breakpoint set."));
c906108c 16164
6b04bdb7
MS
16165 add_info_alias ("b", "breakpoints", 1);
16166
1a966eab
AC
16167 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16168Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
16169The \"Type\" column indicates one of:\n\
16170\tbreakpoint - normal breakpoint\n\
16171\twatchpoint - watchpoint\n\
16172\tlongjmp - internal breakpoint used to step through longjmp()\n\
16173\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16174\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
16175\tfinish - internal breakpoint used by the \"finish\" command\n\
16176The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
16177the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
16178breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
16179address and file/line number respectively.\n\
16180\n\
16181Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
16182are set to the address of the last breakpoint listed unless the command\n\
16183is prefixed with \"server \".\n\n\
c906108c 16184Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 16185breakpoint set."),
c906108c
SS
16186 &maintenanceinfolist);
16187
44feb3ce
TT
16188 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16189Set catchpoints to catch events."),
16190 &catch_cmdlist, "catch ",
16191 0/*allow-unknown*/, &cmdlist);
16192
16193 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16194Set temporary catchpoints to catch events."),
16195 &tcatch_cmdlist, "tcatch ",
16196 0/*allow-unknown*/, &cmdlist);
16197
44feb3ce
TT
16198 add_catch_command ("fork", _("Catch calls to fork."),
16199 catch_fork_command_1,
a96d9b2e 16200 NULL,
44feb3ce
TT
16201 (void *) (uintptr_t) catch_fork_permanent,
16202 (void *) (uintptr_t) catch_fork_temporary);
16203 add_catch_command ("vfork", _("Catch calls to vfork."),
16204 catch_fork_command_1,
a96d9b2e 16205 NULL,
44feb3ce
TT
16206 (void *) (uintptr_t) catch_vfork_permanent,
16207 (void *) (uintptr_t) catch_vfork_temporary);
16208 add_catch_command ("exec", _("Catch calls to exec."),
16209 catch_exec_command_1,
a96d9b2e
SDJ
16210 NULL,
16211 CATCH_PERMANENT,
16212 CATCH_TEMPORARY);
edcc5120
TT
16213 add_catch_command ("load", _("Catch loads of shared libraries.\n\
16214Usage: catch load [REGEX]\n\
16215If REGEX is given, only stop for libraries matching the regular expression."),
16216 catch_load_command_1,
16217 NULL,
16218 CATCH_PERMANENT,
16219 CATCH_TEMPORARY);
16220 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16221Usage: catch unload [REGEX]\n\
16222If REGEX is given, only stop for libraries matching the regular expression."),
16223 catch_unload_command_1,
16224 NULL,
16225 CATCH_PERMANENT,
16226 CATCH_TEMPORARY);
c5aa993b 16227
1bedd215
AC
16228 c = add_com ("watch", class_breakpoint, watch_command, _("\
16229Set a watchpoint for an expression.\n\
06a64a0b 16230Usage: watch [-l|-location] EXPRESSION\n\
c906108c 16231A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16232an expression changes.\n\
16233If -l or -location is given, this evaluates EXPRESSION and watches\n\
16234the memory to which it refers."));
65d12d83 16235 set_cmd_completer (c, expression_completer);
c906108c 16236
1bedd215
AC
16237 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16238Set a read watchpoint for an expression.\n\
06a64a0b 16239Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 16240A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16241an expression is read.\n\
16242If -l or -location is given, this evaluates EXPRESSION and watches\n\
16243the memory to which it refers."));
65d12d83 16244 set_cmd_completer (c, expression_completer);
c906108c 16245
1bedd215
AC
16246 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16247Set a watchpoint for an expression.\n\
06a64a0b 16248Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 16249A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
16250an expression is either read or written.\n\
16251If -l or -location is given, this evaluates EXPRESSION and watches\n\
16252the memory to which it refers."));
65d12d83 16253 set_cmd_completer (c, expression_completer);
c906108c 16254
d77f58be 16255 add_info ("watchpoints", watchpoints_info, _("\
e5a67952 16256Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 16257
920d2a44
AC
16258 /* XXX: cagney/2005-02-23: This should be a boolean, and should
16259 respond to changes - contrary to the description. */
85c07804
AC
16260 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16261 &can_use_hw_watchpoints, _("\
16262Set debugger's willingness to use watchpoint hardware."), _("\
16263Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
16264If zero, gdb will not use hardware for new watchpoints, even if\n\
16265such is available. (However, any hardware watchpoints that were\n\
16266created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
16267hardware.)"),
16268 NULL,
920d2a44 16269 show_can_use_hw_watchpoints,
85c07804 16270 &setlist, &showlist);
c906108c
SS
16271
16272 can_use_hw_watchpoints = 1;
fa8d40ab 16273
1042e4c0
SS
16274 /* Tracepoint manipulation commands. */
16275
16276 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 16277Set a tracepoint at specified location.\n\
1042e4c0
SS
16278\n"
16279BREAK_ARGS_HELP ("trace") "\n\
16280Do \"help tracepoints\" for info on other tracepoint commands."));
16281 set_cmd_completer (c, location_completer);
16282
16283 add_com_alias ("tp", "trace", class_alias, 0);
16284 add_com_alias ("tr", "trace", class_alias, 1);
16285 add_com_alias ("tra", "trace", class_alias, 1);
16286 add_com_alias ("trac", "trace", class_alias, 1);
16287
7a697b8d 16288 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 16289Set a fast tracepoint at specified location.\n\
7a697b8d
SS
16290\n"
16291BREAK_ARGS_HELP ("ftrace") "\n\
16292Do \"help tracepoints\" for info on other tracepoint commands."));
16293 set_cmd_completer (c, location_completer);
16294
0fb4aa4b 16295 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 16296Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
16297\n\
16298strace [LOCATION] [if CONDITION]\n\
629500fa
KS
16299LOCATION may be a linespec, explicit, or address location (described below) \n\
16300or -m MARKER_ID.\n\n\
16301If a marker id is specified, probe the marker with that name. With\n\
16302no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
16303Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16304This collects arbitrary user data passed in the probe point call to the\n\
16305tracing library. You can inspect it when analyzing the trace buffer,\n\
16306by printing the $_sdata variable like any other convenience variable.\n\
16307\n\
16308CONDITION is a boolean expression.\n\
629500fa 16309\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
16310Multiple tracepoints at one place are permitted, and useful if their\n\
16311conditions are different.\n\
0fb4aa4b
PA
16312\n\
16313Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16314Do \"help tracepoints\" for info on other tracepoint commands."));
16315 set_cmd_completer (c, location_completer);
16316
1042e4c0 16317 add_info ("tracepoints", tracepoints_info, _("\
e5a67952 16318Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
16319Convenience variable \"$tpnum\" contains the number of the\n\
16320last tracepoint set."));
16321
16322 add_info_alias ("tp", "tracepoints", 1);
16323
16324 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16325Delete specified tracepoints.\n\
16326Arguments are tracepoint numbers, separated by spaces.\n\
16327No argument means delete all tracepoints."),
16328 &deletelist);
7e20dfcd 16329 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
16330
16331 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16332Disable specified tracepoints.\n\
16333Arguments are tracepoint numbers, separated by spaces.\n\
16334No argument means disable all tracepoints."),
16335 &disablelist);
16336 deprecate_cmd (c, "disable");
16337
16338 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16339Enable specified tracepoints.\n\
16340Arguments are tracepoint numbers, separated by spaces.\n\
16341No argument means enable all tracepoints."),
16342 &enablelist);
16343 deprecate_cmd (c, "enable");
16344
16345 add_com ("passcount", class_trace, trace_pass_command, _("\
16346Set the passcount for a tracepoint.\n\
16347The trace will end when the tracepoint has been passed 'count' times.\n\
16348Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16349if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16350
6149aea9
PA
16351 add_prefix_cmd ("save", class_breakpoint, save_command,
16352 _("Save breakpoint definitions as a script."),
16353 &save_cmdlist, "save ",
16354 0/*allow-unknown*/, &cmdlist);
16355
16356 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16357Save current breakpoint definitions as a script.\n\
cce7e648 16358This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
16359catchpoints, tracepoints). Use the 'source' command in another debug\n\
16360session to restore them."),
16361 &save_cmdlist);
16362 set_cmd_completer (c, filename_completer);
16363
16364 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 16365Save current tracepoint definitions as a script.\n\
6149aea9
PA
16366Use the 'source' command in another debug session to restore them."),
16367 &save_cmdlist);
1042e4c0
SS
16368 set_cmd_completer (c, filename_completer);
16369
6149aea9
PA
16370 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16371 deprecate_cmd (c, "save tracepoints");
16372
1bedd215 16373 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
16374Breakpoint specific settings\n\
16375Configure various breakpoint-specific variables such as\n\
1bedd215 16376pending breakpoint behavior"),
fa8d40ab
JJ
16377 &breakpoint_set_cmdlist, "set breakpoint ",
16378 0/*allow-unknown*/, &setlist);
1bedd215 16379 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
16380Breakpoint specific settings\n\
16381Configure various breakpoint-specific variables such as\n\
1bedd215 16382pending breakpoint behavior"),
fa8d40ab
JJ
16383 &breakpoint_show_cmdlist, "show breakpoint ",
16384 0/*allow-unknown*/, &showlist);
16385
7915a72c
AC
16386 add_setshow_auto_boolean_cmd ("pending", no_class,
16387 &pending_break_support, _("\
16388Set debugger's behavior regarding pending breakpoints."), _("\
16389Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
16390If on, an unrecognized breakpoint location will cause gdb to create a\n\
16391pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16392an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 16393user-query to see if a pending breakpoint should be created."),
2c5b56ce 16394 NULL,
920d2a44 16395 show_pending_break_support,
6e1d7d6c
AC
16396 &breakpoint_set_cmdlist,
16397 &breakpoint_show_cmdlist);
fa8d40ab
JJ
16398
16399 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
16400
16401 add_setshow_boolean_cmd ("auto-hw", no_class,
16402 &automatic_hardware_breakpoints, _("\
16403Set automatic usage of hardware breakpoints."), _("\
16404Show automatic usage of hardware breakpoints."), _("\
16405If set, the debugger will automatically use hardware breakpoints for\n\
16406breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16407a warning will be emitted for such breakpoints."),
16408 NULL,
16409 show_automatic_hardware_breakpoints,
16410 &breakpoint_set_cmdlist,
16411 &breakpoint_show_cmdlist);
74960c60 16412
a25a5a45
PA
16413 add_setshow_boolean_cmd ("always-inserted", class_support,
16414 &always_inserted_mode, _("\
74960c60
VP
16415Set mode for inserting breakpoints."), _("\
16416Show mode for inserting breakpoints."), _("\
a25a5a45
PA
16417When this mode is on, breakpoints are inserted immediately as soon as\n\
16418they're created, kept inserted even when execution stops, and removed\n\
16419only when the user deletes them. When this mode is off (the default),\n\
16420breakpoints are inserted only when execution continues, and removed\n\
16421when execution stops."),
72d0e2c5
YQ
16422 NULL,
16423 &show_always_inserted_mode,
16424 &breakpoint_set_cmdlist,
16425 &breakpoint_show_cmdlist);
f1310107 16426
b775012e
LM
16427 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16428 condition_evaluation_enums,
16429 &condition_evaluation_mode_1, _("\
16430Set mode of breakpoint condition evaluation."), _("\
16431Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 16432When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
16433evaluated on the host's side by GDB. When it is set to \"target\",\n\
16434breakpoint conditions will be downloaded to the target (if the target\n\
16435supports such feature) and conditions will be evaluated on the target's side.\n\
16436If this is set to \"auto\" (default), this will be automatically set to\n\
16437\"target\" if it supports condition evaluation, otherwise it will\n\
16438be set to \"gdb\""),
16439 &set_condition_evaluation_mode,
16440 &show_condition_evaluation_mode,
16441 &breakpoint_set_cmdlist,
16442 &breakpoint_show_cmdlist);
16443
f1310107
TJB
16444 add_com ("break-range", class_breakpoint, break_range_command, _("\
16445Set a breakpoint for an address range.\n\
16446break-range START-LOCATION, END-LOCATION\n\
16447where START-LOCATION and END-LOCATION can be one of the following:\n\
16448 LINENUM, for that line in the current file,\n\
16449 FILE:LINENUM, for that line in that file,\n\
16450 +OFFSET, for that number of lines after the current line\n\
16451 or the start of the range\n\
16452 FUNCTION, for the first line in that function,\n\
16453 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16454 *ADDRESS, for the instruction at that address.\n\
16455\n\
16456The breakpoint will stop execution of the inferior whenever it executes\n\
16457an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16458range (including START-LOCATION and END-LOCATION)."));
16459
e7e0cddf 16460 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16461Set a dynamic printf at specified location.\n\
e7e0cddf 16462dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16463location may be a linespec, explicit, or address location.\n"
16464"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16465 set_cmd_completer (c, location_completer);
16466
16467 add_setshow_enum_cmd ("dprintf-style", class_support,
16468 dprintf_style_enums, &dprintf_style, _("\
16469Set the style of usage for dynamic printf."), _("\
16470Show the style of usage for dynamic printf."), _("\
16471This setting chooses how GDB will do a dynamic printf.\n\
16472If the value is \"gdb\", then the printing is done by GDB to its own\n\
16473console, as with the \"printf\" command.\n\
16474If the value is \"call\", the print is done by calling a function in your\n\
16475program; by default printf(), but you can choose a different function or\n\
16476output stream by setting dprintf-function and dprintf-channel."),
16477 update_dprintf_commands, NULL,
16478 &setlist, &showlist);
16479
16480 dprintf_function = xstrdup ("printf");
16481 add_setshow_string_cmd ("dprintf-function", class_support,
16482 &dprintf_function, _("\
16483Set the function to use for dynamic printf"), _("\
16484Show the function to use for dynamic printf"), NULL,
16485 update_dprintf_commands, NULL,
16486 &setlist, &showlist);
16487
16488 dprintf_channel = xstrdup ("");
16489 add_setshow_string_cmd ("dprintf-channel", class_support,
16490 &dprintf_channel, _("\
16491Set the channel to use for dynamic printf"), _("\
16492Show the channel to use for dynamic printf"), NULL,
16493 update_dprintf_commands, NULL,
16494 &setlist, &showlist);
16495
d3ce09f5
SS
16496 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16497 &disconnected_dprintf, _("\
16498Set whether dprintf continues after GDB disconnects."), _("\
16499Show whether dprintf continues after GDB disconnects."), _("\
16500Use this to let dprintf commands continue to hit and produce output\n\
16501even if GDB disconnects or detaches from the target."),
16502 NULL,
16503 NULL,
16504 &setlist, &showlist);
16505
16506 add_com ("agent-printf", class_vars, agent_printf_command, _("\
16507agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16508(target agent only) This is useful for formatted output in user-defined commands."));
16509
765dc015 16510 automatic_hardware_breakpoints = 1;
f3b1572e
PA
16511
16512 observer_attach_about_to_proceed (breakpoint_about_to_proceed);
49fa26b0 16513 observer_attach_thread_exit (remove_threaded_breakpoints);
c906108c 16514}
This page took 3.832388 seconds and 4 git commands to generate.