Introduce and use make_unique_xstrdup
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
42a4f53d 3 Copyright (C) 1986-2019 Free Software Foundation, Inc.
c906108c 4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
c5aa993b 10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
19
20#include "defs.h"
d55e5aa6 21#include "arch-utils.h"
4de283e4
TT
22#include <ctype.h>
23#include "hashtab.h"
24#include "symtab.h"
25#include "frame.h"
c906108c 26#include "breakpoint.h"
4de283e4
TT
27#include "tracepoint.h"
28#include "gdbtypes.h"
c906108c 29#include "expression.h"
d55e5aa6 30#include "gdbcore.h"
4de283e4
TT
31#include "gdbcmd.h"
32#include "value.h"
33#include "command.h"
c906108c 34#include "inferior.h"
45741a9c 35#include "infrun.h"
4de283e4
TT
36#include "gdbthread.h"
37#include "target.h"
c906108c 38#include "language.h"
4de283e4
TT
39#include "gdb-demangle.h"
40#include "filenames.h"
41#include "annotate.h"
42#include "symfile.h"
d55e5aa6 43#include "objfiles.h"
4de283e4
TT
44#include "source.h"
45#include "linespec.h"
46#include "completer.h"
47#include "ui-out.h"
48#include "cli/cli-script.h"
49#include "block.h"
50#include "solib.h"
51#include "solist.h"
d55e5aa6 52#include "observable.h"
4de283e4
TT
53#include "memattr.h"
54#include "ada-lang.h"
55#include "top.h"
56#include "valprint.h"
57#include "jit.h"
65d79d4b 58#include "parser-defs.h"
4de283e4 59#include "gdb_regex.h"
55aa24fb 60#include "probe.h"
4de283e4
TT
61#include "cli/cli-utils.h"
62#include "continuations.h"
d55e5aa6 63#include "stack.h"
4de283e4
TT
64#include "skip.h"
65#include "ax-gdb.h"
66#include "dummy-frame.h"
67#include "interps.h"
68#include "common/format.h"
cfc31633 69#include "thread-fsm.h"
5d5658a1 70#include "tid-parse.h"
4de283e4
TT
71#include "cli/cli-style.h"
72#include "mi/mi-main.h"
d3ce09f5 73
1042e4c0
SS
74/* readline include files */
75#include "readline/readline.h"
76#include "readline/history.h"
77
78/* readline defines this. */
79#undef savestring
80
034dad6f 81#include "mi/mi-common.h"
6dddc817 82#include "extension.h"
325fac50 83#include <algorithm>
5ed8105e 84#include "progspace-and-thread.h"
6c5b2ebe 85#include "common/array-view.h"
76f9c9cf 86#include "common/gdb_optional.h"
104c1213 87
e7e8980f
YQ
88/* Enums for exception-handling support. */
89enum exception_event_kind
90{
91 EX_EVENT_THROW,
591f19e8 92 EX_EVENT_RETHROW,
e7e8980f
YQ
93 EX_EVENT_CATCH
94};
95
4a64f543 96/* Prototypes for local functions. */
c906108c 97
896b6bda 98static void map_breakpoint_numbers (const char *,
48649e1b 99 gdb::function_view<void (breakpoint *)>);
c906108c 100
348d480f
PA
101static void breakpoint_re_set_default (struct breakpoint *);
102
f00aae0f
KS
103static void
104 create_sals_from_location_default (const struct event_location *location,
105 struct linespec_result *canonical,
106 enum bptype type_wanted);
983af33b
SDJ
107
108static void create_breakpoints_sal_default (struct gdbarch *,
109 struct linespec_result *,
e1e01040
PA
110 gdb::unique_xmalloc_ptr<char>,
111 gdb::unique_xmalloc_ptr<char>,
112 enum bptype,
983af33b
SDJ
113 enum bpdisp, int, int,
114 int,
115 const struct breakpoint_ops *,
44f238bb 116 int, int, int, unsigned);
983af33b 117
6c5b2ebe
PA
118static std::vector<symtab_and_line> decode_location_default
119 (struct breakpoint *b, const struct event_location *location,
120 struct program_space *search_pspace);
983af33b 121
a6535de1
TT
122static int can_use_hardware_watchpoint
123 (const std::vector<value_ref_ptr> &vals);
c906108c 124
a14ed312 125static void mention (struct breakpoint *);
c906108c 126
348d480f
PA
127static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
128 enum bptype,
c0a91b2b 129 const struct breakpoint_ops *);
3742cc8b
YQ
130static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
131 const struct symtab_and_line *);
132
4a64f543
MS
133/* This function is used in gdbtk sources and thus can not be made
134 static. */
63c252f8 135struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 136 struct symtab_and_line,
c0a91b2b
TT
137 enum bptype,
138 const struct breakpoint_ops *);
c906108c 139
06edf0c0
PA
140static struct breakpoint *
141 momentary_breakpoint_from_master (struct breakpoint *orig,
142 enum bptype type,
a1aa2221
LM
143 const struct breakpoint_ops *ops,
144 int loc_enabled);
06edf0c0 145
76897487
KB
146static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
147
a6d9a66e
UW
148static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
149 CORE_ADDR bpaddr,
88f7da05 150 enum bptype bptype);
76897487 151
6c95b8df
PA
152static void describe_other_breakpoints (struct gdbarch *,
153 struct program_space *, CORE_ADDR,
5af949e3 154 struct obj_section *, int);
c906108c 155
85d721b8
PA
156static int watchpoint_locations_match (struct bp_location *loc1,
157 struct bp_location *loc2);
158
f1310107 159static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 160 const struct address_space *aspace,
f1310107
TJB
161 CORE_ADDR addr);
162
d35ae833 163static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 164 const address_space *,
d35ae833
PA
165 CORE_ADDR, int);
166
834c0d03 167static int remove_breakpoint (struct bp_location *);
b2b6a7da 168static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 169
e514a9d6 170static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 171
a14ed312 172static int hw_breakpoint_used_count (void);
c906108c 173
a1398e0c
PA
174static int hw_watchpoint_use_count (struct breakpoint *);
175
176static int hw_watchpoint_used_count_others (struct breakpoint *except,
177 enum bptype type,
178 int *other_type_used);
c906108c 179
816338b5
SS
180static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
181 int count);
c906108c 182
fe3f5fa8 183static void free_bp_location (struct bp_location *loc);
f431efe5
PA
184static void incref_bp_location (struct bp_location *loc);
185static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 186
39d61571 187static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 188
44702360
PA
189/* update_global_location_list's modes of operation wrt to whether to
190 insert locations now. */
191enum ugll_insert_mode
192{
193 /* Don't insert any breakpoint locations into the inferior, only
194 remove already-inserted locations that no longer should be
195 inserted. Functions that delete a breakpoint or breakpoints
196 should specify this mode, so that deleting a breakpoint doesn't
197 have the side effect of inserting the locations of other
198 breakpoints that are marked not-inserted, but should_be_inserted
199 returns true on them.
200
201 This behavior is useful is situations close to tear-down -- e.g.,
202 after an exec, while the target still has execution, but
203 breakpoint shadows of the previous executable image should *NOT*
204 be restored to the new image; or before detaching, where the
205 target still has execution and wants to delete breakpoints from
206 GDB's lists, and all breakpoints had already been removed from
207 the inferior. */
208 UGLL_DONT_INSERT,
209
a25a5a45
PA
210 /* May insert breakpoints iff breakpoints_should_be_inserted_now
211 claims breakpoints should be inserted now. */
04086b45
PA
212 UGLL_MAY_INSERT,
213
a25a5a45
PA
214 /* Insert locations now, irrespective of
215 breakpoints_should_be_inserted_now. E.g., say all threads are
216 stopped right now, and the user did "continue". We need to
217 insert breakpoints _before_ resuming the target, but
218 UGLL_MAY_INSERT wouldn't insert them, because
219 breakpoints_should_be_inserted_now returns false at that point,
220 as no thread is running yet. */
04086b45 221 UGLL_INSERT
44702360
PA
222};
223
224static void update_global_location_list (enum ugll_insert_mode);
a5606eee 225
44702360 226static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 227
d77f58be 228static int is_hardware_watchpoint (const struct breakpoint *bpt);
74960c60
VP
229
230static void insert_breakpoint_locations (void);
a5606eee 231
0b39b52e 232static void trace_pass_command (const char *, int);
1042e4c0 233
558a9d82
YQ
234static void set_tracepoint_count (int num);
235
9c06b0b4
TJB
236static int is_masked_watchpoint (const struct breakpoint *b);
237
b775012e
LM
238static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
239
983af33b
SDJ
240/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
241 otherwise. */
242
243static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 244
2060206e
PA
245/* The breakpoint_ops structure to be inherited by all breakpoint_ops
246 that are implemented on top of software or hardware breakpoints
247 (user breakpoints, internal and momentary breakpoints, etc.). */
248static struct breakpoint_ops bkpt_base_breakpoint_ops;
249
250/* Internal breakpoints class type. */
06edf0c0 251static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
252
253/* Momentary breakpoints class type. */
06edf0c0
PA
254static struct breakpoint_ops momentary_breakpoint_ops;
255
2060206e
PA
256/* The breakpoint_ops structure to be used in regular user created
257 breakpoints. */
258struct breakpoint_ops bkpt_breakpoint_ops;
259
55aa24fb
SDJ
260/* Breakpoints set on probes. */
261static struct breakpoint_ops bkpt_probe_breakpoint_ops;
262
e7e0cddf 263/* Dynamic printf class type. */
c5867ab6 264struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 265
d3ce09f5
SS
266/* The style in which to perform a dynamic printf. This is a user
267 option because different output options have different tradeoffs;
268 if GDB does the printing, there is better error handling if there
269 is a problem with any of the arguments, but using an inferior
270 function lets you have special-purpose printers and sending of
271 output to the same place as compiled-in print functions. */
272
273static const char dprintf_style_gdb[] = "gdb";
274static const char dprintf_style_call[] = "call";
275static const char dprintf_style_agent[] = "agent";
276static const char *const dprintf_style_enums[] = {
277 dprintf_style_gdb,
278 dprintf_style_call,
279 dprintf_style_agent,
280 NULL
281};
282static const char *dprintf_style = dprintf_style_gdb;
283
284/* The function to use for dynamic printf if the preferred style is to
285 call into the inferior. The value is simply a string that is
286 copied into the command, so it can be anything that GDB can
287 evaluate to a callable address, not necessarily a function name. */
288
bde6261a 289static char *dprintf_function;
d3ce09f5
SS
290
291/* The channel to use for dynamic printf if the preferred style is to
292 call into the inferior; if a nonempty string, it will be passed to
293 the call as the first argument, with the format string as the
294 second. As with the dprintf function, this can be anything that
295 GDB knows how to evaluate, so in addition to common choices like
296 "stderr", this could be an app-specific expression like
297 "mystreams[curlogger]". */
298
bde6261a 299static char *dprintf_channel;
d3ce09f5
SS
300
301/* True if dprintf commands should continue to operate even if GDB
302 has disconnected. */
303static int disconnected_dprintf = 1;
304
5cea2a26
PA
305struct command_line *
306breakpoint_commands (struct breakpoint *b)
307{
d1b0a7bf 308 return b->commands ? b->commands.get () : NULL;
5cea2a26 309}
3daf8fe5 310
f3b1572e
PA
311/* Flag indicating that a command has proceeded the inferior past the
312 current breakpoint. */
313
314static int breakpoint_proceeded;
315
956a9fb9 316const char *
2cec12e5
AR
317bpdisp_text (enum bpdisp disp)
318{
4a64f543
MS
319 /* NOTE: the following values are a part of MI protocol and
320 represent values of 'disp' field returned when inferior stops at
321 a breakpoint. */
bc043ef3 322 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 323
2cec12e5
AR
324 return bpdisps[(int) disp];
325}
c906108c 326
4a64f543 327/* Prototypes for exported functions. */
c906108c 328/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 329 if such is available. */
c906108c
SS
330static int can_use_hw_watchpoints;
331
920d2a44
AC
332static void
333show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
334 struct cmd_list_element *c,
335 const char *value)
336{
3e43a32a
MS
337 fprintf_filtered (file,
338 _("Debugger's willingness to use "
339 "watchpoint hardware is %s.\n"),
920d2a44
AC
340 value);
341}
342
fa8d40ab
JJ
343/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
344 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 345 for unrecognized breakpoint locations.
fa8d40ab
JJ
346 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
347static enum auto_boolean pending_break_support;
920d2a44
AC
348static void
349show_pending_break_support (struct ui_file *file, int from_tty,
350 struct cmd_list_element *c,
351 const char *value)
352{
3e43a32a
MS
353 fprintf_filtered (file,
354 _("Debugger's behavior regarding "
355 "pending breakpoints is %s.\n"),
920d2a44
AC
356 value);
357}
fa8d40ab 358
765dc015 359/* If 1, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 360 set with "break" but falling in read-only memory.
765dc015
VP
361 If 0, gdb will warn about such breakpoints, but won't automatically
362 use hardware breakpoints. */
363static int automatic_hardware_breakpoints;
364static void
365show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
366 struct cmd_list_element *c,
367 const char *value)
368{
3e43a32a
MS
369 fprintf_filtered (file,
370 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
371 value);
372}
373
a25a5a45
PA
374/* If on, GDB keeps breakpoints inserted even if the inferior is
375 stopped, and immediately inserts any new breakpoints as soon as
376 they're created. If off (default), GDB keeps breakpoints off of
377 the target as long as possible. That is, it delays inserting
378 breakpoints until the next resume, and removes them again when the
379 target fully stops. This is a bit safer in case GDB crashes while
380 processing user input. */
381static int always_inserted_mode = 0;
72d0e2c5 382
33e5cbd6 383static void
74960c60 384show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 385 struct cmd_list_element *c, const char *value)
74960c60 386{
a25a5a45
PA
387 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
388 value);
74960c60
VP
389}
390
b57bacec
PA
391/* See breakpoint.h. */
392
33e5cbd6 393int
a25a5a45 394breakpoints_should_be_inserted_now (void)
33e5cbd6 395{
a25a5a45
PA
396 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
397 {
398 /* If breakpoints are global, they should be inserted even if no
399 thread under gdb's control is running, or even if there are
400 no threads under GDB's control yet. */
401 return 1;
402 }
403 else if (target_has_execution)
404 {
a25a5a45
PA
405 if (always_inserted_mode)
406 {
407 /* The user wants breakpoints inserted even if all threads
408 are stopped. */
409 return 1;
410 }
411
b57bacec
PA
412 if (threads_are_executing ())
413 return 1;
372316f1
PA
414
415 /* Don't remove breakpoints yet if, even though all threads are
416 stopped, we still have events to process. */
08036331 417 for (thread_info *tp : all_non_exited_threads ())
372316f1
PA
418 if (tp->resumed
419 && tp->suspend.waitstatus_pending_p)
420 return 1;
a25a5a45
PA
421 }
422 return 0;
33e5cbd6 423}
765dc015 424
b775012e
LM
425static const char condition_evaluation_both[] = "host or target";
426
427/* Modes for breakpoint condition evaluation. */
428static const char condition_evaluation_auto[] = "auto";
429static const char condition_evaluation_host[] = "host";
430static const char condition_evaluation_target[] = "target";
431static const char *const condition_evaluation_enums[] = {
432 condition_evaluation_auto,
433 condition_evaluation_host,
434 condition_evaluation_target,
435 NULL
436};
437
438/* Global that holds the current mode for breakpoint condition evaluation. */
439static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441/* Global that we use to display information to the user (gets its value from
442 condition_evaluation_mode_1. */
443static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445/* Translate a condition evaluation mode MODE into either "host"
446 or "target". This is used mostly to translate from "auto" to the
447 real setting that is being used. It returns the translated
448 evaluation mode. */
449
450static const char *
451translate_condition_evaluation_mode (const char *mode)
452{
453 if (mode == condition_evaluation_auto)
454 {
455 if (target_supports_evaluation_of_breakpoint_conditions ())
456 return condition_evaluation_target;
457 else
458 return condition_evaluation_host;
459 }
460 else
461 return mode;
462}
463
464/* Discovers what condition_evaluation_auto translates to. */
465
466static const char *
467breakpoint_condition_evaluation_mode (void)
468{
469 return translate_condition_evaluation_mode (condition_evaluation_mode);
470}
471
472/* Return true if GDB should evaluate breakpoint conditions or false
473 otherwise. */
474
475static int
476gdb_evaluates_breakpoint_condition_p (void)
477{
478 const char *mode = breakpoint_condition_evaluation_mode ();
479
480 return (mode == condition_evaluation_host);
481}
482
c906108c
SS
483/* Are we executing breakpoint commands? */
484static int executing_breakpoint_commands;
485
c02f5703
MS
486/* Are overlay event breakpoints enabled? */
487static int overlay_events_enabled;
488
e09342b5
TJB
489/* See description in breakpoint.h. */
490int target_exact_watchpoints = 0;
491
c906108c 492/* Walk the following statement or block through all breakpoints.
e5dd4106 493 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 494 current breakpoint. */
c906108c 495
5c44784c 496#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 497
5c44784c
JM
498#define ALL_BREAKPOINTS_SAFE(B,TMP) \
499 for (B = breakpoint_chain; \
500 B ? (TMP=B->next, 1): 0; \
501 B = TMP)
c906108c 502
4a64f543
MS
503/* Similar iterator for the low-level breakpoints. SAFE variant is
504 not provided so update_global_location_list must not be called
505 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 506
876fa593 507#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
508 for (BP_TMP = bp_locations; \
509 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 510 BP_TMP++)
7cc221ef 511
b775012e
LM
512/* Iterates through locations with address ADDRESS for the currently selected
513 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
514 to where the loop should start from.
515 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516 appropriate location to start with. */
517
518#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
519 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520 BP_LOCP_TMP = BP_LOCP_START; \
521 BP_LOCP_START \
f5336ca5 522 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
523 && (*BP_LOCP_TMP)->address == ADDRESS); \
524 BP_LOCP_TMP++)
525
1042e4c0
SS
526/* Iterator for tracepoints only. */
527
528#define ALL_TRACEPOINTS(B) \
529 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 530 if (is_tracepoint (B))
1042e4c0 531
7cc221ef 532/* Chains of all breakpoints defined. */
c906108c
SS
533
534struct breakpoint *breakpoint_chain;
535
f5336ca5 536/* Array is sorted by bp_locations_compare - primarily by the ADDRESS. */
876fa593 537
f5336ca5 538static struct bp_location **bp_locations;
876fa593 539
f5336ca5 540/* Number of elements of BP_LOCATIONS. */
876fa593 541
f5336ca5 542static unsigned bp_locations_count;
876fa593 543
4a64f543 544/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 545 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 546 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 547 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 548 an address you need to read. */
876fa593 549
f5336ca5 550static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 551
4a64f543
MS
552/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
554 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 556 scan for shadow bytes for an address you need to read. */
876fa593 557
f5336ca5 558static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 559
4a64f543 560/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
561 from the bp_locations array, but for which a hit may still be
562 reported by a target. */
1123588c 563static std::vector<bp_location *> moribund_locations;
20874c92 564
c906108c
SS
565/* Number of last breakpoint made. */
566
95a42b64
TT
567static int breakpoint_count;
568
86b17b60
PA
569/* The value of `breakpoint_count' before the last command that
570 created breakpoints. If the last (break-like) command created more
571 than one breakpoint, then the difference between BREAKPOINT_COUNT
572 and PREV_BREAKPOINT_COUNT is more than one. */
573static int prev_breakpoint_count;
c906108c 574
1042e4c0
SS
575/* Number of last tracepoint made. */
576
95a42b64 577static int tracepoint_count;
1042e4c0 578
6149aea9
PA
579static struct cmd_list_element *breakpoint_set_cmdlist;
580static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 581struct cmd_list_element *save_cmdlist;
6149aea9 582
badd37ce
SDJ
583/* See declaration at breakpoint.h. */
584
585struct breakpoint *
586breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587 void *user_data)
588{
589 struct breakpoint *b = NULL;
590
591 ALL_BREAKPOINTS (b)
592 {
593 if (func (b, user_data) != 0)
594 break;
595 }
596
597 return b;
598}
599
468d015d
JJ
600/* Return whether a breakpoint is an active enabled breakpoint. */
601static int
602breakpoint_enabled (struct breakpoint *b)
603{
0d381245 604 return (b->enable_state == bp_enabled);
468d015d
JJ
605}
606
c906108c
SS
607/* Set breakpoint count to NUM. */
608
95a42b64 609static void
fba45db2 610set_breakpoint_count (int num)
c906108c 611{
86b17b60 612 prev_breakpoint_count = breakpoint_count;
c906108c 613 breakpoint_count = num;
4fa62494 614 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
615}
616
86b17b60
PA
617/* Used by `start_rbreak_breakpoints' below, to record the current
618 breakpoint count before "rbreak" creates any breakpoint. */
619static int rbreak_start_breakpoint_count;
620
95a42b64
TT
621/* Called at the start an "rbreak" command to record the first
622 breakpoint made. */
86b17b60 623
c80049d3 624scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
95a42b64 625{
86b17b60 626 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
627}
628
629/* Called at the end of an "rbreak" command to record the last
630 breakpoint made. */
86b17b60 631
c80049d3 632scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
95a42b64 633{
86b17b60 634 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
635}
636
4a64f543 637/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
638
639void
fba45db2 640clear_breakpoint_hit_counts (void)
c906108c
SS
641{
642 struct breakpoint *b;
643
644 ALL_BREAKPOINTS (b)
645 b->hit_count = 0;
646}
647
c906108c 648\f
48cb2d85
VP
649/* Return the breakpoint with the specified number, or NULL
650 if the number does not refer to an existing breakpoint. */
651
652struct breakpoint *
653get_breakpoint (int num)
654{
655 struct breakpoint *b;
656
657 ALL_BREAKPOINTS (b)
658 if (b->number == num)
659 return b;
660
661 return NULL;
662}
5c44784c 663
c906108c 664\f
adc36818 665
b775012e
LM
666/* Mark locations as "conditions have changed" in case the target supports
667 evaluating conditions on its side. */
668
669static void
670mark_breakpoint_modified (struct breakpoint *b)
671{
672 struct bp_location *loc;
673
674 /* This is only meaningful if the target is
675 evaluating conditions and if the user has
676 opted for condition evaluation on the target's
677 side. */
678 if (gdb_evaluates_breakpoint_condition_p ()
679 || !target_supports_evaluation_of_breakpoint_conditions ())
680 return;
681
682 if (!is_breakpoint (b))
683 return;
684
685 for (loc = b->loc; loc; loc = loc->next)
686 loc->condition_changed = condition_modified;
687}
688
689/* Mark location as "conditions have changed" in case the target supports
690 evaluating conditions on its side. */
691
692static void
693mark_breakpoint_location_modified (struct bp_location *loc)
694{
695 /* This is only meaningful if the target is
696 evaluating conditions and if the user has
697 opted for condition evaluation on the target's
698 side. */
699 if (gdb_evaluates_breakpoint_condition_p ()
700 || !target_supports_evaluation_of_breakpoint_conditions ())
701
702 return;
703
704 if (!is_breakpoint (loc->owner))
705 return;
706
707 loc->condition_changed = condition_modified;
708}
709
710/* Sets the condition-evaluation mode using the static global
711 condition_evaluation_mode. */
712
713static void
eb4c3f4a 714set_condition_evaluation_mode (const char *args, int from_tty,
b775012e
LM
715 struct cmd_list_element *c)
716{
b775012e
LM
717 const char *old_mode, *new_mode;
718
719 if ((condition_evaluation_mode_1 == condition_evaluation_target)
720 && !target_supports_evaluation_of_breakpoint_conditions ())
721 {
722 condition_evaluation_mode_1 = condition_evaluation_mode;
723 warning (_("Target does not support breakpoint condition evaluation.\n"
724 "Using host evaluation mode instead."));
725 return;
726 }
727
728 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
abf1152a
JK
731 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
732 settings was "auto". */
733 condition_evaluation_mode = condition_evaluation_mode_1;
734
b775012e
LM
735 /* Only update the mode if the user picked a different one. */
736 if (new_mode != old_mode)
737 {
738 struct bp_location *loc, **loc_tmp;
739 /* If the user switched to a different evaluation mode, we
740 need to synch the changes with the target as follows:
741
742 "host" -> "target": Send all (valid) conditions to the target.
743 "target" -> "host": Remove all the conditions from the target.
744 */
745
b775012e
LM
746 if (new_mode == condition_evaluation_target)
747 {
748 /* Mark everything modified and synch conditions with the
749 target. */
750 ALL_BP_LOCATIONS (loc, loc_tmp)
751 mark_breakpoint_location_modified (loc);
752 }
753 else
754 {
755 /* Manually mark non-duplicate locations to synch conditions
756 with the target. We do this to remove all the conditions the
757 target knows about. */
758 ALL_BP_LOCATIONS (loc, loc_tmp)
759 if (is_breakpoint (loc->owner) && loc->inserted)
760 loc->needs_update = 1;
761 }
762
763 /* Do the update. */
44702360 764 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
765 }
766
767 return;
768}
769
770/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
771 what "auto" is translating to. */
772
773static void
774show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775 struct cmd_list_element *c, const char *value)
776{
777 if (condition_evaluation_mode == condition_evaluation_auto)
778 fprintf_filtered (file,
779 _("Breakpoint condition evaluation "
780 "mode is %s (currently %s).\n"),
781 value,
782 breakpoint_condition_evaluation_mode ());
783 else
784 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785 value);
786}
787
788/* A comparison function for bp_location AP and BP that is used by
789 bsearch. This comparison function only cares about addresses, unlike
f5336ca5 790 the more general bp_locations_compare function. */
b775012e
LM
791
792static int
f5336ca5 793bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 794{
9a3c8263
SM
795 const struct bp_location *a = *(const struct bp_location **) ap;
796 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
797
798 if (a->address == b->address)
799 return 0;
800 else
801 return ((a->address > b->address) - (a->address < b->address));
802}
803
804/* Helper function to skip all bp_locations with addresses
805 less than ADDRESS. It returns the first bp_location that
806 is greater than or equal to ADDRESS. If none is found, just
807 return NULL. */
808
809static struct bp_location **
810get_first_locp_gte_addr (CORE_ADDR address)
811{
812 struct bp_location dummy_loc;
813 struct bp_location *dummy_locp = &dummy_loc;
814 struct bp_location **locp_found = NULL;
815
816 /* Initialize the dummy location's address field. */
b775012e
LM
817 dummy_loc.address = address;
818
819 /* Find a close match to the first location at ADDRESS. */
9a3c8263 820 locp_found = ((struct bp_location **)
f5336ca5 821 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 822 sizeof (struct bp_location **),
f5336ca5 823 bp_locations_compare_addrs));
b775012e
LM
824
825 /* Nothing was found, nothing left to do. */
826 if (locp_found == NULL)
827 return NULL;
828
829 /* We may have found a location that is at ADDRESS but is not the first in the
830 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 831 while ((locp_found - 1) >= bp_locations
b775012e
LM
832 && (*(locp_found - 1))->address == address)
833 locp_found--;
834
835 return locp_found;
836}
837
adc36818 838void
7a26bd4d 839set_breakpoint_condition (struct breakpoint *b, const char *exp,
adc36818
PM
840 int from_tty)
841{
3a5c3e22
PA
842 xfree (b->cond_string);
843 b->cond_string = NULL;
adc36818 844
3a5c3e22 845 if (is_watchpoint (b))
adc36818 846 {
3a5c3e22
PA
847 struct watchpoint *w = (struct watchpoint *) b;
848
4d01a485 849 w->cond_exp.reset ();
3a5c3e22
PA
850 }
851 else
852 {
853 struct bp_location *loc;
854
855 for (loc = b->loc; loc; loc = loc->next)
856 {
4d01a485 857 loc->cond.reset ();
b775012e
LM
858
859 /* No need to free the condition agent expression
860 bytecode (if we have one). We will handle this
861 when we go through update_global_location_list. */
3a5c3e22 862 }
adc36818 863 }
adc36818
PM
864
865 if (*exp == 0)
866 {
867 if (from_tty)
868 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869 }
870 else
871 {
bbc13ae3 872 const char *arg = exp;
cc59ec59 873
adc36818
PM
874 /* I don't know if it matters whether this is the string the user
875 typed in or the decompiled expression. */
876 b->cond_string = xstrdup (arg);
877 b->condition_not_parsed = 0;
878
879 if (is_watchpoint (b))
880 {
3a5c3e22
PA
881 struct watchpoint *w = (struct watchpoint *) b;
882
699bd4cf 883 innermost_block_tracker tracker;
adc36818 884 arg = exp;
699bd4cf 885 w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
adc36818
PM
886 if (*arg)
887 error (_("Junk at end of expression"));
699bd4cf 888 w->cond_exp_valid_block = tracker.block ();
adc36818
PM
889 }
890 else
891 {
3a5c3e22
PA
892 struct bp_location *loc;
893
adc36818
PM
894 for (loc = b->loc; loc; loc = loc->next)
895 {
896 arg = exp;
897 loc->cond =
1bb9788d
TT
898 parse_exp_1 (&arg, loc->address,
899 block_for_pc (loc->address), 0);
adc36818
PM
900 if (*arg)
901 error (_("Junk at end of expression"));
902 }
903 }
904 }
b775012e
LM
905 mark_breakpoint_modified (b);
906
76727919 907 gdb::observers::breakpoint_modified.notify (b);
adc36818
PM
908}
909
d55637df
TT
910/* Completion for the "condition" command. */
911
eb3ff9a5 912static void
6f937416 913condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 914 completion_tracker &tracker,
6f937416 915 const char *text, const char *word)
d55637df 916{
6f937416 917 const char *space;
d55637df 918
f1735a53
TT
919 text = skip_spaces (text);
920 space = skip_to_space (text);
d55637df
TT
921 if (*space == '\0')
922 {
923 int len;
924 struct breakpoint *b;
d55637df
TT
925
926 if (text[0] == '$')
927 {
928 /* We don't support completion of history indices. */
eb3ff9a5
PA
929 if (!isdigit (text[1]))
930 complete_internalvar (tracker, &text[1]);
931 return;
d55637df
TT
932 }
933
934 /* We're completing the breakpoint number. */
935 len = strlen (text);
936
937 ALL_BREAKPOINTS (b)
58ce7251
SDJ
938 {
939 char number[50];
940
941 xsnprintf (number, sizeof (number), "%d", b->number);
942
943 if (strncmp (number, text, len) == 0)
b02f78f9 944 tracker.add_completion (make_unique_xstrdup (number));
58ce7251 945 }
d55637df 946
eb3ff9a5 947 return;
d55637df
TT
948 }
949
950 /* We're completing the expression part. */
f1735a53 951 text = skip_spaces (space);
eb3ff9a5 952 expression_completer (cmd, tracker, text, word);
d55637df
TT
953}
954
c906108c
SS
955/* condition N EXP -- set break condition of breakpoint N to EXP. */
956
957static void
0b39b52e 958condition_command (const char *arg, int from_tty)
c906108c 959{
52f0bd74 960 struct breakpoint *b;
0b39b52e 961 const char *p;
52f0bd74 962 int bnum;
c906108c
SS
963
964 if (arg == 0)
e2e0b3e5 965 error_no_arg (_("breakpoint number"));
c906108c
SS
966
967 p = arg;
968 bnum = get_number (&p);
5c44784c 969 if (bnum == 0)
8a3fe4f8 970 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
971
972 ALL_BREAKPOINTS (b)
973 if (b->number == bnum)
2f069f6f 974 {
6dddc817
DE
975 /* Check if this breakpoint has a "stop" method implemented in an
976 extension language. This method and conditions entered into GDB
977 from the CLI are mutually exclusive. */
978 const struct extension_language_defn *extlang
979 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
980
981 if (extlang != NULL)
982 {
983 error (_("Only one stop condition allowed. There is currently"
984 " a %s stop condition defined for this breakpoint."),
985 ext_lang_capitalized_name (extlang));
986 }
2566ad2d 987 set_breakpoint_condition (b, p, from_tty);
b775012e
LM
988
989 if (is_breakpoint (b))
44702360 990 update_global_location_list (UGLL_MAY_INSERT);
b775012e 991
2f069f6f
JB
992 return;
993 }
c906108c 994
8a3fe4f8 995 error (_("No breakpoint number %d."), bnum);
c906108c
SS
996}
997
a7bdde9e
VP
998/* Check that COMMAND do not contain commands that are suitable
999 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1000 Throw if any such commands is found. */
1001
a7bdde9e
VP
1002static void
1003check_no_tracepoint_commands (struct command_line *commands)
1004{
1005 struct command_line *c;
cc59ec59 1006
a7bdde9e
VP
1007 for (c = commands; c; c = c->next)
1008 {
a7bdde9e 1009 if (c->control_type == while_stepping_control)
3e43a32a
MS
1010 error (_("The 'while-stepping' command can "
1011 "only be used for tracepoints"));
a7bdde9e 1012
12973681
TT
1013 check_no_tracepoint_commands (c->body_list_0.get ());
1014 check_no_tracepoint_commands (c->body_list_1.get ());
a7bdde9e
VP
1015
1016 /* Not that command parsing removes leading whitespace and comment
4a64f543 1017 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1018 command directly. */
1019 if (strstr (c->line, "collect ") == c->line)
1020 error (_("The 'collect' command can only be used for tracepoints"));
1021
51661e93
VP
1022 if (strstr (c->line, "teval ") == c->line)
1023 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1024 }
1025}
1026
c1fc2657 1027struct longjmp_breakpoint : public breakpoint
3b0871f4 1028{
c1fc2657 1029 ~longjmp_breakpoint () override;
3b0871f4
SM
1030};
1031
d77f58be
SS
1032/* Encapsulate tests for different types of tracepoints. */
1033
3b0871f4
SM
1034static bool
1035is_tracepoint_type (bptype type)
d9b3f62e
PA
1036{
1037 return (type == bp_tracepoint
1038 || type == bp_fast_tracepoint
1039 || type == bp_static_tracepoint);
1040}
1041
3b0871f4
SM
1042static bool
1043is_longjmp_type (bptype type)
1044{
1045 return type == bp_longjmp || type == bp_exception;
1046}
1047
a7bdde9e 1048int
d77f58be 1049is_tracepoint (const struct breakpoint *b)
a7bdde9e 1050{
d9b3f62e 1051 return is_tracepoint_type (b->type);
a7bdde9e 1052}
d9b3f62e 1053
a5e364af
SM
1054/* Factory function to create an appropriate instance of breakpoint given
1055 TYPE. */
1056
1057static std::unique_ptr<breakpoint>
1058new_breakpoint_from_type (bptype type)
1059{
1060 breakpoint *b;
1061
1062 if (is_tracepoint_type (type))
c1fc2657 1063 b = new tracepoint ();
3b0871f4 1064 else if (is_longjmp_type (type))
c1fc2657 1065 b = new longjmp_breakpoint ();
a5e364af
SM
1066 else
1067 b = new breakpoint ();
1068
1069 return std::unique_ptr<breakpoint> (b);
1070}
1071
e5dd4106 1072/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1073 breakpoint. This function will throw an exception if a problem is
1074 found. */
48cb2d85 1075
95a42b64
TT
1076static void
1077validate_commands_for_breakpoint (struct breakpoint *b,
1078 struct command_line *commands)
48cb2d85 1079{
d77f58be 1080 if (is_tracepoint (b))
a7bdde9e 1081 {
c9a6ce02 1082 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1083 struct command_line *c;
1084 struct command_line *while_stepping = 0;
c9a6ce02
PA
1085
1086 /* Reset the while-stepping step count. The previous commands
1087 might have included a while-stepping action, while the new
1088 ones might not. */
1089 t->step_count = 0;
1090
1091 /* We need to verify that each top-level element of commands is
1092 valid for tracepoints, that there's at most one
1093 while-stepping element, and that the while-stepping's body
1094 has valid tracing commands excluding nested while-stepping.
1095 We also need to validate the tracepoint action line in the
1096 context of the tracepoint --- validate_actionline actually
1097 has side effects, like setting the tracepoint's
1098 while-stepping STEP_COUNT, in addition to checking if the
1099 collect/teval actions parse and make sense in the
1100 tracepoint's context. */
a7bdde9e
VP
1101 for (c = commands; c; c = c->next)
1102 {
a7bdde9e
VP
1103 if (c->control_type == while_stepping_control)
1104 {
1105 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1106 error (_("The 'while-stepping' command "
1107 "cannot be used for fast tracepoint"));
0fb4aa4b 1108 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1109 error (_("The 'while-stepping' command "
1110 "cannot be used for static tracepoint"));
a7bdde9e
VP
1111
1112 if (while_stepping)
3e43a32a
MS
1113 error (_("The 'while-stepping' command "
1114 "can be used only once"));
a7bdde9e
VP
1115 else
1116 while_stepping = c;
1117 }
c9a6ce02
PA
1118
1119 validate_actionline (c->line, b);
a7bdde9e
VP
1120 }
1121 if (while_stepping)
1122 {
1123 struct command_line *c2;
1124
12973681
TT
1125 gdb_assert (while_stepping->body_list_1 == nullptr);
1126 c2 = while_stepping->body_list_0.get ();
a7bdde9e
VP
1127 for (; c2; c2 = c2->next)
1128 {
a7bdde9e
VP
1129 if (c2->control_type == while_stepping_control)
1130 error (_("The 'while-stepping' command cannot be nested"));
1131 }
1132 }
1133 }
1134 else
1135 {
1136 check_no_tracepoint_commands (commands);
1137 }
95a42b64
TT
1138}
1139
0fb4aa4b
PA
1140/* Return a vector of all the static tracepoints set at ADDR. The
1141 caller is responsible for releasing the vector. */
1142
f51e0e20 1143std::vector<breakpoint *>
0fb4aa4b
PA
1144static_tracepoints_here (CORE_ADDR addr)
1145{
1146 struct breakpoint *b;
f51e0e20 1147 std::vector<breakpoint *> found;
0fb4aa4b
PA
1148 struct bp_location *loc;
1149
1150 ALL_BREAKPOINTS (b)
1151 if (b->type == bp_static_tracepoint)
1152 {
1153 for (loc = b->loc; loc; loc = loc->next)
1154 if (loc->address == addr)
f51e0e20 1155 found.push_back (b);
0fb4aa4b
PA
1156 }
1157
1158 return found;
1159}
1160
95a42b64 1161/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1162 validate that only allowed commands are included. */
95a42b64
TT
1163
1164void
4a64f543 1165breakpoint_set_commands (struct breakpoint *b,
12973681 1166 counted_command_line &&commands)
95a42b64 1167{
93921405 1168 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1169
d1b0a7bf 1170 b->commands = std::move (commands);
76727919 1171 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1172}
1173
45a43567
TT
1174/* Set the internal `silent' flag on the breakpoint. Note that this
1175 is not the same as the "silent" that may appear in the breakpoint's
1176 commands. */
1177
1178void
1179breakpoint_set_silent (struct breakpoint *b, int silent)
1180{
1181 int old_silent = b->silent;
1182
1183 b->silent = silent;
1184 if (old_silent != silent)
76727919 1185 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1186}
1187
1188/* Set the thread for this breakpoint. If THREAD is -1, make the
1189 breakpoint work for any thread. */
1190
1191void
1192breakpoint_set_thread (struct breakpoint *b, int thread)
1193{
1194 int old_thread = b->thread;
1195
1196 b->thread = thread;
1197 if (old_thread != thread)
76727919 1198 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1199}
1200
1201/* Set the task for this breakpoint. If TASK is 0, make the
1202 breakpoint work for any task. */
1203
1204void
1205breakpoint_set_task (struct breakpoint *b, int task)
1206{
1207 int old_task = b->task;
1208
1209 b->task = task;
1210 if (old_task != task)
76727919 1211 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1212}
1213
95a42b64 1214static void
896b6bda 1215commands_command_1 (const char *arg, int from_tty,
4a64f543 1216 struct command_line *control)
95a42b64 1217{
d1b0a7bf 1218 counted_command_line cmd;
999700cd
PW
1219 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1220 NULL after the call to read_command_lines if the user provides an empty
1221 list of command by just typing "end". */
1222 bool cmd_read = false;
95a42b64 1223
896b6bda
PA
1224 std::string new_arg;
1225
95a42b64
TT
1226 if (arg == NULL || !*arg)
1227 {
86b17b60 1228 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1229 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1230 breakpoint_count);
95a42b64 1231 else if (breakpoint_count > 0)
896b6bda 1232 new_arg = string_printf ("%d", breakpoint_count);
48649e1b
TT
1233 arg = new_arg.c_str ();
1234 }
1235
1236 map_breakpoint_numbers
1237 (arg, [&] (breakpoint *b)
1238 {
999700cd 1239 if (!cmd_read)
48649e1b 1240 {
999700cd 1241 gdb_assert (cmd == NULL);
48649e1b 1242 if (control != NULL)
12973681 1243 cmd = control->body_list_0;
48649e1b
TT
1244 else
1245 {
81b1e71c
TT
1246 std::string str
1247 = string_printf (_("Type commands for breakpoint(s) "
1248 "%s, one per line."),
1249 arg);
48649e1b 1250
60b3cef2
TT
1251 auto do_validate = [=] (const char *line)
1252 {
1253 validate_actionline (line, b);
1254 };
1255 gdb::function_view<void (const char *)> validator;
1256 if (is_tracepoint (b))
1257 validator = do_validate;
1258
1259 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
48649e1b 1260 }
999700cd 1261 cmd_read = true;
48649e1b
TT
1262 }
1263
1264 /* If a breakpoint was on the list more than once, we don't need to
1265 do anything. */
1266 if (b->commands != cmd)
1267 {
d1b0a7bf 1268 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b 1269 b->commands = cmd;
76727919 1270 gdb::observers::breakpoint_modified.notify (b);
48649e1b
TT
1271 }
1272 });
95a42b64
TT
1273}
1274
1275static void
0b39b52e 1276commands_command (const char *arg, int from_tty)
95a42b64
TT
1277{
1278 commands_command_1 (arg, from_tty, NULL);
c906108c 1279}
40c03ae8
EZ
1280
1281/* Like commands_command, but instead of reading the commands from
1282 input stream, takes them from an already parsed command structure.
1283
1284 This is used by cli-script.c to DTRT with breakpoint commands
1285 that are part of if and while bodies. */
1286enum command_control_type
896b6bda 1287commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1288{
95a42b64
TT
1289 commands_command_1 (arg, 0, cmd);
1290 return simple_control;
40c03ae8 1291}
876fa593
JK
1292
1293/* Return non-zero if BL->TARGET_INFO contains valid information. */
1294
1295static int
1296bp_location_has_shadow (struct bp_location *bl)
1297{
1298 if (bl->loc_type != bp_loc_software_breakpoint)
1299 return 0;
1300 if (!bl->inserted)
1301 return 0;
1302 if (bl->target_info.shadow_len == 0)
e5dd4106 1303 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1304 return 0;
1305 return 1;
1306}
1307
9d497a19
PA
1308/* Update BUF, which is LEN bytes read from the target address
1309 MEMADDR, by replacing a memory breakpoint with its shadowed
1310 contents.
1311
1312 If READBUF is not NULL, this buffer must not overlap with the of
1313 the breakpoint location's shadow_contents buffer. Otherwise, a
1314 failed assertion internal error will be raised. */
1315
1316static void
1317one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1318 const gdb_byte *writebuf_org,
1319 ULONGEST memaddr, LONGEST len,
1320 struct bp_target_info *target_info,
1321 struct gdbarch *gdbarch)
1322{
1323 /* Now do full processing of the found relevant range of elements. */
1324 CORE_ADDR bp_addr = 0;
1325 int bp_size = 0;
1326 int bptoffset = 0;
1327
1328 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1329 current_program_space->aspace, 0))
1330 {
1331 /* The breakpoint is inserted in a different address space. */
1332 return;
1333 }
1334
1335 /* Addresses and length of the part of the breakpoint that
1336 we need to copy. */
1337 bp_addr = target_info->placed_address;
1338 bp_size = target_info->shadow_len;
1339
1340 if (bp_addr + bp_size <= memaddr)
1341 {
1342 /* The breakpoint is entirely before the chunk of memory we are
1343 reading. */
1344 return;
1345 }
1346
1347 if (bp_addr >= memaddr + len)
1348 {
1349 /* The breakpoint is entirely after the chunk of memory we are
1350 reading. */
1351 return;
1352 }
1353
1354 /* Offset within shadow_contents. */
1355 if (bp_addr < memaddr)
1356 {
1357 /* Only copy the second part of the breakpoint. */
1358 bp_size -= memaddr - bp_addr;
1359 bptoffset = memaddr - bp_addr;
1360 bp_addr = memaddr;
1361 }
1362
1363 if (bp_addr + bp_size > memaddr + len)
1364 {
1365 /* Only copy the first part of the breakpoint. */
1366 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1367 }
1368
1369 if (readbuf != NULL)
1370 {
1371 /* Verify that the readbuf buffer does not overlap with the
1372 shadow_contents buffer. */
1373 gdb_assert (target_info->shadow_contents >= readbuf + len
1374 || readbuf >= (target_info->shadow_contents
1375 + target_info->shadow_len));
1376
1377 /* Update the read buffer with this inserted breakpoint's
1378 shadow. */
1379 memcpy (readbuf + bp_addr - memaddr,
1380 target_info->shadow_contents + bptoffset, bp_size);
1381 }
1382 else
1383 {
1384 const unsigned char *bp;
0d5ed153
MR
1385 CORE_ADDR addr = target_info->reqstd_address;
1386 int placed_size;
9d497a19
PA
1387
1388 /* Update the shadow with what we want to write to memory. */
1389 memcpy (target_info->shadow_contents + bptoffset,
1390 writebuf_org + bp_addr - memaddr, bp_size);
1391
1392 /* Determine appropriate breakpoint contents and size for this
1393 address. */
0d5ed153 1394 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1395
1396 /* Update the final write buffer with this inserted
1397 breakpoint's INSN. */
1398 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1399 }
1400}
1401
8defab1a 1402/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1403 by replacing any memory breakpoints with their shadowed contents.
1404
35c63cd8
JB
1405 If READBUF is not NULL, this buffer must not overlap with any of
1406 the breakpoint location's shadow_contents buffers. Otherwise,
1407 a failed assertion internal error will be raised.
1408
876fa593 1409 The range of shadowed area by each bp_location is:
f5336ca5
PA
1410 bl->address - bp_locations_placed_address_before_address_max
1411 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1412 The range we were requested to resolve shadows for is:
1413 memaddr ... memaddr + len
1414 Thus the safe cutoff boundaries for performance optimization are
35df4500 1415 memaddr + len <= (bl->address
f5336ca5 1416 - bp_locations_placed_address_before_address_max)
876fa593 1417 and:
f5336ca5 1418 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1419
8defab1a 1420void
f0ba3972
PA
1421breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1422 const gdb_byte *writebuf_org,
1423 ULONGEST memaddr, LONGEST len)
c906108c 1424{
4a64f543
MS
1425 /* Left boundary, right boundary and median element of our binary
1426 search. */
876fa593
JK
1427 unsigned bc_l, bc_r, bc;
1428
4a64f543
MS
1429 /* Find BC_L which is a leftmost element which may affect BUF
1430 content. It is safe to report lower value but a failure to
1431 report higher one. */
876fa593
JK
1432
1433 bc_l = 0;
f5336ca5 1434 bc_r = bp_locations_count;
876fa593
JK
1435 while (bc_l + 1 < bc_r)
1436 {
35df4500 1437 struct bp_location *bl;
876fa593
JK
1438
1439 bc = (bc_l + bc_r) / 2;
f5336ca5 1440 bl = bp_locations[bc];
876fa593 1441
4a64f543
MS
1442 /* Check first BL->ADDRESS will not overflow due to the added
1443 constant. Then advance the left boundary only if we are sure
1444 the BC element can in no way affect the BUF content (MEMADDR
1445 to MEMADDR + LEN range).
876fa593 1446
f5336ca5 1447 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1448 offset so that we cannot miss a breakpoint with its shadow
1449 range tail still reaching MEMADDR. */
c5aa993b 1450
f5336ca5 1451 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1452 >= bl->address)
f5336ca5 1453 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1454 <= memaddr))
876fa593
JK
1455 bc_l = bc;
1456 else
1457 bc_r = bc;
1458 }
1459
128070bb
PA
1460 /* Due to the binary search above, we need to make sure we pick the
1461 first location that's at BC_L's address. E.g., if there are
1462 multiple locations at the same address, BC_L may end up pointing
1463 at a duplicate location, and miss the "master"/"inserted"
1464 location. Say, given locations L1, L2 and L3 at addresses A and
1465 B:
1466
1467 L1@A, L2@A, L3@B, ...
1468
1469 BC_L could end up pointing at location L2, while the "master"
1470 location could be L1. Since the `loc->inserted' flag is only set
1471 on "master" locations, we'd forget to restore the shadow of L1
1472 and L2. */
1473 while (bc_l > 0
f5336ca5 1474 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1475 bc_l--;
1476
876fa593
JK
1477 /* Now do full processing of the found relevant range of elements. */
1478
f5336ca5 1479 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1480 {
f5336ca5 1481 struct bp_location *bl = bp_locations[bc];
876fa593 1482
35df4500
TJB
1483 /* bp_location array has BL->OWNER always non-NULL. */
1484 if (bl->owner->type == bp_none)
8a3fe4f8 1485 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1486 bl->owner->number);
ffce0d52 1487
e5dd4106 1488 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1489 content. */
1490
f5336ca5
PA
1491 if (bl->address >= bp_locations_placed_address_before_address_max
1492 && memaddr + len <= (bl->address
1493 - bp_locations_placed_address_before_address_max))
876fa593
JK
1494 break;
1495
35df4500 1496 if (!bp_location_has_shadow (bl))
c5aa993b 1497 continue;
6c95b8df 1498
9d497a19
PA
1499 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1500 memaddr, len, &bl->target_info, bl->gdbarch);
1501 }
c906108c 1502}
9d497a19 1503
c906108c 1504\f
c5aa993b 1505
b775012e
LM
1506/* Return true if BPT is either a software breakpoint or a hardware
1507 breakpoint. */
1508
1509int
1510is_breakpoint (const struct breakpoint *bpt)
1511{
1512 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1513 || bpt->type == bp_hardware_breakpoint
1514 || bpt->type == bp_dprintf);
b775012e
LM
1515}
1516
60e1c644
PA
1517/* Return true if BPT is of any hardware watchpoint kind. */
1518
a5606eee 1519static int
d77f58be 1520is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1521{
1522 return (bpt->type == bp_hardware_watchpoint
1523 || bpt->type == bp_read_watchpoint
1524 || bpt->type == bp_access_watchpoint);
1525}
7270d8f2 1526
60e1c644
PA
1527/* Return true if BPT is of any watchpoint kind, hardware or
1528 software. */
1529
3a5c3e22 1530int
d77f58be 1531is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1532{
1533 return (is_hardware_watchpoint (bpt)
1534 || bpt->type == bp_watchpoint);
1535}
1536
3a5c3e22
PA
1537/* Returns true if the current thread and its running state are safe
1538 to evaluate or update watchpoint B. Watchpoints on local
1539 expressions need to be evaluated in the context of the thread that
1540 was current when the watchpoint was created, and, that thread needs
1541 to be stopped to be able to select the correct frame context.
1542 Watchpoints on global expressions can be evaluated on any thread,
1543 and in any state. It is presently left to the target allowing
1544 memory accesses when threads are running. */
f6bc2008
PA
1545
1546static int
3a5c3e22 1547watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1548{
c1fc2657 1549 return (b->pspace == current_program_space
d7e15655
TT
1550 && (b->watchpoint_thread == null_ptid
1551 || (inferior_ptid == b->watchpoint_thread
00431a78 1552 && !inferior_thread ()->executing)));
f6bc2008
PA
1553}
1554
d0fb5eae
JK
1555/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1556 associated bp_watchpoint_scope breakpoint. */
1557
1558static void
3a5c3e22 1559watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1560{
c1fc2657 1561 if (w->related_breakpoint != w)
d0fb5eae 1562 {
c1fc2657
SM
1563 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1564 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1565 w->related_breakpoint->disposition = disp_del_at_next_stop;
1566 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1567 w->related_breakpoint = w;
d0fb5eae 1568 }
c1fc2657 1569 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1570}
1571
bb9d5f81
PP
1572/* Extract a bitfield value from value VAL using the bit parameters contained in
1573 watchpoint W. */
1574
1575static struct value *
1576extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1577{
1578 struct value *bit_val;
1579
1580 if (val == NULL)
1581 return NULL;
1582
1583 bit_val = allocate_value (value_type (val));
1584
1585 unpack_value_bitfield (bit_val,
1586 w->val_bitpos,
1587 w->val_bitsize,
1588 value_contents_for_printing (val),
1589 value_offset (val),
1590 val);
1591
1592 return bit_val;
1593}
1594
c6d81124
PA
1595/* Allocate a dummy location and add it to B, which must be a software
1596 watchpoint. This is required because even if a software watchpoint
1597 is not watching any memory, bpstat_stop_status requires a location
1598 to be able to report stops. */
1599
1600static void
1601software_watchpoint_add_no_memory_location (struct breakpoint *b,
1602 struct program_space *pspace)
1603{
1604 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1605
1606 b->loc = allocate_bp_location (b);
1607 b->loc->pspace = pspace;
1608 b->loc->address = -1;
1609 b->loc->length = -1;
1610}
1611
1612/* Returns true if B is a software watchpoint that is not watching any
1613 memory (e.g., "watch $pc"). */
1614
1615static int
1616is_no_memory_software_watchpoint (struct breakpoint *b)
1617{
1618 return (b->type == bp_watchpoint
1619 && b->loc != NULL
1620 && b->loc->next == NULL
1621 && b->loc->address == -1
1622 && b->loc->length == -1);
1623}
1624
567e1b4e
JB
1625/* Assuming that B is a watchpoint:
1626 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1627 - Evaluate expression and store the result in B->val
567e1b4e
JB
1628 - Evaluate the condition if there is one, and store the result
1629 in b->loc->cond.
a5606eee
VP
1630 - Update the list of values that must be watched in B->loc.
1631
4a64f543
MS
1632 If the watchpoint disposition is disp_del_at_next_stop, then do
1633 nothing. If this is local watchpoint that is out of scope, delete
1634 it.
1635
1636 Even with `set breakpoint always-inserted on' the watchpoints are
1637 removed + inserted on each stop here. Normal breakpoints must
1638 never be removed because they might be missed by a running thread
1639 when debugging in non-stop mode. On the other hand, hardware
1640 watchpoints (is_hardware_watchpoint; processed here) are specific
1641 to each LWP since they are stored in each LWP's hardware debug
1642 registers. Therefore, such LWP must be stopped first in order to
1643 be able to modify its hardware watchpoints.
1644
1645 Hardware watchpoints must be reset exactly once after being
1646 presented to the user. It cannot be done sooner, because it would
1647 reset the data used to present the watchpoint hit to the user. And
1648 it must not be done later because it could display the same single
1649 watchpoint hit during multiple GDB stops. Note that the latter is
1650 relevant only to the hardware watchpoint types bp_read_watchpoint
1651 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1652 not user-visible - its hit is suppressed if the memory content has
1653 not changed.
1654
1655 The following constraints influence the location where we can reset
1656 hardware watchpoints:
1657
1658 * target_stopped_by_watchpoint and target_stopped_data_address are
1659 called several times when GDB stops.
1660
1661 [linux]
1662 * Multiple hardware watchpoints can be hit at the same time,
1663 causing GDB to stop. GDB only presents one hardware watchpoint
1664 hit at a time as the reason for stopping, and all the other hits
1665 are presented later, one after the other, each time the user
1666 requests the execution to be resumed. Execution is not resumed
1667 for the threads still having pending hit event stored in
1668 LWP_INFO->STATUS. While the watchpoint is already removed from
1669 the inferior on the first stop the thread hit event is kept being
1670 reported from its cached value by linux_nat_stopped_data_address
1671 until the real thread resume happens after the watchpoint gets
1672 presented and thus its LWP_INFO->STATUS gets reset.
1673
1674 Therefore the hardware watchpoint hit can get safely reset on the
1675 watchpoint removal from inferior. */
a79d3c27 1676
b40ce68a 1677static void
3a5c3e22 1678update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1679{
a5606eee 1680 int within_current_scope;
a5606eee 1681 struct frame_id saved_frame_id;
66076460 1682 int frame_saved;
a5606eee 1683
f6bc2008
PA
1684 /* If this is a local watchpoint, we only want to check if the
1685 watchpoint frame is in scope if the current thread is the thread
1686 that was used to create the watchpoint. */
1687 if (!watchpoint_in_thread_scope (b))
1688 return;
1689
c1fc2657 1690 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1691 return;
1692
66076460 1693 frame_saved = 0;
a5606eee
VP
1694
1695 /* Determine if the watchpoint is within scope. */
1696 if (b->exp_valid_block == NULL)
1697 within_current_scope = 1;
1698 else
1699 {
b5db5dfc
UW
1700 struct frame_info *fi = get_current_frame ();
1701 struct gdbarch *frame_arch = get_frame_arch (fi);
1702 CORE_ADDR frame_pc = get_frame_pc (fi);
1703
c9cf6e20
MG
1704 /* If we're at a point where the stack has been destroyed
1705 (e.g. in a function epilogue), unwinding may not work
1706 properly. Do not attempt to recreate locations at this
b5db5dfc 1707 point. See similar comments in watchpoint_check. */
c9cf6e20 1708 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1709 return;
66076460
DJ
1710
1711 /* Save the current frame's ID so we can restore it after
1712 evaluating the watchpoint expression on its own frame. */
1713 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1714 took a frame parameter, so that we didn't have to change the
1715 selected frame. */
1716 frame_saved = 1;
1717 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1718
a5606eee
VP
1719 fi = frame_find_by_id (b->watchpoint_frame);
1720 within_current_scope = (fi != NULL);
1721 if (within_current_scope)
1722 select_frame (fi);
1723 }
1724
b5db5dfc
UW
1725 /* We don't free locations. They are stored in the bp_location array
1726 and update_global_location_list will eventually delete them and
1727 remove breakpoints if needed. */
c1fc2657 1728 b->loc = NULL;
b5db5dfc 1729
a5606eee
VP
1730 if (within_current_scope && reparse)
1731 {
bbc13ae3 1732 const char *s;
d63d0675 1733
4d01a485 1734 b->exp.reset ();
d63d0675 1735 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1736 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1737 /* If the meaning of expression itself changed, the old value is
1738 no longer relevant. We don't want to report a watchpoint hit
1739 to the user when the old value and the new value may actually
1740 be completely different objects. */
fa4727a6
DJ
1741 b->val = NULL;
1742 b->val_valid = 0;
60e1c644
PA
1743
1744 /* Note that unlike with breakpoints, the watchpoint's condition
1745 expression is stored in the breakpoint object, not in the
1746 locations (re)created below. */
c1fc2657 1747 if (b->cond_string != NULL)
60e1c644 1748 {
4d01a485 1749 b->cond_exp.reset ();
60e1c644 1750
c1fc2657 1751 s = b->cond_string;
1bb9788d 1752 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1753 }
a5606eee 1754 }
a5606eee
VP
1755
1756 /* If we failed to parse the expression, for example because
1757 it refers to a global variable in a not-yet-loaded shared library,
1758 don't try to insert watchpoint. We don't automatically delete
1759 such watchpoint, though, since failure to parse expression
1760 is different from out-of-scope watchpoint. */
e8369a73 1761 if (!target_has_execution)
2d134ed3
PA
1762 {
1763 /* Without execution, memory can't change. No use to try and
1764 set watchpoint locations. The watchpoint will be reset when
1765 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1766 if (!can_use_hw_watchpoints)
1767 {
c1fc2657
SM
1768 if (b->ops->works_in_software_mode (b))
1769 b->type = bp_watchpoint;
e8369a73 1770 else
638aa5a1
AB
1771 error (_("Can't set read/access watchpoint when "
1772 "hardware watchpoints are disabled."));
e8369a73 1773 }
2d134ed3
PA
1774 }
1775 else if (within_current_scope && b->exp)
a5606eee 1776 {
0cf6dd15 1777 int pc = 0;
a6535de1 1778 std::vector<value_ref_ptr> val_chain;
8d49165d 1779 struct value *v, *result;
2d134ed3 1780 struct program_space *frame_pspace;
a5606eee 1781
4d01a485 1782 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
a5606eee 1783
a5606eee
VP
1784 /* Avoid setting b->val if it's already set. The meaning of
1785 b->val is 'the last value' user saw, and we should update
1786 it only if we reported that last value to user. As it
9c06b0b4
TJB
1787 happens, the code that reports it updates b->val directly.
1788 We don't keep track of the memory value for masked
1789 watchpoints. */
c1fc2657 1790 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1791 {
bb9d5f81 1792 if (b->val_bitsize != 0)
850645cf
TT
1793 v = extract_bitfield_from_watchpoint_value (b, v);
1794 b->val = release_value (v);
fa4727a6
DJ
1795 b->val_valid = 1;
1796 }
a5606eee 1797
2d134ed3
PA
1798 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1799
a5606eee 1800 /* Look at each value on the value chain. */
a6535de1
TT
1801 gdb_assert (!val_chain.empty ());
1802 for (const value_ref_ptr &iter : val_chain)
a5606eee 1803 {
a6535de1
TT
1804 v = iter.get ();
1805
a5606eee
VP
1806 /* If it's a memory location, and GDB actually needed
1807 its contents to evaluate the expression, then we
fa4727a6
DJ
1808 must watch it. If the first value returned is
1809 still lazy, that means an error occurred reading it;
1810 watch it anyway in case it becomes readable. */
a5606eee 1811 if (VALUE_LVAL (v) == lval_memory
a6535de1 1812 && (v == val_chain[0] || ! value_lazy (v)))
a5606eee
VP
1813 {
1814 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1815
a5606eee
VP
1816 /* We only watch structs and arrays if user asked
1817 for it explicitly, never if they just happen to
1818 appear in the middle of some value chain. */
fa4727a6 1819 if (v == result
a5606eee
VP
1820 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1821 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1822 {
1823 CORE_ADDR addr;
f486487f 1824 enum target_hw_bp_type type;
a5606eee 1825 struct bp_location *loc, **tmp;
bb9d5f81
PP
1826 int bitpos = 0, bitsize = 0;
1827
1828 if (value_bitsize (v) != 0)
1829 {
1830 /* Extract the bit parameters out from the bitfield
1831 sub-expression. */
1832 bitpos = value_bitpos (v);
1833 bitsize = value_bitsize (v);
1834 }
1835 else if (v == result && b->val_bitsize != 0)
1836 {
1837 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1838 lvalue whose bit parameters are saved in the fields
1839 VAL_BITPOS and VAL_BITSIZE. */
1840 bitpos = b->val_bitpos;
1841 bitsize = b->val_bitsize;
1842 }
a5606eee 1843
42ae5230 1844 addr = value_address (v);
bb9d5f81
PP
1845 if (bitsize != 0)
1846 {
1847 /* Skip the bytes that don't contain the bitfield. */
1848 addr += bitpos / 8;
1849 }
1850
a5606eee 1851 type = hw_write;
c1fc2657 1852 if (b->type == bp_read_watchpoint)
a5606eee 1853 type = hw_read;
c1fc2657 1854 else if (b->type == bp_access_watchpoint)
a5606eee 1855 type = hw_access;
3a5c3e22 1856
c1fc2657
SM
1857 loc = allocate_bp_location (b);
1858 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1859 ;
1860 *tmp = loc;
a6d9a66e 1861 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1862
1863 loc->pspace = frame_pspace;
f17d9474 1864 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1865
1866 if (bitsize != 0)
1867 {
1868 /* Just cover the bytes that make up the bitfield. */
1869 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1870 }
1871 else
1872 loc->length = TYPE_LENGTH (value_type (v));
1873
a5606eee
VP
1874 loc->watchpoint_type = type;
1875 }
1876 }
9fa40276
TJB
1877 }
1878
1879 /* Change the type of breakpoint between hardware assisted or
1880 an ordinary watchpoint depending on the hardware support
1881 and free hardware slots. REPARSE is set when the inferior
1882 is started. */
a9634178 1883 if (reparse)
9fa40276 1884 {
e09342b5 1885 int reg_cnt;
9fa40276
TJB
1886 enum bp_loc_type loc_type;
1887 struct bp_location *bl;
a5606eee 1888
a9634178 1889 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
1890
1891 if (reg_cnt)
9fa40276
TJB
1892 {
1893 int i, target_resources_ok, other_type_used;
a1398e0c 1894 enum bptype type;
9fa40276 1895
a9634178
TJB
1896 /* Use an exact watchpoint when there's only one memory region to be
1897 watched, and only one debug register is needed to watch it. */
1898 b->exact = target_exact_watchpoints && reg_cnt == 1;
1899
9fa40276 1900 /* We need to determine how many resources are already
e09342b5
TJB
1901 used for all other hardware watchpoints plus this one
1902 to see if we still have enough resources to also fit
a1398e0c
PA
1903 this watchpoint in as well. */
1904
1905 /* If this is a software watchpoint, we try to turn it
1906 to a hardware one -- count resources as if B was of
1907 hardware watchpoint type. */
c1fc2657 1908 type = b->type;
a1398e0c
PA
1909 if (type == bp_watchpoint)
1910 type = bp_hardware_watchpoint;
1911
1912 /* This watchpoint may or may not have been placed on
1913 the list yet at this point (it won't be in the list
1914 if we're trying to create it for the first time,
1915 through watch_command), so always account for it
1916 manually. */
1917
1918 /* Count resources used by all watchpoints except B. */
c1fc2657 1919 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
1920
1921 /* Add in the resources needed for B. */
c1fc2657 1922 i += hw_watchpoint_use_count (b);
a1398e0c
PA
1923
1924 target_resources_ok
1925 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 1926 if (target_resources_ok <= 0)
a9634178 1927 {
c1fc2657 1928 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
1929
1930 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
1931 error (_("Target does not support this type of "
1932 "hardware watchpoint."));
9c06b0b4
TJB
1933 else if (target_resources_ok < 0 && !sw_mode)
1934 error (_("There are not enough available hardware "
1935 "resources for this watchpoint."));
a1398e0c
PA
1936
1937 /* Downgrade to software watchpoint. */
c1fc2657 1938 b->type = bp_watchpoint;
a1398e0c
PA
1939 }
1940 else
1941 {
1942 /* If this was a software watchpoint, we've just
1943 found we have enough resources to turn it to a
1944 hardware watchpoint. Otherwise, this is a
1945 nop. */
c1fc2657 1946 b->type = type;
a9634178 1947 }
9fa40276 1948 }
c1fc2657 1949 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
1950 {
1951 if (!can_use_hw_watchpoints)
1952 error (_("Can't set read/access watchpoint when "
1953 "hardware watchpoints are disabled."));
1954 else
1955 error (_("Expression cannot be implemented with "
1956 "read/access watchpoint."));
1957 }
9fa40276 1958 else
c1fc2657 1959 b->type = bp_watchpoint;
9fa40276 1960
c1fc2657 1961 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 1962 : bp_loc_hardware_watchpoint);
c1fc2657 1963 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
1964 bl->loc_type = loc_type;
1965 }
1966
c7437ca6
PA
1967 /* If a software watchpoint is not watching any memory, then the
1968 above left it without any location set up. But,
1969 bpstat_stop_status requires a location to be able to report
1970 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
1971 if (b->type == bp_watchpoint && b->loc == NULL)
1972 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
1973 }
1974 else if (!within_current_scope)
7270d8f2 1975 {
ac74f770
MS
1976 printf_filtered (_("\
1977Watchpoint %d deleted because the program has left the block\n\
1978in which its expression is valid.\n"),
c1fc2657 1979 b->number);
d0fb5eae 1980 watchpoint_del_at_next_stop (b);
7270d8f2 1981 }
a5606eee
VP
1982
1983 /* Restore the selected frame. */
66076460
DJ
1984 if (frame_saved)
1985 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
1986}
1987
a5606eee 1988
74960c60 1989/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
1990 inserted in the inferior. We don't differentiate the type of BL's owner
1991 (breakpoint vs. tracepoint), although insert_location in tracepoint's
1992 breakpoint_ops is not defined, because in insert_bp_location,
1993 tracepoint's insert_location will not be called. */
74960c60 1994static int
35df4500 1995should_be_inserted (struct bp_location *bl)
74960c60 1996{
35df4500 1997 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
1998 return 0;
1999
35df4500 2000 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2001 return 0;
2002
35df4500 2003 if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2004 return 0;
2005
f8eba3c6
TT
2006 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2007 return 0;
2008
56710373
PA
2009 /* This is set for example, when we're attached to the parent of a
2010 vfork, and have detached from the child. The child is running
2011 free, and we expect it to do an exec or exit, at which point the
2012 OS makes the parent schedulable again (and the target reports
2013 that the vfork is done). Until the child is done with the shared
2014 memory region, do not insert breakpoints in the parent, otherwise
2015 the child could still trip on the parent's breakpoints. Since
2016 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2017 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2018 return 0;
2019
31e77af2 2020 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2021 location, except if the breakpoint is a single-step breakpoint,
2022 and the breakpoint's thread is the thread which is stepping past
2023 a breakpoint. */
31e77af2
PA
2024 if ((bl->loc_type == bp_loc_software_breakpoint
2025 || bl->loc_type == bp_loc_hardware_breakpoint)
2026 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2027 bl->address)
2028 /* The single-step breakpoint may be inserted at the location
2029 we're trying to step if the instruction branches to itself.
2030 However, the instruction won't be executed at all and it may
2031 break the semantics of the instruction, for example, the
2032 instruction is a conditional branch or updates some flags.
2033 We can't fix it unless GDB is able to emulate the instruction
2034 or switch to displaced stepping. */
2035 && !(bl->owner->type == bp_single_step
2036 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1
PA
2037 {
2038 if (debug_infrun)
2039 {
2040 fprintf_unfiltered (gdb_stdlog,
2041 "infrun: skipping breakpoint: "
2042 "stepping past insn at: %s\n",
2043 paddress (bl->gdbarch, bl->address));
2044 }
2045 return 0;
2046 }
31e77af2 2047
963f9c80
PA
2048 /* Don't insert watchpoints if we're trying to step past the
2049 instruction that triggered one. */
2050 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2051 && stepping_past_nonsteppable_watchpoint ())
2052 {
2053 if (debug_infrun)
2054 {
2055 fprintf_unfiltered (gdb_stdlog,
2056 "infrun: stepping past non-steppable watchpoint. "
2057 "skipping watchpoint at %s:%d\n",
2058 paddress (bl->gdbarch, bl->address),
2059 bl->length);
2060 }
2061 return 0;
2062 }
2063
74960c60
VP
2064 return 1;
2065}
2066
934709f0
PW
2067/* Same as should_be_inserted but does the check assuming
2068 that the location is not duplicated. */
2069
2070static int
2071unduplicated_should_be_inserted (struct bp_location *bl)
2072{
2073 int result;
2074 const int save_duplicate = bl->duplicate;
2075
2076 bl->duplicate = 0;
2077 result = should_be_inserted (bl);
2078 bl->duplicate = save_duplicate;
2079 return result;
2080}
2081
b775012e
LM
2082/* Parses a conditional described by an expression COND into an
2083 agent expression bytecode suitable for evaluation
2084 by the bytecode interpreter. Return NULL if there was
2085 any error during parsing. */
2086
833177a4 2087static agent_expr_up
b775012e
LM
2088parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2089{
833177a4 2090 if (cond == NULL)
b775012e
LM
2091 return NULL;
2092
833177a4
PA
2093 agent_expr_up aexpr;
2094
b775012e
LM
2095 /* We don't want to stop processing, so catch any errors
2096 that may show up. */
a70b8144 2097 try
b775012e 2098 {
036e657b 2099 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2100 }
2101
230d2906 2102 catch (const gdb_exception_error &ex)
b775012e
LM
2103 {
2104 /* If we got here, it means the condition could not be parsed to a valid
2105 bytecode expression and thus can't be evaluated on the target's side.
2106 It's no use iterating through the conditions. */
b775012e
LM
2107 }
2108
2109 /* We have a valid agent expression. */
2110 return aexpr;
2111}
2112
2113/* Based on location BL, create a list of breakpoint conditions to be
2114 passed on to the target. If we have duplicated locations with different
2115 conditions, we will add such conditions to the list. The idea is that the
2116 target will evaluate the list of conditions and will only notify GDB when
2117 one of them is true. */
2118
2119static void
2120build_target_condition_list (struct bp_location *bl)
2121{
2122 struct bp_location **locp = NULL, **loc2p;
2123 int null_condition_or_parse_error = 0;
2124 int modified = bl->needs_update;
2125 struct bp_location *loc;
2126
8b4f3082 2127 /* Release conditions left over from a previous insert. */
3cde5c42 2128 bl->target_info.conditions.clear ();
8b4f3082 2129
b775012e
LM
2130 /* This is only meaningful if the target is
2131 evaluating conditions and if the user has
2132 opted for condition evaluation on the target's
2133 side. */
2134 if (gdb_evaluates_breakpoint_condition_p ()
2135 || !target_supports_evaluation_of_breakpoint_conditions ())
2136 return;
2137
2138 /* Do a first pass to check for locations with no assigned
2139 conditions or conditions that fail to parse to a valid agent expression
2140 bytecode. If any of these happen, then it's no use to send conditions
2141 to the target since this location will always trigger and generate a
2142 response back to GDB. */
2143 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144 {
2145 loc = (*loc2p);
2146 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147 {
2148 if (modified)
2149 {
b775012e
LM
2150 /* Re-parse the conditions since something changed. In that
2151 case we already freed the condition bytecodes (see
2152 force_breakpoint_reinsertion). We just
2153 need to parse the condition to bytecodes again. */
833177a4
PA
2154 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2155 loc->cond.get ());
b775012e
LM
2156 }
2157
2158 /* If we have a NULL bytecode expression, it means something
2159 went wrong or we have a null condition expression. */
2160 if (!loc->cond_bytecode)
2161 {
2162 null_condition_or_parse_error = 1;
2163 break;
2164 }
2165 }
2166 }
2167
2168 /* If any of these happened, it means we will have to evaluate the conditions
2169 for the location's address on gdb's side. It is no use keeping bytecodes
2170 for all the other duplicate locations, thus we free all of them here.
2171
2172 This is so we have a finer control over which locations' conditions are
2173 being evaluated by GDB or the remote stub. */
2174 if (null_condition_or_parse_error)
2175 {
2176 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2177 {
2178 loc = (*loc2p);
2179 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2180 {
2181 /* Only go as far as the first NULL bytecode is
2182 located. */
2183 if (!loc->cond_bytecode)
2184 return;
2185
833177a4 2186 loc->cond_bytecode.reset ();
b775012e
LM
2187 }
2188 }
2189 }
2190
2191 /* No NULL conditions or failed bytecode generation. Build a condition list
2192 for this location's address. */
2193 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2194 {
2195 loc = (*loc2p);
2196 if (loc->cond
2197 && is_breakpoint (loc->owner)
2198 && loc->pspace->num == bl->pspace->num
2199 && loc->owner->enable_state == bp_enabled
2200 && loc->enabled)
3cde5c42
PA
2201 {
2202 /* Add the condition to the vector. This will be used later
2203 to send the conditions to the target. */
2204 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2205 }
b775012e
LM
2206 }
2207
2208 return;
2209}
2210
d3ce09f5
SS
2211/* Parses a command described by string CMD into an agent expression
2212 bytecode suitable for evaluation by the bytecode interpreter.
2213 Return NULL if there was any error during parsing. */
2214
833177a4 2215static agent_expr_up
d3ce09f5
SS
2216parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2217{
bbc13ae3
KS
2218 const char *cmdrest;
2219 const char *format_start, *format_end;
d3ce09f5
SS
2220 struct gdbarch *gdbarch = get_current_arch ();
2221
833177a4 2222 if (cmd == NULL)
d3ce09f5
SS
2223 return NULL;
2224
2225 cmdrest = cmd;
2226
2227 if (*cmdrest == ',')
2228 ++cmdrest;
f1735a53 2229 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2230
2231 if (*cmdrest++ != '"')
2232 error (_("No format string following the location"));
2233
2234 format_start = cmdrest;
2235
8e481c3b 2236 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2237
2238 format_end = cmdrest;
2239
2240 if (*cmdrest++ != '"')
2241 error (_("Bad format string, non-terminated '\"'."));
2242
f1735a53 2243 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2244
2245 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2246 error (_("Invalid argument syntax"));
2247
2248 if (*cmdrest == ',')
2249 cmdrest++;
f1735a53 2250 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2251
2252 /* For each argument, make an expression. */
2253
8e481c3b 2254 std::vector<struct expression *> argvec;
d3ce09f5
SS
2255 while (*cmdrest != '\0')
2256 {
bbc13ae3 2257 const char *cmd1;
d3ce09f5
SS
2258
2259 cmd1 = cmdrest;
4d01a485 2260 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2261 argvec.push_back (expr.release ());
d3ce09f5
SS
2262 cmdrest = cmd1;
2263 if (*cmdrest == ',')
2264 ++cmdrest;
2265 }
2266
833177a4
PA
2267 agent_expr_up aexpr;
2268
d3ce09f5
SS
2269 /* We don't want to stop processing, so catch any errors
2270 that may show up. */
a70b8144 2271 try
d3ce09f5 2272 {
036e657b
JB
2273 aexpr = gen_printf (scope, gdbarch, 0, 0,
2274 format_start, format_end - format_start,
8e481c3b 2275 argvec.size (), argvec.data ());
d3ce09f5 2276 }
230d2906 2277 catch (const gdb_exception_error &ex)
d3ce09f5
SS
2278 {
2279 /* If we got here, it means the command could not be parsed to a valid
2280 bytecode expression and thus can't be evaluated on the target's side.
2281 It's no use iterating through the other commands. */
d3ce09f5 2282 }
492d29ea 2283
d3ce09f5
SS
2284 /* We have a valid agent expression, return it. */
2285 return aexpr;
2286}
2287
2288/* Based on location BL, create a list of breakpoint commands to be
2289 passed on to the target. If we have duplicated locations with
2290 different commands, we will add any such to the list. */
2291
2292static void
2293build_target_command_list (struct bp_location *bl)
2294{
2295 struct bp_location **locp = NULL, **loc2p;
2296 int null_command_or_parse_error = 0;
2297 int modified = bl->needs_update;
2298 struct bp_location *loc;
2299
3cde5c42
PA
2300 /* Clear commands left over from a previous insert. */
2301 bl->target_info.tcommands.clear ();
8b4f3082 2302
41fac0cf 2303 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2304 return;
2305
41fac0cf
PA
2306 /* For now, limit to agent-style dprintf breakpoints. */
2307 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2308 return;
2309
41fac0cf
PA
2310 /* For now, if we have any duplicate location that isn't a dprintf,
2311 don't install the target-side commands, as that would make the
2312 breakpoint not be reported to the core, and we'd lose
2313 control. */
2314 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2315 {
2316 loc = (*loc2p);
2317 if (is_breakpoint (loc->owner)
2318 && loc->pspace->num == bl->pspace->num
2319 && loc->owner->type != bp_dprintf)
2320 return;
2321 }
2322
d3ce09f5
SS
2323 /* Do a first pass to check for locations with no assigned
2324 conditions or conditions that fail to parse to a valid agent expression
2325 bytecode. If any of these happen, then it's no use to send conditions
2326 to the target since this location will always trigger and generate a
2327 response back to GDB. */
2328 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2329 {
2330 loc = (*loc2p);
2331 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2332 {
2333 if (modified)
2334 {
d3ce09f5
SS
2335 /* Re-parse the commands since something changed. In that
2336 case we already freed the command bytecodes (see
2337 force_breakpoint_reinsertion). We just
2338 need to parse the command to bytecodes again. */
833177a4
PA
2339 loc->cmd_bytecode
2340 = parse_cmd_to_aexpr (bl->address,
2341 loc->owner->extra_string);
d3ce09f5
SS
2342 }
2343
2344 /* If we have a NULL bytecode expression, it means something
2345 went wrong or we have a null command expression. */
2346 if (!loc->cmd_bytecode)
2347 {
2348 null_command_or_parse_error = 1;
2349 break;
2350 }
2351 }
2352 }
2353
2354 /* If anything failed, then we're not doing target-side commands,
2355 and so clean up. */
2356 if (null_command_or_parse_error)
2357 {
2358 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2359 {
2360 loc = (*loc2p);
2361 if (is_breakpoint (loc->owner)
2362 && loc->pspace->num == bl->pspace->num)
2363 {
2364 /* Only go as far as the first NULL bytecode is
2365 located. */
40fb6c5e 2366 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2367 return;
2368
833177a4 2369 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2370 }
2371 }
2372 }
2373
2374 /* No NULL commands or failed bytecode generation. Build a command list
2375 for this location's address. */
2376 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2377 {
2378 loc = (*loc2p);
2379 if (loc->owner->extra_string
2380 && is_breakpoint (loc->owner)
2381 && loc->pspace->num == bl->pspace->num
2382 && loc->owner->enable_state == bp_enabled
2383 && loc->enabled)
3cde5c42
PA
2384 {
2385 /* Add the command to the vector. This will be used later
2386 to send the commands to the target. */
2387 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2388 }
d3ce09f5
SS
2389 }
2390
2391 bl->target_info.persist = 0;
2392 /* Maybe flag this location as persistent. */
2393 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2394 bl->target_info.persist = 1;
2395}
2396
833b7ab5
YQ
2397/* Return the kind of breakpoint on address *ADDR. Get the kind
2398 of breakpoint according to ADDR except single-step breakpoint.
2399 Get the kind of single-step breakpoint according to the current
2400 registers state. */
cd6c3b4f
YQ
2401
2402static int
2403breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2404{
833b7ab5
YQ
2405 if (bl->owner->type == bp_single_step)
2406 {
2407 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2408 struct regcache *regcache;
2409
00431a78 2410 regcache = get_thread_regcache (thr);
833b7ab5
YQ
2411
2412 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2413 regcache, addr);
2414 }
2415 else
2416 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2417}
2418
35df4500
TJB
2419/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2420 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2421 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2422 Returns 0 for success, 1 if the bp_location type is not supported or
2423 -1 for failure.
879bfdc2 2424
4a64f543
MS
2425 NOTE drow/2003-09-09: This routine could be broken down to an
2426 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2427static int
35df4500 2428insert_bp_location (struct bp_location *bl,
26bb91f3 2429 struct ui_file *tmp_error_stream,
3fbb6ffa 2430 int *disabled_breaks,
dd61ec5c
MW
2431 int *hw_breakpoint_error,
2432 int *hw_bp_error_explained_already)
879bfdc2 2433{
cc06b668 2434 gdb_exception bp_excpt;
879bfdc2 2435
b775012e 2436 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2437 return 0;
2438
35c63cd8
JB
2439 /* Note we don't initialize bl->target_info, as that wipes out
2440 the breakpoint location's shadow_contents if the breakpoint
2441 is still inserted at that location. This in turn breaks
2442 target_read_memory which depends on these buffers when
2443 a memory read is requested at the breakpoint location:
2444 Once the target_info has been wiped, we fail to see that
2445 we have a breakpoint inserted at that address and thus
2446 read the breakpoint instead of returning the data saved in
2447 the breakpoint location's shadow contents. */
0d5ed153 2448 bl->target_info.reqstd_address = bl->address;
35df4500 2449 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2450 bl->target_info.length = bl->length;
8181d85f 2451
b775012e
LM
2452 /* When working with target-side conditions, we must pass all the conditions
2453 for the same breakpoint address down to the target since GDB will not
2454 insert those locations. With a list of breakpoint conditions, the target
2455 can decide when to stop and notify GDB. */
2456
2457 if (is_breakpoint (bl->owner))
2458 {
2459 build_target_condition_list (bl);
d3ce09f5
SS
2460 build_target_command_list (bl);
2461 /* Reset the modification marker. */
b775012e
LM
2462 bl->needs_update = 0;
2463 }
2464
35df4500
TJB
2465 if (bl->loc_type == bp_loc_software_breakpoint
2466 || bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2467 {
35df4500 2468 if (bl->owner->type != bp_hardware_breakpoint)
765dc015
VP
2469 {
2470 /* If the explicitly specified breakpoint type
2471 is not hardware breakpoint, check the memory map to see
2472 if the breakpoint address is in read only memory or not.
4a64f543 2473
765dc015
VP
2474 Two important cases are:
2475 - location type is not hardware breakpoint, memory
2476 is readonly. We change the type of the location to
2477 hardware breakpoint.
4a64f543
MS
2478 - location type is hardware breakpoint, memory is
2479 read-write. This means we've previously made the
2480 location hardware one, but then the memory map changed,
2481 so we undo.
765dc015 2482
4a64f543
MS
2483 When breakpoints are removed, remove_breakpoints will use
2484 location types we've just set here, the only possible
2485 problem is that memory map has changed during running
2486 program, but it's not going to work anyway with current
2487 gdb. */
765dc015 2488 struct mem_region *mr
0d5ed153 2489 = lookup_mem_region (bl->target_info.reqstd_address);
765dc015
VP
2490
2491 if (mr)
2492 {
2493 if (automatic_hardware_breakpoints)
2494 {
765dc015
VP
2495 enum bp_loc_type new_type;
2496
2497 if (mr->attrib.mode != MEM_RW)
2498 new_type = bp_loc_hardware_breakpoint;
2499 else
2500 new_type = bp_loc_software_breakpoint;
2501
35df4500 2502 if (new_type != bl->loc_type)
765dc015
VP
2503 {
2504 static int said = 0;
cc59ec59 2505
35df4500 2506 bl->loc_type = new_type;
765dc015
VP
2507 if (!said)
2508 {
3e43a32a
MS
2509 fprintf_filtered (gdb_stdout,
2510 _("Note: automatically using "
2511 "hardware breakpoints for "
2512 "read-only addresses.\n"));
765dc015
VP
2513 said = 1;
2514 }
2515 }
2516 }
35df4500 2517 else if (bl->loc_type == bp_loc_software_breakpoint
0fec99e8
PA
2518 && mr->attrib.mode != MEM_RW)
2519 {
2520 fprintf_unfiltered (tmp_error_stream,
2521 _("Cannot insert breakpoint %d.\n"
2522 "Cannot set software breakpoint "
2523 "at read-only address %s\n"),
2524 bl->owner->number,
2525 paddress (bl->gdbarch, bl->address));
2526 return 1;
2527 }
765dc015
VP
2528 }
2529 }
2530
879bfdc2
DJ
2531 /* First check to see if we have to handle an overlay. */
2532 if (overlay_debugging == ovly_off
35df4500
TJB
2533 || bl->section == NULL
2534 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2535 {
2536 /* No overlay handling: just set the breakpoint. */
a70b8144 2537 try
dd61ec5c 2538 {
0000e5cc
PA
2539 int val;
2540
dd61ec5c 2541 val = bl->owner->ops->insert_location (bl);
0000e5cc 2542 if (val)
688fca4f 2543 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2544 }
94aeb44b 2545 catch (gdb_exception &e)
dd61ec5c 2546 {
94aeb44b 2547 bp_excpt = std::move (e);
dd61ec5c 2548 }
879bfdc2
DJ
2549 }
2550 else
2551 {
4a64f543 2552 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2553 Shall we set a breakpoint at the LMA? */
2554 if (!overlay_events_enabled)
2555 {
2556 /* Yes -- overlay event support is not active,
2557 so we must try to set a breakpoint at the LMA.
2558 This will not work for a hardware breakpoint. */
35df4500 2559 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2560 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2561 bl->owner->number);
879bfdc2
DJ
2562 else
2563 {
35df4500
TJB
2564 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2565 bl->section);
879bfdc2 2566 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2567 bl->overlay_target_info = bl->target_info;
0d5ed153 2568 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2569
2570 /* No overlay handling: just set the breakpoint. */
a70b8144 2571 try
0000e5cc
PA
2572 {
2573 int val;
2574
579c6ad9 2575 bl->overlay_target_info.kind
cd6c3b4f
YQ
2576 = breakpoint_kind (bl, &addr);
2577 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2578 val = target_insert_breakpoint (bl->gdbarch,
2579 &bl->overlay_target_info);
2580 if (val)
688fca4f
PA
2581 bp_excpt
2582 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2583 }
94aeb44b 2584 catch (gdb_exception &e)
0000e5cc 2585 {
94aeb44b 2586 bp_excpt = std::move (e);
0000e5cc
PA
2587 }
2588
688fca4f 2589 if (bp_excpt.reason != 0)
99361f52 2590 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2591 "Overlay breakpoint %d "
2592 "failed: in ROM?\n",
35df4500 2593 bl->owner->number);
879bfdc2
DJ
2594 }
2595 }
2596 /* Shall we set a breakpoint at the VMA? */
35df4500 2597 if (section_is_mapped (bl->section))
879bfdc2
DJ
2598 {
2599 /* Yes. This overlay section is mapped into memory. */
a70b8144 2600 try
dd61ec5c 2601 {
0000e5cc
PA
2602 int val;
2603
dd61ec5c 2604 val = bl->owner->ops->insert_location (bl);
0000e5cc 2605 if (val)
688fca4f 2606 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2607 }
94aeb44b 2608 catch (gdb_exception &e)
dd61ec5c 2609 {
94aeb44b 2610 bp_excpt = std::move (e);
dd61ec5c 2611 }
879bfdc2
DJ
2612 }
2613 else
2614 {
2615 /* No. This breakpoint will not be inserted.
2616 No error, but do not mark the bp as 'inserted'. */
2617 return 0;
2618 }
2619 }
2620
688fca4f 2621 if (bp_excpt.reason != 0)
879bfdc2
DJ
2622 {
2623 /* Can't set the breakpoint. */
0000e5cc
PA
2624
2625 /* In some cases, we might not be able to insert a
2626 breakpoint in a shared library that has already been
2627 removed, but we have not yet processed the shlib unload
2628 event. Unfortunately, some targets that implement
076855f9
PA
2629 breakpoint insertion themselves can't tell why the
2630 breakpoint insertion failed (e.g., the remote target
2631 doesn't define error codes), so we must treat generic
2632 errors as memory errors. */
688fca4f
PA
2633 if (bp_excpt.reason == RETURN_ERROR
2634 && (bp_excpt.error == GENERIC_ERROR
2635 || bp_excpt.error == MEMORY_ERROR)
076855f9 2636 && bl->loc_type == bp_loc_software_breakpoint
08351840 2637 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2638 || shared_objfile_contains_address_p (bl->pspace,
2639 bl->address)))
879bfdc2 2640 {
4a64f543 2641 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2642 bl->shlib_disabled = 1;
76727919 2643 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2644 if (!*disabled_breaks)
2645 {
2646 fprintf_unfiltered (tmp_error_stream,
2647 "Cannot insert breakpoint %d.\n",
2648 bl->owner->number);
2649 fprintf_unfiltered (tmp_error_stream,
2650 "Temporarily disabling shared "
2651 "library breakpoints:\n");
2652 }
2653 *disabled_breaks = 1;
879bfdc2 2654 fprintf_unfiltered (tmp_error_stream,
35df4500 2655 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2656 return 0;
879bfdc2
DJ
2657 }
2658 else
879bfdc2 2659 {
35df4500 2660 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2661 {
0000e5cc 2662 *hw_breakpoint_error = 1;
688fca4f 2663 *hw_bp_error_explained_already = bp_excpt.message != NULL;
dd61ec5c
MW
2664 fprintf_unfiltered (tmp_error_stream,
2665 "Cannot insert hardware breakpoint %d%s",
688fca4f
PA
2666 bl->owner->number,
2667 bp_excpt.message ? ":" : ".\n");
2668 if (bp_excpt.message != NULL)
2669 fprintf_unfiltered (tmp_error_stream, "%s.\n",
3d6e9d23 2670 bp_excpt.what ());
879bfdc2
DJ
2671 }
2672 else
2673 {
688fca4f 2674 if (bp_excpt.message == NULL)
0000e5cc 2675 {
1ccbe998 2676 std::string message
0000e5cc
PA
2677 = memory_error_message (TARGET_XFER_E_IO,
2678 bl->gdbarch, bl->address);
0000e5cc
PA
2679
2680 fprintf_unfiltered (tmp_error_stream,
2681 "Cannot insert breakpoint %d.\n"
2682 "%s\n",
1ccbe998 2683 bl->owner->number, message.c_str ());
0000e5cc
PA
2684 }
2685 else
2686 {
2687 fprintf_unfiltered (tmp_error_stream,
2688 "Cannot insert breakpoint %d: %s\n",
2689 bl->owner->number,
3d6e9d23 2690 bp_excpt.what ());
0000e5cc 2691 }
879bfdc2 2692 }
0000e5cc 2693 return 1;
879bfdc2
DJ
2694
2695 }
2696 }
2697 else
35df4500 2698 bl->inserted = 1;
879bfdc2 2699
0000e5cc 2700 return 0;
879bfdc2
DJ
2701 }
2702
35df4500 2703 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2704 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2705 watchpoints. It's not clear that it's necessary... */
35df4500 2706 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2707 {
0000e5cc
PA
2708 int val;
2709
77b06cd7
TJB
2710 gdb_assert (bl->owner->ops != NULL
2711 && bl->owner->ops->insert_location != NULL);
2712
2713 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2714
2715 /* If trying to set a read-watchpoint, and it turns out it's not
2716 supported, try emulating one with an access watchpoint. */
35df4500 2717 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2718 {
2719 struct bp_location *loc, **loc_temp;
2720
2721 /* But don't try to insert it, if there's already another
2722 hw_access location that would be considered a duplicate
2723 of this one. */
2724 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2725 if (loc != bl
85d721b8 2726 && loc->watchpoint_type == hw_access
35df4500 2727 && watchpoint_locations_match (bl, loc))
85d721b8 2728 {
35df4500
TJB
2729 bl->duplicate = 1;
2730 bl->inserted = 1;
2731 bl->target_info = loc->target_info;
2732 bl->watchpoint_type = hw_access;
85d721b8
PA
2733 val = 0;
2734 break;
2735 }
2736
2737 if (val == 1)
2738 {
77b06cd7
TJB
2739 bl->watchpoint_type = hw_access;
2740 val = bl->owner->ops->insert_location (bl);
2741
2742 if (val)
2743 /* Back to the original value. */
2744 bl->watchpoint_type = hw_read;
85d721b8
PA
2745 }
2746 }
2747
35df4500 2748 bl->inserted = (val == 0);
879bfdc2
DJ
2749 }
2750
35df4500 2751 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2752 {
0000e5cc
PA
2753 int val;
2754
77b06cd7
TJB
2755 gdb_assert (bl->owner->ops != NULL
2756 && bl->owner->ops->insert_location != NULL);
2757
2758 val = bl->owner->ops->insert_location (bl);
2759 if (val)
2760 {
2761 bl->owner->enable_state = bp_disabled;
2762
2763 if (val == 1)
2764 warning (_("\
2765Error inserting catchpoint %d: Your system does not support this type\n\
2766of catchpoint."), bl->owner->number);
2767 else
2768 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2769 }
2770
2771 bl->inserted = (val == 0);
1640b821
DJ
2772
2773 /* We've already printed an error message if there was a problem
2774 inserting this catchpoint, and we've disabled the catchpoint,
2775 so just return success. */
2776 return 0;
879bfdc2
DJ
2777 }
2778
2779 return 0;
2780}
2781
6c95b8df
PA
2782/* This function is called when program space PSPACE is about to be
2783 deleted. It takes care of updating breakpoints to not reference
2784 PSPACE anymore. */
2785
2786void
2787breakpoint_program_space_exit (struct program_space *pspace)
2788{
2789 struct breakpoint *b, *b_temp;
876fa593 2790 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2791
2792 /* Remove any breakpoint that was set through this program space. */
2793 ALL_BREAKPOINTS_SAFE (b, b_temp)
2794 {
2795 if (b->pspace == pspace)
2796 delete_breakpoint (b);
2797 }
2798
2799 /* Breakpoints set through other program spaces could have locations
2800 bound to PSPACE as well. Remove those. */
876fa593 2801 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2802 {
2803 struct bp_location *tmp;
2804
2805 if (loc->pspace == pspace)
2806 {
2bdf28a0 2807 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2808 if (loc->owner->loc == loc)
2809 loc->owner->loc = loc->next;
2810 else
2811 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2812 if (tmp->next == loc)
2813 {
2814 tmp->next = loc->next;
2815 break;
2816 }
2817 }
2818 }
2819
2820 /* Now update the global location list to permanently delete the
2821 removed locations above. */
44702360 2822 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2823}
2824
74960c60
VP
2825/* Make sure all breakpoints are inserted in inferior.
2826 Throws exception on any error.
2827 A breakpoint that is already inserted won't be inserted
2828 again, so calling this function twice is safe. */
2829void
2830insert_breakpoints (void)
2831{
2832 struct breakpoint *bpt;
2833
2834 ALL_BREAKPOINTS (bpt)
2835 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2836 {
2837 struct watchpoint *w = (struct watchpoint *) bpt;
2838
2839 update_watchpoint (w, 0 /* don't reparse. */);
2840 }
74960c60 2841
04086b45
PA
2842 /* Updating watchpoints creates new locations, so update the global
2843 location list. Explicitly tell ugll to insert locations and
2844 ignore breakpoints_always_inserted_mode. */
2845 update_global_location_list (UGLL_INSERT);
74960c60
VP
2846}
2847
20388dd6
YQ
2848/* Invoke CALLBACK for each of bp_location. */
2849
2850void
2851iterate_over_bp_locations (walk_bp_location_callback callback)
2852{
2853 struct bp_location *loc, **loc_tmp;
2854
2855 ALL_BP_LOCATIONS (loc, loc_tmp)
2856 {
2857 callback (loc, NULL);
2858 }
2859}
2860
b775012e
LM
2861/* This is used when we need to synch breakpoint conditions between GDB and the
2862 target. It is the case with deleting and disabling of breakpoints when using
2863 always-inserted mode. */
2864
2865static void
2866update_inserted_breakpoint_locations (void)
2867{
2868 struct bp_location *bl, **blp_tmp;
2869 int error_flag = 0;
2870 int val = 0;
2871 int disabled_breaks = 0;
2872 int hw_breakpoint_error = 0;
dd61ec5c 2873 int hw_bp_details_reported = 0;
b775012e 2874
d7e74731 2875 string_file tmp_error_stream;
b775012e
LM
2876
2877 /* Explicitly mark the warning -- this will only be printed if
2878 there was an error. */
d7e74731 2879 tmp_error_stream.puts ("Warning:\n");
b775012e 2880
5ed8105e 2881 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2882
2883 ALL_BP_LOCATIONS (bl, blp_tmp)
2884 {
2885 /* We only want to update software breakpoints and hardware
2886 breakpoints. */
2887 if (!is_breakpoint (bl->owner))
2888 continue;
2889
2890 /* We only want to update locations that are already inserted
2891 and need updating. This is to avoid unwanted insertion during
2892 deletion of breakpoints. */
4daf1902 2893 if (!bl->inserted || !bl->needs_update)
b775012e
LM
2894 continue;
2895
2896 switch_to_program_space_and_thread (bl->pspace);
2897
2898 /* For targets that support global breakpoints, there's no need
2899 to select an inferior to insert breakpoint to. In fact, even
2900 if we aren't attached to any process yet, we should still
2901 insert breakpoints. */
f5656ead 2902 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2903 && inferior_ptid == null_ptid)
b775012e
LM
2904 continue;
2905
d7e74731 2906 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2907 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2908 if (val)
2909 error_flag = val;
2910 }
2911
2912 if (error_flag)
2913 {
223ffa71 2914 target_terminal::ours_for_output ();
b775012e
LM
2915 error_stream (tmp_error_stream);
2916 }
b775012e
LM
2917}
2918
c30eee59 2919/* Used when starting or continuing the program. */
c906108c 2920
74960c60
VP
2921static void
2922insert_breakpoint_locations (void)
c906108c 2923{
a5606eee 2924 struct breakpoint *bpt;
35df4500 2925 struct bp_location *bl, **blp_tmp;
eacd795a 2926 int error_flag = 0;
c906108c 2927 int val = 0;
3fbb6ffa 2928 int disabled_breaks = 0;
81d0cc19 2929 int hw_breakpoint_error = 0;
dd61ec5c 2930 int hw_bp_error_explained_already = 0;
c906108c 2931
d7e74731
PA
2932 string_file tmp_error_stream;
2933
81d0cc19
GS
2934 /* Explicitly mark the warning -- this will only be printed if
2935 there was an error. */
d7e74731 2936 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2937
5ed8105e 2938 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2939
35df4500 2940 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 2941 {
b775012e 2942 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2943 continue;
2944
4a64f543
MS
2945 /* There is no point inserting thread-specific breakpoints if
2946 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2947 has BL->OWNER always non-NULL. */
35df4500 2948 if (bl->owner->thread != -1
5d5658a1 2949 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
2950 continue;
2951
35df4500 2952 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
2953
2954 /* For targets that support global breakpoints, there's no need
2955 to select an inferior to insert breakpoint to. In fact, even
2956 if we aren't attached to any process yet, we should still
2957 insert breakpoints. */
f5656ead 2958 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
d7e15655 2959 && inferior_ptid == null_ptid)
6c95b8df
PA
2960 continue;
2961
d7e74731 2962 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2963 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 2964 if (val)
eacd795a 2965 error_flag = val;
879bfdc2 2966 }
c906108c 2967
4a64f543
MS
2968 /* If we failed to insert all locations of a watchpoint, remove
2969 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
2970 ALL_BREAKPOINTS (bpt)
2971 {
2972 int some_failed = 0;
2973 struct bp_location *loc;
2974
2975 if (!is_hardware_watchpoint (bpt))
2976 continue;
2977
d6b74ac4 2978 if (!breakpoint_enabled (bpt))
a5606eee 2979 continue;
74960c60
VP
2980
2981 if (bpt->disposition == disp_del_at_next_stop)
2982 continue;
a5606eee
VP
2983
2984 for (loc = bpt->loc; loc; loc = loc->next)
56710373 2985 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
2986 {
2987 some_failed = 1;
2988 break;
2989 }
2990 if (some_failed)
2991 {
2992 for (loc = bpt->loc; loc; loc = loc->next)
2993 if (loc->inserted)
834c0d03 2994 remove_breakpoint (loc);
a5606eee
VP
2995
2996 hw_breakpoint_error = 1;
d7e74731
PA
2997 tmp_error_stream.printf ("Could not insert "
2998 "hardware watchpoint %d.\n",
2999 bpt->number);
eacd795a 3000 error_flag = -1;
a5606eee
VP
3001 }
3002 }
3003
eacd795a 3004 if (error_flag)
81d0cc19
GS
3005 {
3006 /* If a hardware breakpoint or watchpoint was inserted, add a
3007 message about possibly exhausted resources. */
dd61ec5c 3008 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3009 {
d7e74731 3010 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3011You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3012 }
223ffa71 3013 target_terminal::ours_for_output ();
81d0cc19
GS
3014 error_stream (tmp_error_stream);
3015 }
c906108c
SS
3016}
3017
c30eee59
TJB
3018/* Used when the program stops.
3019 Returns zero if successful, or non-zero if there was a problem
3020 removing a breakpoint location. */
3021
c906108c 3022int
fba45db2 3023remove_breakpoints (void)
c906108c 3024{
35df4500 3025 struct bp_location *bl, **blp_tmp;
3a1bae8e 3026 int val = 0;
c906108c 3027
35df4500 3028 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3029 {
1e4d1764 3030 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3031 val |= remove_breakpoint (bl);
c5aa993b 3032 }
3a1bae8e 3033 return val;
c906108c
SS
3034}
3035
49fa26b0
PA
3036/* When a thread exits, remove breakpoints that are related to
3037 that thread. */
3038
3039static void
3040remove_threaded_breakpoints (struct thread_info *tp, int silent)
3041{
3042 struct breakpoint *b, *b_tmp;
3043
3044 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3045 {
5d5658a1 3046 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3047 {
3048 b->disposition = disp_del_at_next_stop;
3049
3050 printf_filtered (_("\
43792cf0
PA
3051Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3052 b->number, print_thread_id (tp));
49fa26b0
PA
3053
3054 /* Hide it from the user. */
3055 b->number = 0;
3056 }
3057 }
3058}
3059
00431a78 3060/* Remove breakpoints of inferior INF. */
6c95b8df
PA
3061
3062int
00431a78 3063remove_breakpoints_inf (inferior *inf)
6c95b8df 3064{
35df4500 3065 struct bp_location *bl, **blp_tmp;
6c95b8df 3066 int val;
6c95b8df 3067
35df4500 3068 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3069 {
35df4500 3070 if (bl->pspace != inf->pspace)
6c95b8df
PA
3071 continue;
3072
fc126975 3073 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3074 {
834c0d03 3075 val = remove_breakpoint (bl);
6c95b8df
PA
3076 if (val != 0)
3077 return val;
3078 }
3079 }
3080 return 0;
3081}
3082
e58b0e63
PA
3083static int internal_breakpoint_number = -1;
3084
84f4c1fe
PM
3085/* Set the breakpoint number of B, depending on the value of INTERNAL.
3086 If INTERNAL is non-zero, the breakpoint number will be populated
3087 from internal_breakpoint_number and that variable decremented.
e5dd4106 3088 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3089 breakpoint_count and that value incremented. Internal breakpoints
3090 do not set the internal var bpnum. */
3091static void
3092set_breakpoint_number (int internal, struct breakpoint *b)
3093{
3094 if (internal)
3095 b->number = internal_breakpoint_number--;
3096 else
3097 {
3098 set_breakpoint_count (breakpoint_count + 1);
3099 b->number = breakpoint_count;
3100 }
3101}
3102
e62c965a 3103static struct breakpoint *
a6d9a66e 3104create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3105 CORE_ADDR address, enum bptype type,
c0a91b2b 3106 const struct breakpoint_ops *ops)
e62c965a 3107{
51abb421 3108 symtab_and_line sal;
e62c965a
PP
3109 sal.pc = address;
3110 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3111 sal.pspace = current_program_space;
e62c965a 3112
51abb421 3113 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3114 b->number = internal_breakpoint_number--;
3115 b->disposition = disp_donttouch;
3116
3117 return b;
3118}
3119
17450429
PP
3120static const char *const longjmp_names[] =
3121 {
3122 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3123 };
3124#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3125
3126/* Per-objfile data private to breakpoint.c. */
3127struct breakpoint_objfile_data
3128{
3129 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3130 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3131
3132 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3133 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3134
28106bc2 3135 /* True if we have looked for longjmp probes. */
43dce439 3136 int longjmp_searched = 0;
28106bc2 3137
45461e0d
SM
3138 /* SystemTap probe points for longjmp (if any). These are non-owning
3139 references. */
3140 std::vector<probe *> longjmp_probes;
28106bc2 3141
17450429 3142 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3143 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3144
3145 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3146 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3147
3148 /* True if we have looked for exception probes. */
43dce439 3149 int exception_searched = 0;
28106bc2 3150
45461e0d
SM
3151 /* SystemTap probe points for unwinding (if any). These are non-owning
3152 references. */
3153 std::vector<probe *> exception_probes;
17450429
PP
3154};
3155
51d3063a
TT
3156static const struct objfile_key<breakpoint_objfile_data>
3157 breakpoint_objfile_key;
17450429
PP
3158
3159/* Minimal symbol not found sentinel. */
3160static struct minimal_symbol msym_not_found;
3161
3162/* Returns TRUE if MSYM point to the "not found" sentinel. */
3163
3164static int
3165msym_not_found_p (const struct minimal_symbol *msym)
3166{
3167 return msym == &msym_not_found;
3168}
3169
3170/* Return per-objfile data needed by breakpoint.c.
3171 Allocate the data if necessary. */
3172
3173static struct breakpoint_objfile_data *
3174get_breakpoint_objfile_data (struct objfile *objfile)
3175{
3176 struct breakpoint_objfile_data *bp_objfile_data;
3177
51d3063a 3178 bp_objfile_data = breakpoint_objfile_key.get (objfile);
17450429 3179 if (bp_objfile_data == NULL)
51d3063a 3180 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
17450429
PP
3181 return bp_objfile_data;
3182}
3183
e62c965a 3184static void
af02033e 3185create_overlay_event_breakpoint (void)
e62c965a 3186{
af02033e 3187 const char *const func_name = "_ovly_debug_event";
e62c965a 3188
2030c079 3189 for (objfile *objfile : current_program_space->objfiles ())
69de3c6a
PP
3190 {
3191 struct breakpoint *b;
17450429
PP
3192 struct breakpoint_objfile_data *bp_objfile_data;
3193 CORE_ADDR addr;
67994074 3194 struct explicit_location explicit_loc;
69de3c6a 3195
17450429
PP
3196 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3197
3b7344d5 3198 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3199 continue;
3200
3b7344d5 3201 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3202 {
3b7344d5 3203 struct bound_minimal_symbol m;
17450429
PP
3204
3205 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3206 if (m.minsym == NULL)
17450429
PP
3207 {
3208 /* Avoid future lookups in this objfile. */
3b7344d5 3209 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3210 continue;
3211 }
3212 bp_objfile_data->overlay_msym = m;
3213 }
e62c965a 3214
77e371c0 3215 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
17450429 3216 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
06edf0c0
PA
3217 bp_overlay_event,
3218 &internal_breakpoint_ops);
67994074
KS
3219 initialize_explicit_location (&explicit_loc);
3220 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3221 b->location = new_explicit_location (&explicit_loc);
e62c965a 3222
69de3c6a
PP
3223 if (overlay_debugging == ovly_auto)
3224 {
3225 b->enable_state = bp_enabled;
3226 overlay_events_enabled = 1;
3227 }
3228 else
3229 {
3230 b->enable_state = bp_disabled;
3231 overlay_events_enabled = 0;
3232 }
e62c965a 3233 }
e62c965a
PP
3234}
3235
0fd8e87f 3236static void
af02033e 3237create_longjmp_master_breakpoint (void)
0fd8e87f 3238{
6c95b8df 3239 struct program_space *pspace;
6c95b8df 3240
5ed8105e 3241 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3242
6c95b8df 3243 ALL_PSPACES (pspace)
af02033e 3244 {
af02033e
PP
3245 set_current_program_space (pspace);
3246
2030c079 3247 for (objfile *objfile : current_program_space->objfiles ())
aed57c53
TT
3248 {
3249 int i;
3250 struct gdbarch *gdbarch;
3251 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3252
aed57c53 3253 gdbarch = get_objfile_arch (objfile);
0fd8e87f 3254
aed57c53 3255 bp_objfile_data = get_breakpoint_objfile_data (objfile);
17450429 3256
aed57c53
TT
3257 if (!bp_objfile_data->longjmp_searched)
3258 {
3259 std::vector<probe *> ret
3260 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3261
aed57c53
TT
3262 if (!ret.empty ())
3263 {
3264 /* We are only interested in checking one element. */
3265 probe *p = ret[0];
3266
3267 if (!p->can_evaluate_arguments ())
3268 {
3269 /* We cannot use the probe interface here, because it does
3270 not know how to evaluate arguments. */
3271 ret.clear ();
3272 }
3273 }
3274 bp_objfile_data->longjmp_probes = ret;
3275 bp_objfile_data->longjmp_searched = 1;
3276 }
25f9533e 3277
aed57c53
TT
3278 if (!bp_objfile_data->longjmp_probes.empty ())
3279 {
3280 for (probe *p : bp_objfile_data->longjmp_probes)
3281 {
3282 struct breakpoint *b;
3283
3284 b = create_internal_breakpoint (gdbarch,
3285 p->get_relocated_address (objfile),
3286 bp_longjmp_master,
3287 &internal_breakpoint_ops);
3288 b->location = new_probe_location ("-probe-stap libc:longjmp");
3289 b->enable_state = bp_disabled;
3290 }
28106bc2 3291
aed57c53
TT
3292 continue;
3293 }
28106bc2 3294
aed57c53 3295 if (!gdbarch_get_longjmp_target_p (gdbarch))
28106bc2 3296 continue;
28106bc2 3297
aed57c53
TT
3298 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3299 {
3300 struct breakpoint *b;
3301 const char *func_name;
3302 CORE_ADDR addr;
3303 struct explicit_location explicit_loc;
0fd8e87f 3304
aed57c53
TT
3305 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3306 continue;
17450429 3307
aed57c53
TT
3308 func_name = longjmp_names[i];
3309 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3310 {
3311 struct bound_minimal_symbol m;
3312
3313 m = lookup_minimal_symbol_text (func_name, objfile);
3314 if (m.minsym == NULL)
3315 {
3316 /* Prevent future lookups in this objfile. */
3317 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3318 continue;
3319 }
3320 bp_objfile_data->longjmp_msym[i] = m;
3321 }
17450429 3322
aed57c53
TT
3323 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3324 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3325 &internal_breakpoint_ops);
3326 initialize_explicit_location (&explicit_loc);
3327 explicit_loc.function_name = ASTRDUP (func_name);
3328 b->location = new_explicit_location (&explicit_loc);
3329 b->enable_state = bp_disabled;
3330 }
3331 }
af02033e 3332 }
0fd8e87f
UW
3333}
3334
af02033e 3335/* Create a master std::terminate breakpoint. */
aa7d318d 3336static void
af02033e 3337create_std_terminate_master_breakpoint (void)
aa7d318d
TT
3338{
3339 struct program_space *pspace;
af02033e 3340 const char *const func_name = "std::terminate()";
aa7d318d 3341
5ed8105e 3342 scoped_restore_current_program_space restore_pspace;
aa7d318d
TT
3343
3344 ALL_PSPACES (pspace)
17450429 3345 {
17450429
PP
3346 CORE_ADDR addr;
3347
3348 set_current_program_space (pspace);
3349
2030c079 3350 for (objfile *objfile : current_program_space->objfiles ())
aed57c53
TT
3351 {
3352 struct breakpoint *b;
3353 struct breakpoint_objfile_data *bp_objfile_data;
3354 struct explicit_location explicit_loc;
aa7d318d 3355
aed57c53 3356 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3357
aed57c53
TT
3358 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3359 continue;
17450429 3360
aed57c53
TT
3361 if (bp_objfile_data->terminate_msym.minsym == NULL)
3362 {
3363 struct bound_minimal_symbol m;
17450429 3364
aed57c53
TT
3365 m = lookup_minimal_symbol (func_name, NULL, objfile);
3366 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3367 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3368 {
3369 /* Prevent future lookups in this objfile. */
3370 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3371 continue;
3372 }
3373 bp_objfile_data->terminate_msym = m;
3374 }
aa7d318d 3375
aed57c53
TT
3376 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3377 b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3378 bp_std_terminate_master,
3379 &internal_breakpoint_ops);
3380 initialize_explicit_location (&explicit_loc);
3381 explicit_loc.function_name = ASTRDUP (func_name);
3382 b->location = new_explicit_location (&explicit_loc);
3383 b->enable_state = bp_disabled;
3384 }
17450429 3385 }
aa7d318d
TT
3386}
3387
186c406b
TT
3388/* Install a master breakpoint on the unwinder's debug hook. */
3389
70221824 3390static void
186c406b
TT
3391create_exception_master_breakpoint (void)
3392{
17450429 3393 const char *const func_name = "_Unwind_DebugHook";
186c406b 3394
2030c079 3395 for (objfile *objfile : current_program_space->objfiles ())
186c406b 3396 {
17450429
PP
3397 struct breakpoint *b;
3398 struct gdbarch *gdbarch;
3399 struct breakpoint_objfile_data *bp_objfile_data;
3400 CORE_ADDR addr;
67994074 3401 struct explicit_location explicit_loc;
17450429
PP
3402
3403 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3404
28106bc2
SDJ
3405 /* We prefer the SystemTap probe point if it exists. */
3406 if (!bp_objfile_data->exception_searched)
3407 {
45461e0d
SM
3408 std::vector<probe *> ret
3409 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3410
45461e0d 3411 if (!ret.empty ())
25f9533e
SDJ
3412 {
3413 /* We are only interested in checking one element. */
45461e0d 3414 probe *p = ret[0];
25f9533e 3415
935676c9 3416 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3417 {
3418 /* We cannot use the probe interface here, because it does
3419 not know how to evaluate arguments. */
45461e0d 3420 ret.clear ();
25f9533e
SDJ
3421 }
3422 }
3423 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3424 bp_objfile_data->exception_searched = 1;
3425 }
3426
45461e0d 3427 if (!bp_objfile_data->exception_probes.empty ())
28106bc2 3428 {
b926417a 3429 gdbarch = get_objfile_arch (objfile);
45461e0d
SM
3430
3431 for (probe *p : bp_objfile_data->exception_probes)
28106bc2 3432 {
729662a5 3433 b = create_internal_breakpoint (gdbarch,
935676c9 3434 p->get_relocated_address (objfile),
28106bc2
SDJ
3435 bp_exception_master,
3436 &internal_breakpoint_ops);
d28cd78a 3437 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3438 b->enable_state = bp_disabled;
3439 }
3440
3441 continue;
3442 }
3443
3444 /* Otherwise, try the hook function. */
3445
3b7344d5 3446 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3447 continue;
3448
3449 gdbarch = get_objfile_arch (objfile);
186c406b 3450
3b7344d5 3451 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3452 {
3b7344d5 3453 struct bound_minimal_symbol debug_hook;
186c406b 3454
17450429 3455 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3456 if (debug_hook.minsym == NULL)
17450429 3457 {
3b7344d5 3458 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3459 continue;
3460 }
3461
3462 bp_objfile_data->exception_msym = debug_hook;
186c406b 3463 }
17450429 3464
77e371c0 3465 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
8b88a78e
PA
3466 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3467 current_top_target ());
06edf0c0
PA
3468 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3469 &internal_breakpoint_ops);
67994074
KS
3470 initialize_explicit_location (&explicit_loc);
3471 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3472 b->location = new_explicit_location (&explicit_loc);
17450429 3473 b->enable_state = bp_disabled;
186c406b 3474 }
186c406b
TT
3475}
3476
9ef9e6a6
KS
3477/* Does B have a location spec? */
3478
3479static int
3480breakpoint_event_location_empty_p (const struct breakpoint *b)
3481{
d28cd78a 3482 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3483}
3484
c906108c 3485void
fba45db2 3486update_breakpoints_after_exec (void)
c906108c 3487{
35df4500 3488 struct breakpoint *b, *b_tmp;
876fa593 3489 struct bp_location *bploc, **bplocp_tmp;
c906108c 3490
25b22b0a
PA
3491 /* We're about to delete breakpoints from GDB's lists. If the
3492 INSERTED flag is true, GDB will try to lift the breakpoints by
3493 writing the breakpoints' "shadow contents" back into memory. The
3494 "shadow contents" are NOT valid after an exec, so GDB should not
3495 do that. Instead, the target is responsible from marking
3496 breakpoints out as soon as it detects an exec. We don't do that
3497 here instead, because there may be other attempts to delete
3498 breakpoints after detecting an exec and before reaching here. */
876fa593 3499 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3500 if (bploc->pspace == current_program_space)
3501 gdb_assert (!bploc->inserted);
c906108c 3502
35df4500 3503 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3504 {
6c95b8df
PA
3505 if (b->pspace != current_program_space)
3506 continue;
3507
4a64f543 3508 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3509 if (b->type == bp_shlib_event)
3510 {
3511 delete_breakpoint (b);
3512 continue;
3513 }
c906108c 3514
4a64f543 3515 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3516 if (b->type == bp_jit_event)
3517 {
3518 delete_breakpoint (b);
3519 continue;
3520 }
3521
1900040c 3522 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3523 as must overlay event and longjmp master breakpoints. */
3524 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3525 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3526 || b->type == bp_exception_master)
c4093a6a
JM
3527 {
3528 delete_breakpoint (b);
3529 continue;
3530 }
3531
4a64f543 3532 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3533 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3534 {
3535 delete_breakpoint (b);
3536 continue;
3537 }
3538
7c16b83e
PA
3539 /* Just like single-step breakpoints. */
3540 if (b->type == bp_single_step)
3541 {
3542 delete_breakpoint (b);
3543 continue;
3544 }
3545
611c83ae
PA
3546 /* Longjmp and longjmp-resume breakpoints are also meaningless
3547 after an exec. */
186c406b 3548 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3549 || b->type == bp_longjmp_call_dummy
186c406b 3550 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3551 {
3552 delete_breakpoint (b);
3553 continue;
3554 }
3555
ce78b96d
JB
3556 if (b->type == bp_catchpoint)
3557 {
3558 /* For now, none of the bp_catchpoint breakpoints need to
3559 do anything at this point. In the future, if some of
3560 the catchpoints need to something, we will need to add
3561 a new method, and call this method from here. */
3562 continue;
3563 }
3564
c5aa993b
JM
3565 /* bp_finish is a special case. The only way we ought to be able
3566 to see one of these when an exec() has happened, is if the user
3567 caught a vfork, and then said "finish". Ordinarily a finish just
3568 carries them to the call-site of the current callee, by setting
3569 a temporary bp there and resuming. But in this case, the finish
3570 will carry them entirely through the vfork & exec.
3571
3572 We don't want to allow a bp_finish to remain inserted now. But
3573 we can't safely delete it, 'cause finish_command has a handle to
3574 the bp on a bpstat, and will later want to delete it. There's a
3575 chance (and I've seen it happen) that if we delete the bp_finish
3576 here, that its storage will get reused by the time finish_command
3577 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3578 We really must allow finish_command to delete a bp_finish.
3579
e5dd4106 3580 In the absence of a general solution for the "how do we know
53a5351d
JM
3581 it's safe to delete something others may have handles to?"
3582 problem, what we'll do here is just uninsert the bp_finish, and
3583 let finish_command delete it.
3584
3585 (We know the bp_finish is "doomed" in the sense that it's
3586 momentary, and will be deleted as soon as finish_command sees
3587 the inferior stopped. So it doesn't matter that the bp's
3588 address is probably bogus in the new a.out, unlike e.g., the
3589 solib breakpoints.) */
c5aa993b 3590
c5aa993b
JM
3591 if (b->type == bp_finish)
3592 {
3593 continue;
3594 }
3595
3596 /* Without a symbolic address, we have little hope of the
3597 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3598 a.out. */
9ef9e6a6 3599 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3600 {
3601 delete_breakpoint (b);
3602 continue;
3603 }
c5aa993b 3604 }
c906108c
SS
3605}
3606
3607int
d80ee84f 3608detach_breakpoints (ptid_t ptid)
c906108c 3609{
35df4500 3610 struct bp_location *bl, **blp_tmp;
3a1bae8e 3611 int val = 0;
2989a365 3612 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3613 struct inferior *inf = current_inferior ();
c5aa993b 3614
e99b03dc 3615 if (ptid.pid () == inferior_ptid.pid ())
8a3fe4f8 3616 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3617
6c95b8df 3618 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3619 inferior_ptid = ptid;
35df4500 3620 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3621 {
35df4500 3622 if (bl->pspace != inf->pspace)
6c95b8df
PA
3623 continue;
3624
bd9673a4
PW
3625 /* This function must physically remove breakpoints locations
3626 from the specified ptid, without modifying the breakpoint
3627 package's state. Locations of type bp_loc_other are only
3628 maintained at GDB side. So, there is no need to remove
3629 these bp_loc_other locations. Moreover, removing these
3630 would modify the breakpoint package's state. */
3631 if (bl->loc_type == bp_loc_other)
3632 continue;
3633
35df4500 3634 if (bl->inserted)
b2b6a7da 3635 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3636 }
d03285ec 3637
3a1bae8e 3638 return val;
c906108c
SS
3639}
3640
35df4500 3641/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3642 Note that this is used to detach breakpoints from a child fork.
3643 When we get here, the child isn't in the inferior list, and neither
3644 do we have objects to represent its address space --- we should
35df4500 3645 *not* look at bl->pspace->aspace here. */
6c95b8df 3646
c906108c 3647static int
b2b6a7da 3648remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3649{
3650 int val;
c5aa993b 3651
35df4500
TJB
3652 /* BL is never in moribund_locations by our callers. */
3653 gdb_assert (bl->owner != NULL);
2bdf28a0 3654
74960c60
VP
3655 /* The type of none suggests that owner is actually deleted.
3656 This should not ever happen. */
35df4500 3657 gdb_assert (bl->owner->type != bp_none);
0bde7532 3658
35df4500
TJB
3659 if (bl->loc_type == bp_loc_software_breakpoint
3660 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3661 {
c02f5703
MS
3662 /* "Normal" instruction breakpoint: either the standard
3663 trap-instruction bp (bp_breakpoint), or a
3664 bp_hardware_breakpoint. */
3665
3666 /* First check to see if we have to handle an overlay. */
3667 if (overlay_debugging == ovly_off
35df4500
TJB
3668 || bl->section == NULL
3669 || !(section_is_overlay (bl->section)))
c02f5703
MS
3670 {
3671 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3672
3673 /* If we're trying to uninsert a memory breakpoint that we
3674 know is set in a dynamic object that is marked
3675 shlib_disabled, then either the dynamic object was
3676 removed with "remove-symbol-file" or with
3677 "nosharedlibrary". In the former case, we don't know
3678 whether another dynamic object might have loaded over the
3679 breakpoint's address -- the user might well let us know
3680 about it next with add-symbol-file (the whole point of
d03de421 3681 add-symbol-file is letting the user manually maintain a
08351840
PA
3682 list of dynamically loaded objects). If we have the
3683 breakpoint's shadow memory, that is, this is a software
3684 breakpoint managed by GDB, check whether the breakpoint
3685 is still inserted in memory, to avoid overwriting wrong
3686 code with stale saved shadow contents. Note that HW
3687 breakpoints don't have shadow memory, as they're
3688 implemented using a mechanism that is not dependent on
3689 being able to modify the target's memory, and as such
3690 they should always be removed. */
3691 if (bl->shlib_disabled
3692 && bl->target_info.shadow_len != 0
3693 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3694 val = 0;
3695 else
73971819 3696 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3697 }
c906108c
SS
3698 else
3699 {
4a64f543 3700 /* This breakpoint is in an overlay section.
c02f5703
MS
3701 Did we set a breakpoint at the LMA? */
3702 if (!overlay_events_enabled)
3703 {
3704 /* Yes -- overlay event support is not active, so we
3705 should have set a breakpoint at the LMA. Remove it.
3706 */
c02f5703
MS
3707 /* Ignore any failures: if the LMA is in ROM, we will
3708 have already warned when we failed to insert it. */
35df4500
TJB
3709 if (bl->loc_type == bp_loc_hardware_breakpoint)
3710 target_remove_hw_breakpoint (bl->gdbarch,
3711 &bl->overlay_target_info);
c02f5703 3712 else
35df4500 3713 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3714 &bl->overlay_target_info,
3715 reason);
c02f5703
MS
3716 }
3717 /* Did we set a breakpoint at the VMA?
3718 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3719 if (bl->inserted)
c906108c 3720 {
c02f5703
MS
3721 /* Yes -- remove it. Previously we did not bother to
3722 remove the breakpoint if the section had been
3723 unmapped, but let's not rely on that being safe. We
3724 don't know what the overlay manager might do. */
aa67235e
UW
3725
3726 /* However, we should remove *software* breakpoints only
3727 if the section is still mapped, or else we overwrite
3728 wrong code with the saved shadow contents. */
348d480f
PA
3729 if (bl->loc_type == bp_loc_hardware_breakpoint
3730 || section_is_mapped (bl->section))
73971819 3731 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3732 else
3733 val = 0;
c906108c 3734 }
c02f5703
MS
3735 else
3736 {
3737 /* No -- not inserted, so no need to remove. No error. */
3738 val = 0;
3739 }
c906108c 3740 }
879d1e6b 3741
08351840
PA
3742 /* In some cases, we might not be able to remove a breakpoint in
3743 a shared library that has already been removed, but we have
3744 not yet processed the shlib unload event. Similarly for an
3745 unloaded add-symbol-file object - the user might not yet have
3746 had the chance to remove-symbol-file it. shlib_disabled will
3747 be set if the library/object has already been removed, but
3748 the breakpoint hasn't been uninserted yet, e.g., after
3749 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3750 always-inserted mode. */
076855f9 3751 if (val
08351840
PA
3752 && (bl->loc_type == bp_loc_software_breakpoint
3753 && (bl->shlib_disabled
3754 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3755 || shared_objfile_contains_address_p (bl->pspace,
3756 bl->address))))
879d1e6b
UW
3757 val = 0;
3758
c906108c
SS
3759 if (val)
3760 return val;
b2b6a7da 3761 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3762 }
35df4500 3763 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3764 {
77b06cd7
TJB
3765 gdb_assert (bl->owner->ops != NULL
3766 && bl->owner->ops->remove_location != NULL);
3767
b2b6a7da 3768 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3769 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3770
c906108c 3771 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3772 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3773 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3774 bl->owner->number);
c906108c 3775 }
35df4500
TJB
3776 else if (bl->owner->type == bp_catchpoint
3777 && breakpoint_enabled (bl->owner)
3778 && !bl->duplicate)
ce78b96d 3779 {
77b06cd7
TJB
3780 gdb_assert (bl->owner->ops != NULL
3781 && bl->owner->ops->remove_location != NULL);
ce78b96d 3782
73971819 3783 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3784 if (val)
3785 return val;
77b06cd7 3786
b2b6a7da 3787 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3788 }
c906108c
SS
3789
3790 return 0;
3791}
3792
6c95b8df 3793static int
834c0d03 3794remove_breakpoint (struct bp_location *bl)
6c95b8df 3795{
35df4500
TJB
3796 /* BL is never in moribund_locations by our callers. */
3797 gdb_assert (bl->owner != NULL);
2bdf28a0 3798
6c95b8df
PA
3799 /* The type of none suggests that owner is actually deleted.
3800 This should not ever happen. */
35df4500 3801 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3802
5ed8105e 3803 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3804
35df4500 3805 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3806
5ed8105e 3807 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3808}
3809
c906108c
SS
3810/* Clear the "inserted" flag in all breakpoints. */
3811
25b22b0a 3812void
fba45db2 3813mark_breakpoints_out (void)
c906108c 3814{
35df4500 3815 struct bp_location *bl, **blp_tmp;
c906108c 3816
35df4500 3817 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3818 if (bl->pspace == current_program_space)
35df4500 3819 bl->inserted = 0;
c906108c
SS
3820}
3821
53a5351d
JM
3822/* Clear the "inserted" flag in all breakpoints and delete any
3823 breakpoints which should go away between runs of the program.
c906108c
SS
3824
3825 Plus other such housekeeping that has to be done for breakpoints
3826 between runs.
3827
53a5351d
JM
3828 Note: this function gets called at the end of a run (by
3829 generic_mourn_inferior) and when a run begins (by
4a64f543 3830 init_wait_for_inferior). */
c906108c
SS
3831
3832
3833
3834void
fba45db2 3835breakpoint_init_inferior (enum inf_context context)
c906108c 3836{
35df4500 3837 struct breakpoint *b, *b_tmp;
6c95b8df 3838 struct program_space *pspace = current_program_space;
c906108c 3839
50c71eaf
PA
3840 /* If breakpoint locations are shared across processes, then there's
3841 nothing to do. */
f5656ead 3842 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3843 return;
3844
1a853c52 3845 mark_breakpoints_out ();
075f6582 3846
35df4500 3847 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3848 {
6c95b8df
PA
3849 if (b->loc && b->loc->pspace != pspace)
3850 continue;
3851
c5aa993b
JM
3852 switch (b->type)
3853 {
3854 case bp_call_dummy:
e2e4d78b 3855 case bp_longjmp_call_dummy:
c906108c 3856
c5aa993b 3857 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3858 cause problems when the inferior is rerun, so we better get
3859 rid of it. */
3860
3861 case bp_watchpoint_scope:
3862
3863 /* Also get rid of scope breakpoints. */
3864
3865 case bp_shlib_event:
3866
3867 /* Also remove solib event breakpoints. Their addresses may
3868 have changed since the last time we ran the program.
3869 Actually we may now be debugging against different target;
3870 and so the solib backend that installed this breakpoint may
3871 not be used in by the target. E.g.,
3872
3873 (gdb) file prog-linux
3874 (gdb) run # native linux target
3875 ...
3876 (gdb) kill
3877 (gdb) file prog-win.exe
3878 (gdb) tar rem :9999 # remote Windows gdbserver.
3879 */
c906108c 3880
f59f708a
PA
3881 case bp_step_resume:
3882
3883 /* Also remove step-resume breakpoints. */
3884
7c16b83e
PA
3885 case bp_single_step:
3886
3887 /* Also remove single-step breakpoints. */
3888
c5aa993b
JM
3889 delete_breakpoint (b);
3890 break;
c906108c 3891
c5aa993b
JM
3892 case bp_watchpoint:
3893 case bp_hardware_watchpoint:
3894 case bp_read_watchpoint:
3895 case bp_access_watchpoint:
3a5c3e22
PA
3896 {
3897 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3898
3a5c3e22
PA
3899 /* Likewise for watchpoints on local expressions. */
3900 if (w->exp_valid_block != NULL)
3901 delete_breakpoint (b);
63000888 3902 else
3a5c3e22 3903 {
63000888
PA
3904 /* Get rid of existing locations, which are no longer
3905 valid. New ones will be created in
3906 update_watchpoint, when the inferior is restarted.
3907 The next update_global_location_list call will
3908 garbage collect them. */
3909 b->loc = NULL;
3910
3911 if (context == inf_starting)
3912 {
3913 /* Reset val field to force reread of starting value in
3914 insert_breakpoints. */
850645cf 3915 w->val.reset (nullptr);
63000888
PA
3916 w->val_valid = 0;
3917 }
3918 }
3a5c3e22 3919 }
c5aa993b
JM
3920 break;
3921 default:
c5aa993b
JM
3922 break;
3923 }
3924 }
1c5cfe86
PA
3925
3926 /* Get rid of the moribund locations. */
1123588c 3927 for (bp_location *bl : moribund_locations)
35df4500 3928 decref_bp_location (&bl);
1123588c 3929 moribund_locations.clear ();
c906108c
SS
3930}
3931
6c95b8df
PA
3932/* These functions concern about actual breakpoints inserted in the
3933 target --- to e.g. check if we need to do decr_pc adjustment or if
3934 we need to hop over the bkpt --- so we check for address space
3935 match, not program space. */
3936
c2c6d25f
JM
3937/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3938 exists at PC. It returns ordinary_breakpoint_here if it's an
3939 ordinary breakpoint, or permanent_breakpoint_here if it's a
3940 permanent breakpoint.
3941 - When continuing from a location with an ordinary breakpoint, we
3942 actually single step once before calling insert_breakpoints.
e5dd4106 3943 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
3944 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3945 the target, to advance the PC past the breakpoint. */
c906108c 3946
c2c6d25f 3947enum breakpoint_here
accd0bcd 3948breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 3949{
35df4500 3950 struct bp_location *bl, **blp_tmp;
c2c6d25f 3951 int any_breakpoint_here = 0;
c906108c 3952
35df4500 3953 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 3954 {
35df4500
TJB
3955 if (bl->loc_type != bp_loc_software_breakpoint
3956 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
3957 continue;
3958
f1310107 3959 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 3960 if ((breakpoint_enabled (bl->owner)
1a853c52 3961 || bl->permanent)
f1310107 3962 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
3963 {
3964 if (overlay_debugging
35df4500
TJB
3965 && section_is_overlay (bl->section)
3966 && !section_is_mapped (bl->section))
075f6582 3967 continue; /* unmapped overlay -- can't be a match */
1a853c52 3968 else if (bl->permanent)
075f6582
DJ
3969 return permanent_breakpoint_here;
3970 else
3971 any_breakpoint_here = 1;
3972 }
3973 }
c906108c 3974
f486487f 3975 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
3976}
3977
d35ae833
PA
3978/* See breakpoint.h. */
3979
3980int
accd0bcd 3981breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
3982 CORE_ADDR addr, ULONGEST len)
3983{
3984 struct bp_location *bl, **blp_tmp;
3985
3986 ALL_BP_LOCATIONS (bl, blp_tmp)
3987 {
3988 if (bl->loc_type != bp_loc_software_breakpoint
3989 && bl->loc_type != bp_loc_hardware_breakpoint)
3990 continue;
3991
3992 if ((breakpoint_enabled (bl->owner)
3993 || bl->permanent)
3994 && breakpoint_location_address_range_overlap (bl, aspace,
3995 addr, len))
3996 {
3997 if (overlay_debugging
3998 && section_is_overlay (bl->section)
3999 && !section_is_mapped (bl->section))
4000 {
4001 /* Unmapped overlay -- can't be a match. */
4002 continue;
4003 }
4004
4005 return 1;
4006 }
4007 }
4008
4009 return 0;
4010}
4011
1c5cfe86
PA
4012/* Return true if there's a moribund breakpoint at PC. */
4013
4014int
accd0bcd 4015moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86 4016{
1123588c 4017 for (bp_location *loc : moribund_locations)
f1310107 4018 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4019 return 1;
4020
4021 return 0;
4022}
c2c6d25f 4023
f7ce857f
PA
4024/* Returns non-zero iff BL is inserted at PC, in address space
4025 ASPACE. */
4026
4027static int
4028bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4029 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4030{
4031 if (bl->inserted
4032 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4033 aspace, pc))
4034 {
4035 if (overlay_debugging
4036 && section_is_overlay (bl->section)
4037 && !section_is_mapped (bl->section))
4038 return 0; /* unmapped overlay -- can't be a match */
4039 else
4040 return 1;
4041 }
4042 return 0;
4043}
4044
a1fd2fa5 4045/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4046
4047int
accd0bcd 4048breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4049{
f7ce857f 4050 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4051
f7ce857f 4052 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4053 {
f7ce857f
PA
4054 struct bp_location *bl = *blp;
4055
35df4500
TJB
4056 if (bl->loc_type != bp_loc_software_breakpoint
4057 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4058 continue;
4059
f7ce857f
PA
4060 if (bp_location_inserted_here_p (bl, aspace, pc))
4061 return 1;
c5aa993b 4062 }
c36b740a
VP
4063 return 0;
4064}
4065
a1fd2fa5
PA
4066/* This function returns non-zero iff there is a software breakpoint
4067 inserted at PC. */
c36b740a
VP
4068
4069int
accd0bcd 4070software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4071 CORE_ADDR pc)
4fa8626c 4072{
f7ce857f 4073 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4074
f7ce857f 4075 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4076 {
f7ce857f
PA
4077 struct bp_location *bl = *blp;
4078
35df4500 4079 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4080 continue;
4081
f7ce857f
PA
4082 if (bp_location_inserted_here_p (bl, aspace, pc))
4083 return 1;
4fa8626c
DJ
4084 }
4085
4086 return 0;
9c02b525
PA
4087}
4088
4089/* See breakpoint.h. */
4090
4091int
accd0bcd 4092hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4093 CORE_ADDR pc)
4094{
4095 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4096
4097 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4098 {
4099 struct bp_location *bl = *blp;
4100
4101 if (bl->loc_type != bp_loc_hardware_breakpoint)
4102 continue;
4103
4104 if (bp_location_inserted_here_p (bl, aspace, pc))
4105 return 1;
4106 }
4107
4108 return 0;
4fa8626c
DJ
4109}
4110
9093389c 4111int
accd0bcd 4112hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4113 CORE_ADDR addr, ULONGEST len)
4114{
4115 struct breakpoint *bpt;
4116
4117 ALL_BREAKPOINTS (bpt)
4118 {
4119 struct bp_location *loc;
4120
4121 if (bpt->type != bp_hardware_watchpoint
4122 && bpt->type != bp_access_watchpoint)
4123 continue;
4124
4125 if (!breakpoint_enabled (bpt))
4126 continue;
4127
4128 for (loc = bpt->loc; loc; loc = loc->next)
4129 if (loc->pspace->aspace == aspace && loc->inserted)
4130 {
4131 CORE_ADDR l, h;
4132
4133 /* Check for intersection. */
768adc05
PA
4134 l = std::max<CORE_ADDR> (loc->address, addr);
4135 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4136 if (l < h)
4137 return 1;
4138 }
4139 }
4140 return 0;
4141}
c906108c 4142\f
c5aa993b 4143
c906108c
SS
4144/* bpstat stuff. External routines' interfaces are documented
4145 in breakpoint.h. */
4146
4147int
c326b90e 4148is_catchpoint (struct breakpoint *ep)
c906108c 4149{
533be4dd 4150 return (ep->type == bp_catchpoint);
c906108c
SS
4151}
4152
f431efe5
PA
4153/* Frees any storage that is part of a bpstat. Does not walk the
4154 'next' chain. */
4155
04afa70c 4156bpstats::~bpstats ()
198757a8 4157{
04afa70c
TT
4158 if (bp_location_at != NULL)
4159 decref_bp_location (&bp_location_at);
198757a8
VP
4160}
4161
c906108c
SS
4162/* Clear a bpstat so that it says we are not at any breakpoint.
4163 Also free any storage that is part of a bpstat. */
4164
4165void
fba45db2 4166bpstat_clear (bpstat *bsp)
c906108c
SS
4167{
4168 bpstat p;
4169 bpstat q;
4170
4171 if (bsp == 0)
4172 return;
4173 p = *bsp;
4174 while (p != NULL)
4175 {
4176 q = p->next;
04afa70c 4177 delete p;
c906108c
SS
4178 p = q;
4179 }
4180 *bsp = NULL;
4181}
4182
04afa70c
TT
4183bpstats::bpstats (const bpstats &other)
4184 : next (NULL),
4185 bp_location_at (other.bp_location_at),
4186 breakpoint_at (other.breakpoint_at),
4187 commands (other.commands),
04afa70c
TT
4188 print (other.print),
4189 stop (other.stop),
4190 print_it (other.print_it)
4191{
850645cf
TT
4192 if (other.old_val != NULL)
4193 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c 4194 incref_bp_location (bp_location_at);
04afa70c
TT
4195}
4196
c906108c
SS
4197/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4198 is part of the bpstat is copied as well. */
4199
4200bpstat
fba45db2 4201bpstat_copy (bpstat bs)
c906108c
SS
4202{
4203 bpstat p = NULL;
4204 bpstat tmp;
4205 bpstat retval = NULL;
4206
4207 if (bs == NULL)
4208 return bs;
4209
4210 for (; bs != NULL; bs = bs->next)
4211 {
04afa70c 4212 tmp = new bpstats (*bs);
31cc81e9 4213
c906108c
SS
4214 if (p == NULL)
4215 /* This is the first thing in the chain. */
4216 retval = tmp;
4217 else
4218 p->next = tmp;
4219 p = tmp;
4220 }
4221 p->next = NULL;
4222 return retval;
4223}
4224
4a64f543 4225/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4226
4227bpstat
fba45db2 4228bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4229{
c5aa993b
JM
4230 if (bsp == NULL)
4231 return NULL;
c906108c 4232
c5aa993b
JM
4233 for (; bsp != NULL; bsp = bsp->next)
4234 {
f431efe5 4235 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4236 return bsp;
4237 }
c906108c
SS
4238 return NULL;
4239}
4240
ab04a2af
TT
4241/* See breakpoint.h. */
4242
47591c29 4243int
427cd150 4244bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4245{
ab04a2af
TT
4246 for (; bsp != NULL; bsp = bsp->next)
4247 {
427cd150
TT
4248 if (bsp->breakpoint_at == NULL)
4249 {
4250 /* A moribund location can never explain a signal other than
4251 GDB_SIGNAL_TRAP. */
4252 if (sig == GDB_SIGNAL_TRAP)
47591c29 4253 return 1;
427cd150
TT
4254 }
4255 else
47591c29
PA
4256 {
4257 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4258 sig))
4259 return 1;
4260 }
ab04a2af
TT
4261 }
4262
47591c29 4263 return 0;
ab04a2af
TT
4264}
4265
4a64f543
MS
4266/* Put in *NUM the breakpoint number of the first breakpoint we are
4267 stopped at. *BSP upon return is a bpstat which points to the
4268 remaining breakpoints stopped at (but which is not guaranteed to be
4269 good for anything but further calls to bpstat_num).
4270
8671a17b
PA
4271 Return 0 if passed a bpstat which does not indicate any breakpoints.
4272 Return -1 if stopped at a breakpoint that has been deleted since
4273 we set it.
4274 Return 1 otherwise. */
c906108c
SS
4275
4276int
8671a17b 4277bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4278{
4279 struct breakpoint *b;
4280
4281 if ((*bsp) == NULL)
4282 return 0; /* No more breakpoint values */
8671a17b 4283
4a64f543
MS
4284 /* We assume we'll never have several bpstats that correspond to a
4285 single breakpoint -- otherwise, this function might return the
4286 same number more than once and this will look ugly. */
f431efe5 4287 b = (*bsp)->breakpoint_at;
8671a17b
PA
4288 *bsp = (*bsp)->next;
4289 if (b == NULL)
4290 return -1; /* breakpoint that's been deleted since */
4291
4292 *num = b->number; /* We have its number */
4293 return 1;
c906108c
SS
4294}
4295
e93ca019 4296/* See breakpoint.h. */
c906108c
SS
4297
4298void
e93ca019 4299bpstat_clear_actions (void)
c906108c 4300{
e93ca019
JK
4301 bpstat bs;
4302
00431a78 4303 if (inferior_ptid == null_ptid)
e93ca019
JK
4304 return;
4305
00431a78 4306 thread_info *tp = inferior_thread ();
e93ca019 4307 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4308 {
d1b0a7bf 4309 bs->commands = NULL;
850645cf 4310 bs->old_val.reset (nullptr);
c906108c
SS
4311 }
4312}
4313
f3b1572e
PA
4314/* Called when a command is about to proceed the inferior. */
4315
4316static void
4317breakpoint_about_to_proceed (void)
4318{
d7e15655 4319 if (inferior_ptid != null_ptid)
f3b1572e
PA
4320 {
4321 struct thread_info *tp = inferior_thread ();
4322
4323 /* Allow inferior function calls in breakpoint commands to not
4324 interrupt the command list. When the call finishes
4325 successfully, the inferior will be standing at the same
4326 breakpoint as if nothing happened. */
16c381f0 4327 if (tp->control.in_infcall)
f3b1572e
PA
4328 return;
4329 }
4330
4331 breakpoint_proceeded = 1;
4332}
4333
abf85f46
JK
4334/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4335 or its equivalent. */
4336
4337static int
4338command_line_is_silent (struct command_line *cmd)
4339{
4f45d445 4340 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4341}
4342
4a64f543
MS
4343/* Execute all the commands associated with all the breakpoints at
4344 this location. Any of these commands could cause the process to
4345 proceed beyond this point, etc. We look out for such changes by
4346 checking the global "breakpoint_proceeded" after each command.
c906108c 4347
347bddb7
PA
4348 Returns true if a breakpoint command resumed the inferior. In that
4349 case, it is the caller's responsibility to recall it again with the
4350 bpstat of the current thread. */
4351
4352static int
4353bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4354{
4355 bpstat bs;
347bddb7 4356 int again = 0;
c906108c
SS
4357
4358 /* Avoid endless recursion if a `source' command is contained
4359 in bs->commands. */
4360 if (executing_breakpoint_commands)
347bddb7 4361 return 0;
c906108c 4362
81b1e71c
TT
4363 scoped_restore save_executing
4364 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4365
1ac32117 4366 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4367
4a64f543 4368 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4369 bs = *bsp;
4370
4371 breakpoint_proceeded = 0;
4372 for (; bs != NULL; bs = bs->next)
4373 {
d1b0a7bf 4374 struct command_line *cmd = NULL;
6c50ab1c
JB
4375
4376 /* Take ownership of the BSP's command tree, if it has one.
4377
4378 The command tree could legitimately contain commands like
4379 'step' and 'next', which call clear_proceed_status, which
4380 frees stop_bpstat's command tree. To make sure this doesn't
4381 free the tree we're executing out from under us, we need to
4382 take ownership of the tree ourselves. Since a given bpstat's
4383 commands are only executed once, we don't need to copy it; we
4384 can clear the pointer in the bpstat, and make sure we free
4385 the tree when we're done. */
d1b0a7bf 4386 counted_command_line ccmd = bs->commands;
9add0f1b 4387 bs->commands = NULL;
d1b0a7bf
TT
4388 if (ccmd != NULL)
4389 cmd = ccmd.get ();
abf85f46
JK
4390 if (command_line_is_silent (cmd))
4391 {
4392 /* The action has been already done by bpstat_stop_status. */
4393 cmd = cmd->next;
4394 }
6c50ab1c 4395
c906108c
SS
4396 while (cmd != NULL)
4397 {
4398 execute_control_command (cmd);
4399
4400 if (breakpoint_proceeded)
4401 break;
4402 else
4403 cmd = cmd->next;
4404 }
6c50ab1c 4405
c906108c 4406 if (breakpoint_proceeded)
32c1e744 4407 {
cb814510 4408 if (current_ui->async)
347bddb7
PA
4409 /* If we are in async mode, then the target might be still
4410 running, not stopped at any breakpoint, so nothing for
4411 us to do here -- just return to the event loop. */
4412 ;
32c1e744
VP
4413 else
4414 /* In sync mode, when execute_control_command returns
4415 we're already standing on the next breakpoint.
347bddb7
PA
4416 Breakpoint commands for that stop were not run, since
4417 execute_command does not run breakpoint commands --
4418 only command_line_handler does, but that one is not
4419 involved in execution of breakpoint commands. So, we
4420 can now execute breakpoint commands. It should be
4421 noted that making execute_command do bpstat actions is
4422 not an option -- in this case we'll have recursive
4423 invocation of bpstat for each breakpoint with a
4424 command, and can easily blow up GDB stack. Instead, we
4425 return true, which will trigger the caller to recall us
4426 with the new stop_bpstat. */
4427 again = 1;
4428 break;
32c1e744 4429 }
c906108c 4430 }
347bddb7
PA
4431 return again;
4432}
4433
00431a78
PA
4434/* Helper for bpstat_do_actions. Get the current thread, if there's
4435 one, is alive and has execution. Return NULL otherwise. */
4436
4437static thread_info *
4438get_bpstat_thread ()
4439{
4440 if (inferior_ptid == null_ptid || !target_has_execution)
4441 return NULL;
4442
4443 thread_info *tp = inferior_thread ();
4444 if (tp->state == THREAD_EXITED || tp->executing)
4445 return NULL;
4446 return tp;
4447}
4448
347bddb7
PA
4449void
4450bpstat_do_actions (void)
4451{
694c6bf5 4452 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
00431a78 4453 thread_info *tp;
353d1d73 4454
347bddb7 4455 /* Do any commands attached to breakpoint we are stopped at. */
00431a78
PA
4456 while ((tp = get_bpstat_thread ()) != NULL)
4457 {
4458 /* Since in sync mode, bpstat_do_actions may resume the
4459 inferior, and only return when it is stopped at the next
4460 breakpoint, we keep doing breakpoint actions until it returns
4461 false to indicate the inferior was not resumed. */
4462 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4463 break;
4464 }
353d1d73 4465
694c6bf5 4466 cleanup_if_error.release ();
c906108c
SS
4467}
4468
fa4727a6
DJ
4469/* Print out the (old or new) value associated with a watchpoint. */
4470
4471static void
4472watchpoint_value_print (struct value *val, struct ui_file *stream)
4473{
4474 if (val == NULL)
4475 fprintf_unfiltered (stream, _("<unreadable>"));
4476 else
79a45b7d
TT
4477 {
4478 struct value_print_options opts;
4479 get_user_print_options (&opts);
4480 value_print (val, stream, &opts);
4481 }
fa4727a6
DJ
4482}
4483
f303dbd6
PA
4484/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4485 debugging multiple threads. */
4486
4487void
4488maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4489{
112e8700 4490 if (uiout->is_mi_like_p ())
f303dbd6
PA
4491 return;
4492
112e8700 4493 uiout->text ("\n");
f303dbd6
PA
4494
4495 if (show_thread_that_caused_stop ())
4496 {
4497 const char *name;
4498 struct thread_info *thr = inferior_thread ();
4499
112e8700
SM
4500 uiout->text ("Thread ");
4501 uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
f303dbd6
PA
4502
4503 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4504 if (name != NULL)
4505 {
112e8700
SM
4506 uiout->text (" \"");
4507 uiout->field_fmt ("name", "%s", name);
4508 uiout->text ("\"");
f303dbd6
PA
4509 }
4510
112e8700 4511 uiout->text (" hit ");
f303dbd6
PA
4512 }
4513}
4514
e514a9d6 4515/* Generic routine for printing messages indicating why we
4a64f543 4516 stopped. The behavior of this function depends on the value
e514a9d6
JM
4517 'print_it' in the bpstat structure. Under some circumstances we
4518 may decide not to print anything here and delegate the task to
4a64f543 4519 normal_stop(). */
e514a9d6
JM
4520
4521static enum print_stop_action
4522print_bp_stop_message (bpstat bs)
4523{
4524 switch (bs->print_it)
4525 {
4526 case print_it_noop:
4a64f543 4527 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4528 return PRINT_UNKNOWN;
4529 break;
4530
4531 case print_it_done:
4532 /* We still want to print the frame, but we already printed the
4a64f543 4533 relevant messages. */
e514a9d6
JM
4534 return PRINT_SRC_AND_LOC;
4535 break;
4536
4537 case print_it_normal:
4f8d1dc6 4538 {
f431efe5
PA
4539 struct breakpoint *b = bs->breakpoint_at;
4540
1a6a67de
TJB
4541 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4542 which has since been deleted. */
4543 if (b == NULL)
4544 return PRINT_UNKNOWN;
4545
348d480f
PA
4546 /* Normal case. Call the breakpoint's print_it method. */
4547 return b->ops->print_it (bs);
4f8d1dc6 4548 }
348d480f 4549 break;
3086aeae 4550
e514a9d6 4551 default:
8e65ff28 4552 internal_error (__FILE__, __LINE__,
e2e0b3e5 4553 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4554 break;
c906108c 4555 }
c906108c
SS
4556}
4557
edcc5120
TT
4558/* A helper function that prints a shared library stopped event. */
4559
4560static void
4561print_solib_event (int is_catchpoint)
4562{
6fb16ce6 4563 bool any_deleted = !current_program_space->deleted_solibs.empty ();
bcb430e4 4564 bool any_added = !current_program_space->added_solibs.empty ();
edcc5120
TT
4565
4566 if (!is_catchpoint)
4567 {
4568 if (any_added || any_deleted)
112e8700 4569 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4570 else
112e8700
SM
4571 current_uiout->text (_("Stopped due to shared library event (no "
4572 "libraries added or removed)\n"));
edcc5120
TT
4573 }
4574
112e8700
SM
4575 if (current_uiout->is_mi_like_p ())
4576 current_uiout->field_string ("reason",
4577 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4578
4579 if (any_deleted)
4580 {
112e8700 4581 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4582 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4583 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4584 {
6fb16ce6
SM
4585 const std::string &name = current_program_space->deleted_solibs[ix];
4586
edcc5120 4587 if (ix > 0)
112e8700
SM
4588 current_uiout->text (" ");
4589 current_uiout->field_string ("library", name);
4590 current_uiout->text ("\n");
edcc5120 4591 }
edcc5120
TT
4592 }
4593
4594 if (any_added)
4595 {
112e8700 4596 current_uiout->text (_(" Inferior loaded "));
10f489e5 4597 ui_out_emit_list list_emitter (current_uiout, "added");
bcb430e4 4598 bool first = true;
52941706 4599 for (so_list *iter : current_program_space->added_solibs)
edcc5120 4600 {
bcb430e4 4601 if (!first)
112e8700 4602 current_uiout->text (" ");
bcb430e4 4603 first = false;
112e8700
SM
4604 current_uiout->field_string ("library", iter->so_name);
4605 current_uiout->text ("\n");
edcc5120 4606 }
edcc5120
TT
4607 }
4608}
4609
e514a9d6
JM
4610/* Print a message indicating what happened. This is called from
4611 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4612 list - a list of the eventpoints that caused this stop. KIND is
4613 the target_waitkind for the stopping event. This
e514a9d6
JM
4614 routine calls the generic print routine for printing a message
4615 about reasons for stopping. This will print (for example) the
4616 "Breakpoint n," part of the output. The return value of this
4617 routine is one of:
c906108c 4618
4a64f543 4619 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4620 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4621 code to print the location. An example is
c5aa993b
JM
4622 "Breakpoint 1, " which should be followed by
4623 the location.
917317f4 4624 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4625 to also print the location part of the message.
4626 An example is the catch/throw messages, which
4a64f543 4627 don't require a location appended to the end.
917317f4 4628 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4629 further info to be printed. */
c906108c 4630
917317f4 4631enum print_stop_action
36dfb11c 4632bpstat_print (bpstat bs, int kind)
c906108c 4633{
f486487f 4634 enum print_stop_action val;
c5aa993b 4635
c906108c 4636 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4637 (Currently all watchpoints go on the bpstat whether hit or not.
4638 That probably could (should) be changed, provided care is taken
c906108c 4639 with respect to bpstat_explains_signal). */
e514a9d6
JM
4640 for (; bs; bs = bs->next)
4641 {
4642 val = print_bp_stop_message (bs);
4643 if (val == PRINT_SRC_ONLY
4644 || val == PRINT_SRC_AND_LOC
4645 || val == PRINT_NOTHING)
4646 return val;
4647 }
c906108c 4648
36dfb11c
TT
4649 /* If we had hit a shared library event breakpoint,
4650 print_bp_stop_message would print out this message. If we hit an
4651 OS-level shared library event, do the same thing. */
4652 if (kind == TARGET_WAITKIND_LOADED)
4653 {
edcc5120 4654 print_solib_event (0);
36dfb11c
TT
4655 return PRINT_NOTHING;
4656 }
4657
e514a9d6 4658 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4659 with and nothing was printed. */
917317f4 4660 return PRINT_UNKNOWN;
c906108c
SS
4661}
4662
bf469271 4663/* Evaluate the boolean expression EXP and return the result. */
c906108c 4664
bf469271
PA
4665static bool
4666breakpoint_cond_eval (expression *exp)
c906108c 4667{
278cd55f 4668 struct value *mark = value_mark ();
bf469271 4669 bool res = value_true (evaluate_expression (exp));
cc59ec59 4670
c906108c 4671 value_free_to_mark (mark);
bf469271 4672 return res;
c906108c
SS
4673}
4674
5760d0ab 4675/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4676
04afa70c
TT
4677bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4678 : next (NULL),
4679 bp_location_at (bl),
4680 breakpoint_at (bl->owner),
4681 commands (NULL),
04afa70c
TT
4682 print (0),
4683 stop (0),
4684 print_it (print_it_normal)
c906108c 4685{
f431efe5 4686 incref_bp_location (bl);
04afa70c
TT
4687 **bs_link_pointer = this;
4688 *bs_link_pointer = &next;
4689}
4690
4691bpstats::bpstats ()
4692 : next (NULL),
4693 bp_location_at (NULL),
4694 breakpoint_at (NULL),
4695 commands (NULL),
04afa70c
TT
4696 print (0),
4697 stop (0),
4698 print_it (print_it_normal)
4699{
c906108c
SS
4700}
4701\f
d983da9c
DJ
4702/* The target has stopped with waitstatus WS. Check if any hardware
4703 watchpoints have triggered, according to the target. */
4704
4705int
4706watchpoints_triggered (struct target_waitstatus *ws)
4707{
57810aa7 4708 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4709 CORE_ADDR addr;
4710 struct breakpoint *b;
4711
4712 if (!stopped_by_watchpoint)
4713 {
4714 /* We were not stopped by a watchpoint. Mark all watchpoints
4715 as not triggered. */
4716 ALL_BREAKPOINTS (b)
cc60f2e3 4717 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4718 {
4719 struct watchpoint *w = (struct watchpoint *) b;
4720
4721 w->watchpoint_triggered = watch_triggered_no;
4722 }
d983da9c
DJ
4723
4724 return 0;
4725 }
4726
8b88a78e 4727 if (!target_stopped_data_address (current_top_target (), &addr))
d983da9c
DJ
4728 {
4729 /* We were stopped by a watchpoint, but we don't know where.
4730 Mark all watchpoints as unknown. */
4731 ALL_BREAKPOINTS (b)
cc60f2e3 4732 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4733 {
4734 struct watchpoint *w = (struct watchpoint *) b;
4735
4736 w->watchpoint_triggered = watch_triggered_unknown;
4737 }
d983da9c 4738
3c4797ba 4739 return 1;
d983da9c
DJ
4740 }
4741
4742 /* The target could report the data address. Mark watchpoints
4743 affected by this data address as triggered, and all others as not
4744 triggered. */
4745
4746 ALL_BREAKPOINTS (b)
cc60f2e3 4747 if (is_hardware_watchpoint (b))
d983da9c 4748 {
3a5c3e22 4749 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4750 struct bp_location *loc;
d983da9c 4751
3a5c3e22 4752 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4753 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4754 {
3a5c3e22 4755 if (is_masked_watchpoint (b))
9c06b0b4 4756 {
3a5c3e22
PA
4757 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4758 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4759
4760 if (newaddr == start)
4761 {
3a5c3e22 4762 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4763 break;
4764 }
4765 }
4766 /* Exact match not required. Within range is sufficient. */
8b88a78e 4767 else if (target_watchpoint_addr_within_range (current_top_target (),
9c06b0b4
TJB
4768 addr, loc->address,
4769 loc->length))
4770 {
3a5c3e22 4771 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4772 break;
4773 }
4774 }
d983da9c
DJ
4775 }
4776
4777 return 1;
4778}
4779
bf469271
PA
4780/* Possible return values for watchpoint_check. */
4781enum wp_check_result
4782 {
4783 /* The watchpoint has been deleted. */
4784 WP_DELETED = 1,
4785
4786 /* The value has changed. */
4787 WP_VALUE_CHANGED = 2,
4788
4789 /* The value has not changed. */
4790 WP_VALUE_NOT_CHANGED = 3,
4791
4792 /* Ignore this watchpoint, no matter if the value changed or not. */
4793 WP_IGNORE = 4,
4794 };
c906108c
SS
4795
4796#define BP_TEMPFLAG 1
4797#define BP_HARDWAREFLAG 2
4798
4a64f543 4799/* Evaluate watchpoint condition expression and check if its value
bf469271 4800 changed. */
553e4c11 4801
bf469271
PA
4802static wp_check_result
4803watchpoint_check (bpstat bs)
c906108c 4804{
3a5c3e22 4805 struct watchpoint *b;
c906108c
SS
4806 struct frame_info *fr;
4807 int within_current_scope;
4808
f431efe5 4809 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4810 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4811 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4812
f6bc2008
PA
4813 /* If this is a local watchpoint, we only want to check if the
4814 watchpoint frame is in scope if the current thread is the thread
4815 that was used to create the watchpoint. */
4816 if (!watchpoint_in_thread_scope (b))
60e1c644 4817 return WP_IGNORE;
f6bc2008 4818
c906108c
SS
4819 if (b->exp_valid_block == NULL)
4820 within_current_scope = 1;
4821 else
4822 {
edb3359d
DJ
4823 struct frame_info *frame = get_current_frame ();
4824 struct gdbarch *frame_arch = get_frame_arch (frame);
4825 CORE_ADDR frame_pc = get_frame_pc (frame);
4826
c9cf6e20 4827 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4828 still in the function but the stack frame has already been
4829 invalidated. Since we can't rely on the values of local
4830 variables after the stack has been destroyed, we are treating
4831 the watchpoint in that state as `not changed' without further
4832 checking. Don't mark watchpoints as changed if the current
4833 frame is in an epilogue - even if they are in some other
4834 frame, our view of the stack is likely to be wrong and
4835 frame_find_by_id could error out. */
c9cf6e20 4836 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4837 return WP_IGNORE;
a0f49112 4838
101dcfbe 4839 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4840 within_current_scope = (fr != NULL);
69fbadd5
DJ
4841
4842 /* If we've gotten confused in the unwinder, we might have
4843 returned a frame that can't describe this variable. */
edb3359d
DJ
4844 if (within_current_scope)
4845 {
4846 struct symbol *function;
4847
4848 function = get_frame_function (fr);
4849 if (function == NULL
4850 || !contained_in (b->exp_valid_block,
4851 SYMBOL_BLOCK_VALUE (function)))
4852 within_current_scope = 0;
4853 }
69fbadd5 4854
edb3359d 4855 if (within_current_scope)
c906108c
SS
4856 /* If we end up stopping, the current frame will get selected
4857 in normal_stop. So this call to select_frame won't affect
4858 the user. */
0f7d239c 4859 select_frame (fr);
c906108c 4860 }
c5aa993b 4861
c906108c
SS
4862 if (within_current_scope)
4863 {
4a64f543
MS
4864 /* We use value_{,free_to_}mark because it could be a *long*
4865 time before we return to the command level and call
4866 free_all_values. We can't call free_all_values because we
4867 might be in the middle of evaluating a function call. */
c906108c 4868
0cf6dd15 4869 int pc = 0;
9c06b0b4 4870 struct value *mark;
fa4727a6
DJ
4871 struct value *new_val;
4872
c1fc2657 4873 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4874 /* Since we don't know the exact trigger address (from
4875 stopped_data_address), just tell the user we've triggered
4876 a mask watchpoint. */
4877 return WP_VALUE_CHANGED;
4878
4879 mark = value_mark ();
4d01a485 4880 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
218d2fc6 4881
bb9d5f81
PP
4882 if (b->val_bitsize != 0)
4883 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4884
4a64f543
MS
4885 /* We use value_equal_contents instead of value_equal because
4886 the latter coerces an array to a pointer, thus comparing just
4887 the address of the array instead of its contents. This is
4888 not what we want. */
fa4727a6 4889 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4890 || (b->val != NULL && !value_equal_contents (b->val.get (),
4891 new_val)))
c906108c 4892 {
c906108c 4893 bs->old_val = b->val;
850645cf 4894 b->val = release_value (new_val);
fa4727a6 4895 b->val_valid = 1;
850645cf
TT
4896 if (new_val != NULL)
4897 value_free_to_mark (mark);
c906108c
SS
4898 return WP_VALUE_CHANGED;
4899 }
4900 else
4901 {
60e1c644 4902 /* Nothing changed. */
c906108c 4903 value_free_to_mark (mark);
c906108c
SS
4904 return WP_VALUE_NOT_CHANGED;
4905 }
4906 }
4907 else
4908 {
4909 /* This seems like the only logical thing to do because
c5aa993b
JM
4910 if we temporarily ignored the watchpoint, then when
4911 we reenter the block in which it is valid it contains
4912 garbage (in the case of a function, it may have two
4913 garbage values, one before and one after the prologue).
4914 So we can't even detect the first assignment to it and
4915 watch after that (since the garbage may or may not equal
4916 the first value assigned). */
348d480f
PA
4917 /* We print all the stop information in
4918 breakpoint_ops->print_it, but in this case, by the time we
4919 call breakpoint_ops->print_it this bp will be deleted
4920 already. So we have no choice but print the information
4921 here. */
468afe6c 4922
0e454242 4923 SWITCH_THRU_ALL_UIS ()
468afe6c
PA
4924 {
4925 struct ui_out *uiout = current_uiout;
4926
112e8700
SM
4927 if (uiout->is_mi_like_p ())
4928 uiout->field_string
4929 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4930 uiout->text ("\nWatchpoint ");
c1fc2657 4931 uiout->field_int ("wpnum", b->number);
112e8700 4932 uiout->text (" deleted because the program has left the block in\n"
468afe6c
PA
4933 "which its expression is valid.\n");
4934 }
4ce44c66 4935
cdac0397 4936 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 4937 b->commands = NULL;
d0fb5eae 4938 watchpoint_del_at_next_stop (b);
c906108c
SS
4939
4940 return WP_DELETED;
4941 }
4942}
4943
18a18393 4944/* Return true if it looks like target has stopped due to hitting
348d480f
PA
4945 breakpoint location BL. This function does not check if we should
4946 stop, only if BL explains the stop. */
4947
18a18393 4948static int
6c95b8df 4949bpstat_check_location (const struct bp_location *bl,
accd0bcd 4950 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 4951 const struct target_waitstatus *ws)
18a18393
VP
4952{
4953 struct breakpoint *b = bl->owner;
4954
348d480f 4955 /* BL is from an existing breakpoint. */
2bdf28a0
JK
4956 gdb_assert (b != NULL);
4957
bd522513 4958 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
4959}
4960
3a5c3e22
PA
4961/* Determine if the watched values have actually changed, and we
4962 should stop. If not, set BS->stop to 0. */
4963
18a18393
VP
4964static void
4965bpstat_check_watchpoint (bpstat bs)
4966{
2bdf28a0 4967 const struct bp_location *bl;
3a5c3e22 4968 struct watchpoint *b;
2bdf28a0
JK
4969
4970 /* BS is built for existing struct breakpoint. */
f431efe5 4971 bl = bs->bp_location_at;
2bdf28a0 4972 gdb_assert (bl != NULL);
3a5c3e22 4973 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 4974 gdb_assert (b != NULL);
18a18393 4975
18a18393 4976 {
18a18393
VP
4977 int must_check_value = 0;
4978
c1fc2657 4979 if (b->type == bp_watchpoint)
18a18393
VP
4980 /* For a software watchpoint, we must always check the
4981 watched value. */
4982 must_check_value = 1;
4983 else if (b->watchpoint_triggered == watch_triggered_yes)
4984 /* We have a hardware watchpoint (read, write, or access)
4985 and the target earlier reported an address watched by
4986 this watchpoint. */
4987 must_check_value = 1;
4988 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 4989 && b->type == bp_hardware_watchpoint)
18a18393
VP
4990 /* We were stopped by a hardware watchpoint, but the target could
4991 not report the data address. We must check the watchpoint's
4992 value. Access and read watchpoints are out of luck; without
4993 a data address, we can't figure it out. */
4994 must_check_value = 1;
3a5c3e22 4995
18a18393
VP
4996 if (must_check_value)
4997 {
bf469271
PA
4998 wp_check_result e;
4999
a70b8144 5000 try
bf469271
PA
5001 {
5002 e = watchpoint_check (bs);
5003 }
230d2906 5004 catch (const gdb_exception &ex)
bf469271
PA
5005 {
5006 exception_fprintf (gdb_stderr, ex,
5007 "Error evaluating expression "
5008 "for watchpoint %d\n",
5009 b->number);
5010
5011 SWITCH_THRU_ALL_UIS ()
5012 {
5013 printf_filtered (_("Watchpoint %d deleted.\n"),
5014 b->number);
5015 }
5016 watchpoint_del_at_next_stop (b);
5017 e = WP_DELETED;
5018 }
bf469271 5019
18a18393
VP
5020 switch (e)
5021 {
5022 case WP_DELETED:
5023 /* We've already printed what needs to be printed. */
5024 bs->print_it = print_it_done;
5025 /* Stop. */
5026 break;
60e1c644
PA
5027 case WP_IGNORE:
5028 bs->print_it = print_it_noop;
5029 bs->stop = 0;
5030 break;
18a18393 5031 case WP_VALUE_CHANGED:
c1fc2657 5032 if (b->type == bp_read_watchpoint)
18a18393 5033 {
85d721b8
PA
5034 /* There are two cases to consider here:
5035
4a64f543 5036 1. We're watching the triggered memory for reads.
85d721b8
PA
5037 In that case, trust the target, and always report
5038 the watchpoint hit to the user. Even though
5039 reads don't cause value changes, the value may
5040 have changed since the last time it was read, and
5041 since we're not trapping writes, we will not see
5042 those, and as such we should ignore our notion of
5043 old value.
5044
4a64f543 5045 2. We're watching the triggered memory for both
85d721b8
PA
5046 reads and writes. There are two ways this may
5047 happen:
5048
4a64f543 5049 2.1. This is a target that can't break on data
85d721b8
PA
5050 reads only, but can break on accesses (reads or
5051 writes), such as e.g., x86. We detect this case
5052 at the time we try to insert read watchpoints.
5053
4a64f543 5054 2.2. Otherwise, the target supports read
85d721b8
PA
5055 watchpoints, but, the user set an access or write
5056 watchpoint watching the same memory as this read
5057 watchpoint.
5058
5059 If we're watching memory writes as well as reads,
5060 ignore watchpoint hits when we find that the
5061 value hasn't changed, as reads don't cause
5062 changes. This still gives false positives when
5063 the program writes the same value to memory as
5064 what there was already in memory (we will confuse
5065 it for a read), but it's much better than
5066 nothing. */
5067
5068 int other_write_watchpoint = 0;
5069
5070 if (bl->watchpoint_type == hw_read)
5071 {
5072 struct breakpoint *other_b;
5073
5074 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5075 if (other_b->type == bp_hardware_watchpoint
5076 || other_b->type == bp_access_watchpoint)
85d721b8 5077 {
3a5c3e22
PA
5078 struct watchpoint *other_w =
5079 (struct watchpoint *) other_b;
5080
5081 if (other_w->watchpoint_triggered
5082 == watch_triggered_yes)
5083 {
5084 other_write_watchpoint = 1;
5085 break;
5086 }
85d721b8
PA
5087 }
5088 }
5089
5090 if (other_write_watchpoint
5091 || bl->watchpoint_type == hw_access)
5092 {
5093 /* We're watching the same memory for writes,
5094 and the value changed since the last time we
5095 updated it, so this trap must be for a write.
5096 Ignore it. */
5097 bs->print_it = print_it_noop;
5098 bs->stop = 0;
5099 }
18a18393
VP
5100 }
5101 break;
5102 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5103 if (b->type == bp_hardware_watchpoint
5104 || b->type == bp_watchpoint)
18a18393
VP
5105 {
5106 /* Don't stop: write watchpoints shouldn't fire if
5107 the value hasn't changed. */
5108 bs->print_it = print_it_noop;
5109 bs->stop = 0;
5110 }
5111 /* Stop. */
5112 break;
5113 default:
5114 /* Can't happen. */
18a18393
VP
5115 break;
5116 }
5117 }
5118 else /* must_check_value == 0 */
5119 {
5120 /* This is a case where some watchpoint(s) triggered, but
5121 not at the address of this watchpoint, or else no
5122 watchpoint triggered after all. So don't print
5123 anything for this watchpoint. */
5124 bs->print_it = print_it_noop;
5125 bs->stop = 0;
5126 }
5127 }
5128}
5129
7d4df6a4
DE
5130/* For breakpoints that are currently marked as telling gdb to stop,
5131 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5132 of breakpoint referred to by BS. If we should not stop for this
5133 breakpoint, set BS->stop to 0. */
f431efe5 5134
18a18393 5135static void
00431a78 5136bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
18a18393 5137{
2bdf28a0
JK
5138 const struct bp_location *bl;
5139 struct breakpoint *b;
bf469271
PA
5140 /* Assume stop. */
5141 bool condition_result = true;
7d4df6a4
DE
5142 struct expression *cond;
5143
5144 gdb_assert (bs->stop);
2bdf28a0
JK
5145
5146 /* BS is built for existing struct breakpoint. */
f431efe5 5147 bl = bs->bp_location_at;
2bdf28a0 5148 gdb_assert (bl != NULL);
f431efe5 5149 b = bs->breakpoint_at;
2bdf28a0 5150 gdb_assert (b != NULL);
18a18393 5151
b775012e
LM
5152 /* Even if the target evaluated the condition on its end and notified GDB, we
5153 need to do so again since GDB does not know if we stopped due to a
5154 breakpoint or a single step breakpoint. */
5155
18a18393 5156 if (frame_id_p (b->frame_id)
edb3359d 5157 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5158 {
7d4df6a4
DE
5159 bs->stop = 0;
5160 return;
5161 }
60e1c644 5162
12ab52e9
PA
5163 /* If this is a thread/task-specific breakpoint, don't waste cpu
5164 evaluating the condition if this isn't the specified
5165 thread/task. */
00431a78
PA
5166 if ((b->thread != -1 && b->thread != thread->global_num)
5167 || (b->task != 0 && b->task != ada_get_task_number (thread)))
6c1b0f7b
DE
5168 {
5169 bs->stop = 0;
5170 return;
5171 }
5172
6dddc817
DE
5173 /* Evaluate extension language breakpoints that have a "stop" method
5174 implemented. */
5175 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5176
7d4df6a4
DE
5177 if (is_watchpoint (b))
5178 {
5179 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5180
4d01a485 5181 cond = w->cond_exp.get ();
7d4df6a4
DE
5182 }
5183 else
4d01a485 5184 cond = bl->cond.get ();
60e1c644 5185
7d4df6a4
DE
5186 if (cond && b->disposition != disp_del_at_next_stop)
5187 {
5188 int within_current_scope = 1;
5189 struct watchpoint * w;
60e1c644 5190
7d4df6a4
DE
5191 /* We use value_mark and value_free_to_mark because it could
5192 be a long time before we return to the command level and
5193 call free_all_values. We can't call free_all_values
5194 because we might be in the middle of evaluating a
5195 function call. */
5196 struct value *mark = value_mark ();
5197
5198 if (is_watchpoint (b))
5199 w = (struct watchpoint *) b;
5200 else
5201 w = NULL;
5202
5203 /* Need to select the frame, with all that implies so that
5204 the conditions will have the right context. Because we
5205 use the frame, we will not see an inlined function's
5206 variables when we arrive at a breakpoint at the start
5207 of the inlined function; the current frame will be the
5208 call site. */
5209 if (w == NULL || w->cond_exp_valid_block == NULL)
5210 select_frame (get_current_frame ());
5211 else
18a18393 5212 {
7d4df6a4
DE
5213 struct frame_info *frame;
5214
5215 /* For local watchpoint expressions, which particular
5216 instance of a local is being watched matters, so we
5217 keep track of the frame to evaluate the expression
5218 in. To evaluate the condition however, it doesn't
5219 really matter which instantiation of the function
5220 where the condition makes sense triggers the
5221 watchpoint. This allows an expression like "watch
5222 global if q > 10" set in `func', catch writes to
5223 global on all threads that call `func', or catch
5224 writes on all recursive calls of `func' by a single
5225 thread. We simply always evaluate the condition in
5226 the innermost frame that's executing where it makes
5227 sense to evaluate the condition. It seems
5228 intuitive. */
5229 frame = block_innermost_frame (w->cond_exp_valid_block);
5230 if (frame != NULL)
5231 select_frame (frame);
5232 else
5233 within_current_scope = 0;
18a18393 5234 }
7d4df6a4 5235 if (within_current_scope)
bf469271 5236 {
a70b8144 5237 try
bf469271
PA
5238 {
5239 condition_result = breakpoint_cond_eval (cond);
5240 }
230d2906 5241 catch (const gdb_exception &ex)
bf469271
PA
5242 {
5243 exception_fprintf (gdb_stderr, ex,
5244 "Error in testing breakpoint condition:\n");
5245 }
bf469271 5246 }
7d4df6a4 5247 else
18a18393 5248 {
7d4df6a4
DE
5249 warning (_("Watchpoint condition cannot be tested "
5250 "in the current scope"));
5251 /* If we failed to set the right context for this
5252 watchpoint, unconditionally report it. */
18a18393 5253 }
7d4df6a4
DE
5254 /* FIXME-someday, should give breakpoint #. */
5255 value_free_to_mark (mark);
18a18393 5256 }
7d4df6a4 5257
bf469271 5258 if (cond && !condition_result)
7d4df6a4
DE
5259 {
5260 bs->stop = 0;
5261 }
7d4df6a4
DE
5262 else if (b->ignore_count > 0)
5263 {
5264 b->ignore_count--;
5265 bs->stop = 0;
5266 /* Increase the hit count even though we don't stop. */
5267 ++(b->hit_count);
76727919 5268 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5269 }
18a18393
VP
5270}
5271
1cf4d951
PA
5272/* Returns true if we need to track moribund locations of LOC's type
5273 on the current target. */
5274
5275static int
5276need_moribund_for_location_type (struct bp_location *loc)
5277{
5278 return ((loc->loc_type == bp_loc_software_breakpoint
5279 && !target_supports_stopped_by_sw_breakpoint ())
5280 || (loc->loc_type == bp_loc_hardware_breakpoint
5281 && !target_supports_stopped_by_hw_breakpoint ()));
5282}
5283
ddfe970e 5284/* See breakpoint.h. */
c906108c
SS
5285
5286bpstat
ddfe970e 5287build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5288 const struct target_waitstatus *ws)
c906108c 5289{
ddfe970e 5290 struct breakpoint *b;
5760d0ab 5291 bpstat bs_head = NULL, *bs_link = &bs_head;
c5aa993b 5292
429374b8
JK
5293 ALL_BREAKPOINTS (b)
5294 {
1a853c52 5295 if (!breakpoint_enabled (b))
429374b8 5296 continue;
a5606eee 5297
ddfe970e 5298 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
429374b8 5299 {
4a64f543
MS
5300 /* For hardware watchpoints, we look only at the first
5301 location. The watchpoint_check function will work on the
5302 entire expression, not the individual locations. For
5303 read watchpoints, the watchpoints_triggered function has
5304 checked all locations already. */
429374b8
JK
5305 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5306 break;
18a18393 5307
f6592439 5308 if (!bl->enabled || bl->shlib_disabled)
429374b8 5309 continue;
c5aa993b 5310
09ac7c10 5311 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5312 continue;
c5aa993b 5313
4a64f543
MS
5314 /* Come here if it's a watchpoint, or if the break address
5315 matches. */
c5aa993b 5316
ddfe970e
KS
5317 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5318 explain stop. */
c5aa993b 5319
f431efe5
PA
5320 /* Assume we stop. Should we find a watchpoint that is not
5321 actually triggered, or if the condition of the breakpoint
5322 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5323 bs->stop = 1;
5324 bs->print = 1;
d983da9c 5325
f431efe5
PA
5326 /* If this is a scope breakpoint, mark the associated
5327 watchpoint as triggered so that we will handle the
5328 out-of-scope event. We'll get to the watchpoint next
5329 iteration. */
d0fb5eae 5330 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5331 {
5332 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5333
5334 w->watchpoint_triggered = watch_triggered_yes;
5335 }
f431efe5
PA
5336 }
5337 }
5338
7c16b83e 5339 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5340 if (!target_supports_stopped_by_sw_breakpoint ()
5341 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5342 {
1123588c 5343 for (bp_location *loc : moribund_locations)
f431efe5 5344 {
1cf4d951
PA
5345 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5346 && need_moribund_for_location_type (loc))
5347 {
ddfe970e 5348 bpstat bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5349 /* For hits of moribund locations, we should just proceed. */
5350 bs->stop = 0;
5351 bs->print = 0;
5352 bs->print_it = print_it_noop;
5353 }
f431efe5
PA
5354 }
5355 }
5356
ddfe970e
KS
5357 return bs_head;
5358}
5359
5360/* See breakpoint.h. */
5361
5362bpstat
5363bpstat_stop_status (const address_space *aspace,
00431a78 5364 CORE_ADDR bp_addr, thread_info *thread,
ddfe970e
KS
5365 const struct target_waitstatus *ws,
5366 bpstat stop_chain)
5367{
5368 struct breakpoint *b = NULL;
5369 /* First item of allocated bpstat's. */
5370 bpstat bs_head = stop_chain;
5371 bpstat bs;
5372 int need_remove_insert;
5373 int removed_any;
5374
5375 /* First, build the bpstat chain with locations that explain a
5376 target stop, while being careful to not set the target running,
5377 as that may invalidate locations (in particular watchpoint
5378 locations are recreated). Resuming will happen here with
5379 breakpoint conditions or watchpoint expressions that include
5380 inferior function calls. */
5381 if (bs_head == NULL)
5382 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5383
edcc5120
TT
5384 /* A bit of special processing for shlib breakpoints. We need to
5385 process solib loading here, so that the lists of loaded and
5386 unloaded libraries are correct before we handle "catch load" and
5387 "catch unload". */
5388 for (bs = bs_head; bs != NULL; bs = bs->next)
5389 {
5d268276 5390 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5391 {
5392 handle_solib_event ();
5393 break;
5394 }
5395 }
5396
f431efe5
PA
5397 /* Now go through the locations that caused the target to stop, and
5398 check whether we're interested in reporting this stop to higher
5399 layers, or whether we should resume the target transparently. */
5400
5401 removed_any = 0;
5402
5760d0ab 5403 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5404 {
5405 if (!bs->stop)
5406 continue;
5407
f431efe5 5408 b = bs->breakpoint_at;
348d480f
PA
5409 b->ops->check_status (bs);
5410 if (bs->stop)
28010a5d 5411 {
00431a78 5412 bpstat_check_breakpoint_conditions (bs, thread);
f431efe5 5413
429374b8
JK
5414 if (bs->stop)
5415 {
5416 ++(b->hit_count);
76727919 5417 gdb::observers::breakpoint_modified.notify (b);
c906108c 5418
4a64f543 5419 /* We will stop here. */
429374b8
JK
5420 if (b->disposition == disp_disable)
5421 {
816338b5 5422 --(b->enable_count);
1a853c52 5423 if (b->enable_count <= 0)
429374b8 5424 b->enable_state = bp_disabled;
f431efe5 5425 removed_any = 1;
429374b8
JK
5426 }
5427 if (b->silent)
5428 bs->print = 0;
5429 bs->commands = b->commands;
abf85f46 5430 if (command_line_is_silent (bs->commands
d1b0a7bf 5431 ? bs->commands.get () : NULL))
abf85f46 5432 bs->print = 0;
9d6e6e84
HZ
5433
5434 b->ops->after_condition_true (bs);
429374b8
JK
5435 }
5436
348d480f 5437 }
a9b3a50f
PA
5438
5439 /* Print nothing for this entry if we don't stop or don't
5440 print. */
5441 if (!bs->stop || !bs->print)
5442 bs->print_it = print_it_noop;
429374b8 5443 }
876fa593 5444
d983da9c
DJ
5445 /* If we aren't stopping, the value of some hardware watchpoint may
5446 not have changed, but the intermediate memory locations we are
5447 watching may have. Don't bother if we're stopping; this will get
5448 done later. */
d832cb68 5449 need_remove_insert = 0;
5760d0ab
JK
5450 if (! bpstat_causes_stop (bs_head))
5451 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5452 if (!bs->stop
f431efe5
PA
5453 && bs->breakpoint_at
5454 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5455 {
3a5c3e22
PA
5456 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5457
5458 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5459 need_remove_insert = 1;
d983da9c
DJ
5460 }
5461
d832cb68 5462 if (need_remove_insert)
44702360 5463 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5464 else if (removed_any)
44702360 5465 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5466
5760d0ab 5467 return bs_head;
c906108c 5468}
628fe4e4
JK
5469
5470static void
5471handle_jit_event (void)
5472{
5473 struct frame_info *frame;
5474 struct gdbarch *gdbarch;
5475
243a9253
PA
5476 if (debug_infrun)
5477 fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5478
628fe4e4
JK
5479 /* Switch terminal for any messages produced by
5480 breakpoint_re_set. */
223ffa71 5481 target_terminal::ours_for_output ();
628fe4e4
JK
5482
5483 frame = get_current_frame ();
5484 gdbarch = get_frame_arch (frame);
5485
5486 jit_event_handler (gdbarch);
5487
223ffa71 5488 target_terminal::inferior ();
628fe4e4
JK
5489}
5490
5491/* Prepare WHAT final decision for infrun. */
5492
5493/* Decide what infrun needs to do with this bpstat. */
5494
c906108c 5495struct bpstat_what
0e30163f 5496bpstat_what (bpstat bs_head)
c906108c 5497{
c906108c 5498 struct bpstat_what retval;
0e30163f 5499 bpstat bs;
c906108c 5500
628fe4e4 5501 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5502 retval.call_dummy = STOP_NONE;
186c406b 5503 retval.is_longjmp = 0;
628fe4e4 5504
0e30163f 5505 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5506 {
628fe4e4
JK
5507 /* Extract this BS's action. After processing each BS, we check
5508 if its action overrides all we've seem so far. */
5509 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5510 enum bptype bptype;
5511
c906108c 5512 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5513 {
5514 /* I suspect this can happen if it was a momentary
5515 breakpoint which has since been deleted. */
5516 bptype = bp_none;
5517 }
20874c92 5518 else
f431efe5 5519 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5520
5521 switch (bptype)
c906108c
SS
5522 {
5523 case bp_none:
628fe4e4 5524 break;
c906108c
SS
5525 case bp_breakpoint:
5526 case bp_hardware_breakpoint:
7c16b83e 5527 case bp_single_step:
c906108c
SS
5528 case bp_until:
5529 case bp_finish:
a9b3a50f 5530 case bp_shlib_event:
c906108c
SS
5531 if (bs->stop)
5532 {
5533 if (bs->print)
628fe4e4 5534 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5535 else
628fe4e4 5536 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5537 }
5538 else
628fe4e4 5539 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5540 break;
5541 case bp_watchpoint:
5542 case bp_hardware_watchpoint:
5543 case bp_read_watchpoint:
5544 case bp_access_watchpoint:
5545 if (bs->stop)
5546 {
5547 if (bs->print)
628fe4e4 5548 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5549 else
628fe4e4 5550 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5551 }
5552 else
628fe4e4
JK
5553 {
5554 /* There was a watchpoint, but we're not stopping.
5555 This requires no further action. */
5556 }
c906108c
SS
5557 break;
5558 case bp_longjmp:
e2e4d78b 5559 case bp_longjmp_call_dummy:
186c406b 5560 case bp_exception:
0a39bb32
PA
5561 if (bs->stop)
5562 {
5563 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5564 retval.is_longjmp = bptype != bp_exception;
5565 }
5566 else
5567 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5568 break;
5569 case bp_longjmp_resume:
186c406b 5570 case bp_exception_resume:
0a39bb32
PA
5571 if (bs->stop)
5572 {
5573 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5574 retval.is_longjmp = bptype == bp_longjmp_resume;
5575 }
5576 else
5577 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5578 break;
5579 case bp_step_resume:
5580 if (bs->stop)
628fe4e4
JK
5581 this_action = BPSTAT_WHAT_STEP_RESUME;
5582 else
c906108c 5583 {
628fe4e4
JK
5584 /* It is for the wrong frame. */
5585 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5586 }
c906108c 5587 break;
2c03e5be
PA
5588 case bp_hp_step_resume:
5589 if (bs->stop)
5590 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5591 else
5592 {
5593 /* It is for the wrong frame. */
5594 this_action = BPSTAT_WHAT_SINGLE;
5595 }
5596 break;
c906108c 5597 case bp_watchpoint_scope:
c4093a6a 5598 case bp_thread_event:
1900040c 5599 case bp_overlay_event:
0fd8e87f 5600 case bp_longjmp_master:
aa7d318d 5601 case bp_std_terminate_master:
186c406b 5602 case bp_exception_master:
628fe4e4 5603 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5604 break;
ce78b96d 5605 case bp_catchpoint:
c5aa993b
JM
5606 if (bs->stop)
5607 {
5608 if (bs->print)
628fe4e4 5609 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5610 else
628fe4e4 5611 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5612 }
5613 else
628fe4e4
JK
5614 {
5615 /* There was a catchpoint, but we're not stopping.
5616 This requires no further action. */
5617 }
5618 break;
628fe4e4 5619 case bp_jit_event:
628fe4e4 5620 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5621 break;
c906108c 5622 case bp_call_dummy:
53a5351d
JM
5623 /* Make sure the action is stop (silent or noisy),
5624 so infrun.c pops the dummy frame. */
aa7d318d 5625 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5626 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5627 break;
5628 case bp_std_terminate:
5629 /* Make sure the action is stop (silent or noisy),
5630 so infrun.c pops the dummy frame. */
aa7d318d 5631 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5632 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5633 break;
1042e4c0 5634 case bp_tracepoint:
7a697b8d 5635 case bp_fast_tracepoint:
0fb4aa4b 5636 case bp_static_tracepoint:
1042e4c0
SS
5637 /* Tracepoint hits should not be reported back to GDB, and
5638 if one got through somehow, it should have been filtered
5639 out already. */
5640 internal_error (__FILE__, __LINE__,
7a697b8d 5641 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5642 break;
5643 case bp_gnu_ifunc_resolver:
5644 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5645 this_action = BPSTAT_WHAT_SINGLE;
5646 break;
5647 case bp_gnu_ifunc_resolver_return:
5648 /* The breakpoint will be removed, execution will restart from the
5649 PC of the former breakpoint. */
5650 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5651 break;
e7e0cddf
SS
5652
5653 case bp_dprintf:
a11cfd87
HZ
5654 if (bs->stop)
5655 this_action = BPSTAT_WHAT_STOP_SILENT;
5656 else
5657 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5658 break;
5659
628fe4e4
JK
5660 default:
5661 internal_error (__FILE__, __LINE__,
5662 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5663 }
628fe4e4 5664
325fac50 5665 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5666 }
628fe4e4 5667
243a9253
PA
5668 return retval;
5669}
628fe4e4 5670
243a9253
PA
5671void
5672bpstat_run_callbacks (bpstat bs_head)
5673{
5674 bpstat bs;
628fe4e4 5675
0e30163f
JK
5676 for (bs = bs_head; bs != NULL; bs = bs->next)
5677 {
5678 struct breakpoint *b = bs->breakpoint_at;
5679
5680 if (b == NULL)
5681 continue;
5682 switch (b->type)
5683 {
243a9253
PA
5684 case bp_jit_event:
5685 handle_jit_event ();
5686 break;
0e30163f
JK
5687 case bp_gnu_ifunc_resolver:
5688 gnu_ifunc_resolver_stop (b);
5689 break;
5690 case bp_gnu_ifunc_resolver_return:
5691 gnu_ifunc_resolver_return_stop (b);
5692 break;
5693 }
5694 }
c906108c
SS
5695}
5696
5697/* Nonzero if we should step constantly (e.g. watchpoints on machines
5698 without hardware support). This isn't related to a specific bpstat,
5699 just to things like whether watchpoints are set. */
5700
c5aa993b 5701int
fba45db2 5702bpstat_should_step (void)
c906108c
SS
5703{
5704 struct breakpoint *b;
cc59ec59 5705
c906108c 5706 ALL_BREAKPOINTS (b)
717a8278 5707 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
3172dc30 5708 return 1;
c906108c
SS
5709 return 0;
5710}
5711
67822962
PA
5712int
5713bpstat_causes_stop (bpstat bs)
5714{
5715 for (; bs != NULL; bs = bs->next)
5716 if (bs->stop)
5717 return 1;
5718
5719 return 0;
5720}
5721
c906108c 5722\f
c5aa993b 5723
170b53b2
UW
5724/* Compute a string of spaces suitable to indent the next line
5725 so it starts at the position corresponding to the table column
5726 named COL_NAME in the currently active table of UIOUT. */
5727
5728static char *
5729wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5730{
5731 static char wrap_indent[80];
5732 int i, total_width, width, align;
c5209615 5733 const char *text;
170b53b2
UW
5734
5735 total_width = 0;
112e8700 5736 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5737 {
5738 if (strcmp (text, col_name) == 0)
5739 {
5740 gdb_assert (total_width < sizeof wrap_indent);
5741 memset (wrap_indent, ' ', total_width);
5742 wrap_indent[total_width] = 0;
5743
5744 return wrap_indent;
5745 }
5746
5747 total_width += width + 1;
5748 }
5749
5750 return NULL;
5751}
5752
b775012e
LM
5753/* Determine if the locations of this breakpoint will have their conditions
5754 evaluated by the target, host or a mix of both. Returns the following:
5755
5756 "host": Host evals condition.
5757 "host or target": Host or Target evals condition.
5758 "target": Target evals condition.
5759*/
5760
5761static const char *
5762bp_condition_evaluator (struct breakpoint *b)
5763{
5764 struct bp_location *bl;
5765 char host_evals = 0;
5766 char target_evals = 0;
5767
5768 if (!b)
5769 return NULL;
5770
5771 if (!is_breakpoint (b))
5772 return NULL;
5773
5774 if (gdb_evaluates_breakpoint_condition_p ()
5775 || !target_supports_evaluation_of_breakpoint_conditions ())
5776 return condition_evaluation_host;
5777
5778 for (bl = b->loc; bl; bl = bl->next)
5779 {
5780 if (bl->cond_bytecode)
5781 target_evals++;
5782 else
5783 host_evals++;
5784 }
5785
5786 if (host_evals && target_evals)
5787 return condition_evaluation_both;
5788 else if (target_evals)
5789 return condition_evaluation_target;
5790 else
5791 return condition_evaluation_host;
5792}
5793
5794/* Determine the breakpoint location's condition evaluator. This is
5795 similar to bp_condition_evaluator, but for locations. */
5796
5797static const char *
5798bp_location_condition_evaluator (struct bp_location *bl)
5799{
5800 if (bl && !is_breakpoint (bl->owner))
5801 return NULL;
5802
5803 if (gdb_evaluates_breakpoint_condition_p ()
5804 || !target_supports_evaluation_of_breakpoint_conditions ())
5805 return condition_evaluation_host;
5806
5807 if (bl && bl->cond_bytecode)
5808 return condition_evaluation_target;
5809 else
5810 return condition_evaluation_host;
5811}
5812
859825b8
JK
5813/* Print the LOC location out of the list of B->LOC locations. */
5814
170b53b2
UW
5815static void
5816print_breakpoint_location (struct breakpoint *b,
5817 struct bp_location *loc)
0d381245 5818{
79a45e25 5819 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5820
5821 scoped_restore_current_program_space restore_pspace;
6c95b8df 5822
859825b8
JK
5823 if (loc != NULL && loc->shlib_disabled)
5824 loc = NULL;
5825
6c95b8df
PA
5826 if (loc != NULL)
5827 set_current_program_space (loc->pspace);
5828
56435ebe 5829 if (b->display_canonical)
d28cd78a 5830 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5831 else if (loc && loc->symtab)
0d381245 5832 {
4a27f119
KS
5833 const struct symbol *sym = loc->symbol;
5834
0d381245
VP
5835 if (sym)
5836 {
112e8700 5837 uiout->text ("in ");
cbe56571
TT
5838 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5839 ui_out_style_kind::FUNCTION);
112e8700
SM
5840 uiout->text (" ");
5841 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5842 uiout->text ("at ");
0d381245 5843 }
112e8700 5844 uiout->field_string ("file",
cbe56571
TT
5845 symtab_to_filename_for_display (loc->symtab),
5846 ui_out_style_kind::FILE);
112e8700 5847 uiout->text (":");
05cba821 5848
112e8700
SM
5849 if (uiout->is_mi_like_p ())
5850 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5851
112e8700 5852 uiout->field_int ("line", loc->line_number);
0d381245 5853 }
859825b8 5854 else if (loc)
0d381245 5855 {
d7e74731 5856 string_file stb;
170b53b2 5857
d7e74731 5858 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5859 demangle, "");
112e8700 5860 uiout->field_stream ("at", stb);
0d381245 5861 }
859825b8 5862 else
f00aae0f 5863 {
d28cd78a
TT
5864 uiout->field_string ("pending",
5865 event_location_to_string (b->location.get ()));
f00aae0f
KS
5866 /* If extra_string is available, it could be holding a condition
5867 or dprintf arguments. In either case, make sure it is printed,
5868 too, but only for non-MI streams. */
112e8700 5869 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5870 {
5871 if (b->type == bp_dprintf)
112e8700 5872 uiout->text (",");
f00aae0f 5873 else
112e8700
SM
5874 uiout->text (" ");
5875 uiout->text (b->extra_string);
f00aae0f
KS
5876 }
5877 }
6c95b8df 5878
b775012e
LM
5879 if (loc && is_breakpoint (b)
5880 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5881 && bp_condition_evaluator (b) == condition_evaluation_both)
5882 {
112e8700
SM
5883 uiout->text (" (");
5884 uiout->field_string ("evaluated-by",
b775012e 5885 bp_location_condition_evaluator (loc));
112e8700 5886 uiout->text (")");
b775012e 5887 }
0d381245
VP
5888}
5889
269b11a2
PA
5890static const char *
5891bptype_string (enum bptype type)
c906108c 5892{
c4093a6a
JM
5893 struct ep_type_description
5894 {
5895 enum bptype type;
a121b7c1 5896 const char *description;
c4093a6a
JM
5897 };
5898 static struct ep_type_description bptypes[] =
c906108c 5899 {
c5aa993b
JM
5900 {bp_none, "?deleted?"},
5901 {bp_breakpoint, "breakpoint"},
c906108c 5902 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5903 {bp_single_step, "sw single-step"},
c5aa993b
JM
5904 {bp_until, "until"},
5905 {bp_finish, "finish"},
5906 {bp_watchpoint, "watchpoint"},
c906108c 5907 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5908 {bp_read_watchpoint, "read watchpoint"},
5909 {bp_access_watchpoint, "acc watchpoint"},
5910 {bp_longjmp, "longjmp"},
5911 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5912 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5913 {bp_exception, "exception"},
5914 {bp_exception_resume, "exception resume"},
c5aa993b 5915 {bp_step_resume, "step resume"},
2c03e5be 5916 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5917 {bp_watchpoint_scope, "watchpoint scope"},
5918 {bp_call_dummy, "call dummy"},
aa7d318d 5919 {bp_std_terminate, "std::terminate"},
c5aa993b 5920 {bp_shlib_event, "shlib events"},
c4093a6a 5921 {bp_thread_event, "thread events"},
1900040c 5922 {bp_overlay_event, "overlay events"},
0fd8e87f 5923 {bp_longjmp_master, "longjmp master"},
aa7d318d 5924 {bp_std_terminate_master, "std::terminate master"},
186c406b 5925 {bp_exception_master, "exception master"},
ce78b96d 5926 {bp_catchpoint, "catchpoint"},
1042e4c0 5927 {bp_tracepoint, "tracepoint"},
7a697b8d 5928 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 5929 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 5930 {bp_dprintf, "dprintf"},
4efc6507 5931 {bp_jit_event, "jit events"},
0e30163f
JK
5932 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5933 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 5934 };
269b11a2
PA
5935
5936 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5937 || ((int) type != bptypes[(int) type].type))
5938 internal_error (__FILE__, __LINE__,
5939 _("bptypes table does not describe type #%d."),
5940 (int) type);
5941
5942 return bptypes[(int) type].description;
5943}
5944
998580f1
MK
5945/* For MI, output a field named 'thread-groups' with a list as the value.
5946 For CLI, prefix the list with the string 'inf'. */
5947
5948static void
5949output_thread_groups (struct ui_out *uiout,
5950 const char *field_name,
5c632425 5951 const std::vector<int> &inf_nums,
998580f1
MK
5952 int mi_only)
5953{
112e8700 5954 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
5955
5956 /* For backward compatibility, don't display inferiors in CLI unless
5957 there are several. Always display them for MI. */
5958 if (!is_mi && mi_only)
5959 return;
5960
10f489e5 5961 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 5962
5c632425 5963 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
5964 {
5965 if (is_mi)
5966 {
5967 char mi_group[10];
5968
5c632425 5969 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 5970 uiout->field_string (NULL, mi_group);
998580f1
MK
5971 }
5972 else
5973 {
5974 if (i == 0)
112e8700 5975 uiout->text (" inf ");
998580f1 5976 else
112e8700 5977 uiout->text (", ");
998580f1 5978
5c632425 5979 uiout->text (plongest (inf_nums[i]));
998580f1
MK
5980 }
5981 }
998580f1
MK
5982}
5983
269b11a2
PA
5984/* Print B to gdb_stdout. */
5985
5986static void
5987print_one_breakpoint_location (struct breakpoint *b,
5988 struct bp_location *loc,
5989 int loc_number,
5990 struct bp_location **last_loc,
269b11a2
PA
5991 int allflag)
5992{
5993 struct command_line *l;
c2c6d25f 5994 static char bpenables[] = "nynny";
c906108c 5995
79a45e25 5996 struct ui_out *uiout = current_uiout;
0d381245
VP
5997 int header_of_multiple = 0;
5998 int part_of_multiple = (loc != NULL);
79a45b7d
TT
5999 struct value_print_options opts;
6000
6001 get_user_print_options (&opts);
0d381245
VP
6002
6003 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6004 /* See comment in print_one_breakpoint concerning treatment of
6005 breakpoints with single disabled location. */
0d381245
VP
6006 if (loc == NULL
6007 && (b->loc != NULL
6008 && (b->loc->next != NULL || !b->loc->enabled)))
6009 header_of_multiple = 1;
6010 if (loc == NULL)
6011 loc = b->loc;
6012
c4093a6a
JM
6013 annotate_record ();
6014
6015 /* 1 */
6016 annotate_field (0);
0d381245 6017 if (part_of_multiple)
528e1572 6018 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
0d381245 6019 else
528e1572 6020 uiout->field_int ("number", b->number);
c4093a6a
JM
6021
6022 /* 2 */
6023 annotate_field (1);
0d381245 6024 if (part_of_multiple)
112e8700 6025 uiout->field_skip ("type");
269b11a2 6026 else
112e8700 6027 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6028
6029 /* 3 */
6030 annotate_field (2);
0d381245 6031 if (part_of_multiple)
112e8700 6032 uiout->field_skip ("disp");
0d381245 6033 else
112e8700 6034 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6035
c4093a6a
JM
6036 /* 4 */
6037 annotate_field (3);
0d381245 6038 if (part_of_multiple)
112e8700 6039 uiout->field_string ("enabled", loc->enabled ? "y" : "n");
0d381245 6040 else
112e8700 6041 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
0d381245 6042
c4093a6a 6043 /* 5 and 6 */
3086aeae 6044 if (b->ops != NULL && b->ops->print_one != NULL)
0d381245 6045 {
4a64f543
MS
6046 /* Although the print_one can possibly print all locations,
6047 calling it here is not likely to get any nice result. So,
6048 make sure there's just one location. */
0d381245 6049 gdb_assert (b->loc == NULL || b->loc->next == NULL);
a6d9a66e 6050 b->ops->print_one (b, last_loc);
0d381245 6051 }
3086aeae
DJ
6052 else
6053 switch (b->type)
6054 {
6055 case bp_none:
6056 internal_error (__FILE__, __LINE__,
e2e0b3e5 6057 _("print_one_breakpoint: bp_none encountered\n"));
3086aeae 6058 break;
c906108c 6059
3086aeae
DJ
6060 case bp_watchpoint:
6061 case bp_hardware_watchpoint:
6062 case bp_read_watchpoint:
6063 case bp_access_watchpoint:
3a5c3e22
PA
6064 {
6065 struct watchpoint *w = (struct watchpoint *) b;
6066
6067 /* Field 4, the address, is omitted (which makes the columns
6068 not line up too nicely with the headers, but the effect
6069 is relatively readable). */
6070 if (opts.addressprint)
112e8700 6071 uiout->field_skip ("addr");
3a5c3e22 6072 annotate_field (5);
112e8700 6073 uiout->field_string ("what", w->exp_string);
3a5c3e22 6074 }
3086aeae
DJ
6075 break;
6076
3086aeae
DJ
6077 case bp_breakpoint:
6078 case bp_hardware_breakpoint:
7c16b83e 6079 case bp_single_step:
3086aeae
DJ
6080 case bp_until:
6081 case bp_finish:
6082 case bp_longjmp:
6083 case bp_longjmp_resume:
e2e4d78b 6084 case bp_longjmp_call_dummy:
186c406b
TT
6085 case bp_exception:
6086 case bp_exception_resume:
3086aeae 6087 case bp_step_resume:
2c03e5be 6088 case bp_hp_step_resume:
3086aeae
DJ
6089 case bp_watchpoint_scope:
6090 case bp_call_dummy:
aa7d318d 6091 case bp_std_terminate:
3086aeae
DJ
6092 case bp_shlib_event:
6093 case bp_thread_event:
6094 case bp_overlay_event:
0fd8e87f 6095 case bp_longjmp_master:
aa7d318d 6096 case bp_std_terminate_master:
186c406b 6097 case bp_exception_master:
1042e4c0 6098 case bp_tracepoint:
7a697b8d 6099 case bp_fast_tracepoint:
0fb4aa4b 6100 case bp_static_tracepoint:
e7e0cddf 6101 case bp_dprintf:
4efc6507 6102 case bp_jit_event:
0e30163f
JK
6103 case bp_gnu_ifunc_resolver:
6104 case bp_gnu_ifunc_resolver_return:
79a45b7d 6105 if (opts.addressprint)
3086aeae
DJ
6106 {
6107 annotate_field (4);
54e52265 6108 if (header_of_multiple)
112e8700 6109 uiout->field_string ("addr", "<MULTIPLE>");
e9bbd7c5 6110 else if (b->loc == NULL || loc->shlib_disabled)
112e8700 6111 uiout->field_string ("addr", "<PENDING>");
0101ce28 6112 else
112e8700 6113 uiout->field_core_addr ("addr",
5af949e3 6114 loc->gdbarch, loc->address);
3086aeae
DJ
6115 }
6116 annotate_field (5);
0d381245 6117 if (!header_of_multiple)
170b53b2 6118 print_breakpoint_location (b, loc);
0d381245 6119 if (b->loc)
a6d9a66e 6120 *last_loc = b->loc;
3086aeae
DJ
6121 break;
6122 }
c906108c 6123
6c95b8df 6124
998580f1 6125 if (loc != NULL && !header_of_multiple)
6c95b8df 6126 {
5c632425 6127 std::vector<int> inf_nums;
998580f1 6128 int mi_only = 1;
6c95b8df 6129
08036331 6130 for (inferior *inf : all_inferiors ())
6c95b8df
PA
6131 {
6132 if (inf->pspace == loc->pspace)
5c632425 6133 inf_nums.push_back (inf->num);
6c95b8df 6134 }
998580f1
MK
6135
6136 /* For backward compatibility, don't display inferiors in CLI unless
6137 there are several. Always display for MI. */
6138 if (allflag
6139 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6140 && (number_of_program_spaces () > 1
6141 || number_of_inferiors () > 1)
6142 /* LOC is for existing B, it cannot be in
6143 moribund_locations and thus having NULL OWNER. */
6144 && loc->owner->type != bp_catchpoint))
6145 mi_only = 0;
5c632425 6146 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6147 }
6148
4a306c9a 6149 if (!part_of_multiple)
c4093a6a 6150 {
4a306c9a
JB
6151 if (b->thread != -1)
6152 {
6153 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6154 "stop only in" line a little further down. */
112e8700
SM
6155 uiout->text (" thread ");
6156 uiout->field_int ("thread", b->thread);
4a306c9a
JB
6157 }
6158 else if (b->task != 0)
6159 {
112e8700
SM
6160 uiout->text (" task ");
6161 uiout->field_int ("task", b->task);
4a306c9a 6162 }
c4093a6a 6163 }
f1310107 6164
112e8700 6165 uiout->text ("\n");
f1310107 6166
348d480f 6167 if (!part_of_multiple)
f1310107
TJB
6168 b->ops->print_one_detail (b, uiout);
6169
0d381245 6170 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6171 {
6172 annotate_field (6);
112e8700 6173 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6174 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
818dd999 6175 the frame ID. */
112e8700 6176 uiout->field_core_addr ("frame",
5af949e3 6177 b->gdbarch, b->frame_id.stack_addr);
112e8700 6178 uiout->text ("\n");
c4093a6a
JM
6179 }
6180
28010a5d 6181 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6182 {
6183 annotate_field (7);
d77f58be 6184 if (is_tracepoint (b))
112e8700 6185 uiout->text ("\ttrace only if ");
1042e4c0 6186 else
112e8700
SM
6187 uiout->text ("\tstop only if ");
6188 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6189
6190 /* Print whether the target is doing the breakpoint's condition
6191 evaluation. If GDB is doing the evaluation, don't print anything. */
6192 if (is_breakpoint (b)
6193 && breakpoint_condition_evaluation_mode ()
6194 == condition_evaluation_target)
6195 {
112e8700
SM
6196 uiout->text (" (");
6197 uiout->field_string ("evaluated-by",
b775012e 6198 bp_condition_evaluator (b));
112e8700 6199 uiout->text (" evals)");
b775012e 6200 }
112e8700 6201 uiout->text ("\n");
0101ce28
JJ
6202 }
6203
0d381245 6204 if (!part_of_multiple && b->thread != -1)
c4093a6a 6205 {
4a64f543 6206 /* FIXME should make an annotation for this. */
112e8700
SM
6207 uiout->text ("\tstop only in thread ");
6208 if (uiout->is_mi_like_p ())
6209 uiout->field_int ("thread", b->thread);
5d5658a1
PA
6210 else
6211 {
6212 struct thread_info *thr = find_thread_global_id (b->thread);
6213
112e8700 6214 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6215 }
112e8700 6216 uiout->text ("\n");
c4093a6a
JM
6217 }
6218
556ec64d
YQ
6219 if (!part_of_multiple)
6220 {
6221 if (b->hit_count)
31f56a27
YQ
6222 {
6223 /* FIXME should make an annotation for this. */
6224 if (is_catchpoint (b))
112e8700 6225 uiout->text ("\tcatchpoint");
31f56a27 6226 else if (is_tracepoint (b))
112e8700 6227 uiout->text ("\ttracepoint");
31f56a27 6228 else
112e8700
SM
6229 uiout->text ("\tbreakpoint");
6230 uiout->text (" already hit ");
6231 uiout->field_int ("times", b->hit_count);
31f56a27 6232 if (b->hit_count == 1)
112e8700 6233 uiout->text (" time\n");
31f56a27 6234 else
112e8700 6235 uiout->text (" times\n");
31f56a27 6236 }
556ec64d
YQ
6237 else
6238 {
31f56a27 6239 /* Output the count also if it is zero, but only if this is mi. */
112e8700
SM
6240 if (uiout->is_mi_like_p ())
6241 uiout->field_int ("times", b->hit_count);
556ec64d
YQ
6242 }
6243 }
8b93c638 6244
0d381245 6245 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6246 {
6247 annotate_field (8);
112e8700
SM
6248 uiout->text ("\tignore next ");
6249 uiout->field_int ("ignore", b->ignore_count);
6250 uiout->text (" hits\n");
c4093a6a 6251 }
059fb39f 6252
816338b5
SS
6253 /* Note that an enable count of 1 corresponds to "enable once"
6254 behavior, which is reported by the combination of enablement and
6255 disposition, so we don't need to mention it here. */
6256 if (!part_of_multiple && b->enable_count > 1)
6257 {
6258 annotate_field (8);
112e8700 6259 uiout->text ("\tdisable after ");
816338b5
SS
6260 /* Tweak the wording to clarify that ignore and enable counts
6261 are distinct, and have additive effect. */
6262 if (b->ignore_count)
112e8700 6263 uiout->text ("additional ");
816338b5 6264 else
112e8700
SM
6265 uiout->text ("next ");
6266 uiout->field_int ("enable", b->enable_count);
6267 uiout->text (" hits\n");
816338b5
SS
6268 }
6269
f196051f
SS
6270 if (!part_of_multiple && is_tracepoint (b))
6271 {
6272 struct tracepoint *tp = (struct tracepoint *) b;
6273
6274 if (tp->traceframe_usage)
6275 {
112e8700
SM
6276 uiout->text ("\ttrace buffer usage ");
6277 uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6278 uiout->text (" bytes\n");
f196051f
SS
6279 }
6280 }
d3ce09f5 6281
d1b0a7bf 6282 l = b->commands ? b->commands.get () : NULL;
059fb39f 6283 if (!part_of_multiple && l)
c4093a6a
JM
6284 {
6285 annotate_field (9);
2e783024 6286 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6287 print_command_lines (uiout, l, 4);
c4093a6a 6288 }
d24317b4 6289
d9b3f62e 6290 if (is_tracepoint (b))
1042e4c0 6291 {
d9b3f62e
PA
6292 struct tracepoint *t = (struct tracepoint *) b;
6293
6294 if (!part_of_multiple && t->pass_count)
6295 {
6296 annotate_field (10);
112e8700
SM
6297 uiout->text ("\tpass count ");
6298 uiout->field_int ("pass", t->pass_count);
6299 uiout->text (" \n");
d9b3f62e 6300 }
f2a8bc8a
YQ
6301
6302 /* Don't display it when tracepoint or tracepoint location is
6303 pending. */
6304 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6305 {
6306 annotate_field (11);
6307
112e8700
SM
6308 if (uiout->is_mi_like_p ())
6309 uiout->field_string ("installed",
f2a8bc8a
YQ
6310 loc->inserted ? "y" : "n");
6311 else
6312 {
6313 if (loc->inserted)
112e8700 6314 uiout->text ("\t");
f2a8bc8a 6315 else
112e8700
SM
6316 uiout->text ("\tnot ");
6317 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6318 }
6319 }
1042e4c0
SS
6320 }
6321
112e8700 6322 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6323 {
3a5c3e22
PA
6324 if (is_watchpoint (b))
6325 {
6326 struct watchpoint *w = (struct watchpoint *) b;
6327
112e8700 6328 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6329 }
f00aae0f 6330 else if (b->location != NULL
d28cd78a 6331 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6332 uiout->field_string ("original-location",
d28cd78a 6333 event_location_to_string (b->location.get ()));
d24317b4 6334 }
c4093a6a 6335}
c5aa993b 6336
13674803
SM
6337/* See breakpoint.h. */
6338
6339bool fix_multi_location_breakpoint_output_globally = false;
6340
0d381245
VP
6341static void
6342print_one_breakpoint (struct breakpoint *b,
4a64f543 6343 struct bp_location **last_loc,
6c95b8df 6344 int allflag)
0d381245 6345{
79a45e25 6346 struct ui_out *uiout = current_uiout;
13674803
SM
6347 bool use_fixed_output
6348 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6349 || fix_multi_location_breakpoint_output_globally);
8d3788bd 6350
b4be1b06
SM
6351 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6352 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
8d3788bd 6353
b4be1b06
SM
6354 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6355 are outside. */
6356 if (!use_fixed_output)
6357 bkpt_tuple_emitter.reset ();
0d381245
VP
6358
6359 /* If this breakpoint has custom print function,
6360 it's already printed. Otherwise, print individual
6361 locations, if any. */
6362 if (b->ops == NULL || b->ops->print_one == NULL)
6363 {
4a64f543
MS
6364 /* If breakpoint has a single location that is disabled, we
6365 print it as if it had several locations, since otherwise it's
6366 hard to represent "breakpoint enabled, location disabled"
6367 situation.
6368
6369 Note that while hardware watchpoints have several locations
a3be7890 6370 internally, that's not a property exposed to user. */
0d381245 6371 if (b->loc
a5606eee 6372 && !is_hardware_watchpoint (b)
8d3788bd 6373 && (b->loc->next || !b->loc->enabled))
0d381245 6374 {
b4be1b06
SM
6375 gdb::optional<ui_out_emit_list> locations_list;
6376
6377 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6378 MI record. For later versions, place breakpoint locations in a
6379 list. */
6380 if (uiout->is_mi_like_p () && use_fixed_output)
6381 locations_list.emplace (uiout, "locations");
8d3788bd 6382
b4be1b06
SM
6383 int n = 1;
6384 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
8d3788bd 6385 {
b4be1b06 6386 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
8d3788bd 6387 print_one_breakpoint_location (b, loc, n, last_loc, allflag);
8d3788bd 6388 }
0d381245
VP
6389 }
6390 }
6391}
6392
a6d9a66e
UW
6393static int
6394breakpoint_address_bits (struct breakpoint *b)
6395{
6396 int print_address_bits = 0;
6397 struct bp_location *loc;
6398
c6d81124
PA
6399 /* Software watchpoints that aren't watching memory don't have an
6400 address to print. */
6401 if (is_no_memory_software_watchpoint (b))
6402 return 0;
6403
a6d9a66e
UW
6404 for (loc = b->loc; loc; loc = loc->next)
6405 {
c7437ca6
PA
6406 int addr_bit;
6407
c7437ca6 6408 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6409 if (addr_bit > print_address_bits)
6410 print_address_bits = addr_bit;
6411 }
6412
6413 return print_address_bits;
6414}
0d381245 6415
65630365 6416/* See breakpoint.h. */
c5aa993b 6417
65630365
PA
6418void
6419print_breakpoint (breakpoint *b)
c4093a6a 6420{
a6d9a66e 6421 struct bp_location *dummy_loc = NULL;
65630365 6422 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6423}
c5aa993b 6424
09d682a4
TT
6425/* Return true if this breakpoint was set by the user, false if it is
6426 internal or momentary. */
6427
6428int
6429user_breakpoint_p (struct breakpoint *b)
6430{
46c6471b 6431 return b->number > 0;
09d682a4
TT
6432}
6433
93daf339
TT
6434/* See breakpoint.h. */
6435
6436int
6437pending_breakpoint_p (struct breakpoint *b)
6438{
6439 return b->loc == NULL;
6440}
6441
7f3b0473 6442/* Print information on user settable breakpoint (watchpoint, etc)
d77f58be
SS
6443 number BNUM. If BNUM is -1 print all user-settable breakpoints.
6444 If ALLFLAG is non-zero, include non-user-settable breakpoints. If
6445 FILTER is non-NULL, call it on each breakpoint and only include the
6446 ones for which it returns non-zero. Return the total number of
6447 breakpoints listed. */
c906108c 6448
d77f58be 6449static int
4495129a 6450breakpoint_1 (const char *args, int allflag,
4a64f543 6451 int (*filter) (const struct breakpoint *))
c4093a6a 6452{
52f0bd74 6453 struct breakpoint *b;
a6d9a66e 6454 struct bp_location *last_loc = NULL;
7f3b0473 6455 int nr_printable_breakpoints;
79a45b7d 6456 struct value_print_options opts;
a6d9a66e 6457 int print_address_bits = 0;
269b11a2 6458 int print_type_col_width = 14;
79a45e25 6459 struct ui_out *uiout = current_uiout;
269b11a2 6460
79a45b7d
TT
6461 get_user_print_options (&opts);
6462
4a64f543
MS
6463 /* Compute the number of rows in the table, as well as the size
6464 required for address fields. */
7f3b0473
AC
6465 nr_printable_breakpoints = 0;
6466 ALL_BREAKPOINTS (b)
e5a67952
MS
6467 {
6468 /* If we have a filter, only list the breakpoints it accepts. */
6469 if (filter && !filter (b))
6470 continue;
6471
6472 /* If we have an "args" string, it is a list of breakpoints to
6473 accept. Skip the others. */
6474 if (args != NULL && *args != '\0')
6475 {
6476 if (allflag && parse_and_eval_long (args) != b->number)
6477 continue;
6478 if (!allflag && !number_is_in_list (args, b->number))
6479 continue;
6480 }
269b11a2 6481
e5a67952
MS
6482 if (allflag || user_breakpoint_p (b))
6483 {
6484 int addr_bit, type_len;
a6d9a66e 6485
e5a67952
MS
6486 addr_bit = breakpoint_address_bits (b);
6487 if (addr_bit > print_address_bits)
6488 print_address_bits = addr_bit;
269b11a2 6489
e5a67952
MS
6490 type_len = strlen (bptype_string (b->type));
6491 if (type_len > print_type_col_width)
6492 print_type_col_width = type_len;
6493
6494 nr_printable_breakpoints++;
6495 }
6496 }
7f3b0473 6497
4a2b031d
TT
6498 {
6499 ui_out_emit_table table_emitter (uiout,
6500 opts.addressprint ? 6 : 5,
6501 nr_printable_breakpoints,
6502 "BreakpointTable");
6503
6504 if (nr_printable_breakpoints > 0)
6505 annotate_breakpoints_headers ();
6506 if (nr_printable_breakpoints > 0)
6507 annotate_field (0);
6508 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6509 if (nr_printable_breakpoints > 0)
6510 annotate_field (1);
6511 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6512 if (nr_printable_breakpoints > 0)
6513 annotate_field (2);
6514 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6515 if (nr_printable_breakpoints > 0)
6516 annotate_field (3);
6517 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6518 if (opts.addressprint)
6519 {
6520 if (nr_printable_breakpoints > 0)
6521 annotate_field (4);
6522 if (print_address_bits <= 32)
6523 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6524 else
6525 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6526 }
6527 if (nr_printable_breakpoints > 0)
6528 annotate_field (5);
6529 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6530 uiout->table_body ();
6531 if (nr_printable_breakpoints > 0)
6532 annotate_breakpoints_table ();
6533
6534 ALL_BREAKPOINTS (b)
6535 {
6536 QUIT;
6537 /* If we have a filter, only list the breakpoints it accepts. */
6538 if (filter && !filter (b))
6539 continue;
e5a67952 6540
4a2b031d
TT
6541 /* If we have an "args" string, it is a list of breakpoints to
6542 accept. Skip the others. */
e5a67952 6543
4a2b031d
TT
6544 if (args != NULL && *args != '\0')
6545 {
6546 if (allflag) /* maintenance info breakpoint */
6547 {
6548 if (parse_and_eval_long (args) != b->number)
6549 continue;
6550 }
6551 else /* all others */
6552 {
6553 if (!number_is_in_list (args, b->number))
6554 continue;
6555 }
6556 }
6557 /* We only print out user settable breakpoints unless the
6558 allflag is set. */
6559 if (allflag || user_breakpoint_p (b))
6560 print_one_breakpoint (b, &last_loc, allflag);
6561 }
6562 }
698384cd 6563
7f3b0473 6564 if (nr_printable_breakpoints == 0)
c906108c 6565 {
4a64f543
MS
6566 /* If there's a filter, let the caller decide how to report
6567 empty list. */
d77f58be
SS
6568 if (!filter)
6569 {
e5a67952 6570 if (args == NULL || *args == '\0')
112e8700 6571 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6572 else
112e8700 6573 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
e5a67952 6574 args);
d77f58be 6575 }
c906108c
SS
6576 }
6577 else
c4093a6a 6578 {
a6d9a66e
UW
6579 if (last_loc && !server_command)
6580 set_next_address (last_loc->gdbarch, last_loc->address);
c4093a6a 6581 }
c906108c 6582
4a64f543 6583 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6584 there have been breakpoints? */
c906108c 6585 annotate_breakpoints_table_end ();
d77f58be
SS
6586
6587 return nr_printable_breakpoints;
c906108c
SS
6588}
6589
ad443146
SS
6590/* Display the value of default-collect in a way that is generally
6591 compatible with the breakpoint list. */
6592
6593static void
6594default_collect_info (void)
6595{
79a45e25
PA
6596 struct ui_out *uiout = current_uiout;
6597
ad443146
SS
6598 /* If it has no value (which is frequently the case), say nothing; a
6599 message like "No default-collect." gets in user's face when it's
6600 not wanted. */
6601 if (!*default_collect)
6602 return;
6603
6604 /* The following phrase lines up nicely with per-tracepoint collect
6605 actions. */
112e8700
SM
6606 uiout->text ("default collect ");
6607 uiout->field_string ("default-collect", default_collect);
6608 uiout->text (" \n");
ad443146
SS
6609}
6610
c906108c 6611static void
0b39b52e 6612info_breakpoints_command (const char *args, int from_tty)
c906108c 6613{
e5a67952 6614 breakpoint_1 (args, 0, NULL);
ad443146
SS
6615
6616 default_collect_info ();
d77f58be
SS
6617}
6618
6619static void
1d12d88f 6620info_watchpoints_command (const char *args, int from_tty)
d77f58be 6621{
e5a67952 6622 int num_printed = breakpoint_1 (args, 0, is_watchpoint);
79a45e25 6623 struct ui_out *uiout = current_uiout;
d77f58be
SS
6624
6625 if (num_printed == 0)
6626 {
e5a67952 6627 if (args == NULL || *args == '\0')
112e8700 6628 uiout->message ("No watchpoints.\n");
d77f58be 6629 else
112e8700 6630 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6631 }
c906108c
SS
6632}
6633
7a292a7a 6634static void
4495129a 6635maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6636{
e5a67952 6637 breakpoint_1 (args, 1, NULL);
ad443146
SS
6638
6639 default_collect_info ();
c906108c
SS
6640}
6641
0d381245 6642static int
714835d5 6643breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6644 struct program_space *pspace,
714835d5 6645 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6646{
6647 struct bp_location *bl = b->loc;
cc59ec59 6648
0d381245
VP
6649 for (; bl; bl = bl->next)
6650 {
6c95b8df
PA
6651 if (bl->pspace == pspace
6652 && bl->address == pc
0d381245
VP
6653 && (!overlay_debugging || bl->section == section))
6654 return 1;
6655 }
6656 return 0;
6657}
6658
672f9b60 6659/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6660 concerns with logical breakpoints, so we match program spaces, not
6661 address spaces. */
c906108c
SS
6662
6663static void
6c95b8df
PA
6664describe_other_breakpoints (struct gdbarch *gdbarch,
6665 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6666 struct obj_section *section, int thread)
c906108c 6667{
52f0bd74
AC
6668 int others = 0;
6669 struct breakpoint *b;
c906108c
SS
6670
6671 ALL_BREAKPOINTS (b)
672f9b60
KP
6672 others += (user_breakpoint_p (b)
6673 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6674 if (others > 0)
6675 {
a3f17187
AC
6676 if (others == 1)
6677 printf_filtered (_("Note: breakpoint "));
6678 else /* if (others == ???) */
6679 printf_filtered (_("Note: breakpoints "));
c906108c 6680 ALL_BREAKPOINTS (b)
672f9b60 6681 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6682 {
6683 others--;
6684 printf_filtered ("%d", b->number);
6685 if (b->thread == -1 && thread != -1)
6686 printf_filtered (" (all threads)");
6687 else if (b->thread != -1)
6688 printf_filtered (" (thread %d)", b->thread);
6689 printf_filtered ("%s%s ",
059fb39f 6690 ((b->enable_state == bp_disabled
f8eba3c6 6691 || b->enable_state == bp_call_disabled)
0d381245 6692 ? " (disabled)"
0d381245
VP
6693 : ""),
6694 (others > 1) ? ","
6695 : ((others == 1) ? " and" : ""));
6696 }
a3f17187 6697 printf_filtered (_("also set at pc "));
2636d81d 6698 fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
c906108c
SS
6699 printf_filtered (".\n");
6700 }
6701}
6702\f
c906108c 6703
e4f237da 6704/* Return true iff it is meaningful to use the address member of
244558af
LM
6705 BPT locations. For some breakpoint types, the locations' address members
6706 are irrelevant and it makes no sense to attempt to compare them to other
6707 addresses (or use them for any other purpose either).
e4f237da 6708
4a64f543 6709 More specifically, each of the following breakpoint types will
244558af 6710 always have a zero valued location address and we don't want to mark
4a64f543 6711 breakpoints of any of these types to be a duplicate of an actual
244558af 6712 breakpoint location at address zero:
e4f237da
KB
6713
6714 bp_watchpoint
2d134ed3
PA
6715 bp_catchpoint
6716
6717*/
e4f237da
KB
6718
6719static int
6720breakpoint_address_is_meaningful (struct breakpoint *bpt)
6721{
6722 enum bptype type = bpt->type;
6723
2d134ed3
PA
6724 return (type != bp_watchpoint && type != bp_catchpoint);
6725}
6726
6727/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6728 true if LOC1 and LOC2 represent the same watchpoint location. */
6729
6730static int
4a64f543
MS
6731watchpoint_locations_match (struct bp_location *loc1,
6732 struct bp_location *loc2)
2d134ed3 6733{
3a5c3e22
PA
6734 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6735 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6736
6737 /* Both of them must exist. */
6738 gdb_assert (w1 != NULL);
6739 gdb_assert (w2 != NULL);
2bdf28a0 6740
4a64f543
MS
6741 /* If the target can evaluate the condition expression in hardware,
6742 then we we need to insert both watchpoints even if they are at
6743 the same place. Otherwise the watchpoint will only trigger when
6744 the condition of whichever watchpoint was inserted evaluates to
6745 true, not giving a chance for GDB to check the condition of the
6746 other watchpoint. */
3a5c3e22 6747 if ((w1->cond_exp
4a64f543
MS
6748 && target_can_accel_watchpoint_condition (loc1->address,
6749 loc1->length,
0cf6dd15 6750 loc1->watchpoint_type,
4d01a485 6751 w1->cond_exp.get ()))
3a5c3e22 6752 || (w2->cond_exp
4a64f543
MS
6753 && target_can_accel_watchpoint_condition (loc2->address,
6754 loc2->length,
0cf6dd15 6755 loc2->watchpoint_type,
4d01a485 6756 w2->cond_exp.get ())))
0cf6dd15
TJB
6757 return 0;
6758
85d721b8
PA
6759 /* Note that this checks the owner's type, not the location's. In
6760 case the target does not support read watchpoints, but does
6761 support access watchpoints, we'll have bp_read_watchpoint
6762 watchpoints with hw_access locations. Those should be considered
6763 duplicates of hw_read locations. The hw_read locations will
6764 become hw_access locations later. */
2d134ed3
PA
6765 return (loc1->owner->type == loc2->owner->type
6766 && loc1->pspace->aspace == loc2->pspace->aspace
6767 && loc1->address == loc2->address
6768 && loc1->length == loc2->length);
e4f237da
KB
6769}
6770
31e77af2 6771/* See breakpoint.h. */
6c95b8df 6772
31e77af2 6773int
accd0bcd
YQ
6774breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6775 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6776{
f5656ead 6777 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6778 || aspace1 == aspace2)
6779 && addr1 == addr2);
6780}
6781
f1310107
TJB
6782/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6783 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6784 matches ASPACE2. On targets that have global breakpoints, the address
6785 space doesn't really matter. */
6786
6787static int
accd0bcd
YQ
6788breakpoint_address_match_range (const address_space *aspace1,
6789 CORE_ADDR addr1,
6790 int len1, const address_space *aspace2,
f1310107
TJB
6791 CORE_ADDR addr2)
6792{
f5656ead 6793 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6794 || aspace1 == aspace2)
6795 && addr2 >= addr1 && addr2 < addr1 + len1);
6796}
6797
6798/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6799 a ranged breakpoint. In most targets, a match happens only if ASPACE
6800 matches the breakpoint's address space. On targets that have global
6801 breakpoints, the address space doesn't really matter. */
6802
6803static int
6804breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6805 const address_space *aspace,
f1310107
TJB
6806 CORE_ADDR addr)
6807{
6808 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6809 aspace, addr)
6810 || (bl->length
6811 && breakpoint_address_match_range (bl->pspace->aspace,
6812 bl->address, bl->length,
6813 aspace, addr)));
6814}
6815
d35ae833
PA
6816/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6817 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6818 match happens only if ASPACE matches the breakpoint's address
6819 space. On targets that have global breakpoints, the address space
6820 doesn't really matter. */
6821
6822static int
6823breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6824 const address_space *aspace,
d35ae833
PA
6825 CORE_ADDR addr, int len)
6826{
6827 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6828 || bl->pspace->aspace == aspace)
6829 {
6830 int bl_len = bl->length != 0 ? bl->length : 1;
6831
6832 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6833 return 1;
6834 }
6835 return 0;
6836}
6837
1e4d1764
YQ
6838/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6839 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6840 true, otherwise returns false. */
6841
6842static int
6843tracepoint_locations_match (struct bp_location *loc1,
6844 struct bp_location *loc2)
6845{
6846 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6847 /* Since tracepoint locations are never duplicated with others', tracepoint
6848 locations at the same address of different tracepoints are regarded as
6849 different locations. */
6850 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6851 else
6852 return 0;
6853}
6854
2d134ed3
PA
6855/* Assuming LOC1 and LOC2's types' have meaningful target addresses
6856 (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6857 represent the same location. */
6858
6859static int
4a64f543
MS
6860breakpoint_locations_match (struct bp_location *loc1,
6861 struct bp_location *loc2)
2d134ed3 6862{
2bdf28a0
JK
6863 int hw_point1, hw_point2;
6864
6865 /* Both of them must not be in moribund_locations. */
6866 gdb_assert (loc1->owner != NULL);
6867 gdb_assert (loc2->owner != NULL);
6868
6869 hw_point1 = is_hardware_watchpoint (loc1->owner);
6870 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6871
6872 if (hw_point1 != hw_point2)
6873 return 0;
6874 else if (hw_point1)
6875 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6876 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6877 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6878 else
f1310107
TJB
6879 /* We compare bp_location.length in order to cover ranged breakpoints. */
6880 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6881 loc2->pspace->aspace, loc2->address)
6882 && loc1->length == loc2->length);
2d134ed3
PA
6883}
6884
76897487
KB
6885static void
6886breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6887 int bnum, int have_bnum)
6888{
f63fbe86
MS
6889 /* The longest string possibly returned by hex_string_custom
6890 is 50 chars. These must be at least that big for safety. */
6891 char astr1[64];
6892 char astr2[64];
76897487 6893
bb599908
PH
6894 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6895 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6896 if (have_bnum)
8a3fe4f8 6897 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
76897487
KB
6898 bnum, astr1, astr2);
6899 else
8a3fe4f8 6900 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6901}
6902
4a64f543
MS
6903/* Adjust a breakpoint's address to account for architectural
6904 constraints on breakpoint placement. Return the adjusted address.
6905 Note: Very few targets require this kind of adjustment. For most
6906 targets, this function is simply the identity function. */
76897487
KB
6907
6908static CORE_ADDR
a6d9a66e
UW
6909adjust_breakpoint_address (struct gdbarch *gdbarch,
6910 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6911{
a0de8c21
YQ
6912 if (bptype == bp_watchpoint
6913 || bptype == bp_hardware_watchpoint
6914 || bptype == bp_read_watchpoint
6915 || bptype == bp_access_watchpoint
6916 || bptype == bp_catchpoint)
88f7da05
KB
6917 {
6918 /* Watchpoints and the various bp_catch_* eventpoints should not
6919 have their addresses modified. */
6920 return bpaddr;
6921 }
7c16b83e
PA
6922 else if (bptype == bp_single_step)
6923 {
6924 /* Single-step breakpoints should not have their addresses
6925 modified. If there's any architectural constrain that
6926 applies to this address, then it should have already been
6927 taken into account when the breakpoint was created in the
6928 first place. If we didn't do this, stepping through e.g.,
6929 Thumb-2 IT blocks would break. */
6930 return bpaddr;
6931 }
76897487
KB
6932 else
6933 {
a0de8c21
YQ
6934 CORE_ADDR adjusted_bpaddr = bpaddr;
6935
6936 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6937 {
6938 /* Some targets have architectural constraints on the placement
6939 of breakpoint instructions. Obtain the adjusted address. */
6940 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6941 }
76897487 6942
a0de8c21 6943 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
6944
6945 /* An adjusted breakpoint address can significantly alter
6946 a user's expectations. Print a warning if an adjustment
6947 is required. */
6948 if (adjusted_bpaddr != bpaddr)
6949 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6950
6951 return adjusted_bpaddr;
6952 }
6953}
6954
5f486660 6955bp_location::bp_location (breakpoint *owner)
7cc221ef 6956{
5625a286 6957 bp_location *loc = this;
7cc221ef 6958
28010a5d 6959 loc->owner = owner;
b775012e 6960 loc->cond_bytecode = NULL;
0d381245
VP
6961 loc->shlib_disabled = 0;
6962 loc->enabled = 1;
e049a4b5 6963
28010a5d 6964 switch (owner->type)
e049a4b5
DJ
6965 {
6966 case bp_breakpoint:
7c16b83e 6967 case bp_single_step:
e049a4b5
DJ
6968 case bp_until:
6969 case bp_finish:
6970 case bp_longjmp:
6971 case bp_longjmp_resume:
e2e4d78b 6972 case bp_longjmp_call_dummy:
186c406b
TT
6973 case bp_exception:
6974 case bp_exception_resume:
e049a4b5 6975 case bp_step_resume:
2c03e5be 6976 case bp_hp_step_resume:
e049a4b5
DJ
6977 case bp_watchpoint_scope:
6978 case bp_call_dummy:
aa7d318d 6979 case bp_std_terminate:
e049a4b5
DJ
6980 case bp_shlib_event:
6981 case bp_thread_event:
6982 case bp_overlay_event:
4efc6507 6983 case bp_jit_event:
0fd8e87f 6984 case bp_longjmp_master:
aa7d318d 6985 case bp_std_terminate_master:
186c406b 6986 case bp_exception_master:
0e30163f
JK
6987 case bp_gnu_ifunc_resolver:
6988 case bp_gnu_ifunc_resolver_return:
e7e0cddf 6989 case bp_dprintf:
e049a4b5 6990 loc->loc_type = bp_loc_software_breakpoint;
b775012e 6991 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
6992 break;
6993 case bp_hardware_breakpoint:
6994 loc->loc_type = bp_loc_hardware_breakpoint;
b775012e 6995 mark_breakpoint_location_modified (loc);
e049a4b5
DJ
6996 break;
6997 case bp_hardware_watchpoint:
6998 case bp_read_watchpoint:
6999 case bp_access_watchpoint:
7000 loc->loc_type = bp_loc_hardware_watchpoint;
7001 break;
7002 case bp_watchpoint:
ce78b96d 7003 case bp_catchpoint:
15c3d785
PA
7004 case bp_tracepoint:
7005 case bp_fast_tracepoint:
0fb4aa4b 7006 case bp_static_tracepoint:
e049a4b5
DJ
7007 loc->loc_type = bp_loc_other;
7008 break;
7009 default:
e2e0b3e5 7010 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5
DJ
7011 }
7012
f431efe5 7013 loc->refc = 1;
28010a5d
PA
7014}
7015
7016/* Allocate a struct bp_location. */
7017
7018static struct bp_location *
7019allocate_bp_location (struct breakpoint *bpt)
7020{
348d480f
PA
7021 return bpt->ops->allocate_location (bpt);
7022}
7cc221ef 7023
f431efe5
PA
7024static void
7025free_bp_location (struct bp_location *loc)
fe3f5fa8 7026{
4d01a485 7027 delete loc;
fe3f5fa8
VP
7028}
7029
f431efe5
PA
7030/* Increment reference count. */
7031
7032static void
7033incref_bp_location (struct bp_location *bl)
7034{
7035 ++bl->refc;
7036}
7037
7038/* Decrement reference count. If the reference count reaches 0,
7039 destroy the bp_location. Sets *BLP to NULL. */
7040
7041static void
7042decref_bp_location (struct bp_location **blp)
7043{
0807b50c
PA
7044 gdb_assert ((*blp)->refc > 0);
7045
f431efe5
PA
7046 if (--(*blp)->refc == 0)
7047 free_bp_location (*blp);
7048 *blp = NULL;
7049}
7050
346774a9 7051/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7052
b270e6f9
TT
7053static breakpoint *
7054add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7055{
346774a9 7056 struct breakpoint *b1;
b270e6f9 7057 struct breakpoint *result = b.get ();
c906108c 7058
346774a9
PA
7059 /* Add this breakpoint to the end of the chain so that a list of
7060 breakpoints will come out in order of increasing numbers. */
7061
7062 b1 = breakpoint_chain;
7063 if (b1 == 0)
b270e6f9 7064 breakpoint_chain = b.release ();
346774a9
PA
7065 else
7066 {
7067 while (b1->next)
7068 b1 = b1->next;
b270e6f9 7069 b1->next = b.release ();
346774a9 7070 }
b270e6f9
TT
7071
7072 return result;
346774a9
PA
7073}
7074
7075/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7076
7077static void
7078init_raw_breakpoint_without_location (struct breakpoint *b,
7079 struct gdbarch *gdbarch,
28010a5d 7080 enum bptype bptype,
c0a91b2b 7081 const struct breakpoint_ops *ops)
346774a9 7082{
348d480f
PA
7083 gdb_assert (ops != NULL);
7084
28010a5d 7085 b->ops = ops;
4d28f7a8 7086 b->type = bptype;
a6d9a66e 7087 b->gdbarch = gdbarch;
c906108c
SS
7088 b->language = current_language->la_language;
7089 b->input_radix = input_radix;
d0fb5eae 7090 b->related_breakpoint = b;
346774a9
PA
7091}
7092
7093/* Helper to set_raw_breakpoint below. Creates a breakpoint
7094 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7095
7096static struct breakpoint *
7097set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7098 enum bptype bptype,
c0a91b2b 7099 const struct breakpoint_ops *ops)
346774a9 7100{
3b0871f4 7101 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7102
3b0871f4 7103 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7104 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7105}
7106
0e30163f
JK
7107/* Initialize loc->function_name. EXPLICIT_LOC says no indirect function
7108 resolutions should be made as the user specified the location explicitly
7109 enough. */
7110
0d381245 7111static void
0e30163f 7112set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
0d381245 7113{
2bdf28a0
JK
7114 gdb_assert (loc->owner != NULL);
7115
0d381245 7116 if (loc->owner->type == bp_breakpoint
1042e4c0 7117 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7118 || is_tracepoint (loc->owner))
0d381245 7119 {
2c02bd72 7120 const char *function_name;
0e30163f 7121
3467ec66 7122 if (loc->msymbol != NULL
f50776aa
PA
7123 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7124 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
3467ec66 7125 && !explicit_loc)
0e30163f
JK
7126 {
7127 struct breakpoint *b = loc->owner;
7128
3467ec66
PA
7129 function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7130
7131 if (b->type == bp_breakpoint && b->loc == loc
7132 && loc->next == NULL && b->related_breakpoint == b)
0e30163f
JK
7133 {
7134 /* Create only the whole new breakpoint of this type but do not
7135 mess more complicated breakpoints with multiple locations. */
7136 b->type = bp_gnu_ifunc_resolver;
6a3a010b
MR
7137 /* Remember the resolver's address for use by the return
7138 breakpoint. */
3467ec66 7139 loc->related_address = loc->address;
0e30163f
JK
7140 }
7141 }
3467ec66
PA
7142 else
7143 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
0e30163f 7144
2c02bd72
DE
7145 if (function_name)
7146 loc->function_name = xstrdup (function_name);
0d381245
VP
7147 }
7148}
7149
a6d9a66e 7150/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7151struct gdbarch *
a6d9a66e
UW
7152get_sal_arch (struct symtab_and_line sal)
7153{
7154 if (sal.section)
7155 return get_objfile_arch (sal.section->objfile);
7156 if (sal.symtab)
eb822aa6 7157 return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
a6d9a66e
UW
7158
7159 return NULL;
7160}
7161
346774a9
PA
7162/* Low level routine for partially initializing a breakpoint of type
7163 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7164 file name, and line number are provided by SAL.
0d381245
VP
7165
7166 It is expected that the caller will complete the initialization of
7167 the newly created breakpoint struct as well as output any status
c56053d2 7168 information regarding the creation of a new breakpoint. */
0d381245 7169
346774a9
PA
7170static void
7171init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7172 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7173 const struct breakpoint_ops *ops)
0d381245 7174{
28010a5d 7175 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7176
3742cc8b 7177 add_location_to_breakpoint (b, &sal);
0d381245 7178
6c95b8df
PA
7179 if (bptype != bp_catchpoint)
7180 gdb_assert (sal.pspace != NULL);
7181
f8eba3c6
TT
7182 /* Store the program space that was used to set the breakpoint,
7183 except for ordinary breakpoints, which are independent of the
7184 program space. */
7185 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7186 b->pspace = sal.pspace;
346774a9 7187}
c906108c 7188
346774a9
PA
7189/* set_raw_breakpoint is a low level routine for allocating and
7190 partially initializing a breakpoint of type BPTYPE. The newly
7191 created breakpoint's address, section, source file name, and line
7192 number are provided by SAL. The newly created and partially
7193 initialized breakpoint is added to the breakpoint chain and
7194 is also returned as the value of this function.
7195
7196 It is expected that the caller will complete the initialization of
7197 the newly created breakpoint struct as well as output any status
7198 information regarding the creation of a new breakpoint. In
7199 particular, set_raw_breakpoint does NOT set the breakpoint
7200 number! Care should be taken to not allow an error to occur
7201 prior to completing the initialization of the breakpoint. If this
7202 should happen, a bogus breakpoint will be left on the chain. */
7203
7204struct breakpoint *
7205set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7206 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7207 const struct breakpoint_ops *ops)
346774a9 7208{
3b0871f4 7209 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7210
3b0871f4 7211 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7212 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7213}
7214
53a5351d 7215/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7216 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7217 initiated the operation. */
c906108c
SS
7218
7219void
186c406b 7220set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7221{
35df4500 7222 struct breakpoint *b, *b_tmp;
5d5658a1 7223 int thread = tp->global_num;
0fd8e87f
UW
7224
7225 /* To avoid having to rescan all objfile symbols at every step,
7226 we maintain a list of continually-inserted but always disabled
7227 longjmp "master" breakpoints. Here, we simply create momentary
7228 clones of those and enable them for the requested thread. */
35df4500 7229 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7230 if (b->pspace == current_program_space
186c406b
TT
7231 && (b->type == bp_longjmp_master
7232 || b->type == bp_exception_master))
0fd8e87f 7233 {
06edf0c0
PA
7234 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7235 struct breakpoint *clone;
cc59ec59 7236
e2e4d78b
JK
7237 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7238 after their removal. */
06edf0c0 7239 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7240 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7241 clone->thread = thread;
7242 }
186c406b
TT
7243
7244 tp->initiating_frame = frame;
c906108c
SS
7245}
7246
611c83ae 7247/* Delete all longjmp breakpoints from THREAD. */
c906108c 7248void
611c83ae 7249delete_longjmp_breakpoint (int thread)
c906108c 7250{
35df4500 7251 struct breakpoint *b, *b_tmp;
c906108c 7252
35df4500 7253 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7254 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7255 {
7256 if (b->thread == thread)
7257 delete_breakpoint (b);
7258 }
c906108c
SS
7259}
7260
f59f708a
PA
7261void
7262delete_longjmp_breakpoint_at_next_stop (int thread)
7263{
7264 struct breakpoint *b, *b_tmp;
7265
7266 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7267 if (b->type == bp_longjmp || b->type == bp_exception)
7268 {
7269 if (b->thread == thread)
7270 b->disposition = disp_del_at_next_stop;
7271 }
7272}
7273
e2e4d78b
JK
7274/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7275 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7276 pointer to any of them. Return NULL if this system cannot place longjmp
7277 breakpoints. */
7278
7279struct breakpoint *
7280set_longjmp_breakpoint_for_call_dummy (void)
7281{
7282 struct breakpoint *b, *retval = NULL;
7283
7284 ALL_BREAKPOINTS (b)
7285 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7286 {
7287 struct breakpoint *new_b;
7288
7289 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7290 &momentary_breakpoint_ops,
7291 1);
00431a78 7292 new_b->thread = inferior_thread ()->global_num;
e2e4d78b
JK
7293
7294 /* Link NEW_B into the chain of RETVAL breakpoints. */
7295
7296 gdb_assert (new_b->related_breakpoint == new_b);
7297 if (retval == NULL)
7298 retval = new_b;
7299 new_b->related_breakpoint = retval;
7300 while (retval->related_breakpoint != new_b->related_breakpoint)
7301 retval = retval->related_breakpoint;
7302 retval->related_breakpoint = new_b;
7303 }
7304
7305 return retval;
7306}
7307
7308/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7309 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7310 stack.
7311
7312 You should call this function only at places where it is safe to currently
7313 unwind the whole stack. Failed stack unwind would discard live dummy
7314 frames. */
7315
7316void
b67a2c6f 7317check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7318{
7319 struct breakpoint *b, *b_tmp;
7320
7321 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7322 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7323 {
7324 struct breakpoint *dummy_b = b->related_breakpoint;
7325
7326 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7327 dummy_b = dummy_b->related_breakpoint;
7328 if (dummy_b->type != bp_call_dummy
7329 || frame_find_by_id (dummy_b->frame_id) != NULL)
7330 continue;
7331
00431a78 7332 dummy_frame_discard (dummy_b->frame_id, tp);
e2e4d78b
JK
7333
7334 while (b->related_breakpoint != b)
7335 {
7336 if (b_tmp == b->related_breakpoint)
7337 b_tmp = b->related_breakpoint->next;
7338 delete_breakpoint (b->related_breakpoint);
7339 }
7340 delete_breakpoint (b);
7341 }
7342}
7343
1900040c
MS
7344void
7345enable_overlay_breakpoints (void)
7346{
52f0bd74 7347 struct breakpoint *b;
1900040c
MS
7348
7349 ALL_BREAKPOINTS (b)
7350 if (b->type == bp_overlay_event)
7351 {
7352 b->enable_state = bp_enabled;
44702360 7353 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7354 overlay_events_enabled = 1;
1900040c
MS
7355 }
7356}
7357
7358void
7359disable_overlay_breakpoints (void)
7360{
52f0bd74 7361 struct breakpoint *b;
1900040c
MS
7362
7363 ALL_BREAKPOINTS (b)
7364 if (b->type == bp_overlay_event)
7365 {
7366 b->enable_state = bp_disabled;
44702360 7367 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7368 overlay_events_enabled = 0;
1900040c
MS
7369 }
7370}
7371
aa7d318d
TT
7372/* Set an active std::terminate breakpoint for each std::terminate
7373 master breakpoint. */
7374void
7375set_std_terminate_breakpoint (void)
7376{
35df4500 7377 struct breakpoint *b, *b_tmp;
aa7d318d 7378
35df4500 7379 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7380 if (b->pspace == current_program_space
7381 && b->type == bp_std_terminate_master)
7382 {
06edf0c0 7383 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7384 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7385 }
7386}
7387
7388/* Delete all the std::terminate breakpoints. */
7389void
7390delete_std_terminate_breakpoint (void)
7391{
35df4500 7392 struct breakpoint *b, *b_tmp;
aa7d318d 7393
35df4500 7394 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7395 if (b->type == bp_std_terminate)
7396 delete_breakpoint (b);
7397}
7398
c4093a6a 7399struct breakpoint *
a6d9a66e 7400create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7401{
7402 struct breakpoint *b;
c4093a6a 7403
06edf0c0
PA
7404 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7405 &internal_breakpoint_ops);
7406
b5de0fa7 7407 b->enable_state = bp_enabled;
f00aae0f 7408 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7409 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7410
44702360 7411 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7412
c4093a6a
JM
7413 return b;
7414}
7415
0101ce28
JJ
7416struct lang_and_radix
7417 {
7418 enum language lang;
7419 int radix;
7420 };
7421
4efc6507
DE
7422/* Create a breakpoint for JIT code registration and unregistration. */
7423
7424struct breakpoint *
7425create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7426{
2a7f3dff
PA
7427 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7428 &internal_breakpoint_ops);
4efc6507 7429}
0101ce28 7430
03673fc7
PP
7431/* Remove JIT code registration and unregistration breakpoint(s). */
7432
7433void
7434remove_jit_event_breakpoints (void)
7435{
7436 struct breakpoint *b, *b_tmp;
7437
7438 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7439 if (b->type == bp_jit_event
7440 && b->loc->pspace == current_program_space)
7441 delete_breakpoint (b);
7442}
7443
cae688ec
JJ
7444void
7445remove_solib_event_breakpoints (void)
7446{
35df4500 7447 struct breakpoint *b, *b_tmp;
cae688ec 7448
35df4500 7449 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7450 if (b->type == bp_shlib_event
7451 && b->loc->pspace == current_program_space)
cae688ec
JJ
7452 delete_breakpoint (b);
7453}
7454
f37f681c
PA
7455/* See breakpoint.h. */
7456
7457void
7458remove_solib_event_breakpoints_at_next_stop (void)
7459{
7460 struct breakpoint *b, *b_tmp;
7461
7462 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7463 if (b->type == bp_shlib_event
7464 && b->loc->pspace == current_program_space)
7465 b->disposition = disp_del_at_next_stop;
7466}
7467
04086b45
PA
7468/* Helper for create_solib_event_breakpoint /
7469 create_and_insert_solib_event_breakpoint. Allows specifying which
7470 INSERT_MODE to pass through to update_global_location_list. */
7471
7472static struct breakpoint *
7473create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7474 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7475{
7476 struct breakpoint *b;
7477
06edf0c0
PA
7478 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7479 &internal_breakpoint_ops);
04086b45 7480 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7481 return b;
7482}
7483
04086b45
PA
7484struct breakpoint *
7485create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7486{
7487 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7488}
7489
f37f681c
PA
7490/* See breakpoint.h. */
7491
7492struct breakpoint *
7493create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7494{
7495 struct breakpoint *b;
7496
04086b45
PA
7497 /* Explicitly tell update_global_location_list to insert
7498 locations. */
7499 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7500 if (!b->loc->inserted)
7501 {
7502 delete_breakpoint (b);
7503 return NULL;
7504 }
7505 return b;
7506}
7507
cae688ec
JJ
7508/* Disable any breakpoints that are on code in shared libraries. Only
7509 apply to enabled breakpoints, disabled ones can just stay disabled. */
7510
7511void
cb851954 7512disable_breakpoints_in_shlibs (void)
cae688ec 7513{
876fa593 7514 struct bp_location *loc, **locp_tmp;
cae688ec 7515
876fa593 7516 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7517 {
2bdf28a0 7518 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7519 struct breakpoint *b = loc->owner;
2bdf28a0 7520
4a64f543
MS
7521 /* We apply the check to all breakpoints, including disabled for
7522 those with loc->duplicate set. This is so that when breakpoint
7523 becomes enabled, or the duplicate is removed, gdb will try to
7524 insert all breakpoints. If we don't set shlib_disabled here,
7525 we'll try to insert those breakpoints and fail. */
1042e4c0 7526 if (((b->type == bp_breakpoint)
508ccb1f 7527 || (b->type == bp_jit_event)
1042e4c0 7528 || (b->type == bp_hardware_breakpoint)
d77f58be 7529 || (is_tracepoint (b)))
6c95b8df 7530 && loc->pspace == current_program_space
0d381245 7531 && !loc->shlib_disabled
6c95b8df 7532 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7533 )
0d381245
VP
7534 {
7535 loc->shlib_disabled = 1;
7536 }
cae688ec
JJ
7537 }
7538}
7539
63644780
NB
7540/* Disable any breakpoints and tracepoints that are in SOLIB upon
7541 notification of unloaded_shlib. Only apply to enabled breakpoints,
7542 disabled ones can just stay disabled. */
84acb35a 7543
75149521 7544static void
84acb35a
JJ
7545disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7546{
876fa593 7547 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7548 int disabled_shlib_breaks = 0;
7549
876fa593 7550 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7551 {
2bdf28a0 7552 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7553 struct breakpoint *b = loc->owner;
cc59ec59 7554
1e4d1764 7555 if (solib->pspace == loc->pspace
e2dd7057 7556 && !loc->shlib_disabled
1e4d1764
YQ
7557 && (((b->type == bp_breakpoint
7558 || b->type == bp_jit_event
7559 || b->type == bp_hardware_breakpoint)
7560 && (loc->loc_type == bp_loc_hardware_breakpoint
7561 || loc->loc_type == bp_loc_software_breakpoint))
7562 || is_tracepoint (b))
e2dd7057 7563 && solib_contains_address_p (solib, loc->address))
84acb35a 7564 {
e2dd7057
PP
7565 loc->shlib_disabled = 1;
7566 /* At this point, we cannot rely on remove_breakpoint
7567 succeeding so we must mark the breakpoint as not inserted
7568 to prevent future errors occurring in remove_breakpoints. */
7569 loc->inserted = 0;
8d3788bd
VP
7570
7571 /* This may cause duplicate notifications for the same breakpoint. */
76727919 7572 gdb::observers::breakpoint_modified.notify (b);
8d3788bd 7573
e2dd7057
PP
7574 if (!disabled_shlib_breaks)
7575 {
223ffa71 7576 target_terminal::ours_for_output ();
3e43a32a
MS
7577 warning (_("Temporarily disabling breakpoints "
7578 "for unloaded shared library \"%s\""),
e2dd7057 7579 solib->so_name);
84acb35a 7580 }
e2dd7057 7581 disabled_shlib_breaks = 1;
84acb35a
JJ
7582 }
7583 }
84acb35a
JJ
7584}
7585
63644780
NB
7586/* Disable any breakpoints and tracepoints in OBJFILE upon
7587 notification of free_objfile. Only apply to enabled breakpoints,
7588 disabled ones can just stay disabled. */
7589
7590static void
7591disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7592{
7593 struct breakpoint *b;
7594
7595 if (objfile == NULL)
7596 return;
7597
d03de421
PA
7598 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7599 managed by the user with add-symbol-file/remove-symbol-file.
7600 Similarly to how breakpoints in shared libraries are handled in
7601 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7602 shlib_disabled so they end up uninserted on the next global
7603 location list update. Shared libraries not loaded by the user
7604 aren't handled here -- they're already handled in
7605 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7606 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7607 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7608 main objfile). */
7609 if ((objfile->flags & OBJF_SHARED) == 0
7610 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7611 return;
7612
7613 ALL_BREAKPOINTS (b)
7614 {
7615 struct bp_location *loc;
7616 int bp_modified = 0;
7617
7618 if (!is_breakpoint (b) && !is_tracepoint (b))
7619 continue;
7620
7621 for (loc = b->loc; loc != NULL; loc = loc->next)
7622 {
7623 CORE_ADDR loc_addr = loc->address;
7624
7625 if (loc->loc_type != bp_loc_hardware_breakpoint
7626 && loc->loc_type != bp_loc_software_breakpoint)
7627 continue;
7628
7629 if (loc->shlib_disabled != 0)
7630 continue;
7631
7632 if (objfile->pspace != loc->pspace)
7633 continue;
7634
7635 if (loc->loc_type != bp_loc_hardware_breakpoint
7636 && loc->loc_type != bp_loc_software_breakpoint)
7637 continue;
7638
7639 if (is_addr_in_objfile (loc_addr, objfile))
7640 {
7641 loc->shlib_disabled = 1;
08351840
PA
7642 /* At this point, we don't know whether the object was
7643 unmapped from the inferior or not, so leave the
7644 inserted flag alone. We'll handle failure to
7645 uninsert quietly, in case the object was indeed
7646 unmapped. */
63644780
NB
7647
7648 mark_breakpoint_location_modified (loc);
7649
7650 bp_modified = 1;
7651 }
7652 }
7653
7654 if (bp_modified)
76727919 7655 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7656 }
7657}
7658
ce78b96d
JB
7659/* FORK & VFORK catchpoints. */
7660
e29a4733 7661/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7662 catchpoint. A breakpoint is really of this type iff its ops pointer points
7663 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7664
c1fc2657 7665struct fork_catchpoint : public breakpoint
e29a4733 7666{
e29a4733
PA
7667 /* Process id of a child process whose forking triggered this
7668 catchpoint. This field is only valid immediately after this
7669 catchpoint has triggered. */
7670 ptid_t forked_inferior_pid;
7671};
7672
4a64f543
MS
7673/* Implement the "insert" breakpoint_ops method for fork
7674 catchpoints. */
ce78b96d 7675
77b06cd7
TJB
7676static int
7677insert_catch_fork (struct bp_location *bl)
ce78b96d 7678{
e99b03dc 7679 return target_insert_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7680}
7681
4a64f543
MS
7682/* Implement the "remove" breakpoint_ops method for fork
7683 catchpoints. */
ce78b96d
JB
7684
7685static int
73971819 7686remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7687{
e99b03dc 7688 return target_remove_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7689}
7690
7691/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7692 catchpoints. */
7693
7694static int
f1310107 7695breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7696 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7697 const struct target_waitstatus *ws)
ce78b96d 7698{
e29a4733
PA
7699 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7700
f90263c1
TT
7701 if (ws->kind != TARGET_WAITKIND_FORKED)
7702 return 0;
7703
7704 c->forked_inferior_pid = ws->value.related_pid;
7705 return 1;
ce78b96d
JB
7706}
7707
4a64f543
MS
7708/* Implement the "print_it" breakpoint_ops method for fork
7709 catchpoints. */
ce78b96d
JB
7710
7711static enum print_stop_action
348d480f 7712print_it_catch_fork (bpstat bs)
ce78b96d 7713{
36dfb11c 7714 struct ui_out *uiout = current_uiout;
348d480f
PA
7715 struct breakpoint *b = bs->breakpoint_at;
7716 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7717
ce78b96d 7718 annotate_catchpoint (b->number);
f303dbd6 7719 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7720 if (b->disposition == disp_del)
112e8700 7721 uiout->text ("Temporary catchpoint ");
36dfb11c 7722 else
112e8700
SM
7723 uiout->text ("Catchpoint ");
7724 if (uiout->is_mi_like_p ())
36dfb11c 7725 {
112e8700
SM
7726 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7727 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7728 }
112e8700
SM
7729 uiout->field_int ("bkptno", b->number);
7730 uiout->text (" (forked process ");
e99b03dc 7731 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7732 uiout->text ("), ");
ce78b96d
JB
7733 return PRINT_SRC_AND_LOC;
7734}
7735
4a64f543
MS
7736/* Implement the "print_one" breakpoint_ops method for fork
7737 catchpoints. */
ce78b96d
JB
7738
7739static void
a6d9a66e 7740print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7741{
e29a4733 7742 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7743 struct value_print_options opts;
79a45e25 7744 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7745
7746 get_user_print_options (&opts);
7747
4a64f543
MS
7748 /* Field 4, the address, is omitted (which makes the columns not
7749 line up too nicely with the headers, but the effect is relatively
7750 readable). */
79a45b7d 7751 if (opts.addressprint)
112e8700 7752 uiout->field_skip ("addr");
ce78b96d 7753 annotate_field (5);
112e8700 7754 uiout->text ("fork");
d7e15655 7755 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7756 {
112e8700 7757 uiout->text (", process ");
e99b03dc 7758 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7759 uiout->spaces (1);
ce78b96d 7760 }
8ac3646f 7761
112e8700
SM
7762 if (uiout->is_mi_like_p ())
7763 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7764}
7765
7766/* Implement the "print_mention" breakpoint_ops method for fork
7767 catchpoints. */
7768
7769static void
7770print_mention_catch_fork (struct breakpoint *b)
7771{
7772 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7773}
7774
6149aea9
PA
7775/* Implement the "print_recreate" breakpoint_ops method for fork
7776 catchpoints. */
7777
7778static void
7779print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7780{
7781 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7782 print_recreate_thread (b, fp);
6149aea9
PA
7783}
7784
ce78b96d
JB
7785/* The breakpoint_ops structure to be used in fork catchpoints. */
7786
2060206e 7787static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7788
4a64f543
MS
7789/* Implement the "insert" breakpoint_ops method for vfork
7790 catchpoints. */
ce78b96d 7791
77b06cd7
TJB
7792static int
7793insert_catch_vfork (struct bp_location *bl)
ce78b96d 7794{
e99b03dc 7795 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7796}
7797
4a64f543
MS
7798/* Implement the "remove" breakpoint_ops method for vfork
7799 catchpoints. */
ce78b96d
JB
7800
7801static int
73971819 7802remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7803{
e99b03dc 7804 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7805}
7806
7807/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7808 catchpoints. */
7809
7810static int
f1310107 7811breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7812 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7813 const struct target_waitstatus *ws)
ce78b96d 7814{
e29a4733
PA
7815 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7816
f90263c1
TT
7817 if (ws->kind != TARGET_WAITKIND_VFORKED)
7818 return 0;
7819
7820 c->forked_inferior_pid = ws->value.related_pid;
7821 return 1;
ce78b96d
JB
7822}
7823
4a64f543
MS
7824/* Implement the "print_it" breakpoint_ops method for vfork
7825 catchpoints. */
ce78b96d
JB
7826
7827static enum print_stop_action
348d480f 7828print_it_catch_vfork (bpstat bs)
ce78b96d 7829{
36dfb11c 7830 struct ui_out *uiout = current_uiout;
348d480f 7831 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7832 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7833
ce78b96d 7834 annotate_catchpoint (b->number);
f303dbd6 7835 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7836 if (b->disposition == disp_del)
112e8700 7837 uiout->text ("Temporary catchpoint ");
36dfb11c 7838 else
112e8700
SM
7839 uiout->text ("Catchpoint ");
7840 if (uiout->is_mi_like_p ())
36dfb11c 7841 {
112e8700
SM
7842 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7843 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7844 }
112e8700
SM
7845 uiout->field_int ("bkptno", b->number);
7846 uiout->text (" (vforked process ");
e99b03dc 7847 uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
112e8700 7848 uiout->text ("), ");
ce78b96d
JB
7849 return PRINT_SRC_AND_LOC;
7850}
7851
4a64f543
MS
7852/* Implement the "print_one" breakpoint_ops method for vfork
7853 catchpoints. */
ce78b96d
JB
7854
7855static void
a6d9a66e 7856print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7857{
e29a4733 7858 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7859 struct value_print_options opts;
79a45e25 7860 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7861
7862 get_user_print_options (&opts);
4a64f543
MS
7863 /* Field 4, the address, is omitted (which makes the columns not
7864 line up too nicely with the headers, but the effect is relatively
7865 readable). */
79a45b7d 7866 if (opts.addressprint)
112e8700 7867 uiout->field_skip ("addr");
ce78b96d 7868 annotate_field (5);
112e8700 7869 uiout->text ("vfork");
d7e15655 7870 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7871 {
112e8700 7872 uiout->text (", process ");
e99b03dc 7873 uiout->field_int ("what", c->forked_inferior_pid.pid ());
112e8700 7874 uiout->spaces (1);
ce78b96d 7875 }
8ac3646f 7876
112e8700
SM
7877 if (uiout->is_mi_like_p ())
7878 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7879}
7880
7881/* Implement the "print_mention" breakpoint_ops method for vfork
7882 catchpoints. */
7883
7884static void
7885print_mention_catch_vfork (struct breakpoint *b)
7886{
7887 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7888}
7889
6149aea9
PA
7890/* Implement the "print_recreate" breakpoint_ops method for vfork
7891 catchpoints. */
7892
7893static void
7894print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7895{
7896 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7897 print_recreate_thread (b, fp);
6149aea9
PA
7898}
7899
ce78b96d
JB
7900/* The breakpoint_ops structure to be used in vfork catchpoints. */
7901
2060206e 7902static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7903
edcc5120 7904/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7905 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
7906 CATCH_SOLIB_BREAKPOINT_OPS. */
7907
c1fc2657 7908struct solib_catchpoint : public breakpoint
edcc5120 7909{
c1fc2657 7910 ~solib_catchpoint () override;
edcc5120
TT
7911
7912 /* True for "catch load", false for "catch unload". */
7913 unsigned char is_load;
7914
7915 /* Regular expression to match, if any. COMPILED is only valid when
7916 REGEX is non-NULL. */
7917 char *regex;
2d7cc5c7 7918 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
7919};
7920
c1fc2657 7921solib_catchpoint::~solib_catchpoint ()
edcc5120 7922{
c1fc2657 7923 xfree (this->regex);
edcc5120
TT
7924}
7925
7926static int
7927insert_catch_solib (struct bp_location *ignore)
7928{
7929 return 0;
7930}
7931
7932static int
73971819 7933remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
7934{
7935 return 0;
7936}
7937
7938static int
7939breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 7940 const address_space *aspace,
edcc5120
TT
7941 CORE_ADDR bp_addr,
7942 const struct target_waitstatus *ws)
7943{
7944 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7945 struct breakpoint *other;
7946
7947 if (ws->kind == TARGET_WAITKIND_LOADED)
7948 return 1;
7949
7950 ALL_BREAKPOINTS (other)
7951 {
7952 struct bp_location *other_bl;
7953
7954 if (other == bl->owner)
7955 continue;
7956
7957 if (other->type != bp_shlib_event)
7958 continue;
7959
c1fc2657 7960 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
7961 continue;
7962
7963 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7964 {
7965 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7966 return 1;
7967 }
7968 }
7969
7970 return 0;
7971}
7972
7973static void
7974check_status_catch_solib (struct bpstats *bs)
7975{
7976 struct solib_catchpoint *self
7977 = (struct solib_catchpoint *) bs->breakpoint_at;
edcc5120
TT
7978
7979 if (self->is_load)
7980 {
52941706 7981 for (so_list *iter : current_program_space->added_solibs)
edcc5120
TT
7982 {
7983 if (!self->regex
2d7cc5c7 7984 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
7985 return;
7986 }
7987 }
7988 else
7989 {
6fb16ce6 7990 for (const std::string &iter : current_program_space->deleted_solibs)
edcc5120
TT
7991 {
7992 if (!self->regex
6fb16ce6 7993 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
edcc5120
TT
7994 return;
7995 }
7996 }
7997
7998 bs->stop = 0;
7999 bs->print_it = print_it_noop;
8000}
8001
8002static enum print_stop_action
8003print_it_catch_solib (bpstat bs)
8004{
8005 struct breakpoint *b = bs->breakpoint_at;
8006 struct ui_out *uiout = current_uiout;
8007
8008 annotate_catchpoint (b->number);
f303dbd6 8009 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8010 if (b->disposition == disp_del)
112e8700 8011 uiout->text ("Temporary catchpoint ");
edcc5120 8012 else
112e8700
SM
8013 uiout->text ("Catchpoint ");
8014 uiout->field_int ("bkptno", b->number);
8015 uiout->text ("\n");
8016 if (uiout->is_mi_like_p ())
8017 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8018 print_solib_event (1);
8019 return PRINT_SRC_AND_LOC;
8020}
8021
8022static void
8023print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8024{
8025 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8026 struct value_print_options opts;
8027 struct ui_out *uiout = current_uiout;
edcc5120
TT
8028
8029 get_user_print_options (&opts);
8030 /* Field 4, the address, is omitted (which makes the columns not
8031 line up too nicely with the headers, but the effect is relatively
8032 readable). */
8033 if (opts.addressprint)
8034 {
8035 annotate_field (4);
112e8700 8036 uiout->field_skip ("addr");
edcc5120
TT
8037 }
8038
528e1572 8039 std::string msg;
edcc5120
TT
8040 annotate_field (5);
8041 if (self->is_load)
8042 {
8043 if (self->regex)
528e1572 8044 msg = string_printf (_("load of library matching %s"), self->regex);
edcc5120 8045 else
528e1572 8046 msg = _("load of library");
edcc5120
TT
8047 }
8048 else
8049 {
8050 if (self->regex)
528e1572 8051 msg = string_printf (_("unload of library matching %s"), self->regex);
edcc5120 8052 else
528e1572 8053 msg = _("unload of library");
edcc5120 8054 }
112e8700 8055 uiout->field_string ("what", msg);
8ac3646f 8056
112e8700
SM
8057 if (uiout->is_mi_like_p ())
8058 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8059}
8060
8061static void
8062print_mention_catch_solib (struct breakpoint *b)
8063{
8064 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8065
8066 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8067 self->is_load ? "load" : "unload");
8068}
8069
8070static void
8071print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8072{
8073 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8074
8075 fprintf_unfiltered (fp, "%s %s",
8076 b->disposition == disp_del ? "tcatch" : "catch",
8077 self->is_load ? "load" : "unload");
8078 if (self->regex)
8079 fprintf_unfiltered (fp, " %s", self->regex);
8080 fprintf_unfiltered (fp, "\n");
8081}
8082
8083static struct breakpoint_ops catch_solib_breakpoint_ops;
8084
91985142
MG
8085/* Shared helper function (MI and CLI) for creating and installing
8086 a shared object event catchpoint. If IS_LOAD is non-zero then
8087 the events to be caught are load events, otherwise they are
8088 unload events. If IS_TEMP is non-zero the catchpoint is a
8089 temporary one. If ENABLED is non-zero the catchpoint is
8090 created in an enabled state. */
edcc5120 8091
91985142 8092void
a121b7c1 8093add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
edcc5120 8094{
edcc5120 8095 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8096
edcc5120
TT
8097 if (!arg)
8098 arg = "";
f1735a53 8099 arg = skip_spaces (arg);
edcc5120 8100
36bd8eaa 8101 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8102
8103 if (*arg != '\0')
8104 {
2d7cc5c7
PA
8105 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8106 _("Invalid regexp")));
edcc5120
TT
8107 c->regex = xstrdup (arg);
8108 }
8109
8110 c->is_load = is_load;
36bd8eaa 8111 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8112 &catch_solib_breakpoint_ops);
8113
c1fc2657 8114 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8115
b270e6f9 8116 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8117}
8118
91985142
MG
8119/* A helper function that does all the work for "catch load" and
8120 "catch unload". */
8121
8122static void
eb4c3f4a 8123catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8124 struct cmd_list_element *command)
8125{
8126 int tempflag;
8127 const int enabled = 1;
8128
8129 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8130
8131 add_solib_catchpoint (arg, is_load, tempflag, enabled);
8132}
8133
edcc5120 8134static void
eb4c3f4a 8135catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8136 struct cmd_list_element *command)
8137{
8138 catch_load_or_unload (arg, from_tty, 1, command);
8139}
8140
8141static void
eb4c3f4a 8142catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8143 struct cmd_list_element *command)
8144{
8145 catch_load_or_unload (arg, from_tty, 0, command);
8146}
8147
346774a9
PA
8148/* Initialize a new breakpoint of the bp_catchpoint kind. If TEMPFLAG
8149 is non-zero, then make the breakpoint temporary. If COND_STRING is
8150 not NULL, then store it in the breakpoint. OPS, if not NULL, is
8151 the breakpoint_ops structure associated to the catchpoint. */
ce78b96d 8152
ab04a2af 8153void
346774a9
PA
8154init_catchpoint (struct breakpoint *b,
8155 struct gdbarch *gdbarch, int tempflag,
63160a43 8156 const char *cond_string,
c0a91b2b 8157 const struct breakpoint_ops *ops)
c906108c 8158{
51abb421 8159 symtab_and_line sal;
6c95b8df 8160 sal.pspace = current_program_space;
c5aa993b 8161
28010a5d 8162 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8163
1b36a34b 8164 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b5de0fa7 8165 b->disposition = tempflag ? disp_del : disp_donttouch;
346774a9
PA
8166}
8167
28010a5d 8168void
b270e6f9 8169install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8170{
b270e6f9 8171 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8172 set_breakpoint_number (internal, b);
558a9d82
YQ
8173 if (is_tracepoint (b))
8174 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8175 if (!internal)
8176 mention (b);
76727919 8177 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
8178
8179 if (update_gll)
44702360 8180 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8181}
8182
9b70b993 8183static void
a6d9a66e 8184create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
63160a43 8185 int tempflag, const char *cond_string,
c0a91b2b 8186 const struct breakpoint_ops *ops)
c906108c 8187{
b270e6f9 8188 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8189
b270e6f9 8190 init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
e29a4733
PA
8191
8192 c->forked_inferior_pid = null_ptid;
8193
b270e6f9 8194 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8195}
8196
fe798b75
JB
8197/* Exec catchpoints. */
8198
b4d90040 8199/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8200 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8201 CATCH_EXEC_BREAKPOINT_OPS. */
8202
c1fc2657 8203struct exec_catchpoint : public breakpoint
b4d90040 8204{
c1fc2657 8205 ~exec_catchpoint () override;
b4d90040
PA
8206
8207 /* Filename of a program whose exec triggered this catchpoint.
8208 This field is only valid immediately after this catchpoint has
8209 triggered. */
8210 char *exec_pathname;
8211};
8212
c1fc2657 8213/* Exec catchpoint destructor. */
b4d90040 8214
c1fc2657 8215exec_catchpoint::~exec_catchpoint ()
b4d90040 8216{
c1fc2657 8217 xfree (this->exec_pathname);
b4d90040
PA
8218}
8219
77b06cd7
TJB
8220static int
8221insert_catch_exec (struct bp_location *bl)
c906108c 8222{
e99b03dc 8223 return target_insert_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8224}
c906108c 8225
fe798b75 8226static int
73971819 8227remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8228{
e99b03dc 8229 return target_remove_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8230}
c906108c 8231
fe798b75 8232static int
f1310107 8233breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8234 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8235 const struct target_waitstatus *ws)
fe798b75 8236{
b4d90040
PA
8237 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8238
f90263c1
TT
8239 if (ws->kind != TARGET_WAITKIND_EXECD)
8240 return 0;
8241
8242 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8243 return 1;
fe798b75 8244}
c906108c 8245
fe798b75 8246static enum print_stop_action
348d480f 8247print_it_catch_exec (bpstat bs)
fe798b75 8248{
36dfb11c 8249 struct ui_out *uiout = current_uiout;
348d480f 8250 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8251 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8252
fe798b75 8253 annotate_catchpoint (b->number);
f303dbd6 8254 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8255 if (b->disposition == disp_del)
112e8700 8256 uiout->text ("Temporary catchpoint ");
36dfb11c 8257 else
112e8700
SM
8258 uiout->text ("Catchpoint ");
8259 if (uiout->is_mi_like_p ())
36dfb11c 8260 {
112e8700
SM
8261 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8262 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8263 }
112e8700
SM
8264 uiout->field_int ("bkptno", b->number);
8265 uiout->text (" (exec'd ");
8266 uiout->field_string ("new-exec", c->exec_pathname);
8267 uiout->text ("), ");
36dfb11c 8268
fe798b75 8269 return PRINT_SRC_AND_LOC;
c906108c
SS
8270}
8271
fe798b75 8272static void
a6d9a66e 8273print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8274{
b4d90040 8275 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8276 struct value_print_options opts;
79a45e25 8277 struct ui_out *uiout = current_uiout;
fe798b75
JB
8278
8279 get_user_print_options (&opts);
8280
8281 /* Field 4, the address, is omitted (which makes the columns
8282 not line up too nicely with the headers, but the effect
8283 is relatively readable). */
8284 if (opts.addressprint)
112e8700 8285 uiout->field_skip ("addr");
fe798b75 8286 annotate_field (5);
112e8700 8287 uiout->text ("exec");
b4d90040 8288 if (c->exec_pathname != NULL)
fe798b75 8289 {
112e8700
SM
8290 uiout->text (", program \"");
8291 uiout->field_string ("what", c->exec_pathname);
8292 uiout->text ("\" ");
fe798b75 8293 }
8ac3646f 8294
112e8700
SM
8295 if (uiout->is_mi_like_p ())
8296 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8297}
8298
8299static void
8300print_mention_catch_exec (struct breakpoint *b)
8301{
8302 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8303}
8304
6149aea9
PA
8305/* Implement the "print_recreate" breakpoint_ops method for exec
8306 catchpoints. */
8307
8308static void
8309print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8310{
8311 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8312 print_recreate_thread (b, fp);
6149aea9
PA
8313}
8314
2060206e 8315static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8316
c906108c 8317static int
fba45db2 8318hw_breakpoint_used_count (void)
c906108c 8319{
c906108c 8320 int i = 0;
f1310107
TJB
8321 struct breakpoint *b;
8322 struct bp_location *bl;
c906108c
SS
8323
8324 ALL_BREAKPOINTS (b)
c5aa993b 8325 {
d6b74ac4 8326 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8327 for (bl = b->loc; bl; bl = bl->next)
8328 {
8329 /* Special types of hardware breakpoints may use more than
8330 one register. */
348d480f 8331 i += b->ops->resources_needed (bl);
f1310107 8332 }
c5aa993b 8333 }
c906108c
SS
8334
8335 return i;
8336}
8337
a1398e0c
PA
8338/* Returns the resources B would use if it were a hardware
8339 watchpoint. */
8340
c906108c 8341static int
a1398e0c 8342hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8343{
c906108c 8344 int i = 0;
e09342b5 8345 struct bp_location *bl;
c906108c 8346
a1398e0c
PA
8347 if (!breakpoint_enabled (b))
8348 return 0;
8349
8350 for (bl = b->loc; bl; bl = bl->next)
8351 {
8352 /* Special types of hardware watchpoints may use more than
8353 one register. */
8354 i += b->ops->resources_needed (bl);
8355 }
8356
8357 return i;
8358}
8359
8360/* Returns the sum the used resources of all hardware watchpoints of
8361 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8362 the sum of the used resources of all hardware watchpoints of other
8363 types _not_ TYPE. */
8364
8365static int
8366hw_watchpoint_used_count_others (struct breakpoint *except,
8367 enum bptype type, int *other_type_used)
8368{
8369 int i = 0;
8370 struct breakpoint *b;
8371
c906108c
SS
8372 *other_type_used = 0;
8373 ALL_BREAKPOINTS (b)
e09342b5 8374 {
a1398e0c
PA
8375 if (b == except)
8376 continue;
e09342b5
TJB
8377 if (!breakpoint_enabled (b))
8378 continue;
8379
a1398e0c
PA
8380 if (b->type == type)
8381 i += hw_watchpoint_use_count (b);
8382 else if (is_hardware_watchpoint (b))
8383 *other_type_used = 1;
e09342b5
TJB
8384 }
8385
c906108c
SS
8386 return i;
8387}
8388
c906108c 8389void
fba45db2 8390disable_watchpoints_before_interactive_call_start (void)
c906108c 8391{
c5aa993b 8392 struct breakpoint *b;
c906108c
SS
8393
8394 ALL_BREAKPOINTS (b)
c5aa993b 8395 {
cc60f2e3 8396 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8397 {
b5de0fa7 8398 b->enable_state = bp_call_disabled;
44702360 8399 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8400 }
8401 }
c906108c
SS
8402}
8403
8404void
fba45db2 8405enable_watchpoints_after_interactive_call_stop (void)
c906108c 8406{
c5aa993b 8407 struct breakpoint *b;
c906108c
SS
8408
8409 ALL_BREAKPOINTS (b)
c5aa993b 8410 {
cc60f2e3 8411 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8412 {
b5de0fa7 8413 b->enable_state = bp_enabled;
44702360 8414 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8415 }
8416 }
c906108c
SS
8417}
8418
8bea4e01
UW
8419void
8420disable_breakpoints_before_startup (void)
8421{
6c95b8df 8422 current_program_space->executing_startup = 1;
44702360 8423 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8424}
8425
8426void
8427enable_breakpoints_after_startup (void)
8428{
6c95b8df 8429 current_program_space->executing_startup = 0;
f8eba3c6 8430 breakpoint_re_set ();
8bea4e01
UW
8431}
8432
7c16b83e
PA
8433/* Create a new single-step breakpoint for thread THREAD, with no
8434 locations. */
c906108c 8435
7c16b83e
PA
8436static struct breakpoint *
8437new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8438{
b270e6f9 8439 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8440
b270e6f9 8441 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8442 &momentary_breakpoint_ops);
8443
8444 b->disposition = disp_donttouch;
8445 b->frame_id = null_frame_id;
8446
8447 b->thread = thread;
8448 gdb_assert (b->thread != 0);
8449
b270e6f9 8450 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8451}
8452
8453/* Set a momentary breakpoint of type TYPE at address specified by
8454 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8455 frame. */
c906108c 8456
454dafbd 8457breakpoint_up
a6d9a66e
UW
8458set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8459 struct frame_id frame_id, enum bptype type)
c906108c 8460{
52f0bd74 8461 struct breakpoint *b;
edb3359d 8462
193facb3
JK
8463 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8464 tail-called one. */
8465 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8466
06edf0c0 8467 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8468 b->enable_state = bp_enabled;
8469 b->disposition = disp_donttouch;
818dd999 8470 b->frame_id = frame_id;
c906108c 8471
00431a78 8472 b->thread = inferior_thread ()->global_num;
c906108c 8473
44702360 8474 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8475
454dafbd 8476 return breakpoint_up (b);
c906108c 8477}
611c83ae 8478
06edf0c0 8479/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8480 The new breakpoint will have type TYPE, use OPS as its
8481 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8482
06edf0c0
PA
8483static struct breakpoint *
8484momentary_breakpoint_from_master (struct breakpoint *orig,
8485 enum bptype type,
a1aa2221
LM
8486 const struct breakpoint_ops *ops,
8487 int loc_enabled)
e58b0e63
PA
8488{
8489 struct breakpoint *copy;
8490
06edf0c0 8491 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8492 copy->loc = allocate_bp_location (copy);
0e30163f 8493 set_breakpoint_location_function (copy->loc, 1);
e58b0e63 8494
a6d9a66e 8495 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8496 copy->loc->requested_address = orig->loc->requested_address;
8497 copy->loc->address = orig->loc->address;
8498 copy->loc->section = orig->loc->section;
6c95b8df 8499 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8500 copy->loc->probe = orig->loc->probe;
f8eba3c6 8501 copy->loc->line_number = orig->loc->line_number;
2f202fde 8502 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8503 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8504 copy->frame_id = orig->frame_id;
8505 copy->thread = orig->thread;
6c95b8df 8506 copy->pspace = orig->pspace;
e58b0e63
PA
8507
8508 copy->enable_state = bp_enabled;
8509 copy->disposition = disp_donttouch;
8510 copy->number = internal_breakpoint_number--;
8511
44702360 8512 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8513 return copy;
8514}
8515
06edf0c0
PA
8516/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8517 ORIG is NULL. */
8518
8519struct breakpoint *
8520clone_momentary_breakpoint (struct breakpoint *orig)
8521{
8522 /* If there's nothing to clone, then return nothing. */
8523 if (orig == NULL)
8524 return NULL;
8525
a1aa2221 8526 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8527}
8528
454dafbd 8529breakpoint_up
a6d9a66e
UW
8530set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8531 enum bptype type)
611c83ae
PA
8532{
8533 struct symtab_and_line sal;
8534
8535 sal = find_pc_line (pc, 0);
8536 sal.pc = pc;
8537 sal.section = find_pc_overlay (pc);
8538 sal.explicit_pc = 1;
8539
a6d9a66e 8540 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8541}
c906108c 8542\f
c5aa993b 8543
c906108c
SS
8544/* Tell the user we have just set a breakpoint B. */
8545
8546static void
fba45db2 8547mention (struct breakpoint *b)
c906108c 8548{
348d480f 8549 b->ops->print_mention (b);
2d33446d 8550 current_uiout->text ("\n");
c906108c 8551}
c906108c 8552\f
c5aa993b 8553
1a853c52
PA
8554static int bp_loc_is_permanent (struct bp_location *loc);
8555
0d381245 8556static struct bp_location *
39d61571 8557add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8558 const struct symtab_and_line *sal)
8559{
8560 struct bp_location *loc, **tmp;
3742cc8b
YQ
8561 CORE_ADDR adjusted_address;
8562 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8563
8564 if (loc_gdbarch == NULL)
8565 loc_gdbarch = b->gdbarch;
8566
8567 /* Adjust the breakpoint's address prior to allocating a location.
8568 Once we call allocate_bp_location(), that mostly uninitialized
8569 location will be placed on the location chain. Adjustment of the
8570 breakpoint may cause target_read_memory() to be called and we do
8571 not want its scan of the location chain to find a breakpoint and
8572 location that's only been partially initialized. */
8573 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8574 sal->pc, b->type);
0d381245 8575
d30113d4 8576 /* Sort the locations by their ADDRESS. */
39d61571 8577 loc = allocate_bp_location (b);
d30113d4
JK
8578 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8579 tmp = &((*tmp)->next))
0d381245 8580 ;
d30113d4 8581 loc->next = *tmp;
0d381245 8582 *tmp = loc;
3742cc8b 8583
0d381245 8584 loc->requested_address = sal->pc;
3742cc8b 8585 loc->address = adjusted_address;
6c95b8df 8586 loc->pspace = sal->pspace;
935676c9 8587 loc->probe.prob = sal->prob;
729662a5 8588 loc->probe.objfile = sal->objfile;
6c95b8df 8589 gdb_assert (loc->pspace != NULL);
0d381245 8590 loc->section = sal->section;
3742cc8b 8591 loc->gdbarch = loc_gdbarch;
f8eba3c6 8592 loc->line_number = sal->line;
2f202fde 8593 loc->symtab = sal->symtab;
4a27f119 8594 loc->symbol = sal->symbol;
3467ec66
PA
8595 loc->msymbol = sal->msymbol;
8596 loc->objfile = sal->objfile;
f8eba3c6 8597
0e30163f
JK
8598 set_breakpoint_location_function (loc,
8599 sal->explicit_pc || sal->explicit_line);
1a853c52 8600
6ae88661
LM
8601 /* While by definition, permanent breakpoints are already present in the
8602 code, we don't mark the location as inserted. Normally one would expect
8603 that GDB could rely on that breakpoint instruction to stop the program,
8604 thus removing the need to insert its own breakpoint, except that executing
8605 the breakpoint instruction can kill the target instead of reporting a
8606 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8607 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8608 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8609 breakpoint be inserted normally results in QEMU knowing about the GDB
8610 breakpoint, and thus trap before the breakpoint instruction is executed.
8611 (If GDB later needs to continue execution past the permanent breakpoint,
8612 it manually increments the PC, thus avoiding executing the breakpoint
8613 instruction.) */
1a853c52 8614 if (bp_loc_is_permanent (loc))
6ae88661 8615 loc->permanent = 1;
1a853c52 8616
0d381245
VP
8617 return loc;
8618}
514f746b
AR
8619\f
8620
1cf4d951 8621/* See breakpoint.h. */
514f746b 8622
1cf4d951
PA
8623int
8624program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
514f746b
AR
8625{
8626 int len;
8627 CORE_ADDR addr;
1afeeb75 8628 const gdb_byte *bpoint;
514f746b
AR
8629 gdb_byte *target_mem;
8630
1cf4d951
PA
8631 addr = address;
8632 bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8633
8634 /* Software breakpoints unsupported? */
8635 if (bpoint == NULL)
8636 return 0;
8637
224c3ddb 8638 target_mem = (gdb_byte *) alloca (len);
1cf4d951
PA
8639
8640 /* Enable the automatic memory restoration from breakpoints while
8641 we read the memory. Otherwise we could say about our temporary
8642 breakpoints they are permanent. */
cb85b21b
TT
8643 scoped_restore restore_memory
8644 = make_scoped_restore_show_memory_breakpoints (0);
1cf4d951
PA
8645
8646 if (target_read_memory (address, target_mem, len) == 0
8647 && memcmp (target_mem, bpoint, len) == 0)
cb85b21b 8648 return 1;
1cf4d951 8649
cb85b21b 8650 return 0;
1cf4d951
PA
8651}
8652
8653/* Return 1 if LOC is pointing to a permanent breakpoint,
8654 return 0 otherwise. */
8655
8656static int
8657bp_loc_is_permanent (struct bp_location *loc)
8658{
514f746b
AR
8659 gdb_assert (loc != NULL);
8660
244558af
LM
8661 /* If we have a catchpoint or a watchpoint, just return 0. We should not
8662 attempt to read from the addresses the locations of these breakpoint types
8663 point to. program_breakpoint_here_p, below, will attempt to read
8664 memory. */
8665 if (!breakpoint_address_is_meaningful (loc->owner))
8666 return 0;
8667
5ed8105e 8668 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8669 switch_to_program_space_and_thread (loc->pspace);
5ed8105e 8670 return program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8671}
8672
e7e0cddf
SS
8673/* Build a command list for the dprintf corresponding to the current
8674 settings of the dprintf style options. */
8675
8676static void
8677update_dprintf_command_list (struct breakpoint *b)
8678{
8679 char *dprintf_args = b->extra_string;
8680 char *printf_line = NULL;
8681
8682 if (!dprintf_args)
8683 return;
8684
8685 dprintf_args = skip_spaces (dprintf_args);
8686
8687 /* Allow a comma, as it may have terminated a location, but don't
8688 insist on it. */
8689 if (*dprintf_args == ',')
8690 ++dprintf_args;
8691 dprintf_args = skip_spaces (dprintf_args);
8692
8693 if (*dprintf_args != '"')
8694 error (_("Bad format string, missing '\"'."));
8695
d3ce09f5 8696 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8697 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8698 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8699 {
8700 if (!dprintf_function)
8701 error (_("No function supplied for dprintf call"));
8702
8703 if (dprintf_channel && strlen (dprintf_channel) > 0)
8704 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8705 dprintf_function,
8706 dprintf_channel,
8707 dprintf_args);
8708 else
8709 printf_line = xstrprintf ("call (void) %s (%s)",
8710 dprintf_function,
8711 dprintf_args);
8712 }
d3ce09f5
SS
8713 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8714 {
8715 if (target_can_run_breakpoint_commands ())
8716 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8717 else
8718 {
8719 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8720 printf_line = xstrprintf ("printf %s", dprintf_args);
8721 }
8722 }
e7e0cddf
SS
8723 else
8724 internal_error (__FILE__, __LINE__,
8725 _("Invalid dprintf style."));
8726
f28045c2 8727 gdb_assert (printf_line != NULL);
e7e0cddf 8728
12973681
TT
8729 /* Manufacture a printf sequence. */
8730 struct command_line *printf_cmd_line
8731 = new struct command_line (simple_control, printf_line);
8732 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8733 command_lines_deleter ()));
e7e0cddf
SS
8734}
8735
8736/* Update all dprintf commands, making their command lists reflect
8737 current style settings. */
8738
8739static void
eb4c3f4a 8740update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8741 struct cmd_list_element *c)
8742{
8743 struct breakpoint *b;
8744
8745 ALL_BREAKPOINTS (b)
8746 {
8747 if (b->type == bp_dprintf)
8748 update_dprintf_command_list (b);
8749 }
8750}
c3f6f71d 8751
f00aae0f
KS
8752/* Create a breakpoint with SAL as location. Use LOCATION
8753 as a description of the location, and COND_STRING
b35a8b2f
DE
8754 as condition expression. If LOCATION is NULL then create an
8755 "address location" from the address in the SAL. */
018d34a4
VP
8756
8757static void
d9b3f62e 8758init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8759 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8760 event_location_up &&location,
e1e01040
PA
8761 gdb::unique_xmalloc_ptr<char> filter,
8762 gdb::unique_xmalloc_ptr<char> cond_string,
8763 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8764 enum bptype type, enum bpdisp disposition,
8765 int thread, int task, int ignore_count,
c0a91b2b 8766 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8767 int enabled, int internal, unsigned flags,
8768 int display_canonical)
018d34a4 8769{
0d381245 8770 int i;
018d34a4
VP
8771
8772 if (type == bp_hardware_breakpoint)
8773 {
fbbd034e
AS
8774 int target_resources_ok;
8775
8776 i = hw_breakpoint_used_count ();
8777 target_resources_ok =
8778 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8779 i + 1, 0);
8780 if (target_resources_ok == 0)
8781 error (_("No hardware breakpoint support in the target."));
8782 else if (target_resources_ok < 0)
8783 error (_("Hardware breakpoints used exceeds limit."));
8784 }
8785
6c5b2ebe 8786 gdb_assert (!sals.empty ());
6c95b8df 8787
6c5b2ebe 8788 for (const auto &sal : sals)
0d381245 8789 {
0d381245
VP
8790 struct bp_location *loc;
8791
8792 if (from_tty)
5af949e3
UW
8793 {
8794 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8795 if (!loc_gdbarch)
8796 loc_gdbarch = gdbarch;
8797
8798 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8799 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8800 }
0d381245 8801
6c5b2ebe 8802 if (&sal == &sals[0])
0d381245 8803 {
d9b3f62e 8804 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8805 b->thread = thread;
4a306c9a 8806 b->task = task;
855a6e68 8807
e1e01040
PA
8808 b->cond_string = cond_string.release ();
8809 b->extra_string = extra_string.release ();
0d381245 8810 b->ignore_count = ignore_count;
41447f92 8811 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8812 b->disposition = disposition;
6c95b8df 8813
44f238bb
PA
8814 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8815 b->loc->inserted = 1;
8816
0fb4aa4b
PA
8817 if (type == bp_static_tracepoint)
8818 {
d9b3f62e 8819 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8820 struct static_tracepoint_marker marker;
8821
983af33b 8822 if (strace_marker_p (b))
0fb4aa4b
PA
8823 {
8824 /* We already know the marker exists, otherwise, we
8825 wouldn't see a sal for it. */
d28cd78a
TT
8826 const char *p
8827 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8828 const char *endp;
0fb4aa4b 8829
f1735a53 8830 p = skip_spaces (p);
0fb4aa4b 8831
f1735a53 8832 endp = skip_to_space (p);
0fb4aa4b 8833
5d9310c4 8834 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8835
3e43a32a
MS
8836 printf_filtered (_("Probed static tracepoint "
8837 "marker \"%s\"\n"),
5d9310c4 8838 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8839 }
8840 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8841 {
5d9310c4 8842 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8843
3e43a32a
MS
8844 printf_filtered (_("Probed static tracepoint "
8845 "marker \"%s\"\n"),
5d9310c4 8846 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8847 }
8848 else
3e43a32a
MS
8849 warning (_("Couldn't determine the static "
8850 "tracepoint marker to probe"));
0fb4aa4b
PA
8851 }
8852
0d381245
VP
8853 loc = b->loc;
8854 }
8855 else
018d34a4 8856 {
39d61571 8857 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8858 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8859 loc->inserted = 1;
0d381245
VP
8860 }
8861
8862 if (b->cond_string)
8863 {
bbc13ae3
KS
8864 const char *arg = b->cond_string;
8865
1bb9788d
TT
8866 loc->cond = parse_exp_1 (&arg, loc->address,
8867 block_for_pc (loc->address), 0);
0d381245 8868 if (*arg)
588ae58c 8869 error (_("Garbage '%s' follows condition"), arg);
018d34a4 8870 }
e7e0cddf
SS
8871
8872 /* Dynamic printf requires and uses additional arguments on the
8873 command line, otherwise it's an error. */
8874 if (type == bp_dprintf)
8875 {
8876 if (b->extra_string)
8877 update_dprintf_command_list (b);
8878 else
8879 error (_("Format string required"));
8880 }
8881 else if (b->extra_string)
588ae58c 8882 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 8883 }
018d34a4 8884
56435ebe 8885 b->display_canonical = display_canonical;
f00aae0f 8886 if (location != NULL)
d28cd78a 8887 b->location = std::move (location);
018d34a4 8888 else
d28cd78a 8889 b->location = new_address_location (b->loc->address, NULL, 0);
e1e01040 8890 b->filter = filter.release ();
d9b3f62e 8891}
018d34a4 8892
d9b3f62e
PA
8893static void
8894create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 8895 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8896 event_location_up &&location,
e1e01040
PA
8897 gdb::unique_xmalloc_ptr<char> filter,
8898 gdb::unique_xmalloc_ptr<char> cond_string,
8899 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8900 enum bptype type, enum bpdisp disposition,
8901 int thread, int task, int ignore_count,
c0a91b2b 8902 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8903 int enabled, int internal, unsigned flags,
8904 int display_canonical)
d9b3f62e 8905{
a5e364af 8906 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 8907
a5e364af 8908 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 8909 sals, std::move (location),
e1e01040
PA
8910 std::move (filter),
8911 std::move (cond_string),
8912 std::move (extra_string),
d9b3f62e
PA
8913 type, disposition,
8914 thread, task, ignore_count,
8915 ops, from_tty,
44f238bb
PA
8916 enabled, internal, flags,
8917 display_canonical);
d9b3f62e 8918
b270e6f9 8919 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
8920}
8921
8922/* Add SALS.nelts breakpoints to the breakpoint table. For each
8923 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8924 value. COND_STRING, if not NULL, specified the condition to be
8925 used for all breakpoints. Essentially the only case where
8926 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8927 function. In that case, it's still not possible to specify
8928 separate conditions for different overloaded functions, so
8929 we take just a single condition string.
8930
c3f6f71d 8931 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 8932 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
8933 array contents). If the function fails (error() is called), the
8934 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 8935 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
8936
8937static void
8cdf0e15 8938create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 8939 struct linespec_result *canonical,
e1e01040
PA
8940 gdb::unique_xmalloc_ptr<char> cond_string,
8941 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
8942 enum bptype type, enum bpdisp disposition,
8943 int thread, int task, int ignore_count,
c0a91b2b 8944 const struct breakpoint_ops *ops, int from_tty,
44f238bb 8945 int enabled, int internal, unsigned flags)
c906108c 8946{
f8eba3c6 8947 if (canonical->pre_expanded)
6c5b2ebe 8948 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 8949
6c5b2ebe 8950 for (const auto &lsal : canonical->lsals)
c3f6f71d 8951 {
f00aae0f 8952 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 8953 'break', without arguments. */
ffc2605c 8954 event_location_up location
f00aae0f 8955 = (canonical->location != NULL
8e9e35b1 8956 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 8957 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 8958 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 8959
6c5b2ebe 8960 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 8961 std::move (location),
e1e01040
PA
8962 std::move (filter_string),
8963 std::move (cond_string),
8964 std::move (extra_string),
e7e0cddf 8965 type, disposition,
84f4c1fe 8966 thread, task, ignore_count, ops,
44f238bb 8967 from_tty, enabled, internal, flags,
56435ebe 8968 canonical->special_display);
c3f6f71d 8969 }
c3f6f71d 8970}
c906108c 8971
f00aae0f 8972/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 8973 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
8974 addresses found. LOCATION points to the end of the SAL (for
8975 linespec locations).
9998af43
TJB
8976
8977 The array and the line spec strings are allocated on the heap, it is
8978 the caller's responsibility to free them. */
c906108c 8979
b9362cc7 8980static void
f00aae0f 8981parse_breakpoint_sals (const struct event_location *location,
58438ac1 8982 struct linespec_result *canonical)
c3f6f71d 8983{
f00aae0f
KS
8984 struct symtab_and_line cursal;
8985
8986 if (event_location_type (location) == LINESPEC_LOCATION)
8987 {
a20714ff 8988 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 8989
a20714ff 8990 if (spec == NULL)
f00aae0f
KS
8991 {
8992 /* The last displayed codepoint, if it's valid, is our default
8993 breakpoint address. */
8994 if (last_displayed_sal_is_valid ())
8995 {
f00aae0f
KS
8996 /* Set sal's pspace, pc, symtab, and line to the values
8997 corresponding to the last call to print_frame_info.
8998 Be sure to reinitialize LINE with NOTCURRENT == 0
8999 as the breakpoint line number is inappropriate otherwise.
9000 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9001 symtab_and_line sal = get_last_displayed_sal ();
9002 CORE_ADDR pc = sal.pc;
9003
f00aae0f
KS
9004 sal = find_pc_line (pc, 0);
9005
9006 /* "break" without arguments is equivalent to "break *PC"
9007 where PC is the last displayed codepoint's address. So
9008 make sure to set sal.explicit_pc to prevent GDB from
9009 trying to expand the list of sals to include all other
9010 instances with the same symtab and line. */
9011 sal.pc = pc;
9012 sal.explicit_pc = 1;
9013
6c5b2ebe
PA
9014 struct linespec_sals lsal;
9015 lsal.sals = {sal};
f00aae0f
KS
9016 lsal.canonical = NULL;
9017
6c5b2ebe 9018 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9019 return;
9020 }
9021 else
9022 error (_("No default breakpoint address now."));
c906108c 9023 }
c906108c 9024 }
f00aae0f
KS
9025
9026 /* Force almost all breakpoints to be in terms of the
9027 current_source_symtab (which is decode_line_1's default).
9028 This should produce the results we want almost all of the
9029 time while leaving default_breakpoint_* alone.
9030
9031 ObjC: However, don't match an Objective-C method name which
9032 may have a '+' or '-' succeeded by a '['. */
9033 cursal = get_current_source_symtab_and_line ();
9034 if (last_displayed_sal_is_valid ())
c906108c 9035 {
a20714ff 9036 const char *spec = NULL;
cc80f267 9037
f00aae0f 9038 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 9039 spec = get_linespec_location (location)->spec_string;
cc80f267 9040
f00aae0f 9041 if (!cursal.symtab
a20714ff
PA
9042 || (spec != NULL
9043 && strchr ("+-", spec[0]) != NULL
9044 && spec[1] != '['))
f00aae0f 9045 {
c2f4122d 9046 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9047 get_last_displayed_symtab (),
9048 get_last_displayed_line (),
9049 canonical, NULL, NULL);
9050 return;
9051 }
c906108c 9052 }
f00aae0f 9053
c2f4122d 9054 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9055 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9056}
c906108c 9057
c906108c 9058
c3f6f71d 9059/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9060 inserted as a breakpoint. If it can't throw an error. */
c906108c 9061
b9362cc7 9062static void
6c5b2ebe 9063breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9064{
6c5b2ebe
PA
9065 for (auto &sal : sals)
9066 resolve_sal_pc (&sal);
c3f6f71d
JM
9067}
9068
7a697b8d
SS
9069/* Fast tracepoints may have restrictions on valid locations. For
9070 instance, a fast tracepoint using a jump instead of a trap will
9071 likely have to overwrite more bytes than a trap would, and so can
9072 only be placed where the instruction is longer than the jump, or a
9073 multi-instruction sequence does not have a jump into the middle of
9074 it, etc. */
9075
9076static void
9077check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9078 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9079{
6c5b2ebe 9080 for (const auto &sal : sals)
7a697b8d 9081 {
f8eba3c6
TT
9082 struct gdbarch *sarch;
9083
6c5b2ebe 9084 sarch = get_sal_arch (sal);
f8eba3c6
TT
9085 /* We fall back to GDBARCH if there is no architecture
9086 associated with SAL. */
9087 if (sarch == NULL)
9088 sarch = gdbarch;
281d762b
TT
9089 std::string msg;
9090 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 9091 error (_("May not have a fast tracepoint at %s%s"),
281d762b 9092 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
9093 }
9094}
9095
018d34a4
VP
9096/* Given TOK, a string specification of condition and thread, as
9097 accepted by the 'break' command, extract the condition
9098 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9099 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9100 If no condition is found, *COND_STRING is set to NULL.
9101 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9102
9103static void
bbc13ae3 9104find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9105 char **cond_string, int *thread, int *task,
9106 char **rest)
018d34a4
VP
9107{
9108 *cond_string = NULL;
9109 *thread = -1;
ed1d1739
KS
9110 *task = 0;
9111 *rest = NULL;
9112
018d34a4
VP
9113 while (tok && *tok)
9114 {
bbc13ae3 9115 const char *end_tok;
018d34a4 9116 int toklen;
bbc13ae3
KS
9117 const char *cond_start = NULL;
9118 const char *cond_end = NULL;
cc59ec59 9119
f1735a53 9120 tok = skip_spaces (tok);
e7e0cddf
SS
9121
9122 if ((*tok == '"' || *tok == ',') && rest)
9123 {
9124 *rest = savestring (tok, strlen (tok));
9125 return;
9126 }
9127
f1735a53 9128 end_tok = skip_to_space (tok);
d634f2de 9129
018d34a4 9130 toklen = end_tok - tok;
d634f2de 9131
018d34a4
VP
9132 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9133 {
9134 tok = cond_start = end_tok + 1;
4d01a485 9135 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
018d34a4 9136 cond_end = tok;
d634f2de 9137 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4
VP
9138 }
9139 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9140 {
5d5658a1
PA
9141 const char *tmptok;
9142 struct thread_info *thr;
d634f2de 9143
018d34a4 9144 tok = end_tok + 1;
5d5658a1 9145 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9146 if (tok == tmptok)
9147 error (_("Junk after thread keyword."));
5d5658a1 9148 *thread = thr->global_num;
bbc13ae3 9149 tok = tmptok;
018d34a4 9150 }
4a306c9a
JB
9151 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9152 {
9153 char *tmptok;
9154
9155 tok = end_tok + 1;
bbc13ae3 9156 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9157 if (tok == tmptok)
9158 error (_("Junk after task keyword."));
9159 if (!valid_task_id (*task))
b6199126 9160 error (_("Unknown task %d."), *task);
bbc13ae3 9161 tok = tmptok;
4a306c9a 9162 }
e7e0cddf
SS
9163 else if (rest)
9164 {
9165 *rest = savestring (tok, strlen (tok));
ccab2054 9166 return;
e7e0cddf 9167 }
018d34a4
VP
9168 else
9169 error (_("Junk at end of arguments."));
9170 }
9171}
9172
0fb4aa4b
PA
9173/* Decode a static tracepoint marker spec. */
9174
6c5b2ebe 9175static std::vector<symtab_and_line>
f00aae0f 9176decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 9177{
f00aae0f
KS
9178 const char *p = &(*arg_p)[3];
9179 const char *endp;
0fb4aa4b 9180
f1735a53 9181 p = skip_spaces (p);
0fb4aa4b 9182
f1735a53 9183 endp = skip_to_space (p);
0fb4aa4b 9184
81b1e71c 9185 std::string marker_str (p, endp - p);
0fb4aa4b 9186
5d9310c4
SM
9187 std::vector<static_tracepoint_marker> markers
9188 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9189 if (markers.empty ())
81b1e71c
TT
9190 error (_("No known static tracepoint marker named %s"),
9191 marker_str.c_str ());
0fb4aa4b 9192
6c5b2ebe 9193 std::vector<symtab_and_line> sals;
5d9310c4 9194 sals.reserve (markers.size ());
0fb4aa4b 9195
5d9310c4 9196 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 9197 {
5d9310c4
SM
9198 symtab_and_line sal = find_pc_line (marker.address, 0);
9199 sal.pc = marker.address;
6c5b2ebe 9200 sals.push_back (sal);
5d9310c4 9201 }
0fb4aa4b 9202
0fb4aa4b
PA
9203 *arg_p = endp;
9204 return sals;
9205}
9206
f00aae0f 9207/* See breakpoint.h. */
0101ce28 9208
8cdf0e15
VP
9209int
9210create_breakpoint (struct gdbarch *gdbarch,
e1e01040
PA
9211 const struct event_location *location,
9212 const char *cond_string,
9213 int thread, const char *extra_string,
f00aae0f 9214 int parse_extra,
0fb4aa4b 9215 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9216 int ignore_count,
9217 enum auto_boolean pending_break_support,
c0a91b2b 9218 const struct breakpoint_ops *ops,
44f238bb
PA
9219 int from_tty, int enabled, int internal,
9220 unsigned flags)
c3f6f71d 9221{
7efd8fc2 9222 struct linespec_result canonical;
0101ce28 9223 int pending = 0;
4a306c9a 9224 int task = 0;
86b17b60 9225 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9226
348d480f
PA
9227 gdb_assert (ops != NULL);
9228
f00aae0f
KS
9229 /* If extra_string isn't useful, set it to NULL. */
9230 if (extra_string != NULL && *extra_string == '\0')
9231 extra_string = NULL;
9232
a70b8144 9233 try
b78a6381 9234 {
f00aae0f 9235 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9236 }
230d2906 9237 catch (const gdb_exception_error &e)
0101ce28 9238 {
492d29ea
PA
9239 /* If caller is interested in rc value from parse, set
9240 value. */
9241 if (e.error == NOT_FOUND_ERROR)
0101ce28 9242 {
05ff989b
AC
9243 /* If pending breakpoint support is turned off, throw
9244 error. */
fa8d40ab
JJ
9245
9246 if (pending_break_support == AUTO_BOOLEAN_FALSE)
eedc3f4f 9247 throw;
723a2275
VP
9248
9249 exception_print (gdb_stderr, e);
fa8d40ab 9250
05ff989b
AC
9251 /* If pending breakpoint support is auto query and the user
9252 selects no, then simply return the error code. */
059fb39f 9253 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9254 && !nquery (_("Make %s pending on future shared library load? "),
9255 bptype_string (type_wanted)))
fd9b8c24 9256 return 0;
fa8d40ab 9257
05ff989b
AC
9258 /* At this point, either the user was queried about setting
9259 a pending breakpoint and selected yes, or pending
9260 breakpoint behavior is on and thus a pending breakpoint
9261 is defaulted on behalf of the user. */
f00aae0f 9262 pending = 1;
0101ce28 9263 }
492d29ea 9264 else
eedc3f4f 9265 throw;
0101ce28 9266 }
492d29ea 9267
6c5b2ebe 9268 if (!pending && canonical.lsals.empty ())
492d29ea 9269 return 0;
c3f6f71d 9270
c3f6f71d
JM
9271 /* Resolve all line numbers to PC's and verify that the addresses
9272 are ok for the target. */
0101ce28 9273 if (!pending)
f8eba3c6 9274 {
6c5b2ebe
PA
9275 for (auto &lsal : canonical.lsals)
9276 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9277 }
c3f6f71d 9278
7a697b8d 9279 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9280 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9281 {
6c5b2ebe
PA
9282 for (const auto &lsal : canonical.lsals)
9283 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9284 }
7a697b8d 9285
c3f6f71d
JM
9286 /* Verify that condition can be parsed, before setting any
9287 breakpoints. Allocate a separate condition expression for each
4a64f543 9288 breakpoint. */
0101ce28 9289 if (!pending)
c3f6f71d 9290 {
e1e01040
PA
9291 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9292 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9293
f00aae0f 9294 if (parse_extra)
72b2ff0e 9295 {
0878d0fa 9296 char *rest;
e1e01040 9297 char *cond;
52d361e1 9298
6c5b2ebe 9299 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9300
0878d0fa
YQ
9301 /* Here we only parse 'arg' to separate condition
9302 from thread number, so parsing in context of first
9303 sal is OK. When setting the breakpoint we'll
9304 re-parse it in context of each sal. */
9305
6c5b2ebe 9306 find_condition_and_thread (extra_string, lsal.sals[0].pc,
e1e01040
PA
9307 &cond, &thread, &task, &rest);
9308 cond_string_copy.reset (cond);
9309 extra_string_copy.reset (rest);
72b2ff0e 9310 }
2f069f6f 9311 else
72b2ff0e 9312 {
f00aae0f
KS
9313 if (type_wanted != bp_dprintf
9314 && extra_string != NULL && *extra_string != '\0')
9315 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9316
9317 /* Create a private copy of condition string. */
9318 if (cond_string)
e1e01040 9319 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9320 /* Create a private copy of any extra string. */
9321 if (extra_string)
e1e01040 9322 extra_string_copy.reset (xstrdup (extra_string));
72b2ff0e 9323 }
0fb4aa4b 9324
52d361e1 9325 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9326 std::move (cond_string_copy),
9327 std::move (extra_string_copy),
9328 type_wanted,
d9b3f62e
PA
9329 tempflag ? disp_del : disp_donttouch,
9330 thread, task, ignore_count, ops,
44f238bb 9331 from_tty, enabled, internal, flags);
c906108c 9332 }
0101ce28
JJ
9333 else
9334 {
a5e364af 9335 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9336
a5e364af 9337 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9338 b->location = copy_event_location (location);
bfccc43c 9339
f00aae0f
KS
9340 if (parse_extra)
9341 b->cond_string = NULL;
e12c7713
MK
9342 else
9343 {
9344 /* Create a private copy of condition string. */
e1e01040 9345 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9346 b->thread = thread;
e12c7713 9347 }
f00aae0f
KS
9348
9349 /* Create a private copy of any extra string. */
e1e01040 9350 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9351 b->ignore_count = ignore_count;
0101ce28 9352 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9353 b->condition_not_parsed = 1;
41447f92 9354 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2
KP
9355 if ((type_wanted != bp_breakpoint
9356 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9357 b->pspace = current_program_space;
8bea4e01 9358
b270e6f9 9359 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9360 }
9361
6c5b2ebe 9362 if (canonical.lsals.size () > 1)
95a42b64 9363 {
3e43a32a
MS
9364 warning (_("Multiple breakpoints were set.\nUse the "
9365 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9366 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9367 }
9368
44702360 9369 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9370
9371 return 1;
c3f6f71d 9372}
c906108c 9373
348d480f 9374/* Set a breakpoint.
72b2ff0e
VP
9375 ARG is a string describing breakpoint address,
9376 condition, and thread.
9377 FLAG specifies if a breakpoint is hardware on,
9378 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9379 and BP_TEMPFLAG. */
348d480f 9380
98deb0da 9381static void
f2fc3015 9382break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9383{
72b2ff0e 9384 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9385 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9386 ? bp_hardware_breakpoint
9387 : bp_breakpoint);
55aa24fb 9388 struct breakpoint_ops *ops;
f00aae0f 9389
ffc2605c 9390 event_location_up location = string_to_event_location (&arg, current_language);
55aa24fb
SDJ
9391
9392 /* Matching breakpoints on probes. */
5b56227b 9393 if (location != NULL
ffc2605c 9394 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
9395 ops = &bkpt_probe_breakpoint_ops;
9396 else
9397 ops = &bkpt_breakpoint_ops;
c3f6f71d 9398
8cdf0e15 9399 create_breakpoint (get_current_arch (),
ffc2605c 9400 location.get (),
f00aae0f 9401 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9402 tempflag, type_wanted,
8cdf0e15
VP
9403 0 /* Ignore count */,
9404 pending_break_support,
55aa24fb 9405 ops,
8cdf0e15 9406 from_tty,
84f4c1fe 9407 1 /* enabled */,
44f238bb
PA
9408 0 /* internal */,
9409 0);
c906108c
SS
9410}
9411
c906108c
SS
9412/* Helper function for break_command_1 and disassemble_command. */
9413
9414void
fba45db2 9415resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9416{
9417 CORE_ADDR pc;
9418
9419 if (sal->pc == 0 && sal->symtab != NULL)
9420 {
9421 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9422 error (_("No line %d in file \"%s\"."),
05cba821 9423 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9424 sal->pc = pc;
6a048695 9425
4a64f543
MS
9426 /* If this SAL corresponds to a breakpoint inserted using a line
9427 number, then skip the function prologue if necessary. */
6a048695 9428 if (sal->explicit_line)
059acae7 9429 skip_prologue_sal (sal);
c906108c
SS
9430 }
9431
9432 if (sal->section == 0 && sal->symtab != NULL)
9433 {
346d1dfe 9434 const struct blockvector *bv;
3977b71f 9435 const struct block *b;
c5aa993b 9436 struct symbol *sym;
c906108c 9437
43f3e411
DE
9438 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9439 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9440 if (bv != NULL)
9441 {
7f0df278 9442 sym = block_linkage_function (b);
c906108c
SS
9443 if (sym != NULL)
9444 {
eb822aa6
DE
9445 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9446 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9447 sym);
c906108c
SS
9448 }
9449 else
9450 {
4a64f543
MS
9451 /* It really is worthwhile to have the section, so we'll
9452 just have to look harder. This case can be executed
9453 if we have line numbers but no functions (as can
9454 happen in assembly source). */
c906108c 9455
5ed8105e 9456 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9457 switch_to_program_space_and_thread (sal->pspace);
c906108c 9458
5ed8105e 9459 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9460 if (msym.minsym)
efd66ac6 9461 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9462 }
9463 }
9464 }
9465}
9466
9467void
0b39b52e 9468break_command (const char *arg, int from_tty)
c906108c 9469{
db107f19 9470 break_command_1 (arg, 0, from_tty);
c906108c
SS
9471}
9472
c906108c 9473void
0b39b52e 9474tbreak_command (const char *arg, int from_tty)
c906108c 9475{
db107f19 9476 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9477}
9478
c906108c 9479static void
0b39b52e 9480hbreak_command (const char *arg, int from_tty)
c906108c 9481{
db107f19 9482 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9483}
9484
9485static void
0b39b52e 9486thbreak_command (const char *arg, int from_tty)
c906108c 9487{
db107f19 9488 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9489}
9490
9491static void
ee7ddd71 9492stop_command (const char *arg, int from_tty)
c906108c 9493{
a3f17187 9494 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9495Usage: stop in <function | address>\n\
a3f17187 9496 stop at <line>\n"));
c906108c
SS
9497}
9498
9499static void
4495129a 9500stopin_command (const char *arg, int from_tty)
c906108c
SS
9501{
9502 int badInput = 0;
9503
c5aa993b 9504 if (arg == (char *) NULL)
c906108c
SS
9505 badInput = 1;
9506 else if (*arg != '*')
9507 {
4495129a 9508 const char *argptr = arg;
c906108c
SS
9509 int hasColon = 0;
9510
4a64f543 9511 /* Look for a ':'. If this is a line number specification, then
53a5351d 9512 say it is bad, otherwise, it should be an address or
4a64f543 9513 function/method name. */
c906108c 9514 while (*argptr && !hasColon)
c5aa993b
JM
9515 {
9516 hasColon = (*argptr == ':');
9517 argptr++;
9518 }
c906108c
SS
9519
9520 if (hasColon)
c5aa993b 9521 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9522 else
c5aa993b 9523 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9524 }
9525
9526 if (badInput)
a3f17187 9527 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9528 else
db107f19 9529 break_command_1 (arg, 0, from_tty);
c906108c
SS
9530}
9531
9532static void
4495129a 9533stopat_command (const char *arg, int from_tty)
c906108c
SS
9534{
9535 int badInput = 0;
9536
c5aa993b 9537 if (arg == (char *) NULL || *arg == '*') /* no line number */
c906108c
SS
9538 badInput = 1;
9539 else
9540 {
4495129a 9541 const char *argptr = arg;
c906108c
SS
9542 int hasColon = 0;
9543
4a64f543
MS
9544 /* Look for a ':'. If there is a '::' then get out, otherwise
9545 it is probably a line number. */
c906108c 9546 while (*argptr && !hasColon)
c5aa993b
JM
9547 {
9548 hasColon = (*argptr == ':');
9549 argptr++;
9550 }
c906108c
SS
9551
9552 if (hasColon)
c5aa993b 9553 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9554 else
c5aa993b 9555 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9556 }
9557
9558 if (badInput)
65e65158 9559 printf_filtered (_("Usage: stop at LINE\n"));
c906108c 9560 else
db107f19 9561 break_command_1 (arg, 0, from_tty);
c906108c
SS
9562}
9563
e7e0cddf
SS
9564/* The dynamic printf command is mostly like a regular breakpoint, but
9565 with a prewired command list consisting of a single output command,
9566 built from extra arguments supplied on the dprintf command
9567 line. */
9568
da821c7b 9569static void
0b39b52e 9570dprintf_command (const char *arg, int from_tty)
e7e0cddf 9571{
ffc2605c 9572 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9573
9574 /* If non-NULL, ARG should have been advanced past the location;
9575 the next character must be ','. */
9576 if (arg != NULL)
9577 {
9578 if (arg[0] != ',' || arg[1] == '\0')
9579 error (_("Format string required"));
9580 else
9581 {
9582 /* Skip the comma. */
9583 ++arg;
9584 }
9585 }
9586
e7e0cddf 9587 create_breakpoint (get_current_arch (),
ffc2605c 9588 location.get (),
f00aae0f 9589 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9590 0, bp_dprintf,
9591 0 /* Ignore count */,
9592 pending_break_support,
9593 &dprintf_breakpoint_ops,
9594 from_tty,
9595 1 /* enabled */,
9596 0 /* internal */,
9597 0);
9598}
9599
d3ce09f5 9600static void
0b39b52e 9601agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9602{
9603 error (_("May only run agent-printf on the target"));
9604}
9605
f1310107
TJB
9606/* Implement the "breakpoint_hit" breakpoint_ops method for
9607 ranged breakpoints. */
9608
9609static int
9610breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9611 const address_space *aspace,
09ac7c10
TT
9612 CORE_ADDR bp_addr,
9613 const struct target_waitstatus *ws)
f1310107 9614{
09ac7c10 9615 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9616 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9617 return 0;
9618
f1310107
TJB
9619 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9620 bl->length, aspace, bp_addr);
9621}
9622
9623/* Implement the "resources_needed" breakpoint_ops method for
9624 ranged breakpoints. */
9625
9626static int
9627resources_needed_ranged_breakpoint (const struct bp_location *bl)
9628{
9629 return target_ranged_break_num_registers ();
9630}
9631
9632/* Implement the "print_it" breakpoint_ops method for
9633 ranged breakpoints. */
9634
9635static enum print_stop_action
348d480f 9636print_it_ranged_breakpoint (bpstat bs)
f1310107 9637{
348d480f 9638 struct breakpoint *b = bs->breakpoint_at;
f1310107 9639 struct bp_location *bl = b->loc;
79a45e25 9640 struct ui_out *uiout = current_uiout;
f1310107
TJB
9641
9642 gdb_assert (b->type == bp_hardware_breakpoint);
9643
9644 /* Ranged breakpoints have only one location. */
9645 gdb_assert (bl && bl->next == NULL);
9646
9647 annotate_breakpoint (b->number);
f303dbd6
PA
9648
9649 maybe_print_thread_hit_breakpoint (uiout);
9650
f1310107 9651 if (b->disposition == disp_del)
112e8700 9652 uiout->text ("Temporary ranged breakpoint ");
f1310107 9653 else
112e8700
SM
9654 uiout->text ("Ranged breakpoint ");
9655 if (uiout->is_mi_like_p ())
f1310107 9656 {
112e8700 9657 uiout->field_string ("reason",
f1310107 9658 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9659 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9660 }
112e8700
SM
9661 uiout->field_int ("bkptno", b->number);
9662 uiout->text (", ");
f1310107
TJB
9663
9664 return PRINT_SRC_AND_LOC;
9665}
9666
9667/* Implement the "print_one" breakpoint_ops method for
9668 ranged breakpoints. */
9669
9670static void
9671print_one_ranged_breakpoint (struct breakpoint *b,
9672 struct bp_location **last_loc)
9673{
9674 struct bp_location *bl = b->loc;
9675 struct value_print_options opts;
79a45e25 9676 struct ui_out *uiout = current_uiout;
f1310107
TJB
9677
9678 /* Ranged breakpoints have only one location. */
9679 gdb_assert (bl && bl->next == NULL);
9680
9681 get_user_print_options (&opts);
9682
9683 if (opts.addressprint)
9684 /* We don't print the address range here, it will be printed later
9685 by print_one_detail_ranged_breakpoint. */
112e8700 9686 uiout->field_skip ("addr");
f1310107
TJB
9687 annotate_field (5);
9688 print_breakpoint_location (b, bl);
9689 *last_loc = bl;
9690}
9691
9692/* Implement the "print_one_detail" breakpoint_ops method for
9693 ranged breakpoints. */
9694
9695static void
9696print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9697 struct ui_out *uiout)
9698{
9699 CORE_ADDR address_start, address_end;
9700 struct bp_location *bl = b->loc;
d7e74731 9701 string_file stb;
f1310107
TJB
9702
9703 gdb_assert (bl);
9704
9705 address_start = bl->address;
9706 address_end = address_start + bl->length - 1;
9707
112e8700 9708 uiout->text ("\taddress range: ");
d7e74731
PA
9709 stb.printf ("[%s, %s]",
9710 print_core_address (bl->gdbarch, address_start),
9711 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9712 uiout->field_stream ("addr", stb);
9713 uiout->text ("\n");
f1310107
TJB
9714}
9715
9716/* Implement the "print_mention" breakpoint_ops method for
9717 ranged breakpoints. */
9718
9719static void
9720print_mention_ranged_breakpoint (struct breakpoint *b)
9721{
9722 struct bp_location *bl = b->loc;
79a45e25 9723 struct ui_out *uiout = current_uiout;
f1310107
TJB
9724
9725 gdb_assert (bl);
9726 gdb_assert (b->type == bp_hardware_breakpoint);
9727
2d33446d
TT
9728 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9729 b->number, paddress (bl->gdbarch, bl->address),
9730 paddress (bl->gdbarch, bl->address + bl->length - 1));
f1310107
TJB
9731}
9732
9733/* Implement the "print_recreate" breakpoint_ops method for
9734 ranged breakpoints. */
9735
9736static void
9737print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9738{
f00aae0f 9739 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9740 event_location_to_string (b->location.get ()),
9741 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9742 print_recreate_thread (b, fp);
f1310107
TJB
9743}
9744
9745/* The breakpoint_ops structure to be used in ranged breakpoints. */
9746
2060206e 9747static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9748
9749/* Find the address where the end of the breakpoint range should be
9750 placed, given the SAL of the end of the range. This is so that if
9751 the user provides a line number, the end of the range is set to the
9752 last instruction of the given line. */
9753
9754static CORE_ADDR
9755find_breakpoint_range_end (struct symtab_and_line sal)
9756{
9757 CORE_ADDR end;
9758
9759 /* If the user provided a PC value, use it. Otherwise,
9760 find the address of the end of the given location. */
9761 if (sal.explicit_pc)
9762 end = sal.pc;
9763 else
9764 {
9765 int ret;
9766 CORE_ADDR start;
9767
9768 ret = find_line_pc_range (sal, &start, &end);
9769 if (!ret)
9770 error (_("Could not find location of the end of the range."));
9771
9772 /* find_line_pc_range returns the start of the next line. */
9773 end--;
9774 }
9775
9776 return end;
9777}
9778
9779/* Implement the "break-range" CLI command. */
9780
9781static void
0b39b52e 9782break_range_command (const char *arg, int from_tty)
f1310107 9783{
f2fc3015 9784 const char *arg_start;
f1310107
TJB
9785 struct linespec_result canonical_start, canonical_end;
9786 int bp_count, can_use_bp, length;
9787 CORE_ADDR end;
9788 struct breakpoint *b;
f1310107
TJB
9789
9790 /* We don't support software ranged breakpoints. */
9791 if (target_ranged_break_num_registers () < 0)
9792 error (_("This target does not support hardware ranged breakpoints."));
9793
9794 bp_count = hw_breakpoint_used_count ();
9795 bp_count += target_ranged_break_num_registers ();
9796 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9797 bp_count, 0);
9798 if (can_use_bp < 0)
9799 error (_("Hardware breakpoints used exceeds limit."));
9800
f8eba3c6 9801 arg = skip_spaces (arg);
f1310107
TJB
9802 if (arg == NULL || arg[0] == '\0')
9803 error(_("No address range specified."));
9804
f8eba3c6 9805 arg_start = arg;
ffc2605c
TT
9806 event_location_up start_location = string_to_event_location (&arg,
9807 current_language);
9808 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9809
9810 if (arg[0] != ',')
9811 error (_("Too few arguments."));
6c5b2ebe 9812 else if (canonical_start.lsals.empty ())
f1310107 9813 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9814
6c5b2ebe 9815 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9816
6c5b2ebe
PA
9817 if (canonical_start.lsals.size () > 1
9818 || lsal_start.sals.size () != 1)
f1310107
TJB
9819 error (_("Cannot create a ranged breakpoint with multiple locations."));
9820
6c5b2ebe 9821 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9822 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9823
9824 arg++; /* Skip the comma. */
f8eba3c6 9825 arg = skip_spaces (arg);
f1310107
TJB
9826
9827 /* Parse the end location. */
9828
f1310107
TJB
9829 arg_start = arg;
9830
f8eba3c6 9831 /* We call decode_line_full directly here instead of using
f1310107
TJB
9832 parse_breakpoint_sals because we need to specify the start location's
9833 symtab and line as the default symtab and line for the end of the
9834 range. This makes it possible to have ranges like "foo.c:27, +14",
9835 where +14 means 14 lines from the start location. */
ffc2605c
TT
9836 event_location_up end_location = string_to_event_location (&arg,
9837 current_language);
9838 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9839 sal_start.symtab, sal_start.line,
9840 &canonical_end, NULL, NULL);
9841
6c5b2ebe 9842 if (canonical_end.lsals.empty ())
f1310107 9843 error (_("Could not find location of the end of the range."));
f8eba3c6 9844
6c5b2ebe
PA
9845 const linespec_sals &lsal_end = canonical_end.lsals[0];
9846 if (canonical_end.lsals.size () > 1
9847 || lsal_end.sals.size () != 1)
f1310107
TJB
9848 error (_("Cannot create a ranged breakpoint with multiple locations."));
9849
6c5b2ebe 9850 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9851
9852 end = find_breakpoint_range_end (sal_end);
9853 if (sal_start.pc > end)
177b42fe 9854 error (_("Invalid address range, end precedes start."));
f1310107
TJB
9855
9856 length = end - sal_start.pc + 1;
9857 if (length < 0)
9858 /* Length overflowed. */
9859 error (_("Address range too large."));
9860 else if (length == 1)
9861 {
9862 /* This range is simple enough to be handled by
9863 the `hbreak' command. */
81b1e71c 9864 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
9865
9866 return;
9867 }
9868
9869 /* Now set up the breakpoint. */
9870 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 9871 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
9872 set_breakpoint_count (breakpoint_count + 1);
9873 b->number = breakpoint_count;
9874 b->disposition = disp_donttouch;
d28cd78a
TT
9875 b->location = std::move (start_location);
9876 b->location_range_end = std::move (end_location);
f1310107
TJB
9877 b->loc->length = length;
9878
f1310107 9879 mention (b);
76727919 9880 gdb::observers::breakpoint_created.notify (b);
44702360 9881 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
9882}
9883
4a64f543
MS
9884/* Return non-zero if EXP is verified as constant. Returned zero
9885 means EXP is variable. Also the constant detection may fail for
9886 some constant expressions and in such case still falsely return
9887 zero. */
2e6e3d9c 9888
65d79d4b
SDJ
9889static int
9890watchpoint_exp_is_const (const struct expression *exp)
9891{
9892 int i = exp->nelts;
9893
9894 while (i > 0)
9895 {
9896 int oplenp, argsp;
9897
9898 /* We are only interested in the descriptor of each element. */
9899 operator_length (exp, i, &oplenp, &argsp);
9900 i -= oplenp;
9901
9902 switch (exp->elts[i].opcode)
9903 {
9904 case BINOP_ADD:
9905 case BINOP_SUB:
9906 case BINOP_MUL:
9907 case BINOP_DIV:
9908 case BINOP_REM:
9909 case BINOP_MOD:
9910 case BINOP_LSH:
9911 case BINOP_RSH:
9912 case BINOP_LOGICAL_AND:
9913 case BINOP_LOGICAL_OR:
9914 case BINOP_BITWISE_AND:
9915 case BINOP_BITWISE_IOR:
9916 case BINOP_BITWISE_XOR:
9917 case BINOP_EQUAL:
9918 case BINOP_NOTEQUAL:
9919 case BINOP_LESS:
9920 case BINOP_GTR:
9921 case BINOP_LEQ:
9922 case BINOP_GEQ:
9923 case BINOP_REPEAT:
9924 case BINOP_COMMA:
9925 case BINOP_EXP:
9926 case BINOP_MIN:
9927 case BINOP_MAX:
9928 case BINOP_INTDIV:
9929 case BINOP_CONCAT:
65d79d4b
SDJ
9930 case TERNOP_COND:
9931 case TERNOP_SLICE:
65d79d4b
SDJ
9932
9933 case OP_LONG:
edd079d9 9934 case OP_FLOAT:
65d79d4b
SDJ
9935 case OP_LAST:
9936 case OP_COMPLEX:
9937 case OP_STRING:
65d79d4b
SDJ
9938 case OP_ARRAY:
9939 case OP_TYPE:
608b4967
TT
9940 case OP_TYPEOF:
9941 case OP_DECLTYPE:
6e72ca20 9942 case OP_TYPEID:
65d79d4b
SDJ
9943 case OP_NAME:
9944 case OP_OBJC_NSSTRING:
9945
9946 case UNOP_NEG:
9947 case UNOP_LOGICAL_NOT:
9948 case UNOP_COMPLEMENT:
9949 case UNOP_ADDR:
9950 case UNOP_HIGH:
aeaa2474 9951 case UNOP_CAST:
9eaf6705
TT
9952
9953 case UNOP_CAST_TYPE:
9954 case UNOP_REINTERPRET_CAST:
9955 case UNOP_DYNAMIC_CAST:
4a64f543
MS
9956 /* Unary, binary and ternary operators: We have to check
9957 their operands. If they are constant, then so is the
9958 result of that operation. For instance, if A and B are
9959 determined to be constants, then so is "A + B".
9960
9961 UNOP_IND is one exception to the rule above, because the
9962 value of *ADDR is not necessarily a constant, even when
9963 ADDR is. */
65d79d4b
SDJ
9964 break;
9965
9966 case OP_VAR_VALUE:
9967 /* Check whether the associated symbol is a constant.
4a64f543 9968
65d79d4b 9969 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
9970 possible that a buggy compiler could mark a variable as
9971 constant even when it is not, and TYPE_CONST would return
9972 true in this case, while SYMBOL_CLASS wouldn't.
9973
9974 We also have to check for function symbols because they
9975 are always constant. */
65d79d4b
SDJ
9976 {
9977 struct symbol *s = exp->elts[i + 2].symbol;
9978
9979 if (SYMBOL_CLASS (s) != LOC_BLOCK
9980 && SYMBOL_CLASS (s) != LOC_CONST
9981 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9982 return 0;
9983 break;
9984 }
9985
9986 /* The default action is to return 0 because we are using
9987 the optimistic approach here: If we don't know something,
9988 then it is not a constant. */
9989 default:
9990 return 0;
9991 }
9992 }
9993
9994 return 1;
9995}
9996
c1fc2657 9997/* Watchpoint destructor. */
3a5c3e22 9998
c1fc2657 9999watchpoint::~watchpoint ()
3a5c3e22 10000{
c1fc2657
SM
10001 xfree (this->exp_string);
10002 xfree (this->exp_string_reparse);
3a5c3e22
PA
10003}
10004
348d480f
PA
10005/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10006
10007static void
10008re_set_watchpoint (struct breakpoint *b)
10009{
3a5c3e22
PA
10010 struct watchpoint *w = (struct watchpoint *) b;
10011
348d480f
PA
10012 /* Watchpoint can be either on expression using entirely global
10013 variables, or it can be on local variables.
10014
10015 Watchpoints of the first kind are never auto-deleted, and even
10016 persist across program restarts. Since they can use variables
10017 from shared libraries, we need to reparse expression as libraries
10018 are loaded and unloaded.
10019
10020 Watchpoints on local variables can also change meaning as result
10021 of solib event. For example, if a watchpoint uses both a local
10022 and a global variables in expression, it's a local watchpoint,
10023 but unloading of a shared library will make the expression
10024 invalid. This is not a very common use case, but we still
10025 re-evaluate expression, to avoid surprises to the user.
10026
10027 Note that for local watchpoints, we re-evaluate it only if
10028 watchpoints frame id is still valid. If it's not, it means the
10029 watchpoint is out of scope and will be deleted soon. In fact,
10030 I'm not sure we'll ever be called in this case.
10031
10032 If a local watchpoint's frame id is still valid, then
3a5c3e22 10033 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10034
3a5c3e22
PA
10035 Don't do anything about disabled watchpoints, since they will be
10036 reevaluated again when enabled. */
10037 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10038}
10039
77b06cd7
TJB
10040/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10041
10042static int
10043insert_watchpoint (struct bp_location *bl)
10044{
3a5c3e22
PA
10045 struct watchpoint *w = (struct watchpoint *) bl->owner;
10046 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10047
10048 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10049 w->cond_exp.get ());
77b06cd7
TJB
10050}
10051
10052/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10053
10054static int
73971819 10055remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10056{
3a5c3e22
PA
10057 struct watchpoint *w = (struct watchpoint *) bl->owner;
10058 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10059
10060 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10061 w->cond_exp.get ());
e09342b5
TJB
10062}
10063
e09342b5 10064static int
348d480f 10065breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10066 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10067 const struct target_waitstatus *ws)
e09342b5 10068{
348d480f 10069 struct breakpoint *b = bl->owner;
3a5c3e22 10070 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10071
348d480f
PA
10072 /* Continuable hardware watchpoints are treated as non-existent if the
10073 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10074 some data address). Otherwise gdb won't stop on a break instruction
10075 in the code (not from a breakpoint) when a hardware watchpoint has
10076 been defined. Also skip watchpoints which we know did not trigger
10077 (did not match the data address). */
10078 if (is_hardware_watchpoint (b)
3a5c3e22 10079 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10080 return 0;
9c06b0b4 10081
348d480f 10082 return 1;
9c06b0b4
TJB
10083}
10084
348d480f
PA
10085static void
10086check_status_watchpoint (bpstat bs)
9c06b0b4 10087{
348d480f 10088 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10089
348d480f 10090 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10091}
10092
10093/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10094 hardware watchpoints. */
9c06b0b4
TJB
10095
10096static int
348d480f 10097resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10098{
3a5c3e22
PA
10099 struct watchpoint *w = (struct watchpoint *) bl->owner;
10100 int length = w->exact? 1 : bl->length;
348d480f
PA
10101
10102 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10103}
10104
10105/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10106 hardware watchpoints. */
9c06b0b4
TJB
10107
10108static int
348d480f 10109works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10110{
efa80663
PA
10111 /* Read and access watchpoints only work with hardware support. */
10112 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10113}
10114
9c06b0b4 10115static enum print_stop_action
348d480f 10116print_it_watchpoint (bpstat bs)
9c06b0b4 10117{
348d480f 10118 struct breakpoint *b;
348d480f 10119 enum print_stop_action result;
3a5c3e22 10120 struct watchpoint *w;
79a45e25 10121 struct ui_out *uiout = current_uiout;
348d480f
PA
10122
10123 gdb_assert (bs->bp_location_at != NULL);
10124
348d480f 10125 b = bs->breakpoint_at;
3a5c3e22 10126 w = (struct watchpoint *) b;
348d480f 10127
f303dbd6
PA
10128 annotate_watchpoint (b->number);
10129 maybe_print_thread_hit_breakpoint (uiout);
10130
d7e74731
PA
10131 string_file stb;
10132
76f9c9cf 10133 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10134 switch (b->type)
10135 {
348d480f 10136 case bp_watchpoint:
9c06b0b4 10137 case bp_hardware_watchpoint:
112e8700
SM
10138 if (uiout->is_mi_like_p ())
10139 uiout->field_string
10140 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10141 mention (b);
76f9c9cf 10142 tuple_emitter.emplace (uiout, "value");
112e8700 10143 uiout->text ("\nOld value = ");
850645cf 10144 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10145 uiout->field_stream ("old", stb);
10146 uiout->text ("\nNew value = ");
850645cf 10147 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10148 uiout->field_stream ("new", stb);
10149 uiout->text ("\n");
348d480f
PA
10150 /* More than one watchpoint may have been triggered. */
10151 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10152 break;
10153
10154 case bp_read_watchpoint:
112e8700
SM
10155 if (uiout->is_mi_like_p ())
10156 uiout->field_string
10157 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10158 mention (b);
76f9c9cf 10159 tuple_emitter.emplace (uiout, "value");
112e8700 10160 uiout->text ("\nValue = ");
850645cf 10161 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10162 uiout->field_stream ("value", stb);
10163 uiout->text ("\n");
348d480f 10164 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10165 break;
10166
10167 case bp_access_watchpoint:
348d480f
PA
10168 if (bs->old_val != NULL)
10169 {
112e8700
SM
10170 if (uiout->is_mi_like_p ())
10171 uiout->field_string
10172 ("reason",
348d480f
PA
10173 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10174 mention (b);
76f9c9cf 10175 tuple_emitter.emplace (uiout, "value");
112e8700 10176 uiout->text ("\nOld value = ");
850645cf 10177 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10178 uiout->field_stream ("old", stb);
10179 uiout->text ("\nNew value = ");
348d480f
PA
10180 }
10181 else
10182 {
10183 mention (b);
112e8700
SM
10184 if (uiout->is_mi_like_p ())
10185 uiout->field_string
10186 ("reason",
348d480f 10187 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10188 tuple_emitter.emplace (uiout, "value");
112e8700 10189 uiout->text ("\nValue = ");
348d480f 10190 }
850645cf 10191 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10192 uiout->field_stream ("new", stb);
10193 uiout->text ("\n");
348d480f 10194 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10195 break;
10196 default:
348d480f 10197 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10198 }
10199
348d480f
PA
10200 return result;
10201}
10202
10203/* Implement the "print_mention" breakpoint_ops method for hardware
10204 watchpoints. */
10205
10206static void
10207print_mention_watchpoint (struct breakpoint *b)
10208{
3a5c3e22 10209 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10210 struct ui_out *uiout = current_uiout;
46b9c129 10211 const char *tuple_name;
348d480f
PA
10212
10213 switch (b->type)
10214 {
10215 case bp_watchpoint:
112e8700 10216 uiout->text ("Watchpoint ");
46b9c129 10217 tuple_name = "wpt";
348d480f
PA
10218 break;
10219 case bp_hardware_watchpoint:
112e8700 10220 uiout->text ("Hardware watchpoint ");
46b9c129 10221 tuple_name = "wpt";
348d480f
PA
10222 break;
10223 case bp_read_watchpoint:
112e8700 10224 uiout->text ("Hardware read watchpoint ");
46b9c129 10225 tuple_name = "hw-rwpt";
348d480f
PA
10226 break;
10227 case bp_access_watchpoint:
112e8700 10228 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10229 tuple_name = "hw-awpt";
348d480f
PA
10230 break;
10231 default:
10232 internal_error (__FILE__, __LINE__,
10233 _("Invalid hardware watchpoint type."));
10234 }
10235
46b9c129 10236 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10237 uiout->field_int ("number", b->number);
10238 uiout->text (": ");
10239 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10240}
10241
10242/* Implement the "print_recreate" breakpoint_ops method for
10243 watchpoints. */
10244
10245static void
10246print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10247{
3a5c3e22
PA
10248 struct watchpoint *w = (struct watchpoint *) b;
10249
348d480f
PA
10250 switch (b->type)
10251 {
10252 case bp_watchpoint:
10253 case bp_hardware_watchpoint:
10254 fprintf_unfiltered (fp, "watch");
10255 break;
10256 case bp_read_watchpoint:
10257 fprintf_unfiltered (fp, "rwatch");
10258 break;
10259 case bp_access_watchpoint:
10260 fprintf_unfiltered (fp, "awatch");
10261 break;
10262 default:
10263 internal_error (__FILE__, __LINE__,
10264 _("Invalid watchpoint type."));
10265 }
10266
3a5c3e22 10267 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10268 print_recreate_thread (b, fp);
348d480f
PA
10269}
10270
427cd150
TT
10271/* Implement the "explains_signal" breakpoint_ops method for
10272 watchpoints. */
10273
47591c29 10274static int
427cd150
TT
10275explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10276{
10277 /* A software watchpoint cannot cause a signal other than
10278 GDB_SIGNAL_TRAP. */
10279 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10280 return 0;
427cd150 10281
47591c29 10282 return 1;
427cd150
TT
10283}
10284
348d480f
PA
10285/* The breakpoint_ops structure to be used in hardware watchpoints. */
10286
2060206e 10287static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10288
10289/* Implement the "insert" breakpoint_ops method for
10290 masked hardware watchpoints. */
10291
10292static int
10293insert_masked_watchpoint (struct bp_location *bl)
10294{
3a5c3e22
PA
10295 struct watchpoint *w = (struct watchpoint *) bl->owner;
10296
10297 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10298 bl->watchpoint_type);
10299}
10300
10301/* Implement the "remove" breakpoint_ops method for
10302 masked hardware watchpoints. */
10303
10304static int
73971819 10305remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10306{
3a5c3e22
PA
10307 struct watchpoint *w = (struct watchpoint *) bl->owner;
10308
10309 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10310 bl->watchpoint_type);
10311}
10312
10313/* Implement the "resources_needed" breakpoint_ops method for
10314 masked hardware watchpoints. */
10315
10316static int
10317resources_needed_masked_watchpoint (const struct bp_location *bl)
10318{
3a5c3e22
PA
10319 struct watchpoint *w = (struct watchpoint *) bl->owner;
10320
10321 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10322}
10323
10324/* Implement the "works_in_software_mode" breakpoint_ops method for
10325 masked hardware watchpoints. */
10326
10327static int
10328works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10329{
10330 return 0;
10331}
10332
10333/* Implement the "print_it" breakpoint_ops method for
10334 masked hardware watchpoints. */
10335
10336static enum print_stop_action
10337print_it_masked_watchpoint (bpstat bs)
10338{
10339 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10340 struct ui_out *uiout = current_uiout;
348d480f
PA
10341
10342 /* Masked watchpoints have only one location. */
10343 gdb_assert (b->loc && b->loc->next == NULL);
10344
f303dbd6
PA
10345 annotate_watchpoint (b->number);
10346 maybe_print_thread_hit_breakpoint (uiout);
10347
348d480f
PA
10348 switch (b->type)
10349 {
10350 case bp_hardware_watchpoint:
112e8700
SM
10351 if (uiout->is_mi_like_p ())
10352 uiout->field_string
10353 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10354 break;
10355
10356 case bp_read_watchpoint:
112e8700
SM
10357 if (uiout->is_mi_like_p ())
10358 uiout->field_string
10359 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10360 break;
10361
10362 case bp_access_watchpoint:
112e8700
SM
10363 if (uiout->is_mi_like_p ())
10364 uiout->field_string
10365 ("reason",
348d480f
PA
10366 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10367 break;
10368 default:
10369 internal_error (__FILE__, __LINE__,
10370 _("Invalid hardware watchpoint type."));
10371 }
10372
10373 mention (b);
112e8700 10374 uiout->text (_("\n\
9c06b0b4
TJB
10375Check the underlying instruction at PC for the memory\n\
10376address and value which triggered this watchpoint.\n"));
112e8700 10377 uiout->text ("\n");
9c06b0b4
TJB
10378
10379 /* More than one watchpoint may have been triggered. */
10380 return PRINT_UNKNOWN;
10381}
10382
10383/* Implement the "print_one_detail" breakpoint_ops method for
10384 masked hardware watchpoints. */
10385
10386static void
10387print_one_detail_masked_watchpoint (const struct breakpoint *b,
10388 struct ui_out *uiout)
10389{
3a5c3e22
PA
10390 struct watchpoint *w = (struct watchpoint *) b;
10391
9c06b0b4
TJB
10392 /* Masked watchpoints have only one location. */
10393 gdb_assert (b->loc && b->loc->next == NULL);
10394
112e8700
SM
10395 uiout->text ("\tmask ");
10396 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10397 uiout->text ("\n");
9c06b0b4
TJB
10398}
10399
10400/* Implement the "print_mention" breakpoint_ops method for
10401 masked hardware watchpoints. */
10402
10403static void
10404print_mention_masked_watchpoint (struct breakpoint *b)
10405{
3a5c3e22 10406 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10407 struct ui_out *uiout = current_uiout;
46b9c129 10408 const char *tuple_name;
9c06b0b4
TJB
10409
10410 switch (b->type)
10411 {
10412 case bp_hardware_watchpoint:
112e8700 10413 uiout->text ("Masked hardware watchpoint ");
46b9c129 10414 tuple_name = "wpt";
9c06b0b4
TJB
10415 break;
10416 case bp_read_watchpoint:
112e8700 10417 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10418 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10419 break;
10420 case bp_access_watchpoint:
112e8700 10421 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10422 tuple_name = "hw-awpt";
9c06b0b4
TJB
10423 break;
10424 default:
10425 internal_error (__FILE__, __LINE__,
10426 _("Invalid hardware watchpoint type."));
10427 }
10428
46b9c129 10429 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
112e8700
SM
10430 uiout->field_int ("number", b->number);
10431 uiout->text (": ");
10432 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10433}
10434
10435/* Implement the "print_recreate" breakpoint_ops method for
10436 masked hardware watchpoints. */
10437
10438static void
10439print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10440{
3a5c3e22 10441 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10442 char tmp[40];
10443
10444 switch (b->type)
10445 {
10446 case bp_hardware_watchpoint:
10447 fprintf_unfiltered (fp, "watch");
10448 break;
10449 case bp_read_watchpoint:
10450 fprintf_unfiltered (fp, "rwatch");
10451 break;
10452 case bp_access_watchpoint:
10453 fprintf_unfiltered (fp, "awatch");
10454 break;
10455 default:
10456 internal_error (__FILE__, __LINE__,
10457 _("Invalid hardware watchpoint type."));
10458 }
10459
3a5c3e22
PA
10460 sprintf_vma (tmp, w->hw_wp_mask);
10461 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
d9b3f62e 10462 print_recreate_thread (b, fp);
9c06b0b4
TJB
10463}
10464
10465/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10466
2060206e 10467static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10468
10469/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10470
10471static int
10472is_masked_watchpoint (const struct breakpoint *b)
10473{
10474 return b->ops == &masked_watchpoint_breakpoint_ops;
10475}
10476
53a5351d
JM
10477/* accessflag: hw_write: watch write,
10478 hw_read: watch read,
10479 hw_access: watch access (read or write) */
c906108c 10480static void
bbc13ae3 10481watch_command_1 (const char *arg, int accessflag, int from_tty,
84f4c1fe 10482 int just_location, int internal)
c906108c 10483{
c1fc2657 10484 struct breakpoint *scope_breakpoint = NULL;
270140bd 10485 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
b926417a 10486 struct value *result;
bb9d5f81 10487 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10488 const char *exp_start = NULL;
10489 const char *exp_end = NULL;
10490 const char *tok, *end_tok;
9c06b0b4 10491 int toklen = -1;
bbc13ae3
KS
10492 const char *cond_start = NULL;
10493 const char *cond_end = NULL;
c906108c 10494 enum bptype bp_type;
37e4754d 10495 int thread = -1;
0cf6dd15 10496 int pc = 0;
9c06b0b4
TJB
10497 /* Flag to indicate whether we are going to use masks for
10498 the hardware watchpoint. */
10499 int use_mask = 0;
10500 CORE_ADDR mask = 0;
c906108c 10501
37e4754d
LM
10502 /* Make sure that we actually have parameters to parse. */
10503 if (arg != NULL && arg[0] != '\0')
10504 {
bbc13ae3
KS
10505 const char *value_start;
10506
10507 exp_end = arg + strlen (arg);
37e4754d 10508
9c06b0b4
TJB
10509 /* Look for "parameter value" pairs at the end
10510 of the arguments string. */
bbc13ae3 10511 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10512 {
10513 /* Skip whitespace at the end of the argument list. */
10514 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10515 tok--;
10516
10517 /* Find the beginning of the last token.
10518 This is the value of the parameter. */
10519 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10520 tok--;
10521 value_start = tok + 1;
10522
10523 /* Skip whitespace. */
10524 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10525 tok--;
10526
10527 end_tok = tok;
10528
10529 /* Find the beginning of the second to last token.
10530 This is the parameter itself. */
10531 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10532 tok--;
10533 tok++;
10534 toklen = end_tok - tok + 1;
10535
61012eef 10536 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10537 {
5d5658a1 10538 struct thread_info *thr;
9c06b0b4
TJB
10539 /* At this point we've found a "thread" token, which means
10540 the user is trying to set a watchpoint that triggers
10541 only in a specific thread. */
5d5658a1 10542 const char *endp;
37e4754d 10543
9c06b0b4
TJB
10544 if (thread != -1)
10545 error(_("You can specify only one thread."));
37e4754d 10546
9c06b0b4 10547 /* Extract the thread ID from the next token. */
5d5658a1 10548 thr = parse_thread_id (value_start, &endp);
37e4754d 10549
5d5658a1 10550 /* Check if the user provided a valid thread ID. */
9c06b0b4 10551 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10552 invalid_thread_id_error (value_start);
9c06b0b4 10553
5d5658a1 10554 thread = thr->global_num;
9c06b0b4 10555 }
61012eef 10556 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10557 {
10558 /* We've found a "mask" token, which means the user wants to
10559 create a hardware watchpoint that is going to have the mask
10560 facility. */
10561 struct value *mask_value, *mark;
37e4754d 10562
9c06b0b4
TJB
10563 if (use_mask)
10564 error(_("You can specify only one mask."));
37e4754d 10565
9c06b0b4 10566 use_mask = just_location = 1;
37e4754d 10567
9c06b0b4
TJB
10568 mark = value_mark ();
10569 mask_value = parse_to_comma_and_eval (&value_start);
10570 mask = value_as_address (mask_value);
10571 value_free_to_mark (mark);
10572 }
10573 else
10574 /* We didn't recognize what we found. We should stop here. */
10575 break;
37e4754d 10576
9c06b0b4
TJB
10577 /* Truncate the string and get rid of the "parameter value" pair before
10578 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10579 exp_end = tok;
9c06b0b4 10580 }
37e4754d 10581 }
bbc13ae3
KS
10582 else
10583 exp_end = arg;
37e4754d 10584
bbc13ae3
KS
10585 /* Parse the rest of the arguments. From here on out, everything
10586 is in terms of a newly allocated string instead of the original
10587 ARG. */
81b1e71c
TT
10588 std::string expression (arg, exp_end - arg);
10589 exp_start = arg = expression.c_str ();
699bd4cf
TT
10590 innermost_block_tracker tracker;
10591 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
c906108c 10592 exp_end = arg;
fa8a61dc
TT
10593 /* Remove trailing whitespace from the expression before saving it.
10594 This makes the eventual display of the expression string a bit
10595 prettier. */
10596 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10597 --exp_end;
10598
65d79d4b 10599 /* Checking if the expression is not constant. */
4d01a485 10600 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10601 {
10602 int len;
10603
10604 len = exp_end - exp_start;
10605 while (len > 0 && isspace (exp_start[len - 1]))
10606 len--;
10607 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10608 }
10609
699bd4cf 10610 exp_valid_block = tracker.block ();
b926417a 10611 struct value *mark = value_mark ();
850645cf
TT
10612 struct value *val_as_value = nullptr;
10613 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10614 just_location);
06a64a0b 10615
850645cf 10616 if (val_as_value != NULL && just_location)
bb9d5f81 10617 {
850645cf
TT
10618 saved_bitpos = value_bitpos (val_as_value);
10619 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10620 }
10621
850645cf 10622 value_ref_ptr val;
06a64a0b
TT
10623 if (just_location)
10624 {
9c06b0b4
TJB
10625 int ret;
10626
06a64a0b 10627 exp_valid_block = NULL;
850645cf 10628 val = release_value (value_addr (result));
06a64a0b 10629 value_free_to_mark (mark);
9c06b0b4
TJB
10630
10631 if (use_mask)
10632 {
850645cf 10633 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10634 mask);
10635 if (ret == -1)
10636 error (_("This target does not support masked watchpoints."));
10637 else if (ret == -2)
10638 error (_("Invalid mask or memory region."));
10639 }
06a64a0b 10640 }
850645cf
TT
10641 else if (val_as_value != NULL)
10642 val = release_value (val_as_value);
c906108c 10643
f1735a53
TT
10644 tok = skip_spaces (arg);
10645 end_tok = skip_to_space (tok);
c906108c
SS
10646
10647 toklen = end_tok - tok;
10648 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10649 {
10650 tok = cond_start = end_tok + 1;
699bd4cf
TT
10651 innermost_block_tracker if_tracker;
10652 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
60e1c644
PA
10653
10654 /* The watchpoint expression may not be local, but the condition
10655 may still be. E.g.: `watch global if local > 0'. */
699bd4cf 10656 cond_exp_valid_block = if_tracker.block ();
60e1c644 10657
c906108c
SS
10658 cond_end = tok;
10659 }
10660 if (*tok)
8a3fe4f8 10661 error (_("Junk at end of command."));
c906108c 10662
441d7c93
PA
10663 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10664
10665 /* Save this because create_internal_breakpoint below invalidates
10666 'wp_frame'. */
10667 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10668
10669 /* If the expression is "local", then set up a "watchpoint scope"
10670 breakpoint at the point where we've left the scope of the watchpoint
10671 expression. Create the scope breakpoint before the watchpoint, so
10672 that we will encounter it first in bpstat_stop_status. */
441d7c93 10673 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10674 {
441d7c93
PA
10675 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10676
10677 if (frame_id_p (caller_frame_id))
edb3359d 10678 {
441d7c93
PA
10679 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10680 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10681
edb3359d 10682 scope_breakpoint
441d7c93 10683 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10684 bp_watchpoint_scope,
10685 &momentary_breakpoint_ops);
d983da9c 10686
441d7c93
PA
10687 /* create_internal_breakpoint could invalidate WP_FRAME. */
10688 wp_frame = NULL;
10689
edb3359d 10690 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10691
edb3359d
DJ
10692 /* Automatically delete the breakpoint when it hits. */
10693 scope_breakpoint->disposition = disp_del;
d983da9c 10694
edb3359d 10695 /* Only break in the proper frame (help with recursion). */
441d7c93 10696 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10697
edb3359d 10698 /* Set the address at which we will stop. */
441d7c93
PA
10699 scope_breakpoint->loc->gdbarch = caller_arch;
10700 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10701 scope_breakpoint->loc->address
a6d9a66e
UW
10702 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10703 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10704 scope_breakpoint->type);
10705 }
d983da9c
DJ
10706 }
10707
e8369a73
AB
10708 /* Now set up the breakpoint. We create all watchpoints as hardware
10709 watchpoints here even if hardware watchpoints are turned off, a call
10710 to update_watchpoint later in this function will cause the type to
10711 drop back to bp_watchpoint (software watchpoint) if required. */
10712
10713 if (accessflag == hw_read)
10714 bp_type = bp_read_watchpoint;
10715 else if (accessflag == hw_access)
10716 bp_type = bp_access_watchpoint;
10717 else
10718 bp_type = bp_hardware_watchpoint;
3a5c3e22 10719
b270e6f9 10720 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10721
348d480f 10722 if (use_mask)
b270e6f9 10723 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10724 &masked_watchpoint_breakpoint_ops);
348d480f 10725 else
b270e6f9 10726 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10727 &watchpoint_breakpoint_ops);
c1fc2657
SM
10728 w->thread = thread;
10729 w->disposition = disp_donttouch;
10730 w->pspace = current_program_space;
b22e99fd 10731 w->exp = std::move (exp);
3a5c3e22
PA
10732 w->exp_valid_block = exp_valid_block;
10733 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10734 if (just_location)
10735 {
850645cf
TT
10736 struct type *t = value_type (val.get ());
10737 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10738
43cc5389
TT
10739 w->exp_string_reparse
10740 = current_language->la_watch_location_expression (t, addr).release ();
06a64a0b 10741
3a5c3e22 10742 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10743 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10744 }
10745 else
3a5c3e22 10746 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10747
10748 if (use_mask)
10749 {
3a5c3e22 10750 w->hw_wp_mask = mask;
9c06b0b4
TJB
10751 }
10752 else
10753 {
3a5c3e22 10754 w->val = val;
bb9d5f81
PP
10755 w->val_bitpos = saved_bitpos;
10756 w->val_bitsize = saved_bitsize;
3a5c3e22 10757 w->val_valid = 1;
9c06b0b4 10758 }
77b06cd7 10759
c906108c 10760 if (cond_start)
c1fc2657 10761 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10762 else
c1fc2657 10763 w->cond_string = 0;
c5aa993b 10764
441d7c93 10765 if (frame_id_p (watchpoint_frame))
f6bc2008 10766 {
441d7c93 10767 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10768 w->watchpoint_thread = inferior_ptid;
f6bc2008 10769 }
c906108c 10770 else
f6bc2008 10771 {
3a5c3e22
PA
10772 w->watchpoint_frame = null_frame_id;
10773 w->watchpoint_thread = null_ptid;
f6bc2008 10774 }
c906108c 10775
d983da9c 10776 if (scope_breakpoint != NULL)
c906108c 10777 {
d983da9c
DJ
10778 /* The scope breakpoint is related to the watchpoint. We will
10779 need to act on them together. */
c1fc2657 10780 w->related_breakpoint = scope_breakpoint;
b270e6f9 10781 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10782 }
d983da9c 10783
06a64a0b
TT
10784 if (!just_location)
10785 value_free_to_mark (mark);
2d134ed3 10786
b270e6f9
TT
10787 /* Finally update the new watchpoint. This creates the locations
10788 that should be inserted. */
10789 update_watchpoint (w.get (), 1);
a9634178 10790
b270e6f9 10791 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10792}
10793
e09342b5 10794/* Return count of debug registers needed to watch the given expression.
e09342b5 10795 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10796
c906108c 10797static int
a6535de1 10798can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
c906108c
SS
10799{
10800 int found_memory_cnt = 0;
10801
10802 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10803 if (!can_use_hw_watchpoints)
c906108c 10804 return 0;
c5aa993b 10805
a6535de1
TT
10806 gdb_assert (!vals.empty ());
10807 struct value *head = vals[0].get ();
10808
5c44784c
JM
10809 /* Make sure that the value of the expression depends only upon
10810 memory contents, and values computed from them within GDB. If we
10811 find any register references or function calls, we can't use a
10812 hardware watchpoint.
10813
10814 The idea here is that evaluating an expression generates a series
10815 of values, one holding the value of every subexpression. (The
10816 expression a*b+c has five subexpressions: a, b, a*b, c, and
10817 a*b+c.) GDB's values hold almost enough information to establish
10818 the criteria given above --- they identify memory lvalues,
10819 register lvalues, computed values, etcetera. So we can evaluate
10820 the expression, and then scan the chain of values that leaves
10821 behind to decide whether we can detect any possible change to the
10822 expression's final value using only hardware watchpoints.
10823
10824 However, I don't think that the values returned by inferior
10825 function calls are special in any way. So this function may not
10826 notice that an expression involving an inferior function call
10827 can't be watched with hardware watchpoints. FIXME. */
a6535de1 10828 for (const value_ref_ptr &iter : vals)
c906108c 10829 {
a6535de1
TT
10830 struct value *v = iter.get ();
10831
5c44784c 10832 if (VALUE_LVAL (v) == lval_memory)
c906108c 10833 {
8464be76
DJ
10834 if (v != head && value_lazy (v))
10835 /* A lazy memory lvalue in the chain is one that GDB never
10836 needed to fetch; we either just used its address (e.g.,
10837 `a' in `a.b') or we never needed it at all (e.g., `a'
10838 in `a,b'). This doesn't apply to HEAD; if that is
10839 lazy then it was not readable, but watch it anyway. */
5c44784c 10840 ;
53a5351d 10841 else
5c44784c
JM
10842 {
10843 /* Ahh, memory we actually used! Check if we can cover
10844 it with hardware watchpoints. */
df407dfe 10845 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10846
10847 /* We only watch structs and arrays if user asked for it
10848 explicitly, never if they just happen to appear in a
10849 middle of some value chain. */
10850 if (v == head
10851 || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10852 && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10853 {
42ae5230 10854 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10855 int len;
10856 int num_regs;
10857
a9634178 10858 len = (target_exact_watchpoints
e09342b5
TJB
10859 && is_scalar_type_recursive (vtype))?
10860 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 10861
e09342b5
TJB
10862 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10863 if (!num_regs)
2e70b7b9
MS
10864 return 0;
10865 else
e09342b5 10866 found_memory_cnt += num_regs;
2e70b7b9 10867 }
5c44784c 10868 }
c5aa993b 10869 }
5086187c
AC
10870 else if (VALUE_LVAL (v) != not_lval
10871 && deprecated_value_modifiable (v) == 0)
38b6c3b3 10872 return 0; /* These are values from the history (e.g., $1). */
5086187c 10873 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 10874 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
10875 }
10876
10877 /* The expression itself looks suitable for using a hardware
10878 watchpoint, but give the target machine a chance to reject it. */
10879 return found_memory_cnt;
10880}
10881
8b93c638 10882void
f2fc3015 10883watch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10884{
84f4c1fe 10885 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
10886}
10887
06a64a0b
TT
10888/* A helper function that looks for the "-location" argument and then
10889 calls watch_command_1. */
10890
10891static void
0b39b52e 10892watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b
TT
10893{
10894 int just_location = 0;
10895
10896 if (arg
10897 && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10898 || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10899 {
e9cafbcc 10900 arg = skip_spaces (arg);
06a64a0b
TT
10901 just_location = 1;
10902 }
10903
84f4c1fe 10904 watch_command_1 (arg, accessflag, from_tty, just_location, 0);
8b93c638 10905}
8926118c 10906
c5aa993b 10907static void
0b39b52e 10908watch_command (const char *arg, int from_tty)
c906108c 10909{
06a64a0b 10910 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
10911}
10912
8b93c638 10913void
f2fc3015 10914rwatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10915{
84f4c1fe 10916 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 10917}
8926118c 10918
c5aa993b 10919static void
0b39b52e 10920rwatch_command (const char *arg, int from_tty)
c906108c 10921{
06a64a0b 10922 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
10923}
10924
8b93c638 10925void
f2fc3015 10926awatch_command_wrapper (const char *arg, int from_tty, int internal)
8b93c638 10927{
84f4c1fe 10928 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 10929}
8926118c 10930
c5aa993b 10931static void
0b39b52e 10932awatch_command (const char *arg, int from_tty)
c906108c 10933{
06a64a0b 10934 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 10935}
c906108c 10936\f
c5aa993b 10937
cfc31633
PA
10938/* Data for the FSM that manages the until(location)/advance commands
10939 in infcmd.c. Here because it uses the mechanisms of
10940 breakpoints. */
c906108c 10941
46e3ed7f 10942struct until_break_fsm : public thread_fsm
bfec99b2 10943{
46e3ed7f 10944 /* The thread that was current when the command was executed. */
cfc31633
PA
10945 int thread;
10946
10947 /* The breakpoint set at the destination location. */
46e3ed7f 10948 breakpoint_up location_breakpoint;
cfc31633
PA
10949
10950 /* Breakpoint set at the return address in the caller frame. May be
10951 NULL. */
46e3ed7f 10952 breakpoint_up caller_breakpoint;
cfc31633 10953
46e3ed7f
TT
10954 until_break_fsm (struct interp *cmd_interp, int thread,
10955 breakpoint_up &&location_breakpoint,
10956 breakpoint_up &&caller_breakpoint)
10957 : thread_fsm (cmd_interp),
10958 thread (thread),
10959 location_breakpoint (std::move (location_breakpoint)),
10960 caller_breakpoint (std::move (caller_breakpoint))
10961 {
10962 }
cfc31633 10963
46e3ed7f
TT
10964 void clean_up (struct thread_info *thread) override;
10965 bool should_stop (struct thread_info *thread) override;
10966 enum async_reply_reason do_async_reply_reason () override;
cfc31633
PA
10967};
10968
cfc31633
PA
10969/* Implementation of the 'should_stop' FSM method for the
10970 until(location)/advance commands. */
10971
46e3ed7f
TT
10972bool
10973until_break_fsm::should_stop (struct thread_info *tp)
cfc31633 10974{
cfc31633 10975 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
46e3ed7f
TT
10976 location_breakpoint.get ()) != NULL
10977 || (caller_breakpoint != NULL
cfc31633 10978 && bpstat_find_breakpoint (tp->control.stop_bpstat,
46e3ed7f
TT
10979 caller_breakpoint.get ()) != NULL))
10980 set_finished ();
cfc31633 10981
46e3ed7f 10982 return true;
cfc31633
PA
10983}
10984
10985/* Implementation of the 'clean_up' FSM method for the
10986 until(location)/advance commands. */
10987
46e3ed7f
TT
10988void
10989until_break_fsm::clean_up (struct thread_info *)
43ff13b4 10990{
cfc31633 10991 /* Clean up our temporary breakpoints. */
46e3ed7f
TT
10992 location_breakpoint.reset ();
10993 caller_breakpoint.reset ();
10994 delete_longjmp_breakpoint (thread);
cfc31633
PA
10995}
10996
10997/* Implementation of the 'async_reply_reason' FSM method for the
10998 until(location)/advance commands. */
10999
46e3ed7f
TT
11000enum async_reply_reason
11001until_break_fsm::do_async_reply_reason ()
cfc31633
PA
11002{
11003 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11004}
11005
c906108c 11006void
f2fc3015 11007until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11008{
8556afb4
PA
11009 struct frame_info *frame;
11010 struct gdbarch *frame_gdbarch;
11011 struct frame_id stack_frame_id;
11012 struct frame_id caller_frame_id;
186c406b
TT
11013 int thread;
11014 struct thread_info *tp;
c906108c 11015
70509625 11016 clear_proceed_status (0);
c906108c
SS
11017
11018 /* Set a breakpoint where the user wants it and at return from
4a64f543 11019 this function. */
c5aa993b 11020
ffc2605c 11021 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11022
6c5b2ebe
PA
11023 std::vector<symtab_and_line> sals
11024 = (last_displayed_sal_is_valid ()
11025 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11026 get_last_displayed_symtab (),
11027 get_last_displayed_line ())
11028 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11029 NULL, (struct symtab *) NULL, 0));
c5aa993b 11030
6c5b2ebe 11031 if (sals.size () != 1)
8a3fe4f8 11032 error (_("Couldn't get information on specified line."));
c5aa993b 11033
6c5b2ebe 11034 symtab_and_line &sal = sals[0];
c5aa993b 11035
c906108c 11036 if (*arg)
8a3fe4f8 11037 error (_("Junk at end of arguments."));
c5aa993b 11038
c906108c 11039 resolve_sal_pc (&sal);
c5aa993b 11040
186c406b 11041 tp = inferior_thread ();
5d5658a1 11042 thread = tp->global_num;
186c406b 11043
8556afb4
PA
11044 /* Note linespec handling above invalidates the frame chain.
11045 Installing a breakpoint also invalidates the frame chain (as it
11046 may need to switch threads), so do any frame handling before
11047 that. */
11048
11049 frame = get_selected_frame (NULL);
11050 frame_gdbarch = get_frame_arch (frame);
11051 stack_frame_id = get_stack_frame_id (frame);
11052 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11053
ae66c1fc
EZ
11054 /* Keep within the current frame, or in frames called by the current
11055 one. */
edb3359d 11056
454dafbd 11057 breakpoint_up caller_breakpoint;
5419bdae
TT
11058
11059 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11060
883bc8d1 11061 if (frame_id_p (caller_frame_id))
c906108c 11062 {
883bc8d1 11063 struct symtab_and_line sal2;
cfc31633 11064 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11065
11066 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11067 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633
PA
11068 caller_gdbarch = frame_unwind_caller_arch (frame);
11069 caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11070 sal2,
11071 caller_frame_id,
11072 bp_until);
186c406b 11073
883bc8d1 11074 set_longjmp_breakpoint (tp, caller_frame_id);
5419bdae 11075 lj_deleter.emplace (thread);
c906108c 11076 }
c5aa993b 11077
c70a6932
JK
11078 /* set_momentary_breakpoint could invalidate FRAME. */
11079 frame = NULL;
11080
454dafbd 11081 breakpoint_up location_breakpoint;
883bc8d1
PA
11082 if (anywhere)
11083 /* If the user told us to continue until a specified location,
11084 we don't specify a frame at which we need to stop. */
cfc31633
PA
11085 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11086 null_frame_id, bp_until);
883bc8d1
PA
11087 else
11088 /* Otherwise, specify the selected frame, because we want to stop
11089 only at the very same frame. */
cfc31633
PA
11090 location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11091 stack_frame_id, bp_until);
883bc8d1 11092
46e3ed7f
TT
11093 tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11094 std::move (location_breakpoint),
11095 std::move (caller_breakpoint));
f107f563 11096
5419bdae
TT
11097 if (lj_deleter)
11098 lj_deleter->release ();
f107f563 11099
cfc31633 11100 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11101}
ae66c1fc 11102
c906108c
SS
11103/* This function attempts to parse an optional "if <cond>" clause
11104 from the arg string. If one is not found, it returns NULL.
c5aa993b 11105
c906108c
SS
11106 Else, it returns a pointer to the condition string. (It does not
11107 attempt to evaluate the string against a particular block.) And,
11108 it updates arg to point to the first character following the parsed
4a64f543 11109 if clause in the arg string. */
53a5351d 11110
63160a43
PA
11111const char *
11112ep_parse_optional_if_clause (const char **arg)
c906108c 11113{
63160a43 11114 const char *cond_string;
c5aa993b
JM
11115
11116 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11117 return NULL;
c5aa993b 11118
4a64f543 11119 /* Skip the "if" keyword. */
c906108c 11120 (*arg) += 2;
c5aa993b 11121
c906108c 11122 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11123 condition string. */
f1735a53 11124 *arg = skip_spaces (*arg);
c906108c 11125 cond_string = *arg;
c5aa993b 11126
4a64f543
MS
11127 /* Assume that the condition occupies the remainder of the arg
11128 string. */
c906108c 11129 (*arg) += strlen (cond_string);
c5aa993b 11130
c906108c
SS
11131 return cond_string;
11132}
c5aa993b 11133
c906108c
SS
11134/* Commands to deal with catching events, such as signals, exceptions,
11135 process start/exit, etc. */
c5aa993b
JM
11136
11137typedef enum
11138{
44feb3ce
TT
11139 catch_fork_temporary, catch_vfork_temporary,
11140 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11141}
11142catch_fork_kind;
11143
c906108c 11144static void
eb4c3f4a 11145catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11146 struct cmd_list_element *command)
c906108c 11147{
a6d9a66e 11148 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11149 const char *cond_string = NULL;
44feb3ce
TT
11150 catch_fork_kind fork_kind;
11151 int tempflag;
11152
11153 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11154 tempflag = (fork_kind == catch_fork_temporary
11155 || fork_kind == catch_vfork_temporary);
c5aa993b 11156
44feb3ce
TT
11157 if (!arg)
11158 arg = "";
f1735a53 11159 arg = skip_spaces (arg);
c5aa993b 11160
c906108c 11161 /* The allowed syntax is:
c5aa993b
JM
11162 catch [v]fork
11163 catch [v]fork if <cond>
11164
4a64f543 11165 First, check if there's an if clause. */
c906108c 11166 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11167
c906108c 11168 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11169 error (_("Junk at end of arguments."));
c5aa993b 11170
c906108c 11171 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11172 and enable reporting of such events. */
c5aa993b
JM
11173 switch (fork_kind)
11174 {
44feb3ce
TT
11175 case catch_fork_temporary:
11176 case catch_fork_permanent:
a6d9a66e 11177 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11178 &catch_fork_breakpoint_ops);
c906108c 11179 break;
44feb3ce
TT
11180 case catch_vfork_temporary:
11181 case catch_vfork_permanent:
a6d9a66e 11182 create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
ce78b96d 11183 &catch_vfork_breakpoint_ops);
c906108c 11184 break;
c5aa993b 11185 default:
8a3fe4f8 11186 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11187 break;
c5aa993b 11188 }
c906108c
SS
11189}
11190
11191static void
eb4c3f4a 11192catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11193 struct cmd_list_element *command)
c906108c 11194{
a6d9a66e 11195 struct gdbarch *gdbarch = get_current_arch ();
44feb3ce 11196 int tempflag;
63160a43 11197 const char *cond_string = NULL;
c906108c 11198
44feb3ce
TT
11199 tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11200
11201 if (!arg)
11202 arg = "";
f1735a53 11203 arg = skip_spaces (arg);
c906108c
SS
11204
11205 /* The allowed syntax is:
c5aa993b
JM
11206 catch exec
11207 catch exec if <cond>
c906108c 11208
4a64f543 11209 First, check if there's an if clause. */
c906108c
SS
11210 cond_string = ep_parse_optional_if_clause (&arg);
11211
11212 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11213 error (_("Junk at end of arguments."));
c906108c 11214
b270e6f9
TT
11215 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11216 init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
b4d90040
PA
11217 &catch_exec_breakpoint_ops);
11218 c->exec_pathname = NULL;
11219
b270e6f9 11220 install_breakpoint (0, std::move (c), 1);
c906108c 11221}
c5aa993b 11222
9ac4176b 11223void
28010a5d
PA
11224init_ada_exception_breakpoint (struct breakpoint *b,
11225 struct gdbarch *gdbarch,
11226 struct symtab_and_line sal,
f2fc3015 11227 const char *addr_string,
c0a91b2b 11228 const struct breakpoint_ops *ops,
28010a5d 11229 int tempflag,
349774ef 11230 int enabled,
28010a5d 11231 int from_tty)
f7f9143b 11232{
f7f9143b
JB
11233 if (from_tty)
11234 {
5af949e3
UW
11235 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11236 if (!loc_gdbarch)
11237 loc_gdbarch = gdbarch;
11238
6c95b8df
PA
11239 describe_other_breakpoints (loc_gdbarch,
11240 sal.pspace, sal.pc, sal.section, -1);
f7f9143b
JB
11241 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11242 version for exception catchpoints, because two catchpoints
11243 used for different exception names will use the same address.
11244 In this case, a "breakpoint ... also set at..." warning is
4a64f543 11245 unproductive. Besides, the warning phrasing is also a bit
e5dd4106 11246 inappropriate, we should use the word catchpoint, and tell
f7f9143b
JB
11247 the user what type of catchpoint it is. The above is good
11248 enough for now, though. */
11249 }
11250
28010a5d 11251 init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
f7f9143b 11252
349774ef 11253 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11254 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11255 b->location = string_to_event_location (&addr_string,
11256 language_def (language_ada));
f7f9143b 11257 b->language = language_ada;
f7f9143b
JB
11258}
11259
c906108c 11260static void
981a3fb3 11261catch_command (const char *arg, int from_tty)
c906108c 11262{
44feb3ce 11263 error (_("Catch requires an event name."));
c906108c
SS
11264}
11265\f
11266
11267static void
981a3fb3 11268tcatch_command (const char *arg, int from_tty)
c906108c 11269{
44feb3ce 11270 error (_("Catch requires an event name."));
c906108c
SS
11271}
11272
81b1e71c 11273/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11274
11275static int
81b1e71c 11276compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11277{
81b1e71c
TT
11278 uintptr_t ua = (uintptr_t) a;
11279 uintptr_t ub = (uintptr_t) b;
8a2c437b 11280
81b1e71c 11281 if (a->number < b->number)
8a2c437b 11282 return -1;
81b1e71c 11283 else if (a->number > b->number)
8a2c437b
TT
11284 return 1;
11285
11286 /* Now sort by address, in case we see, e..g, two breakpoints with
11287 the number 0. */
11288 if (ua < ub)
11289 return -1;
94b0e70d 11290 return ua > ub ? 1 : 0;
8a2c437b
TT
11291}
11292
80f8a6eb 11293/* Delete breakpoints by address or line. */
c906108c
SS
11294
11295static void
0b39b52e 11296clear_command (const char *arg, int from_tty)
c906108c 11297{
81b1e71c 11298 struct breakpoint *b;
c906108c 11299 int default_match;
c906108c 11300
6c5b2ebe
PA
11301 std::vector<symtab_and_line> decoded_sals;
11302 symtab_and_line last_sal;
11303 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11304 if (arg)
11305 {
6c5b2ebe
PA
11306 decoded_sals
11307 = decode_line_with_current_source (arg,
11308 (DECODE_LINE_FUNFIRSTLINE
11309 | DECODE_LINE_LIST_MODE));
c906108c 11310 default_match = 0;
6c5b2ebe 11311 sals = decoded_sals;
c906108c
SS
11312 }
11313 else
11314 {
1bfeeb0f
JL
11315 /* Set sal's line, symtab, pc, and pspace to the values
11316 corresponding to the last call to print_frame_info. If the
11317 codepoint is not valid, this will set all the fields to 0. */
51abb421 11318 last_sal = get_last_displayed_sal ();
6c5b2ebe 11319 if (last_sal.symtab == 0)
8a3fe4f8 11320 error (_("No source file specified."));
c906108c 11321
c906108c 11322 default_match = 1;
6c5b2ebe 11323 sals = last_sal;
c906108c
SS
11324 }
11325
4a64f543
MS
11326 /* We don't call resolve_sal_pc here. That's not as bad as it
11327 seems, because all existing breakpoints typically have both
11328 file/line and pc set. So, if clear is given file/line, we can
11329 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11330
11331 We only support clearing given the address explicitly
11332 present in breakpoint table. Say, we've set breakpoint
4a64f543 11333 at file:line. There were several PC values for that file:line,
ed0616c6 11334 due to optimization, all in one block.
4a64f543
MS
11335
11336 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11337 PC corresponding to the same file:line, the breakpoint won't
11338 be cleared. We probably can still clear the breakpoint, but
11339 since the other PC value is never presented to user, user
11340 can only find it by guessing, and it does not seem important
11341 to support that. */
11342
4a64f543
MS
11343 /* For each line spec given, delete bps which correspond to it. Do
11344 it in two passes, solely to preserve the current behavior that
11345 from_tty is forced true if we delete more than one
11346 breakpoint. */
c906108c 11347
81b1e71c 11348 std::vector<struct breakpoint *> found;
6c5b2ebe 11349 for (const auto &sal : sals)
c906108c 11350 {
05cba821
JK
11351 const char *sal_fullname;
11352
c906108c 11353 /* If exact pc given, clear bpts at that pc.
c5aa993b
JM
11354 If line given (pc == 0), clear all bpts on specified line.
11355 If defaulting, clear all bpts on default line
c906108c 11356 or at default pc.
c5aa993b
JM
11357
11358 defaulting sal.pc != 0 tests to do
11359
11360 0 1 pc
11361 1 1 pc _and_ line
11362 0 0 line
11363 1 0 <can't happen> */
c906108c 11364
05cba821
JK
11365 sal_fullname = (sal.symtab == NULL
11366 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11367
4a64f543 11368 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11369 ALL_BREAKPOINTS (b)
c5aa993b 11370 {
0d381245 11371 int match = 0;
4a64f543 11372 /* Are we going to delete b? */
cc60f2e3 11373 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11374 {
11375 struct bp_location *loc = b->loc;
11376 for (; loc; loc = loc->next)
11377 {
f8eba3c6
TT
11378 /* If the user specified file:line, don't allow a PC
11379 match. This matches historical gdb behavior. */
11380 int pc_match = (!sal.explicit_line
11381 && sal.pc
11382 && (loc->pspace == sal.pspace)
11383 && (loc->address == sal.pc)
11384 && (!section_is_overlay (loc->section)
11385 || loc->section == sal.section));
4aac40c8
TT
11386 int line_match = 0;
11387
11388 if ((default_match || sal.explicit_line)
2f202fde 11389 && loc->symtab != NULL
05cba821 11390 && sal_fullname != NULL
4aac40c8 11391 && sal.pspace == loc->pspace
05cba821
JK
11392 && loc->line_number == sal.line
11393 && filename_cmp (symtab_to_fullname (loc->symtab),
11394 sal_fullname) == 0)
11395 line_match = 1;
4aac40c8 11396
0d381245
VP
11397 if (pc_match || line_match)
11398 {
11399 match = 1;
11400 break;
11401 }
11402 }
11403 }
11404
11405 if (match)
81b1e71c 11406 found.push_back (b);
c906108c 11407 }
80f8a6eb 11408 }
8a2c437b 11409
80f8a6eb 11410 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11411 if (found.empty ())
80f8a6eb
MS
11412 {
11413 if (arg)
8a3fe4f8 11414 error (_("No breakpoint at %s."), arg);
80f8a6eb 11415 else
8a3fe4f8 11416 error (_("No breakpoint at this line."));
80f8a6eb 11417 }
c906108c 11418
8a2c437b 11419 /* Remove duplicates from the vec. */
81b1e71c 11420 std::sort (found.begin (), found.end (),
b926417a 11421 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11422 {
b926417a 11423 return compare_breakpoints (bp_a, bp_b) < 0;
81b1e71c
TT
11424 });
11425 found.erase (std::unique (found.begin (), found.end (),
b926417a 11426 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11427 {
b926417a 11428 return compare_breakpoints (bp_a, bp_b) == 0;
81b1e71c
TT
11429 }),
11430 found.end ());
8a2c437b 11431
81b1e71c 11432 if (found.size () > 1)
4a64f543 11433 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11434 if (from_tty)
a3f17187 11435 {
81b1e71c 11436 if (found.size () == 1)
a3f17187
AC
11437 printf_unfiltered (_("Deleted breakpoint "));
11438 else
11439 printf_unfiltered (_("Deleted breakpoints "));
11440 }
d6e956e5 11441
81b1e71c 11442 for (breakpoint *iter : found)
80f8a6eb 11443 {
c5aa993b 11444 if (from_tty)
81b1e71c
TT
11445 printf_unfiltered ("%d ", iter->number);
11446 delete_breakpoint (iter);
c906108c 11447 }
80f8a6eb
MS
11448 if (from_tty)
11449 putchar_unfiltered ('\n');
c906108c
SS
11450}
11451\f
11452/* Delete breakpoint in BS if they are `delete' breakpoints and
11453 all breakpoints that are marked for deletion, whether hit or not.
11454 This is called after any breakpoint is hit, or after errors. */
11455
11456void
fba45db2 11457breakpoint_auto_delete (bpstat bs)
c906108c 11458{
35df4500 11459 struct breakpoint *b, *b_tmp;
c906108c
SS
11460
11461 for (; bs; bs = bs->next)
f431efe5
PA
11462 if (bs->breakpoint_at
11463 && bs->breakpoint_at->disposition == disp_del
c906108c 11464 && bs->stop)
f431efe5 11465 delete_breakpoint (bs->breakpoint_at);
c906108c 11466
35df4500 11467 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11468 {
b5de0fa7 11469 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11470 delete_breakpoint (b);
11471 }
c906108c
SS
11472}
11473
4a64f543
MS
11474/* A comparison function for bp_location AP and BP being interfaced to
11475 qsort. Sort elements primarily by their ADDRESS (no matter what
11476 does breakpoint_address_is_meaningful say for its OWNER),
1a853c52 11477 secondarily by ordering first permanent elements and
4a64f543 11478 terciarily just ensuring the array is sorted stable way despite
e5dd4106 11479 qsort being an unstable algorithm. */
876fa593
JK
11480
11481static int
f5336ca5 11482bp_locations_compare (const void *ap, const void *bp)
876fa593 11483{
9a3c8263
SM
11484 const struct bp_location *a = *(const struct bp_location **) ap;
11485 const struct bp_location *b = *(const struct bp_location **) bp;
876fa593
JK
11486
11487 if (a->address != b->address)
11488 return (a->address > b->address) - (a->address < b->address);
11489
dea2aa5f
LM
11490 /* Sort locations at the same address by their pspace number, keeping
11491 locations of the same inferior (in a multi-inferior environment)
11492 grouped. */
11493
11494 if (a->pspace->num != b->pspace->num)
11495 return ((a->pspace->num > b->pspace->num)
11496 - (a->pspace->num < b->pspace->num));
11497
876fa593 11498 /* Sort permanent breakpoints first. */
1a853c52
PA
11499 if (a->permanent != b->permanent)
11500 return (a->permanent < b->permanent) - (a->permanent > b->permanent);
876fa593 11501
c56a97f9
JK
11502 /* Make the internal GDB representation stable across GDB runs
11503 where A and B memory inside GDB can differ. Breakpoint locations of
11504 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11505
11506 if (a->owner->number != b->owner->number)
c56a97f9
JK
11507 return ((a->owner->number > b->owner->number)
11508 - (a->owner->number < b->owner->number));
876fa593
JK
11509
11510 return (a > b) - (a < b);
11511}
11512
f5336ca5
PA
11513/* Set bp_locations_placed_address_before_address_max and
11514 bp_locations_shadow_len_after_address_max according to the current
11515 content of the bp_locations array. */
f7545552
TT
11516
11517static void
f5336ca5 11518bp_locations_target_extensions_update (void)
f7545552 11519{
876fa593
JK
11520 struct bp_location *bl, **blp_tmp;
11521
f5336ca5
PA
11522 bp_locations_placed_address_before_address_max = 0;
11523 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11524
11525 ALL_BP_LOCATIONS (bl, blp_tmp)
11526 {
11527 CORE_ADDR start, end, addr;
11528
11529 if (!bp_location_has_shadow (bl))
11530 continue;
11531
11532 start = bl->target_info.placed_address;
11533 end = start + bl->target_info.shadow_len;
11534
11535 gdb_assert (bl->address >= start);
11536 addr = bl->address - start;
f5336ca5
PA
11537 if (addr > bp_locations_placed_address_before_address_max)
11538 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11539
11540 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11541
11542 gdb_assert (bl->address < end);
11543 addr = end - bl->address;
f5336ca5
PA
11544 if (addr > bp_locations_shadow_len_after_address_max)
11545 bp_locations_shadow_len_after_address_max = addr;
876fa593 11546 }
f7545552
TT
11547}
11548
1e4d1764
YQ
11549/* Download tracepoint locations if they haven't been. */
11550
11551static void
11552download_tracepoint_locations (void)
11553{
7ed2c994 11554 struct breakpoint *b;
dd2e65cc 11555 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11556
5ed8105e 11557 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11558
7ed2c994 11559 ALL_TRACEPOINTS (b)
1e4d1764 11560 {
7ed2c994 11561 struct bp_location *bl;
1e4d1764 11562 struct tracepoint *t;
f2a8bc8a 11563 int bp_location_downloaded = 0;
1e4d1764 11564
7ed2c994 11565 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11566 ? !may_insert_fast_tracepoints
11567 : !may_insert_tracepoints))
11568 continue;
11569
dd2e65cc
YQ
11570 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11571 {
11572 if (target_can_download_tracepoint ())
11573 can_download_tracepoint = TRIBOOL_TRUE;
11574 else
11575 can_download_tracepoint = TRIBOOL_FALSE;
11576 }
11577
11578 if (can_download_tracepoint == TRIBOOL_FALSE)
11579 break;
11580
7ed2c994
YQ
11581 for (bl = b->loc; bl; bl = bl->next)
11582 {
11583 /* In tracepoint, locations are _never_ duplicated, so
11584 should_be_inserted is equivalent to
11585 unduplicated_should_be_inserted. */
11586 if (!should_be_inserted (bl) || bl->inserted)
11587 continue;
1e4d1764 11588
7ed2c994 11589 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11590
7ed2c994 11591 target_download_tracepoint (bl);
1e4d1764 11592
7ed2c994 11593 bl->inserted = 1;
f2a8bc8a 11594 bp_location_downloaded = 1;
7ed2c994
YQ
11595 }
11596 t = (struct tracepoint *) b;
11597 t->number_on_target = b->number;
f2a8bc8a 11598 if (bp_location_downloaded)
76727919 11599 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 11600 }
1e4d1764
YQ
11601}
11602
934709f0
PW
11603/* Swap the insertion/duplication state between two locations. */
11604
11605static void
11606swap_insertion (struct bp_location *left, struct bp_location *right)
11607{
11608 const int left_inserted = left->inserted;
11609 const int left_duplicate = left->duplicate;
b775012e 11610 const int left_needs_update = left->needs_update;
934709f0
PW
11611 const struct bp_target_info left_target_info = left->target_info;
11612
1e4d1764
YQ
11613 /* Locations of tracepoints can never be duplicated. */
11614 if (is_tracepoint (left->owner))
11615 gdb_assert (!left->duplicate);
11616 if (is_tracepoint (right->owner))
11617 gdb_assert (!right->duplicate);
11618
934709f0
PW
11619 left->inserted = right->inserted;
11620 left->duplicate = right->duplicate;
b775012e 11621 left->needs_update = right->needs_update;
934709f0
PW
11622 left->target_info = right->target_info;
11623 right->inserted = left_inserted;
11624 right->duplicate = left_duplicate;
b775012e 11625 right->needs_update = left_needs_update;
934709f0
PW
11626 right->target_info = left_target_info;
11627}
11628
b775012e
LM
11629/* Force the re-insertion of the locations at ADDRESS. This is called
11630 once a new/deleted/modified duplicate location is found and we are evaluating
11631 conditions on the target's side. Such conditions need to be updated on
11632 the target. */
11633
11634static void
11635force_breakpoint_reinsertion (struct bp_location *bl)
11636{
11637 struct bp_location **locp = NULL, **loc2p;
11638 struct bp_location *loc;
11639 CORE_ADDR address = 0;
11640 int pspace_num;
11641
11642 address = bl->address;
11643 pspace_num = bl->pspace->num;
11644
11645 /* This is only meaningful if the target is
11646 evaluating conditions and if the user has
11647 opted for condition evaluation on the target's
11648 side. */
11649 if (gdb_evaluates_breakpoint_condition_p ()
11650 || !target_supports_evaluation_of_breakpoint_conditions ())
11651 return;
11652
11653 /* Flag all breakpoint locations with this address and
11654 the same program space as the location
11655 as "its condition has changed". We need to
11656 update the conditions on the target's side. */
11657 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11658 {
11659 loc = *loc2p;
11660
11661 if (!is_breakpoint (loc->owner)
11662 || pspace_num != loc->pspace->num)
11663 continue;
11664
11665 /* Flag the location appropriately. We use a different state to
11666 let everyone know that we already updated the set of locations
11667 with addr bl->address and program space bl->pspace. This is so
11668 we don't have to keep calling these functions just to mark locations
11669 that have already been marked. */
11670 loc->condition_changed = condition_updated;
11671
11672 /* Free the agent expression bytecode as well. We will compute
11673 it later on. */
833177a4 11674 loc->cond_bytecode.reset ();
b775012e
LM
11675 }
11676}
44702360
PA
11677/* Called whether new breakpoints are created, or existing breakpoints
11678 deleted, to update the global location list and recompute which
11679 locations are duplicate of which.
b775012e 11680
04086b45
PA
11681 The INSERT_MODE flag determines whether locations may not, may, or
11682 shall be inserted now. See 'enum ugll_insert_mode' for more
11683 info. */
b60e7edf 11684
0d381245 11685static void
44702360 11686update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11687{
74960c60 11688 struct breakpoint *b;
876fa593 11689 struct bp_location **locp, *loc;
b775012e
LM
11690 /* Last breakpoint location address that was marked for update. */
11691 CORE_ADDR last_addr = 0;
11692 /* Last breakpoint location program space that was marked for update. */
11693 int last_pspace_num = -1;
f7545552 11694
2d134ed3
PA
11695 /* Used in the duplicates detection below. When iterating over all
11696 bp_locations, points to the first bp_location of a given address.
11697 Breakpoints and watchpoints of different types are never
11698 duplicates of each other. Keep one pointer for each type of
11699 breakpoint/watchpoint, so we only need to loop over all locations
11700 once. */
11701 struct bp_location *bp_loc_first; /* breakpoint */
11702 struct bp_location *wp_loc_first; /* hardware watchpoint */
11703 struct bp_location *awp_loc_first; /* access watchpoint */
11704 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11705
f5336ca5
PA
11706 /* Saved former bp_locations array which we compare against the newly
11707 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11708 struct bp_location **old_locp;
f5336ca5 11709 unsigned old_locations_count;
81b1e71c 11710 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11711
f5336ca5
PA
11712 old_locations_count = bp_locations_count;
11713 bp_locations = NULL;
11714 bp_locations_count = 0;
0d381245 11715
74960c60 11716 ALL_BREAKPOINTS (b)
876fa593 11717 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11718 bp_locations_count++;
876fa593 11719
f5336ca5
PA
11720 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11721 locp = bp_locations;
876fa593
JK
11722 ALL_BREAKPOINTS (b)
11723 for (loc = b->loc; loc; loc = loc->next)
11724 *locp++ = loc;
f5336ca5
PA
11725 qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11726 bp_locations_compare);
876fa593 11727
f5336ca5 11728 bp_locations_target_extensions_update ();
74960c60 11729
4a64f543
MS
11730 /* Identify bp_location instances that are no longer present in the
11731 new list, and therefore should be freed. Note that it's not
11732 necessary that those locations should be removed from inferior --
11733 if there's another location at the same address (previously
11734 marked as duplicate), we don't need to remove/insert the
11735 location.
876fa593 11736
4a64f543
MS
11737 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11738 and former bp_location array state respectively. */
876fa593 11739
f5336ca5 11740 locp = bp_locations;
81b1e71c
TT
11741 for (old_locp = old_locations.get ();
11742 old_locp < old_locations.get () + old_locations_count;
876fa593 11743 old_locp++)
74960c60 11744 {
876fa593 11745 struct bp_location *old_loc = *old_locp;
c7d46a38 11746 struct bp_location **loc2p;
876fa593 11747
e5dd4106 11748 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11749 not, we have to free it. */
c7d46a38 11750 int found_object = 0;
20874c92
VP
11751 /* Tells if the location should remain inserted in the target. */
11752 int keep_in_target = 0;
11753 int removed = 0;
876fa593 11754
4a64f543
MS
11755 /* Skip LOCP entries which will definitely never be needed.
11756 Stop either at or being the one matching OLD_LOC. */
f5336ca5 11757 while (locp < bp_locations + bp_locations_count
c7d46a38 11758 && (*locp)->address < old_loc->address)
876fa593 11759 locp++;
c7d46a38
PA
11760
11761 for (loc2p = locp;
f5336ca5 11762 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
11763 && (*loc2p)->address == old_loc->address);
11764 loc2p++)
11765 {
b775012e
LM
11766 /* Check if this is a new/duplicated location or a duplicated
11767 location that had its condition modified. If so, we want to send
11768 its condition to the target if evaluation of conditions is taking
11769 place there. */
11770 if ((*loc2p)->condition_changed == condition_modified
11771 && (last_addr != old_loc->address
11772 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11773 {
b775012e
LM
11774 force_breakpoint_reinsertion (*loc2p);
11775 last_pspace_num = old_loc->pspace->num;
c7d46a38 11776 }
b775012e
LM
11777
11778 if (*loc2p == old_loc)
11779 found_object = 1;
c7d46a38 11780 }
74960c60 11781
b775012e
LM
11782 /* We have already handled this address, update it so that we don't
11783 have to go through updates again. */
11784 last_addr = old_loc->address;
11785
11786 /* Target-side condition evaluation: Handle deleted locations. */
11787 if (!found_object)
11788 force_breakpoint_reinsertion (old_loc);
11789
4a64f543
MS
11790 /* If this location is no longer present, and inserted, look if
11791 there's maybe a new location at the same address. If so,
11792 mark that one inserted, and don't remove this one. This is
11793 needed so that we don't have a time window where a breakpoint
11794 at certain location is not inserted. */
74960c60 11795
876fa593 11796 if (old_loc->inserted)
0d381245 11797 {
4a64f543
MS
11798 /* If the location is inserted now, we might have to remove
11799 it. */
74960c60 11800
876fa593 11801 if (found_object && should_be_inserted (old_loc))
74960c60 11802 {
4a64f543
MS
11803 /* The location is still present in the location list,
11804 and still should be inserted. Don't do anything. */
20874c92 11805 keep_in_target = 1;
74960c60
VP
11806 }
11807 else
11808 {
b775012e
LM
11809 /* This location still exists, but it won't be kept in the
11810 target since it may have been disabled. We proceed to
11811 remove its target-side condition. */
11812
4a64f543
MS
11813 /* The location is either no longer present, or got
11814 disabled. See if there's another location at the
11815 same address, in which case we don't need to remove
11816 this one from the target. */
876fa593 11817
2bdf28a0 11818 /* OLD_LOC comes from existing struct breakpoint. */
876fa593
JK
11819 if (breakpoint_address_is_meaningful (old_loc->owner))
11820 {
876fa593 11821 for (loc2p = locp;
f5336ca5 11822 (loc2p < bp_locations + bp_locations_count
c7d46a38 11823 && (*loc2p)->address == old_loc->address);
876fa593
JK
11824 loc2p++)
11825 {
11826 struct bp_location *loc2 = *loc2p;
11827
2d134ed3 11828 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 11829 {
85d721b8
PA
11830 /* Read watchpoint locations are switched to
11831 access watchpoints, if the former are not
11832 supported, but the latter are. */
11833 if (is_hardware_watchpoint (old_loc->owner))
11834 {
11835 gdb_assert (is_hardware_watchpoint (loc2->owner));
11836 loc2->watchpoint_type = old_loc->watchpoint_type;
11837 }
11838
934709f0
PW
11839 /* loc2 is a duplicated location. We need to check
11840 if it should be inserted in case it will be
11841 unduplicated. */
11842 if (loc2 != old_loc
11843 && unduplicated_should_be_inserted (loc2))
c7d46a38 11844 {
934709f0 11845 swap_insertion (old_loc, loc2);
c7d46a38
PA
11846 keep_in_target = 1;
11847 break;
11848 }
876fa593
JK
11849 }
11850 }
11851 }
74960c60
VP
11852 }
11853
20874c92
VP
11854 if (!keep_in_target)
11855 {
834c0d03 11856 if (remove_breakpoint (old_loc))
20874c92 11857 {
4a64f543
MS
11858 /* This is just about all we can do. We could keep
11859 this location on the global list, and try to
11860 remove it next time, but there's no particular
11861 reason why we will succeed next time.
20874c92 11862
4a64f543
MS
11863 Note that at this point, old_loc->owner is still
11864 valid, as delete_breakpoint frees the breakpoint
11865 only after calling us. */
3e43a32a
MS
11866 printf_filtered (_("warning: Error removing "
11867 "breakpoint %d\n"),
876fa593 11868 old_loc->owner->number);
20874c92
VP
11869 }
11870 removed = 1;
11871 }
0d381245 11872 }
74960c60
VP
11873
11874 if (!found_object)
1c5cfe86 11875 {
fbea99ea 11876 if (removed && target_is_non_stop_p ()
1cf4d951 11877 && need_moribund_for_location_type (old_loc))
20874c92 11878 {
db82e815
PA
11879 /* This location was removed from the target. In
11880 non-stop mode, a race condition is possible where
11881 we've removed a breakpoint, but stop events for that
11882 breakpoint are already queued and will arrive later.
11883 We apply an heuristic to be able to distinguish such
11884 SIGTRAPs from other random SIGTRAPs: we keep this
11885 breakpoint location for a bit, and will retire it
11886 after we see some number of events. The theory here
11887 is that reporting of events should, "on the average",
11888 be fair, so after a while we'll see events from all
11889 threads that have anything of interest, and no longer
11890 need to keep this breakpoint location around. We
11891 don't hold locations forever so to reduce chances of
11892 mistaking a non-breakpoint SIGTRAP for a breakpoint
11893 SIGTRAP.
11894
11895 The heuristic failing can be disastrous on
11896 decr_pc_after_break targets.
11897
11898 On decr_pc_after_break targets, like e.g., x86-linux,
11899 if we fail to recognize a late breakpoint SIGTRAP,
11900 because events_till_retirement has reached 0 too
11901 soon, we'll fail to do the PC adjustment, and report
11902 a random SIGTRAP to the user. When the user resumes
11903 the inferior, it will most likely immediately crash
2dec564e 11904 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
11905 corrupted, because of being resumed e.g., in the
11906 middle of a multi-byte instruction, or skipped a
11907 one-byte instruction. This was actually seen happen
11908 on native x86-linux, and should be less rare on
11909 targets that do not support new thread events, like
11910 remote, due to the heuristic depending on
11911 thread_count.
11912
11913 Mistaking a random SIGTRAP for a breakpoint trap
11914 causes similar symptoms (PC adjustment applied when
11915 it shouldn't), but then again, playing with SIGTRAPs
11916 behind the debugger's back is asking for trouble.
11917
11918 Since hardware watchpoint traps are always
11919 distinguishable from other traps, so we don't need to
11920 apply keep hardware watchpoint moribund locations
11921 around. We simply always ignore hardware watchpoint
11922 traps we can no longer explain. */
11923
876fa593
JK
11924 old_loc->events_till_retirement = 3 * (thread_count () + 1);
11925 old_loc->owner = NULL;
20874c92 11926
1123588c 11927 moribund_locations.push_back (old_loc);
1c5cfe86
PA
11928 }
11929 else
f431efe5
PA
11930 {
11931 old_loc->owner = NULL;
11932 decref_bp_location (&old_loc);
11933 }
20874c92 11934 }
74960c60 11935 }
1c5cfe86 11936
348d480f
PA
11937 /* Rescan breakpoints at the same address and section, marking the
11938 first one as "first" and any others as "duplicates". This is so
11939 that the bpt instruction is only inserted once. If we have a
11940 permanent breakpoint at the same place as BPT, make that one the
11941 official one, and the rest as duplicates. Permanent breakpoints
11942 are sorted first for the same address.
11943
11944 Do the same for hardware watchpoints, but also considering the
11945 watchpoint's type (regular/access/read) and length. */
11946
11947 bp_loc_first = NULL;
11948 wp_loc_first = NULL;
11949 awp_loc_first = NULL;
11950 rwp_loc_first = NULL;
11951 ALL_BP_LOCATIONS (loc, locp)
11952 {
11953 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11954 non-NULL. */
348d480f 11955 struct bp_location **loc_first_p;
d3fbdd86 11956 b = loc->owner;
348d480f 11957
6f380991 11958 if (!unduplicated_should_be_inserted (loc)
348d480f 11959 || !breakpoint_address_is_meaningful (b)
1e4d1764
YQ
11960 /* Don't detect duplicate for tracepoint locations because they are
11961 never duplicated. See the comments in field `duplicate' of
11962 `struct bp_location'. */
348d480f 11963 || is_tracepoint (b))
b775012e
LM
11964 {
11965 /* Clear the condition modification flag. */
11966 loc->condition_changed = condition_unchanged;
11967 continue;
11968 }
348d480f 11969
348d480f
PA
11970 if (b->type == bp_hardware_watchpoint)
11971 loc_first_p = &wp_loc_first;
11972 else if (b->type == bp_read_watchpoint)
11973 loc_first_p = &rwp_loc_first;
11974 else if (b->type == bp_access_watchpoint)
11975 loc_first_p = &awp_loc_first;
11976 else
11977 loc_first_p = &bp_loc_first;
11978
11979 if (*loc_first_p == NULL
11980 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11981 || !breakpoint_locations_match (loc, *loc_first_p))
11982 {
11983 *loc_first_p = loc;
11984 loc->duplicate = 0;
b775012e
LM
11985
11986 if (is_breakpoint (loc->owner) && loc->condition_changed)
11987 {
11988 loc->needs_update = 1;
11989 /* Clear the condition modification flag. */
11990 loc->condition_changed = condition_unchanged;
11991 }
348d480f
PA
11992 continue;
11993 }
11994
934709f0
PW
11995
11996 /* This and the above ensure the invariant that the first location
11997 is not duplicated, and is the inserted one.
11998 All following are marked as duplicated, and are not inserted. */
11999 if (loc->inserted)
12000 swap_insertion (loc, *loc_first_p);
348d480f
PA
12001 loc->duplicate = 1;
12002
b775012e
LM
12003 /* Clear the condition modification flag. */
12004 loc->condition_changed = condition_unchanged;
348d480f
PA
12005 }
12006
a25a5a45 12007 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12008 {
04086b45 12009 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12010 insert_breakpoint_locations ();
12011 else
12012 {
44702360
PA
12013 /* Even though the caller told us to not insert new
12014 locations, we may still need to update conditions on the
12015 target's side of breakpoints that were already inserted
12016 if the target is evaluating breakpoint conditions. We
b775012e
LM
12017 only update conditions for locations that are marked
12018 "needs_update". */
12019 update_inserted_breakpoint_locations ();
12020 }
12021 }
348d480f 12022
04086b45 12023 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12024 download_tracepoint_locations ();
348d480f
PA
12025}
12026
12027void
12028breakpoint_retire_moribund (void)
12029{
1123588c
TT
12030 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12031 {
12032 struct bp_location *loc = moribund_locations[ix];
12033 if (--(loc->events_till_retirement) == 0)
12034 {
12035 decref_bp_location (&loc);
12036 unordered_remove (moribund_locations, ix);
12037 --ix;
12038 }
12039 }
348d480f
PA
12040}
12041
12042static void
44702360 12043update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12044{
348d480f 12045
a70b8144 12046 try
492d29ea
PA
12047 {
12048 update_global_location_list (insert_mode);
12049 }
230d2906 12050 catch (const gdb_exception_error &e)
492d29ea
PA
12051 {
12052 }
348d480f
PA
12053}
12054
12055/* Clear BKP from a BPS. */
12056
12057static void
12058bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12059{
12060 bpstat bs;
12061
12062 for (bs = bps; bs; bs = bs->next)
12063 if (bs->breakpoint_at == bpt)
12064 {
12065 bs->breakpoint_at = NULL;
12066 bs->old_val = NULL;
12067 /* bs->commands will be freed later. */
12068 }
12069}
12070
12071/* Callback for iterate_over_threads. */
12072static int
12073bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12074{
9a3c8263 12075 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12076
12077 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12078 return 0;
12079}
12080
12081/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12082 callbacks. */
12083
12084static void
12085say_where (struct breakpoint *b)
12086{
12087 struct value_print_options opts;
12088
12089 get_user_print_options (&opts);
12090
12091 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12092 single string. */
12093 if (b->loc == NULL)
12094 {
f00aae0f
KS
12095 /* For pending locations, the output differs slightly based
12096 on b->extra_string. If this is non-NULL, it contains either
12097 a condition or dprintf arguments. */
12098 if (b->extra_string == NULL)
12099 {
12100 printf_filtered (_(" (%s) pending."),
d28cd78a 12101 event_location_to_string (b->location.get ()));
f00aae0f
KS
12102 }
12103 else if (b->type == bp_dprintf)
12104 {
12105 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12106 event_location_to_string (b->location.get ()),
f00aae0f
KS
12107 b->extra_string);
12108 }
12109 else
12110 {
12111 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12112 event_location_to_string (b->location.get ()),
f00aae0f
KS
12113 b->extra_string);
12114 }
348d480f
PA
12115 }
12116 else
12117 {
2f202fde 12118 if (opts.addressprint || b->loc->symtab == NULL)
348d480f
PA
12119 {
12120 printf_filtered (" at ");
2636d81d
PW
12121 fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12122 address_style.style (),
12123 gdb_stdout);
348d480f 12124 }
2f202fde 12125 if (b->loc->symtab != NULL)
f8eba3c6
TT
12126 {
12127 /* If there is a single location, we can print the location
12128 more nicely. */
12129 if (b->loc->next == NULL)
0bb296cb
TT
12130 {
12131 puts_filtered (": file ");
12132 fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12133 file_name_style.style (),
12134 gdb_stdout);
12135 printf_filtered (", line %d.",
12136 b->loc->line_number);
12137 }
f8eba3c6
TT
12138 else
12139 /* This is not ideal, but each location may have a
12140 different file name, and this at least reflects the
12141 real situation somewhat. */
f00aae0f 12142 printf_filtered (": %s.",
d28cd78a 12143 event_location_to_string (b->location.get ()));
f8eba3c6 12144 }
348d480f
PA
12145
12146 if (b->loc->next)
12147 {
12148 struct bp_location *loc = b->loc;
12149 int n = 0;
12150 for (; loc; loc = loc->next)
12151 ++n;
12152 printf_filtered (" (%d locations)", n);
12153 }
12154 }
12155}
12156
5f486660 12157bp_location::~bp_location ()
348d480f 12158{
5f486660 12159 xfree (function_name);
348d480f
PA
12160}
12161
c1fc2657 12162/* Destructor for the breakpoint base class. */
348d480f 12163
c1fc2657 12164breakpoint::~breakpoint ()
348d480f 12165{
c1fc2657
SM
12166 xfree (this->cond_string);
12167 xfree (this->extra_string);
12168 xfree (this->filter);
348d480f
PA
12169}
12170
2060206e
PA
12171static struct bp_location *
12172base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12173{
5f486660 12174 return new bp_location (self);
348d480f
PA
12175}
12176
2060206e
PA
12177static void
12178base_breakpoint_re_set (struct breakpoint *b)
12179{
12180 /* Nothing to re-set. */
12181}
12182
12183#define internal_error_pure_virtual_called() \
12184 gdb_assert_not_reached ("pure virtual function called")
12185
12186static int
12187base_breakpoint_insert_location (struct bp_location *bl)
12188{
12189 internal_error_pure_virtual_called ();
12190}
12191
12192static int
73971819
PA
12193base_breakpoint_remove_location (struct bp_location *bl,
12194 enum remove_bp_reason reason)
2060206e
PA
12195{
12196 internal_error_pure_virtual_called ();
12197}
12198
12199static int
12200base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12201 const address_space *aspace,
09ac7c10
TT
12202 CORE_ADDR bp_addr,
12203 const struct target_waitstatus *ws)
2060206e
PA
12204{
12205 internal_error_pure_virtual_called ();
12206}
12207
12208static void
12209base_breakpoint_check_status (bpstat bs)
12210{
12211 /* Always stop. */
12212}
12213
12214/* A "works_in_software_mode" breakpoint_ops method that just internal
12215 errors. */
12216
12217static int
12218base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12219{
12220 internal_error_pure_virtual_called ();
12221}
12222
12223/* A "resources_needed" breakpoint_ops method that just internal
12224 errors. */
12225
12226static int
12227base_breakpoint_resources_needed (const struct bp_location *bl)
12228{
12229 internal_error_pure_virtual_called ();
12230}
12231
12232static enum print_stop_action
12233base_breakpoint_print_it (bpstat bs)
12234{
12235 internal_error_pure_virtual_called ();
12236}
12237
12238static void
12239base_breakpoint_print_one_detail (const struct breakpoint *self,
12240 struct ui_out *uiout)
12241{
12242 /* nothing */
12243}
12244
12245static void
12246base_breakpoint_print_mention (struct breakpoint *b)
12247{
12248 internal_error_pure_virtual_called ();
12249}
12250
12251static void
12252base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12253{
12254 internal_error_pure_virtual_called ();
12255}
12256
983af33b 12257static void
f00aae0f
KS
12258base_breakpoint_create_sals_from_location
12259 (const struct event_location *location,
12260 struct linespec_result *canonical,
12261 enum bptype type_wanted)
983af33b
SDJ
12262{
12263 internal_error_pure_virtual_called ();
12264}
12265
12266static void
12267base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12268 struct linespec_result *c,
e1e01040
PA
12269 gdb::unique_xmalloc_ptr<char> cond_string,
12270 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12271 enum bptype type_wanted,
12272 enum bpdisp disposition,
12273 int thread,
12274 int task, int ignore_count,
12275 const struct breakpoint_ops *o,
12276 int from_tty, int enabled,
44f238bb 12277 int internal, unsigned flags)
983af33b
SDJ
12278{
12279 internal_error_pure_virtual_called ();
12280}
12281
6c5b2ebe 12282static std::vector<symtab_and_line>
f00aae0f
KS
12283base_breakpoint_decode_location (struct breakpoint *b,
12284 const struct event_location *location,
6c5b2ebe 12285 struct program_space *search_pspace)
983af33b
SDJ
12286{
12287 internal_error_pure_virtual_called ();
12288}
12289
ab04a2af
TT
12290/* The default 'explains_signal' method. */
12291
47591c29 12292static int
427cd150 12293base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12294{
47591c29 12295 return 1;
ab04a2af
TT
12296}
12297
9d6e6e84
HZ
12298/* The default "after_condition_true" method. */
12299
12300static void
12301base_breakpoint_after_condition_true (struct bpstats *bs)
12302{
12303 /* Nothing to do. */
12304}
12305
ab04a2af 12306struct breakpoint_ops base_breakpoint_ops =
2060206e 12307{
2060206e
PA
12308 base_breakpoint_allocate_location,
12309 base_breakpoint_re_set,
12310 base_breakpoint_insert_location,
12311 base_breakpoint_remove_location,
12312 base_breakpoint_breakpoint_hit,
12313 base_breakpoint_check_status,
12314 base_breakpoint_resources_needed,
12315 base_breakpoint_works_in_software_mode,
12316 base_breakpoint_print_it,
12317 NULL,
12318 base_breakpoint_print_one_detail,
12319 base_breakpoint_print_mention,
983af33b 12320 base_breakpoint_print_recreate,
5f700d83 12321 base_breakpoint_create_sals_from_location,
983af33b 12322 base_breakpoint_create_breakpoints_sal,
5f700d83 12323 base_breakpoint_decode_location,
9d6e6e84
HZ
12324 base_breakpoint_explains_signal,
12325 base_breakpoint_after_condition_true,
2060206e
PA
12326};
12327
12328/* Default breakpoint_ops methods. */
12329
12330static void
348d480f
PA
12331bkpt_re_set (struct breakpoint *b)
12332{
06edf0c0 12333 /* FIXME: is this still reachable? */
9ef9e6a6 12334 if (breakpoint_event_location_empty_p (b))
06edf0c0 12335 {
f00aae0f 12336 /* Anything without a location can't be re-set. */
348d480f 12337 delete_breakpoint (b);
06edf0c0 12338 return;
348d480f 12339 }
06edf0c0
PA
12340
12341 breakpoint_re_set_default (b);
348d480f
PA
12342}
12343
2060206e 12344static int
348d480f
PA
12345bkpt_insert_location (struct bp_location *bl)
12346{
cd6c3b4f
YQ
12347 CORE_ADDR addr = bl->target_info.reqstd_address;
12348
579c6ad9 12349 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12350 bl->target_info.placed_address = addr;
12351
348d480f 12352 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12353 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12354 else
7c16b83e 12355 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12356}
12357
2060206e 12358static int
73971819 12359bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12360{
12361 if (bl->loc_type == bp_loc_hardware_breakpoint)
12362 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12363 else
73971819 12364 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12365}
12366
2060206e 12367static int
348d480f 12368bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12369 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12370 const struct target_waitstatus *ws)
348d480f 12371{
09ac7c10 12372 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12373 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12374 return 0;
12375
348d480f
PA
12376 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12377 aspace, bp_addr))
12378 return 0;
12379
12380 if (overlay_debugging /* unmapped overlay section */
12381 && section_is_overlay (bl->section)
12382 && !section_is_mapped (bl->section))
12383 return 0;
12384
12385 return 1;
12386}
12387
cd1608cc
PA
12388static int
12389dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12390 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12391 const struct target_waitstatus *ws)
12392{
12393 if (dprintf_style == dprintf_style_agent
12394 && target_can_run_breakpoint_commands ())
12395 {
12396 /* An agent-style dprintf never causes a stop. If we see a trap
12397 for this address it must be for a breakpoint that happens to
12398 be set at the same address. */
12399 return 0;
12400 }
12401
12402 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12403}
12404
2060206e 12405static int
348d480f
PA
12406bkpt_resources_needed (const struct bp_location *bl)
12407{
12408 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12409
12410 return 1;
12411}
12412
2060206e 12413static enum print_stop_action
348d480f
PA
12414bkpt_print_it (bpstat bs)
12415{
348d480f
PA
12416 struct breakpoint *b;
12417 const struct bp_location *bl;
001c8c33 12418 int bp_temp;
79a45e25 12419 struct ui_out *uiout = current_uiout;
348d480f
PA
12420
12421 gdb_assert (bs->bp_location_at != NULL);
12422
12423 bl = bs->bp_location_at;
12424 b = bs->breakpoint_at;
12425
001c8c33
PA
12426 bp_temp = b->disposition == disp_del;
12427 if (bl->address != bl->requested_address)
12428 breakpoint_adjustment_warning (bl->requested_address,
12429 bl->address,
12430 b->number, 1);
12431 annotate_breakpoint (b->number);
f303dbd6
PA
12432 maybe_print_thread_hit_breakpoint (uiout);
12433
001c8c33 12434 if (bp_temp)
112e8700 12435 uiout->text ("Temporary breakpoint ");
001c8c33 12436 else
112e8700
SM
12437 uiout->text ("Breakpoint ");
12438 if (uiout->is_mi_like_p ())
348d480f 12439 {
112e8700 12440 uiout->field_string ("reason",
001c8c33 12441 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12442 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12443 }
112e8700
SM
12444 uiout->field_int ("bkptno", b->number);
12445 uiout->text (", ");
06edf0c0 12446
001c8c33 12447 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12448}
12449
2060206e 12450static void
06edf0c0
PA
12451bkpt_print_mention (struct breakpoint *b)
12452{
112e8700 12453 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12454 return;
12455
12456 switch (b->type)
12457 {
12458 case bp_breakpoint:
12459 case bp_gnu_ifunc_resolver:
12460 if (b->disposition == disp_del)
12461 printf_filtered (_("Temporary breakpoint"));
12462 else
12463 printf_filtered (_("Breakpoint"));
12464 printf_filtered (_(" %d"), b->number);
12465 if (b->type == bp_gnu_ifunc_resolver)
12466 printf_filtered (_(" at gnu-indirect-function resolver"));
12467 break;
12468 case bp_hardware_breakpoint:
12469 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12470 break;
e7e0cddf
SS
12471 case bp_dprintf:
12472 printf_filtered (_("Dprintf %d"), b->number);
12473 break;
06edf0c0
PA
12474 }
12475
12476 say_where (b);
12477}
12478
2060206e 12479static void
06edf0c0
PA
12480bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12481{
12482 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12483 fprintf_unfiltered (fp, "tbreak");
12484 else if (tp->type == bp_breakpoint)
12485 fprintf_unfiltered (fp, "break");
12486 else if (tp->type == bp_hardware_breakpoint
12487 && tp->disposition == disp_del)
12488 fprintf_unfiltered (fp, "thbreak");
12489 else if (tp->type == bp_hardware_breakpoint)
12490 fprintf_unfiltered (fp, "hbreak");
12491 else
12492 internal_error (__FILE__, __LINE__,
12493 _("unhandled breakpoint type %d"), (int) tp->type);
12494
f00aae0f 12495 fprintf_unfiltered (fp, " %s",
d28cd78a 12496 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12497
12498 /* Print out extra_string if this breakpoint is pending. It might
12499 contain, for example, conditions that were set by the user. */
12500 if (tp->loc == NULL && tp->extra_string != NULL)
12501 fprintf_unfiltered (fp, " %s", tp->extra_string);
12502
dd11a36c 12503 print_recreate_thread (tp, fp);
06edf0c0
PA
12504}
12505
983af33b 12506static void
f00aae0f
KS
12507bkpt_create_sals_from_location (const struct event_location *location,
12508 struct linespec_result *canonical,
12509 enum bptype type_wanted)
983af33b 12510{
f00aae0f 12511 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12512}
12513
12514static void
12515bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12516 struct linespec_result *canonical,
e1e01040
PA
12517 gdb::unique_xmalloc_ptr<char> cond_string,
12518 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12519 enum bptype type_wanted,
12520 enum bpdisp disposition,
12521 int thread,
12522 int task, int ignore_count,
12523 const struct breakpoint_ops *ops,
12524 int from_tty, int enabled,
44f238bb 12525 int internal, unsigned flags)
983af33b 12526{
023fa29b 12527 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12528 std::move (cond_string),
12529 std::move (extra_string),
e7e0cddf 12530 type_wanted,
983af33b
SDJ
12531 disposition, thread, task,
12532 ignore_count, ops, from_tty,
44f238bb 12533 enabled, internal, flags);
983af33b
SDJ
12534}
12535
6c5b2ebe 12536static std::vector<symtab_and_line>
f00aae0f
KS
12537bkpt_decode_location (struct breakpoint *b,
12538 const struct event_location *location,
6c5b2ebe 12539 struct program_space *search_pspace)
983af33b 12540{
6c5b2ebe 12541 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12542}
12543
06edf0c0
PA
12544/* Virtual table for internal breakpoints. */
12545
12546static void
12547internal_bkpt_re_set (struct breakpoint *b)
12548{
12549 switch (b->type)
12550 {
12551 /* Delete overlay event and longjmp master breakpoints; they
12552 will be reset later by breakpoint_re_set. */
12553 case bp_overlay_event:
12554 case bp_longjmp_master:
12555 case bp_std_terminate_master:
12556 case bp_exception_master:
12557 delete_breakpoint (b);
12558 break;
12559
12560 /* This breakpoint is special, it's set up when the inferior
12561 starts and we really don't want to touch it. */
12562 case bp_shlib_event:
12563
12564 /* Like bp_shlib_event, this breakpoint type is special. Once
12565 it is set up, we do not want to touch it. */
12566 case bp_thread_event:
12567 break;
12568 }
12569}
12570
12571static void
12572internal_bkpt_check_status (bpstat bs)
12573{
a9b3a50f
PA
12574 if (bs->breakpoint_at->type == bp_shlib_event)
12575 {
12576 /* If requested, stop when the dynamic linker notifies GDB of
12577 events. This allows the user to get control and place
12578 breakpoints in initializer routines for dynamically loaded
12579 objects (among other things). */
12580 bs->stop = stop_on_solib_events;
12581 bs->print = stop_on_solib_events;
12582 }
12583 else
12584 bs->stop = 0;
06edf0c0
PA
12585}
12586
12587static enum print_stop_action
12588internal_bkpt_print_it (bpstat bs)
12589{
06edf0c0 12590 struct breakpoint *b;
06edf0c0 12591
06edf0c0
PA
12592 b = bs->breakpoint_at;
12593
06edf0c0
PA
12594 switch (b->type)
12595 {
348d480f
PA
12596 case bp_shlib_event:
12597 /* Did we stop because the user set the stop_on_solib_events
12598 variable? (If so, we report this as a generic, "Stopped due
12599 to shlib event" message.) */
edcc5120 12600 print_solib_event (0);
348d480f
PA
12601 break;
12602
12603 case bp_thread_event:
12604 /* Not sure how we will get here.
12605 GDB should not stop for these breakpoints. */
12606 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12607 break;
12608
12609 case bp_overlay_event:
12610 /* By analogy with the thread event, GDB should not stop for these. */
12611 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12612 break;
12613
12614 case bp_longjmp_master:
12615 /* These should never be enabled. */
12616 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12617 break;
12618
12619 case bp_std_terminate_master:
12620 /* These should never be enabled. */
12621 printf_filtered (_("std::terminate Master Breakpoint: "
12622 "gdb should not stop!\n"));
348d480f
PA
12623 break;
12624
12625 case bp_exception_master:
12626 /* These should never be enabled. */
12627 printf_filtered (_("Exception Master Breakpoint: "
12628 "gdb should not stop!\n"));
06edf0c0
PA
12629 break;
12630 }
12631
001c8c33 12632 return PRINT_NOTHING;
06edf0c0
PA
12633}
12634
12635static void
12636internal_bkpt_print_mention (struct breakpoint *b)
12637{
12638 /* Nothing to mention. These breakpoints are internal. */
12639}
12640
06edf0c0
PA
12641/* Virtual table for momentary breakpoints */
12642
12643static void
12644momentary_bkpt_re_set (struct breakpoint *b)
12645{
12646 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12647 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12648 Otherwise these should have been blown away via the cleanup chain
12649 or by breakpoint_init_inferior when we rerun the executable. */
12650}
12651
12652static void
12653momentary_bkpt_check_status (bpstat bs)
12654{
12655 /* Nothing. The point of these breakpoints is causing a stop. */
12656}
12657
12658static enum print_stop_action
12659momentary_bkpt_print_it (bpstat bs)
12660{
001c8c33 12661 return PRINT_UNKNOWN;
348d480f
PA
12662}
12663
06edf0c0
PA
12664static void
12665momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12666{
06edf0c0 12667 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12668}
12669
e2e4d78b
JK
12670/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12671
12672 It gets cleared already on the removal of the first one of such placed
12673 breakpoints. This is OK as they get all removed altogether. */
12674
c1fc2657 12675longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12676{
c1fc2657 12677 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12678
c1fc2657 12679 if (tp != NULL)
e2e4d78b 12680 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12681}
12682
55aa24fb
SDJ
12683/* Specific methods for probe breakpoints. */
12684
12685static int
12686bkpt_probe_insert_location (struct bp_location *bl)
12687{
12688 int v = bkpt_insert_location (bl);
12689
12690 if (v == 0)
12691 {
12692 /* The insertion was successful, now let's set the probe's semaphore
12693 if needed. */
935676c9 12694 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12695 }
12696
12697 return v;
12698}
12699
12700static int
73971819
PA
12701bkpt_probe_remove_location (struct bp_location *bl,
12702 enum remove_bp_reason reason)
55aa24fb
SDJ
12703{
12704 /* Let's clear the semaphore before removing the location. */
935676c9 12705 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12706
73971819 12707 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12708}
12709
12710static void
f00aae0f 12711bkpt_probe_create_sals_from_location (const struct event_location *location,
5f700d83 12712 struct linespec_result *canonical,
f00aae0f 12713 enum bptype type_wanted)
55aa24fb
SDJ
12714{
12715 struct linespec_sals lsal;
12716
c2f4122d 12717 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12718 lsal.canonical
12719 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12720 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12721}
12722
6c5b2ebe 12723static std::vector<symtab_and_line>
f00aae0f
KS
12724bkpt_probe_decode_location (struct breakpoint *b,
12725 const struct event_location *location,
6c5b2ebe 12726 struct program_space *search_pspace)
55aa24fb 12727{
6c5b2ebe
PA
12728 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12729 if (sals.empty ())
55aa24fb 12730 error (_("probe not found"));
6c5b2ebe 12731 return sals;
55aa24fb
SDJ
12732}
12733
348d480f 12734/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12735
348d480f
PA
12736static void
12737tracepoint_re_set (struct breakpoint *b)
12738{
12739 breakpoint_re_set_default (b);
12740}
876fa593 12741
348d480f
PA
12742static int
12743tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12744 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12745 const struct target_waitstatus *ws)
348d480f
PA
12746{
12747 /* By definition, the inferior does not report stops at
12748 tracepoints. */
12749 return 0;
74960c60
VP
12750}
12751
12752static void
348d480f
PA
12753tracepoint_print_one_detail (const struct breakpoint *self,
12754 struct ui_out *uiout)
74960c60 12755{
d9b3f62e 12756 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 12757 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
12758 {
12759 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12760
112e8700
SM
12761 uiout->text ("\tmarker id is ");
12762 uiout->field_string ("static-tracepoint-marker-string-id",
d9b3f62e 12763 tp->static_trace_marker_id);
112e8700 12764 uiout->text ("\n");
348d480f 12765 }
0d381245
VP
12766}
12767
a474d7c2 12768static void
348d480f 12769tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12770{
112e8700 12771 if (current_uiout->is_mi_like_p ())
348d480f 12772 return;
cc59ec59 12773
348d480f
PA
12774 switch (b->type)
12775 {
12776 case bp_tracepoint:
12777 printf_filtered (_("Tracepoint"));
12778 printf_filtered (_(" %d"), b->number);
12779 break;
12780 case bp_fast_tracepoint:
12781 printf_filtered (_("Fast tracepoint"));
12782 printf_filtered (_(" %d"), b->number);
12783 break;
12784 case bp_static_tracepoint:
12785 printf_filtered (_("Static tracepoint"));
12786 printf_filtered (_(" %d"), b->number);
12787 break;
12788 default:
12789 internal_error (__FILE__, __LINE__,
12790 _("unhandled tracepoint type %d"), (int) b->type);
12791 }
12792
12793 say_where (b);
a474d7c2
PA
12794}
12795
348d480f 12796static void
d9b3f62e 12797tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12798{
d9b3f62e
PA
12799 struct tracepoint *tp = (struct tracepoint *) self;
12800
12801 if (self->type == bp_fast_tracepoint)
348d480f 12802 fprintf_unfiltered (fp, "ftrace");
c93e8391 12803 else if (self->type == bp_static_tracepoint)
348d480f 12804 fprintf_unfiltered (fp, "strace");
d9b3f62e 12805 else if (self->type == bp_tracepoint)
348d480f
PA
12806 fprintf_unfiltered (fp, "trace");
12807 else
12808 internal_error (__FILE__, __LINE__,
d9b3f62e 12809 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 12810
f00aae0f 12811 fprintf_unfiltered (fp, " %s",
d28cd78a 12812 event_location_to_string (self->location.get ()));
d9b3f62e
PA
12813 print_recreate_thread (self, fp);
12814
12815 if (tp->pass_count)
12816 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
12817}
12818
983af33b 12819static void
f00aae0f
KS
12820tracepoint_create_sals_from_location (const struct event_location *location,
12821 struct linespec_result *canonical,
12822 enum bptype type_wanted)
983af33b 12823{
f00aae0f 12824 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12825}
12826
12827static void
12828tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12829 struct linespec_result *canonical,
e1e01040
PA
12830 gdb::unique_xmalloc_ptr<char> cond_string,
12831 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12832 enum bptype type_wanted,
12833 enum bpdisp disposition,
12834 int thread,
12835 int task, int ignore_count,
12836 const struct breakpoint_ops *ops,
12837 int from_tty, int enabled,
44f238bb 12838 int internal, unsigned flags)
983af33b 12839{
023fa29b 12840 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12841 std::move (cond_string),
12842 std::move (extra_string),
e7e0cddf 12843 type_wanted,
983af33b
SDJ
12844 disposition, thread, task,
12845 ignore_count, ops, from_tty,
44f238bb 12846 enabled, internal, flags);
983af33b
SDJ
12847}
12848
6c5b2ebe 12849static std::vector<symtab_and_line>
f00aae0f
KS
12850tracepoint_decode_location (struct breakpoint *b,
12851 const struct event_location *location,
6c5b2ebe 12852 struct program_space *search_pspace)
983af33b 12853{
6c5b2ebe 12854 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12855}
12856
2060206e 12857struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 12858
55aa24fb
SDJ
12859/* The breakpoint_ops structure to be use on tracepoints placed in a
12860 static probe. */
12861
12862static void
f00aae0f
KS
12863tracepoint_probe_create_sals_from_location
12864 (const struct event_location *location,
12865 struct linespec_result *canonical,
12866 enum bptype type_wanted)
55aa24fb
SDJ
12867{
12868 /* We use the same method for breakpoint on probes. */
f00aae0f 12869 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
12870}
12871
6c5b2ebe 12872static std::vector<symtab_and_line>
f00aae0f
KS
12873tracepoint_probe_decode_location (struct breakpoint *b,
12874 const struct event_location *location,
6c5b2ebe 12875 struct program_space *search_pspace)
55aa24fb
SDJ
12876{
12877 /* We use the same method for breakpoint on probes. */
6c5b2ebe 12878 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
12879}
12880
12881static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12882
5c2b4418
HZ
12883/* Dprintf breakpoint_ops methods. */
12884
12885static void
12886dprintf_re_set (struct breakpoint *b)
12887{
12888 breakpoint_re_set_default (b);
12889
f00aae0f
KS
12890 /* extra_string should never be non-NULL for dprintf. */
12891 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
12892
12893 /* 1 - connect to target 1, that can run breakpoint commands.
12894 2 - create a dprintf, which resolves fine.
12895 3 - disconnect from target 1
12896 4 - connect to target 2, that can NOT run breakpoint commands.
12897
12898 After steps #3/#4, you'll want the dprintf command list to
12899 be updated, because target 1 and 2 may well return different
12900 answers for target_can_run_breakpoint_commands().
12901 Given absence of finer grained resetting, we get to do
12902 it all the time. */
12903 if (b->extra_string != NULL)
12904 update_dprintf_command_list (b);
12905}
12906
2d9442cc
HZ
12907/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12908
12909static void
12910dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12911{
f00aae0f 12912 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 12913 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
12914 tp->extra_string);
12915 print_recreate_thread (tp, fp);
12916}
12917
9d6e6e84
HZ
12918/* Implement the "after_condition_true" breakpoint_ops method for
12919 dprintf.
12920
12921 dprintf's are implemented with regular commands in their command
12922 list, but we run the commands here instead of before presenting the
12923 stop to the user, as dprintf's don't actually cause a stop. This
12924 also makes it so that the commands of multiple dprintfs at the same
12925 address are all handled. */
12926
12927static void
12928dprintf_after_condition_true (struct bpstats *bs)
12929{
04afa70c 12930 struct bpstats tmp_bs;
9d6e6e84
HZ
12931 struct bpstats *tmp_bs_p = &tmp_bs;
12932
12933 /* dprintf's never cause a stop. This wasn't set in the
12934 check_status hook instead because that would make the dprintf's
12935 condition not be evaluated. */
12936 bs->stop = 0;
12937
12938 /* Run the command list here. Take ownership of it instead of
12939 copying. We never want these commands to run later in
12940 bpstat_do_actions, if a breakpoint that causes a stop happens to
12941 be set at same address as this dprintf, or even if running the
12942 commands here throws. */
12943 tmp_bs.commands = bs->commands;
12944 bs->commands = NULL;
9d6e6e84
HZ
12945
12946 bpstat_do_actions_1 (&tmp_bs_p);
12947
12948 /* 'tmp_bs.commands' will usually be NULL by now, but
12949 bpstat_do_actions_1 may return early without processing the whole
12950 list. */
9d6e6e84
HZ
12951}
12952
983af33b
SDJ
12953/* The breakpoint_ops structure to be used on static tracepoints with
12954 markers (`-m'). */
12955
12956static void
f00aae0f 12957strace_marker_create_sals_from_location (const struct event_location *location,
5f700d83 12958 struct linespec_result *canonical,
f00aae0f 12959 enum bptype type_wanted)
983af33b
SDJ
12960{
12961 struct linespec_sals lsal;
f00aae0f 12962 const char *arg_start, *arg;
983af33b 12963
a20714ff 12964 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 12965 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 12966
f2fc3015
TT
12967 std::string str (arg_start, arg - arg_start);
12968 const char *ptr = str.c_str ();
a20714ff
PA
12969 canonical->location
12970 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 12971
8e9e35b1
TT
12972 lsal.canonical
12973 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12974 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
12975}
12976
12977static void
12978strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12979 struct linespec_result *canonical,
e1e01040
PA
12980 gdb::unique_xmalloc_ptr<char> cond_string,
12981 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12982 enum bptype type_wanted,
12983 enum bpdisp disposition,
12984 int thread,
12985 int task, int ignore_count,
12986 const struct breakpoint_ops *ops,
12987 int from_tty, int enabled,
44f238bb 12988 int internal, unsigned flags)
983af33b 12989{
6c5b2ebe 12990 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
12991
12992 /* If the user is creating a static tracepoint by marker id
12993 (strace -m MARKER_ID), then store the sals index, so that
12994 breakpoint_re_set can try to match up which of the newly
12995 found markers corresponds to this one, and, don't try to
12996 expand multiple locations for each sal, given than SALS
12997 already should contain all sals for MARKER_ID. */
12998
6c5b2ebe 12999 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13000 {
6c5b2ebe
PA
13001 event_location_up location
13002 = copy_event_location (canonical->location.get ());
983af33b 13003
b270e6f9 13004 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13005 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13006 std::move (location), NULL,
e1e01040
PA
13007 std::move (cond_string),
13008 std::move (extra_string),
e7e0cddf 13009 type_wanted, disposition,
983af33b 13010 thread, task, ignore_count, ops,
44f238bb 13011 from_tty, enabled, internal, flags,
983af33b
SDJ
13012 canonical->special_display);
13013 /* Given that its possible to have multiple markers with
13014 the same string id, if the user is creating a static
13015 tracepoint by marker id ("strace -m MARKER_ID"), then
13016 store the sals index, so that breakpoint_re_set can
13017 try to match up which of the newly found markers
13018 corresponds to this one */
13019 tp->static_trace_marker_id_idx = i;
13020
b270e6f9 13021 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13022 }
13023}
13024
6c5b2ebe 13025static std::vector<symtab_and_line>
f00aae0f
KS
13026strace_marker_decode_location (struct breakpoint *b,
13027 const struct event_location *location,
6c5b2ebe 13028 struct program_space *search_pspace)
983af33b
SDJ
13029{
13030 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 13031 const char *s = get_linespec_location (location)->spec_string;
983af33b 13032
6c5b2ebe
PA
13033 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13034 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13035 {
6c5b2ebe
PA
13036 sals[0] = sals[tp->static_trace_marker_id_idx];
13037 sals.resize (1);
13038 return sals;
983af33b
SDJ
13039 }
13040 else
5d9310c4 13041 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
13042}
13043
13044static struct breakpoint_ops strace_marker_breakpoint_ops;
13045
13046static int
13047strace_marker_p (struct breakpoint *b)
13048{
13049 return b->ops == &strace_marker_breakpoint_ops;
13050}
13051
53a5351d 13052/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13053 structures. */
c906108c
SS
13054
13055void
fba45db2 13056delete_breakpoint (struct breakpoint *bpt)
c906108c 13057{
52f0bd74 13058 struct breakpoint *b;
c906108c 13059
8a3fe4f8 13060 gdb_assert (bpt != NULL);
c906108c 13061
4a64f543
MS
13062 /* Has this bp already been deleted? This can happen because
13063 multiple lists can hold pointers to bp's. bpstat lists are
13064 especial culprits.
13065
13066 One example of this happening is a watchpoint's scope bp. When
13067 the scope bp triggers, we notice that the watchpoint is out of
13068 scope, and delete it. We also delete its scope bp. But the
13069 scope bp is marked "auto-deleting", and is already on a bpstat.
13070 That bpstat is then checked for auto-deleting bp's, which are
13071 deleted.
13072
13073 A real solution to this problem might involve reference counts in
13074 bp's, and/or giving them pointers back to their referencing
13075 bpstat's, and teaching delete_breakpoint to only free a bp's
13076 storage when no more references were extent. A cheaper bandaid
13077 was chosen. */
c906108c
SS
13078 if (bpt->type == bp_none)
13079 return;
13080
4a64f543
MS
13081 /* At least avoid this stale reference until the reference counting
13082 of breakpoints gets resolved. */
d0fb5eae 13083 if (bpt->related_breakpoint != bpt)
e5a0a904 13084 {
d0fb5eae 13085 struct breakpoint *related;
3a5c3e22 13086 struct watchpoint *w;
d0fb5eae
JK
13087
13088 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13089 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13090 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13091 w = (struct watchpoint *) bpt;
13092 else
13093 w = NULL;
13094 if (w != NULL)
13095 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13096
13097 /* Unlink bpt from the bpt->related_breakpoint ring. */
13098 for (related = bpt; related->related_breakpoint != bpt;
13099 related = related->related_breakpoint);
13100 related->related_breakpoint = bpt->related_breakpoint;
13101 bpt->related_breakpoint = bpt;
e5a0a904
JK
13102 }
13103
a9634178
TJB
13104 /* watch_command_1 creates a watchpoint but only sets its number if
13105 update_watchpoint succeeds in creating its bp_locations. If there's
13106 a problem in that process, we'll be asked to delete the half-created
13107 watchpoint. In that case, don't announce the deletion. */
13108 if (bpt->number)
76727919 13109 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 13110
c906108c
SS
13111 if (breakpoint_chain == bpt)
13112 breakpoint_chain = bpt->next;
13113
c906108c
SS
13114 ALL_BREAKPOINTS (b)
13115 if (b->next == bpt)
c5aa993b
JM
13116 {
13117 b->next = bpt->next;
13118 break;
13119 }
c906108c 13120
f431efe5
PA
13121 /* Be sure no bpstat's are pointing at the breakpoint after it's
13122 been freed. */
13123 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13124 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13125 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13126 commands are associated with the bpstat; if we remove it here,
13127 then the later call to bpstat_do_actions (&stop_bpstat); in
13128 event-top.c won't do anything, and temporary breakpoints with
13129 commands won't work. */
13130
13131 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13132
4a64f543
MS
13133 /* Now that breakpoint is removed from breakpoint list, update the
13134 global location list. This will remove locations that used to
13135 belong to this breakpoint. Do this before freeing the breakpoint
13136 itself, since remove_breakpoint looks at location's owner. It
13137 might be better design to have location completely
13138 self-contained, but it's not the case now. */
44702360 13139 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13140
4a64f543
MS
13141 /* On the chance that someone will soon try again to delete this
13142 same bp, we mark it as deleted before freeing its storage. */
c906108c 13143 bpt->type = bp_none;
4d01a485 13144 delete bpt;
c906108c
SS
13145}
13146
51be5b68
PA
13147/* Iterator function to call a user-provided callback function once
13148 for each of B and its related breakpoints. */
13149
13150static void
13151iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13152 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13153{
13154 struct breakpoint *related;
13155
13156 related = b;
13157 do
13158 {
13159 struct breakpoint *next;
13160
13161 /* FUNCTION may delete RELATED. */
13162 next = related->related_breakpoint;
13163
13164 if (next == related)
13165 {
13166 /* RELATED is the last ring entry. */
48649e1b 13167 function (related);
51be5b68
PA
13168
13169 /* FUNCTION may have deleted it, so we'd never reach back to
13170 B. There's nothing left to do anyway, so just break
13171 out. */
13172 break;
13173 }
13174 else
48649e1b 13175 function (related);
51be5b68
PA
13176
13177 related = next;
13178 }
13179 while (related != b);
13180}
95a42b64 13181
4495129a 13182static void
981a3fb3 13183delete_command (const char *arg, int from_tty)
c906108c 13184{
35df4500 13185 struct breakpoint *b, *b_tmp;
c906108c 13186
ea9365bb
TT
13187 dont_repeat ();
13188
c906108c
SS
13189 if (arg == 0)
13190 {
13191 int breaks_to_delete = 0;
13192
46c6471b
PA
13193 /* Delete all breakpoints if no argument. Do not delete
13194 internal breakpoints, these have to be deleted with an
13195 explicit breakpoint number argument. */
c5aa993b 13196 ALL_BREAKPOINTS (b)
46c6471b 13197 if (user_breakpoint_p (b))
973d738b
DJ
13198 {
13199 breaks_to_delete = 1;
13200 break;
13201 }
c906108c
SS
13202
13203 /* Ask user only if there are some breakpoints to delete. */
13204 if (!from_tty
e2e0b3e5 13205 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13206 {
35df4500 13207 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13208 if (user_breakpoint_p (b))
c5aa993b 13209 delete_breakpoint (b);
c906108c
SS
13210 }
13211 }
13212 else
48649e1b 13213 map_breakpoint_numbers
b926417a 13214 (arg, [&] (breakpoint *br)
48649e1b 13215 {
b926417a 13216 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 13217 });
c906108c
SS
13218}
13219
c2f4122d
PA
13220/* Return true if all locations of B bound to PSPACE are pending. If
13221 PSPACE is NULL, all locations of all program spaces are
13222 considered. */
13223
0d381245 13224static int
c2f4122d 13225all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13226{
c2f4122d
PA
13227 struct bp_location *loc;
13228
13229 for (loc = b->loc; loc != NULL; loc = loc->next)
13230 if ((pspace == NULL
13231 || loc->pspace == pspace)
13232 && !loc->shlib_disabled
8645ff69 13233 && !loc->pspace->executing_startup)
0d381245
VP
13234 return 0;
13235 return 1;
fe3f5fa8
VP
13236}
13237
776592bf
DE
13238/* Subroutine of update_breakpoint_locations to simplify it.
13239 Return non-zero if multiple fns in list LOC have the same name.
13240 Null names are ignored. */
13241
13242static int
13243ambiguous_names_p (struct bp_location *loc)
13244{
13245 struct bp_location *l;
459a2e4c
TT
13246 htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13247 xcalloc, xfree);
776592bf
DE
13248
13249 for (l = loc; l != NULL; l = l->next)
13250 {
13251 const char **slot;
13252 const char *name = l->function_name;
13253
13254 /* Allow for some names to be NULL, ignore them. */
13255 if (name == NULL)
13256 continue;
13257
13258 slot = (const char **) htab_find_slot (htab, (const void *) name,
13259 INSERT);
4a64f543
MS
13260 /* NOTE: We can assume slot != NULL here because xcalloc never
13261 returns NULL. */
776592bf
DE
13262 if (*slot != NULL)
13263 {
13264 htab_delete (htab);
13265 return 1;
13266 }
13267 *slot = name;
13268 }
13269
13270 htab_delete (htab);
13271 return 0;
13272}
13273
0fb4aa4b
PA
13274/* When symbols change, it probably means the sources changed as well,
13275 and it might mean the static tracepoint markers are no longer at
13276 the same address or line numbers they used to be at last we
13277 checked. Losing your static tracepoints whenever you rebuild is
13278 undesirable. This function tries to resync/rematch gdb static
13279 tracepoints with the markers on the target, for static tracepoints
13280 that have not been set by marker id. Static tracepoint that have
13281 been set by marker id are reset by marker id in breakpoint_re_set.
13282 The heuristic is:
13283
13284 1) For a tracepoint set at a specific address, look for a marker at
13285 the old PC. If one is found there, assume to be the same marker.
13286 If the name / string id of the marker found is different from the
13287 previous known name, assume that means the user renamed the marker
13288 in the sources, and output a warning.
13289
13290 2) For a tracepoint set at a given line number, look for a marker
13291 at the new address of the old line number. If one is found there,
13292 assume to be the same marker. If the name / string id of the
13293 marker found is different from the previous known name, assume that
13294 means the user renamed the marker in the sources, and output a
13295 warning.
13296
13297 3) If a marker is no longer found at the same address or line, it
13298 may mean the marker no longer exists. But it may also just mean
13299 the code changed a bit. Maybe the user added a few lines of code
13300 that made the marker move up or down (in line number terms). Ask
13301 the target for info about the marker with the string id as we knew
13302 it. If found, update line number and address in the matching
13303 static tracepoint. This will get confused if there's more than one
13304 marker with the same ID (possible in UST, although unadvised
13305 precisely because it confuses tools). */
13306
13307static struct symtab_and_line
13308update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13309{
d9b3f62e 13310 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13311 struct static_tracepoint_marker marker;
13312 CORE_ADDR pc;
0fb4aa4b
PA
13313
13314 pc = sal.pc;
13315 if (sal.line)
13316 find_line_pc (sal.symtab, sal.line, &pc);
13317
13318 if (target_static_tracepoint_marker_at (pc, &marker))
13319 {
5d9310c4 13320 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 13321 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
13322 b->number, tp->static_trace_marker_id.c_str (),
13323 marker.str_id.c_str ());
0fb4aa4b 13324
5d9310c4 13325 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
13326
13327 return sal;
13328 }
13329
13330 /* Old marker wasn't found on target at lineno. Try looking it up
13331 by string ID. */
13332 if (!sal.explicit_pc
13333 && sal.line != 0
13334 && sal.symtab != NULL
5d9310c4 13335 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 13336 {
5d9310c4
SM
13337 std::vector<static_tracepoint_marker> markers
13338 = target_static_tracepoint_markers_by_strid
13339 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 13340
5d9310c4 13341 if (!markers.empty ())
0fb4aa4b 13342 {
0fb4aa4b 13343 struct symbol *sym;
80e1d417 13344 struct static_tracepoint_marker *tpmarker;
79a45e25 13345 struct ui_out *uiout = current_uiout;
67994074 13346 struct explicit_location explicit_loc;
0fb4aa4b 13347
5d9310c4 13348 tpmarker = &markers[0];
0fb4aa4b 13349
5d9310c4 13350 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
13351
13352 warning (_("marker for static tracepoint %d (%s) not "
13353 "found at previous line number"),
5d9310c4 13354 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 13355
51abb421 13356 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13357 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13358 uiout->text ("Now in ");
0fb4aa4b
PA
13359 if (sym)
13360 {
cbe56571
TT
13361 uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13362 ui_out_style_kind::FUNCTION);
112e8700 13363 uiout->text (" at ");
0fb4aa4b 13364 }
112e8700 13365 uiout->field_string ("file",
cbe56571
TT
13366 symtab_to_filename_for_display (sal2.symtab),
13367 ui_out_style_kind::FILE);
112e8700 13368 uiout->text (":");
0fb4aa4b 13369
112e8700 13370 if (uiout->is_mi_like_p ())
0fb4aa4b 13371 {
0b0865da 13372 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13373
112e8700 13374 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13375 }
13376
112e8700
SM
13377 uiout->field_int ("line", sal2.line);
13378 uiout->text ("\n");
0fb4aa4b 13379
80e1d417 13380 b->loc->line_number = sal2.line;
2f202fde 13381 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13382
d28cd78a 13383 b->location.reset (NULL);
67994074
KS
13384 initialize_explicit_location (&explicit_loc);
13385 explicit_loc.source_filename
00e52e53 13386 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13387 explicit_loc.line_offset.offset = b->loc->line_number;
13388 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13389 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13390
13391 /* Might be nice to check if function changed, and warn if
13392 so. */
0fb4aa4b
PA
13393 }
13394 }
13395 return sal;
13396}
13397
8d3788bd
VP
13398/* Returns 1 iff locations A and B are sufficiently same that
13399 we don't need to report breakpoint as changed. */
13400
13401static int
13402locations_are_equal (struct bp_location *a, struct bp_location *b)
13403{
13404 while (a && b)
13405 {
13406 if (a->address != b->address)
13407 return 0;
13408
13409 if (a->shlib_disabled != b->shlib_disabled)
13410 return 0;
13411
13412 if (a->enabled != b->enabled)
13413 return 0;
13414
13415 a = a->next;
13416 b = b->next;
13417 }
13418
13419 if ((a == NULL) != (b == NULL))
13420 return 0;
13421
13422 return 1;
13423}
13424
c2f4122d
PA
13425/* Split all locations of B that are bound to PSPACE out of B's
13426 location list to a separate list and return that list's head. If
13427 PSPACE is NULL, hoist out all locations of B. */
13428
13429static struct bp_location *
13430hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13431{
13432 struct bp_location head;
13433 struct bp_location *i = b->loc;
13434 struct bp_location **i_link = &b->loc;
13435 struct bp_location *hoisted = &head;
13436
13437 if (pspace == NULL)
13438 {
13439 i = b->loc;
13440 b->loc = NULL;
13441 return i;
13442 }
13443
13444 head.next = NULL;
13445
13446 while (i != NULL)
13447 {
13448 if (i->pspace == pspace)
13449 {
13450 *i_link = i->next;
13451 i->next = NULL;
13452 hoisted->next = i;
13453 hoisted = i;
13454 }
13455 else
13456 i_link = &i->next;
13457 i = *i_link;
13458 }
13459
13460 return head.next;
13461}
13462
13463/* Create new breakpoint locations for B (a hardware or software
13464 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13465 zero, then B is a ranged breakpoint. Only recreates locations for
13466 FILTER_PSPACE. Locations of other program spaces are left
13467 untouched. */
f1310107 13468
0e30163f 13469void
0d381245 13470update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13471 struct program_space *filter_pspace,
6c5b2ebe
PA
13472 gdb::array_view<const symtab_and_line> sals,
13473 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 13474{
c2f4122d 13475 struct bp_location *existing_locations;
0d381245 13476
6c5b2ebe 13477 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13478 {
13479 /* Ranged breakpoints have only one start location and one end
13480 location. */
13481 b->enable_state = bp_disabled;
f8eba3c6
TT
13482 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13483 "multiple locations found\n"),
13484 b->number);
13485 return;
13486 }
f1310107 13487
4a64f543
MS
13488 /* If there's no new locations, and all existing locations are
13489 pending, don't do anything. This optimizes the common case where
13490 all locations are in the same shared library, that was unloaded.
13491 We'd like to retain the location, so that when the library is
13492 loaded again, we don't loose the enabled/disabled status of the
13493 individual locations. */
6c5b2ebe 13494 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13495 return;
13496
c2f4122d 13497 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13498
6c5b2ebe 13499 for (const auto &sal : sals)
fe3f5fa8 13500 {
f8eba3c6
TT
13501 struct bp_location *new_loc;
13502
6c5b2ebe 13503 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13504
6c5b2ebe 13505 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13506
0d381245
VP
13507 /* Reparse conditions, they might contain references to the
13508 old symtab. */
13509 if (b->cond_string != NULL)
13510 {
bbc13ae3 13511 const char *s;
fe3f5fa8 13512
0d381245 13513 s = b->cond_string;
a70b8144 13514 try
0d381245 13515 {
6c5b2ebe
PA
13516 new_loc->cond = parse_exp_1 (&s, sal.pc,
13517 block_for_pc (sal.pc),
0d381245
VP
13518 0);
13519 }
230d2906 13520 catch (const gdb_exception_error &e)
0d381245 13521 {
3e43a32a
MS
13522 warning (_("failed to reevaluate condition "
13523 "for breakpoint %d: %s"),
3d6e9d23 13524 b->number, e.what ());
0d381245
VP
13525 new_loc->enabled = 0;
13526 }
13527 }
fe3f5fa8 13528
6c5b2ebe 13529 if (!sals_end.empty ())
f1310107 13530 {
6c5b2ebe 13531 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13532
6c5b2ebe 13533 new_loc->length = end - sals[0].pc + 1;
f1310107 13534 }
0d381245 13535 }
fe3f5fa8 13536
4a64f543
MS
13537 /* If possible, carry over 'disable' status from existing
13538 breakpoints. */
0d381245
VP
13539 {
13540 struct bp_location *e = existing_locations;
776592bf
DE
13541 /* If there are multiple breakpoints with the same function name,
13542 e.g. for inline functions, comparing function names won't work.
13543 Instead compare pc addresses; this is just a heuristic as things
13544 may have moved, but in practice it gives the correct answer
13545 often enough until a better solution is found. */
13546 int have_ambiguous_names = ambiguous_names_p (b->loc);
13547
0d381245
VP
13548 for (; e; e = e->next)
13549 {
13550 if (!e->enabled && e->function_name)
13551 {
13552 struct bp_location *l = b->loc;
776592bf
DE
13553 if (have_ambiguous_names)
13554 {
13555 for (; l; l = l->next)
f1310107 13556 if (breakpoint_locations_match (e, l))
776592bf
DE
13557 {
13558 l->enabled = 0;
13559 break;
13560 }
13561 }
13562 else
13563 {
13564 for (; l; l = l->next)
13565 if (l->function_name
13566 && strcmp (e->function_name, l->function_name) == 0)
13567 {
13568 l->enabled = 0;
13569 break;
13570 }
13571 }
0d381245
VP
13572 }
13573 }
13574 }
fe3f5fa8 13575
8d3788bd 13576 if (!locations_are_equal (existing_locations, b->loc))
76727919 13577 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
13578}
13579
f00aae0f 13580/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13581 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13582
6c5b2ebe 13583static std::vector<symtab_and_line>
f00aae0f 13584location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13585 struct program_space *search_pspace, int *found)
ef23e705 13586{
cc06b668 13587 struct gdb_exception exception;
ef23e705 13588
983af33b 13589 gdb_assert (b->ops != NULL);
ef23e705 13590
6c5b2ebe
PA
13591 std::vector<symtab_and_line> sals;
13592
a70b8144 13593 try
ef23e705 13594 {
6c5b2ebe 13595 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13596 }
94aeb44b 13597 catch (gdb_exception_error &e)
ef23e705
TJB
13598 {
13599 int not_found_and_ok = 0;
492d29ea 13600
ef23e705
TJB
13601 /* For pending breakpoints, it's expected that parsing will
13602 fail until the right shared library is loaded. User has
13603 already told to create pending breakpoints and don't need
13604 extra messages. If breakpoint is in bp_shlib_disabled
13605 state, then user already saw the message about that
13606 breakpoint being disabled, and don't want to see more
13607 errors. */
58438ac1 13608 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13609 && (b->condition_not_parsed
13610 || (b->loc != NULL
13611 && search_pspace != NULL
13612 && b->loc->pspace != search_pspace)
ef23e705 13613 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13614 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13615 || b->enable_state == bp_disabled))
13616 not_found_and_ok = 1;
13617
13618 if (!not_found_and_ok)
13619 {
13620 /* We surely don't want to warn about the same breakpoint
13621 10 times. One solution, implemented here, is disable
13622 the breakpoint on error. Another solution would be to
13623 have separate 'warning emitted' flag. Since this
13624 happens only when a binary has changed, I don't know
13625 which approach is better. */
13626 b->enable_state = bp_disabled;
eedc3f4f 13627 throw;
ef23e705 13628 }
94aeb44b
TT
13629
13630 exception = std::move (e);
ef23e705
TJB
13631 }
13632
492d29ea 13633 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13634 {
6c5b2ebe
PA
13635 for (auto &sal : sals)
13636 resolve_sal_pc (&sal);
f00aae0f 13637 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13638 {
ed1d1739
KS
13639 char *cond_string, *extra_string;
13640 int thread, task;
ef23e705 13641
6c5b2ebe 13642 find_condition_and_thread (b->extra_string, sals[0].pc,
e7e0cddf
SS
13643 &cond_string, &thread, &task,
13644 &extra_string);
f00aae0f 13645 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13646 if (cond_string)
13647 b->cond_string = cond_string;
13648 b->thread = thread;
13649 b->task = task;
e7e0cddf 13650 if (extra_string)
f00aae0f
KS
13651 {
13652 xfree (b->extra_string);
13653 b->extra_string = extra_string;
13654 }
ef23e705
TJB
13655 b->condition_not_parsed = 0;
13656 }
13657
983af33b 13658 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13659 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13660
58438ac1
TT
13661 *found = 1;
13662 }
13663 else
13664 *found = 0;
ef23e705
TJB
13665
13666 return sals;
13667}
13668
348d480f
PA
13669/* The default re_set method, for typical hardware or software
13670 breakpoints. Reevaluate the breakpoint and recreate its
13671 locations. */
13672
13673static void
28010a5d 13674breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13675{
c2f4122d 13676 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13677 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13678
6c5b2ebe
PA
13679 int found;
13680 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13681 filter_pspace, &found);
ef23e705 13682 if (found)
6c5b2ebe 13683 expanded = std::move (sals);
ef23e705 13684
f00aae0f 13685 if (b->location_range_end != NULL)
f1310107 13686 {
6c5b2ebe
PA
13687 std::vector<symtab_and_line> sals_end
13688 = location_to_sals (b, b->location_range_end.get (),
13689 filter_pspace, &found);
f1310107 13690 if (found)
6c5b2ebe 13691 expanded_end = std::move (sals_end);
f1310107
TJB
13692 }
13693
c2f4122d 13694 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13695}
13696
983af33b
SDJ
13697/* Default method for creating SALs from an address string. It basically
13698 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13699
13700static void
f00aae0f
KS
13701create_sals_from_location_default (const struct event_location *location,
13702 struct linespec_result *canonical,
13703 enum bptype type_wanted)
983af33b 13704{
f00aae0f 13705 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13706}
13707
13708/* Call create_breakpoints_sal for the given arguments. This is the default
13709 function for the `create_breakpoints_sal' method of
13710 breakpoint_ops. */
13711
13712static void
13713create_breakpoints_sal_default (struct gdbarch *gdbarch,
13714 struct linespec_result *canonical,
e1e01040
PA
13715 gdb::unique_xmalloc_ptr<char> cond_string,
13716 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13717 enum bptype type_wanted,
13718 enum bpdisp disposition,
13719 int thread,
13720 int task, int ignore_count,
13721 const struct breakpoint_ops *ops,
13722 int from_tty, int enabled,
44f238bb 13723 int internal, unsigned flags)
983af33b 13724{
e1e01040
PA
13725 create_breakpoints_sal (gdbarch, canonical,
13726 std::move (cond_string),
13727 std::move (extra_string),
983af33b
SDJ
13728 type_wanted, disposition,
13729 thread, task, ignore_count, ops, from_tty,
44f238bb 13730 enabled, internal, flags);
983af33b
SDJ
13731}
13732
13733/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13734 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13735
6c5b2ebe 13736static std::vector<symtab_and_line>
f00aae0f
KS
13737decode_location_default (struct breakpoint *b,
13738 const struct event_location *location,
6c5b2ebe 13739 struct program_space *search_pspace)
983af33b
SDJ
13740{
13741 struct linespec_result canonical;
13742
c2f4122d 13743 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
983af33b
SDJ
13744 (struct symtab *) NULL, 0,
13745 &canonical, multiple_symbols_all,
13746 b->filter);
13747
13748 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13749 gdb_assert (canonical.lsals.size () < 2);
983af33b 13750
6c5b2ebe 13751 if (!canonical.lsals.empty ())
983af33b 13752 {
6c5b2ebe
PA
13753 const linespec_sals &lsal = canonical.lsals[0];
13754 return std::move (lsal.sals);
983af33b 13755 }
6c5b2ebe 13756 return {};
983af33b
SDJ
13757}
13758
bf469271 13759/* Reset a breakpoint. */
c906108c 13760
bf469271
PA
13761static void
13762breakpoint_re_set_one (breakpoint *b)
c906108c 13763{
fdf44873
TT
13764 input_radix = b->input_radix;
13765 set_language (b->language);
c906108c 13766
348d480f 13767 b->ops->re_set (b);
c906108c
SS
13768}
13769
c2f4122d
PA
13770/* Re-set breakpoint locations for the current program space.
13771 Locations bound to other program spaces are left untouched. */
13772
c906108c 13773void
69de3c6a 13774breakpoint_re_set (void)
c906108c 13775{
35df4500 13776 struct breakpoint *b, *b_tmp;
2a7f3dff 13777
c5aa993b 13778 {
fdf44873
TT
13779 scoped_restore_current_language save_language;
13780 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13781 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13782
8e817061
JB
13783 /* breakpoint_re_set_one sets the current_language to the language
13784 of the breakpoint it is resetting (see prepare_re_set_context)
13785 before re-evaluating the breakpoint's location. This change can
13786 unfortunately get undone by accident if the language_mode is set
13787 to auto, and we either switch frames, or more likely in this context,
13788 we select the current frame.
13789
13790 We prevent this by temporarily turning the language_mode to
13791 language_mode_manual. We restore it once all breakpoints
13792 have been reset. */
13793 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13794 language_mode = language_mode_manual;
13795
5ed8105e
PA
13796 /* Note: we must not try to insert locations until after all
13797 breakpoints have been re-set. Otherwise, e.g., when re-setting
13798 breakpoint 1, we'd insert the locations of breakpoint 2, which
13799 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13800
5ed8105e
PA
13801 ALL_BREAKPOINTS_SAFE (b, b_tmp)
13802 {
a70b8144 13803 try
bf469271
PA
13804 {
13805 breakpoint_re_set_one (b);
13806 }
230d2906 13807 catch (const gdb_exception &ex)
bf469271
PA
13808 {
13809 exception_fprintf (gdb_stderr, ex,
13810 "Error in re-setting breakpoint %d: ",
13811 b->number);
13812 }
5ed8105e 13813 }
5ed8105e
PA
13814
13815 jit_breakpoint_re_set ();
13816 }
6c95b8df 13817
af02033e
PP
13818 create_overlay_event_breakpoint ();
13819 create_longjmp_master_breakpoint ();
13820 create_std_terminate_master_breakpoint ();
186c406b 13821 create_exception_master_breakpoint ();
2a7f3dff
PA
13822
13823 /* Now we can insert. */
13824 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
13825}
13826\f
c906108c
SS
13827/* Reset the thread number of this breakpoint:
13828
13829 - If the breakpoint is for all threads, leave it as-is.
4a64f543 13830 - Else, reset it to the current thread for inferior_ptid. */
c906108c 13831void
fba45db2 13832breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
13833{
13834 if (b->thread != -1)
13835 {
00431a78 13836 b->thread = inferior_thread ()->global_num;
6c95b8df
PA
13837
13838 /* We're being called after following a fork. The new fork is
13839 selected as current, and unless this was a vfork will have a
13840 different program space from the original thread. Reset that
13841 as well. */
13842 b->loc->pspace = current_program_space;
c906108c
SS
13843 }
13844}
13845
03ac34d5
MS
13846/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13847 If from_tty is nonzero, it prints a message to that effect,
13848 which ends with a period (no newline). */
13849
c906108c 13850void
fba45db2 13851set_ignore_count (int bptnum, int count, int from_tty)
c906108c 13852{
52f0bd74 13853 struct breakpoint *b;
c906108c
SS
13854
13855 if (count < 0)
13856 count = 0;
13857
13858 ALL_BREAKPOINTS (b)
13859 if (b->number == bptnum)
c5aa993b 13860 {
d77f58be
SS
13861 if (is_tracepoint (b))
13862 {
13863 if (from_tty && count != 0)
13864 printf_filtered (_("Ignore count ignored for tracepoint %d."),
13865 bptnum);
13866 return;
13867 }
13868
c5aa993b 13869 b->ignore_count = count;
221ea385
KS
13870 if (from_tty)
13871 {
13872 if (count == 0)
3e43a32a
MS
13873 printf_filtered (_("Will stop next time "
13874 "breakpoint %d is reached."),
221ea385
KS
13875 bptnum);
13876 else if (count == 1)
a3f17187 13877 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
13878 bptnum);
13879 else
3e43a32a
MS
13880 printf_filtered (_("Will ignore next %d "
13881 "crossings of breakpoint %d."),
221ea385
KS
13882 count, bptnum);
13883 }
76727919 13884 gdb::observers::breakpoint_modified.notify (b);
c5aa993b
JM
13885 return;
13886 }
c906108c 13887
8a3fe4f8 13888 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
13889}
13890
c906108c
SS
13891/* Command to set ignore-count of breakpoint N to COUNT. */
13892
13893static void
0b39b52e 13894ignore_command (const char *args, int from_tty)
c906108c 13895{
0b39b52e 13896 const char *p = args;
52f0bd74 13897 int num;
c906108c
SS
13898
13899 if (p == 0)
e2e0b3e5 13900 error_no_arg (_("a breakpoint number"));
c5aa993b 13901
c906108c 13902 num = get_number (&p);
5c44784c 13903 if (num == 0)
8a3fe4f8 13904 error (_("bad breakpoint number: '%s'"), args);
c906108c 13905 if (*p == 0)
8a3fe4f8 13906 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
13907
13908 set_ignore_count (num,
13909 longest_to_int (value_as_long (parse_and_eval (p))),
13910 from_tty);
221ea385
KS
13911 if (from_tty)
13912 printf_filtered ("\n");
c906108c
SS
13913}
13914\f
d0fe4701
XR
13915
13916/* Call FUNCTION on each of the breakpoints with numbers in the range
13917 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
13918
13919static void
d0fe4701
XR
13920map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13921 gdb::function_view<void (breakpoint *)> function)
c906108c 13922{
d0fe4701
XR
13923 if (bp_num_range.first == 0)
13924 {
13925 warning (_("bad breakpoint number at or near '%d'"),
13926 bp_num_range.first);
13927 }
13928 else
c906108c 13929 {
d0fe4701 13930 struct breakpoint *b, *tmp;
197f0a60 13931
d0fe4701 13932 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 13933 {
d0fe4701
XR
13934 bool match = false;
13935
5c44784c 13936 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 13937 if (b->number == i)
5c44784c 13938 {
bfd28288 13939 match = true;
48649e1b 13940 function (b);
11cf8741 13941 break;
5c44784c 13942 }
bfd28288 13943 if (!match)
d0fe4701 13944 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 13945 }
c906108c
SS
13946 }
13947}
13948
d0fe4701
XR
13949/* Call FUNCTION on each of the breakpoints whose numbers are given in
13950 ARGS. */
13951
13952static void
13953map_breakpoint_numbers (const char *args,
13954 gdb::function_view<void (breakpoint *)> function)
13955{
13956 if (args == NULL || *args == '\0')
13957 error_no_arg (_("one or more breakpoint numbers"));
13958
13959 number_or_range_parser parser (args);
13960
13961 while (!parser.finished ())
13962 {
13963 int num = parser.get_number ();
13964 map_breakpoint_number_range (std::make_pair (num, num), function);
13965 }
13966}
13967
13968/* Return the breakpoint location structure corresponding to the
13969 BP_NUM and LOC_NUM values. */
13970
0d381245 13971static struct bp_location *
d0fe4701 13972find_location_by_number (int bp_num, int loc_num)
0d381245 13973{
0d381245 13974 struct breakpoint *b;
0d381245
VP
13975
13976 ALL_BREAKPOINTS (b)
13977 if (b->number == bp_num)
13978 {
13979 break;
13980 }
13981
13982 if (!b || b->number != bp_num)
d0fe4701 13983 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 13984
0d381245 13985 if (loc_num == 0)
d0fe4701 13986 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 13987
d0fe4701
XR
13988 int n = 0;
13989 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13990 if (++n == loc_num)
13991 return loc;
13992
13993 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
13994}
13995
95e95a6d
PA
13996/* Modes of operation for extract_bp_num. */
13997enum class extract_bp_kind
13998{
13999 /* Extracting a breakpoint number. */
14000 bp,
14001
14002 /* Extracting a location number. */
14003 loc,
14004};
14005
14006/* Extract a breakpoint or location number (as determined by KIND)
14007 from the string starting at START. TRAILER is a character which
14008 can be found after the number. If you don't want a trailer, use
14009 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14010 string. This always returns a positive integer. */
14011
14012static int
14013extract_bp_num (extract_bp_kind kind, const char *start,
14014 int trailer, const char **end_out = NULL)
14015{
14016 const char *end = start;
14017 int num = get_number_trailer (&end, trailer);
14018 if (num < 0)
14019 error (kind == extract_bp_kind::bp
14020 ? _("Negative breakpoint number '%.*s'")
14021 : _("Negative breakpoint location number '%.*s'"),
14022 int (end - start), start);
14023 if (num == 0)
14024 error (kind == extract_bp_kind::bp
14025 ? _("Bad breakpoint number '%.*s'")
14026 : _("Bad breakpoint location number '%.*s'"),
14027 int (end - start), start);
14028
14029 if (end_out != NULL)
14030 *end_out = end;
14031 return num;
14032}
14033
14034/* Extract a breakpoint or location range (as determined by KIND) in
14035 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14036 representing the (inclusive) range. The returned pair's elements
14037 are always positive integers. */
14038
14039static std::pair<int, int>
14040extract_bp_or_bp_range (extract_bp_kind kind,
14041 const std::string &arg,
14042 std::string::size_type arg_offset)
14043{
14044 std::pair<int, int> range;
14045 const char *bp_loc = &arg[arg_offset];
14046 std::string::size_type dash = arg.find ('-', arg_offset);
14047 if (dash != std::string::npos)
14048 {
14049 /* bp_loc is a range (x-z). */
14050 if (arg.length () == dash + 1)
14051 error (kind == extract_bp_kind::bp
14052 ? _("Bad breakpoint number at or near: '%s'")
14053 : _("Bad breakpoint location number at or near: '%s'"),
14054 bp_loc);
14055
14056 const char *end;
14057 const char *start_first = bp_loc;
14058 const char *start_second = &arg[dash + 1];
14059 range.first = extract_bp_num (kind, start_first, '-');
14060 range.second = extract_bp_num (kind, start_second, '\0', &end);
14061
14062 if (range.first > range.second)
14063 error (kind == extract_bp_kind::bp
14064 ? _("Inverted breakpoint range at '%.*s'")
14065 : _("Inverted breakpoint location range at '%.*s'"),
14066 int (end - start_first), start_first);
14067 }
14068 else
14069 {
14070 /* bp_loc is a single value. */
14071 range.first = extract_bp_num (kind, bp_loc, '\0');
14072 range.second = range.first;
14073 }
14074 return range;
14075}
14076
d0fe4701
XR
14077/* Extract the breakpoint/location range specified by ARG. Returns
14078 the breakpoint range in BP_NUM_RANGE, and the location range in
14079 BP_LOC_RANGE.
14080
14081 ARG may be in any of the following forms:
14082
14083 x where 'x' is a breakpoint number.
14084 x-y where 'x' and 'y' specify a breakpoint numbers range.
14085 x.y where 'x' is a breakpoint number and 'y' a location number.
14086 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14087 location number range.
14088*/
14089
cc638e86 14090static void
d0fe4701
XR
14091extract_bp_number_and_location (const std::string &arg,
14092 std::pair<int, int> &bp_num_range,
14093 std::pair<int, int> &bp_loc_range)
14094{
14095 std::string::size_type dot = arg.find ('.');
14096
14097 if (dot != std::string::npos)
14098 {
14099 /* Handle 'x.y' and 'x.y-z' cases. */
14100
14101 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14102 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14103
95e95a6d
PA
14104 bp_num_range.first
14105 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14106 bp_num_range.second = bp_num_range.first;
d0fe4701 14107
95e95a6d
PA
14108 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14109 arg, dot + 1);
d0fe4701
XR
14110 }
14111 else
14112 {
14113 /* Handle x and x-y cases. */
d0fe4701 14114
95e95a6d 14115 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14116 bp_loc_range.first = 0;
14117 bp_loc_range.second = 0;
14118 }
d0fe4701
XR
14119}
14120
14121/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14122 specifies whether to enable or disable. */
14123
14124static void
14125enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14126{
14127 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14128 if (loc != NULL)
14129 {
14130 if (loc->enabled != enable)
14131 {
14132 loc->enabled = enable;
14133 mark_breakpoint_location_modified (loc);
14134 }
14135 if (target_supports_enable_disable_tracepoint ()
14136 && current_trace_status ()->running && loc->owner
14137 && is_tracepoint (loc->owner))
14138 target_disable_tracepoint (loc);
14139 }
14140 update_global_location_list (UGLL_DONT_INSERT);
d7154a8d
JV
14141
14142 gdb::observers::breakpoint_modified.notify (loc->owner);
d0fe4701
XR
14143}
14144
14145/* Enable or disable a range of breakpoint locations. BP_NUM is the
14146 number of the breakpoint, and BP_LOC_RANGE specifies the
14147 (inclusive) range of location numbers of that breakpoint to
14148 enable/disable. ENABLE specifies whether to enable or disable the
14149 location. */
14150
14151static void
14152enable_disable_breakpoint_location_range (int bp_num,
14153 std::pair<int, int> &bp_loc_range,
14154 bool enable)
14155{
14156 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14157 enable_disable_bp_num_loc (bp_num, i, enable);
14158}
0d381245 14159
1900040c
MS
14160/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14161 If from_tty is nonzero, it prints a message to that effect,
14162 which ends with a period (no newline). */
14163
c906108c 14164void
fba45db2 14165disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14166{
14167 /* Never disable a watchpoint scope breakpoint; we want to
14168 hit them when we leave scope so we can delete both the
14169 watchpoint and its scope breakpoint at that time. */
14170 if (bpt->type == bp_watchpoint_scope)
14171 return;
14172
b5de0fa7 14173 bpt->enable_state = bp_disabled;
c906108c 14174
b775012e
LM
14175 /* Mark breakpoint locations modified. */
14176 mark_breakpoint_modified (bpt);
14177
d248b706
KY
14178 if (target_supports_enable_disable_tracepoint ()
14179 && current_trace_status ()->running && is_tracepoint (bpt))
14180 {
14181 struct bp_location *location;
14182
14183 for (location = bpt->loc; location; location = location->next)
14184 target_disable_tracepoint (location);
14185 }
14186
44702360 14187 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14188
76727919 14189 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14190}
14191
d0fe4701
XR
14192/* Enable or disable the breakpoint(s) or breakpoint location(s)
14193 specified in ARGS. ARGS may be in any of the formats handled by
14194 extract_bp_number_and_location. ENABLE specifies whether to enable
14195 or disable the breakpoints/locations. */
14196
c906108c 14197static void
d0fe4701 14198enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14199{
c906108c 14200 if (args == 0)
46c6471b
PA
14201 {
14202 struct breakpoint *bpt;
14203
14204 ALL_BREAKPOINTS (bpt)
14205 if (user_breakpoint_p (bpt))
d0fe4701
XR
14206 {
14207 if (enable)
14208 enable_breakpoint (bpt);
14209 else
14210 disable_breakpoint (bpt);
14211 }
46c6471b 14212 }
9eaabc75 14213 else
0d381245 14214 {
cb791d59 14215 std::string num = extract_arg (&args);
9eaabc75 14216
cb791d59 14217 while (!num.empty ())
d248b706 14218 {
d0fe4701 14219 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14220
cc638e86
PA
14221 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14222
14223 if (bp_loc_range.first == bp_loc_range.second
14224 && bp_loc_range.first == 0)
d0fe4701 14225 {
cc638e86
PA
14226 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14227 map_breakpoint_number_range (bp_num_range,
14228 enable
14229 ? enable_breakpoint
14230 : disable_breakpoint);
14231 }
14232 else
14233 {
14234 /* Handle breakpoint ids with formats 'x.y' or
14235 'x.y-z'. */
14236 enable_disable_breakpoint_location_range
14237 (bp_num_range.first, bp_loc_range, enable);
b775012e 14238 }
9eaabc75 14239 num = extract_arg (&args);
d248b706 14240 }
0d381245 14241 }
c906108c
SS
14242}
14243
d0fe4701
XR
14244/* The disable command disables the specified breakpoints/locations
14245 (or all defined breakpoints) so they're no longer effective in
14246 stopping the inferior. ARGS may be in any of the forms defined in
14247 extract_bp_number_and_location. */
14248
14249static void
14250disable_command (const char *args, int from_tty)
14251{
14252 enable_disable_command (args, from_tty, false);
14253}
14254
c906108c 14255static void
816338b5
SS
14256enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14257 int count)
c906108c 14258{
afe38095 14259 int target_resources_ok;
c906108c
SS
14260
14261 if (bpt->type == bp_hardware_breakpoint)
14262 {
14263 int i;
c5aa993b 14264 i = hw_breakpoint_used_count ();
53a5351d 14265 target_resources_ok =
d92524f1 14266 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14267 i + 1, 0);
c906108c 14268 if (target_resources_ok == 0)
8a3fe4f8 14269 error (_("No hardware breakpoint support in the target."));
c906108c 14270 else if (target_resources_ok < 0)
8a3fe4f8 14271 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14272 }
14273
cc60f2e3 14274 if (is_watchpoint (bpt))
c906108c 14275 {
d07205c2 14276 /* Initialize it just to avoid a GCC false warning. */
f486487f 14277 enum enable_state orig_enable_state = bp_disabled;
dde02812 14278
a70b8144 14279 try
c906108c 14280 {
3a5c3e22
PA
14281 struct watchpoint *w = (struct watchpoint *) bpt;
14282
1e718ff1
TJB
14283 orig_enable_state = bpt->enable_state;
14284 bpt->enable_state = bp_enabled;
3a5c3e22 14285 update_watchpoint (w, 1 /* reparse */);
c906108c 14286 }
230d2906 14287 catch (const gdb_exception &e)
c5aa993b 14288 {
1e718ff1 14289 bpt->enable_state = orig_enable_state;
dde02812
ES
14290 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14291 bpt->number);
14292 return;
c5aa993b 14293 }
c906108c 14294 }
0101ce28 14295
b775012e
LM
14296 bpt->enable_state = bp_enabled;
14297
14298 /* Mark breakpoint locations modified. */
14299 mark_breakpoint_modified (bpt);
14300
d248b706
KY
14301 if (target_supports_enable_disable_tracepoint ()
14302 && current_trace_status ()->running && is_tracepoint (bpt))
14303 {
14304 struct bp_location *location;
14305
14306 for (location = bpt->loc; location; location = location->next)
14307 target_enable_tracepoint (location);
14308 }
14309
b4c291bb 14310 bpt->disposition = disposition;
816338b5 14311 bpt->enable_count = count;
44702360 14312 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14313
76727919 14314 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14315}
14316
fe3f5fa8 14317
c906108c 14318void
fba45db2 14319enable_breakpoint (struct breakpoint *bpt)
c906108c 14320{
816338b5 14321 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14322}
14323
d0fe4701
XR
14324/* The enable command enables the specified breakpoints/locations (or
14325 all defined breakpoints) so they once again become (or continue to
14326 be) effective in stopping the inferior. ARGS may be in any of the
14327 forms defined in extract_bp_number_and_location. */
c906108c 14328
c906108c 14329static void
981a3fb3 14330enable_command (const char *args, int from_tty)
c906108c 14331{
d0fe4701 14332 enable_disable_command (args, from_tty, true);
c906108c
SS
14333}
14334
c906108c 14335static void
4495129a 14336enable_once_command (const char *args, int from_tty)
c906108c 14337{
48649e1b
TT
14338 map_breakpoint_numbers
14339 (args, [&] (breakpoint *b)
14340 {
14341 iterate_over_related_breakpoints
14342 (b, [&] (breakpoint *bpt)
14343 {
14344 enable_breakpoint_disp (bpt, disp_disable, 1);
14345 });
14346 });
816338b5
SS
14347}
14348
14349static void
4495129a 14350enable_count_command (const char *args, int from_tty)
816338b5 14351{
b9d61307
SM
14352 int count;
14353
14354 if (args == NULL)
14355 error_no_arg (_("hit count"));
14356
14357 count = get_number (&args);
816338b5 14358
48649e1b
TT
14359 map_breakpoint_numbers
14360 (args, [&] (breakpoint *b)
14361 {
14362 iterate_over_related_breakpoints
14363 (b, [&] (breakpoint *bpt)
14364 {
14365 enable_breakpoint_disp (bpt, disp_disable, count);
14366 });
14367 });
c906108c
SS
14368}
14369
c906108c 14370static void
4495129a 14371enable_delete_command (const char *args, int from_tty)
c906108c 14372{
48649e1b
TT
14373 map_breakpoint_numbers
14374 (args, [&] (breakpoint *b)
14375 {
14376 iterate_over_related_breakpoints
14377 (b, [&] (breakpoint *bpt)
14378 {
14379 enable_breakpoint_disp (bpt, disp_del, 1);
14380 });
14381 });
c906108c
SS
14382}
14383\f
fa8d40ab 14384static void
981a3fb3 14385set_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14386{
14387}
14388
14389static void
981a3fb3 14390show_breakpoint_cmd (const char *args, int from_tty)
fa8d40ab
JJ
14391{
14392}
14393
1f3b5d1b
PP
14394/* Invalidate last known value of any hardware watchpoint if
14395 the memory which that value represents has been written to by
14396 GDB itself. */
14397
14398static void
8de0566d
YQ
14399invalidate_bp_value_on_memory_change (struct inferior *inferior,
14400 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14401 const bfd_byte *data)
14402{
14403 struct breakpoint *bp;
14404
14405 ALL_BREAKPOINTS (bp)
14406 if (bp->enable_state == bp_enabled
3a5c3e22 14407 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14408 {
3a5c3e22 14409 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14410
850645cf 14411 if (wp->val_valid && wp->val != nullptr)
3a5c3e22
PA
14412 {
14413 struct bp_location *loc;
14414
14415 for (loc = bp->loc; loc != NULL; loc = loc->next)
14416 if (loc->loc_type == bp_loc_hardware_watchpoint
14417 && loc->address + loc->length > addr
14418 && addr + len > loc->address)
14419 {
3a5c3e22
PA
14420 wp->val = NULL;
14421 wp->val_valid = 0;
14422 }
14423 }
1f3b5d1b
PP
14424 }
14425}
14426
8181d85f
DJ
14427/* Create and insert a breakpoint for software single step. */
14428
14429void
6c95b8df 14430insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14431 const address_space *aspace,
4a64f543 14432 CORE_ADDR next_pc)
8181d85f 14433{
7c16b83e
PA
14434 struct thread_info *tp = inferior_thread ();
14435 struct symtab_and_line sal;
14436 CORE_ADDR pc = next_pc;
8181d85f 14437
34b7e8a6
PA
14438 if (tp->control.single_step_breakpoints == NULL)
14439 {
14440 tp->control.single_step_breakpoints
5d5658a1 14441 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14442 }
8181d85f 14443
7c16b83e
PA
14444 sal = find_pc_line (pc, 0);
14445 sal.pc = pc;
14446 sal.section = find_pc_overlay (pc);
14447 sal.explicit_pc = 1;
34b7e8a6 14448 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14449
7c16b83e 14450 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14451}
14452
93f9a11f
YQ
14453/* Insert single step breakpoints according to the current state. */
14454
14455int
14456insert_single_step_breakpoints (struct gdbarch *gdbarch)
14457{
f5ea389a 14458 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14459 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14460
f5ea389a 14461 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14462
a0ff9e1a 14463 if (!next_pcs.empty ())
93f9a11f 14464 {
f5ea389a 14465 struct frame_info *frame = get_current_frame ();
8b86c959 14466 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14467
a0ff9e1a 14468 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14469 insert_single_step_breakpoint (gdbarch, aspace, pc);
14470
93f9a11f
YQ
14471 return 1;
14472 }
14473 else
14474 return 0;
14475}
14476
34b7e8a6 14477/* See breakpoint.h. */
f02253f1
HZ
14478
14479int
7c16b83e 14480breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14481 const address_space *aspace,
7c16b83e 14482 CORE_ADDR pc)
1aafd4da 14483{
7c16b83e 14484 struct bp_location *loc;
1aafd4da 14485
7c16b83e
PA
14486 for (loc = bp->loc; loc != NULL; loc = loc->next)
14487 if (loc->inserted
14488 && breakpoint_location_address_match (loc, aspace, pc))
14489 return 1;
1aafd4da 14490
7c16b83e 14491 return 0;
ef370185
JB
14492}
14493
14494/* Check whether a software single-step breakpoint is inserted at
14495 PC. */
14496
14497int
accd0bcd 14498single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14499 CORE_ADDR pc)
14500{
34b7e8a6
PA
14501 struct breakpoint *bpt;
14502
14503 ALL_BREAKPOINTS (bpt)
14504 {
14505 if (bpt->type == bp_single_step
14506 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14507 return 1;
14508 }
14509 return 0;
1aafd4da
UW
14510}
14511
1042e4c0
SS
14512/* Tracepoint-specific operations. */
14513
14514/* Set tracepoint count to NUM. */
14515static void
14516set_tracepoint_count (int num)
14517{
14518 tracepoint_count = num;
4fa62494 14519 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14520}
14521
70221824 14522static void
0b39b52e 14523trace_command (const char *arg, int from_tty)
1042e4c0 14524{
55aa24fb 14525 struct breakpoint_ops *ops;
55aa24fb 14526
ffc2605c
TT
14527 event_location_up location = string_to_event_location (&arg,
14528 current_language);
5b56227b 14529 if (location != NULL
ffc2605c 14530 && event_location_type (location.get ()) == PROBE_LOCATION)
55aa24fb
SDJ
14531 ops = &tracepoint_probe_breakpoint_ops;
14532 else
14533 ops = &tracepoint_breakpoint_ops;
14534
558a9d82 14535 create_breakpoint (get_current_arch (),
ffc2605c 14536 location.get (),
f00aae0f 14537 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14538 0 /* tempflag */,
14539 bp_tracepoint /* type_wanted */,
14540 0 /* Ignore count */,
14541 pending_break_support,
14542 ops,
14543 from_tty,
14544 1 /* enabled */,
14545 0 /* internal */, 0);
1042e4c0
SS
14546}
14547
70221824 14548static void
0b39b52e 14549ftrace_command (const char *arg, int from_tty)
7a697b8d 14550{
ffc2605c
TT
14551 event_location_up location = string_to_event_location (&arg,
14552 current_language);
558a9d82 14553 create_breakpoint (get_current_arch (),
ffc2605c 14554 location.get (),
f00aae0f 14555 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14556 0 /* tempflag */,
14557 bp_fast_tracepoint /* type_wanted */,
14558 0 /* Ignore count */,
14559 pending_break_support,
14560 &tracepoint_breakpoint_ops,
14561 from_tty,
14562 1 /* enabled */,
14563 0 /* internal */, 0);
0fb4aa4b
PA
14564}
14565
14566/* strace command implementation. Creates a static tracepoint. */
14567
70221824 14568static void
0b39b52e 14569strace_command (const char *arg, int from_tty)
0fb4aa4b 14570{
983af33b 14571 struct breakpoint_ops *ops;
ffc2605c 14572 event_location_up location;
983af33b
SDJ
14573
14574 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14575 or with a normal static tracepoint. */
61012eef 14576 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14577 {
14578 ops = &strace_marker_breakpoint_ops;
a20714ff 14579 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 14580 }
983af33b 14581 else
f00aae0f
KS
14582 {
14583 ops = &tracepoint_breakpoint_ops;
14584 location = string_to_event_location (&arg, current_language);
14585 }
983af33b 14586
558a9d82 14587 create_breakpoint (get_current_arch (),
ffc2605c 14588 location.get (),
f00aae0f 14589 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14590 0 /* tempflag */,
14591 bp_static_tracepoint /* type_wanted */,
14592 0 /* Ignore count */,
14593 pending_break_support,
14594 ops,
14595 from_tty,
14596 1 /* enabled */,
14597 0 /* internal */, 0);
7a697b8d
SS
14598}
14599
409873ef
SS
14600/* Set up a fake reader function that gets command lines from a linked
14601 list that was acquired during tracepoint uploading. */
14602
14603static struct uploaded_tp *this_utp;
3149d8c1 14604static int next_cmd;
409873ef
SS
14605
14606static char *
14607read_uploaded_action (void)
14608{
a18ba4e4 14609 char *rslt = nullptr;
409873ef 14610
a18ba4e4
SM
14611 if (next_cmd < this_utp->cmd_strings.size ())
14612 {
67aa1f3c 14613 rslt = this_utp->cmd_strings[next_cmd].get ();
a18ba4e4
SM
14614 next_cmd++;
14615 }
409873ef
SS
14616
14617 return rslt;
14618}
14619
00bf0b85
SS
14620/* Given information about a tracepoint as recorded on a target (which
14621 can be either a live system or a trace file), attempt to create an
14622 equivalent GDB tracepoint. This is not a reliable process, since
14623 the target does not necessarily have all the information used when
14624 the tracepoint was originally defined. */
14625
d9b3f62e 14626struct tracepoint *
00bf0b85 14627create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14628{
f2fc3015
TT
14629 const char *addr_str;
14630 char small_buf[100];
d9b3f62e 14631 struct tracepoint *tp;
fd9b8c24 14632
409873ef 14633 if (utp->at_string)
67aa1f3c 14634 addr_str = utp->at_string.get ();
409873ef
SS
14635 else
14636 {
14637 /* In the absence of a source location, fall back to raw
14638 address. Since there is no way to confirm that the address
14639 means the same thing as when the trace was started, warn the
14640 user. */
3e43a32a
MS
14641 warning (_("Uploaded tracepoint %d has no "
14642 "source location, using raw address"),
409873ef 14643 utp->number);
8c042590 14644 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14645 addr_str = small_buf;
14646 }
14647
14648 /* There's not much we can do with a sequence of bytecodes. */
14649 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14650 warning (_("Uploaded tracepoint %d condition "
14651 "has no source form, ignoring it"),
409873ef 14652 utp->number);
d5551862 14653
ffc2605c
TT
14654 event_location_up location = string_to_event_location (&addr_str,
14655 current_language);
8cdf0e15 14656 if (!create_breakpoint (get_current_arch (),
ffc2605c 14657 location.get (),
67aa1f3c 14658 utp->cond_string.get (), -1, addr_str,
e7e0cddf 14659 0 /* parse cond/thread */,
8cdf0e15 14660 0 /* tempflag */,
0fb4aa4b 14661 utp->type /* type_wanted */,
8cdf0e15
VP
14662 0 /* Ignore count */,
14663 pending_break_support,
348d480f 14664 &tracepoint_breakpoint_ops,
8cdf0e15 14665 0 /* from_tty */,
84f4c1fe 14666 utp->enabled /* enabled */,
44f238bb
PA
14667 0 /* internal */,
14668 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14669 return NULL;
fd9b8c24 14670
409873ef 14671 /* Get the tracepoint we just created. */
fd9b8c24
PA
14672 tp = get_tracepoint (tracepoint_count);
14673 gdb_assert (tp != NULL);
d5551862 14674
00bf0b85
SS
14675 if (utp->pass > 0)
14676 {
8c042590 14677 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14678 tp->number);
00bf0b85 14679
409873ef 14680 trace_pass_command (small_buf, 0);
00bf0b85
SS
14681 }
14682
409873ef
SS
14683 /* If we have uploaded versions of the original commands, set up a
14684 special-purpose "reader" function and call the usual command line
14685 reader, then pass the result to the breakpoint command-setting
14686 function. */
a18ba4e4 14687 if (!utp->cmd_strings.empty ())
00bf0b85 14688 {
12973681 14689 counted_command_line cmd_list;
00bf0b85 14690
409873ef 14691 this_utp = utp;
3149d8c1 14692 next_cmd = 0;
d5551862 14693
60b3cef2 14694 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
409873ef 14695
c1fc2657 14696 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14697 }
a18ba4e4
SM
14698 else if (!utp->actions.empty ()
14699 || !utp->step_actions.empty ())
3e43a32a
MS
14700 warning (_("Uploaded tracepoint %d actions "
14701 "have no source form, ignoring them"),
409873ef 14702 utp->number);
00bf0b85 14703
f196051f 14704 /* Copy any status information that might be available. */
c1fc2657 14705 tp->hit_count = utp->hit_count;
f196051f
SS
14706 tp->traceframe_usage = utp->traceframe_usage;
14707
00bf0b85 14708 return tp;
d9b3f62e 14709}
00bf0b85 14710
1042e4c0
SS
14711/* Print information on tracepoint number TPNUM_EXP, or all if
14712 omitted. */
14713
14714static void
1d12d88f 14715info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14716{
79a45e25 14717 struct ui_out *uiout = current_uiout;
e5a67952 14718 int num_printed;
1042e4c0 14719
e5a67952 14720 num_printed = breakpoint_1 (args, 0, is_tracepoint);
d77f58be
SS
14721
14722 if (num_printed == 0)
1042e4c0 14723 {
e5a67952 14724 if (args == NULL || *args == '\0')
112e8700 14725 uiout->message ("No tracepoints.\n");
d77f58be 14726 else
112e8700 14727 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14728 }
ad443146
SS
14729
14730 default_collect_info ();
1042e4c0
SS
14731}
14732
4a64f543 14733/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14734 Not supported by all targets. */
14735static void
5fed81ff 14736enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14737{
14738 enable_command (args, from_tty);
14739}
14740
4a64f543 14741/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14742 Not supported by all targets. */
14743static void
5fed81ff 14744disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14745{
14746 disable_command (args, from_tty);
14747}
14748
4a64f543 14749/* Remove a tracepoint (or all if no argument). */
1042e4c0 14750static void
4495129a 14751delete_trace_command (const char *arg, int from_tty)
1042e4c0 14752{
35df4500 14753 struct breakpoint *b, *b_tmp;
1042e4c0
SS
14754
14755 dont_repeat ();
14756
14757 if (arg == 0)
14758 {
14759 int breaks_to_delete = 0;
14760
14761 /* Delete all breakpoints if no argument.
14762 Do not delete internal or call-dummy breakpoints, these
4a64f543
MS
14763 have to be deleted with an explicit breakpoint number
14764 argument. */
1042e4c0 14765 ALL_TRACEPOINTS (b)
46c6471b 14766 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
14767 {
14768 breaks_to_delete = 1;
14769 break;
14770 }
1042e4c0
SS
14771
14772 /* Ask user only if there are some breakpoints to delete. */
14773 if (!from_tty
14774 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14775 {
35df4500 14776 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 14777 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14778 delete_breakpoint (b);
1042e4c0
SS
14779 }
14780 }
14781 else
48649e1b 14782 map_breakpoint_numbers
b926417a 14783 (arg, [&] (breakpoint *br)
48649e1b 14784 {
b926417a 14785 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 14786 });
1042e4c0
SS
14787}
14788
197f0a60
TT
14789/* Helper function for trace_pass_command. */
14790
14791static void
d9b3f62e 14792trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14793{
d9b3f62e 14794 tp->pass_count = count;
76727919 14795 gdb::observers::breakpoint_modified.notify (tp);
197f0a60
TT
14796 if (from_tty)
14797 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 14798 tp->number, count);
197f0a60
TT
14799}
14800
1042e4c0
SS
14801/* Set passcount for tracepoint.
14802
14803 First command argument is passcount, second is tracepoint number.
14804 If tracepoint number omitted, apply to most recently defined.
14805 Also accepts special argument "all". */
14806
14807static void
0b39b52e 14808trace_pass_command (const char *args, int from_tty)
1042e4c0 14809{
d9b3f62e 14810 struct tracepoint *t1;
0b39b52e 14811 ULONGEST count;
1042e4c0
SS
14812
14813 if (args == 0 || *args == 0)
3e43a32a
MS
14814 error (_("passcount command requires an "
14815 "argument (count + optional TP num)"));
1042e4c0 14816
0b39b52e 14817 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 14818
529480d0 14819 args = skip_spaces (args);
1042e4c0
SS
14820 if (*args && strncasecmp (args, "all", 3) == 0)
14821 {
d9b3f62e
PA
14822 struct breakpoint *b;
14823
1042e4c0 14824 args += 3; /* Skip special argument "all". */
1042e4c0
SS
14825 if (*args)
14826 error (_("Junk at end of arguments."));
1042e4c0 14827
d9b3f62e 14828 ALL_TRACEPOINTS (b)
197f0a60 14829 {
d9b3f62e 14830 t1 = (struct tracepoint *) b;
197f0a60
TT
14831 trace_pass_set_count (t1, count, from_tty);
14832 }
14833 }
14834 else if (*args == '\0')
1042e4c0 14835 {
5fa1d40e 14836 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 14837 if (t1)
197f0a60
TT
14838 trace_pass_set_count (t1, count, from_tty);
14839 }
14840 else
14841 {
bfd28288
PA
14842 number_or_range_parser parser (args);
14843 while (!parser.finished ())
1042e4c0 14844 {
bfd28288 14845 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
14846 if (t1)
14847 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
14848 }
14849 }
1042e4c0
SS
14850}
14851
d9b3f62e 14852struct tracepoint *
1042e4c0
SS
14853get_tracepoint (int num)
14854{
14855 struct breakpoint *t;
14856
14857 ALL_TRACEPOINTS (t)
14858 if (t->number == num)
d9b3f62e 14859 return (struct tracepoint *) t;
1042e4c0
SS
14860
14861 return NULL;
14862}
14863
d5551862
SS
14864/* Find the tracepoint with the given target-side number (which may be
14865 different from the tracepoint number after disconnecting and
14866 reconnecting). */
14867
d9b3f62e 14868struct tracepoint *
d5551862
SS
14869get_tracepoint_by_number_on_target (int num)
14870{
d9b3f62e 14871 struct breakpoint *b;
d5551862 14872
d9b3f62e
PA
14873 ALL_TRACEPOINTS (b)
14874 {
14875 struct tracepoint *t = (struct tracepoint *) b;
14876
14877 if (t->number_on_target == num)
14878 return t;
14879 }
d5551862
SS
14880
14881 return NULL;
14882}
14883
1042e4c0 14884/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 14885 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
14886 If the argument is missing, the most recent tracepoint
14887 (tracepoint_count) is returned. */
14888
d9b3f62e 14889struct tracepoint *
0b39b52e 14890get_tracepoint_by_number (const char **arg,
bfd28288 14891 number_or_range_parser *parser)
1042e4c0 14892{
1042e4c0
SS
14893 struct breakpoint *t;
14894 int tpnum;
0b39b52e 14895 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 14896
bfd28288 14897 if (parser != NULL)
197f0a60 14898 {
bfd28288
PA
14899 gdb_assert (!parser->finished ());
14900 tpnum = parser->get_number ();
197f0a60
TT
14901 }
14902 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 14903 tpnum = tracepoint_count;
1042e4c0 14904 else
197f0a60 14905 tpnum = get_number (arg);
1042e4c0
SS
14906
14907 if (tpnum <= 0)
14908 {
14909 if (instring && *instring)
14910 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14911 instring);
14912 else
5fa1d40e 14913 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
14914 return NULL;
14915 }
14916
14917 ALL_TRACEPOINTS (t)
14918 if (t->number == tpnum)
14919 {
d9b3f62e 14920 return (struct tracepoint *) t;
1042e4c0
SS
14921 }
14922
1042e4c0
SS
14923 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14924 return NULL;
14925}
14926
d9b3f62e
PA
14927void
14928print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14929{
14930 if (b->thread != -1)
14931 fprintf_unfiltered (fp, " thread %d", b->thread);
14932
14933 if (b->task != 0)
14934 fprintf_unfiltered (fp, " task %d", b->task);
14935
14936 fprintf_unfiltered (fp, "\n");
14937}
14938
6149aea9
PA
14939/* Save information on user settable breakpoints (watchpoints, etc) to
14940 a new script file named FILENAME. If FILTER is non-NULL, call it
14941 on each breakpoint and only include the ones for which it returns
14942 non-zero. */
14943
1042e4c0 14944static void
4495129a 14945save_breakpoints (const char *filename, int from_tty,
6149aea9 14946 int (*filter) (const struct breakpoint *))
1042e4c0
SS
14947{
14948 struct breakpoint *tp;
6149aea9 14949 int any = 0;
6149aea9 14950 int extra_trace_bits = 0;
1042e4c0 14951
6149aea9
PA
14952 if (filename == 0 || *filename == 0)
14953 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
14954
14955 /* See if we have anything to save. */
6149aea9 14956 ALL_BREAKPOINTS (tp)
1042e4c0 14957 {
6149aea9 14958 /* Skip internal and momentary breakpoints. */
09d682a4 14959 if (!user_breakpoint_p (tp))
6149aea9
PA
14960 continue;
14961
14962 /* If we have a filter, only save the breakpoints it accepts. */
14963 if (filter && !filter (tp))
14964 continue;
14965
14966 any = 1;
14967
14968 if (is_tracepoint (tp))
14969 {
14970 extra_trace_bits = 1;
14971
14972 /* We can stop searching. */
14973 break;
14974 }
1042e4c0 14975 }
6149aea9
PA
14976
14977 if (!any)
1042e4c0 14978 {
6149aea9 14979 warning (_("Nothing to save."));
1042e4c0
SS
14980 return;
14981 }
14982
ee0c3293 14983 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
14984
14985 stdio_file fp;
14986
ee0c3293 14987 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 14988 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 14989 expanded_filename.get (), safe_strerror (errno));
8bf6485c 14990
6149aea9 14991 if (extra_trace_bits)
d7e74731 14992 save_trace_state_variables (&fp);
8bf6485c 14993
6149aea9 14994 ALL_BREAKPOINTS (tp)
1042e4c0 14995 {
6149aea9 14996 /* Skip internal and momentary breakpoints. */
09d682a4 14997 if (!user_breakpoint_p (tp))
6149aea9 14998 continue;
8bf6485c 14999
6149aea9
PA
15000 /* If we have a filter, only save the breakpoints it accepts. */
15001 if (filter && !filter (tp))
15002 continue;
15003
d7e74731 15004 tp->ops->print_recreate (tp, &fp);
1042e4c0 15005
6149aea9
PA
15006 /* Note, we can't rely on tp->number for anything, as we can't
15007 assume the recreated breakpoint numbers will match. Use $bpnum
15008 instead. */
15009
15010 if (tp->cond_string)
d7e74731 15011 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15012
15013 if (tp->ignore_count)
d7e74731 15014 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15015
2d9442cc 15016 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15017 {
d7e74731 15018 fp.puts (" commands\n");
a7bdde9e 15019
d7e74731 15020 current_uiout->redirect (&fp);
a70b8144 15021 try
1042e4c0 15022 {
d1b0a7bf 15023 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15024 }
230d2906 15025 catch (const gdb_exception &ex)
492d29ea 15026 {
112e8700 15027 current_uiout->redirect (NULL);
eedc3f4f 15028 throw;
492d29ea 15029 }
1042e4c0 15030
112e8700 15031 current_uiout->redirect (NULL);
d7e74731 15032 fp.puts (" end\n");
1042e4c0 15033 }
6149aea9
PA
15034
15035 if (tp->enable_state == bp_disabled)
d7e74731 15036 fp.puts ("disable $bpnum\n");
6149aea9
PA
15037
15038 /* If this is a multi-location breakpoint, check if the locations
15039 should be individually disabled. Watchpoint locations are
15040 special, and not user visible. */
15041 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15042 {
15043 struct bp_location *loc;
15044 int n = 1;
15045
15046 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15047 if (!loc->enabled)
d7e74731 15048 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15049 }
1042e4c0 15050 }
8bf6485c 15051
6149aea9 15052 if (extra_trace_bits && *default_collect)
d7e74731 15053 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15054
1042e4c0 15055 if (from_tty)
ee0c3293 15056 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15057}
15058
15059/* The `save breakpoints' command. */
15060
15061static void
4495129a 15062save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15063{
15064 save_breakpoints (args, from_tty, NULL);
15065}
15066
15067/* The `save tracepoints' command. */
15068
15069static void
4495129a 15070save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15071{
15072 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15073}
15074
15075/* Create a vector of all tracepoints. */
15076
f51e0e20 15077std::vector<breakpoint *>
eeae04df 15078all_tracepoints (void)
1042e4c0 15079{
f51e0e20 15080 std::vector<breakpoint *> tp_vec;
1042e4c0
SS
15081 struct breakpoint *tp;
15082
15083 ALL_TRACEPOINTS (tp)
15084 {
f51e0e20 15085 tp_vec.push_back (tp);
1042e4c0
SS
15086 }
15087
15088 return tp_vec;
15089}
15090
c906108c 15091\f
629500fa
KS
15092/* This help string is used to consolidate all the help string for specifying
15093 locations used by several commands. */
15094
15095#define LOCATION_HELP_STRING \
15096"Linespecs are colon-separated lists of location parameters, such as\n\
15097source filename, function name, label name, and line number.\n\
15098Example: To specify the start of a label named \"the_top\" in the\n\
15099function \"fact\" in the file \"factorial.c\", use\n\
15100\"factorial.c:fact:the_top\".\n\
15101\n\
15102Address locations begin with \"*\" and specify an exact address in the\n\
15103program. Example: To specify the fourth byte past the start function\n\
15104\"main\", use \"*main + 4\".\n\
15105\n\
15106Explicit locations are similar to linespecs but use an option/argument\n\
15107syntax to specify location parameters.\n\
15108Example: To specify the start of the label named \"the_top\" in the\n\
15109function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
15110-function fact -label the_top\".\n\
15111\n\
15112By default, a specified function is matched against the program's\n\
15113functions in all scopes. For C++, this means in all namespaces and\n\
15114classes. For Ada, this means in all packages. E.g., in C++,\n\
15115\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15116\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15117specified name as a complete fully-qualified name instead.\n"
629500fa 15118
4a64f543
MS
15119/* This help string is used for the break, hbreak, tbreak and thbreak
15120 commands. It is defined as a macro to prevent duplication.
15121 COMMAND should be a string constant containing the name of the
15122 command. */
629500fa 15123
31e2b00f 15124#define BREAK_ARGS_HELP(command) \
fb7b5af4
SDJ
15125command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15126PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15127probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15128guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15129`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15130LOCATION may be a linespec, address, or explicit location as described\n\
15131below.\n\
15132\n\
dc10affe
PA
15133With no LOCATION, uses current execution address of the selected\n\
15134stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15135\n\
15136THREADNUM is the number from \"info threads\".\n\
15137CONDITION is a boolean expression.\n\
629500fa 15138\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15139Multiple breakpoints at one place are permitted, and useful if their\n\
15140conditions are different.\n\
31e2b00f
AS
15141\n\
15142Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15143
44feb3ce
TT
15144/* List of subcommands for "catch". */
15145static struct cmd_list_element *catch_cmdlist;
15146
15147/* List of subcommands for "tcatch". */
15148static struct cmd_list_element *tcatch_cmdlist;
15149
9ac4176b 15150void
a121b7c1 15151add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15152 cmd_const_sfunc_ftype *sfunc,
625e8578 15153 completer_ftype *completer,
44feb3ce
TT
15154 void *user_data_catch,
15155 void *user_data_tcatch)
15156{
15157 struct cmd_list_element *command;
15158
0450cc4c 15159 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15160 &catch_cmdlist);
15161 set_cmd_sfunc (command, sfunc);
15162 set_cmd_context (command, user_data_catch);
a96d9b2e 15163 set_cmd_completer (command, completer);
44feb3ce 15164
0450cc4c 15165 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15166 &tcatch_cmdlist);
15167 set_cmd_sfunc (command, sfunc);
15168 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15169 set_cmd_completer (command, completer);
44feb3ce
TT
15170}
15171
6149aea9 15172static void
981a3fb3 15173save_command (const char *arg, int from_tty)
6149aea9 15174{
3e43a32a
MS
15175 printf_unfiltered (_("\"save\" must be followed by "
15176 "the name of a save subcommand.\n"));
635c7e8a 15177 help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
6149aea9
PA
15178}
15179
84f4c1fe
PM
15180struct breakpoint *
15181iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15182 void *data)
15183{
35df4500 15184 struct breakpoint *b, *b_tmp;
84f4c1fe 15185
35df4500 15186 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe
PM
15187 {
15188 if ((*callback) (b, data))
15189 return b;
15190 }
15191
15192 return NULL;
15193}
15194
0574c78f
GB
15195/* Zero if any of the breakpoint's locations could be a location where
15196 functions have been inlined, nonzero otherwise. */
15197
15198static int
15199is_non_inline_function (struct breakpoint *b)
15200{
15201 /* The shared library event breakpoint is set on the address of a
15202 non-inline function. */
15203 if (b->type == bp_shlib_event)
15204 return 1;
15205
15206 return 0;
15207}
15208
15209/* Nonzero if the specified PC cannot be a location where functions
15210 have been inlined. */
15211
15212int
accd0bcd 15213pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15214 const struct target_waitstatus *ws)
0574c78f
GB
15215{
15216 struct breakpoint *b;
15217 struct bp_location *bl;
15218
15219 ALL_BREAKPOINTS (b)
15220 {
15221 if (!is_non_inline_function (b))
15222 continue;
15223
15224 for (bl = b->loc; bl != NULL; bl = bl->next)
15225 {
15226 if (!bl->shlib_disabled
09ac7c10 15227 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15228 return 1;
15229 }
15230 }
15231
15232 return 0;
15233}
15234
2f202fde
JK
15235/* Remove any references to OBJFILE which is going to be freed. */
15236
15237void
15238breakpoint_free_objfile (struct objfile *objfile)
15239{
15240 struct bp_location **locp, *loc;
15241
15242 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15243 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15244 loc->symtab = NULL;
15245}
15246
2060206e
PA
15247void
15248initialize_breakpoint_ops (void)
15249{
15250 static int initialized = 0;
15251
15252 struct breakpoint_ops *ops;
15253
15254 if (initialized)
15255 return;
15256 initialized = 1;
15257
15258 /* The breakpoint_ops structure to be inherit by all kinds of
15259 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15260 internal and momentary breakpoints, etc.). */
15261 ops = &bkpt_base_breakpoint_ops;
15262 *ops = base_breakpoint_ops;
15263 ops->re_set = bkpt_re_set;
15264 ops->insert_location = bkpt_insert_location;
15265 ops->remove_location = bkpt_remove_location;
15266 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15267 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15268 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15269 ops->decode_location = bkpt_decode_location;
2060206e
PA
15270
15271 /* The breakpoint_ops structure to be used in regular breakpoints. */
15272 ops = &bkpt_breakpoint_ops;
15273 *ops = bkpt_base_breakpoint_ops;
15274 ops->re_set = bkpt_re_set;
15275 ops->resources_needed = bkpt_resources_needed;
15276 ops->print_it = bkpt_print_it;
15277 ops->print_mention = bkpt_print_mention;
15278 ops->print_recreate = bkpt_print_recreate;
15279
15280 /* Ranged breakpoints. */
15281 ops = &ranged_breakpoint_ops;
15282 *ops = bkpt_breakpoint_ops;
15283 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15284 ops->resources_needed = resources_needed_ranged_breakpoint;
15285 ops->print_it = print_it_ranged_breakpoint;
15286 ops->print_one = print_one_ranged_breakpoint;
15287 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15288 ops->print_mention = print_mention_ranged_breakpoint;
15289 ops->print_recreate = print_recreate_ranged_breakpoint;
15290
15291 /* Internal breakpoints. */
15292 ops = &internal_breakpoint_ops;
15293 *ops = bkpt_base_breakpoint_ops;
15294 ops->re_set = internal_bkpt_re_set;
15295 ops->check_status = internal_bkpt_check_status;
15296 ops->print_it = internal_bkpt_print_it;
15297 ops->print_mention = internal_bkpt_print_mention;
15298
15299 /* Momentary breakpoints. */
15300 ops = &momentary_breakpoint_ops;
15301 *ops = bkpt_base_breakpoint_ops;
15302 ops->re_set = momentary_bkpt_re_set;
15303 ops->check_status = momentary_bkpt_check_status;
15304 ops->print_it = momentary_bkpt_print_it;
15305 ops->print_mention = momentary_bkpt_print_mention;
15306
55aa24fb
SDJ
15307 /* Probe breakpoints. */
15308 ops = &bkpt_probe_breakpoint_ops;
15309 *ops = bkpt_breakpoint_ops;
15310 ops->insert_location = bkpt_probe_insert_location;
15311 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15312 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15313 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15314
2060206e
PA
15315 /* Watchpoints. */
15316 ops = &watchpoint_breakpoint_ops;
15317 *ops = base_breakpoint_ops;
15318 ops->re_set = re_set_watchpoint;
15319 ops->insert_location = insert_watchpoint;
15320 ops->remove_location = remove_watchpoint;
15321 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15322 ops->check_status = check_status_watchpoint;
15323 ops->resources_needed = resources_needed_watchpoint;
15324 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15325 ops->print_it = print_it_watchpoint;
15326 ops->print_mention = print_mention_watchpoint;
15327 ops->print_recreate = print_recreate_watchpoint;
427cd150 15328 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15329
15330 /* Masked watchpoints. */
15331 ops = &masked_watchpoint_breakpoint_ops;
15332 *ops = watchpoint_breakpoint_ops;
15333 ops->insert_location = insert_masked_watchpoint;
15334 ops->remove_location = remove_masked_watchpoint;
15335 ops->resources_needed = resources_needed_masked_watchpoint;
15336 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15337 ops->print_it = print_it_masked_watchpoint;
15338 ops->print_one_detail = print_one_detail_masked_watchpoint;
15339 ops->print_mention = print_mention_masked_watchpoint;
15340 ops->print_recreate = print_recreate_masked_watchpoint;
15341
15342 /* Tracepoints. */
15343 ops = &tracepoint_breakpoint_ops;
15344 *ops = base_breakpoint_ops;
15345 ops->re_set = tracepoint_re_set;
15346 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15347 ops->print_one_detail = tracepoint_print_one_detail;
15348 ops->print_mention = tracepoint_print_mention;
15349 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15350 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15351 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15352 ops->decode_location = tracepoint_decode_location;
983af33b 15353
55aa24fb
SDJ
15354 /* Probe tracepoints. */
15355 ops = &tracepoint_probe_breakpoint_ops;
15356 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15357 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15358 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15359
983af33b
SDJ
15360 /* Static tracepoints with marker (`-m'). */
15361 ops = &strace_marker_breakpoint_ops;
15362 *ops = tracepoint_breakpoint_ops;
5f700d83 15363 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15364 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15365 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15366
15367 /* Fork catchpoints. */
15368 ops = &catch_fork_breakpoint_ops;
15369 *ops = base_breakpoint_ops;
15370 ops->insert_location = insert_catch_fork;
15371 ops->remove_location = remove_catch_fork;
15372 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15373 ops->print_it = print_it_catch_fork;
15374 ops->print_one = print_one_catch_fork;
15375 ops->print_mention = print_mention_catch_fork;
15376 ops->print_recreate = print_recreate_catch_fork;
15377
15378 /* Vfork catchpoints. */
15379 ops = &catch_vfork_breakpoint_ops;
15380 *ops = base_breakpoint_ops;
15381 ops->insert_location = insert_catch_vfork;
15382 ops->remove_location = remove_catch_vfork;
15383 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15384 ops->print_it = print_it_catch_vfork;
15385 ops->print_one = print_one_catch_vfork;
15386 ops->print_mention = print_mention_catch_vfork;
15387 ops->print_recreate = print_recreate_catch_vfork;
15388
15389 /* Exec catchpoints. */
15390 ops = &catch_exec_breakpoint_ops;
15391 *ops = base_breakpoint_ops;
2060206e
PA
15392 ops->insert_location = insert_catch_exec;
15393 ops->remove_location = remove_catch_exec;
15394 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15395 ops->print_it = print_it_catch_exec;
15396 ops->print_one = print_one_catch_exec;
15397 ops->print_mention = print_mention_catch_exec;
15398 ops->print_recreate = print_recreate_catch_exec;
15399
edcc5120
TT
15400 /* Solib-related catchpoints. */
15401 ops = &catch_solib_breakpoint_ops;
15402 *ops = base_breakpoint_ops;
edcc5120
TT
15403 ops->insert_location = insert_catch_solib;
15404 ops->remove_location = remove_catch_solib;
15405 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15406 ops->check_status = check_status_catch_solib;
15407 ops->print_it = print_it_catch_solib;
15408 ops->print_one = print_one_catch_solib;
15409 ops->print_mention = print_mention_catch_solib;
15410 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15411
15412 ops = &dprintf_breakpoint_ops;
15413 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15414 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15415 ops->resources_needed = bkpt_resources_needed;
15416 ops->print_it = bkpt_print_it;
15417 ops->print_mention = bkpt_print_mention;
2d9442cc 15418 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15419 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15420 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15421}
15422
8bfd80db
YQ
15423/* Chain containing all defined "enable breakpoint" subcommands. */
15424
15425static struct cmd_list_element *enablebreaklist = NULL;
15426
8588b356
SM
15427/* See breakpoint.h. */
15428
15429cmd_list_element *commands_cmd_element = nullptr;
15430
c906108c 15431void
fba45db2 15432_initialize_breakpoint (void)
c906108c
SS
15433{
15434 struct cmd_list_element *c;
15435
2060206e
PA
15436 initialize_breakpoint_ops ();
15437
76727919
TT
15438 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15439 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15440 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
84acb35a 15441
c906108c
SS
15442 breakpoint_chain = 0;
15443 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15444 before a breakpoint is set. */
15445 breakpoint_count = 0;
15446
1042e4c0
SS
15447 tracepoint_count = 0;
15448
1bedd215
AC
15449 add_com ("ignore", class_breakpoint, ignore_command, _("\
15450Set ignore-count of breakpoint number N to COUNT.\n\
15451Usage is `ignore N COUNT'."));
c906108c 15452
8588b356
SM
15453 commands_cmd_element = add_com ("commands", class_breakpoint,
15454 commands_command, _("\
18da0c51
MG
15455Set commands to be executed when the given breakpoints are hit.\n\
15456Give a space-separated breakpoint list as argument after \"commands\".\n\
15457A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15458(e.g. `5-7').\n\
c906108c
SS
15459With no argument, the targeted breakpoint is the last one set.\n\
15460The commands themselves follow starting on the next line.\n\
15461Type a line containing \"end\" to indicate the end of them.\n\
15462Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15463then no output is printed when it is hit, except what the commands print."));
c906108c 15464
d55637df 15465 c = add_com ("condition", class_breakpoint, condition_command, _("\
1bedd215 15466Specify breakpoint number N to break only if COND is true.\n\
c906108c 15467Usage is `condition N COND', where N is an integer and COND is an\n\
1bedd215 15468expression to be evaluated whenever breakpoint N is reached."));
d55637df 15469 set_cmd_completer (c, condition_completer);
c906108c 15470
1bedd215 15471 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15472Set a temporary breakpoint.\n\
c906108c
SS
15473Like \"break\" except the breakpoint is only temporary,\n\
15474so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15475by using \"enable delete\" on the breakpoint number.\n\
15476\n"
15477BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15478 set_cmd_completer (c, location_completer);
c94fdfd0 15479
1bedd215 15480 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15481Set a hardware assisted breakpoint.\n\
c906108c 15482Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15483some target hardware may not have this support.\n\
15484\n"
15485BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15486 set_cmd_completer (c, location_completer);
c906108c 15487
1bedd215 15488 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15489Set a temporary hardware assisted breakpoint.\n\
c906108c 15490Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15491so it will be deleted when hit.\n\
15492\n"
15493BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15494 set_cmd_completer (c, location_completer);
c906108c 15495
1bedd215
AC
15496 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15497Enable some breakpoints.\n\
c906108c
SS
15498Give breakpoint numbers (separated by spaces) as arguments.\n\
15499With no subcommand, breakpoints are enabled until you command otherwise.\n\
15500This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15501With a subcommand you can enable temporarily."),
c906108c 15502 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15503
15504 add_com_alias ("en", "enable", class_breakpoint, 1);
15505
84951ab5 15506 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
1bedd215 15507Enable some breakpoints.\n\
c906108c
SS
15508Give breakpoint numbers (separated by spaces) as arguments.\n\
15509This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15510May be abbreviated to simply \"enable\".\n"),
c5aa993b 15511 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15512
1a966eab
AC
15513 add_cmd ("once", no_class, enable_once_command, _("\
15514Enable breakpoints for one hit. Give breakpoint numbers.\n\
15515If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15516 &enablebreaklist);
15517
1a966eab
AC
15518 add_cmd ("delete", no_class, enable_delete_command, _("\
15519Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15520If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15521 &enablebreaklist);
15522
816338b5
SS
15523 add_cmd ("count", no_class, enable_count_command, _("\
15524Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15525If a breakpoint is hit while enabled in this fashion,\n\
15526the count is decremented; when it reaches zero, the breakpoint is disabled."),
15527 &enablebreaklist);
15528
1a966eab
AC
15529 add_cmd ("delete", no_class, enable_delete_command, _("\
15530Enable breakpoints and delete when hit. Give breakpoint numbers.\n\
15531If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15532 &enablelist);
15533
1a966eab
AC
15534 add_cmd ("once", no_class, enable_once_command, _("\
15535Enable breakpoints for one hit. Give breakpoint numbers.\n\
15536If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15537 &enablelist);
15538
15539 add_cmd ("count", no_class, enable_count_command, _("\
15540Enable breakpoints for COUNT hits. Give count and then breakpoint numbers.\n\
15541If a breakpoint is hit while enabled in this fashion,\n\
15542the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15543 &enablelist);
15544
1bedd215
AC
15545 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15546Disable some breakpoints.\n\
c906108c
SS
15547Arguments are breakpoint numbers with spaces in between.\n\
15548To disable all breakpoints, give no argument.\n\
64b9b334 15549A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15550 &disablelist, "disable ", 1, &cmdlist);
15551 add_com_alias ("dis", "disable", class_breakpoint, 1);
15552 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15553
1a966eab
AC
15554 add_cmd ("breakpoints", class_alias, disable_command, _("\
15555Disable some breakpoints.\n\
c906108c
SS
15556Arguments are breakpoint numbers with spaces in between.\n\
15557To disable all breakpoints, give no argument.\n\
64b9b334 15558A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15559This command may be abbreviated \"disable\"."),
c906108c
SS
15560 &disablelist);
15561
1bedd215
AC
15562 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15563Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15564Arguments are breakpoint numbers with spaces in between.\n\
15565To delete all breakpoints, give no argument.\n\
15566\n\
15567Also a prefix command for deletion of other GDB objects.\n\
1bedd215 15568The \"unset\" command is also an alias for \"delete\"."),
c906108c
SS
15569 &deletelist, "delete ", 1, &cmdlist);
15570 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15571 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15572
1a966eab
AC
15573 add_cmd ("breakpoints", class_alias, delete_command, _("\
15574Delete some breakpoints or auto-display expressions.\n\
c906108c
SS
15575Arguments are breakpoint numbers with spaces in between.\n\
15576To delete all breakpoints, give no argument.\n\
1a966eab 15577This command may be abbreviated \"delete\"."),
c906108c
SS
15578 &deletelist);
15579
1bedd215 15580 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15581Clear breakpoint at specified location.\n\
15582Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15583\n\
15584With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa
KS
15585is executing in.\n"
15586"\n" LOCATION_HELP_STRING "\n\
1bedd215 15587See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15588 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15589
1bedd215 15590 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15591Set breakpoint at specified location.\n"
31e2b00f 15592BREAK_ARGS_HELP ("break")));
5ba2abeb 15593 set_cmd_completer (c, location_completer);
c94fdfd0 15594
c906108c
SS
15595 add_com_alias ("b", "break", class_run, 1);
15596 add_com_alias ("br", "break", class_run, 1);
15597 add_com_alias ("bre", "break", class_run, 1);
15598 add_com_alias ("brea", "break", class_run, 1);
15599
c906108c
SS
15600 if (dbx_commands)
15601 {
1bedd215
AC
15602 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15603Break in function/address or break at a line in the current file."),
c5aa993b
JM
15604 &stoplist, "stop ", 1, &cmdlist);
15605 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15606 _("Break in function or address."), &stoplist);
c5aa993b 15607 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15608 _("Break at a line in the current file."), &stoplist);
11db9430 15609 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15610Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15611The \"Type\" column indicates one of:\n\
15612\tbreakpoint - normal breakpoint\n\
15613\twatchpoint - watchpoint\n\
15614The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15615the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15616breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15617address and file/line number respectively.\n\
15618\n\
15619Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15620are set to the address of the last breakpoint listed unless the command\n\
15621is prefixed with \"server \".\n\n\
c906108c 15622Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15623breakpoint set."));
c906108c
SS
15624 }
15625
11db9430 15626 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15627Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15628The \"Type\" column indicates one of:\n\
15629\tbreakpoint - normal breakpoint\n\
15630\twatchpoint - watchpoint\n\
15631The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15632the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15633breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15634address and file/line number respectively.\n\
15635\n\
15636Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15637are set to the address of the last breakpoint listed unless the command\n\
15638is prefixed with \"server \".\n\n\
c906108c 15639Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15640breakpoint set."));
c906108c 15641
6b04bdb7
MS
15642 add_info_alias ("b", "breakpoints", 1);
15643
1a966eab
AC
15644 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15645Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15646The \"Type\" column indicates one of:\n\
15647\tbreakpoint - normal breakpoint\n\
15648\twatchpoint - watchpoint\n\
15649\tlongjmp - internal breakpoint used to step through longjmp()\n\
15650\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15651\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15652\tfinish - internal breakpoint used by the \"finish\" command\n\
15653The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
15654the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15655breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
15656address and file/line number respectively.\n\
15657\n\
15658Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15659are set to the address of the last breakpoint listed unless the command\n\
15660is prefixed with \"server \".\n\n\
c906108c 15661Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 15662breakpoint set."),
c906108c
SS
15663 &maintenanceinfolist);
15664
44feb3ce
TT
15665 add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15666Set catchpoints to catch events."),
15667 &catch_cmdlist, "catch ",
15668 0/*allow-unknown*/, &cmdlist);
15669
15670 add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15671Set temporary catchpoints to catch events."),
15672 &tcatch_cmdlist, "tcatch ",
15673 0/*allow-unknown*/, &cmdlist);
15674
44feb3ce
TT
15675 add_catch_command ("fork", _("Catch calls to fork."),
15676 catch_fork_command_1,
a96d9b2e 15677 NULL,
44feb3ce
TT
15678 (void *) (uintptr_t) catch_fork_permanent,
15679 (void *) (uintptr_t) catch_fork_temporary);
15680 add_catch_command ("vfork", _("Catch calls to vfork."),
15681 catch_fork_command_1,
a96d9b2e 15682 NULL,
44feb3ce
TT
15683 (void *) (uintptr_t) catch_vfork_permanent,
15684 (void *) (uintptr_t) catch_vfork_temporary);
15685 add_catch_command ("exec", _("Catch calls to exec."),
15686 catch_exec_command_1,
a96d9b2e
SDJ
15687 NULL,
15688 CATCH_PERMANENT,
15689 CATCH_TEMPORARY);
edcc5120
TT
15690 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15691Usage: catch load [REGEX]\n\
15692If REGEX is given, only stop for libraries matching the regular expression."),
15693 catch_load_command_1,
15694 NULL,
15695 CATCH_PERMANENT,
15696 CATCH_TEMPORARY);
15697 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15698Usage: catch unload [REGEX]\n\
15699If REGEX is given, only stop for libraries matching the regular expression."),
15700 catch_unload_command_1,
15701 NULL,
15702 CATCH_PERMANENT,
15703 CATCH_TEMPORARY);
c5aa993b 15704
1bedd215
AC
15705 c = add_com ("watch", class_breakpoint, watch_command, _("\
15706Set a watchpoint for an expression.\n\
06a64a0b 15707Usage: watch [-l|-location] EXPRESSION\n\
c906108c 15708A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15709an expression changes.\n\
15710If -l or -location is given, this evaluates EXPRESSION and watches\n\
15711the memory to which it refers."));
65d12d83 15712 set_cmd_completer (c, expression_completer);
c906108c 15713
1bedd215
AC
15714 c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15715Set a read watchpoint for an expression.\n\
06a64a0b 15716Usage: rwatch [-l|-location] EXPRESSION\n\
c906108c 15717A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15718an expression is read.\n\
15719If -l or -location is given, this evaluates EXPRESSION and watches\n\
15720the memory to which it refers."));
65d12d83 15721 set_cmd_completer (c, expression_completer);
c906108c 15722
1bedd215
AC
15723 c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15724Set a watchpoint for an expression.\n\
06a64a0b 15725Usage: awatch [-l|-location] EXPRESSION\n\
c906108c 15726A watchpoint stops execution of your program whenever the value of\n\
06a64a0b
TT
15727an expression is either read or written.\n\
15728If -l or -location is given, this evaluates EXPRESSION and watches\n\
15729the memory to which it refers."));
65d12d83 15730 set_cmd_completer (c, expression_completer);
c906108c 15731
11db9430 15732 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 15733Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 15734
920d2a44
AC
15735 /* XXX: cagney/2005-02-23: This should be a boolean, and should
15736 respond to changes - contrary to the description. */
85c07804
AC
15737 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15738 &can_use_hw_watchpoints, _("\
15739Set debugger's willingness to use watchpoint hardware."), _("\
15740Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
15741If zero, gdb will not use hardware for new watchpoints, even if\n\
15742such is available. (However, any hardware watchpoints that were\n\
15743created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
15744hardware.)"),
15745 NULL,
920d2a44 15746 show_can_use_hw_watchpoints,
85c07804 15747 &setlist, &showlist);
c906108c
SS
15748
15749 can_use_hw_watchpoints = 1;
fa8d40ab 15750
1042e4c0
SS
15751 /* Tracepoint manipulation commands. */
15752
15753 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 15754Set a tracepoint at specified location.\n\
1042e4c0
SS
15755\n"
15756BREAK_ARGS_HELP ("trace") "\n\
15757Do \"help tracepoints\" for info on other tracepoint commands."));
15758 set_cmd_completer (c, location_completer);
15759
15760 add_com_alias ("tp", "trace", class_alias, 0);
15761 add_com_alias ("tr", "trace", class_alias, 1);
15762 add_com_alias ("tra", "trace", class_alias, 1);
15763 add_com_alias ("trac", "trace", class_alias, 1);
15764
7a697b8d 15765 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 15766Set a fast tracepoint at specified location.\n\
7a697b8d
SS
15767\n"
15768BREAK_ARGS_HELP ("ftrace") "\n\
15769Do \"help tracepoints\" for info on other tracepoint commands."));
15770 set_cmd_completer (c, location_completer);
15771
0fb4aa4b 15772 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 15773Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
15774\n\
15775strace [LOCATION] [if CONDITION]\n\
629500fa
KS
15776LOCATION may be a linespec, explicit, or address location (described below) \n\
15777or -m MARKER_ID.\n\n\
15778If a marker id is specified, probe the marker with that name. With\n\
15779no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
15780Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15781This collects arbitrary user data passed in the probe point call to the\n\
15782tracing library. You can inspect it when analyzing the trace buffer,\n\
15783by printing the $_sdata variable like any other convenience variable.\n\
15784\n\
15785CONDITION is a boolean expression.\n\
629500fa 15786\n" LOCATION_HELP_STRING "\n\
d41c0fc8
PA
15787Multiple tracepoints at one place are permitted, and useful if their\n\
15788conditions are different.\n\
0fb4aa4b
PA
15789\n\
15790Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15791Do \"help tracepoints\" for info on other tracepoint commands."));
15792 set_cmd_completer (c, location_completer);
15793
11db9430 15794 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 15795Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
15796Convenience variable \"$tpnum\" contains the number of the\n\
15797last tracepoint set."));
15798
15799 add_info_alias ("tp", "tracepoints", 1);
15800
15801 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15802Delete specified tracepoints.\n\
15803Arguments are tracepoint numbers, separated by spaces.\n\
15804No argument means delete all tracepoints."),
15805 &deletelist);
7e20dfcd 15806 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
15807
15808 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15809Disable specified tracepoints.\n\
15810Arguments are tracepoint numbers, separated by spaces.\n\
15811No argument means disable all tracepoints."),
15812 &disablelist);
15813 deprecate_cmd (c, "disable");
15814
15815 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15816Enable specified tracepoints.\n\
15817Arguments are tracepoint numbers, separated by spaces.\n\
15818No argument means enable all tracepoints."),
15819 &enablelist);
15820 deprecate_cmd (c, "enable");
15821
15822 add_com ("passcount", class_trace, trace_pass_command, _("\
15823Set the passcount for a tracepoint.\n\
15824The trace will end when the tracepoint has been passed 'count' times.\n\
15825Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15826if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15827
6149aea9
PA
15828 add_prefix_cmd ("save", class_breakpoint, save_command,
15829 _("Save breakpoint definitions as a script."),
15830 &save_cmdlist, "save ",
15831 0/*allow-unknown*/, &cmdlist);
15832
15833 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15834Save current breakpoint definitions as a script.\n\
cce7e648 15835This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
15836catchpoints, tracepoints). Use the 'source' command in another debug\n\
15837session to restore them."),
15838 &save_cmdlist);
15839 set_cmd_completer (c, filename_completer);
15840
15841 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 15842Save current tracepoint definitions as a script.\n\
6149aea9
PA
15843Use the 'source' command in another debug session to restore them."),
15844 &save_cmdlist);
1042e4c0
SS
15845 set_cmd_completer (c, filename_completer);
15846
6149aea9
PA
15847 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15848 deprecate_cmd (c, "save tracepoints");
15849
1bedd215 15850 add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
fa8d40ab
JJ
15851Breakpoint specific settings\n\
15852Configure various breakpoint-specific variables such as\n\
1bedd215 15853pending breakpoint behavior"),
fa8d40ab
JJ
15854 &breakpoint_set_cmdlist, "set breakpoint ",
15855 0/*allow-unknown*/, &setlist);
1bedd215 15856 add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
fa8d40ab
JJ
15857Breakpoint specific settings\n\
15858Configure various breakpoint-specific variables such as\n\
1bedd215 15859pending breakpoint behavior"),
fa8d40ab
JJ
15860 &breakpoint_show_cmdlist, "show breakpoint ",
15861 0/*allow-unknown*/, &showlist);
15862
7915a72c
AC
15863 add_setshow_auto_boolean_cmd ("pending", no_class,
15864 &pending_break_support, _("\
15865Set debugger's behavior regarding pending breakpoints."), _("\
15866Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
15867If on, an unrecognized breakpoint location will cause gdb to create a\n\
15868pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15869an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 15870user-query to see if a pending breakpoint should be created."),
2c5b56ce 15871 NULL,
920d2a44 15872 show_pending_break_support,
6e1d7d6c
AC
15873 &breakpoint_set_cmdlist,
15874 &breakpoint_show_cmdlist);
fa8d40ab
JJ
15875
15876 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
15877
15878 add_setshow_boolean_cmd ("auto-hw", no_class,
15879 &automatic_hardware_breakpoints, _("\
15880Set automatic usage of hardware breakpoints."), _("\
15881Show automatic usage of hardware breakpoints."), _("\
15882If set, the debugger will automatically use hardware breakpoints for\n\
15883breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15884a warning will be emitted for such breakpoints."),
15885 NULL,
15886 show_automatic_hardware_breakpoints,
15887 &breakpoint_set_cmdlist,
15888 &breakpoint_show_cmdlist);
74960c60 15889
a25a5a45
PA
15890 add_setshow_boolean_cmd ("always-inserted", class_support,
15891 &always_inserted_mode, _("\
74960c60
VP
15892Set mode for inserting breakpoints."), _("\
15893Show mode for inserting breakpoints."), _("\
a25a5a45
PA
15894When this mode is on, breakpoints are inserted immediately as soon as\n\
15895they're created, kept inserted even when execution stops, and removed\n\
15896only when the user deletes them. When this mode is off (the default),\n\
15897breakpoints are inserted only when execution continues, and removed\n\
15898when execution stops."),
72d0e2c5
YQ
15899 NULL,
15900 &show_always_inserted_mode,
15901 &breakpoint_set_cmdlist,
15902 &breakpoint_show_cmdlist);
f1310107 15903
b775012e
LM
15904 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15905 condition_evaluation_enums,
15906 &condition_evaluation_mode_1, _("\
15907Set mode of breakpoint condition evaluation."), _("\
15908Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 15909When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
15910evaluated on the host's side by GDB. When it is set to \"target\",\n\
15911breakpoint conditions will be downloaded to the target (if the target\n\
15912supports such feature) and conditions will be evaluated on the target's side.\n\
15913If this is set to \"auto\" (default), this will be automatically set to\n\
15914\"target\" if it supports condition evaluation, otherwise it will\n\
15915be set to \"gdb\""),
15916 &set_condition_evaluation_mode,
15917 &show_condition_evaluation_mode,
15918 &breakpoint_set_cmdlist,
15919 &breakpoint_show_cmdlist);
15920
f1310107
TJB
15921 add_com ("break-range", class_breakpoint, break_range_command, _("\
15922Set a breakpoint for an address range.\n\
15923break-range START-LOCATION, END-LOCATION\n\
15924where START-LOCATION and END-LOCATION can be one of the following:\n\
15925 LINENUM, for that line in the current file,\n\
15926 FILE:LINENUM, for that line in that file,\n\
15927 +OFFSET, for that number of lines after the current line\n\
15928 or the start of the range\n\
15929 FUNCTION, for the first line in that function,\n\
15930 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15931 *ADDRESS, for the instruction at that address.\n\
15932\n\
15933The breakpoint will stop execution of the inferior whenever it executes\n\
15934an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15935range (including START-LOCATION and END-LOCATION)."));
15936
e7e0cddf 15937 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 15938Set a dynamic printf at specified location.\n\
e7e0cddf 15939dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
15940location may be a linespec, explicit, or address location.\n"
15941"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
15942 set_cmd_completer (c, location_completer);
15943
15944 add_setshow_enum_cmd ("dprintf-style", class_support,
15945 dprintf_style_enums, &dprintf_style, _("\
15946Set the style of usage for dynamic printf."), _("\
15947Show the style of usage for dynamic printf."), _("\
15948This setting chooses how GDB will do a dynamic printf.\n\
15949If the value is \"gdb\", then the printing is done by GDB to its own\n\
15950console, as with the \"printf\" command.\n\
15951If the value is \"call\", the print is done by calling a function in your\n\
15952program; by default printf(), but you can choose a different function or\n\
15953output stream by setting dprintf-function and dprintf-channel."),
15954 update_dprintf_commands, NULL,
15955 &setlist, &showlist);
15956
15957 dprintf_function = xstrdup ("printf");
15958 add_setshow_string_cmd ("dprintf-function", class_support,
15959 &dprintf_function, _("\
15960Set the function to use for dynamic printf"), _("\
15961Show the function to use for dynamic printf"), NULL,
15962 update_dprintf_commands, NULL,
15963 &setlist, &showlist);
15964
15965 dprintf_channel = xstrdup ("");
15966 add_setshow_string_cmd ("dprintf-channel", class_support,
15967 &dprintf_channel, _("\
15968Set the channel to use for dynamic printf"), _("\
15969Show the channel to use for dynamic printf"), NULL,
15970 update_dprintf_commands, NULL,
15971 &setlist, &showlist);
15972
d3ce09f5
SS
15973 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15974 &disconnected_dprintf, _("\
15975Set whether dprintf continues after GDB disconnects."), _("\
15976Show whether dprintf continues after GDB disconnects."), _("\
15977Use this to let dprintf commands continue to hit and produce output\n\
15978even if GDB disconnects or detaches from the target."),
15979 NULL,
15980 NULL,
15981 &setlist, &showlist);
15982
15983 add_com ("agent-printf", class_vars, agent_printf_command, _("\
15984agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15985(target agent only) This is useful for formatted output in user-defined commands."));
15986
765dc015 15987 automatic_hardware_breakpoints = 1;
f3b1572e 15988
76727919
TT
15989 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15990 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
c906108c 15991}
This page took 3.644246 seconds and 4 git commands to generate.