gdb/completer: improve tab completion to consider the '-force-condition' flag
[deliverable/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
b811d2c2 3 Copyright (C) 1986-2020 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 61#include "cli/cli-utils.h"
d55e5aa6 62#include "stack.h"
4de283e4
TT
63#include "ax-gdb.h"
64#include "dummy-frame.h"
65#include "interps.h"
268a13a5 66#include "gdbsupport/format.h"
cfc31633 67#include "thread-fsm.h"
5d5658a1 68#include "tid-parse.h"
4de283e4 69#include "cli/cli-style.h"
d3ce09f5 70
1042e4c0 71/* readline include files */
073bbbb0 72#include "readline/tilde.h"
1042e4c0
SS
73
74/* readline defines this. */
75#undef savestring
76
034dad6f 77#include "mi/mi-common.h"
6dddc817 78#include "extension.h"
325fac50 79#include <algorithm>
5ed8105e 80#include "progspace-and-thread.h"
268a13a5
TT
81#include "gdbsupport/array-view.h"
82#include "gdbsupport/gdb_optional.h"
104c1213 83
4a64f543 84/* Prototypes for local functions. */
c906108c 85
896b6bda 86static void map_breakpoint_numbers (const char *,
48649e1b 87 gdb::function_view<void (breakpoint *)>);
c906108c 88
348d480f
PA
89static void breakpoint_re_set_default (struct breakpoint *);
90
f00aae0f 91static void
626d2320 92 create_sals_from_location_default (struct event_location *location,
f00aae0f
KS
93 struct linespec_result *canonical,
94 enum bptype type_wanted);
983af33b
SDJ
95
96static void create_breakpoints_sal_default (struct gdbarch *,
97 struct linespec_result *,
e1e01040
PA
98 gdb::unique_xmalloc_ptr<char>,
99 gdb::unique_xmalloc_ptr<char>,
100 enum bptype,
983af33b
SDJ
101 enum bpdisp, int, int,
102 int,
103 const struct breakpoint_ops *,
44f238bb 104 int, int, int, unsigned);
983af33b 105
6c5b2ebe 106static std::vector<symtab_and_line> decode_location_default
626d2320 107 (struct breakpoint *b, struct event_location *location,
6c5b2ebe 108 struct program_space *search_pspace);
983af33b 109
a6535de1
TT
110static int can_use_hardware_watchpoint
111 (const std::vector<value_ref_ptr> &vals);
c906108c 112
a14ed312 113static void mention (struct breakpoint *);
c906108c 114
348d480f
PA
115static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
116 enum bptype,
c0a91b2b 117 const struct breakpoint_ops *);
3742cc8b
YQ
118static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
119 const struct symtab_and_line *);
120
4a64f543
MS
121/* This function is used in gdbtk sources and thus can not be made
122 static. */
63c252f8 123struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 124 struct symtab_and_line,
c0a91b2b
TT
125 enum bptype,
126 const struct breakpoint_ops *);
c906108c 127
06edf0c0
PA
128static struct breakpoint *
129 momentary_breakpoint_from_master (struct breakpoint *orig,
130 enum bptype type,
a1aa2221
LM
131 const struct breakpoint_ops *ops,
132 int loc_enabled);
06edf0c0 133
76897487
KB
134static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
135
a6d9a66e
UW
136static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
137 CORE_ADDR bpaddr,
dda83cd7 138 enum bptype bptype);
76897487 139
6c95b8df
PA
140static void describe_other_breakpoints (struct gdbarch *,
141 struct program_space *, CORE_ADDR,
5af949e3 142 struct obj_section *, int);
c906108c 143
85d721b8
PA
144static int watchpoint_locations_match (struct bp_location *loc1,
145 struct bp_location *loc2);
146
7f32a4d5
PA
147static int breakpoint_locations_match (struct bp_location *loc1,
148 struct bp_location *loc2,
149 bool sw_hw_bps_match = false);
150
f1310107 151static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 152 const struct address_space *aspace,
f1310107
TJB
153 CORE_ADDR addr);
154
d35ae833 155static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 156 const address_space *,
d35ae833
PA
157 CORE_ADDR, int);
158
834c0d03 159static int remove_breakpoint (struct bp_location *);
b2b6a7da 160static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 161
e514a9d6 162static enum print_stop_action print_bp_stop_message (bpstat bs);
c906108c 163
a14ed312 164static int hw_breakpoint_used_count (void);
c906108c 165
a1398e0c
PA
166static int hw_watchpoint_use_count (struct breakpoint *);
167
168static int hw_watchpoint_used_count_others (struct breakpoint *except,
169 enum bptype type,
170 int *other_type_used);
c906108c 171
816338b5
SS
172static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
173 int count);
c906108c 174
fe3f5fa8 175static void free_bp_location (struct bp_location *loc);
f431efe5
PA
176static void incref_bp_location (struct bp_location *loc);
177static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 178
39d61571 179static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 180
44702360
PA
181/* update_global_location_list's modes of operation wrt to whether to
182 insert locations now. */
183enum ugll_insert_mode
184{
185 /* Don't insert any breakpoint locations into the inferior, only
186 remove already-inserted locations that no longer should be
187 inserted. Functions that delete a breakpoint or breakpoints
188 should specify this mode, so that deleting a breakpoint doesn't
189 have the side effect of inserting the locations of other
190 breakpoints that are marked not-inserted, but should_be_inserted
191 returns true on them.
192
193 This behavior is useful is situations close to tear-down -- e.g.,
194 after an exec, while the target still has execution, but
195 breakpoint shadows of the previous executable image should *NOT*
196 be restored to the new image; or before detaching, where the
197 target still has execution and wants to delete breakpoints from
198 GDB's lists, and all breakpoints had already been removed from
199 the inferior. */
200 UGLL_DONT_INSERT,
201
a25a5a45
PA
202 /* May insert breakpoints iff breakpoints_should_be_inserted_now
203 claims breakpoints should be inserted now. */
04086b45
PA
204 UGLL_MAY_INSERT,
205
a25a5a45
PA
206 /* Insert locations now, irrespective of
207 breakpoints_should_be_inserted_now. E.g., say all threads are
208 stopped right now, and the user did "continue". We need to
209 insert breakpoints _before_ resuming the target, but
210 UGLL_MAY_INSERT wouldn't insert them, because
211 breakpoints_should_be_inserted_now returns false at that point,
212 as no thread is running yet. */
04086b45 213 UGLL_INSERT
44702360
PA
214};
215
216static void update_global_location_list (enum ugll_insert_mode);
a5606eee 217
44702360 218static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 219
74960c60 220static void insert_breakpoint_locations (void);
a5606eee 221
0b39b52e 222static void trace_pass_command (const char *, int);
1042e4c0 223
558a9d82
YQ
224static void set_tracepoint_count (int num);
225
f2478a7e 226static bool is_masked_watchpoint (const struct breakpoint *b);
9c06b0b4 227
b775012e
LM
228static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
229
983af33b
SDJ
230/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
231 otherwise. */
232
233static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 234
2060206e
PA
235/* The breakpoint_ops structure to be inherited by all breakpoint_ops
236 that are implemented on top of software or hardware breakpoints
237 (user breakpoints, internal and momentary breakpoints, etc.). */
238static struct breakpoint_ops bkpt_base_breakpoint_ops;
239
240/* Internal breakpoints class type. */
06edf0c0 241static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
242
243/* Momentary breakpoints class type. */
06edf0c0
PA
244static struct breakpoint_ops momentary_breakpoint_ops;
245
2060206e
PA
246/* The breakpoint_ops structure to be used in regular user created
247 breakpoints. */
248struct breakpoint_ops bkpt_breakpoint_ops;
249
55aa24fb
SDJ
250/* Breakpoints set on probes. */
251static struct breakpoint_ops bkpt_probe_breakpoint_ops;
252
bac7c5cf
GB
253/* Tracepoints set on probes. */
254static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
255
e7e0cddf 256/* Dynamic printf class type. */
c5867ab6 257struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 258
d3ce09f5
SS
259/* The style in which to perform a dynamic printf. This is a user
260 option because different output options have different tradeoffs;
261 if GDB does the printing, there is better error handling if there
262 is a problem with any of the arguments, but using an inferior
263 function lets you have special-purpose printers and sending of
264 output to the same place as compiled-in print functions. */
265
266static const char dprintf_style_gdb[] = "gdb";
267static const char dprintf_style_call[] = "call";
268static const char dprintf_style_agent[] = "agent";
269static const char *const dprintf_style_enums[] = {
270 dprintf_style_gdb,
271 dprintf_style_call,
272 dprintf_style_agent,
273 NULL
274};
275static const char *dprintf_style = dprintf_style_gdb;
276
277/* The function to use for dynamic printf if the preferred style is to
278 call into the inferior. The value is simply a string that is
279 copied into the command, so it can be anything that GDB can
280 evaluate to a callable address, not necessarily a function name. */
281
bde6261a 282static char *dprintf_function;
d3ce09f5
SS
283
284/* The channel to use for dynamic printf if the preferred style is to
285 call into the inferior; if a nonempty string, it will be passed to
286 the call as the first argument, with the format string as the
287 second. As with the dprintf function, this can be anything that
288 GDB knows how to evaluate, so in addition to common choices like
289 "stderr", this could be an app-specific expression like
290 "mystreams[curlogger]". */
291
bde6261a 292static char *dprintf_channel;
d3ce09f5
SS
293
294/* True if dprintf commands should continue to operate even if GDB
295 has disconnected. */
491144b5 296static bool disconnected_dprintf = true;
d3ce09f5 297
5cea2a26
PA
298struct command_line *
299breakpoint_commands (struct breakpoint *b)
300{
d1b0a7bf 301 return b->commands ? b->commands.get () : NULL;
5cea2a26 302}
3daf8fe5 303
f3b1572e
PA
304/* Flag indicating that a command has proceeded the inferior past the
305 current breakpoint. */
306
491144b5 307static bool breakpoint_proceeded;
f3b1572e 308
956a9fb9 309const char *
2cec12e5
AR
310bpdisp_text (enum bpdisp disp)
311{
4a64f543
MS
312 /* NOTE: the following values are a part of MI protocol and
313 represent values of 'disp' field returned when inferior stops at
314 a breakpoint. */
bc043ef3 315 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 316
2cec12e5
AR
317 return bpdisps[(int) disp];
318}
c906108c 319
4a64f543 320/* Prototypes for exported functions. */
c906108c 321/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 322 if such is available. */
c906108c
SS
323static int can_use_hw_watchpoints;
324
920d2a44
AC
325static void
326show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
327 struct cmd_list_element *c,
328 const char *value)
329{
3e43a32a
MS
330 fprintf_filtered (file,
331 _("Debugger's willingness to use "
332 "watchpoint hardware is %s.\n"),
920d2a44
AC
333 value);
334}
335
fa8d40ab
JJ
336/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
337 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 338 for unrecognized breakpoint locations.
fa8d40ab
JJ
339 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
340static enum auto_boolean pending_break_support;
920d2a44
AC
341static void
342show_pending_break_support (struct ui_file *file, int from_tty,
343 struct cmd_list_element *c,
344 const char *value)
345{
3e43a32a
MS
346 fprintf_filtered (file,
347 _("Debugger's behavior regarding "
348 "pending breakpoints is %s.\n"),
920d2a44
AC
349 value);
350}
fa8d40ab 351
491144b5 352/* If true, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 353 set with "break" but falling in read-only memory.
491144b5 354 If false, gdb will warn about such breakpoints, but won't automatically
765dc015 355 use hardware breakpoints. */
491144b5 356static bool automatic_hardware_breakpoints;
765dc015
VP
357static void
358show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
359 struct cmd_list_element *c,
360 const char *value)
361{
3e43a32a
MS
362 fprintf_filtered (file,
363 _("Automatic usage of hardware breakpoints is %s.\n"),
765dc015
VP
364 value);
365}
366
a25a5a45
PA
367/* If on, GDB keeps breakpoints inserted even if the inferior is
368 stopped, and immediately inserts any new breakpoints as soon as
369 they're created. If off (default), GDB keeps breakpoints off of
370 the target as long as possible. That is, it delays inserting
371 breakpoints until the next resume, and removes them again when the
372 target fully stops. This is a bit safer in case GDB crashes while
373 processing user input. */
491144b5 374static bool always_inserted_mode = false;
72d0e2c5 375
33e5cbd6 376static void
74960c60 377show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 378 struct cmd_list_element *c, const char *value)
74960c60 379{
a25a5a45
PA
380 fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
381 value);
74960c60
VP
382}
383
b57bacec
PA
384/* See breakpoint.h. */
385
33e5cbd6 386int
a25a5a45 387breakpoints_should_be_inserted_now (void)
33e5cbd6 388{
a25a5a45
PA
389 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
390 {
391 /* If breakpoints are global, they should be inserted even if no
392 thread under gdb's control is running, or even if there are
393 no threads under GDB's control yet. */
394 return 1;
395 }
5b6d1e4f 396 else
a25a5a45 397 {
a25a5a45
PA
398 if (always_inserted_mode)
399 {
400 /* The user wants breakpoints inserted even if all threads
401 are stopped. */
402 return 1;
403 }
404
5b6d1e4f
PA
405 for (inferior *inf : all_inferiors ())
406 if (inf->has_execution ()
407 && threads_are_executing (inf->process_target ()))
408 return 1;
372316f1
PA
409
410 /* Don't remove breakpoints yet if, even though all threads are
411 stopped, we still have events to process. */
08036331 412 for (thread_info *tp : all_non_exited_threads ())
372316f1
PA
413 if (tp->resumed
414 && tp->suspend.waitstatus_pending_p)
415 return 1;
a25a5a45
PA
416 }
417 return 0;
33e5cbd6 418}
765dc015 419
b775012e
LM
420static const char condition_evaluation_both[] = "host or target";
421
422/* Modes for breakpoint condition evaluation. */
423static const char condition_evaluation_auto[] = "auto";
424static const char condition_evaluation_host[] = "host";
425static const char condition_evaluation_target[] = "target";
426static const char *const condition_evaluation_enums[] = {
427 condition_evaluation_auto,
428 condition_evaluation_host,
429 condition_evaluation_target,
430 NULL
431};
432
433/* Global that holds the current mode for breakpoint condition evaluation. */
434static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
435
436/* Global that we use to display information to the user (gets its value from
437 condition_evaluation_mode_1. */
438static const char *condition_evaluation_mode = condition_evaluation_auto;
439
440/* Translate a condition evaluation mode MODE into either "host"
441 or "target". This is used mostly to translate from "auto" to the
442 real setting that is being used. It returns the translated
443 evaluation mode. */
444
445static const char *
446translate_condition_evaluation_mode (const char *mode)
447{
448 if (mode == condition_evaluation_auto)
449 {
450 if (target_supports_evaluation_of_breakpoint_conditions ())
451 return condition_evaluation_target;
452 else
453 return condition_evaluation_host;
454 }
455 else
456 return mode;
457}
458
459/* Discovers what condition_evaluation_auto translates to. */
460
461static const char *
462breakpoint_condition_evaluation_mode (void)
463{
464 return translate_condition_evaluation_mode (condition_evaluation_mode);
465}
466
467/* Return true if GDB should evaluate breakpoint conditions or false
468 otherwise. */
469
470static int
471gdb_evaluates_breakpoint_condition_p (void)
472{
473 const char *mode = breakpoint_condition_evaluation_mode ();
474
475 return (mode == condition_evaluation_host);
476}
477
c906108c
SS
478/* Are we executing breakpoint commands? */
479static int executing_breakpoint_commands;
480
c02f5703
MS
481/* Are overlay event breakpoints enabled? */
482static int overlay_events_enabled;
483
e09342b5 484/* See description in breakpoint.h. */
491144b5 485bool target_exact_watchpoints = false;
e09342b5 486
c906108c 487/* Walk the following statement or block through all breakpoints.
e5dd4106 488 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 489 current breakpoint. */
c906108c 490
5c44784c 491#define ALL_BREAKPOINTS(B) for (B = breakpoint_chain; B; B = B->next)
c906108c 492
5c44784c
JM
493#define ALL_BREAKPOINTS_SAFE(B,TMP) \
494 for (B = breakpoint_chain; \
495 B ? (TMP=B->next, 1): 0; \
496 B = TMP)
c906108c 497
4a64f543
MS
498/* Similar iterator for the low-level breakpoints. SAFE variant is
499 not provided so update_global_location_list must not be called
500 while executing the block of ALL_BP_LOCATIONS. */
7cc221ef 501
876fa593 502#define ALL_BP_LOCATIONS(B,BP_TMP) \
f5336ca5
PA
503 for (BP_TMP = bp_locations; \
504 BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
876fa593 505 BP_TMP++)
7cc221ef 506
b775012e
LM
507/* Iterates through locations with address ADDRESS for the currently selected
508 program space. BP_LOCP_TMP points to each object. BP_LOCP_START points
509 to where the loop should start from.
510 If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
511 appropriate location to start with. */
512
513#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS) \
514 for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
515 BP_LOCP_TMP = BP_LOCP_START; \
516 BP_LOCP_START \
f5336ca5 517 && (BP_LOCP_TMP < bp_locations + bp_locations_count \
b775012e
LM
518 && (*BP_LOCP_TMP)->address == ADDRESS); \
519 BP_LOCP_TMP++)
520
1042e4c0
SS
521/* Iterator for tracepoints only. */
522
523#define ALL_TRACEPOINTS(B) \
524 for (B = breakpoint_chain; B; B = B->next) \
d77f58be 525 if (is_tracepoint (B))
1042e4c0 526
7cc221ef 527/* Chains of all breakpoints defined. */
c906108c 528
81e6b8eb 529static struct breakpoint *breakpoint_chain;
c906108c 530
39ef2f62 531/* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS. */
876fa593 532
f5336ca5 533static struct bp_location **bp_locations;
876fa593 534
f5336ca5 535/* Number of elements of BP_LOCATIONS. */
876fa593 536
f5336ca5 537static unsigned bp_locations_count;
876fa593 538
4a64f543 539/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 540 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 541 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 542 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 543 an address you need to read. */
876fa593 544
f5336ca5 545static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 546
4a64f543
MS
547/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
548 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
549 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
550 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 551 scan for shadow bytes for an address you need to read. */
876fa593 552
f5336ca5 553static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 554
4a64f543 555/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
556 from the bp_locations array, but for which a hit may still be
557 reported by a target. */
1123588c 558static std::vector<bp_location *> moribund_locations;
20874c92 559
c906108c
SS
560/* Number of last breakpoint made. */
561
95a42b64
TT
562static int breakpoint_count;
563
86b17b60
PA
564/* The value of `breakpoint_count' before the last command that
565 created breakpoints. If the last (break-like) command created more
566 than one breakpoint, then the difference between BREAKPOINT_COUNT
567 and PREV_BREAKPOINT_COUNT is more than one. */
568static int prev_breakpoint_count;
c906108c 569
1042e4c0
SS
570/* Number of last tracepoint made. */
571
95a42b64 572static int tracepoint_count;
1042e4c0 573
6149aea9
PA
574static struct cmd_list_element *breakpoint_set_cmdlist;
575static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 576struct cmd_list_element *save_cmdlist;
6149aea9 577
badd37ce
SDJ
578/* See declaration at breakpoint.h. */
579
580struct breakpoint *
581breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
582 void *user_data)
583{
584 struct breakpoint *b = NULL;
585
586 ALL_BREAKPOINTS (b)
587 {
588 if (func (b, user_data) != 0)
589 break;
590 }
591
592 return b;
593}
594
468d015d
JJ
595/* Return whether a breakpoint is an active enabled breakpoint. */
596static int
597breakpoint_enabled (struct breakpoint *b)
598{
0d381245 599 return (b->enable_state == bp_enabled);
468d015d
JJ
600}
601
c906108c
SS
602/* Set breakpoint count to NUM. */
603
95a42b64 604static void
fba45db2 605set_breakpoint_count (int num)
c906108c 606{
86b17b60 607 prev_breakpoint_count = breakpoint_count;
c906108c 608 breakpoint_count = num;
4fa62494 609 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
610}
611
86b17b60
PA
612/* Used by `start_rbreak_breakpoints' below, to record the current
613 breakpoint count before "rbreak" creates any breakpoint. */
614static int rbreak_start_breakpoint_count;
615
95a42b64
TT
616/* Called at the start an "rbreak" command to record the first
617 breakpoint made. */
86b17b60 618
c80049d3 619scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
95a42b64 620{
86b17b60 621 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
622}
623
624/* Called at the end of an "rbreak" command to record the last
625 breakpoint made. */
86b17b60 626
c80049d3 627scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
95a42b64 628{
86b17b60 629 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
630}
631
4a64f543 632/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
633
634void
fba45db2 635clear_breakpoint_hit_counts (void)
c906108c
SS
636{
637 struct breakpoint *b;
638
639 ALL_BREAKPOINTS (b)
640 b->hit_count = 0;
641}
642
c906108c 643\f
48cb2d85
VP
644/* Return the breakpoint with the specified number, or NULL
645 if the number does not refer to an existing breakpoint. */
646
647struct breakpoint *
648get_breakpoint (int num)
649{
650 struct breakpoint *b;
651
652 ALL_BREAKPOINTS (b)
653 if (b->number == num)
654 return b;
655
656 return NULL;
657}
5c44784c 658
c906108c 659\f
adc36818 660
b775012e
LM
661/* Mark locations as "conditions have changed" in case the target supports
662 evaluating conditions on its side. */
663
664static void
665mark_breakpoint_modified (struct breakpoint *b)
666{
667 struct bp_location *loc;
668
669 /* This is only meaningful if the target is
670 evaluating conditions and if the user has
671 opted for condition evaluation on the target's
672 side. */
673 if (gdb_evaluates_breakpoint_condition_p ()
674 || !target_supports_evaluation_of_breakpoint_conditions ())
675 return;
676
677 if (!is_breakpoint (b))
678 return;
679
680 for (loc = b->loc; loc; loc = loc->next)
681 loc->condition_changed = condition_modified;
682}
683
684/* Mark location as "conditions have changed" in case the target supports
685 evaluating conditions on its side. */
686
687static void
688mark_breakpoint_location_modified (struct bp_location *loc)
689{
690 /* This is only meaningful if the target is
691 evaluating conditions and if the user has
692 opted for condition evaluation on the target's
693 side. */
694 if (gdb_evaluates_breakpoint_condition_p ()
695 || !target_supports_evaluation_of_breakpoint_conditions ())
696
697 return;
698
699 if (!is_breakpoint (loc->owner))
700 return;
701
702 loc->condition_changed = condition_modified;
703}
704
705/* Sets the condition-evaluation mode using the static global
706 condition_evaluation_mode. */
707
708static void
eb4c3f4a 709set_condition_evaluation_mode (const char *args, int from_tty,
b775012e
LM
710 struct cmd_list_element *c)
711{
b775012e
LM
712 const char *old_mode, *new_mode;
713
714 if ((condition_evaluation_mode_1 == condition_evaluation_target)
715 && !target_supports_evaluation_of_breakpoint_conditions ())
716 {
717 condition_evaluation_mode_1 = condition_evaluation_mode;
718 warning (_("Target does not support breakpoint condition evaluation.\n"
719 "Using host evaluation mode instead."));
720 return;
721 }
722
723 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
724 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
725
abf1152a
JK
726 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
727 settings was "auto". */
728 condition_evaluation_mode = condition_evaluation_mode_1;
729
b775012e
LM
730 /* Only update the mode if the user picked a different one. */
731 if (new_mode != old_mode)
732 {
733 struct bp_location *loc, **loc_tmp;
734 /* If the user switched to a different evaluation mode, we
735 need to synch the changes with the target as follows:
736
737 "host" -> "target": Send all (valid) conditions to the target.
738 "target" -> "host": Remove all the conditions from the target.
739 */
740
b775012e
LM
741 if (new_mode == condition_evaluation_target)
742 {
743 /* Mark everything modified and synch conditions with the
744 target. */
745 ALL_BP_LOCATIONS (loc, loc_tmp)
746 mark_breakpoint_location_modified (loc);
747 }
748 else
749 {
750 /* Manually mark non-duplicate locations to synch conditions
751 with the target. We do this to remove all the conditions the
752 target knows about. */
753 ALL_BP_LOCATIONS (loc, loc_tmp)
754 if (is_breakpoint (loc->owner) && loc->inserted)
755 loc->needs_update = 1;
756 }
757
758 /* Do the update. */
44702360 759 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
760 }
761
762 return;
763}
764
765/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
766 what "auto" is translating to. */
767
768static void
769show_condition_evaluation_mode (struct ui_file *file, int from_tty,
770 struct cmd_list_element *c, const char *value)
771{
772 if (condition_evaluation_mode == condition_evaluation_auto)
773 fprintf_filtered (file,
774 _("Breakpoint condition evaluation "
775 "mode is %s (currently %s).\n"),
776 value,
777 breakpoint_condition_evaluation_mode ());
778 else
779 fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
780 value);
781}
782
783/* A comparison function for bp_location AP and BP that is used by
784 bsearch. This comparison function only cares about addresses, unlike
39ef2f62 785 the more general bp_location_is_less_than function. */
b775012e
LM
786
787static int
f5336ca5 788bp_locations_compare_addrs (const void *ap, const void *bp)
b775012e 789{
9a3c8263
SM
790 const struct bp_location *a = *(const struct bp_location **) ap;
791 const struct bp_location *b = *(const struct bp_location **) bp;
b775012e
LM
792
793 if (a->address == b->address)
794 return 0;
795 else
796 return ((a->address > b->address) - (a->address < b->address));
797}
798
799/* Helper function to skip all bp_locations with addresses
800 less than ADDRESS. It returns the first bp_location that
801 is greater than or equal to ADDRESS. If none is found, just
802 return NULL. */
803
804static struct bp_location **
805get_first_locp_gte_addr (CORE_ADDR address)
806{
807 struct bp_location dummy_loc;
808 struct bp_location *dummy_locp = &dummy_loc;
809 struct bp_location **locp_found = NULL;
810
811 /* Initialize the dummy location's address field. */
b775012e
LM
812 dummy_loc.address = address;
813
814 /* Find a close match to the first location at ADDRESS. */
9a3c8263 815 locp_found = ((struct bp_location **)
f5336ca5 816 bsearch (&dummy_locp, bp_locations, bp_locations_count,
9a3c8263 817 sizeof (struct bp_location **),
f5336ca5 818 bp_locations_compare_addrs));
b775012e
LM
819
820 /* Nothing was found, nothing left to do. */
821 if (locp_found == NULL)
822 return NULL;
823
824 /* We may have found a location that is at ADDRESS but is not the first in the
825 location's list. Go backwards (if possible) and locate the first one. */
f5336ca5 826 while ((locp_found - 1) >= bp_locations
b775012e
LM
827 && (*(locp_found - 1))->address == address)
828 locp_found--;
829
830 return locp_found;
831}
832
b5fa468f
TBA
833/* Parse COND_STRING in the context of LOC and set as the condition
834 expression of LOC. BP_NUM is the number of LOC's owner, LOC_NUM is
835 the number of LOC within its owner. In case of parsing error, mark
836 LOC as DISABLED_BY_COND. In case of success, unset DISABLED_BY_COND. */
837
838static void
839set_breakpoint_location_condition (const char *cond_string, bp_location *loc,
840 int bp_num, int loc_num)
841{
842 bool has_junk = false;
843 try
844 {
845 expression_up new_exp = parse_exp_1 (&cond_string, loc->address,
846 block_for_pc (loc->address), 0);
847 if (*cond_string != 0)
848 has_junk = true;
849 else
850 {
851 loc->cond = std::move (new_exp);
852 if (loc->disabled_by_cond && loc->enabled)
853 printf_filtered (_("Breakpoint %d's condition is now valid at "
854 "location %d, enabling.\n"),
855 bp_num, loc_num);
856
857 loc->disabled_by_cond = false;
858 }
859 }
860 catch (const gdb_exception_error &e)
861 {
862 if (loc->enabled)
863 {
864 /* Warn if a user-enabled location is now becoming disabled-by-cond.
865 BP_NUM is 0 if the breakpoint is being defined for the first
866 time using the "break ... if ..." command, and non-zero if
867 already defined. */
868 if (bp_num != 0)
869 warning (_("failed to validate condition at location %d.%d, "
870 "disabling:\n %s"), bp_num, loc_num, e.what ());
871 else
872 warning (_("failed to validate condition at location %d, "
873 "disabling:\n %s"), loc_num, e.what ());
874 }
875
876 loc->disabled_by_cond = true;
877 }
878
879 if (has_junk)
880 error (_("Garbage '%s' follows condition"), cond_string);
881}
882
adc36818 883void
7a26bd4d 884set_breakpoint_condition (struct breakpoint *b, const char *exp,
733d554a 885 int from_tty, bool force)
adc36818 886{
4c55e970 887 if (*exp == 0)
3a5c3e22 888 {
4c55e970
TBA
889 xfree (b->cond_string);
890 b->cond_string = nullptr;
3a5c3e22 891
4c55e970 892 if (is_watchpoint (b))
78319c15 893 static_cast<watchpoint *> (b)->cond_exp.reset ();
4c55e970
TBA
894 else
895 {
b5fa468f 896 int loc_num = 1;
78319c15 897 for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
4c55e970
TBA
898 {
899 loc->cond.reset ();
b5fa468f
TBA
900 if (loc->disabled_by_cond && loc->enabled)
901 printf_filtered (_("Breakpoint %d's condition is now valid at "
902 "location %d, enabling.\n"),
903 b->number, loc_num);
904 loc->disabled_by_cond = false;
905 loc_num++;
4c55e970
TBA
906
907 /* No need to free the condition agent expression
908 bytecode (if we have one). We will handle this
909 when we go through update_global_location_list. */
910 }
911 }
1e620590 912
adc36818
PM
913 if (from_tty)
914 printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
915 }
916 else
917 {
adc36818
PM
918 if (is_watchpoint (b))
919 {
699bd4cf 920 innermost_block_tracker tracker;
78319c15 921 const char *arg = exp;
4c55e970 922 expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
78319c15 923 if (*arg != 0)
adc36818 924 error (_("Junk at end of expression"));
78319c15 925 watchpoint *w = static_cast<watchpoint *> (b);
4c55e970 926 w->cond_exp = std::move (new_exp);
699bd4cf 927 w->cond_exp_valid_block = tracker.block ();
adc36818
PM
928 }
929 else
930 {
4c55e970
TBA
931 /* Parse and set condition expressions. We make two passes.
932 In the first, we parse the condition string to see if it
b5fa468f
TBA
933 is valid in at least one location. If so, the condition
934 would be accepted. So we go ahead and set the locations'
935 conditions. In case no valid case is found, we throw
4c55e970
TBA
936 the error and the condition string will be rejected.
937 This two-pass approach is taken to avoid setting the
938 state of locations in case of a reject. */
78319c15 939 for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
4c55e970 940 {
b5fa468f
TBA
941 try
942 {
943 const char *arg = exp;
944 parse_exp_1 (&arg, loc->address,
945 block_for_pc (loc->address), 0);
946 if (*arg != 0)
947 error (_("Junk at end of expression"));
948 break;
949 }
950 catch (const gdb_exception_error &e)
951 {
952 /* Condition string is invalid. If this happens to
733d554a
TBA
953 be the last loc, abandon (if not forced) or continue
954 (if forced). */
955 if (loc->next == nullptr && !force)
b5fa468f
TBA
956 throw;
957 }
4c55e970
TBA
958 }
959
b5fa468f 960 /* If we reach here, the condition is valid at some locations. */
dda83cd7
SM
961 int loc_num = 1;
962 for (bp_location *loc = b->loc; loc != nullptr;
963 loc = loc->next, loc_num++)
964 set_breakpoint_location_condition (exp, loc, b->number, loc_num);
adc36818 965 }
1e620590
TBA
966
967 /* We know that the new condition parsed successfully. The
968 condition string of the breakpoint can be safely updated. */
969 xfree (b->cond_string);
970 b->cond_string = xstrdup (exp);
971 b->condition_not_parsed = 0;
adc36818 972 }
b775012e
LM
973 mark_breakpoint_modified (b);
974
76727919 975 gdb::observers::breakpoint_modified.notify (b);
adc36818
PM
976}
977
b1d4d8d1
TBA
978/* The options for the "condition" command. */
979
980struct condition_command_opts
981{
982 /* For "-force". */
983 bool force_condition = false;
984};
985
986static const gdb::option::option_def condition_command_option_defs[] = {
987
988 gdb::option::flag_option_def<condition_command_opts> {
989 "force",
990 [] (condition_command_opts *opts) { return &opts->force_condition; },
991 N_("Set the condition even if it is invalid for all current locations."),
992 },
993
994};
995
996/* Create an option_def_group for the "condition" options, with
997 CC_OPTS as context. */
998
999static inline gdb::option::option_def_group
1000make_condition_command_options_def_group (condition_command_opts *cc_opts)
1001{
1002 return {{condition_command_option_defs}, cc_opts};
1003}
1004
d55637df
TT
1005/* Completion for the "condition" command. */
1006
eb3ff9a5 1007static void
6f937416 1008condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 1009 completion_tracker &tracker,
b1d4d8d1 1010 const char *text, const char * /*word*/)
d55637df 1011{
b1d4d8d1
TBA
1012 bool has_no_arguments = (*text == '\0');
1013 condition_command_opts cc_opts;
1014 const auto group = make_condition_command_options_def_group (&cc_opts);
1015 if (gdb::option::complete_options
1016 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
1017 return;
d55637df 1018
f1735a53 1019 text = skip_spaces (text);
b1d4d8d1 1020 const char *space = skip_to_space (text);
d55637df
TT
1021 if (*space == '\0')
1022 {
1023 int len;
1024 struct breakpoint *b;
d55637df
TT
1025
1026 if (text[0] == '$')
1027 {
b1d4d8d1 1028 tracker.advance_custom_word_point_by (1);
d55637df 1029 /* We don't support completion of history indices. */
eb3ff9a5
PA
1030 if (!isdigit (text[1]))
1031 complete_internalvar (tracker, &text[1]);
1032 return;
d55637df
TT
1033 }
1034
b1d4d8d1
TBA
1035 /* Suggest the "-force" flag if no arguments are given. If
1036 arguments were passed, they either already include the flag,
1037 or we are beyond the point of suggesting it because it's
1038 positionally the first argument. */
1039 if (has_no_arguments)
1040 gdb::option::complete_on_all_options (tracker, group);
1041
d55637df
TT
1042 /* We're completing the breakpoint number. */
1043 len = strlen (text);
1044
1045 ALL_BREAKPOINTS (b)
58ce7251
SDJ
1046 {
1047 char number[50];
1048
1049 xsnprintf (number, sizeof (number), "%d", b->number);
1050
1051 if (strncmp (number, text, len) == 0)
b02f78f9 1052 tracker.add_completion (make_unique_xstrdup (number));
58ce7251 1053 }
d55637df 1054
eb3ff9a5 1055 return;
d55637df
TT
1056 }
1057
b1d4d8d1
TBA
1058 /* We're completing the expression part. Skip the breakpoint num. */
1059 const char *exp_start = skip_spaces (space);
1060 tracker.advance_custom_word_point_by (exp_start - text);
1061 text = exp_start;
1062 const char *word = advance_to_expression_complete_word_point (tracker, text);
eb3ff9a5 1063 expression_completer (cmd, tracker, text, word);
d55637df
TT
1064}
1065
c906108c
SS
1066/* condition N EXP -- set break condition of breakpoint N to EXP. */
1067
1068static void
0b39b52e 1069condition_command (const char *arg, int from_tty)
c906108c 1070{
52f0bd74 1071 struct breakpoint *b;
0b39b52e 1072 const char *p;
52f0bd74 1073 int bnum;
c906108c
SS
1074
1075 if (arg == 0)
e2e0b3e5 1076 error_no_arg (_("breakpoint number"));
c906108c
SS
1077
1078 p = arg;
733d554a
TBA
1079
1080 /* Check if the "-force" flag was passed. */
b1d4d8d1
TBA
1081 condition_command_opts cc_opts;
1082 const auto group = make_condition_command_options_def_group (&cc_opts);
1083 gdb::option::process_options
1084 (&p, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
733d554a 1085
c906108c 1086 bnum = get_number (&p);
5c44784c 1087 if (bnum == 0)
8a3fe4f8 1088 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c
SS
1089
1090 ALL_BREAKPOINTS (b)
1091 if (b->number == bnum)
2f069f6f 1092 {
6dddc817
DE
1093 /* Check if this breakpoint has a "stop" method implemented in an
1094 extension language. This method and conditions entered into GDB
1095 from the CLI are mutually exclusive. */
1096 const struct extension_language_defn *extlang
1097 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1098
1099 if (extlang != NULL)
1100 {
1101 error (_("Only one stop condition allowed. There is currently"
1102 " a %s stop condition defined for this breakpoint."),
1103 ext_lang_capitalized_name (extlang));
1104 }
b1d4d8d1 1105 set_breakpoint_condition (b, p, from_tty, cc_opts.force_condition);
b775012e
LM
1106
1107 if (is_breakpoint (b))
44702360 1108 update_global_location_list (UGLL_MAY_INSERT);
b775012e 1109
2f069f6f
JB
1110 return;
1111 }
c906108c 1112
8a3fe4f8 1113 error (_("No breakpoint number %d."), bnum);
c906108c
SS
1114}
1115
a7bdde9e
VP
1116/* Check that COMMAND do not contain commands that are suitable
1117 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1118 Throw if any such commands is found. */
1119
a7bdde9e
VP
1120static void
1121check_no_tracepoint_commands (struct command_line *commands)
1122{
1123 struct command_line *c;
cc59ec59 1124
a7bdde9e
VP
1125 for (c = commands; c; c = c->next)
1126 {
a7bdde9e 1127 if (c->control_type == while_stepping_control)
3e43a32a
MS
1128 error (_("The 'while-stepping' command can "
1129 "only be used for tracepoints"));
a7bdde9e 1130
12973681
TT
1131 check_no_tracepoint_commands (c->body_list_0.get ());
1132 check_no_tracepoint_commands (c->body_list_1.get ());
a7bdde9e
VP
1133
1134 /* Not that command parsing removes leading whitespace and comment
4a64f543 1135 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1136 command directly. */
1137 if (strstr (c->line, "collect ") == c->line)
1138 error (_("The 'collect' command can only be used for tracepoints"));
1139
51661e93
VP
1140 if (strstr (c->line, "teval ") == c->line)
1141 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1142 }
1143}
1144
c1fc2657 1145struct longjmp_breakpoint : public breakpoint
3b0871f4 1146{
c1fc2657 1147 ~longjmp_breakpoint () override;
3b0871f4
SM
1148};
1149
d77f58be
SS
1150/* Encapsulate tests for different types of tracepoints. */
1151
3b0871f4
SM
1152static bool
1153is_tracepoint_type (bptype type)
d9b3f62e
PA
1154{
1155 return (type == bp_tracepoint
1156 || type == bp_fast_tracepoint
1157 || type == bp_static_tracepoint);
1158}
1159
3b0871f4
SM
1160static bool
1161is_longjmp_type (bptype type)
1162{
1163 return type == bp_longjmp || type == bp_exception;
1164}
1165
f2478a7e
SM
1166/* See breakpoint.h. */
1167
1168bool
d77f58be 1169is_tracepoint (const struct breakpoint *b)
a7bdde9e 1170{
d9b3f62e 1171 return is_tracepoint_type (b->type);
a7bdde9e 1172}
d9b3f62e 1173
a5e364af
SM
1174/* Factory function to create an appropriate instance of breakpoint given
1175 TYPE. */
1176
1177static std::unique_ptr<breakpoint>
1178new_breakpoint_from_type (bptype type)
1179{
1180 breakpoint *b;
1181
1182 if (is_tracepoint_type (type))
c1fc2657 1183 b = new tracepoint ();
3b0871f4 1184 else if (is_longjmp_type (type))
c1fc2657 1185 b = new longjmp_breakpoint ();
a5e364af
SM
1186 else
1187 b = new breakpoint ();
1188
1189 return std::unique_ptr<breakpoint> (b);
1190}
1191
e5dd4106 1192/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1193 breakpoint. This function will throw an exception if a problem is
1194 found. */
48cb2d85 1195
95a42b64
TT
1196static void
1197validate_commands_for_breakpoint (struct breakpoint *b,
1198 struct command_line *commands)
48cb2d85 1199{
d77f58be 1200 if (is_tracepoint (b))
a7bdde9e 1201 {
c9a6ce02 1202 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1203 struct command_line *c;
1204 struct command_line *while_stepping = 0;
c9a6ce02
PA
1205
1206 /* Reset the while-stepping step count. The previous commands
dda83cd7
SM
1207 might have included a while-stepping action, while the new
1208 ones might not. */
c9a6ce02
PA
1209 t->step_count = 0;
1210
1211 /* We need to verify that each top-level element of commands is
1212 valid for tracepoints, that there's at most one
1213 while-stepping element, and that the while-stepping's body
1214 has valid tracing commands excluding nested while-stepping.
1215 We also need to validate the tracepoint action line in the
1216 context of the tracepoint --- validate_actionline actually
1217 has side effects, like setting the tracepoint's
1218 while-stepping STEP_COUNT, in addition to checking if the
1219 collect/teval actions parse and make sense in the
1220 tracepoint's context. */
a7bdde9e
VP
1221 for (c = commands; c; c = c->next)
1222 {
a7bdde9e
VP
1223 if (c->control_type == while_stepping_control)
1224 {
1225 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1226 error (_("The 'while-stepping' command "
1227 "cannot be used for fast tracepoint"));
0fb4aa4b 1228 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1229 error (_("The 'while-stepping' command "
1230 "cannot be used for static tracepoint"));
a7bdde9e
VP
1231
1232 if (while_stepping)
3e43a32a
MS
1233 error (_("The 'while-stepping' command "
1234 "can be used only once"));
a7bdde9e
VP
1235 else
1236 while_stepping = c;
1237 }
c9a6ce02
PA
1238
1239 validate_actionline (c->line, b);
a7bdde9e
VP
1240 }
1241 if (while_stepping)
1242 {
1243 struct command_line *c2;
1244
12973681
TT
1245 gdb_assert (while_stepping->body_list_1 == nullptr);
1246 c2 = while_stepping->body_list_0.get ();
a7bdde9e
VP
1247 for (; c2; c2 = c2->next)
1248 {
a7bdde9e
VP
1249 if (c2->control_type == while_stepping_control)
1250 error (_("The 'while-stepping' command cannot be nested"));
1251 }
1252 }
1253 }
1254 else
1255 {
1256 check_no_tracepoint_commands (commands);
1257 }
95a42b64
TT
1258}
1259
0fb4aa4b
PA
1260/* Return a vector of all the static tracepoints set at ADDR. The
1261 caller is responsible for releasing the vector. */
1262
f51e0e20 1263std::vector<breakpoint *>
0fb4aa4b
PA
1264static_tracepoints_here (CORE_ADDR addr)
1265{
1266 struct breakpoint *b;
f51e0e20 1267 std::vector<breakpoint *> found;
0fb4aa4b
PA
1268 struct bp_location *loc;
1269
1270 ALL_BREAKPOINTS (b)
1271 if (b->type == bp_static_tracepoint)
1272 {
1273 for (loc = b->loc; loc; loc = loc->next)
1274 if (loc->address == addr)
f51e0e20 1275 found.push_back (b);
0fb4aa4b
PA
1276 }
1277
1278 return found;
1279}
1280
95a42b64 1281/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1282 validate that only allowed commands are included. */
95a42b64
TT
1283
1284void
4a64f543 1285breakpoint_set_commands (struct breakpoint *b,
12973681 1286 counted_command_line &&commands)
95a42b64 1287{
93921405 1288 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1289
d1b0a7bf 1290 b->commands = std::move (commands);
76727919 1291 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1292}
1293
45a43567
TT
1294/* Set the internal `silent' flag on the breakpoint. Note that this
1295 is not the same as the "silent" that may appear in the breakpoint's
1296 commands. */
1297
1298void
1299breakpoint_set_silent (struct breakpoint *b, int silent)
1300{
1301 int old_silent = b->silent;
1302
1303 b->silent = silent;
1304 if (old_silent != silent)
76727919 1305 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1306}
1307
1308/* Set the thread for this breakpoint. If THREAD is -1, make the
1309 breakpoint work for any thread. */
1310
1311void
1312breakpoint_set_thread (struct breakpoint *b, int thread)
1313{
1314 int old_thread = b->thread;
1315
1316 b->thread = thread;
1317 if (old_thread != thread)
76727919 1318 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1319}
1320
1321/* Set the task for this breakpoint. If TASK is 0, make the
1322 breakpoint work for any task. */
1323
1324void
1325breakpoint_set_task (struct breakpoint *b, int task)
1326{
1327 int old_task = b->task;
1328
1329 b->task = task;
1330 if (old_task != task)
76727919 1331 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1332}
1333
95a42b64 1334static void
896b6bda 1335commands_command_1 (const char *arg, int from_tty,
4a64f543 1336 struct command_line *control)
95a42b64 1337{
d1b0a7bf 1338 counted_command_line cmd;
999700cd
PW
1339 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1340 NULL after the call to read_command_lines if the user provides an empty
1341 list of command by just typing "end". */
1342 bool cmd_read = false;
95a42b64 1343
896b6bda
PA
1344 std::string new_arg;
1345
95a42b64
TT
1346 if (arg == NULL || !*arg)
1347 {
da1df1db 1348 /* Argument not explicitly given. Synthesize it. */
86b17b60 1349 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1350 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1351 breakpoint_count);
95a42b64 1352 else if (breakpoint_count > 0)
896b6bda 1353 new_arg = string_printf ("%d", breakpoint_count);
48649e1b 1354 }
da1df1db
TBA
1355 else
1356 {
1357 /* Create a copy of ARG. This is needed because the "commands"
1358 command may be coming from a script. In that case, the read
1359 line buffer is going to be overwritten in the lambda of
1360 'map_breakpoint_numbers' below when reading the next line
1361 before we are are done parsing the breakpoint numbers. */
1362 new_arg = arg;
1363 }
1364 arg = new_arg.c_str ();
48649e1b
TT
1365
1366 map_breakpoint_numbers
1367 (arg, [&] (breakpoint *b)
1368 {
999700cd 1369 if (!cmd_read)
48649e1b 1370 {
999700cd 1371 gdb_assert (cmd == NULL);
48649e1b 1372 if (control != NULL)
12973681 1373 cmd = control->body_list_0;
48649e1b
TT
1374 else
1375 {
81b1e71c
TT
1376 std::string str
1377 = string_printf (_("Type commands for breakpoint(s) "
1378 "%s, one per line."),
1379 arg);
48649e1b 1380
60b3cef2
TT
1381 auto do_validate = [=] (const char *line)
1382 {
1383 validate_actionline (line, b);
1384 };
1385 gdb::function_view<void (const char *)> validator;
1386 if (is_tracepoint (b))
1387 validator = do_validate;
1388
1389 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
48649e1b 1390 }
999700cd 1391 cmd_read = true;
48649e1b
TT
1392 }
1393
1394 /* If a breakpoint was on the list more than once, we don't need to
1395 do anything. */
1396 if (b->commands != cmd)
1397 {
d1b0a7bf 1398 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b 1399 b->commands = cmd;
76727919 1400 gdb::observers::breakpoint_modified.notify (b);
48649e1b
TT
1401 }
1402 });
95a42b64
TT
1403}
1404
1405static void
0b39b52e 1406commands_command (const char *arg, int from_tty)
95a42b64
TT
1407{
1408 commands_command_1 (arg, from_tty, NULL);
c906108c 1409}
40c03ae8
EZ
1410
1411/* Like commands_command, but instead of reading the commands from
1412 input stream, takes them from an already parsed command structure.
1413
1414 This is used by cli-script.c to DTRT with breakpoint commands
1415 that are part of if and while bodies. */
1416enum command_control_type
896b6bda 1417commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1418{
95a42b64
TT
1419 commands_command_1 (arg, 0, cmd);
1420 return simple_control;
40c03ae8 1421}
876fa593
JK
1422
1423/* Return non-zero if BL->TARGET_INFO contains valid information. */
1424
1425static int
1426bp_location_has_shadow (struct bp_location *bl)
1427{
1428 if (bl->loc_type != bp_loc_software_breakpoint)
1429 return 0;
1430 if (!bl->inserted)
1431 return 0;
1432 if (bl->target_info.shadow_len == 0)
e5dd4106 1433 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1434 return 0;
1435 return 1;
1436}
1437
9d497a19
PA
1438/* Update BUF, which is LEN bytes read from the target address
1439 MEMADDR, by replacing a memory breakpoint with its shadowed
1440 contents.
1441
1442 If READBUF is not NULL, this buffer must not overlap with the of
1443 the breakpoint location's shadow_contents buffer. Otherwise, a
1444 failed assertion internal error will be raised. */
1445
1446static void
1447one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1448 const gdb_byte *writebuf_org,
1449 ULONGEST memaddr, LONGEST len,
1450 struct bp_target_info *target_info,
1451 struct gdbarch *gdbarch)
1452{
1453 /* Now do full processing of the found relevant range of elements. */
1454 CORE_ADDR bp_addr = 0;
1455 int bp_size = 0;
1456 int bptoffset = 0;
1457
1458 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1459 current_program_space->aspace, 0))
1460 {
1461 /* The breakpoint is inserted in a different address space. */
1462 return;
1463 }
1464
1465 /* Addresses and length of the part of the breakpoint that
1466 we need to copy. */
1467 bp_addr = target_info->placed_address;
1468 bp_size = target_info->shadow_len;
1469
1470 if (bp_addr + bp_size <= memaddr)
1471 {
1472 /* The breakpoint is entirely before the chunk of memory we are
1473 reading. */
1474 return;
1475 }
1476
1477 if (bp_addr >= memaddr + len)
1478 {
1479 /* The breakpoint is entirely after the chunk of memory we are
1480 reading. */
1481 return;
1482 }
1483
1484 /* Offset within shadow_contents. */
1485 if (bp_addr < memaddr)
1486 {
1487 /* Only copy the second part of the breakpoint. */
1488 bp_size -= memaddr - bp_addr;
1489 bptoffset = memaddr - bp_addr;
1490 bp_addr = memaddr;
1491 }
1492
1493 if (bp_addr + bp_size > memaddr + len)
1494 {
1495 /* Only copy the first part of the breakpoint. */
1496 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1497 }
1498
1499 if (readbuf != NULL)
1500 {
1501 /* Verify that the readbuf buffer does not overlap with the
1502 shadow_contents buffer. */
1503 gdb_assert (target_info->shadow_contents >= readbuf + len
1504 || readbuf >= (target_info->shadow_contents
1505 + target_info->shadow_len));
1506
1507 /* Update the read buffer with this inserted breakpoint's
1508 shadow. */
1509 memcpy (readbuf + bp_addr - memaddr,
1510 target_info->shadow_contents + bptoffset, bp_size);
1511 }
1512 else
1513 {
1514 const unsigned char *bp;
0d5ed153
MR
1515 CORE_ADDR addr = target_info->reqstd_address;
1516 int placed_size;
9d497a19
PA
1517
1518 /* Update the shadow with what we want to write to memory. */
1519 memcpy (target_info->shadow_contents + bptoffset,
1520 writebuf_org + bp_addr - memaddr, bp_size);
1521
1522 /* Determine appropriate breakpoint contents and size for this
1523 address. */
0d5ed153 1524 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1525
1526 /* Update the final write buffer with this inserted
1527 breakpoint's INSN. */
1528 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1529 }
1530}
1531
8defab1a 1532/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1533 by replacing any memory breakpoints with their shadowed contents.
1534
35c63cd8
JB
1535 If READBUF is not NULL, this buffer must not overlap with any of
1536 the breakpoint location's shadow_contents buffers. Otherwise,
1537 a failed assertion internal error will be raised.
1538
876fa593 1539 The range of shadowed area by each bp_location is:
f5336ca5
PA
1540 bl->address - bp_locations_placed_address_before_address_max
1541 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1542 The range we were requested to resolve shadows for is:
1543 memaddr ... memaddr + len
1544 Thus the safe cutoff boundaries for performance optimization are
35df4500 1545 memaddr + len <= (bl->address
f5336ca5 1546 - bp_locations_placed_address_before_address_max)
876fa593 1547 and:
f5336ca5 1548 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1549
8defab1a 1550void
f0ba3972
PA
1551breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1552 const gdb_byte *writebuf_org,
1553 ULONGEST memaddr, LONGEST len)
c906108c 1554{
4a64f543
MS
1555 /* Left boundary, right boundary and median element of our binary
1556 search. */
876fa593
JK
1557 unsigned bc_l, bc_r, bc;
1558
4a64f543
MS
1559 /* Find BC_L which is a leftmost element which may affect BUF
1560 content. It is safe to report lower value but a failure to
1561 report higher one. */
876fa593
JK
1562
1563 bc_l = 0;
f5336ca5 1564 bc_r = bp_locations_count;
876fa593
JK
1565 while (bc_l + 1 < bc_r)
1566 {
35df4500 1567 struct bp_location *bl;
876fa593
JK
1568
1569 bc = (bc_l + bc_r) / 2;
f5336ca5 1570 bl = bp_locations[bc];
876fa593 1571
4a64f543
MS
1572 /* Check first BL->ADDRESS will not overflow due to the added
1573 constant. Then advance the left boundary only if we are sure
1574 the BC element can in no way affect the BUF content (MEMADDR
1575 to MEMADDR + LEN range).
876fa593 1576
f5336ca5 1577 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1578 offset so that we cannot miss a breakpoint with its shadow
1579 range tail still reaching MEMADDR. */
c5aa993b 1580
f5336ca5 1581 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1582 >= bl->address)
f5336ca5 1583 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1584 <= memaddr))
876fa593
JK
1585 bc_l = bc;
1586 else
1587 bc_r = bc;
1588 }
1589
128070bb
PA
1590 /* Due to the binary search above, we need to make sure we pick the
1591 first location that's at BC_L's address. E.g., if there are
1592 multiple locations at the same address, BC_L may end up pointing
1593 at a duplicate location, and miss the "master"/"inserted"
1594 location. Say, given locations L1, L2 and L3 at addresses A and
1595 B:
1596
1597 L1@A, L2@A, L3@B, ...
1598
1599 BC_L could end up pointing at location L2, while the "master"
1600 location could be L1. Since the `loc->inserted' flag is only set
1601 on "master" locations, we'd forget to restore the shadow of L1
1602 and L2. */
1603 while (bc_l > 0
f5336ca5 1604 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1605 bc_l--;
1606
876fa593
JK
1607 /* Now do full processing of the found relevant range of elements. */
1608
f5336ca5 1609 for (bc = bc_l; bc < bp_locations_count; bc++)
c5aa993b 1610 {
f5336ca5 1611 struct bp_location *bl = bp_locations[bc];
876fa593 1612
35df4500
TJB
1613 /* bp_location array has BL->OWNER always non-NULL. */
1614 if (bl->owner->type == bp_none)
8a3fe4f8 1615 warning (_("reading through apparently deleted breakpoint #%d?"),
35df4500 1616 bl->owner->number);
ffce0d52 1617
e5dd4106 1618 /* Performance optimization: any further element can no longer affect BUF
876fa593
JK
1619 content. */
1620
f5336ca5
PA
1621 if (bl->address >= bp_locations_placed_address_before_address_max
1622 && memaddr + len <= (bl->address
1623 - bp_locations_placed_address_before_address_max))
876fa593
JK
1624 break;
1625
35df4500 1626 if (!bp_location_has_shadow (bl))
c5aa993b 1627 continue;
6c95b8df 1628
9d497a19
PA
1629 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1630 memaddr, len, &bl->target_info, bl->gdbarch);
1631 }
c906108c 1632}
9d497a19 1633
f2478a7e 1634/* See breakpoint.h. */
b775012e 1635
f2478a7e 1636bool
b775012e
LM
1637is_breakpoint (const struct breakpoint *bpt)
1638{
1639 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1640 || bpt->type == bp_hardware_breakpoint
1641 || bpt->type == bp_dprintf);
b775012e
LM
1642}
1643
60e1c644
PA
1644/* Return true if BPT is of any hardware watchpoint kind. */
1645
f2478a7e 1646static bool
d77f58be 1647is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1648{
1649 return (bpt->type == bp_hardware_watchpoint
1650 || bpt->type == bp_read_watchpoint
1651 || bpt->type == bp_access_watchpoint);
1652}
7270d8f2 1653
f2478a7e 1654/* See breakpoint.h. */
60e1c644 1655
f2478a7e 1656bool
d77f58be 1657is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1658{
1659 return (is_hardware_watchpoint (bpt)
1660 || bpt->type == bp_watchpoint);
1661}
1662
3a5c3e22
PA
1663/* Returns true if the current thread and its running state are safe
1664 to evaluate or update watchpoint B. Watchpoints on local
1665 expressions need to be evaluated in the context of the thread that
1666 was current when the watchpoint was created, and, that thread needs
1667 to be stopped to be able to select the correct frame context.
1668 Watchpoints on global expressions can be evaluated on any thread,
1669 and in any state. It is presently left to the target allowing
1670 memory accesses when threads are running. */
f6bc2008
PA
1671
1672static int
3a5c3e22 1673watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1674{
c1fc2657 1675 return (b->pspace == current_program_space
d7e15655
TT
1676 && (b->watchpoint_thread == null_ptid
1677 || (inferior_ptid == b->watchpoint_thread
00431a78 1678 && !inferior_thread ()->executing)));
f6bc2008
PA
1679}
1680
d0fb5eae
JK
1681/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1682 associated bp_watchpoint_scope breakpoint. */
1683
1684static void
3a5c3e22 1685watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1686{
c1fc2657 1687 if (w->related_breakpoint != w)
d0fb5eae 1688 {
c1fc2657
SM
1689 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1690 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1691 w->related_breakpoint->disposition = disp_del_at_next_stop;
1692 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1693 w->related_breakpoint = w;
d0fb5eae 1694 }
c1fc2657 1695 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1696}
1697
bb9d5f81
PP
1698/* Extract a bitfield value from value VAL using the bit parameters contained in
1699 watchpoint W. */
1700
1701static struct value *
1702extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1703{
1704 struct value *bit_val;
1705
1706 if (val == NULL)
1707 return NULL;
1708
1709 bit_val = allocate_value (value_type (val));
1710
1711 unpack_value_bitfield (bit_val,
1712 w->val_bitpos,
1713 w->val_bitsize,
1714 value_contents_for_printing (val),
1715 value_offset (val),
1716 val);
1717
1718 return bit_val;
1719}
1720
c6d81124
PA
1721/* Allocate a dummy location and add it to B, which must be a software
1722 watchpoint. This is required because even if a software watchpoint
1723 is not watching any memory, bpstat_stop_status requires a location
1724 to be able to report stops. */
1725
1726static void
1727software_watchpoint_add_no_memory_location (struct breakpoint *b,
1728 struct program_space *pspace)
1729{
1730 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1731
1732 b->loc = allocate_bp_location (b);
1733 b->loc->pspace = pspace;
1734 b->loc->address = -1;
1735 b->loc->length = -1;
1736}
1737
1738/* Returns true if B is a software watchpoint that is not watching any
1739 memory (e.g., "watch $pc"). */
1740
f2478a7e 1741static bool
c6d81124
PA
1742is_no_memory_software_watchpoint (struct breakpoint *b)
1743{
1744 return (b->type == bp_watchpoint
1745 && b->loc != NULL
1746 && b->loc->next == NULL
1747 && b->loc->address == -1
1748 && b->loc->length == -1);
1749}
1750
567e1b4e
JB
1751/* Assuming that B is a watchpoint:
1752 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1753 - Evaluate expression and store the result in B->val
567e1b4e
JB
1754 - Evaluate the condition if there is one, and store the result
1755 in b->loc->cond.
a5606eee
VP
1756 - Update the list of values that must be watched in B->loc.
1757
4a64f543
MS
1758 If the watchpoint disposition is disp_del_at_next_stop, then do
1759 nothing. If this is local watchpoint that is out of scope, delete
1760 it.
1761
1762 Even with `set breakpoint always-inserted on' the watchpoints are
1763 removed + inserted on each stop here. Normal breakpoints must
1764 never be removed because they might be missed by a running thread
1765 when debugging in non-stop mode. On the other hand, hardware
1766 watchpoints (is_hardware_watchpoint; processed here) are specific
1767 to each LWP since they are stored in each LWP's hardware debug
1768 registers. Therefore, such LWP must be stopped first in order to
1769 be able to modify its hardware watchpoints.
1770
1771 Hardware watchpoints must be reset exactly once after being
1772 presented to the user. It cannot be done sooner, because it would
1773 reset the data used to present the watchpoint hit to the user. And
1774 it must not be done later because it could display the same single
1775 watchpoint hit during multiple GDB stops. Note that the latter is
1776 relevant only to the hardware watchpoint types bp_read_watchpoint
1777 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1778 not user-visible - its hit is suppressed if the memory content has
1779 not changed.
1780
1781 The following constraints influence the location where we can reset
1782 hardware watchpoints:
1783
1784 * target_stopped_by_watchpoint and target_stopped_data_address are
1785 called several times when GDB stops.
1786
1787 [linux]
1788 * Multiple hardware watchpoints can be hit at the same time,
1789 causing GDB to stop. GDB only presents one hardware watchpoint
1790 hit at a time as the reason for stopping, and all the other hits
1791 are presented later, one after the other, each time the user
1792 requests the execution to be resumed. Execution is not resumed
1793 for the threads still having pending hit event stored in
1794 LWP_INFO->STATUS. While the watchpoint is already removed from
1795 the inferior on the first stop the thread hit event is kept being
1796 reported from its cached value by linux_nat_stopped_data_address
1797 until the real thread resume happens after the watchpoint gets
1798 presented and thus its LWP_INFO->STATUS gets reset.
1799
1800 Therefore the hardware watchpoint hit can get safely reset on the
1801 watchpoint removal from inferior. */
a79d3c27 1802
b40ce68a 1803static void
3a5c3e22 1804update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1805{
a5606eee 1806 int within_current_scope;
a5606eee 1807 struct frame_id saved_frame_id;
66076460 1808 int frame_saved;
a5606eee 1809
f6bc2008
PA
1810 /* If this is a local watchpoint, we only want to check if the
1811 watchpoint frame is in scope if the current thread is the thread
1812 that was used to create the watchpoint. */
1813 if (!watchpoint_in_thread_scope (b))
1814 return;
1815
c1fc2657 1816 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1817 return;
1818
66076460 1819 frame_saved = 0;
a5606eee
VP
1820
1821 /* Determine if the watchpoint is within scope. */
1822 if (b->exp_valid_block == NULL)
1823 within_current_scope = 1;
1824 else
1825 {
b5db5dfc
UW
1826 struct frame_info *fi = get_current_frame ();
1827 struct gdbarch *frame_arch = get_frame_arch (fi);
1828 CORE_ADDR frame_pc = get_frame_pc (fi);
1829
c9cf6e20
MG
1830 /* If we're at a point where the stack has been destroyed
1831 (e.g. in a function epilogue), unwinding may not work
1832 properly. Do not attempt to recreate locations at this
b5db5dfc 1833 point. See similar comments in watchpoint_check. */
c9cf6e20 1834 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1835 return;
66076460
DJ
1836
1837 /* Save the current frame's ID so we can restore it after
dda83cd7 1838 evaluating the watchpoint expression on its own frame. */
66076460 1839 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
dda83cd7
SM
1840 took a frame parameter, so that we didn't have to change the
1841 selected frame. */
66076460
DJ
1842 frame_saved = 1;
1843 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1844
a5606eee
VP
1845 fi = frame_find_by_id (b->watchpoint_frame);
1846 within_current_scope = (fi != NULL);
1847 if (within_current_scope)
1848 select_frame (fi);
1849 }
1850
b5db5dfc
UW
1851 /* We don't free locations. They are stored in the bp_location array
1852 and update_global_location_list will eventually delete them and
1853 remove breakpoints if needed. */
c1fc2657 1854 b->loc = NULL;
b5db5dfc 1855
a5606eee
VP
1856 if (within_current_scope && reparse)
1857 {
bbc13ae3 1858 const char *s;
d63d0675 1859
4d01a485 1860 b->exp.reset ();
d63d0675 1861 s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1bb9788d 1862 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1863 /* If the meaning of expression itself changed, the old value is
1864 no longer relevant. We don't want to report a watchpoint hit
1865 to the user when the old value and the new value may actually
1866 be completely different objects. */
fa4727a6 1867 b->val = NULL;
4c1d86d9 1868 b->val_valid = false;
60e1c644
PA
1869
1870 /* Note that unlike with breakpoints, the watchpoint's condition
1871 expression is stored in the breakpoint object, not in the
1872 locations (re)created below. */
c1fc2657 1873 if (b->cond_string != NULL)
60e1c644 1874 {
4d01a485 1875 b->cond_exp.reset ();
60e1c644 1876
c1fc2657 1877 s = b->cond_string;
1bb9788d 1878 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1879 }
a5606eee 1880 }
a5606eee
VP
1881
1882 /* If we failed to parse the expression, for example because
1883 it refers to a global variable in a not-yet-loaded shared library,
1884 don't try to insert watchpoint. We don't automatically delete
1885 such watchpoint, though, since failure to parse expression
1886 is different from out-of-scope watchpoint. */
55f6301a 1887 if (!target_has_execution ())
2d134ed3
PA
1888 {
1889 /* Without execution, memory can't change. No use to try and
1890 set watchpoint locations. The watchpoint will be reset when
1891 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1892 if (!can_use_hw_watchpoints)
1893 {
c1fc2657
SM
1894 if (b->ops->works_in_software_mode (b))
1895 b->type = bp_watchpoint;
e8369a73 1896 else
638aa5a1
AB
1897 error (_("Can't set read/access watchpoint when "
1898 "hardware watchpoints are disabled."));
e8369a73 1899 }
2d134ed3
PA
1900 }
1901 else if (within_current_scope && b->exp)
a5606eee 1902 {
0cf6dd15 1903 int pc = 0;
a6535de1 1904 std::vector<value_ref_ptr> val_chain;
8d49165d 1905 struct value *v, *result;
2d134ed3 1906 struct program_space *frame_pspace;
a5606eee 1907
2e362716 1908 fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, false);
a5606eee 1909
a5606eee
VP
1910 /* Avoid setting b->val if it's already set. The meaning of
1911 b->val is 'the last value' user saw, and we should update
1912 it only if we reported that last value to user. As it
9c06b0b4
TJB
1913 happens, the code that reports it updates b->val directly.
1914 We don't keep track of the memory value for masked
1915 watchpoints. */
c1fc2657 1916 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1917 {
bb9d5f81 1918 if (b->val_bitsize != 0)
850645cf
TT
1919 v = extract_bitfield_from_watchpoint_value (b, v);
1920 b->val = release_value (v);
4c1d86d9 1921 b->val_valid = true;
fa4727a6 1922 }
a5606eee 1923
2d134ed3
PA
1924 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1925
a5606eee 1926 /* Look at each value on the value chain. */
a6535de1
TT
1927 gdb_assert (!val_chain.empty ());
1928 for (const value_ref_ptr &iter : val_chain)
a5606eee 1929 {
a6535de1
TT
1930 v = iter.get ();
1931
a5606eee
VP
1932 /* If it's a memory location, and GDB actually needed
1933 its contents to evaluate the expression, then we
fa4727a6
DJ
1934 must watch it. If the first value returned is
1935 still lazy, that means an error occurred reading it;
1936 watch it anyway in case it becomes readable. */
a5606eee 1937 if (VALUE_LVAL (v) == lval_memory
a6535de1 1938 && (v == val_chain[0] || ! value_lazy (v)))
a5606eee
VP
1939 {
1940 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1941
a5606eee
VP
1942 /* We only watch structs and arrays if user asked
1943 for it explicitly, never if they just happen to
1944 appear in the middle of some value chain. */
fa4727a6 1945 if (v == result
78134374
SM
1946 || (vtype->code () != TYPE_CODE_STRUCT
1947 && vtype->code () != TYPE_CODE_ARRAY))
a5606eee
VP
1948 {
1949 CORE_ADDR addr;
f486487f 1950 enum target_hw_bp_type type;
a5606eee 1951 struct bp_location *loc, **tmp;
bb9d5f81
PP
1952 int bitpos = 0, bitsize = 0;
1953
1954 if (value_bitsize (v) != 0)
1955 {
1956 /* Extract the bit parameters out from the bitfield
1957 sub-expression. */
1958 bitpos = value_bitpos (v);
1959 bitsize = value_bitsize (v);
1960 }
1961 else if (v == result && b->val_bitsize != 0)
1962 {
1963 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1964 lvalue whose bit parameters are saved in the fields
1965 VAL_BITPOS and VAL_BITSIZE. */
1966 bitpos = b->val_bitpos;
1967 bitsize = b->val_bitsize;
1968 }
a5606eee 1969
42ae5230 1970 addr = value_address (v);
bb9d5f81
PP
1971 if (bitsize != 0)
1972 {
1973 /* Skip the bytes that don't contain the bitfield. */
1974 addr += bitpos / 8;
1975 }
1976
a5606eee 1977 type = hw_write;
c1fc2657 1978 if (b->type == bp_read_watchpoint)
a5606eee 1979 type = hw_read;
c1fc2657 1980 else if (b->type == bp_access_watchpoint)
a5606eee 1981 type = hw_access;
3a5c3e22 1982
c1fc2657
SM
1983 loc = allocate_bp_location (b);
1984 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1985 ;
1986 *tmp = loc;
a6d9a66e 1987 loc->gdbarch = get_type_arch (value_type (v));
6c95b8df
PA
1988
1989 loc->pspace = frame_pspace;
f17d9474 1990 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1991
1992 if (bitsize != 0)
1993 {
1994 /* Just cover the bytes that make up the bitfield. */
1995 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1996 }
1997 else
1998 loc->length = TYPE_LENGTH (value_type (v));
1999
a5606eee
VP
2000 loc->watchpoint_type = type;
2001 }
2002 }
9fa40276
TJB
2003 }
2004
2005 /* Change the type of breakpoint between hardware assisted or
2006 an ordinary watchpoint depending on the hardware support
2007 and free hardware slots. REPARSE is set when the inferior
2008 is started. */
a9634178 2009 if (reparse)
9fa40276 2010 {
e09342b5 2011 int reg_cnt;
9fa40276
TJB
2012 enum bp_loc_type loc_type;
2013 struct bp_location *bl;
a5606eee 2014
a9634178 2015 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
2016
2017 if (reg_cnt)
9fa40276
TJB
2018 {
2019 int i, target_resources_ok, other_type_used;
a1398e0c 2020 enum bptype type;
9fa40276 2021
a9634178
TJB
2022 /* Use an exact watchpoint when there's only one memory region to be
2023 watched, and only one debug register is needed to watch it. */
2024 b->exact = target_exact_watchpoints && reg_cnt == 1;
2025
9fa40276 2026 /* We need to determine how many resources are already
e09342b5
TJB
2027 used for all other hardware watchpoints plus this one
2028 to see if we still have enough resources to also fit
a1398e0c
PA
2029 this watchpoint in as well. */
2030
2031 /* If this is a software watchpoint, we try to turn it
2032 to a hardware one -- count resources as if B was of
2033 hardware watchpoint type. */
c1fc2657 2034 type = b->type;
a1398e0c
PA
2035 if (type == bp_watchpoint)
2036 type = bp_hardware_watchpoint;
2037
2038 /* This watchpoint may or may not have been placed on
2039 the list yet at this point (it won't be in the list
2040 if we're trying to create it for the first time,
2041 through watch_command), so always account for it
2042 manually. */
2043
2044 /* Count resources used by all watchpoints except B. */
c1fc2657 2045 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
2046
2047 /* Add in the resources needed for B. */
c1fc2657 2048 i += hw_watchpoint_use_count (b);
a1398e0c
PA
2049
2050 target_resources_ok
2051 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 2052 if (target_resources_ok <= 0)
a9634178 2053 {
c1fc2657 2054 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
2055
2056 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
2057 error (_("Target does not support this type of "
2058 "hardware watchpoint."));
9c06b0b4
TJB
2059 else if (target_resources_ok < 0 && !sw_mode)
2060 error (_("There are not enough available hardware "
2061 "resources for this watchpoint."));
a1398e0c
PA
2062
2063 /* Downgrade to software watchpoint. */
c1fc2657 2064 b->type = bp_watchpoint;
a1398e0c
PA
2065 }
2066 else
2067 {
2068 /* If this was a software watchpoint, we've just
2069 found we have enough resources to turn it to a
2070 hardware watchpoint. Otherwise, this is a
2071 nop. */
c1fc2657 2072 b->type = type;
a9634178 2073 }
9fa40276 2074 }
c1fc2657 2075 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
2076 {
2077 if (!can_use_hw_watchpoints)
2078 error (_("Can't set read/access watchpoint when "
2079 "hardware watchpoints are disabled."));
2080 else
2081 error (_("Expression cannot be implemented with "
2082 "read/access watchpoint."));
2083 }
9fa40276 2084 else
c1fc2657 2085 b->type = bp_watchpoint;
9fa40276 2086
c1fc2657 2087 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 2088 : bp_loc_hardware_watchpoint);
c1fc2657 2089 for (bl = b->loc; bl; bl = bl->next)
9fa40276
TJB
2090 bl->loc_type = loc_type;
2091 }
2092
c7437ca6
PA
2093 /* If a software watchpoint is not watching any memory, then the
2094 above left it without any location set up. But,
2095 bpstat_stop_status requires a location to be able to report
2096 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
2097 if (b->type == bp_watchpoint && b->loc == NULL)
2098 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
2099 }
2100 else if (!within_current_scope)
7270d8f2 2101 {
ac74f770
MS
2102 printf_filtered (_("\
2103Watchpoint %d deleted because the program has left the block\n\
2104in which its expression is valid.\n"),
c1fc2657 2105 b->number);
d0fb5eae 2106 watchpoint_del_at_next_stop (b);
7270d8f2 2107 }
a5606eee
VP
2108
2109 /* Restore the selected frame. */
66076460
DJ
2110 if (frame_saved)
2111 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
2112}
2113
a5606eee 2114
74960c60 2115/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
2116 inserted in the inferior. We don't differentiate the type of BL's owner
2117 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2118 breakpoint_ops is not defined, because in insert_bp_location,
2119 tracepoint's insert_location will not be called. */
74960c60 2120static int
35df4500 2121should_be_inserted (struct bp_location *bl)
74960c60 2122{
35df4500 2123 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2124 return 0;
2125
35df4500 2126 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2127 return 0;
2128
b5fa468f
TBA
2129 if (!bl->enabled || bl->disabled_by_cond
2130 || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2131 return 0;
2132
f8eba3c6
TT
2133 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2134 return 0;
2135
56710373
PA
2136 /* This is set for example, when we're attached to the parent of a
2137 vfork, and have detached from the child. The child is running
2138 free, and we expect it to do an exec or exit, at which point the
2139 OS makes the parent schedulable again (and the target reports
2140 that the vfork is done). Until the child is done with the shared
2141 memory region, do not insert breakpoints in the parent, otherwise
2142 the child could still trip on the parent's breakpoints. Since
2143 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2144 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2145 return 0;
2146
31e77af2 2147 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2148 location, except if the breakpoint is a single-step breakpoint,
2149 and the breakpoint's thread is the thread which is stepping past
2150 a breakpoint. */
31e77af2
PA
2151 if ((bl->loc_type == bp_loc_software_breakpoint
2152 || bl->loc_type == bp_loc_hardware_breakpoint)
2153 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2154 bl->address)
2155 /* The single-step breakpoint may be inserted at the location
2156 we're trying to step if the instruction branches to itself.
2157 However, the instruction won't be executed at all and it may
2158 break the semantics of the instruction, for example, the
2159 instruction is a conditional branch or updates some flags.
2160 We can't fix it unless GDB is able to emulate the instruction
2161 or switch to displaced stepping. */
2162 && !(bl->owner->type == bp_single_step
2163 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1 2164 {
1eb8556f
SM
2165 infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
2166 paddress (bl->gdbarch, bl->address));
e558d7c1
PA
2167 return 0;
2168 }
31e77af2 2169
963f9c80
PA
2170 /* Don't insert watchpoints if we're trying to step past the
2171 instruction that triggered one. */
2172 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2173 && stepping_past_nonsteppable_watchpoint ())
2174 {
1eb8556f
SM
2175 infrun_debug_printf ("stepping past non-steppable watchpoint. "
2176 "skipping watchpoint at %s:%d\n",
2177 paddress (bl->gdbarch, bl->address), bl->length);
963f9c80
PA
2178 return 0;
2179 }
2180
74960c60
VP
2181 return 1;
2182}
2183
934709f0
PW
2184/* Same as should_be_inserted but does the check assuming
2185 that the location is not duplicated. */
2186
2187static int
2188unduplicated_should_be_inserted (struct bp_location *bl)
2189{
2190 int result;
2191 const int save_duplicate = bl->duplicate;
2192
2193 bl->duplicate = 0;
2194 result = should_be_inserted (bl);
2195 bl->duplicate = save_duplicate;
2196 return result;
2197}
2198
b775012e
LM
2199/* Parses a conditional described by an expression COND into an
2200 agent expression bytecode suitable for evaluation
2201 by the bytecode interpreter. Return NULL if there was
2202 any error during parsing. */
2203
833177a4 2204static agent_expr_up
b775012e
LM
2205parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2206{
833177a4 2207 if (cond == NULL)
b775012e
LM
2208 return NULL;
2209
833177a4
PA
2210 agent_expr_up aexpr;
2211
b775012e
LM
2212 /* We don't want to stop processing, so catch any errors
2213 that may show up. */
a70b8144 2214 try
b775012e 2215 {
036e657b 2216 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2217 }
2218
230d2906 2219 catch (const gdb_exception_error &ex)
b775012e
LM
2220 {
2221 /* If we got here, it means the condition could not be parsed to a valid
2222 bytecode expression and thus can't be evaluated on the target's side.
2223 It's no use iterating through the conditions. */
b775012e
LM
2224 }
2225
2226 /* We have a valid agent expression. */
2227 return aexpr;
2228}
2229
2230/* Based on location BL, create a list of breakpoint conditions to be
2231 passed on to the target. If we have duplicated locations with different
2232 conditions, we will add such conditions to the list. The idea is that the
2233 target will evaluate the list of conditions and will only notify GDB when
2234 one of them is true. */
2235
2236static void
2237build_target_condition_list (struct bp_location *bl)
2238{
2239 struct bp_location **locp = NULL, **loc2p;
2240 int null_condition_or_parse_error = 0;
2241 int modified = bl->needs_update;
2242 struct bp_location *loc;
2243
8b4f3082 2244 /* Release conditions left over from a previous insert. */
3cde5c42 2245 bl->target_info.conditions.clear ();
8b4f3082 2246
b775012e
LM
2247 /* This is only meaningful if the target is
2248 evaluating conditions and if the user has
2249 opted for condition evaluation on the target's
2250 side. */
2251 if (gdb_evaluates_breakpoint_condition_p ()
2252 || !target_supports_evaluation_of_breakpoint_conditions ())
2253 return;
2254
2255 /* Do a first pass to check for locations with no assigned
7f32a4d5
PA
2256 conditions or conditions that fail to parse to a valid agent
2257 expression bytecode. If any of these happen, then it's no use to
2258 send conditions to the target since this location will always
2259 trigger and generate a response back to GDB. Note we consider
2260 all locations at the same address irrespective of type, i.e.,
2261 even if the locations aren't considered duplicates (e.g.,
2262 software breakpoint and hardware breakpoint at the same
2263 address). */
b775012e
LM
2264 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2265 {
2266 loc = (*loc2p);
2267 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2268 {
2269 if (modified)
2270 {
b775012e
LM
2271 /* Re-parse the conditions since something changed. In that
2272 case we already freed the condition bytecodes (see
2273 force_breakpoint_reinsertion). We just
2274 need to parse the condition to bytecodes again. */
833177a4
PA
2275 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2276 loc->cond.get ());
b775012e
LM
2277 }
2278
2279 /* If we have a NULL bytecode expression, it means something
2280 went wrong or we have a null condition expression. */
2281 if (!loc->cond_bytecode)
2282 {
2283 null_condition_or_parse_error = 1;
2284 break;
2285 }
2286 }
2287 }
2288
2289 /* If any of these happened, it means we will have to evaluate the conditions
2290 for the location's address on gdb's side. It is no use keeping bytecodes
2291 for all the other duplicate locations, thus we free all of them here.
2292
2293 This is so we have a finer control over which locations' conditions are
2294 being evaluated by GDB or the remote stub. */
2295 if (null_condition_or_parse_error)
2296 {
2297 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2298 {
2299 loc = (*loc2p);
2300 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2301 {
2302 /* Only go as far as the first NULL bytecode is
2303 located. */
2304 if (!loc->cond_bytecode)
2305 return;
2306
833177a4 2307 loc->cond_bytecode.reset ();
b775012e
LM
2308 }
2309 }
2310 }
2311
7f32a4d5
PA
2312 /* No NULL conditions or failed bytecode generation. Build a
2313 condition list for this location's address. If we have software
2314 and hardware locations at the same address, they aren't
2315 considered duplicates, but we still marge all the conditions
2316 anyway, as it's simpler, and doesn't really make a practical
2317 difference. */
b775012e
LM
2318 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2319 {
2320 loc = (*loc2p);
2321 if (loc->cond
2322 && is_breakpoint (loc->owner)
2323 && loc->pspace->num == bl->pspace->num
2324 && loc->owner->enable_state == bp_enabled
b5fa468f
TBA
2325 && loc->enabled
2326 && !loc->disabled_by_cond)
3cde5c42
PA
2327 {
2328 /* Add the condition to the vector. This will be used later
2329 to send the conditions to the target. */
2330 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2331 }
b775012e
LM
2332 }
2333
2334 return;
2335}
2336
d3ce09f5
SS
2337/* Parses a command described by string CMD into an agent expression
2338 bytecode suitable for evaluation by the bytecode interpreter.
2339 Return NULL if there was any error during parsing. */
2340
833177a4 2341static agent_expr_up
d3ce09f5
SS
2342parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2343{
bbc13ae3
KS
2344 const char *cmdrest;
2345 const char *format_start, *format_end;
d3ce09f5
SS
2346 struct gdbarch *gdbarch = get_current_arch ();
2347
833177a4 2348 if (cmd == NULL)
d3ce09f5
SS
2349 return NULL;
2350
2351 cmdrest = cmd;
2352
2353 if (*cmdrest == ',')
2354 ++cmdrest;
f1735a53 2355 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2356
2357 if (*cmdrest++ != '"')
2358 error (_("No format string following the location"));
2359
2360 format_start = cmdrest;
2361
8e481c3b 2362 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2363
2364 format_end = cmdrest;
2365
2366 if (*cmdrest++ != '"')
2367 error (_("Bad format string, non-terminated '\"'."));
2368
f1735a53 2369 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2370
2371 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2372 error (_("Invalid argument syntax"));
2373
2374 if (*cmdrest == ',')
2375 cmdrest++;
f1735a53 2376 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2377
2378 /* For each argument, make an expression. */
2379
8e481c3b 2380 std::vector<struct expression *> argvec;
d3ce09f5
SS
2381 while (*cmdrest != '\0')
2382 {
bbc13ae3 2383 const char *cmd1;
d3ce09f5
SS
2384
2385 cmd1 = cmdrest;
4d01a485 2386 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2387 argvec.push_back (expr.release ());
d3ce09f5
SS
2388 cmdrest = cmd1;
2389 if (*cmdrest == ',')
2390 ++cmdrest;
2391 }
2392
833177a4
PA
2393 agent_expr_up aexpr;
2394
d3ce09f5
SS
2395 /* We don't want to stop processing, so catch any errors
2396 that may show up. */
a70b8144 2397 try
d3ce09f5 2398 {
036e657b
JB
2399 aexpr = gen_printf (scope, gdbarch, 0, 0,
2400 format_start, format_end - format_start,
8e481c3b 2401 argvec.size (), argvec.data ());
d3ce09f5 2402 }
230d2906 2403 catch (const gdb_exception_error &ex)
d3ce09f5
SS
2404 {
2405 /* If we got here, it means the command could not be parsed to a valid
2406 bytecode expression and thus can't be evaluated on the target's side.
2407 It's no use iterating through the other commands. */
d3ce09f5 2408 }
492d29ea 2409
d3ce09f5
SS
2410 /* We have a valid agent expression, return it. */
2411 return aexpr;
2412}
2413
2414/* Based on location BL, create a list of breakpoint commands to be
2415 passed on to the target. If we have duplicated locations with
2416 different commands, we will add any such to the list. */
2417
2418static void
2419build_target_command_list (struct bp_location *bl)
2420{
2421 struct bp_location **locp = NULL, **loc2p;
2422 int null_command_or_parse_error = 0;
2423 int modified = bl->needs_update;
2424 struct bp_location *loc;
2425
3cde5c42
PA
2426 /* Clear commands left over from a previous insert. */
2427 bl->target_info.tcommands.clear ();
8b4f3082 2428
41fac0cf 2429 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2430 return;
2431
41fac0cf
PA
2432 /* For now, limit to agent-style dprintf breakpoints. */
2433 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2434 return;
2435
7f32a4d5
PA
2436 /* For now, if we have any location at the same address that isn't a
2437 dprintf, don't install the target-side commands, as that would
2438 make the breakpoint not be reported to the core, and we'd lose
41fac0cf
PA
2439 control. */
2440 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2441 {
2442 loc = (*loc2p);
2443 if (is_breakpoint (loc->owner)
2444 && loc->pspace->num == bl->pspace->num
2445 && loc->owner->type != bp_dprintf)
2446 return;
2447 }
2448
d3ce09f5
SS
2449 /* Do a first pass to check for locations with no assigned
2450 conditions or conditions that fail to parse to a valid agent expression
2451 bytecode. If any of these happen, then it's no use to send conditions
2452 to the target since this location will always trigger and generate a
2453 response back to GDB. */
2454 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2455 {
2456 loc = (*loc2p);
2457 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2458 {
2459 if (modified)
2460 {
d3ce09f5
SS
2461 /* Re-parse the commands since something changed. In that
2462 case we already freed the command bytecodes (see
2463 force_breakpoint_reinsertion). We just
2464 need to parse the command to bytecodes again. */
833177a4
PA
2465 loc->cmd_bytecode
2466 = parse_cmd_to_aexpr (bl->address,
2467 loc->owner->extra_string);
d3ce09f5
SS
2468 }
2469
2470 /* If we have a NULL bytecode expression, it means something
2471 went wrong or we have a null command expression. */
2472 if (!loc->cmd_bytecode)
2473 {
2474 null_command_or_parse_error = 1;
2475 break;
2476 }
2477 }
2478 }
2479
2480 /* If anything failed, then we're not doing target-side commands,
2481 and so clean up. */
2482 if (null_command_or_parse_error)
2483 {
2484 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2485 {
2486 loc = (*loc2p);
2487 if (is_breakpoint (loc->owner)
2488 && loc->pspace->num == bl->pspace->num)
2489 {
2490 /* Only go as far as the first NULL bytecode is
2491 located. */
40fb6c5e 2492 if (loc->cmd_bytecode == NULL)
d3ce09f5
SS
2493 return;
2494
833177a4 2495 loc->cmd_bytecode.reset ();
d3ce09f5
SS
2496 }
2497 }
2498 }
2499
7f32a4d5
PA
2500 /* No NULL commands or failed bytecode generation. Build a command
2501 list for all duplicate locations at this location's address.
2502 Note that here we must care for whether the breakpoint location
2503 types are considered duplicates, otherwise, say, if we have a
2504 software and hardware location at the same address, the target
2505 could end up running the commands twice. For the moment, we only
2506 support targets-side commands with dprintf, but it doesn't hurt
2507 to be pedantically correct in case that changes. */
d3ce09f5
SS
2508 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2509 {
2510 loc = (*loc2p);
7f32a4d5
PA
2511 if (breakpoint_locations_match (bl, loc)
2512 && loc->owner->extra_string
d3ce09f5
SS
2513 && is_breakpoint (loc->owner)
2514 && loc->pspace->num == bl->pspace->num
2515 && loc->owner->enable_state == bp_enabled
b5fa468f
TBA
2516 && loc->enabled
2517 && !loc->disabled_by_cond)
3cde5c42
PA
2518 {
2519 /* Add the command to the vector. This will be used later
2520 to send the commands to the target. */
2521 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2522 }
d3ce09f5
SS
2523 }
2524
2525 bl->target_info.persist = 0;
2526 /* Maybe flag this location as persistent. */
2527 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2528 bl->target_info.persist = 1;
2529}
2530
833b7ab5
YQ
2531/* Return the kind of breakpoint on address *ADDR. Get the kind
2532 of breakpoint according to ADDR except single-step breakpoint.
2533 Get the kind of single-step breakpoint according to the current
2534 registers state. */
cd6c3b4f
YQ
2535
2536static int
2537breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2538{
833b7ab5
YQ
2539 if (bl->owner->type == bp_single_step)
2540 {
2541 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2542 struct regcache *regcache;
2543
00431a78 2544 regcache = get_thread_regcache (thr);
833b7ab5
YQ
2545
2546 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2547 regcache, addr);
2548 }
2549 else
2550 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2551}
2552
35df4500
TJB
2553/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2554 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2555 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2556 Returns 0 for success, 1 if the bp_location type is not supported or
2557 -1 for failure.
879bfdc2 2558
4a64f543
MS
2559 NOTE drow/2003-09-09: This routine could be broken down to an
2560 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2561static int
35df4500 2562insert_bp_location (struct bp_location *bl,
26bb91f3 2563 struct ui_file *tmp_error_stream,
3fbb6ffa 2564 int *disabled_breaks,
dd61ec5c
MW
2565 int *hw_breakpoint_error,
2566 int *hw_bp_error_explained_already)
879bfdc2 2567{
cc06b668 2568 gdb_exception bp_excpt;
879bfdc2 2569
b775012e 2570 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2571 return 0;
2572
35c63cd8
JB
2573 /* Note we don't initialize bl->target_info, as that wipes out
2574 the breakpoint location's shadow_contents if the breakpoint
2575 is still inserted at that location. This in turn breaks
2576 target_read_memory which depends on these buffers when
2577 a memory read is requested at the breakpoint location:
2578 Once the target_info has been wiped, we fail to see that
2579 we have a breakpoint inserted at that address and thus
2580 read the breakpoint instead of returning the data saved in
2581 the breakpoint location's shadow contents. */
0d5ed153 2582 bl->target_info.reqstd_address = bl->address;
35df4500 2583 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2584 bl->target_info.length = bl->length;
8181d85f 2585
b775012e
LM
2586 /* When working with target-side conditions, we must pass all the conditions
2587 for the same breakpoint address down to the target since GDB will not
2588 insert those locations. With a list of breakpoint conditions, the target
2589 can decide when to stop and notify GDB. */
2590
2591 if (is_breakpoint (bl->owner))
2592 {
2593 build_target_condition_list (bl);
d3ce09f5
SS
2594 build_target_command_list (bl);
2595 /* Reset the modification marker. */
b775012e
LM
2596 bl->needs_update = 0;
2597 }
2598
7f32a4d5
PA
2599 /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
2600 set at a read-only address, then a breakpoint location will have
2601 been changed to hardware breakpoint before we get here. If it is
2602 "off" however, error out before actually trying to insert the
2603 breakpoint, with a nicer error message. */
35df4500 2604 if (bl->loc_type == bp_loc_software_breakpoint
7f32a4d5 2605 && !automatic_hardware_breakpoints)
879bfdc2 2606 {
7f32a4d5 2607 mem_region *mr = lookup_mem_region (bl->address);
cc59ec59 2608
7f32a4d5
PA
2609 if (mr != nullptr && mr->attrib.mode != MEM_RW)
2610 {
2611 fprintf_unfiltered (tmp_error_stream,
2612 _("Cannot insert breakpoint %d.\n"
2613 "Cannot set software breakpoint "
2614 "at read-only address %s\n"),
2615 bl->owner->number,
2616 paddress (bl->gdbarch, bl->address));
2617 return 1;
765dc015 2618 }
7f32a4d5
PA
2619 }
2620
2621 if (bl->loc_type == bp_loc_software_breakpoint
2622 || bl->loc_type == bp_loc_hardware_breakpoint)
2623 {
879bfdc2
DJ
2624 /* First check to see if we have to handle an overlay. */
2625 if (overlay_debugging == ovly_off
35df4500
TJB
2626 || bl->section == NULL
2627 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2628 {
2629 /* No overlay handling: just set the breakpoint. */
a70b8144 2630 try
dd61ec5c 2631 {
0000e5cc
PA
2632 int val;
2633
dd61ec5c 2634 val = bl->owner->ops->insert_location (bl);
0000e5cc 2635 if (val)
688fca4f 2636 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2637 }
94aeb44b 2638 catch (gdb_exception &e)
dd61ec5c 2639 {
94aeb44b 2640 bp_excpt = std::move (e);
dd61ec5c 2641 }
879bfdc2
DJ
2642 }
2643 else
2644 {
4a64f543 2645 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2646 Shall we set a breakpoint at the LMA? */
2647 if (!overlay_events_enabled)
2648 {
2649 /* Yes -- overlay event support is not active,
2650 so we must try to set a breakpoint at the LMA.
2651 This will not work for a hardware breakpoint. */
35df4500 2652 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2653 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2654 bl->owner->number);
879bfdc2
DJ
2655 else
2656 {
35df4500
TJB
2657 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2658 bl->section);
879bfdc2 2659 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2660 bl->overlay_target_info = bl->target_info;
0d5ed153 2661 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2662
2663 /* No overlay handling: just set the breakpoint. */
a70b8144 2664 try
0000e5cc
PA
2665 {
2666 int val;
2667
579c6ad9 2668 bl->overlay_target_info.kind
cd6c3b4f
YQ
2669 = breakpoint_kind (bl, &addr);
2670 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2671 val = target_insert_breakpoint (bl->gdbarch,
2672 &bl->overlay_target_info);
2673 if (val)
688fca4f
PA
2674 bp_excpt
2675 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2676 }
94aeb44b 2677 catch (gdb_exception &e)
0000e5cc 2678 {
94aeb44b 2679 bp_excpt = std::move (e);
0000e5cc
PA
2680 }
2681
688fca4f 2682 if (bp_excpt.reason != 0)
99361f52 2683 fprintf_unfiltered (tmp_error_stream,
3e43a32a
MS
2684 "Overlay breakpoint %d "
2685 "failed: in ROM?\n",
35df4500 2686 bl->owner->number);
879bfdc2
DJ
2687 }
2688 }
2689 /* Shall we set a breakpoint at the VMA? */
35df4500 2690 if (section_is_mapped (bl->section))
879bfdc2
DJ
2691 {
2692 /* Yes. This overlay section is mapped into memory. */
a70b8144 2693 try
dda83cd7 2694 {
0000e5cc
PA
2695 int val;
2696
dda83cd7 2697 val = bl->owner->ops->insert_location (bl);
0000e5cc 2698 if (val)
688fca4f 2699 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dda83cd7 2700 }
94aeb44b 2701 catch (gdb_exception &e)
dda83cd7 2702 {
94aeb44b 2703 bp_excpt = std::move (e);
dda83cd7 2704 }
879bfdc2
DJ
2705 }
2706 else
2707 {
2708 /* No. This breakpoint will not be inserted.
2709 No error, but do not mark the bp as 'inserted'. */
2710 return 0;
2711 }
2712 }
2713
688fca4f 2714 if (bp_excpt.reason != 0)
879bfdc2
DJ
2715 {
2716 /* Can't set the breakpoint. */
0000e5cc
PA
2717
2718 /* In some cases, we might not be able to insert a
2719 breakpoint in a shared library that has already been
2720 removed, but we have not yet processed the shlib unload
2721 event. Unfortunately, some targets that implement
076855f9
PA
2722 breakpoint insertion themselves can't tell why the
2723 breakpoint insertion failed (e.g., the remote target
2724 doesn't define error codes), so we must treat generic
2725 errors as memory errors. */
688fca4f
PA
2726 if (bp_excpt.reason == RETURN_ERROR
2727 && (bp_excpt.error == GENERIC_ERROR
2728 || bp_excpt.error == MEMORY_ERROR)
076855f9 2729 && bl->loc_type == bp_loc_software_breakpoint
08351840 2730 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2731 || shared_objfile_contains_address_p (bl->pspace,
2732 bl->address)))
879bfdc2 2733 {
4a64f543 2734 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2735 bl->shlib_disabled = 1;
76727919 2736 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2737 if (!*disabled_breaks)
2738 {
2739 fprintf_unfiltered (tmp_error_stream,
2740 "Cannot insert breakpoint %d.\n",
2741 bl->owner->number);
2742 fprintf_unfiltered (tmp_error_stream,
2743 "Temporarily disabling shared "
2744 "library breakpoints:\n");
2745 }
2746 *disabled_breaks = 1;
879bfdc2 2747 fprintf_unfiltered (tmp_error_stream,
35df4500 2748 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2749 return 0;
879bfdc2
DJ
2750 }
2751 else
879bfdc2 2752 {
35df4500 2753 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2754 {
0000e5cc 2755 *hw_breakpoint_error = 1;
688fca4f 2756 *hw_bp_error_explained_already = bp_excpt.message != NULL;
dda83cd7
SM
2757 fprintf_unfiltered (tmp_error_stream,
2758 "Cannot insert hardware breakpoint %d%s",
2759 bl->owner->number,
688fca4f 2760 bp_excpt.message ? ":" : ".\n");
dda83cd7
SM
2761 if (bp_excpt.message != NULL)
2762 fprintf_unfiltered (tmp_error_stream, "%s.\n",
3d6e9d23 2763 bp_excpt.what ());
879bfdc2
DJ
2764 }
2765 else
2766 {
688fca4f 2767 if (bp_excpt.message == NULL)
0000e5cc 2768 {
1ccbe998 2769 std::string message
0000e5cc
PA
2770 = memory_error_message (TARGET_XFER_E_IO,
2771 bl->gdbarch, bl->address);
0000e5cc
PA
2772
2773 fprintf_unfiltered (tmp_error_stream,
2774 "Cannot insert breakpoint %d.\n"
2775 "%s\n",
1ccbe998 2776 bl->owner->number, message.c_str ());
0000e5cc
PA
2777 }
2778 else
2779 {
2780 fprintf_unfiltered (tmp_error_stream,
2781 "Cannot insert breakpoint %d: %s\n",
2782 bl->owner->number,
3d6e9d23 2783 bp_excpt.what ());
0000e5cc 2784 }
879bfdc2 2785 }
0000e5cc 2786 return 1;
879bfdc2
DJ
2787
2788 }
2789 }
2790 else
35df4500 2791 bl->inserted = 1;
879bfdc2 2792
0000e5cc 2793 return 0;
879bfdc2
DJ
2794 }
2795
35df4500 2796 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2797 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2798 watchpoints. It's not clear that it's necessary... */
35df4500 2799 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2800 {
0000e5cc
PA
2801 int val;
2802
77b06cd7
TJB
2803 gdb_assert (bl->owner->ops != NULL
2804 && bl->owner->ops->insert_location != NULL);
2805
2806 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2807
2808 /* If trying to set a read-watchpoint, and it turns out it's not
2809 supported, try emulating one with an access watchpoint. */
35df4500 2810 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8
PA
2811 {
2812 struct bp_location *loc, **loc_temp;
2813
2814 /* But don't try to insert it, if there's already another
2815 hw_access location that would be considered a duplicate
2816 of this one. */
2817 ALL_BP_LOCATIONS (loc, loc_temp)
35df4500 2818 if (loc != bl
85d721b8 2819 && loc->watchpoint_type == hw_access
35df4500 2820 && watchpoint_locations_match (bl, loc))
85d721b8 2821 {
35df4500
TJB
2822 bl->duplicate = 1;
2823 bl->inserted = 1;
2824 bl->target_info = loc->target_info;
2825 bl->watchpoint_type = hw_access;
85d721b8
PA
2826 val = 0;
2827 break;
2828 }
2829
2830 if (val == 1)
2831 {
77b06cd7
TJB
2832 bl->watchpoint_type = hw_access;
2833 val = bl->owner->ops->insert_location (bl);
2834
2835 if (val)
2836 /* Back to the original value. */
2837 bl->watchpoint_type = hw_read;
85d721b8
PA
2838 }
2839 }
2840
35df4500 2841 bl->inserted = (val == 0);
879bfdc2
DJ
2842 }
2843
35df4500 2844 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2845 {
0000e5cc
PA
2846 int val;
2847
77b06cd7
TJB
2848 gdb_assert (bl->owner->ops != NULL
2849 && bl->owner->ops->insert_location != NULL);
2850
2851 val = bl->owner->ops->insert_location (bl);
2852 if (val)
2853 {
2854 bl->owner->enable_state = bp_disabled;
2855
2856 if (val == 1)
2857 warning (_("\
2858Error inserting catchpoint %d: Your system does not support this type\n\
2859of catchpoint."), bl->owner->number);
2860 else
2861 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2862 }
2863
2864 bl->inserted = (val == 0);
1640b821
DJ
2865
2866 /* We've already printed an error message if there was a problem
2867 inserting this catchpoint, and we've disabled the catchpoint,
2868 so just return success. */
2869 return 0;
879bfdc2
DJ
2870 }
2871
2872 return 0;
2873}
2874
6c95b8df
PA
2875/* This function is called when program space PSPACE is about to be
2876 deleted. It takes care of updating breakpoints to not reference
2877 PSPACE anymore. */
2878
2879void
2880breakpoint_program_space_exit (struct program_space *pspace)
2881{
2882 struct breakpoint *b, *b_temp;
876fa593 2883 struct bp_location *loc, **loc_temp;
6c95b8df
PA
2884
2885 /* Remove any breakpoint that was set through this program space. */
2886 ALL_BREAKPOINTS_SAFE (b, b_temp)
2887 {
2888 if (b->pspace == pspace)
2889 delete_breakpoint (b);
2890 }
2891
2892 /* Breakpoints set through other program spaces could have locations
2893 bound to PSPACE as well. Remove those. */
876fa593 2894 ALL_BP_LOCATIONS (loc, loc_temp)
6c95b8df
PA
2895 {
2896 struct bp_location *tmp;
2897
2898 if (loc->pspace == pspace)
2899 {
2bdf28a0 2900 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2901 if (loc->owner->loc == loc)
2902 loc->owner->loc = loc->next;
2903 else
2904 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2905 if (tmp->next == loc)
2906 {
2907 tmp->next = loc->next;
2908 break;
2909 }
2910 }
2911 }
2912
2913 /* Now update the global location list to permanently delete the
2914 removed locations above. */
44702360 2915 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2916}
2917
74960c60
VP
2918/* Make sure all breakpoints are inserted in inferior.
2919 Throws exception on any error.
2920 A breakpoint that is already inserted won't be inserted
2921 again, so calling this function twice is safe. */
2922void
2923insert_breakpoints (void)
2924{
2925 struct breakpoint *bpt;
2926
2927 ALL_BREAKPOINTS (bpt)
2928 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2929 {
2930 struct watchpoint *w = (struct watchpoint *) bpt;
2931
2932 update_watchpoint (w, 0 /* don't reparse. */);
2933 }
74960c60 2934
04086b45
PA
2935 /* Updating watchpoints creates new locations, so update the global
2936 location list. Explicitly tell ugll to insert locations and
7f32a4d5
PA
2937 ignore breakpoints_always_inserted_mode. Also,
2938 update_global_location_list tries to "upgrade" software
2939 breakpoints to hardware breakpoints to handle "set breakpoint
2940 auto-hw", so we need to call it even if we don't have new
2941 locations. */
04086b45 2942 update_global_location_list (UGLL_INSERT);
74960c60
VP
2943}
2944
20388dd6
YQ
2945/* Invoke CALLBACK for each of bp_location. */
2946
2947void
2948iterate_over_bp_locations (walk_bp_location_callback callback)
2949{
2950 struct bp_location *loc, **loc_tmp;
2951
2952 ALL_BP_LOCATIONS (loc, loc_tmp)
2953 {
2954 callback (loc, NULL);
2955 }
2956}
2957
b775012e
LM
2958/* This is used when we need to synch breakpoint conditions between GDB and the
2959 target. It is the case with deleting and disabling of breakpoints when using
2960 always-inserted mode. */
2961
2962static void
2963update_inserted_breakpoint_locations (void)
2964{
2965 struct bp_location *bl, **blp_tmp;
2966 int error_flag = 0;
2967 int val = 0;
2968 int disabled_breaks = 0;
2969 int hw_breakpoint_error = 0;
dd61ec5c 2970 int hw_bp_details_reported = 0;
b775012e 2971
d7e74731 2972 string_file tmp_error_stream;
b775012e
LM
2973
2974 /* Explicitly mark the warning -- this will only be printed if
2975 there was an error. */
d7e74731 2976 tmp_error_stream.puts ("Warning:\n");
b775012e 2977
5ed8105e 2978 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e
LM
2979
2980 ALL_BP_LOCATIONS (bl, blp_tmp)
2981 {
2982 /* We only want to update software breakpoints and hardware
2983 breakpoints. */
2984 if (!is_breakpoint (bl->owner))
2985 continue;
2986
2987 /* We only want to update locations that are already inserted
2988 and need updating. This is to avoid unwanted insertion during
2989 deletion of breakpoints. */
4daf1902 2990 if (!bl->inserted || !bl->needs_update)
b775012e
LM
2991 continue;
2992
2993 switch_to_program_space_and_thread (bl->pspace);
2994
2995 /* For targets that support global breakpoints, there's no need
2996 to select an inferior to insert breakpoint to. In fact, even
2997 if we aren't attached to any process yet, we should still
2998 insert breakpoints. */
f5656ead 2999 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
55f6301a 3000 && (inferior_ptid == null_ptid || !target_has_execution ()))
b775012e
LM
3001 continue;
3002
d7e74731 3003 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3004 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
3005 if (val)
3006 error_flag = val;
3007 }
3008
3009 if (error_flag)
3010 {
223ffa71 3011 target_terminal::ours_for_output ();
b775012e
LM
3012 error_stream (tmp_error_stream);
3013 }
b775012e
LM
3014}
3015
c30eee59 3016/* Used when starting or continuing the program. */
c906108c 3017
74960c60
VP
3018static void
3019insert_breakpoint_locations (void)
c906108c 3020{
a5606eee 3021 struct breakpoint *bpt;
35df4500 3022 struct bp_location *bl, **blp_tmp;
eacd795a 3023 int error_flag = 0;
c906108c 3024 int val = 0;
3fbb6ffa 3025 int disabled_breaks = 0;
81d0cc19 3026 int hw_breakpoint_error = 0;
dd61ec5c 3027 int hw_bp_error_explained_already = 0;
c906108c 3028
d7e74731
PA
3029 string_file tmp_error_stream;
3030
81d0cc19
GS
3031 /* Explicitly mark the warning -- this will only be printed if
3032 there was an error. */
d7e74731 3033 tmp_error_stream.puts ("Warning:\n");
6c95b8df 3034
5ed8105e 3035 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3036
35df4500 3037 ALL_BP_LOCATIONS (bl, blp_tmp)
879bfdc2 3038 {
b775012e 3039 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
3040 continue;
3041
4a64f543
MS
3042 /* There is no point inserting thread-specific breakpoints if
3043 the thread no longer exists. ALL_BP_LOCATIONS bp_location
3044 has BL->OWNER always non-NULL. */
35df4500 3045 if (bl->owner->thread != -1
5d5658a1 3046 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
3047 continue;
3048
35df4500 3049 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
3050
3051 /* For targets that support global breakpoints, there's no need
3052 to select an inferior to insert breakpoint to. In fact, even
3053 if we aren't attached to any process yet, we should still
3054 insert breakpoints. */
f5656ead 3055 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
55f6301a 3056 && (inferior_ptid == null_ptid || !target_has_execution ()))
6c95b8df
PA
3057 continue;
3058
d7e74731 3059 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3060 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 3061 if (val)
eacd795a 3062 error_flag = val;
879bfdc2 3063 }
c906108c 3064
4a64f543
MS
3065 /* If we failed to insert all locations of a watchpoint, remove
3066 them, as half-inserted watchpoint is of limited use. */
a5606eee
VP
3067 ALL_BREAKPOINTS (bpt)
3068 {
3069 int some_failed = 0;
3070 struct bp_location *loc;
3071
3072 if (!is_hardware_watchpoint (bpt))
3073 continue;
3074
d6b74ac4 3075 if (!breakpoint_enabled (bpt))
a5606eee 3076 continue;
74960c60
VP
3077
3078 if (bpt->disposition == disp_del_at_next_stop)
3079 continue;
a5606eee
VP
3080
3081 for (loc = bpt->loc; loc; loc = loc->next)
56710373 3082 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
3083 {
3084 some_failed = 1;
3085 break;
3086 }
3087 if (some_failed)
3088 {
3089 for (loc = bpt->loc; loc; loc = loc->next)
3090 if (loc->inserted)
834c0d03 3091 remove_breakpoint (loc);
a5606eee
VP
3092
3093 hw_breakpoint_error = 1;
d7e74731
PA
3094 tmp_error_stream.printf ("Could not insert "
3095 "hardware watchpoint %d.\n",
3096 bpt->number);
eacd795a 3097 error_flag = -1;
a5606eee
VP
3098 }
3099 }
3100
eacd795a 3101 if (error_flag)
81d0cc19
GS
3102 {
3103 /* If a hardware breakpoint or watchpoint was inserted, add a
dda83cd7 3104 message about possibly exhausted resources. */
dd61ec5c 3105 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3106 {
d7e74731 3107 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3108You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3109 }
223ffa71 3110 target_terminal::ours_for_output ();
81d0cc19
GS
3111 error_stream (tmp_error_stream);
3112 }
c906108c
SS
3113}
3114
c30eee59
TJB
3115/* Used when the program stops.
3116 Returns zero if successful, or non-zero if there was a problem
3117 removing a breakpoint location. */
3118
c906108c 3119int
fba45db2 3120remove_breakpoints (void)
c906108c 3121{
35df4500 3122 struct bp_location *bl, **blp_tmp;
3a1bae8e 3123 int val = 0;
c906108c 3124
35df4500 3125 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3126 {
1e4d1764 3127 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3128 val |= remove_breakpoint (bl);
c5aa993b 3129 }
3a1bae8e 3130 return val;
c906108c
SS
3131}
3132
49fa26b0
PA
3133/* When a thread exits, remove breakpoints that are related to
3134 that thread. */
3135
3136static void
3137remove_threaded_breakpoints (struct thread_info *tp, int silent)
3138{
3139 struct breakpoint *b, *b_tmp;
3140
3141 ALL_BREAKPOINTS_SAFE (b, b_tmp)
3142 {
5d5658a1 3143 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3144 {
3145 b->disposition = disp_del_at_next_stop;
3146
3147 printf_filtered (_("\
43792cf0
PA
3148Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3149 b->number, print_thread_id (tp));
49fa26b0
PA
3150
3151 /* Hide it from the user. */
3152 b->number = 0;
3153 }
3154 }
3155}
3156
f3869b1a 3157/* See breakpoint.h. */
6c95b8df 3158
f3869b1a 3159void
00431a78 3160remove_breakpoints_inf (inferior *inf)
6c95b8df 3161{
35df4500 3162 struct bp_location *bl, **blp_tmp;
6c95b8df 3163 int val;
6c95b8df 3164
35df4500 3165 ALL_BP_LOCATIONS (bl, blp_tmp)
6c95b8df 3166 {
35df4500 3167 if (bl->pspace != inf->pspace)
6c95b8df
PA
3168 continue;
3169
fc126975 3170 if (bl->inserted && !bl->target_info.persist)
6c95b8df 3171 {
834c0d03 3172 val = remove_breakpoint (bl);
6c95b8df 3173 if (val != 0)
f3869b1a 3174 return;
6c95b8df
PA
3175 }
3176 }
6c95b8df
PA
3177}
3178
e58b0e63
PA
3179static int internal_breakpoint_number = -1;
3180
84f4c1fe
PM
3181/* Set the breakpoint number of B, depending on the value of INTERNAL.
3182 If INTERNAL is non-zero, the breakpoint number will be populated
3183 from internal_breakpoint_number and that variable decremented.
e5dd4106 3184 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3185 breakpoint_count and that value incremented. Internal breakpoints
3186 do not set the internal var bpnum. */
3187static void
3188set_breakpoint_number (int internal, struct breakpoint *b)
3189{
3190 if (internal)
3191 b->number = internal_breakpoint_number--;
3192 else
3193 {
3194 set_breakpoint_count (breakpoint_count + 1);
3195 b->number = breakpoint_count;
3196 }
3197}
3198
e62c965a 3199static struct breakpoint *
a6d9a66e 3200create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3201 CORE_ADDR address, enum bptype type,
c0a91b2b 3202 const struct breakpoint_ops *ops)
e62c965a 3203{
51abb421 3204 symtab_and_line sal;
e62c965a
PP
3205 sal.pc = address;
3206 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3207 sal.pspace = current_program_space;
e62c965a 3208
51abb421 3209 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3210 b->number = internal_breakpoint_number--;
3211 b->disposition = disp_donttouch;
3212
3213 return b;
3214}
3215
17450429
PP
3216static const char *const longjmp_names[] =
3217 {
3218 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3219 };
3220#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3221
3222/* Per-objfile data private to breakpoint.c. */
3223struct breakpoint_objfile_data
3224{
3225 /* Minimal symbol for "_ovly_debug_event" (if any). */
43dce439 3226 struct bound_minimal_symbol overlay_msym {};
17450429
PP
3227
3228 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
43dce439 3229 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
17450429 3230
28106bc2 3231 /* True if we have looked for longjmp probes. */
43dce439 3232 int longjmp_searched = 0;
28106bc2 3233
45461e0d
SM
3234 /* SystemTap probe points for longjmp (if any). These are non-owning
3235 references. */
3236 std::vector<probe *> longjmp_probes;
28106bc2 3237
17450429 3238 /* Minimal symbol for "std::terminate()" (if any). */
43dce439 3239 struct bound_minimal_symbol terminate_msym {};
17450429
PP
3240
3241 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
43dce439 3242 struct bound_minimal_symbol exception_msym {};
28106bc2
SDJ
3243
3244 /* True if we have looked for exception probes. */
43dce439 3245 int exception_searched = 0;
28106bc2 3246
45461e0d
SM
3247 /* SystemTap probe points for unwinding (if any). These are non-owning
3248 references. */
3249 std::vector<probe *> exception_probes;
17450429
PP
3250};
3251
51d3063a
TT
3252static const struct objfile_key<breakpoint_objfile_data>
3253 breakpoint_objfile_key;
17450429
PP
3254
3255/* Minimal symbol not found sentinel. */
3256static struct minimal_symbol msym_not_found;
3257
3258/* Returns TRUE if MSYM point to the "not found" sentinel. */
3259
3260static int
3261msym_not_found_p (const struct minimal_symbol *msym)
3262{
3263 return msym == &msym_not_found;
3264}
3265
3266/* Return per-objfile data needed by breakpoint.c.
3267 Allocate the data if necessary. */
3268
3269static struct breakpoint_objfile_data *
3270get_breakpoint_objfile_data (struct objfile *objfile)
3271{
3272 struct breakpoint_objfile_data *bp_objfile_data;
3273
51d3063a 3274 bp_objfile_data = breakpoint_objfile_key.get (objfile);
17450429 3275 if (bp_objfile_data == NULL)
51d3063a 3276 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
17450429
PP
3277 return bp_objfile_data;
3278}
3279
e62c965a 3280static void
af02033e 3281create_overlay_event_breakpoint (void)
e62c965a 3282{
af02033e 3283 const char *const func_name = "_ovly_debug_event";
e62c965a 3284
2030c079 3285 for (objfile *objfile : current_program_space->objfiles ())
69de3c6a
PP
3286 {
3287 struct breakpoint *b;
17450429
PP
3288 struct breakpoint_objfile_data *bp_objfile_data;
3289 CORE_ADDR addr;
67994074 3290 struct explicit_location explicit_loc;
69de3c6a 3291
17450429
PP
3292 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3293
3b7344d5 3294 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3295 continue;
3296
3b7344d5 3297 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3298 {
3b7344d5 3299 struct bound_minimal_symbol m;
17450429
PP
3300
3301 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3302 if (m.minsym == NULL)
17450429
PP
3303 {
3304 /* Avoid future lookups in this objfile. */
3b7344d5 3305 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3306 continue;
3307 }
3308 bp_objfile_data->overlay_msym = m;
3309 }
e62c965a 3310
77e371c0 3311 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
08feed99 3312 b = create_internal_breakpoint (objfile->arch (), addr,
dda83cd7 3313 bp_overlay_event,
06edf0c0 3314 &internal_breakpoint_ops);
67994074
KS
3315 initialize_explicit_location (&explicit_loc);
3316 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3317 b->location = new_explicit_location (&explicit_loc);
e62c965a 3318
69de3c6a 3319 if (overlay_debugging == ovly_auto)
dda83cd7
SM
3320 {
3321 b->enable_state = bp_enabled;
3322 overlay_events_enabled = 1;
3323 }
69de3c6a
PP
3324 else
3325 {
dda83cd7
SM
3326 b->enable_state = bp_disabled;
3327 overlay_events_enabled = 0;
69de3c6a 3328 }
e62c965a 3329 }
e62c965a
PP
3330}
3331
0fd8e87f 3332static void
af02033e 3333create_longjmp_master_breakpoint (void)
0fd8e87f 3334{
5ed8105e 3335 scoped_restore_current_program_space restore_pspace;
0fd8e87f 3336
94c93c35
TT
3337 for (struct program_space *pspace : program_spaces)
3338 {
3339 set_current_program_space (pspace);
af02033e 3340
94c93c35
TT
3341 for (objfile *objfile : current_program_space->objfiles ())
3342 {
3343 int i;
3344 struct gdbarch *gdbarch;
3345 struct breakpoint_objfile_data *bp_objfile_data;
0fd8e87f 3346
94c93c35 3347 gdbarch = objfile->arch ();
0fd8e87f 3348
94c93c35 3349 bp_objfile_data = get_breakpoint_objfile_data (objfile);
17450429 3350
94c93c35
TT
3351 if (!bp_objfile_data->longjmp_searched)
3352 {
3353 std::vector<probe *> ret
3354 = find_probes_in_objfile (objfile, "libc", "longjmp");
25f9533e 3355
94c93c35
TT
3356 if (!ret.empty ())
3357 {
3358 /* We are only interested in checking one element. */
3359 probe *p = ret[0];
aed57c53 3360
94c93c35
TT
3361 if (!p->can_evaluate_arguments ())
3362 {
3363 /* We cannot use the probe interface here,
3364 because it does not know how to evaluate
3365 arguments. */
3366 ret.clear ();
3367 }
3368 }
3369 bp_objfile_data->longjmp_probes = ret;
3370 bp_objfile_data->longjmp_searched = 1;
3371 }
25f9533e 3372
94c93c35
TT
3373 if (!bp_objfile_data->longjmp_probes.empty ())
3374 {
3375 for (probe *p : bp_objfile_data->longjmp_probes)
3376 {
3377 struct breakpoint *b;
3378
3379 b = create_internal_breakpoint (gdbarch,
3380 p->get_relocated_address (objfile),
3381 bp_longjmp_master,
3382 &internal_breakpoint_ops);
3383 b->location = new_probe_location ("-probe-stap libc:longjmp");
3384 b->enable_state = bp_disabled;
3385 }
28106bc2 3386
94c93c35
TT
3387 continue;
3388 }
28106bc2 3389
94c93c35
TT
3390 if (!gdbarch_get_longjmp_target_p (gdbarch))
3391 continue;
28106bc2 3392
94c93c35
TT
3393 for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3394 {
3395 struct breakpoint *b;
3396 const char *func_name;
3397 CORE_ADDR addr;
3398 struct explicit_location explicit_loc;
0fd8e87f 3399
94c93c35
TT
3400 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3401 continue;
17450429 3402
94c93c35
TT
3403 func_name = longjmp_names[i];
3404 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3405 {
3406 struct bound_minimal_symbol m;
aed57c53 3407
94c93c35
TT
3408 m = lookup_minimal_symbol_text (func_name, objfile);
3409 if (m.minsym == NULL)
3410 {
3411 /* Prevent future lookups in this objfile. */
3412 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3413 continue;
3414 }
3415 bp_objfile_data->longjmp_msym[i] = m;
3416 }
17450429 3417
94c93c35
TT
3418 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3419 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3420 &internal_breakpoint_ops);
3421 initialize_explicit_location (&explicit_loc);
3422 explicit_loc.function_name = ASTRDUP (func_name);
3423 b->location = new_explicit_location (&explicit_loc);
3424 b->enable_state = bp_disabled;
3425 }
3426 }
3427 }
0fd8e87f
UW
3428}
3429
af02033e 3430/* Create a master std::terminate breakpoint. */
aa7d318d 3431static void
af02033e 3432create_std_terminate_master_breakpoint (void)
aa7d318d 3433{
af02033e 3434 const char *const func_name = "std::terminate()";
aa7d318d 3435
5ed8105e 3436 scoped_restore_current_program_space restore_pspace;
aa7d318d 3437
94c93c35
TT
3438 for (struct program_space *pspace : program_spaces)
3439 {
3440 CORE_ADDR addr;
17450429 3441
94c93c35 3442 set_current_program_space (pspace);
17450429 3443
94c93c35
TT
3444 for (objfile *objfile : current_program_space->objfiles ())
3445 {
3446 struct breakpoint *b;
3447 struct breakpoint_objfile_data *bp_objfile_data;
3448 struct explicit_location explicit_loc;
aa7d318d 3449
94c93c35 3450 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3451
94c93c35
TT
3452 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3453 continue;
17450429 3454
94c93c35
TT
3455 if (bp_objfile_data->terminate_msym.minsym == NULL)
3456 {
3457 struct bound_minimal_symbol m;
17450429 3458
94c93c35
TT
3459 m = lookup_minimal_symbol (func_name, NULL, objfile);
3460 if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3461 && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3462 {
3463 /* Prevent future lookups in this objfile. */
3464 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3465 continue;
3466 }
3467 bp_objfile_data->terminate_msym = m;
3468 }
aa7d318d 3469
94c93c35
TT
3470 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3471 b = create_internal_breakpoint (objfile->arch (), addr,
3472 bp_std_terminate_master,
3473 &internal_breakpoint_ops);
3474 initialize_explicit_location (&explicit_loc);
3475 explicit_loc.function_name = ASTRDUP (func_name);
3476 b->location = new_explicit_location (&explicit_loc);
3477 b->enable_state = bp_disabled;
3478 }
3479 }
aa7d318d
TT
3480}
3481
186c406b
TT
3482/* Install a master breakpoint on the unwinder's debug hook. */
3483
70221824 3484static void
186c406b
TT
3485create_exception_master_breakpoint (void)
3486{
17450429 3487 const char *const func_name = "_Unwind_DebugHook";
186c406b 3488
2030c079 3489 for (objfile *objfile : current_program_space->objfiles ())
186c406b 3490 {
17450429
PP
3491 struct breakpoint *b;
3492 struct gdbarch *gdbarch;
3493 struct breakpoint_objfile_data *bp_objfile_data;
3494 CORE_ADDR addr;
67994074 3495 struct explicit_location explicit_loc;
17450429
PP
3496
3497 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3498
28106bc2
SDJ
3499 /* We prefer the SystemTap probe point if it exists. */
3500 if (!bp_objfile_data->exception_searched)
3501 {
45461e0d
SM
3502 std::vector<probe *> ret
3503 = find_probes_in_objfile (objfile, "libgcc", "unwind");
25f9533e 3504
45461e0d 3505 if (!ret.empty ())
25f9533e
SDJ
3506 {
3507 /* We are only interested in checking one element. */
45461e0d 3508 probe *p = ret[0];
25f9533e 3509
935676c9 3510 if (!p->can_evaluate_arguments ())
25f9533e
SDJ
3511 {
3512 /* We cannot use the probe interface here, because it does
3513 not know how to evaluate arguments. */
45461e0d 3514 ret.clear ();
25f9533e
SDJ
3515 }
3516 }
3517 bp_objfile_data->exception_probes = ret;
28106bc2
SDJ
3518 bp_objfile_data->exception_searched = 1;
3519 }
3520
45461e0d 3521 if (!bp_objfile_data->exception_probes.empty ())
28106bc2 3522 {
08feed99 3523 gdbarch = objfile->arch ();
45461e0d
SM
3524
3525 for (probe *p : bp_objfile_data->exception_probes)
28106bc2 3526 {
729662a5 3527 b = create_internal_breakpoint (gdbarch,
935676c9 3528 p->get_relocated_address (objfile),
28106bc2
SDJ
3529 bp_exception_master,
3530 &internal_breakpoint_ops);
d28cd78a 3531 b->location = new_probe_location ("-probe-stap libgcc:unwind");
28106bc2
SDJ
3532 b->enable_state = bp_disabled;
3533 }
3534
3535 continue;
3536 }
3537
3538 /* Otherwise, try the hook function. */
3539
3b7344d5 3540 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
17450429
PP
3541 continue;
3542
08feed99 3543 gdbarch = objfile->arch ();
186c406b 3544
3b7344d5 3545 if (bp_objfile_data->exception_msym.minsym == NULL)
186c406b 3546 {
3b7344d5 3547 struct bound_minimal_symbol debug_hook;
186c406b 3548
17450429 3549 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3b7344d5 3550 if (debug_hook.minsym == NULL)
17450429 3551 {
3b7344d5 3552 bp_objfile_data->exception_msym.minsym = &msym_not_found;
17450429
PP
3553 continue;
3554 }
3555
3556 bp_objfile_data->exception_msym = debug_hook;
186c406b 3557 }
17450429 3558
77e371c0 3559 addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
8b88a78e
PA
3560 addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3561 current_top_target ());
06edf0c0
PA
3562 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3563 &internal_breakpoint_ops);
67994074
KS
3564 initialize_explicit_location (&explicit_loc);
3565 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3566 b->location = new_explicit_location (&explicit_loc);
17450429 3567 b->enable_state = bp_disabled;
186c406b 3568 }
186c406b
TT
3569}
3570
9ef9e6a6
KS
3571/* Does B have a location spec? */
3572
3573static int
3574breakpoint_event_location_empty_p (const struct breakpoint *b)
3575{
d28cd78a 3576 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3577}
3578
c906108c 3579void
fba45db2 3580update_breakpoints_after_exec (void)
c906108c 3581{
35df4500 3582 struct breakpoint *b, *b_tmp;
876fa593 3583 struct bp_location *bploc, **bplocp_tmp;
c906108c 3584
25b22b0a
PA
3585 /* We're about to delete breakpoints from GDB's lists. If the
3586 INSERTED flag is true, GDB will try to lift the breakpoints by
3587 writing the breakpoints' "shadow contents" back into memory. The
3588 "shadow contents" are NOT valid after an exec, so GDB should not
3589 do that. Instead, the target is responsible from marking
3590 breakpoints out as soon as it detects an exec. We don't do that
3591 here instead, because there may be other attempts to delete
3592 breakpoints after detecting an exec and before reaching here. */
876fa593 3593 ALL_BP_LOCATIONS (bploc, bplocp_tmp)
6c95b8df
PA
3594 if (bploc->pspace == current_program_space)
3595 gdb_assert (!bploc->inserted);
c906108c 3596
35df4500 3597 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3598 {
6c95b8df
PA
3599 if (b->pspace != current_program_space)
3600 continue;
3601
4a64f543 3602 /* Solib breakpoints must be explicitly reset after an exec(). */
c5aa993b
JM
3603 if (b->type == bp_shlib_event)
3604 {
3605 delete_breakpoint (b);
3606 continue;
3607 }
c906108c 3608
4a64f543 3609 /* JIT breakpoints must be explicitly reset after an exec(). */
4efc6507
DE
3610 if (b->type == bp_jit_event)
3611 {
3612 delete_breakpoint (b);
3613 continue;
3614 }
3615
1900040c 3616 /* Thread event breakpoints must be set anew after an exec(),
0fd8e87f
UW
3617 as must overlay event and longjmp master breakpoints. */
3618 if (b->type == bp_thread_event || b->type == bp_overlay_event
186c406b
TT
3619 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3620 || b->type == bp_exception_master)
c4093a6a
JM
3621 {
3622 delete_breakpoint (b);
3623 continue;
3624 }
3625
4a64f543 3626 /* Step-resume breakpoints are meaningless after an exec(). */
2c03e5be 3627 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
c5aa993b
JM
3628 {
3629 delete_breakpoint (b);
3630 continue;
3631 }
3632
7c16b83e
PA
3633 /* Just like single-step breakpoints. */
3634 if (b->type == bp_single_step)
3635 {
3636 delete_breakpoint (b);
3637 continue;
3638 }
3639
611c83ae
PA
3640 /* Longjmp and longjmp-resume breakpoints are also meaningless
3641 after an exec. */
186c406b 3642 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
e2e4d78b 3643 || b->type == bp_longjmp_call_dummy
186c406b 3644 || b->type == bp_exception || b->type == bp_exception_resume)
611c83ae
PA
3645 {
3646 delete_breakpoint (b);
3647 continue;
3648 }
3649
ce78b96d
JB
3650 if (b->type == bp_catchpoint)
3651 {
dda83cd7
SM
3652 /* For now, none of the bp_catchpoint breakpoints need to
3653 do anything at this point. In the future, if some of
3654 the catchpoints need to something, we will need to add
3655 a new method, and call this method from here. */
3656 continue;
ce78b96d
JB
3657 }
3658
c5aa993b
JM
3659 /* bp_finish is a special case. The only way we ought to be able
3660 to see one of these when an exec() has happened, is if the user
3661 caught a vfork, and then said "finish". Ordinarily a finish just
3662 carries them to the call-site of the current callee, by setting
3663 a temporary bp there and resuming. But in this case, the finish
3664 will carry them entirely through the vfork & exec.
3665
3666 We don't want to allow a bp_finish to remain inserted now. But
3667 we can't safely delete it, 'cause finish_command has a handle to
3668 the bp on a bpstat, and will later want to delete it. There's a
3669 chance (and I've seen it happen) that if we delete the bp_finish
3670 here, that its storage will get reused by the time finish_command
3671 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3672 We really must allow finish_command to delete a bp_finish.
3673
e5dd4106 3674 In the absence of a general solution for the "how do we know
53a5351d
JM
3675 it's safe to delete something others may have handles to?"
3676 problem, what we'll do here is just uninsert the bp_finish, and
3677 let finish_command delete it.
3678
3679 (We know the bp_finish is "doomed" in the sense that it's
3680 momentary, and will be deleted as soon as finish_command sees
3681 the inferior stopped. So it doesn't matter that the bp's
3682 address is probably bogus in the new a.out, unlike e.g., the
3683 solib breakpoints.) */
c5aa993b 3684
c5aa993b
JM
3685 if (b->type == bp_finish)
3686 {
3687 continue;
3688 }
3689
3690 /* Without a symbolic address, we have little hope of the
3691 pre-exec() address meaning the same thing in the post-exec()
4a64f543 3692 a.out. */
9ef9e6a6 3693 if (breakpoint_event_location_empty_p (b))
c5aa993b
JM
3694 {
3695 delete_breakpoint (b);
3696 continue;
3697 }
c5aa993b 3698 }
c906108c
SS
3699}
3700
3701int
d80ee84f 3702detach_breakpoints (ptid_t ptid)
c906108c 3703{
35df4500 3704 struct bp_location *bl, **blp_tmp;
3a1bae8e 3705 int val = 0;
2989a365 3706 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3707 struct inferior *inf = current_inferior ();
c5aa993b 3708
e99b03dc 3709 if (ptid.pid () == inferior_ptid.pid ())
8a3fe4f8 3710 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3711
6c95b8df 3712 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3713 inferior_ptid = ptid;
35df4500 3714 ALL_BP_LOCATIONS (bl, blp_tmp)
c5aa993b 3715 {
35df4500 3716 if (bl->pspace != inf->pspace)
6c95b8df
PA
3717 continue;
3718
bd9673a4
PW
3719 /* This function must physically remove breakpoints locations
3720 from the specified ptid, without modifying the breakpoint
3721 package's state. Locations of type bp_loc_other are only
3722 maintained at GDB side. So, there is no need to remove
3723 these bp_loc_other locations. Moreover, removing these
3724 would modify the breakpoint package's state. */
3725 if (bl->loc_type == bp_loc_other)
3726 continue;
3727
35df4500 3728 if (bl->inserted)
b2b6a7da 3729 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
c5aa993b 3730 }
d03285ec 3731
3a1bae8e 3732 return val;
c906108c
SS
3733}
3734
35df4500 3735/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3736 Note that this is used to detach breakpoints from a child fork.
3737 When we get here, the child isn't in the inferior list, and neither
3738 do we have objects to represent its address space --- we should
35df4500 3739 *not* look at bl->pspace->aspace here. */
6c95b8df 3740
c906108c 3741static int
b2b6a7da 3742remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3743{
3744 int val;
c5aa993b 3745
35df4500
TJB
3746 /* BL is never in moribund_locations by our callers. */
3747 gdb_assert (bl->owner != NULL);
2bdf28a0 3748
74960c60
VP
3749 /* The type of none suggests that owner is actually deleted.
3750 This should not ever happen. */
35df4500 3751 gdb_assert (bl->owner->type != bp_none);
0bde7532 3752
35df4500
TJB
3753 if (bl->loc_type == bp_loc_software_breakpoint
3754 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3755 {
c02f5703
MS
3756 /* "Normal" instruction breakpoint: either the standard
3757 trap-instruction bp (bp_breakpoint), or a
3758 bp_hardware_breakpoint. */
3759
3760 /* First check to see if we have to handle an overlay. */
3761 if (overlay_debugging == ovly_off
35df4500
TJB
3762 || bl->section == NULL
3763 || !(section_is_overlay (bl->section)))
c02f5703
MS
3764 {
3765 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3766
3767 /* If we're trying to uninsert a memory breakpoint that we
3768 know is set in a dynamic object that is marked
3769 shlib_disabled, then either the dynamic object was
3770 removed with "remove-symbol-file" or with
3771 "nosharedlibrary". In the former case, we don't know
3772 whether another dynamic object might have loaded over the
3773 breakpoint's address -- the user might well let us know
3774 about it next with add-symbol-file (the whole point of
d03de421 3775 add-symbol-file is letting the user manually maintain a
08351840
PA
3776 list of dynamically loaded objects). If we have the
3777 breakpoint's shadow memory, that is, this is a software
3778 breakpoint managed by GDB, check whether the breakpoint
3779 is still inserted in memory, to avoid overwriting wrong
3780 code with stale saved shadow contents. Note that HW
3781 breakpoints don't have shadow memory, as they're
3782 implemented using a mechanism that is not dependent on
3783 being able to modify the target's memory, and as such
3784 they should always be removed. */
3785 if (bl->shlib_disabled
3786 && bl->target_info.shadow_len != 0
3787 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3788 val = 0;
3789 else
73971819 3790 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3791 }
c906108c
SS
3792 else
3793 {
4a64f543 3794 /* This breakpoint is in an overlay section.
c02f5703
MS
3795 Did we set a breakpoint at the LMA? */
3796 if (!overlay_events_enabled)
3797 {
3798 /* Yes -- overlay event support is not active, so we
3799 should have set a breakpoint at the LMA. Remove it.
3800 */
c02f5703
MS
3801 /* Ignore any failures: if the LMA is in ROM, we will
3802 have already warned when we failed to insert it. */
35df4500
TJB
3803 if (bl->loc_type == bp_loc_hardware_breakpoint)
3804 target_remove_hw_breakpoint (bl->gdbarch,
3805 &bl->overlay_target_info);
c02f5703 3806 else
35df4500 3807 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3808 &bl->overlay_target_info,
3809 reason);
c02f5703
MS
3810 }
3811 /* Did we set a breakpoint at the VMA?
3812 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3813 if (bl->inserted)
c906108c 3814 {
c02f5703
MS
3815 /* Yes -- remove it. Previously we did not bother to
3816 remove the breakpoint if the section had been
3817 unmapped, but let's not rely on that being safe. We
3818 don't know what the overlay manager might do. */
aa67235e
UW
3819
3820 /* However, we should remove *software* breakpoints only
3821 if the section is still mapped, or else we overwrite
3822 wrong code with the saved shadow contents. */
348d480f
PA
3823 if (bl->loc_type == bp_loc_hardware_breakpoint
3824 || section_is_mapped (bl->section))
73971819 3825 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3826 else
3827 val = 0;
c906108c 3828 }
c02f5703
MS
3829 else
3830 {
3831 /* No -- not inserted, so no need to remove. No error. */
3832 val = 0;
3833 }
c906108c 3834 }
879d1e6b 3835
08351840
PA
3836 /* In some cases, we might not be able to remove a breakpoint in
3837 a shared library that has already been removed, but we have
3838 not yet processed the shlib unload event. Similarly for an
3839 unloaded add-symbol-file object - the user might not yet have
3840 had the chance to remove-symbol-file it. shlib_disabled will
3841 be set if the library/object has already been removed, but
3842 the breakpoint hasn't been uninserted yet, e.g., after
3843 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3844 always-inserted mode. */
076855f9 3845 if (val
08351840
PA
3846 && (bl->loc_type == bp_loc_software_breakpoint
3847 && (bl->shlib_disabled
3848 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3849 || shared_objfile_contains_address_p (bl->pspace,
3850 bl->address))))
879d1e6b
UW
3851 val = 0;
3852
c906108c
SS
3853 if (val)
3854 return val;
b2b6a7da 3855 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3856 }
35df4500 3857 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3858 {
77b06cd7
TJB
3859 gdb_assert (bl->owner->ops != NULL
3860 && bl->owner->ops->remove_location != NULL);
3861
b2b6a7da 3862 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3863 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3864
c906108c 3865 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3866 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3867 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3868 bl->owner->number);
c906108c 3869 }
35df4500 3870 else if (bl->owner->type == bp_catchpoint
dda83cd7
SM
3871 && breakpoint_enabled (bl->owner)
3872 && !bl->duplicate)
ce78b96d 3873 {
77b06cd7
TJB
3874 gdb_assert (bl->owner->ops != NULL
3875 && bl->owner->ops->remove_location != NULL);
ce78b96d 3876
73971819 3877 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3878 if (val)
3879 return val;
77b06cd7 3880
b2b6a7da 3881 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3882 }
c906108c
SS
3883
3884 return 0;
3885}
3886
6c95b8df 3887static int
834c0d03 3888remove_breakpoint (struct bp_location *bl)
6c95b8df 3889{
35df4500
TJB
3890 /* BL is never in moribund_locations by our callers. */
3891 gdb_assert (bl->owner != NULL);
2bdf28a0 3892
6c95b8df
PA
3893 /* The type of none suggests that owner is actually deleted.
3894 This should not ever happen. */
35df4500 3895 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3896
5ed8105e 3897 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3898
35df4500 3899 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3900
5ed8105e 3901 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3902}
3903
c906108c
SS
3904/* Clear the "inserted" flag in all breakpoints. */
3905
25b22b0a 3906void
fba45db2 3907mark_breakpoints_out (void)
c906108c 3908{
35df4500 3909 struct bp_location *bl, **blp_tmp;
c906108c 3910
35df4500 3911 ALL_BP_LOCATIONS (bl, blp_tmp)
66c4b3e8 3912 if (bl->pspace == current_program_space)
35df4500 3913 bl->inserted = 0;
c906108c
SS
3914}
3915
53a5351d
JM
3916/* Clear the "inserted" flag in all breakpoints and delete any
3917 breakpoints which should go away between runs of the program.
c906108c
SS
3918
3919 Plus other such housekeeping that has to be done for breakpoints
3920 between runs.
3921
53a5351d
JM
3922 Note: this function gets called at the end of a run (by
3923 generic_mourn_inferior) and when a run begins (by
4a64f543 3924 init_wait_for_inferior). */
c906108c
SS
3925
3926
3927
3928void
fba45db2 3929breakpoint_init_inferior (enum inf_context context)
c906108c 3930{
35df4500 3931 struct breakpoint *b, *b_tmp;
6c95b8df 3932 struct program_space *pspace = current_program_space;
c906108c 3933
50c71eaf
PA
3934 /* If breakpoint locations are shared across processes, then there's
3935 nothing to do. */
f5656ead 3936 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3937 return;
3938
1a853c52 3939 mark_breakpoints_out ();
075f6582 3940
35df4500 3941 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 3942 {
6c95b8df
PA
3943 if (b->loc && b->loc->pspace != pspace)
3944 continue;
3945
c5aa993b
JM
3946 switch (b->type)
3947 {
3948 case bp_call_dummy:
e2e4d78b 3949 case bp_longjmp_call_dummy:
c906108c 3950
c5aa993b 3951 /* If the call dummy breakpoint is at the entry point it will
ab92d69b
PA
3952 cause problems when the inferior is rerun, so we better get
3953 rid of it. */
3954
3955 case bp_watchpoint_scope:
3956
3957 /* Also get rid of scope breakpoints. */
3958
3959 case bp_shlib_event:
3960
3961 /* Also remove solib event breakpoints. Their addresses may
3962 have changed since the last time we ran the program.
3963 Actually we may now be debugging against different target;
3964 and so the solib backend that installed this breakpoint may
3965 not be used in by the target. E.g.,
3966
3967 (gdb) file prog-linux
3968 (gdb) run # native linux target
3969 ...
3970 (gdb) kill
3971 (gdb) file prog-win.exe
3972 (gdb) tar rem :9999 # remote Windows gdbserver.
3973 */
c906108c 3974
f59f708a
PA
3975 case bp_step_resume:
3976
3977 /* Also remove step-resume breakpoints. */
3978
7c16b83e
PA
3979 case bp_single_step:
3980
3981 /* Also remove single-step breakpoints. */
3982
c5aa993b
JM
3983 delete_breakpoint (b);
3984 break;
c906108c 3985
c5aa993b
JM
3986 case bp_watchpoint:
3987 case bp_hardware_watchpoint:
3988 case bp_read_watchpoint:
3989 case bp_access_watchpoint:
3a5c3e22
PA
3990 {
3991 struct watchpoint *w = (struct watchpoint *) b;
c906108c 3992
3a5c3e22
PA
3993 /* Likewise for watchpoints on local expressions. */
3994 if (w->exp_valid_block != NULL)
3995 delete_breakpoint (b);
63000888 3996 else
3a5c3e22 3997 {
63000888
PA
3998 /* Get rid of existing locations, which are no longer
3999 valid. New ones will be created in
4000 update_watchpoint, when the inferior is restarted.
4001 The next update_global_location_list call will
4002 garbage collect them. */
4003 b->loc = NULL;
4004
4005 if (context == inf_starting)
4006 {
4007 /* Reset val field to force reread of starting value in
4008 insert_breakpoints. */
850645cf 4009 w->val.reset (nullptr);
4c1d86d9 4010 w->val_valid = false;
63000888
PA
4011 }
4012 }
3a5c3e22 4013 }
c5aa993b
JM
4014 break;
4015 default:
c5aa993b
JM
4016 break;
4017 }
4018 }
1c5cfe86
PA
4019
4020 /* Get rid of the moribund locations. */
1123588c 4021 for (bp_location *bl : moribund_locations)
35df4500 4022 decref_bp_location (&bl);
1123588c 4023 moribund_locations.clear ();
c906108c
SS
4024}
4025
6c95b8df
PA
4026/* These functions concern about actual breakpoints inserted in the
4027 target --- to e.g. check if we need to do decr_pc adjustment or if
4028 we need to hop over the bkpt --- so we check for address space
4029 match, not program space. */
4030
c2c6d25f
JM
4031/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4032 exists at PC. It returns ordinary_breakpoint_here if it's an
4033 ordinary breakpoint, or permanent_breakpoint_here if it's a
4034 permanent breakpoint.
4035 - When continuing from a location with an ordinary breakpoint, we
4036 actually single step once before calling insert_breakpoints.
e5dd4106 4037 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
4038 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4039 the target, to advance the PC past the breakpoint. */
c906108c 4040
c2c6d25f 4041enum breakpoint_here
accd0bcd 4042breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4043{
35df4500 4044 struct bp_location *bl, **blp_tmp;
c2c6d25f 4045 int any_breakpoint_here = 0;
c906108c 4046
35df4500 4047 ALL_BP_LOCATIONS (bl, blp_tmp)
075f6582 4048 {
35df4500
TJB
4049 if (bl->loc_type != bp_loc_software_breakpoint
4050 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4051 continue;
4052
f1310107 4053 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 4054 if ((breakpoint_enabled (bl->owner)
1a853c52 4055 || bl->permanent)
f1310107 4056 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
4057 {
4058 if (overlay_debugging
35df4500
TJB
4059 && section_is_overlay (bl->section)
4060 && !section_is_mapped (bl->section))
075f6582 4061 continue; /* unmapped overlay -- can't be a match */
1a853c52 4062 else if (bl->permanent)
075f6582
DJ
4063 return permanent_breakpoint_here;
4064 else
4065 any_breakpoint_here = 1;
4066 }
4067 }
c906108c 4068
f486487f 4069 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4070}
4071
d35ae833
PA
4072/* See breakpoint.h. */
4073
4074int
accd0bcd 4075breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
4076 CORE_ADDR addr, ULONGEST len)
4077{
4078 struct bp_location *bl, **blp_tmp;
4079
4080 ALL_BP_LOCATIONS (bl, blp_tmp)
4081 {
4082 if (bl->loc_type != bp_loc_software_breakpoint
4083 && bl->loc_type != bp_loc_hardware_breakpoint)
4084 continue;
4085
4086 if ((breakpoint_enabled (bl->owner)
4087 || bl->permanent)
4088 && breakpoint_location_address_range_overlap (bl, aspace,
4089 addr, len))
4090 {
4091 if (overlay_debugging
4092 && section_is_overlay (bl->section)
4093 && !section_is_mapped (bl->section))
4094 {
4095 /* Unmapped overlay -- can't be a match. */
4096 continue;
4097 }
4098
4099 return 1;
4100 }
4101 }
4102
4103 return 0;
4104}
4105
1c5cfe86
PA
4106/* Return true if there's a moribund breakpoint at PC. */
4107
4108int
accd0bcd 4109moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86 4110{
1123588c 4111 for (bp_location *loc : moribund_locations)
f1310107 4112 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4113 return 1;
4114
4115 return 0;
4116}
c2c6d25f 4117
f7ce857f
PA
4118/* Returns non-zero iff BL is inserted at PC, in address space
4119 ASPACE. */
4120
4121static int
4122bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4123 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4124{
4125 if (bl->inserted
4126 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4127 aspace, pc))
4128 {
4129 if (overlay_debugging
4130 && section_is_overlay (bl->section)
4131 && !section_is_mapped (bl->section))
4132 return 0; /* unmapped overlay -- can't be a match */
4133 else
4134 return 1;
4135 }
4136 return 0;
4137}
4138
a1fd2fa5 4139/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4140
4141int
accd0bcd 4142breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4143{
f7ce857f 4144 struct bp_location **blp, **blp_tmp = NULL;
c906108c 4145
f7ce857f 4146 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
c5aa993b 4147 {
f7ce857f
PA
4148 struct bp_location *bl = *blp;
4149
35df4500
TJB
4150 if (bl->loc_type != bp_loc_software_breakpoint
4151 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4152 continue;
4153
f7ce857f
PA
4154 if (bp_location_inserted_here_p (bl, aspace, pc))
4155 return 1;
c5aa993b 4156 }
c36b740a
VP
4157 return 0;
4158}
4159
a1fd2fa5
PA
4160/* This function returns non-zero iff there is a software breakpoint
4161 inserted at PC. */
c36b740a
VP
4162
4163int
accd0bcd 4164software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4165 CORE_ADDR pc)
4fa8626c 4166{
f7ce857f 4167 struct bp_location **blp, **blp_tmp = NULL;
4fa8626c 4168
f7ce857f 4169 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4fa8626c 4170 {
f7ce857f
PA
4171 struct bp_location *bl = *blp;
4172
35df4500 4173 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4174 continue;
4175
f7ce857f
PA
4176 if (bp_location_inserted_here_p (bl, aspace, pc))
4177 return 1;
4fa8626c
DJ
4178 }
4179
4180 return 0;
9c02b525
PA
4181}
4182
4183/* See breakpoint.h. */
4184
4185int
accd0bcd 4186hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4187 CORE_ADDR pc)
4188{
4189 struct bp_location **blp, **blp_tmp = NULL;
9c02b525
PA
4190
4191 ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4192 {
4193 struct bp_location *bl = *blp;
4194
4195 if (bl->loc_type != bp_loc_hardware_breakpoint)
4196 continue;
4197
4198 if (bp_location_inserted_here_p (bl, aspace, pc))
4199 return 1;
4200 }
4201
4202 return 0;
4fa8626c
DJ
4203}
4204
9093389c 4205int
accd0bcd 4206hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4207 CORE_ADDR addr, ULONGEST len)
4208{
4209 struct breakpoint *bpt;
4210
4211 ALL_BREAKPOINTS (bpt)
4212 {
4213 struct bp_location *loc;
4214
4215 if (bpt->type != bp_hardware_watchpoint
4216 && bpt->type != bp_access_watchpoint)
4217 continue;
4218
4219 if (!breakpoint_enabled (bpt))
4220 continue;
4221
4222 for (loc = bpt->loc; loc; loc = loc->next)
4223 if (loc->pspace->aspace == aspace && loc->inserted)
4224 {
4225 CORE_ADDR l, h;
4226
4227 /* Check for intersection. */
768adc05
PA
4228 l = std::max<CORE_ADDR> (loc->address, addr);
4229 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4230 if (l < h)
4231 return 1;
4232 }
4233 }
4234 return 0;
4235}
c5aa993b 4236
f2478a7e 4237/* See breakpoint.h. */
c906108c 4238
f2478a7e
SM
4239bool
4240is_catchpoint (struct breakpoint *b)
c906108c 4241{
f2478a7e 4242 return (b->type == bp_catchpoint);
c906108c
SS
4243}
4244
f431efe5
PA
4245/* Frees any storage that is part of a bpstat. Does not walk the
4246 'next' chain. */
4247
04afa70c 4248bpstats::~bpstats ()
198757a8 4249{
04afa70c
TT
4250 if (bp_location_at != NULL)
4251 decref_bp_location (&bp_location_at);
198757a8
VP
4252}
4253
c906108c
SS
4254/* Clear a bpstat so that it says we are not at any breakpoint.
4255 Also free any storage that is part of a bpstat. */
4256
4257void
fba45db2 4258bpstat_clear (bpstat *bsp)
c906108c
SS
4259{
4260 bpstat p;
4261 bpstat q;
4262
4263 if (bsp == 0)
4264 return;
4265 p = *bsp;
4266 while (p != NULL)
4267 {
4268 q = p->next;
04afa70c 4269 delete p;
c906108c
SS
4270 p = q;
4271 }
4272 *bsp = NULL;
4273}
4274
04afa70c
TT
4275bpstats::bpstats (const bpstats &other)
4276 : next (NULL),
4277 bp_location_at (other.bp_location_at),
4278 breakpoint_at (other.breakpoint_at),
4279 commands (other.commands),
04afa70c
TT
4280 print (other.print),
4281 stop (other.stop),
4282 print_it (other.print_it)
4283{
850645cf
TT
4284 if (other.old_val != NULL)
4285 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c 4286 incref_bp_location (bp_location_at);
04afa70c
TT
4287}
4288
c906108c
SS
4289/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4290 is part of the bpstat is copied as well. */
4291
4292bpstat
fba45db2 4293bpstat_copy (bpstat bs)
c906108c
SS
4294{
4295 bpstat p = NULL;
4296 bpstat tmp;
4297 bpstat retval = NULL;
4298
4299 if (bs == NULL)
4300 return bs;
4301
4302 for (; bs != NULL; bs = bs->next)
4303 {
04afa70c 4304 tmp = new bpstats (*bs);
31cc81e9 4305
c906108c
SS
4306 if (p == NULL)
4307 /* This is the first thing in the chain. */
4308 retval = tmp;
4309 else
4310 p->next = tmp;
4311 p = tmp;
4312 }
4313 p->next = NULL;
4314 return retval;
4315}
4316
4a64f543 4317/* Find the bpstat associated with this breakpoint. */
c906108c
SS
4318
4319bpstat
fba45db2 4320bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
c906108c 4321{
c5aa993b
JM
4322 if (bsp == NULL)
4323 return NULL;
c906108c 4324
c5aa993b
JM
4325 for (; bsp != NULL; bsp = bsp->next)
4326 {
f431efe5 4327 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4328 return bsp;
4329 }
c906108c
SS
4330 return NULL;
4331}
4332
ab04a2af
TT
4333/* See breakpoint.h. */
4334
4c462cb0 4335bool
427cd150 4336bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
ab04a2af 4337{
ab04a2af
TT
4338 for (; bsp != NULL; bsp = bsp->next)
4339 {
427cd150
TT
4340 if (bsp->breakpoint_at == NULL)
4341 {
4342 /* A moribund location can never explain a signal other than
4343 GDB_SIGNAL_TRAP. */
4344 if (sig == GDB_SIGNAL_TRAP)
4c462cb0 4345 return true;
427cd150
TT
4346 }
4347 else
47591c29
PA
4348 {
4349 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4350 sig))
4c462cb0 4351 return true;
47591c29 4352 }
ab04a2af
TT
4353 }
4354
4c462cb0 4355 return false;
ab04a2af
TT
4356}
4357
4a64f543
MS
4358/* Put in *NUM the breakpoint number of the first breakpoint we are
4359 stopped at. *BSP upon return is a bpstat which points to the
4360 remaining breakpoints stopped at (but which is not guaranteed to be
4361 good for anything but further calls to bpstat_num).
4362
8671a17b
PA
4363 Return 0 if passed a bpstat which does not indicate any breakpoints.
4364 Return -1 if stopped at a breakpoint that has been deleted since
4365 we set it.
4366 Return 1 otherwise. */
c906108c
SS
4367
4368int
8671a17b 4369bpstat_num (bpstat *bsp, int *num)
c906108c
SS
4370{
4371 struct breakpoint *b;
4372
4373 if ((*bsp) == NULL)
4374 return 0; /* No more breakpoint values */
8671a17b 4375
4a64f543
MS
4376 /* We assume we'll never have several bpstats that correspond to a
4377 single breakpoint -- otherwise, this function might return the
4378 same number more than once and this will look ugly. */
f431efe5 4379 b = (*bsp)->breakpoint_at;
8671a17b
PA
4380 *bsp = (*bsp)->next;
4381 if (b == NULL)
4382 return -1; /* breakpoint that's been deleted since */
4383
4384 *num = b->number; /* We have its number */
4385 return 1;
c906108c
SS
4386}
4387
e93ca019 4388/* See breakpoint.h. */
c906108c
SS
4389
4390void
e93ca019 4391bpstat_clear_actions (void)
c906108c 4392{
e93ca019
JK
4393 bpstat bs;
4394
00431a78 4395 if (inferior_ptid == null_ptid)
e93ca019
JK
4396 return;
4397
00431a78 4398 thread_info *tp = inferior_thread ();
e93ca019 4399 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4400 {
d1b0a7bf 4401 bs->commands = NULL;
850645cf 4402 bs->old_val.reset (nullptr);
c906108c
SS
4403 }
4404}
4405
f3b1572e
PA
4406/* Called when a command is about to proceed the inferior. */
4407
4408static void
4409breakpoint_about_to_proceed (void)
4410{
d7e15655 4411 if (inferior_ptid != null_ptid)
f3b1572e
PA
4412 {
4413 struct thread_info *tp = inferior_thread ();
4414
4415 /* Allow inferior function calls in breakpoint commands to not
4416 interrupt the command list. When the call finishes
4417 successfully, the inferior will be standing at the same
4418 breakpoint as if nothing happened. */
16c381f0 4419 if (tp->control.in_infcall)
f3b1572e
PA
4420 return;
4421 }
4422
4423 breakpoint_proceeded = 1;
4424}
4425
abf85f46
JK
4426/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4427 or its equivalent. */
4428
4429static int
4430command_line_is_silent (struct command_line *cmd)
4431{
4f45d445 4432 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4433}
4434
4a64f543
MS
4435/* Execute all the commands associated with all the breakpoints at
4436 this location. Any of these commands could cause the process to
4437 proceed beyond this point, etc. We look out for such changes by
4438 checking the global "breakpoint_proceeded" after each command.
c906108c 4439
347bddb7
PA
4440 Returns true if a breakpoint command resumed the inferior. In that
4441 case, it is the caller's responsibility to recall it again with the
4442 bpstat of the current thread. */
4443
4444static int
4445bpstat_do_actions_1 (bpstat *bsp)
c906108c
SS
4446{
4447 bpstat bs;
347bddb7 4448 int again = 0;
c906108c
SS
4449
4450 /* Avoid endless recursion if a `source' command is contained
4451 in bs->commands. */
4452 if (executing_breakpoint_commands)
347bddb7 4453 return 0;
c906108c 4454
81b1e71c
TT
4455 scoped_restore save_executing
4456 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4457
1ac32117 4458 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4459
4a64f543 4460 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4461 bs = *bsp;
4462
4463 breakpoint_proceeded = 0;
4464 for (; bs != NULL; bs = bs->next)
4465 {
d1b0a7bf 4466 struct command_line *cmd = NULL;
6c50ab1c
JB
4467
4468 /* Take ownership of the BSP's command tree, if it has one.
4469
dda83cd7
SM
4470 The command tree could legitimately contain commands like
4471 'step' and 'next', which call clear_proceed_status, which
4472 frees stop_bpstat's command tree. To make sure this doesn't
4473 free the tree we're executing out from under us, we need to
4474 take ownership of the tree ourselves. Since a given bpstat's
4475 commands are only executed once, we don't need to copy it; we
4476 can clear the pointer in the bpstat, and make sure we free
4477 the tree when we're done. */
d1b0a7bf 4478 counted_command_line ccmd = bs->commands;
9add0f1b 4479 bs->commands = NULL;
d1b0a7bf
TT
4480 if (ccmd != NULL)
4481 cmd = ccmd.get ();
abf85f46
JK
4482 if (command_line_is_silent (cmd))
4483 {
4484 /* The action has been already done by bpstat_stop_status. */
4485 cmd = cmd->next;
4486 }
6c50ab1c 4487
c906108c
SS
4488 while (cmd != NULL)
4489 {
4490 execute_control_command (cmd);
4491
4492 if (breakpoint_proceeded)
4493 break;
4494 else
4495 cmd = cmd->next;
4496 }
6c50ab1c 4497
c906108c 4498 if (breakpoint_proceeded)
32c1e744 4499 {
cb814510 4500 if (current_ui->async)
347bddb7
PA
4501 /* If we are in async mode, then the target might be still
4502 running, not stopped at any breakpoint, so nothing for
4503 us to do here -- just return to the event loop. */
4504 ;
32c1e744
VP
4505 else
4506 /* In sync mode, when execute_control_command returns
4507 we're already standing on the next breakpoint.
347bddb7
PA
4508 Breakpoint commands for that stop were not run, since
4509 execute_command does not run breakpoint commands --
4510 only command_line_handler does, but that one is not
4511 involved in execution of breakpoint commands. So, we
4512 can now execute breakpoint commands. It should be
4513 noted that making execute_command do bpstat actions is
4514 not an option -- in this case we'll have recursive
4515 invocation of bpstat for each breakpoint with a
4516 command, and can easily blow up GDB stack. Instead, we
4517 return true, which will trigger the caller to recall us
4518 with the new stop_bpstat. */
4519 again = 1;
4520 break;
32c1e744 4521 }
c906108c 4522 }
347bddb7
PA
4523 return again;
4524}
4525
00431a78
PA
4526/* Helper for bpstat_do_actions. Get the current thread, if there's
4527 one, is alive and has execution. Return NULL otherwise. */
4528
4529static thread_info *
4530get_bpstat_thread ()
4531{
55f6301a 4532 if (inferior_ptid == null_ptid || !target_has_execution ())
00431a78
PA
4533 return NULL;
4534
4535 thread_info *tp = inferior_thread ();
4536 if (tp->state == THREAD_EXITED || tp->executing)
4537 return NULL;
4538 return tp;
4539}
4540
347bddb7
PA
4541void
4542bpstat_do_actions (void)
4543{
694c6bf5 4544 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
00431a78 4545 thread_info *tp;
353d1d73 4546
347bddb7 4547 /* Do any commands attached to breakpoint we are stopped at. */
00431a78
PA
4548 while ((tp = get_bpstat_thread ()) != NULL)
4549 {
4550 /* Since in sync mode, bpstat_do_actions may resume the
4551 inferior, and only return when it is stopped at the next
4552 breakpoint, we keep doing breakpoint actions until it returns
4553 false to indicate the inferior was not resumed. */
4554 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4555 break;
4556 }
353d1d73 4557
694c6bf5 4558 cleanup_if_error.release ();
c906108c
SS
4559}
4560
fa4727a6
DJ
4561/* Print out the (old or new) value associated with a watchpoint. */
4562
4563static void
4564watchpoint_value_print (struct value *val, struct ui_file *stream)
4565{
4566 if (val == NULL)
7f6aba03 4567 fprintf_styled (stream, metadata_style.style (), _("<unreadable>"));
fa4727a6 4568 else
79a45b7d
TT
4569 {
4570 struct value_print_options opts;
4571 get_user_print_options (&opts);
4572 value_print (val, stream, &opts);
4573 }
fa4727a6
DJ
4574}
4575
f303dbd6
PA
4576/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4577 debugging multiple threads. */
4578
4579void
4580maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4581{
112e8700 4582 if (uiout->is_mi_like_p ())
f303dbd6
PA
4583 return;
4584
112e8700 4585 uiout->text ("\n");
f303dbd6
PA
4586
4587 if (show_thread_that_caused_stop ())
4588 {
4589 const char *name;
4590 struct thread_info *thr = inferior_thread ();
4591
112e8700 4592 uiout->text ("Thread ");
33eca680 4593 uiout->field_string ("thread-id", print_thread_id (thr));
f303dbd6
PA
4594
4595 name = thr->name != NULL ? thr->name : target_thread_name (thr);
4596 if (name != NULL)
4597 {
112e8700 4598 uiout->text (" \"");
33eca680 4599 uiout->field_string ("name", name);
112e8700 4600 uiout->text ("\"");
f303dbd6
PA
4601 }
4602
112e8700 4603 uiout->text (" hit ");
f303dbd6
PA
4604 }
4605}
4606
e514a9d6 4607/* Generic routine for printing messages indicating why we
4a64f543 4608 stopped. The behavior of this function depends on the value
e514a9d6
JM
4609 'print_it' in the bpstat structure. Under some circumstances we
4610 may decide not to print anything here and delegate the task to
4a64f543 4611 normal_stop(). */
e514a9d6
JM
4612
4613static enum print_stop_action
4614print_bp_stop_message (bpstat bs)
4615{
4616 switch (bs->print_it)
4617 {
4618 case print_it_noop:
4a64f543 4619 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4620 return PRINT_UNKNOWN;
4621 break;
4622
4623 case print_it_done:
4624 /* We still want to print the frame, but we already printed the
dda83cd7 4625 relevant messages. */
e514a9d6
JM
4626 return PRINT_SRC_AND_LOC;
4627 break;
4628
4629 case print_it_normal:
4f8d1dc6 4630 {
f431efe5
PA
4631 struct breakpoint *b = bs->breakpoint_at;
4632
1a6a67de
TJB
4633 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4634 which has since been deleted. */
4635 if (b == NULL)
4636 return PRINT_UNKNOWN;
4637
348d480f
PA
4638 /* Normal case. Call the breakpoint's print_it method. */
4639 return b->ops->print_it (bs);
4f8d1dc6 4640 }
348d480f 4641 break;
3086aeae 4642
e514a9d6 4643 default:
8e65ff28 4644 internal_error (__FILE__, __LINE__,
e2e0b3e5 4645 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4646 break;
c906108c 4647 }
c906108c
SS
4648}
4649
edcc5120
TT
4650/* A helper function that prints a shared library stopped event. */
4651
4652static void
4653print_solib_event (int is_catchpoint)
4654{
6fb16ce6 4655 bool any_deleted = !current_program_space->deleted_solibs.empty ();
bcb430e4 4656 bool any_added = !current_program_space->added_solibs.empty ();
edcc5120
TT
4657
4658 if (!is_catchpoint)
4659 {
4660 if (any_added || any_deleted)
112e8700 4661 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4662 else
112e8700
SM
4663 current_uiout->text (_("Stopped due to shared library event (no "
4664 "libraries added or removed)\n"));
edcc5120
TT
4665 }
4666
112e8700
SM
4667 if (current_uiout->is_mi_like_p ())
4668 current_uiout->field_string ("reason",
4669 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4670
4671 if (any_deleted)
4672 {
112e8700 4673 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4674 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4675 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4676 {
6fb16ce6
SM
4677 const std::string &name = current_program_space->deleted_solibs[ix];
4678
edcc5120 4679 if (ix > 0)
112e8700
SM
4680 current_uiout->text (" ");
4681 current_uiout->field_string ("library", name);
4682 current_uiout->text ("\n");
edcc5120 4683 }
edcc5120
TT
4684 }
4685
4686 if (any_added)
4687 {
112e8700 4688 current_uiout->text (_(" Inferior loaded "));
10f489e5 4689 ui_out_emit_list list_emitter (current_uiout, "added");
bcb430e4 4690 bool first = true;
52941706 4691 for (so_list *iter : current_program_space->added_solibs)
edcc5120 4692 {
bcb430e4 4693 if (!first)
112e8700 4694 current_uiout->text (" ");
bcb430e4 4695 first = false;
112e8700
SM
4696 current_uiout->field_string ("library", iter->so_name);
4697 current_uiout->text ("\n");
edcc5120 4698 }
edcc5120
TT
4699 }
4700}
4701
e514a9d6
JM
4702/* Print a message indicating what happened. This is called from
4703 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4704 list - a list of the eventpoints that caused this stop. KIND is
4705 the target_waitkind for the stopping event. This
e514a9d6
JM
4706 routine calls the generic print routine for printing a message
4707 about reasons for stopping. This will print (for example) the
4708 "Breakpoint n," part of the output. The return value of this
4709 routine is one of:
c906108c 4710
4a64f543 4711 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4712 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4713 code to print the location. An example is
c5aa993b
JM
4714 "Breakpoint 1, " which should be followed by
4715 the location.
917317f4 4716 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4717 to also print the location part of the message.
4718 An example is the catch/throw messages, which
4a64f543 4719 don't require a location appended to the end.
917317f4 4720 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4721 further info to be printed. */
c906108c 4722
917317f4 4723enum print_stop_action
36dfb11c 4724bpstat_print (bpstat bs, int kind)
c906108c 4725{
f486487f 4726 enum print_stop_action val;
c5aa993b 4727
c906108c 4728 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4729 (Currently all watchpoints go on the bpstat whether hit or not.
4730 That probably could (should) be changed, provided care is taken
c906108c 4731 with respect to bpstat_explains_signal). */
e514a9d6
JM
4732 for (; bs; bs = bs->next)
4733 {
4734 val = print_bp_stop_message (bs);
4735 if (val == PRINT_SRC_ONLY
4736 || val == PRINT_SRC_AND_LOC
4737 || val == PRINT_NOTHING)
4738 return val;
4739 }
c906108c 4740
36dfb11c
TT
4741 /* If we had hit a shared library event breakpoint,
4742 print_bp_stop_message would print out this message. If we hit an
4743 OS-level shared library event, do the same thing. */
4744 if (kind == TARGET_WAITKIND_LOADED)
4745 {
edcc5120 4746 print_solib_event (0);
36dfb11c
TT
4747 return PRINT_NOTHING;
4748 }
4749
e514a9d6 4750 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4751 with and nothing was printed. */
917317f4 4752 return PRINT_UNKNOWN;
c906108c
SS
4753}
4754
bf469271 4755/* Evaluate the boolean expression EXP and return the result. */
c906108c 4756
bf469271
PA
4757static bool
4758breakpoint_cond_eval (expression *exp)
c906108c 4759{
278cd55f 4760 struct value *mark = value_mark ();
bf469271 4761 bool res = value_true (evaluate_expression (exp));
cc59ec59 4762
c906108c 4763 value_free_to_mark (mark);
bf469271 4764 return res;
c906108c
SS
4765}
4766
5760d0ab 4767/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4768
04afa70c
TT
4769bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4770 : next (NULL),
4771 bp_location_at (bl),
4772 breakpoint_at (bl->owner),
4773 commands (NULL),
04afa70c
TT
4774 print (0),
4775 stop (0),
4776 print_it (print_it_normal)
c906108c 4777{
f431efe5 4778 incref_bp_location (bl);
04afa70c
TT
4779 **bs_link_pointer = this;
4780 *bs_link_pointer = &next;
4781}
4782
4783bpstats::bpstats ()
4784 : next (NULL),
4785 bp_location_at (NULL),
4786 breakpoint_at (NULL),
4787 commands (NULL),
04afa70c
TT
4788 print (0),
4789 stop (0),
4790 print_it (print_it_normal)
4791{
c906108c
SS
4792}
4793\f
d983da9c
DJ
4794/* The target has stopped with waitstatus WS. Check if any hardware
4795 watchpoints have triggered, according to the target. */
4796
4797int
4798watchpoints_triggered (struct target_waitstatus *ws)
4799{
57810aa7 4800 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c
DJ
4801 CORE_ADDR addr;
4802 struct breakpoint *b;
4803
4804 if (!stopped_by_watchpoint)
4805 {
4806 /* We were not stopped by a watchpoint. Mark all watchpoints
4807 as not triggered. */
4808 ALL_BREAKPOINTS (b)
cc60f2e3 4809 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4810 {
4811 struct watchpoint *w = (struct watchpoint *) b;
4812
4813 w->watchpoint_triggered = watch_triggered_no;
4814 }
d983da9c
DJ
4815
4816 return 0;
4817 }
4818
8b88a78e 4819 if (!target_stopped_data_address (current_top_target (), &addr))
d983da9c
DJ
4820 {
4821 /* We were stopped by a watchpoint, but we don't know where.
4822 Mark all watchpoints as unknown. */
4823 ALL_BREAKPOINTS (b)
cc60f2e3 4824 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4825 {
4826 struct watchpoint *w = (struct watchpoint *) b;
4827
4828 w->watchpoint_triggered = watch_triggered_unknown;
4829 }
d983da9c 4830
3c4797ba 4831 return 1;
d983da9c
DJ
4832 }
4833
4834 /* The target could report the data address. Mark watchpoints
4835 affected by this data address as triggered, and all others as not
4836 triggered. */
4837
4838 ALL_BREAKPOINTS (b)
cc60f2e3 4839 if (is_hardware_watchpoint (b))
d983da9c 4840 {
3a5c3e22 4841 struct watchpoint *w = (struct watchpoint *) b;
a5606eee 4842 struct bp_location *loc;
d983da9c 4843
3a5c3e22 4844 w->watchpoint_triggered = watch_triggered_no;
a5606eee 4845 for (loc = b->loc; loc; loc = loc->next)
9c06b0b4 4846 {
3a5c3e22 4847 if (is_masked_watchpoint (b))
9c06b0b4 4848 {
3a5c3e22
PA
4849 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4850 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4851
4852 if (newaddr == start)
4853 {
3a5c3e22 4854 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4855 break;
4856 }
4857 }
4858 /* Exact match not required. Within range is sufficient. */
8b88a78e 4859 else if (target_watchpoint_addr_within_range (current_top_target (),
9c06b0b4
TJB
4860 addr, loc->address,
4861 loc->length))
4862 {
3a5c3e22 4863 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4864 break;
4865 }
4866 }
d983da9c
DJ
4867 }
4868
4869 return 1;
4870}
4871
bf469271
PA
4872/* Possible return values for watchpoint_check. */
4873enum wp_check_result
4874 {
4875 /* The watchpoint has been deleted. */
4876 WP_DELETED = 1,
4877
4878 /* The value has changed. */
4879 WP_VALUE_CHANGED = 2,
4880
4881 /* The value has not changed. */
4882 WP_VALUE_NOT_CHANGED = 3,
4883
4884 /* Ignore this watchpoint, no matter if the value changed or not. */
4885 WP_IGNORE = 4,
4886 };
c906108c
SS
4887
4888#define BP_TEMPFLAG 1
4889#define BP_HARDWAREFLAG 2
4890
4a64f543 4891/* Evaluate watchpoint condition expression and check if its value
bf469271 4892 changed. */
553e4c11 4893
bf469271
PA
4894static wp_check_result
4895watchpoint_check (bpstat bs)
c906108c 4896{
3a5c3e22 4897 struct watchpoint *b;
c906108c
SS
4898 struct frame_info *fr;
4899 int within_current_scope;
4900
f431efe5 4901 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4902 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4903 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4904
f6bc2008
PA
4905 /* If this is a local watchpoint, we only want to check if the
4906 watchpoint frame is in scope if the current thread is the thread
4907 that was used to create the watchpoint. */
4908 if (!watchpoint_in_thread_scope (b))
60e1c644 4909 return WP_IGNORE;
f6bc2008 4910
c906108c
SS
4911 if (b->exp_valid_block == NULL)
4912 within_current_scope = 1;
4913 else
4914 {
edb3359d
DJ
4915 struct frame_info *frame = get_current_frame ();
4916 struct gdbarch *frame_arch = get_frame_arch (frame);
4917 CORE_ADDR frame_pc = get_frame_pc (frame);
4918
c9cf6e20 4919 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4920 still in the function but the stack frame has already been
4921 invalidated. Since we can't rely on the values of local
4922 variables after the stack has been destroyed, we are treating
4923 the watchpoint in that state as `not changed' without further
4924 checking. Don't mark watchpoints as changed if the current
4925 frame is in an epilogue - even if they are in some other
4926 frame, our view of the stack is likely to be wrong and
4927 frame_find_by_id could error out. */
c9cf6e20 4928 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4929 return WP_IGNORE;
a0f49112 4930
101dcfbe 4931 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4932 within_current_scope = (fr != NULL);
69fbadd5
DJ
4933
4934 /* If we've gotten confused in the unwinder, we might have
4935 returned a frame that can't describe this variable. */
edb3359d
DJ
4936 if (within_current_scope)
4937 {
4938 struct symbol *function;
4939
4940 function = get_frame_function (fr);
4941 if (function == NULL
4942 || !contained_in (b->exp_valid_block,
4943 SYMBOL_BLOCK_VALUE (function)))
4944 within_current_scope = 0;
4945 }
69fbadd5 4946
edb3359d 4947 if (within_current_scope)
c906108c
SS
4948 /* If we end up stopping, the current frame will get selected
4949 in normal_stop. So this call to select_frame won't affect
4950 the user. */
0f7d239c 4951 select_frame (fr);
c906108c 4952 }
c5aa993b 4953
c906108c
SS
4954 if (within_current_scope)
4955 {
4a64f543 4956 /* We use value_{,free_to_}mark because it could be a *long*
dda83cd7
SM
4957 time before we return to the command level and call
4958 free_all_values. We can't call free_all_values because we
4959 might be in the middle of evaluating a function call. */
c906108c 4960
0cf6dd15 4961 int pc = 0;
9c06b0b4 4962 struct value *mark;
fa4727a6
DJ
4963 struct value *new_val;
4964
c1fc2657 4965 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4966 /* Since we don't know the exact trigger address (from
4967 stopped_data_address), just tell the user we've triggered
4968 a mask watchpoint. */
4969 return WP_VALUE_CHANGED;
4970
4971 mark = value_mark ();
2e362716 4972 fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, false);
218d2fc6 4973
bb9d5f81
PP
4974 if (b->val_bitsize != 0)
4975 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4976
4a64f543
MS
4977 /* We use value_equal_contents instead of value_equal because
4978 the latter coerces an array to a pointer, thus comparing just
4979 the address of the array instead of its contents. This is
4980 not what we want. */
fa4727a6 4981 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4982 || (b->val != NULL && !value_equal_contents (b->val.get (),
4983 new_val)))
c906108c 4984 {
c906108c 4985 bs->old_val = b->val;
850645cf 4986 b->val = release_value (new_val);
4c1d86d9 4987 b->val_valid = true;
850645cf
TT
4988 if (new_val != NULL)
4989 value_free_to_mark (mark);
c906108c
SS
4990 return WP_VALUE_CHANGED;
4991 }
4992 else
4993 {
60e1c644 4994 /* Nothing changed. */
c906108c 4995 value_free_to_mark (mark);
c906108c
SS
4996 return WP_VALUE_NOT_CHANGED;
4997 }
4998 }
4999 else
5000 {
5001 /* This seems like the only logical thing to do because
dda83cd7
SM
5002 if we temporarily ignored the watchpoint, then when
5003 we reenter the block in which it is valid it contains
5004 garbage (in the case of a function, it may have two
5005 garbage values, one before and one after the prologue).
5006 So we can't even detect the first assignment to it and
5007 watch after that (since the garbage may or may not equal
5008 the first value assigned). */
348d480f
PA
5009 /* We print all the stop information in
5010 breakpoint_ops->print_it, but in this case, by the time we
5011 call breakpoint_ops->print_it this bp will be deleted
5012 already. So we have no choice but print the information
5013 here. */
468afe6c 5014
0e454242 5015 SWITCH_THRU_ALL_UIS ()
dda83cd7 5016 {
468afe6c
PA
5017 struct ui_out *uiout = current_uiout;
5018
112e8700
SM
5019 if (uiout->is_mi_like_p ())
5020 uiout->field_string
5021 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
6a831f06
PA
5022 uiout->message ("\nWatchpoint %pF deleted because the program has "
5023 "left the block in\n"
5024 "which its expression is valid.\n",
5025 signed_field ("wpnum", b->number));
468afe6c 5026 }
4ce44c66 5027
cdac0397 5028 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 5029 b->commands = NULL;
d0fb5eae 5030 watchpoint_del_at_next_stop (b);
c906108c
SS
5031
5032 return WP_DELETED;
5033 }
5034}
5035
18a18393 5036/* Return true if it looks like target has stopped due to hitting
348d480f
PA
5037 breakpoint location BL. This function does not check if we should
5038 stop, only if BL explains the stop. */
5039
18a18393 5040static int
6c95b8df 5041bpstat_check_location (const struct bp_location *bl,
accd0bcd 5042 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5043 const struct target_waitstatus *ws)
18a18393
VP
5044{
5045 struct breakpoint *b = bl->owner;
5046
348d480f 5047 /* BL is from an existing breakpoint. */
2bdf28a0
JK
5048 gdb_assert (b != NULL);
5049
bd522513 5050 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
5051}
5052
3a5c3e22
PA
5053/* Determine if the watched values have actually changed, and we
5054 should stop. If not, set BS->stop to 0. */
5055
18a18393
VP
5056static void
5057bpstat_check_watchpoint (bpstat bs)
5058{
2bdf28a0 5059 const struct bp_location *bl;
3a5c3e22 5060 struct watchpoint *b;
2bdf28a0
JK
5061
5062 /* BS is built for existing struct breakpoint. */
f431efe5 5063 bl = bs->bp_location_at;
2bdf28a0 5064 gdb_assert (bl != NULL);
3a5c3e22 5065 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5066 gdb_assert (b != NULL);
18a18393 5067
18a18393 5068 {
18a18393
VP
5069 int must_check_value = 0;
5070
c1fc2657 5071 if (b->type == bp_watchpoint)
18a18393
VP
5072 /* For a software watchpoint, we must always check the
5073 watched value. */
5074 must_check_value = 1;
5075 else if (b->watchpoint_triggered == watch_triggered_yes)
5076 /* We have a hardware watchpoint (read, write, or access)
5077 and the target earlier reported an address watched by
5078 this watchpoint. */
5079 must_check_value = 1;
5080 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5081 && b->type == bp_hardware_watchpoint)
18a18393
VP
5082 /* We were stopped by a hardware watchpoint, but the target could
5083 not report the data address. We must check the watchpoint's
5084 value. Access and read watchpoints are out of luck; without
5085 a data address, we can't figure it out. */
5086 must_check_value = 1;
3a5c3e22 5087
18a18393
VP
5088 if (must_check_value)
5089 {
bf469271
PA
5090 wp_check_result e;
5091
a70b8144 5092 try
bf469271
PA
5093 {
5094 e = watchpoint_check (bs);
5095 }
230d2906 5096 catch (const gdb_exception &ex)
bf469271
PA
5097 {
5098 exception_fprintf (gdb_stderr, ex,
5099 "Error evaluating expression "
5100 "for watchpoint %d\n",
5101 b->number);
5102
5103 SWITCH_THRU_ALL_UIS ()
5104 {
5105 printf_filtered (_("Watchpoint %d deleted.\n"),
5106 b->number);
5107 }
5108 watchpoint_del_at_next_stop (b);
5109 e = WP_DELETED;
5110 }
bf469271 5111
18a18393
VP
5112 switch (e)
5113 {
5114 case WP_DELETED:
5115 /* We've already printed what needs to be printed. */
5116 bs->print_it = print_it_done;
5117 /* Stop. */
5118 break;
60e1c644
PA
5119 case WP_IGNORE:
5120 bs->print_it = print_it_noop;
5121 bs->stop = 0;
5122 break;
18a18393 5123 case WP_VALUE_CHANGED:
c1fc2657 5124 if (b->type == bp_read_watchpoint)
18a18393 5125 {
85d721b8
PA
5126 /* There are two cases to consider here:
5127
4a64f543 5128 1. We're watching the triggered memory for reads.
85d721b8
PA
5129 In that case, trust the target, and always report
5130 the watchpoint hit to the user. Even though
5131 reads don't cause value changes, the value may
5132 have changed since the last time it was read, and
5133 since we're not trapping writes, we will not see
5134 those, and as such we should ignore our notion of
5135 old value.
5136
4a64f543 5137 2. We're watching the triggered memory for both
85d721b8
PA
5138 reads and writes. There are two ways this may
5139 happen:
5140
4a64f543 5141 2.1. This is a target that can't break on data
85d721b8
PA
5142 reads only, but can break on accesses (reads or
5143 writes), such as e.g., x86. We detect this case
5144 at the time we try to insert read watchpoints.
5145
4a64f543 5146 2.2. Otherwise, the target supports read
85d721b8
PA
5147 watchpoints, but, the user set an access or write
5148 watchpoint watching the same memory as this read
5149 watchpoint.
5150
5151 If we're watching memory writes as well as reads,
5152 ignore watchpoint hits when we find that the
5153 value hasn't changed, as reads don't cause
5154 changes. This still gives false positives when
5155 the program writes the same value to memory as
5156 what there was already in memory (we will confuse
5157 it for a read), but it's much better than
5158 nothing. */
5159
5160 int other_write_watchpoint = 0;
5161
5162 if (bl->watchpoint_type == hw_read)
5163 {
5164 struct breakpoint *other_b;
5165
5166 ALL_BREAKPOINTS (other_b)
3a5c3e22
PA
5167 if (other_b->type == bp_hardware_watchpoint
5168 || other_b->type == bp_access_watchpoint)
85d721b8 5169 {
3a5c3e22
PA
5170 struct watchpoint *other_w =
5171 (struct watchpoint *) other_b;
5172
5173 if (other_w->watchpoint_triggered
5174 == watch_triggered_yes)
5175 {
5176 other_write_watchpoint = 1;
5177 break;
5178 }
85d721b8
PA
5179 }
5180 }
5181
5182 if (other_write_watchpoint
5183 || bl->watchpoint_type == hw_access)
5184 {
5185 /* We're watching the same memory for writes,
5186 and the value changed since the last time we
5187 updated it, so this trap must be for a write.
5188 Ignore it. */
5189 bs->print_it = print_it_noop;
5190 bs->stop = 0;
5191 }
18a18393
VP
5192 }
5193 break;
5194 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5195 if (b->type == bp_hardware_watchpoint
5196 || b->type == bp_watchpoint)
18a18393
VP
5197 {
5198 /* Don't stop: write watchpoints shouldn't fire if
5199 the value hasn't changed. */
5200 bs->print_it = print_it_noop;
5201 bs->stop = 0;
5202 }
5203 /* Stop. */
5204 break;
5205 default:
5206 /* Can't happen. */
18a18393
VP
5207 break;
5208 }
5209 }
5210 else /* must_check_value == 0 */
5211 {
5212 /* This is a case where some watchpoint(s) triggered, but
5213 not at the address of this watchpoint, or else no
5214 watchpoint triggered after all. So don't print
5215 anything for this watchpoint. */
5216 bs->print_it = print_it_noop;
5217 bs->stop = 0;
5218 }
5219 }
5220}
5221
7d4df6a4
DE
5222/* For breakpoints that are currently marked as telling gdb to stop,
5223 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5224 of breakpoint referred to by BS. If we should not stop for this
5225 breakpoint, set BS->stop to 0. */
f431efe5 5226
18a18393 5227static void
00431a78 5228bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
18a18393 5229{
2bdf28a0
JK
5230 const struct bp_location *bl;
5231 struct breakpoint *b;
bf469271
PA
5232 /* Assume stop. */
5233 bool condition_result = true;
7d4df6a4
DE
5234 struct expression *cond;
5235
5236 gdb_assert (bs->stop);
2bdf28a0
JK
5237
5238 /* BS is built for existing struct breakpoint. */
f431efe5 5239 bl = bs->bp_location_at;
2bdf28a0 5240 gdb_assert (bl != NULL);
f431efe5 5241 b = bs->breakpoint_at;
2bdf28a0 5242 gdb_assert (b != NULL);
18a18393 5243
b775012e
LM
5244 /* Even if the target evaluated the condition on its end and notified GDB, we
5245 need to do so again since GDB does not know if we stopped due to a
5246 breakpoint or a single step breakpoint. */
5247
18a18393 5248 if (frame_id_p (b->frame_id)
edb3359d 5249 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5250 {
7d4df6a4
DE
5251 bs->stop = 0;
5252 return;
5253 }
60e1c644 5254
12ab52e9
PA
5255 /* If this is a thread/task-specific breakpoint, don't waste cpu
5256 evaluating the condition if this isn't the specified
5257 thread/task. */
00431a78
PA
5258 if ((b->thread != -1 && b->thread != thread->global_num)
5259 || (b->task != 0 && b->task != ada_get_task_number (thread)))
6c1b0f7b
DE
5260 {
5261 bs->stop = 0;
5262 return;
5263 }
5264
6dddc817
DE
5265 /* Evaluate extension language breakpoints that have a "stop" method
5266 implemented. */
5267 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5268
7d4df6a4
DE
5269 if (is_watchpoint (b))
5270 {
5271 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5272
4d01a485 5273 cond = w->cond_exp.get ();
7d4df6a4
DE
5274 }
5275 else
4d01a485 5276 cond = bl->cond.get ();
60e1c644 5277
7d4df6a4
DE
5278 if (cond && b->disposition != disp_del_at_next_stop)
5279 {
5280 int within_current_scope = 1;
5281 struct watchpoint * w;
60e1c644 5282
7d4df6a4
DE
5283 /* We use value_mark and value_free_to_mark because it could
5284 be a long time before we return to the command level and
5285 call free_all_values. We can't call free_all_values
5286 because we might be in the middle of evaluating a
5287 function call. */
5288 struct value *mark = value_mark ();
5289
5290 if (is_watchpoint (b))
5291 w = (struct watchpoint *) b;
5292 else
5293 w = NULL;
5294
5295 /* Need to select the frame, with all that implies so that
5296 the conditions will have the right context. Because we
5297 use the frame, we will not see an inlined function's
5298 variables when we arrive at a breakpoint at the start
5299 of the inlined function; the current frame will be the
5300 call site. */
5301 if (w == NULL || w->cond_exp_valid_block == NULL)
5302 select_frame (get_current_frame ());
5303 else
18a18393 5304 {
7d4df6a4
DE
5305 struct frame_info *frame;
5306
5307 /* For local watchpoint expressions, which particular
5308 instance of a local is being watched matters, so we
5309 keep track of the frame to evaluate the expression
5310 in. To evaluate the condition however, it doesn't
5311 really matter which instantiation of the function
5312 where the condition makes sense triggers the
5313 watchpoint. This allows an expression like "watch
5314 global if q > 10" set in `func', catch writes to
5315 global on all threads that call `func', or catch
5316 writes on all recursive calls of `func' by a single
5317 thread. We simply always evaluate the condition in
5318 the innermost frame that's executing where it makes
5319 sense to evaluate the condition. It seems
5320 intuitive. */
5321 frame = block_innermost_frame (w->cond_exp_valid_block);
5322 if (frame != NULL)
5323 select_frame (frame);
5324 else
5325 within_current_scope = 0;
18a18393 5326 }
7d4df6a4 5327 if (within_current_scope)
bf469271 5328 {
a70b8144 5329 try
bf469271
PA
5330 {
5331 condition_result = breakpoint_cond_eval (cond);
5332 }
230d2906 5333 catch (const gdb_exception &ex)
bf469271
PA
5334 {
5335 exception_fprintf (gdb_stderr, ex,
5336 "Error in testing breakpoint condition:\n");
5337 }
bf469271 5338 }
7d4df6a4 5339 else
18a18393 5340 {
7d4df6a4
DE
5341 warning (_("Watchpoint condition cannot be tested "
5342 "in the current scope"));
5343 /* If we failed to set the right context for this
5344 watchpoint, unconditionally report it. */
18a18393 5345 }
7d4df6a4
DE
5346 /* FIXME-someday, should give breakpoint #. */
5347 value_free_to_mark (mark);
18a18393 5348 }
7d4df6a4 5349
bf469271 5350 if (cond && !condition_result)
7d4df6a4
DE
5351 {
5352 bs->stop = 0;
5353 }
7d4df6a4
DE
5354 else if (b->ignore_count > 0)
5355 {
5356 b->ignore_count--;
5357 bs->stop = 0;
5358 /* Increase the hit count even though we don't stop. */
5359 ++(b->hit_count);
76727919 5360 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5361 }
18a18393
VP
5362}
5363
1cf4d951
PA
5364/* Returns true if we need to track moribund locations of LOC's type
5365 on the current target. */
5366
5367static int
5368need_moribund_for_location_type (struct bp_location *loc)
5369{
5370 return ((loc->loc_type == bp_loc_software_breakpoint
5371 && !target_supports_stopped_by_sw_breakpoint ())
5372 || (loc->loc_type == bp_loc_hardware_breakpoint
5373 && !target_supports_stopped_by_hw_breakpoint ()));
5374}
5375
ddfe970e 5376/* See breakpoint.h. */
c906108c
SS
5377
5378bpstat
ddfe970e 5379build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 5380 const struct target_waitstatus *ws)
c906108c 5381{
ddfe970e 5382 struct breakpoint *b;
5760d0ab 5383 bpstat bs_head = NULL, *bs_link = &bs_head;
c5aa993b 5384
429374b8
JK
5385 ALL_BREAKPOINTS (b)
5386 {
1a853c52 5387 if (!breakpoint_enabled (b))
429374b8 5388 continue;
a5606eee 5389
ddfe970e 5390 for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
429374b8 5391 {
4a64f543
MS
5392 /* For hardware watchpoints, we look only at the first
5393 location. The watchpoint_check function will work on the
5394 entire expression, not the individual locations. For
5395 read watchpoints, the watchpoints_triggered function has
5396 checked all locations already. */
429374b8
JK
5397 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5398 break;
18a18393 5399
b5fa468f 5400 if (!bl->enabled || bl->disabled_by_cond || bl->shlib_disabled)
429374b8 5401 continue;
c5aa993b 5402
09ac7c10 5403 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5404 continue;
c5aa993b 5405
4a64f543
MS
5406 /* Come here if it's a watchpoint, or if the break address
5407 matches. */
c5aa993b 5408
ddfe970e
KS
5409 bpstat bs = new bpstats (bl, &bs_link); /* Alloc a bpstat to
5410 explain stop. */
c5aa993b 5411
f431efe5
PA
5412 /* Assume we stop. Should we find a watchpoint that is not
5413 actually triggered, or if the condition of the breakpoint
5414 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5415 bs->stop = 1;
5416 bs->print = 1;
d983da9c 5417
f431efe5
PA
5418 /* If this is a scope breakpoint, mark the associated
5419 watchpoint as triggered so that we will handle the
5420 out-of-scope event. We'll get to the watchpoint next
5421 iteration. */
d0fb5eae 5422 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5423 {
5424 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5425
5426 w->watchpoint_triggered = watch_triggered_yes;
5427 }
f431efe5
PA
5428 }
5429 }
5430
7c16b83e 5431 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5432 if (!target_supports_stopped_by_sw_breakpoint ()
5433 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5434 {
1123588c 5435 for (bp_location *loc : moribund_locations)
f431efe5 5436 {
1cf4d951
PA
5437 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5438 && need_moribund_for_location_type (loc))
5439 {
ddfe970e 5440 bpstat bs = new bpstats (loc, &bs_link);
1cf4d951
PA
5441 /* For hits of moribund locations, we should just proceed. */
5442 bs->stop = 0;
5443 bs->print = 0;
5444 bs->print_it = print_it_noop;
5445 }
f431efe5
PA
5446 }
5447 }
5448
ddfe970e
KS
5449 return bs_head;
5450}
5451
5452/* See breakpoint.h. */
5453
5454bpstat
5455bpstat_stop_status (const address_space *aspace,
00431a78 5456 CORE_ADDR bp_addr, thread_info *thread,
ddfe970e
KS
5457 const struct target_waitstatus *ws,
5458 bpstat stop_chain)
5459{
5460 struct breakpoint *b = NULL;
5461 /* First item of allocated bpstat's. */
5462 bpstat bs_head = stop_chain;
5463 bpstat bs;
5464 int need_remove_insert;
5465 int removed_any;
5466
5467 /* First, build the bpstat chain with locations that explain a
5468 target stop, while being careful to not set the target running,
5469 as that may invalidate locations (in particular watchpoint
5470 locations are recreated). Resuming will happen here with
5471 breakpoint conditions or watchpoint expressions that include
5472 inferior function calls. */
5473 if (bs_head == NULL)
5474 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5475
edcc5120
TT
5476 /* A bit of special processing for shlib breakpoints. We need to
5477 process solib loading here, so that the lists of loaded and
5478 unloaded libraries are correct before we handle "catch load" and
5479 "catch unload". */
5480 for (bs = bs_head; bs != NULL; bs = bs->next)
5481 {
5d268276 5482 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5483 {
5484 handle_solib_event ();
5485 break;
5486 }
5487 }
5488
f431efe5
PA
5489 /* Now go through the locations that caused the target to stop, and
5490 check whether we're interested in reporting this stop to higher
5491 layers, or whether we should resume the target transparently. */
5492
5493 removed_any = 0;
5494
5760d0ab 5495 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5496 {
5497 if (!bs->stop)
5498 continue;
5499
f431efe5 5500 b = bs->breakpoint_at;
348d480f
PA
5501 b->ops->check_status (bs);
5502 if (bs->stop)
28010a5d 5503 {
00431a78 5504 bpstat_check_breakpoint_conditions (bs, thread);
f431efe5 5505
429374b8
JK
5506 if (bs->stop)
5507 {
5508 ++(b->hit_count);
76727919 5509 gdb::observers::breakpoint_modified.notify (b);
c906108c 5510
4a64f543 5511 /* We will stop here. */
429374b8
JK
5512 if (b->disposition == disp_disable)
5513 {
816338b5 5514 --(b->enable_count);
1a853c52 5515 if (b->enable_count <= 0)
429374b8 5516 b->enable_state = bp_disabled;
f431efe5 5517 removed_any = 1;
429374b8
JK
5518 }
5519 if (b->silent)
5520 bs->print = 0;
5521 bs->commands = b->commands;
abf85f46 5522 if (command_line_is_silent (bs->commands
d1b0a7bf 5523 ? bs->commands.get () : NULL))
abf85f46 5524 bs->print = 0;
9d6e6e84
HZ
5525
5526 b->ops->after_condition_true (bs);
429374b8
JK
5527 }
5528
348d480f 5529 }
a9b3a50f
PA
5530
5531 /* Print nothing for this entry if we don't stop or don't
5532 print. */
5533 if (!bs->stop || !bs->print)
5534 bs->print_it = print_it_noop;
429374b8 5535 }
876fa593 5536
d983da9c
DJ
5537 /* If we aren't stopping, the value of some hardware watchpoint may
5538 not have changed, but the intermediate memory locations we are
5539 watching may have. Don't bother if we're stopping; this will get
5540 done later. */
d832cb68 5541 need_remove_insert = 0;
5760d0ab
JK
5542 if (! bpstat_causes_stop (bs_head))
5543 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5544 if (!bs->stop
f431efe5
PA
5545 && bs->breakpoint_at
5546 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5547 {
3a5c3e22
PA
5548 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5549
5550 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5551 need_remove_insert = 1;
d983da9c
DJ
5552 }
5553
d832cb68 5554 if (need_remove_insert)
44702360 5555 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5556 else if (removed_any)
44702360 5557 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5558
5760d0ab 5559 return bs_head;
c906108c 5560}
628fe4e4
JK
5561
5562static void
61c26be8 5563handle_jit_event (CORE_ADDR address)
628fe4e4 5564{
628fe4e4
JK
5565 struct gdbarch *gdbarch;
5566
1eb8556f 5567 infrun_debug_printf ("handling bp_jit_event");
243a9253 5568
628fe4e4
JK
5569 /* Switch terminal for any messages produced by
5570 breakpoint_re_set. */
223ffa71 5571 target_terminal::ours_for_output ();
628fe4e4 5572
61c26be8
MS
5573 gdbarch = get_frame_arch (get_current_frame ());
5574 /* This event is caused by a breakpoint set in `jit_breakpoint_re_set`,
5575 thus it is expected that its objectfile can be found through
5576 minimal symbol lookup. If it doesn't work (and assert fails), it
5577 most likely means that `jit_breakpoint_re_set` was changes and this
5578 function needs to be updated too. */
5579 bound_minimal_symbol jit_bp_sym = lookup_minimal_symbol_by_pc (address);
5580 gdb_assert (jit_bp_sym.objfile != nullptr);
5581 jit_event_handler (gdbarch, jit_bp_sym.objfile);
628fe4e4 5582
223ffa71 5583 target_terminal::inferior ();
628fe4e4
JK
5584}
5585
5586/* Prepare WHAT final decision for infrun. */
5587
5588/* Decide what infrun needs to do with this bpstat. */
5589
c906108c 5590struct bpstat_what
0e30163f 5591bpstat_what (bpstat bs_head)
c906108c 5592{
c906108c 5593 struct bpstat_what retval;
0e30163f 5594 bpstat bs;
c906108c 5595
628fe4e4 5596 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5597 retval.call_dummy = STOP_NONE;
e2d0f980 5598 retval.is_longjmp = false;
628fe4e4 5599
0e30163f 5600 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5601 {
628fe4e4
JK
5602 /* Extract this BS's action. After processing each BS, we check
5603 if its action overrides all we've seem so far. */
5604 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5605 enum bptype bptype;
5606
c906108c 5607 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5608 {
5609 /* I suspect this can happen if it was a momentary
5610 breakpoint which has since been deleted. */
5611 bptype = bp_none;
5612 }
20874c92 5613 else
f431efe5 5614 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5615
5616 switch (bptype)
c906108c
SS
5617 {
5618 case bp_none:
628fe4e4 5619 break;
c906108c
SS
5620 case bp_breakpoint:
5621 case bp_hardware_breakpoint:
7c16b83e 5622 case bp_single_step:
c906108c
SS
5623 case bp_until:
5624 case bp_finish:
a9b3a50f 5625 case bp_shlib_event:
c906108c
SS
5626 if (bs->stop)
5627 {
5628 if (bs->print)
628fe4e4 5629 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5630 else
628fe4e4 5631 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5632 }
5633 else
628fe4e4 5634 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5635 break;
5636 case bp_watchpoint:
5637 case bp_hardware_watchpoint:
5638 case bp_read_watchpoint:
5639 case bp_access_watchpoint:
5640 if (bs->stop)
5641 {
5642 if (bs->print)
628fe4e4 5643 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5644 else
628fe4e4 5645 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5646 }
5647 else
628fe4e4
JK
5648 {
5649 /* There was a watchpoint, but we're not stopping.
5650 This requires no further action. */
5651 }
c906108c
SS
5652 break;
5653 case bp_longjmp:
e2e4d78b 5654 case bp_longjmp_call_dummy:
186c406b 5655 case bp_exception:
0a39bb32
PA
5656 if (bs->stop)
5657 {
5658 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5659 retval.is_longjmp = bptype != bp_exception;
5660 }
5661 else
5662 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5663 break;
5664 case bp_longjmp_resume:
186c406b 5665 case bp_exception_resume:
0a39bb32
PA
5666 if (bs->stop)
5667 {
5668 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5669 retval.is_longjmp = bptype == bp_longjmp_resume;
5670 }
5671 else
5672 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5673 break;
5674 case bp_step_resume:
5675 if (bs->stop)
628fe4e4
JK
5676 this_action = BPSTAT_WHAT_STEP_RESUME;
5677 else
c906108c 5678 {
628fe4e4
JK
5679 /* It is for the wrong frame. */
5680 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5681 }
c906108c 5682 break;
2c03e5be
PA
5683 case bp_hp_step_resume:
5684 if (bs->stop)
5685 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5686 else
5687 {
5688 /* It is for the wrong frame. */
5689 this_action = BPSTAT_WHAT_SINGLE;
5690 }
5691 break;
c906108c 5692 case bp_watchpoint_scope:
c4093a6a 5693 case bp_thread_event:
1900040c 5694 case bp_overlay_event:
0fd8e87f 5695 case bp_longjmp_master:
aa7d318d 5696 case bp_std_terminate_master:
186c406b 5697 case bp_exception_master:
628fe4e4 5698 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5699 break;
ce78b96d 5700 case bp_catchpoint:
c5aa993b
JM
5701 if (bs->stop)
5702 {
5703 if (bs->print)
628fe4e4 5704 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5705 else
628fe4e4 5706 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5707 }
5708 else
628fe4e4 5709 {
cb1e4e32
PA
5710 /* Some catchpoints are implemented with breakpoints.
5711 For those, we need to step over the breakpoint. */
5712 if (bs->bp_location_at->loc_type != bp_loc_other)
5713 this_action = BPSTAT_WHAT_SINGLE;
628fe4e4
JK
5714 }
5715 break;
628fe4e4 5716 case bp_jit_event:
628fe4e4 5717 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5718 break;
c906108c 5719 case bp_call_dummy:
53a5351d
JM
5720 /* Make sure the action is stop (silent or noisy),
5721 so infrun.c pops the dummy frame. */
aa7d318d 5722 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5723 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5724 break;
5725 case bp_std_terminate:
5726 /* Make sure the action is stop (silent or noisy),
5727 so infrun.c pops the dummy frame. */
aa7d318d 5728 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5729 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5730 break;
1042e4c0 5731 case bp_tracepoint:
7a697b8d 5732 case bp_fast_tracepoint:
0fb4aa4b 5733 case bp_static_tracepoint:
1042e4c0
SS
5734 /* Tracepoint hits should not be reported back to GDB, and
5735 if one got through somehow, it should have been filtered
5736 out already. */
5737 internal_error (__FILE__, __LINE__,
7a697b8d 5738 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5739 break;
5740 case bp_gnu_ifunc_resolver:
5741 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5742 this_action = BPSTAT_WHAT_SINGLE;
5743 break;
5744 case bp_gnu_ifunc_resolver_return:
5745 /* The breakpoint will be removed, execution will restart from the
5746 PC of the former breakpoint. */
5747 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5748 break;
e7e0cddf
SS
5749
5750 case bp_dprintf:
a11cfd87
HZ
5751 if (bs->stop)
5752 this_action = BPSTAT_WHAT_STOP_SILENT;
5753 else
5754 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5755 break;
5756
628fe4e4
JK
5757 default:
5758 internal_error (__FILE__, __LINE__,
5759 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5760 }
628fe4e4 5761
325fac50 5762 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5763 }
628fe4e4 5764
243a9253
PA
5765 return retval;
5766}
628fe4e4 5767
243a9253
PA
5768void
5769bpstat_run_callbacks (bpstat bs_head)
5770{
5771 bpstat bs;
628fe4e4 5772
0e30163f
JK
5773 for (bs = bs_head; bs != NULL; bs = bs->next)
5774 {
5775 struct breakpoint *b = bs->breakpoint_at;
5776
5777 if (b == NULL)
5778 continue;
5779 switch (b->type)
5780 {
243a9253 5781 case bp_jit_event:
61c26be8 5782 handle_jit_event (bs->bp_location_at->address);
243a9253 5783 break;
0e30163f
JK
5784 case bp_gnu_ifunc_resolver:
5785 gnu_ifunc_resolver_stop (b);
5786 break;
5787 case bp_gnu_ifunc_resolver_return:
5788 gnu_ifunc_resolver_return_stop (b);
5789 break;
5790 }
5791 }
c906108c
SS
5792}
5793
4c462cb0 5794/* See breakpoint.h. */
c906108c 5795
4c462cb0
SM
5796bool
5797bpstat_should_step ()
c906108c
SS
5798{
5799 struct breakpoint *b;
cc59ec59 5800
c906108c 5801 ALL_BREAKPOINTS (b)
717a8278 5802 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
4c462cb0
SM
5803 return true;
5804 return false;
c906108c
SS
5805}
5806
4c462cb0
SM
5807/* See breakpoint.h. */
5808
5809bool
67822962
PA
5810bpstat_causes_stop (bpstat bs)
5811{
5812 for (; bs != NULL; bs = bs->next)
5813 if (bs->stop)
4c462cb0 5814 return true;
67822962 5815
4c462cb0 5816 return false;
67822962
PA
5817}
5818
c906108c 5819\f
c5aa993b 5820
170b53b2
UW
5821/* Compute a string of spaces suitable to indent the next line
5822 so it starts at the position corresponding to the table column
5823 named COL_NAME in the currently active table of UIOUT. */
5824
5825static char *
5826wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5827{
5828 static char wrap_indent[80];
5829 int i, total_width, width, align;
c5209615 5830 const char *text;
170b53b2
UW
5831
5832 total_width = 0;
112e8700 5833 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5834 {
5835 if (strcmp (text, col_name) == 0)
5836 {
5837 gdb_assert (total_width < sizeof wrap_indent);
5838 memset (wrap_indent, ' ', total_width);
5839 wrap_indent[total_width] = 0;
5840
5841 return wrap_indent;
5842 }
5843
5844 total_width += width + 1;
5845 }
5846
5847 return NULL;
5848}
5849
b775012e
LM
5850/* Determine if the locations of this breakpoint will have their conditions
5851 evaluated by the target, host or a mix of both. Returns the following:
5852
5853 "host": Host evals condition.
5854 "host or target": Host or Target evals condition.
5855 "target": Target evals condition.
5856*/
5857
5858static const char *
5859bp_condition_evaluator (struct breakpoint *b)
5860{
5861 struct bp_location *bl;
5862 char host_evals = 0;
5863 char target_evals = 0;
5864
5865 if (!b)
5866 return NULL;
5867
5868 if (!is_breakpoint (b))
5869 return NULL;
5870
5871 if (gdb_evaluates_breakpoint_condition_p ()
5872 || !target_supports_evaluation_of_breakpoint_conditions ())
5873 return condition_evaluation_host;
5874
5875 for (bl = b->loc; bl; bl = bl->next)
5876 {
5877 if (bl->cond_bytecode)
5878 target_evals++;
5879 else
5880 host_evals++;
5881 }
5882
5883 if (host_evals && target_evals)
5884 return condition_evaluation_both;
5885 else if (target_evals)
5886 return condition_evaluation_target;
5887 else
5888 return condition_evaluation_host;
5889}
5890
5891/* Determine the breakpoint location's condition evaluator. This is
5892 similar to bp_condition_evaluator, but for locations. */
5893
5894static const char *
5895bp_location_condition_evaluator (struct bp_location *bl)
5896{
5897 if (bl && !is_breakpoint (bl->owner))
5898 return NULL;
5899
5900 if (gdb_evaluates_breakpoint_condition_p ()
5901 || !target_supports_evaluation_of_breakpoint_conditions ())
5902 return condition_evaluation_host;
5903
5904 if (bl && bl->cond_bytecode)
5905 return condition_evaluation_target;
5906 else
5907 return condition_evaluation_host;
5908}
5909
859825b8
JK
5910/* Print the LOC location out of the list of B->LOC locations. */
5911
170b53b2
UW
5912static void
5913print_breakpoint_location (struct breakpoint *b,
5914 struct bp_location *loc)
0d381245 5915{
79a45e25 5916 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5917
5918 scoped_restore_current_program_space restore_pspace;
6c95b8df 5919
859825b8
JK
5920 if (loc != NULL && loc->shlib_disabled)
5921 loc = NULL;
5922
6c95b8df
PA
5923 if (loc != NULL)
5924 set_current_program_space (loc->pspace);
5925
56435ebe 5926 if (b->display_canonical)
d28cd78a 5927 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5928 else if (loc && loc->symtab)
0d381245 5929 {
4a27f119
KS
5930 const struct symbol *sym = loc->symbol;
5931
0d381245
VP
5932 if (sym)
5933 {
112e8700 5934 uiout->text ("in ");
987012b8 5935 uiout->field_string ("func", sym->print_name (),
e43b10e1 5936 function_name_style.style ());
112e8700
SM
5937 uiout->text (" ");
5938 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5939 uiout->text ("at ");
0d381245 5940 }
112e8700 5941 uiout->field_string ("file",
cbe56571 5942 symtab_to_filename_for_display (loc->symtab),
e43b10e1 5943 file_name_style.style ());
112e8700 5944 uiout->text (":");
05cba821 5945
112e8700
SM
5946 if (uiout->is_mi_like_p ())
5947 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5948
381befee 5949 uiout->field_signed ("line", loc->line_number);
0d381245 5950 }
859825b8 5951 else if (loc)
0d381245 5952 {
d7e74731 5953 string_file stb;
170b53b2 5954
d7e74731 5955 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5956 demangle, "");
112e8700 5957 uiout->field_stream ("at", stb);
0d381245 5958 }
859825b8 5959 else
f00aae0f 5960 {
d28cd78a
TT
5961 uiout->field_string ("pending",
5962 event_location_to_string (b->location.get ()));
f00aae0f
KS
5963 /* If extra_string is available, it could be holding a condition
5964 or dprintf arguments. In either case, make sure it is printed,
5965 too, but only for non-MI streams. */
112e8700 5966 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5967 {
5968 if (b->type == bp_dprintf)
112e8700 5969 uiout->text (",");
f00aae0f 5970 else
112e8700
SM
5971 uiout->text (" ");
5972 uiout->text (b->extra_string);
f00aae0f
KS
5973 }
5974 }
6c95b8df 5975
b775012e
LM
5976 if (loc && is_breakpoint (b)
5977 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5978 && bp_condition_evaluator (b) == condition_evaluation_both)
5979 {
112e8700
SM
5980 uiout->text (" (");
5981 uiout->field_string ("evaluated-by",
b775012e 5982 bp_location_condition_evaluator (loc));
112e8700 5983 uiout->text (")");
b775012e 5984 }
0d381245
VP
5985}
5986
269b11a2
PA
5987static const char *
5988bptype_string (enum bptype type)
c906108c 5989{
c4093a6a
JM
5990 struct ep_type_description
5991 {
5992 enum bptype type;
a121b7c1 5993 const char *description;
c4093a6a
JM
5994 };
5995 static struct ep_type_description bptypes[] =
c906108c 5996 {
c5aa993b
JM
5997 {bp_none, "?deleted?"},
5998 {bp_breakpoint, "breakpoint"},
c906108c 5999 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 6000 {bp_single_step, "sw single-step"},
c5aa993b
JM
6001 {bp_until, "until"},
6002 {bp_finish, "finish"},
6003 {bp_watchpoint, "watchpoint"},
c906108c 6004 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
6005 {bp_read_watchpoint, "read watchpoint"},
6006 {bp_access_watchpoint, "acc watchpoint"},
6007 {bp_longjmp, "longjmp"},
6008 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 6009 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
6010 {bp_exception, "exception"},
6011 {bp_exception_resume, "exception resume"},
c5aa993b 6012 {bp_step_resume, "step resume"},
2c03e5be 6013 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
6014 {bp_watchpoint_scope, "watchpoint scope"},
6015 {bp_call_dummy, "call dummy"},
aa7d318d 6016 {bp_std_terminate, "std::terminate"},
c5aa993b 6017 {bp_shlib_event, "shlib events"},
c4093a6a 6018 {bp_thread_event, "thread events"},
1900040c 6019 {bp_overlay_event, "overlay events"},
0fd8e87f 6020 {bp_longjmp_master, "longjmp master"},
aa7d318d 6021 {bp_std_terminate_master, "std::terminate master"},
186c406b 6022 {bp_exception_master, "exception master"},
ce78b96d 6023 {bp_catchpoint, "catchpoint"},
1042e4c0 6024 {bp_tracepoint, "tracepoint"},
7a697b8d 6025 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 6026 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 6027 {bp_dprintf, "dprintf"},
4efc6507 6028 {bp_jit_event, "jit events"},
0e30163f
JK
6029 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6030 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 6031 };
269b11a2
PA
6032
6033 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6034 || ((int) type != bptypes[(int) type].type))
6035 internal_error (__FILE__, __LINE__,
6036 _("bptypes table does not describe type #%d."),
6037 (int) type);
6038
6039 return bptypes[(int) type].description;
6040}
6041
998580f1
MK
6042/* For MI, output a field named 'thread-groups' with a list as the value.
6043 For CLI, prefix the list with the string 'inf'. */
6044
6045static void
6046output_thread_groups (struct ui_out *uiout,
6047 const char *field_name,
5c632425 6048 const std::vector<int> &inf_nums,
998580f1
MK
6049 int mi_only)
6050{
112e8700 6051 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
6052
6053 /* For backward compatibility, don't display inferiors in CLI unless
6054 there are several. Always display them for MI. */
6055 if (!is_mi && mi_only)
6056 return;
6057
10f489e5 6058 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6059
5c632425 6060 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
6061 {
6062 if (is_mi)
6063 {
6064 char mi_group[10];
6065
5c632425 6066 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 6067 uiout->field_string (NULL, mi_group);
998580f1
MK
6068 }
6069 else
6070 {
6071 if (i == 0)
112e8700 6072 uiout->text (" inf ");
998580f1 6073 else
112e8700 6074 uiout->text (", ");
998580f1 6075
5c632425 6076 uiout->text (plongest (inf_nums[i]));
998580f1
MK
6077 }
6078 }
998580f1
MK
6079}
6080
a38118e5
PA
6081/* Print B to gdb_stdout. If RAW_LOC, print raw breakpoint locations
6082 instead of going via breakpoint_ops::print_one. This makes "maint
6083 info breakpoints" show the software breakpoint locations of
6084 catchpoints, which are considered internal implementation
6085 detail. */
269b11a2
PA
6086
6087static void
6088print_one_breakpoint_location (struct breakpoint *b,
6089 struct bp_location *loc,
6090 int loc_number,
6091 struct bp_location **last_loc,
a38118e5 6092 int allflag, bool raw_loc)
269b11a2
PA
6093{
6094 struct command_line *l;
c2c6d25f 6095 static char bpenables[] = "nynny";
c906108c 6096
79a45e25 6097 struct ui_out *uiout = current_uiout;
0d381245
VP
6098 int header_of_multiple = 0;
6099 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6100 struct value_print_options opts;
6101
6102 get_user_print_options (&opts);
0d381245
VP
6103
6104 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6105 /* See comment in print_one_breakpoint concerning treatment of
6106 breakpoints with single disabled location. */
0d381245
VP
6107 if (loc == NULL
6108 && (b->loc != NULL
b5fa468f
TBA
6109 && (b->loc->next != NULL
6110 || !b->loc->enabled || b->loc->disabled_by_cond)))
0d381245
VP
6111 header_of_multiple = 1;
6112 if (loc == NULL)
6113 loc = b->loc;
6114
c4093a6a
JM
6115 annotate_record ();
6116
6117 /* 1 */
6118 annotate_field (0);
0d381245 6119 if (part_of_multiple)
528e1572 6120 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
0d381245 6121 else
381befee 6122 uiout->field_signed ("number", b->number);
c4093a6a
JM
6123
6124 /* 2 */
6125 annotate_field (1);
0d381245 6126 if (part_of_multiple)
112e8700 6127 uiout->field_skip ("type");
269b11a2 6128 else
112e8700 6129 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6130
6131 /* 3 */
6132 annotate_field (2);
0d381245 6133 if (part_of_multiple)
112e8700 6134 uiout->field_skip ("disp");
0d381245 6135 else
112e8700 6136 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6137
c4093a6a
JM
6138 /* 4 */
6139 annotate_field (3);
0d381245 6140 if (part_of_multiple)
b5fa468f
TBA
6141 uiout->field_string ("enabled", (loc->disabled_by_cond ? "N*"
6142 : (loc->enabled ? "y" : "n")));
0d381245 6143 else
112e8700 6144 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
0d381245 6145
c4093a6a 6146 /* 5 and 6 */
a38118e5 6147 if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
b58a68fe 6148 b->ops->print_one (b, last_loc);
3086aeae 6149 else
a38118e5
PA
6150 {
6151 if (is_watchpoint (b))
3a5c3e22
PA
6152 {
6153 struct watchpoint *w = (struct watchpoint *) b;
6154
6155 /* Field 4, the address, is omitted (which makes the columns
6156 not line up too nicely with the headers, but the effect
6157 is relatively readable). */
6158 if (opts.addressprint)
112e8700 6159 uiout->field_skip ("addr");
3a5c3e22 6160 annotate_field (5);
112e8700 6161 uiout->field_string ("what", w->exp_string);
3a5c3e22 6162 }
f06f1252
TT
6163 else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6164 || is_ada_exception_catchpoint (b))
a38118e5
PA
6165 {
6166 if (opts.addressprint)
6167 {
6168 annotate_field (4);
6169 if (header_of_multiple)
7f6aba03
TT
6170 uiout->field_string ("addr", "<MULTIPLE>",
6171 metadata_style.style ());
a38118e5 6172 else if (b->loc == NULL || loc->shlib_disabled)
7f6aba03
TT
6173 uiout->field_string ("addr", "<PENDING>",
6174 metadata_style.style ());
a38118e5
PA
6175 else
6176 uiout->field_core_addr ("addr",
6177 loc->gdbarch, loc->address);
6178 }
6179 annotate_field (5);
6180 if (!header_of_multiple)
6181 print_breakpoint_location (b, loc);
6182 if (b->loc)
6183 *last_loc = b->loc;
6184 }
6185 }
6c95b8df 6186
998580f1 6187 if (loc != NULL && !header_of_multiple)
6c95b8df 6188 {
5c632425 6189 std::vector<int> inf_nums;
998580f1 6190 int mi_only = 1;
6c95b8df 6191
08036331 6192 for (inferior *inf : all_inferiors ())
6c95b8df
PA
6193 {
6194 if (inf->pspace == loc->pspace)
5c632425 6195 inf_nums.push_back (inf->num);
6c95b8df 6196 }
998580f1 6197
dda83cd7 6198 /* For backward compatibility, don't display inferiors in CLI unless
998580f1
MK
6199 there are several. Always display for MI. */
6200 if (allflag
6201 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
94c93c35 6202 && (program_spaces.size () > 1
998580f1
MK
6203 || number_of_inferiors () > 1)
6204 /* LOC is for existing B, it cannot be in
6205 moribund_locations and thus having NULL OWNER. */
6206 && loc->owner->type != bp_catchpoint))
6207 mi_only = 0;
5c632425 6208 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6209 }
6210
4a306c9a 6211 if (!part_of_multiple)
c4093a6a 6212 {
4a306c9a
JB
6213 if (b->thread != -1)
6214 {
6215 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6216 "stop only in" line a little further down. */
112e8700 6217 uiout->text (" thread ");
381befee 6218 uiout->field_signed ("thread", b->thread);
4a306c9a
JB
6219 }
6220 else if (b->task != 0)
6221 {
112e8700 6222 uiout->text (" task ");
381befee 6223 uiout->field_signed ("task", b->task);
4a306c9a 6224 }
c4093a6a 6225 }
f1310107 6226
112e8700 6227 uiout->text ("\n");
f1310107 6228
348d480f 6229 if (!part_of_multiple)
f1310107
TJB
6230 b->ops->print_one_detail (b, uiout);
6231
0d381245 6232 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6233 {
6234 annotate_field (6);
112e8700 6235 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6236 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
dda83cd7 6237 the frame ID. */
112e8700 6238 uiout->field_core_addr ("frame",
5af949e3 6239 b->gdbarch, b->frame_id.stack_addr);
112e8700 6240 uiout->text ("\n");
c4093a6a
JM
6241 }
6242
28010a5d 6243 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6244 {
6245 annotate_field (7);
d77f58be 6246 if (is_tracepoint (b))
112e8700 6247 uiout->text ("\ttrace only if ");
1042e4c0 6248 else
112e8700
SM
6249 uiout->text ("\tstop only if ");
6250 uiout->field_string ("cond", b->cond_string);
b775012e
LM
6251
6252 /* Print whether the target is doing the breakpoint's condition
6253 evaluation. If GDB is doing the evaluation, don't print anything. */
6254 if (is_breakpoint (b)
6255 && breakpoint_condition_evaluation_mode ()
6256 == condition_evaluation_target)
6257 {
6a831f06
PA
6258 uiout->message (" (%pF evals)",
6259 string_field ("evaluated-by",
6260 bp_condition_evaluator (b)));
b775012e 6261 }
112e8700 6262 uiout->text ("\n");
0101ce28
JJ
6263 }
6264
0d381245 6265 if (!part_of_multiple && b->thread != -1)
c4093a6a 6266 {
4a64f543 6267 /* FIXME should make an annotation for this. */
112e8700
SM
6268 uiout->text ("\tstop only in thread ");
6269 if (uiout->is_mi_like_p ())
381befee 6270 uiout->field_signed ("thread", b->thread);
5d5658a1
PA
6271 else
6272 {
6273 struct thread_info *thr = find_thread_global_id (b->thread);
6274
112e8700 6275 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6276 }
112e8700 6277 uiout->text ("\n");
c4093a6a
JM
6278 }
6279
556ec64d
YQ
6280 if (!part_of_multiple)
6281 {
6282 if (b->hit_count)
31f56a27
YQ
6283 {
6284 /* FIXME should make an annotation for this. */
6285 if (is_catchpoint (b))
112e8700 6286 uiout->text ("\tcatchpoint");
31f56a27 6287 else if (is_tracepoint (b))
112e8700 6288 uiout->text ("\ttracepoint");
31f56a27 6289 else
112e8700
SM
6290 uiout->text ("\tbreakpoint");
6291 uiout->text (" already hit ");
381befee 6292 uiout->field_signed ("times", b->hit_count);
31f56a27 6293 if (b->hit_count == 1)
112e8700 6294 uiout->text (" time\n");
31f56a27 6295 else
112e8700 6296 uiout->text (" times\n");
31f56a27 6297 }
556ec64d
YQ
6298 else
6299 {
31f56a27 6300 /* Output the count also if it is zero, but only if this is mi. */
112e8700 6301 if (uiout->is_mi_like_p ())
381befee 6302 uiout->field_signed ("times", b->hit_count);
556ec64d
YQ
6303 }
6304 }
8b93c638 6305
0d381245 6306 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6307 {
6308 annotate_field (8);
6a831f06
PA
6309 uiout->message ("\tignore next %pF hits\n",
6310 signed_field ("ignore", b->ignore_count));
c4093a6a 6311 }
059fb39f 6312
816338b5
SS
6313 /* Note that an enable count of 1 corresponds to "enable once"
6314 behavior, which is reported by the combination of enablement and
6315 disposition, so we don't need to mention it here. */
6316 if (!part_of_multiple && b->enable_count > 1)
6317 {
6318 annotate_field (8);
112e8700 6319 uiout->text ("\tdisable after ");
816338b5
SS
6320 /* Tweak the wording to clarify that ignore and enable counts
6321 are distinct, and have additive effect. */
6322 if (b->ignore_count)
112e8700 6323 uiout->text ("additional ");
816338b5 6324 else
112e8700 6325 uiout->text ("next ");
381befee 6326 uiout->field_signed ("enable", b->enable_count);
112e8700 6327 uiout->text (" hits\n");
816338b5
SS
6328 }
6329
f196051f
SS
6330 if (!part_of_multiple && is_tracepoint (b))
6331 {
6332 struct tracepoint *tp = (struct tracepoint *) b;
6333
6334 if (tp->traceframe_usage)
6335 {
112e8700 6336 uiout->text ("\ttrace buffer usage ");
381befee 6337 uiout->field_signed ("traceframe-usage", tp->traceframe_usage);
112e8700 6338 uiout->text (" bytes\n");
f196051f
SS
6339 }
6340 }
d3ce09f5 6341
d1b0a7bf 6342 l = b->commands ? b->commands.get () : NULL;
059fb39f 6343 if (!part_of_multiple && l)
c4093a6a
JM
6344 {
6345 annotate_field (9);
2e783024 6346 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6347 print_command_lines (uiout, l, 4);
c4093a6a 6348 }
d24317b4 6349
d9b3f62e 6350 if (is_tracepoint (b))
1042e4c0 6351 {
d9b3f62e
PA
6352 struct tracepoint *t = (struct tracepoint *) b;
6353
6354 if (!part_of_multiple && t->pass_count)
6355 {
6356 annotate_field (10);
112e8700 6357 uiout->text ("\tpass count ");
381befee 6358 uiout->field_signed ("pass", t->pass_count);
112e8700 6359 uiout->text (" \n");
d9b3f62e 6360 }
f2a8bc8a
YQ
6361
6362 /* Don't display it when tracepoint or tracepoint location is
6363 pending. */
6364 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6365 {
6366 annotate_field (11);
6367
112e8700
SM
6368 if (uiout->is_mi_like_p ())
6369 uiout->field_string ("installed",
f2a8bc8a
YQ
6370 loc->inserted ? "y" : "n");
6371 else
6372 {
6373 if (loc->inserted)
112e8700 6374 uiout->text ("\t");
f2a8bc8a 6375 else
112e8700
SM
6376 uiout->text ("\tnot ");
6377 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6378 }
6379 }
1042e4c0
SS
6380 }
6381
112e8700 6382 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6383 {
3a5c3e22
PA
6384 if (is_watchpoint (b))
6385 {
6386 struct watchpoint *w = (struct watchpoint *) b;
6387
112e8700 6388 uiout->field_string ("original-location", w->exp_string);
3a5c3e22 6389 }
f00aae0f 6390 else if (b->location != NULL
d28cd78a 6391 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6392 uiout->field_string ("original-location",
d28cd78a 6393 event_location_to_string (b->location.get ()));
d24317b4 6394 }
c4093a6a 6395}
c5aa993b 6396
13674803
SM
6397/* See breakpoint.h. */
6398
6399bool fix_multi_location_breakpoint_output_globally = false;
6400
0d381245
VP
6401static void
6402print_one_breakpoint (struct breakpoint *b,
4a64f543 6403 struct bp_location **last_loc,
6c95b8df 6404 int allflag)
0d381245 6405{
79a45e25 6406 struct ui_out *uiout = current_uiout;
13674803
SM
6407 bool use_fixed_output
6408 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6409 || fix_multi_location_breakpoint_output_globally);
8d3788bd 6410
b4be1b06 6411 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
a38118e5 6412 print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
8d3788bd 6413
b4be1b06
SM
6414 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6415 are outside. */
6416 if (!use_fixed_output)
6417 bkpt_tuple_emitter.reset ();
0d381245
VP
6418
6419 /* If this breakpoint has custom print function,
6420 it's already printed. Otherwise, print individual
6421 locations, if any. */
a38118e5
PA
6422 if (b->ops == NULL
6423 || b->ops->print_one == NULL
6424 || allflag)
0d381245 6425 {
4a64f543
MS
6426 /* If breakpoint has a single location that is disabled, we
6427 print it as if it had several locations, since otherwise it's
6428 hard to represent "breakpoint enabled, location disabled"
6429 situation.
6430
6431 Note that while hardware watchpoints have several locations
a38118e5
PA
6432 internally, that's not a property exposed to users.
6433
6434 Likewise, while catchpoints may be implemented with
6435 breakpoints (e.g., catch throw), that's not a property
6436 exposed to users. We do however display the internal
6437 breakpoint locations with "maint info breakpoints". */
6438 if (!is_hardware_watchpoint (b)
f06f1252
TT
6439 && (!is_catchpoint (b) || is_exception_catchpoint (b)
6440 || is_ada_exception_catchpoint (b))
a38118e5 6441 && (allflag
b5fa468f
TBA
6442 || (b->loc && (b->loc->next
6443 || !b->loc->enabled
6444 || b->loc->disabled_by_cond))))
0d381245 6445 {
b4be1b06
SM
6446 gdb::optional<ui_out_emit_list> locations_list;
6447
6448 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6449 MI record. For later versions, place breakpoint locations in a
6450 list. */
6451 if (uiout->is_mi_like_p () && use_fixed_output)
6452 locations_list.emplace (uiout, "locations");
8d3788bd 6453
b4be1b06
SM
6454 int n = 1;
6455 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
8d3788bd 6456 {
b4be1b06 6457 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
a38118e5
PA
6458 print_one_breakpoint_location (b, loc, n, last_loc,
6459 allflag, allflag);
8d3788bd 6460 }
0d381245
VP
6461 }
6462 }
6463}
6464
a6d9a66e
UW
6465static int
6466breakpoint_address_bits (struct breakpoint *b)
6467{
6468 int print_address_bits = 0;
6469 struct bp_location *loc;
6470
c6d81124
PA
6471 /* Software watchpoints that aren't watching memory don't have an
6472 address to print. */
6473 if (is_no_memory_software_watchpoint (b))
6474 return 0;
6475
a6d9a66e
UW
6476 for (loc = b->loc; loc; loc = loc->next)
6477 {
c7437ca6
PA
6478 int addr_bit;
6479
c7437ca6 6480 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6481 if (addr_bit > print_address_bits)
6482 print_address_bits = addr_bit;
6483 }
6484
6485 return print_address_bits;
6486}
0d381245 6487
65630365 6488/* See breakpoint.h. */
c5aa993b 6489
65630365
PA
6490void
6491print_breakpoint (breakpoint *b)
c4093a6a 6492{
a6d9a66e 6493 struct bp_location *dummy_loc = NULL;
65630365 6494 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6495}
c5aa993b 6496
09d682a4
TT
6497/* Return true if this breakpoint was set by the user, false if it is
6498 internal or momentary. */
6499
6500int
6501user_breakpoint_p (struct breakpoint *b)
6502{
46c6471b 6503 return b->number > 0;
09d682a4
TT
6504}
6505
93daf339
TT
6506/* See breakpoint.h. */
6507
6508int
6509pending_breakpoint_p (struct breakpoint *b)
6510{
6511 return b->loc == NULL;
6512}
6513
5c458ae8
SM
6514/* Print information on breakpoints (including watchpoints and tracepoints).
6515
6516 If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6517 understood by number_or_range_parser. Only breakpoints included in this
6518 list are then printed.
6519
6520 If SHOW_INTERNAL is true, print internal breakpoints.
6521
6522 If FILTER is non-NULL, call it on each breakpoint and only include the
6523 ones for which it returns true.
6524
6525 Return the total number of breakpoints listed. */
c906108c 6526
d77f58be 6527static int
5c458ae8 6528breakpoint_1 (const char *bp_num_list, bool show_internal,
f2478a7e 6529 bool (*filter) (const struct breakpoint *))
c4093a6a 6530{
52f0bd74 6531 struct breakpoint *b;
a6d9a66e 6532 struct bp_location *last_loc = NULL;
7f3b0473 6533 int nr_printable_breakpoints;
79a45b7d 6534 struct value_print_options opts;
a6d9a66e 6535 int print_address_bits = 0;
269b11a2 6536 int print_type_col_width = 14;
79a45e25 6537 struct ui_out *uiout = current_uiout;
b5fa468f 6538 bool has_disabled_by_cond_location = false;
269b11a2 6539
79a45b7d
TT
6540 get_user_print_options (&opts);
6541
4a64f543
MS
6542 /* Compute the number of rows in the table, as well as the size
6543 required for address fields. */
7f3b0473
AC
6544 nr_printable_breakpoints = 0;
6545 ALL_BREAKPOINTS (b)
e5a67952
MS
6546 {
6547 /* If we have a filter, only list the breakpoints it accepts. */
6548 if (filter && !filter (b))
6549 continue;
6550
5c458ae8 6551 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
e5a67952 6552 accept. Skip the others. */
5c458ae8 6553 if (bp_num_list != NULL && *bp_num_list != '\0')
e5a67952 6554 {
5c458ae8 6555 if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
e5a67952 6556 continue;
5c458ae8 6557 if (!show_internal && !number_is_in_list (bp_num_list, b->number))
e5a67952
MS
6558 continue;
6559 }
269b11a2 6560
5c458ae8 6561 if (show_internal || user_breakpoint_p (b))
e5a67952
MS
6562 {
6563 int addr_bit, type_len;
a6d9a66e 6564
e5a67952
MS
6565 addr_bit = breakpoint_address_bits (b);
6566 if (addr_bit > print_address_bits)
6567 print_address_bits = addr_bit;
269b11a2 6568
e5a67952
MS
6569 type_len = strlen (bptype_string (b->type));
6570 if (type_len > print_type_col_width)
6571 print_type_col_width = type_len;
6572
6573 nr_printable_breakpoints++;
6574 }
6575 }
7f3b0473 6576
4a2b031d
TT
6577 {
6578 ui_out_emit_table table_emitter (uiout,
6579 opts.addressprint ? 6 : 5,
6580 nr_printable_breakpoints,
6581 "BreakpointTable");
6582
6583 if (nr_printable_breakpoints > 0)
6584 annotate_breakpoints_headers ();
6585 if (nr_printable_breakpoints > 0)
6586 annotate_field (0);
6587 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6588 if (nr_printable_breakpoints > 0)
6589 annotate_field (1);
6590 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6591 if (nr_printable_breakpoints > 0)
6592 annotate_field (2);
6593 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6594 if (nr_printable_breakpoints > 0)
6595 annotate_field (3);
6596 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6597 if (opts.addressprint)
6598 {
6599 if (nr_printable_breakpoints > 0)
6600 annotate_field (4);
6601 if (print_address_bits <= 32)
6602 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6603 else
6604 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6605 }
6606 if (nr_printable_breakpoints > 0)
6607 annotate_field (5);
6608 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6609 uiout->table_body ();
6610 if (nr_printable_breakpoints > 0)
6611 annotate_breakpoints_table ();
6612
6613 ALL_BREAKPOINTS (b)
6614 {
6615 QUIT;
6616 /* If we have a filter, only list the breakpoints it accepts. */
6617 if (filter && !filter (b))
6618 continue;
e5a67952 6619
5c458ae8 6620 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
4a2b031d 6621 accept. Skip the others. */
e5a67952 6622
5c458ae8 6623 if (bp_num_list != NULL && *bp_num_list != '\0')
4a2b031d 6624 {
5c458ae8 6625 if (show_internal) /* maintenance info breakpoint */
4a2b031d 6626 {
5c458ae8 6627 if (parse_and_eval_long (bp_num_list) != b->number)
4a2b031d
TT
6628 continue;
6629 }
6630 else /* all others */
6631 {
5c458ae8 6632 if (!number_is_in_list (bp_num_list, b->number))
4a2b031d
TT
6633 continue;
6634 }
6635 }
6636 /* We only print out user settable breakpoints unless the
5c458ae8
SM
6637 show_internal is set. */
6638 if (show_internal || user_breakpoint_p (b))
b5fa468f
TBA
6639 {
6640 print_one_breakpoint (b, &last_loc, show_internal);
6641 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
6642 if (loc->disabled_by_cond)
6643 has_disabled_by_cond_location = true;
6644 }
4a2b031d
TT
6645 }
6646 }
698384cd 6647
7f3b0473 6648 if (nr_printable_breakpoints == 0)
c906108c 6649 {
4a64f543
MS
6650 /* If there's a filter, let the caller decide how to report
6651 empty list. */
d77f58be
SS
6652 if (!filter)
6653 {
5c458ae8 6654 if (bp_num_list == NULL || *bp_num_list == '\0')
112e8700 6655 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6656 else
112e8700 6657 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
5c458ae8 6658 bp_num_list);
d77f58be 6659 }
c906108c
SS
6660 }
6661 else
c4093a6a 6662 {
a6d9a66e
UW
6663 if (last_loc && !server_command)
6664 set_next_address (last_loc->gdbarch, last_loc->address);
b5fa468f
TBA
6665
6666 if (has_disabled_by_cond_location)
6667 uiout->message (_("(*): Breakpoint condition is invalid at this "
6668 "location.\n"));
c4093a6a 6669 }
c906108c 6670
4a64f543 6671 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6672 there have been breakpoints? */
c906108c 6673 annotate_breakpoints_table_end ();
d77f58be
SS
6674
6675 return nr_printable_breakpoints;
c906108c
SS
6676}
6677
ad443146
SS
6678/* Display the value of default-collect in a way that is generally
6679 compatible with the breakpoint list. */
6680
6681static void
6682default_collect_info (void)
6683{
79a45e25
PA
6684 struct ui_out *uiout = current_uiout;
6685
ad443146
SS
6686 /* If it has no value (which is frequently the case), say nothing; a
6687 message like "No default-collect." gets in user's face when it's
6688 not wanted. */
6689 if (!*default_collect)
6690 return;
6691
6692 /* The following phrase lines up nicely with per-tracepoint collect
6693 actions. */
112e8700
SM
6694 uiout->text ("default collect ");
6695 uiout->field_string ("default-collect", default_collect);
6696 uiout->text (" \n");
ad443146
SS
6697}
6698
c906108c 6699static void
0b39b52e 6700info_breakpoints_command (const char *args, int from_tty)
c906108c 6701{
5c458ae8 6702 breakpoint_1 (args, false, NULL);
ad443146
SS
6703
6704 default_collect_info ();
d77f58be
SS
6705}
6706
6707static void
1d12d88f 6708info_watchpoints_command (const char *args, int from_tty)
d77f58be 6709{
5c458ae8 6710 int num_printed = breakpoint_1 (args, false, is_watchpoint);
79a45e25 6711 struct ui_out *uiout = current_uiout;
d77f58be
SS
6712
6713 if (num_printed == 0)
6714 {
e5a67952 6715 if (args == NULL || *args == '\0')
112e8700 6716 uiout->message ("No watchpoints.\n");
d77f58be 6717 else
112e8700 6718 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6719 }
c906108c
SS
6720}
6721
7a292a7a 6722static void
4495129a 6723maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6724{
5c458ae8 6725 breakpoint_1 (args, true, NULL);
ad443146
SS
6726
6727 default_collect_info ();
c906108c
SS
6728}
6729
0d381245 6730static int
714835d5 6731breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6732 struct program_space *pspace,
714835d5 6733 CORE_ADDR pc, struct obj_section *section)
0d381245
VP
6734{
6735 struct bp_location *bl = b->loc;
cc59ec59 6736
0d381245
VP
6737 for (; bl; bl = bl->next)
6738 {
6c95b8df
PA
6739 if (bl->pspace == pspace
6740 && bl->address == pc
0d381245
VP
6741 && (!overlay_debugging || bl->section == section))
6742 return 1;
6743 }
6744 return 0;
6745}
6746
672f9b60 6747/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6748 concerns with logical breakpoints, so we match program spaces, not
6749 address spaces. */
c906108c
SS
6750
6751static void
6c95b8df
PA
6752describe_other_breakpoints (struct gdbarch *gdbarch,
6753 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6754 struct obj_section *section, int thread)
c906108c 6755{
52f0bd74
AC
6756 int others = 0;
6757 struct breakpoint *b;
c906108c
SS
6758
6759 ALL_BREAKPOINTS (b)
672f9b60 6760 others += (user_breakpoint_p (b)
dda83cd7 6761 && breakpoint_has_pc (b, pspace, pc, section));
c906108c
SS
6762 if (others > 0)
6763 {
a3f17187
AC
6764 if (others == 1)
6765 printf_filtered (_("Note: breakpoint "));
6766 else /* if (others == ???) */
6767 printf_filtered (_("Note: breakpoints "));
c906108c 6768 ALL_BREAKPOINTS (b)
672f9b60 6769 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6770 {
6771 others--;
6772 printf_filtered ("%d", b->number);
6773 if (b->thread == -1 && thread != -1)
6774 printf_filtered (" (all threads)");
6775 else if (b->thread != -1)
6776 printf_filtered (" (thread %d)", b->thread);
6777 printf_filtered ("%s%s ",
059fb39f 6778 ((b->enable_state == bp_disabled
f8eba3c6 6779 || b->enable_state == bp_call_disabled)
0d381245 6780 ? " (disabled)"
0d381245
VP
6781 : ""),
6782 (others > 1) ? ","
6783 : ((others == 1) ? " and" : ""));
6784 }
6a831f06
PA
6785 current_uiout->message (_("also set at pc %ps.\n"),
6786 styled_string (address_style.style (),
6787 paddress (gdbarch, pc)));
c906108c
SS
6788 }
6789}
6790\f
c906108c 6791
cb1e4e32
PA
6792/* Return true iff it is meaningful to use the address member of LOC.
6793 For some breakpoint types, the locations' address members are
6794 irrelevant and it makes no sense to attempt to compare them to
6795 other addresses (or use them for any other purpose either).
2d134ed3 6796
cb1e4e32
PA
6797 More specifically, software watchpoints and catchpoints that are
6798 not backed by breakpoints always have a zero valued location
6799 address and we don't want to mark breakpoints of any of these types
6800 to be a duplicate of an actual breakpoint location at address
6801 zero. */
e4f237da 6802
cb1e4e32
PA
6803static bool
6804bl_address_is_meaningful (bp_location *loc)
e4f237da 6805{
cb1e4e32 6806 return loc->loc_type != bp_loc_other;
2d134ed3
PA
6807}
6808
6809/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6810 true if LOC1 and LOC2 represent the same watchpoint location. */
6811
6812static int
4a64f543
MS
6813watchpoint_locations_match (struct bp_location *loc1,
6814 struct bp_location *loc2)
2d134ed3 6815{
3a5c3e22
PA
6816 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6817 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6818
6819 /* Both of them must exist. */
6820 gdb_assert (w1 != NULL);
6821 gdb_assert (w2 != NULL);
2bdf28a0 6822
4a64f543
MS
6823 /* If the target can evaluate the condition expression in hardware,
6824 then we we need to insert both watchpoints even if they are at
6825 the same place. Otherwise the watchpoint will only trigger when
6826 the condition of whichever watchpoint was inserted evaluates to
6827 true, not giving a chance for GDB to check the condition of the
6828 other watchpoint. */
3a5c3e22 6829 if ((w1->cond_exp
4a64f543
MS
6830 && target_can_accel_watchpoint_condition (loc1->address,
6831 loc1->length,
0cf6dd15 6832 loc1->watchpoint_type,
4d01a485 6833 w1->cond_exp.get ()))
3a5c3e22 6834 || (w2->cond_exp
4a64f543
MS
6835 && target_can_accel_watchpoint_condition (loc2->address,
6836 loc2->length,
0cf6dd15 6837 loc2->watchpoint_type,
4d01a485 6838 w2->cond_exp.get ())))
0cf6dd15
TJB
6839 return 0;
6840
85d721b8
PA
6841 /* Note that this checks the owner's type, not the location's. In
6842 case the target does not support read watchpoints, but does
6843 support access watchpoints, we'll have bp_read_watchpoint
6844 watchpoints with hw_access locations. Those should be considered
6845 duplicates of hw_read locations. The hw_read locations will
6846 become hw_access locations later. */
2d134ed3
PA
6847 return (loc1->owner->type == loc2->owner->type
6848 && loc1->pspace->aspace == loc2->pspace->aspace
6849 && loc1->address == loc2->address
6850 && loc1->length == loc2->length);
e4f237da
KB
6851}
6852
31e77af2 6853/* See breakpoint.h. */
6c95b8df 6854
31e77af2 6855int
accd0bcd
YQ
6856breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6857 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6858{
f5656ead 6859 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6860 || aspace1 == aspace2)
6861 && addr1 == addr2);
6862}
6863
f1310107
TJB
6864/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6865 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6866 matches ASPACE2. On targets that have global breakpoints, the address
6867 space doesn't really matter. */
6868
6869static int
accd0bcd
YQ
6870breakpoint_address_match_range (const address_space *aspace1,
6871 CORE_ADDR addr1,
6872 int len1, const address_space *aspace2,
f1310107
TJB
6873 CORE_ADDR addr2)
6874{
f5656ead 6875 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6876 || aspace1 == aspace2)
6877 && addr2 >= addr1 && addr2 < addr1 + len1);
6878}
6879
6880/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6881 a ranged breakpoint. In most targets, a match happens only if ASPACE
6882 matches the breakpoint's address space. On targets that have global
6883 breakpoints, the address space doesn't really matter. */
6884
6885static int
6886breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6887 const address_space *aspace,
f1310107
TJB
6888 CORE_ADDR addr)
6889{
6890 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6891 aspace, addr)
6892 || (bl->length
6893 && breakpoint_address_match_range (bl->pspace->aspace,
6894 bl->address, bl->length,
6895 aspace, addr)));
6896}
6897
d35ae833
PA
6898/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6899 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6900 match happens only if ASPACE matches the breakpoint's address
6901 space. On targets that have global breakpoints, the address space
6902 doesn't really matter. */
6903
6904static int
6905breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6906 const address_space *aspace,
d35ae833
PA
6907 CORE_ADDR addr, int len)
6908{
6909 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6910 || bl->pspace->aspace == aspace)
6911 {
6912 int bl_len = bl->length != 0 ? bl->length : 1;
6913
6914 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6915 return 1;
6916 }
6917 return 0;
6918}
6919
1e4d1764
YQ
6920/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6921 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6922 true, otherwise returns false. */
6923
6924static int
6925tracepoint_locations_match (struct bp_location *loc1,
6926 struct bp_location *loc2)
6927{
6928 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6929 /* Since tracepoint locations are never duplicated with others', tracepoint
6930 locations at the same address of different tracepoints are regarded as
6931 different locations. */
6932 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6933 else
6934 return 0;
6935}
6936
2d134ed3 6937/* Assuming LOC1 and LOC2's types' have meaningful target addresses
cb1e4e32 6938 (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
7f32a4d5
PA
6939 the same location. If SW_HW_BPS_MATCH is true, then software
6940 breakpoint locations and hardware breakpoint locations match,
6941 otherwise they don't. */
2d134ed3
PA
6942
6943static int
7f32a4d5
PA
6944breakpoint_locations_match (struct bp_location *loc1,
6945 struct bp_location *loc2,
6946 bool sw_hw_bps_match)
2d134ed3 6947{
2bdf28a0
JK
6948 int hw_point1, hw_point2;
6949
6950 /* Both of them must not be in moribund_locations. */
6951 gdb_assert (loc1->owner != NULL);
6952 gdb_assert (loc2->owner != NULL);
6953
6954 hw_point1 = is_hardware_watchpoint (loc1->owner);
6955 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6956
6957 if (hw_point1 != hw_point2)
6958 return 0;
6959 else if (hw_point1)
6960 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6961 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6962 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6963 else
7f32a4d5
PA
6964 /* We compare bp_location.length in order to cover ranged
6965 breakpoints. Keep this in sync with
6966 bp_location_is_less_than. */
f1310107
TJB
6967 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6968 loc2->pspace->aspace, loc2->address)
7f32a4d5 6969 && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
f1310107 6970 && loc1->length == loc2->length);
2d134ed3
PA
6971}
6972
76897487
KB
6973static void
6974breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
dda83cd7 6975 int bnum, int have_bnum)
76897487 6976{
f63fbe86
MS
6977 /* The longest string possibly returned by hex_string_custom
6978 is 50 chars. These must be at least that big for safety. */
6979 char astr1[64];
6980 char astr2[64];
76897487 6981
bb599908
PH
6982 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6983 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6984 if (have_bnum)
8a3fe4f8 6985 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
dda83cd7 6986 bnum, astr1, astr2);
76897487 6987 else
8a3fe4f8 6988 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6989}
6990
4a64f543
MS
6991/* Adjust a breakpoint's address to account for architectural
6992 constraints on breakpoint placement. Return the adjusted address.
6993 Note: Very few targets require this kind of adjustment. For most
6994 targets, this function is simply the identity function. */
76897487
KB
6995
6996static CORE_ADDR
a6d9a66e
UW
6997adjust_breakpoint_address (struct gdbarch *gdbarch,
6998 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6999{
a0de8c21
YQ
7000 if (bptype == bp_watchpoint
7001 || bptype == bp_hardware_watchpoint
7002 || bptype == bp_read_watchpoint
7003 || bptype == bp_access_watchpoint
7004 || bptype == bp_catchpoint)
88f7da05
KB
7005 {
7006 /* Watchpoints and the various bp_catch_* eventpoints should not
dda83cd7 7007 have their addresses modified. */
88f7da05
KB
7008 return bpaddr;
7009 }
7c16b83e
PA
7010 else if (bptype == bp_single_step)
7011 {
7012 /* Single-step breakpoints should not have their addresses
7013 modified. If there's any architectural constrain that
7014 applies to this address, then it should have already been
7015 taken into account when the breakpoint was created in the
7016 first place. If we didn't do this, stepping through e.g.,
7017 Thumb-2 IT blocks would break. */
7018 return bpaddr;
7019 }
76897487
KB
7020 else
7021 {
a0de8c21
YQ
7022 CORE_ADDR adjusted_bpaddr = bpaddr;
7023
7024 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
7025 {
7026 /* Some targets have architectural constraints on the placement
7027 of breakpoint instructions. Obtain the adjusted address. */
7028 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7029 }
76897487 7030
a0de8c21 7031 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
7032
7033 /* An adjusted breakpoint address can significantly alter
dda83cd7 7034 a user's expectations. Print a warning if an adjustment
76897487
KB
7035 is required. */
7036 if (adjusted_bpaddr != bpaddr)
7037 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7038
7039 return adjusted_bpaddr;
7040 }
7041}
7042
cb1e4e32
PA
7043static bp_loc_type
7044bp_location_from_bp_type (bptype type)
7cc221ef 7045{
cb1e4e32 7046 switch (type)
e049a4b5
DJ
7047 {
7048 case bp_breakpoint:
7c16b83e 7049 case bp_single_step:
e049a4b5
DJ
7050 case bp_until:
7051 case bp_finish:
7052 case bp_longjmp:
7053 case bp_longjmp_resume:
e2e4d78b 7054 case bp_longjmp_call_dummy:
186c406b
TT
7055 case bp_exception:
7056 case bp_exception_resume:
e049a4b5 7057 case bp_step_resume:
2c03e5be 7058 case bp_hp_step_resume:
e049a4b5
DJ
7059 case bp_watchpoint_scope:
7060 case bp_call_dummy:
aa7d318d 7061 case bp_std_terminate:
e049a4b5
DJ
7062 case bp_shlib_event:
7063 case bp_thread_event:
7064 case bp_overlay_event:
4efc6507 7065 case bp_jit_event:
0fd8e87f 7066 case bp_longjmp_master:
aa7d318d 7067 case bp_std_terminate_master:
186c406b 7068 case bp_exception_master:
0e30163f
JK
7069 case bp_gnu_ifunc_resolver:
7070 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7071 case bp_dprintf:
cb1e4e32 7072 return bp_loc_software_breakpoint;
e049a4b5 7073 case bp_hardware_breakpoint:
cb1e4e32 7074 return bp_loc_hardware_breakpoint;
e049a4b5
DJ
7075 case bp_hardware_watchpoint:
7076 case bp_read_watchpoint:
7077 case bp_access_watchpoint:
cb1e4e32 7078 return bp_loc_hardware_watchpoint;
e049a4b5 7079 case bp_watchpoint:
ce78b96d 7080 case bp_catchpoint:
15c3d785
PA
7081 case bp_tracepoint:
7082 case bp_fast_tracepoint:
0fb4aa4b 7083 case bp_static_tracepoint:
cb1e4e32 7084 return bp_loc_other;
e049a4b5 7085 default:
e2e0b3e5 7086 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5 7087 }
cb1e4e32
PA
7088}
7089
7090bp_location::bp_location (breakpoint *owner, bp_loc_type type)
7091{
7092 this->owner = owner;
7093 this->cond_bytecode = NULL;
7094 this->shlib_disabled = 0;
7095 this->enabled = 1;
b5fa468f 7096 this->disabled_by_cond = false;
cb1e4e32
PA
7097
7098 this->loc_type = type;
e049a4b5 7099
cb1e4e32
PA
7100 if (this->loc_type == bp_loc_software_breakpoint
7101 || this->loc_type == bp_loc_hardware_breakpoint)
7102 mark_breakpoint_location_modified (this);
7103
7104 this->refc = 1;
7105}
7106
7107bp_location::bp_location (breakpoint *owner)
7108 : bp_location::bp_location (owner,
7109 bp_location_from_bp_type (owner->type))
7110{
28010a5d
PA
7111}
7112
7113/* Allocate a struct bp_location. */
7114
7115static struct bp_location *
7116allocate_bp_location (struct breakpoint *bpt)
7117{
348d480f
PA
7118 return bpt->ops->allocate_location (bpt);
7119}
7cc221ef 7120
f431efe5
PA
7121static void
7122free_bp_location (struct bp_location *loc)
fe3f5fa8 7123{
4d01a485 7124 delete loc;
fe3f5fa8
VP
7125}
7126
f431efe5
PA
7127/* Increment reference count. */
7128
7129static void
7130incref_bp_location (struct bp_location *bl)
7131{
7132 ++bl->refc;
7133}
7134
7135/* Decrement reference count. If the reference count reaches 0,
7136 destroy the bp_location. Sets *BLP to NULL. */
7137
7138static void
7139decref_bp_location (struct bp_location **blp)
7140{
0807b50c
PA
7141 gdb_assert ((*blp)->refc > 0);
7142
f431efe5
PA
7143 if (--(*blp)->refc == 0)
7144 free_bp_location (*blp);
7145 *blp = NULL;
7146}
7147
346774a9 7148/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7149
b270e6f9
TT
7150static breakpoint *
7151add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7152{
346774a9 7153 struct breakpoint *b1;
b270e6f9 7154 struct breakpoint *result = b.get ();
c906108c 7155
346774a9
PA
7156 /* Add this breakpoint to the end of the chain so that a list of
7157 breakpoints will come out in order of increasing numbers. */
7158
7159 b1 = breakpoint_chain;
7160 if (b1 == 0)
b270e6f9 7161 breakpoint_chain = b.release ();
346774a9
PA
7162 else
7163 {
7164 while (b1->next)
7165 b1 = b1->next;
b270e6f9 7166 b1->next = b.release ();
346774a9 7167 }
b270e6f9
TT
7168
7169 return result;
346774a9
PA
7170}
7171
7172/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7173
7174static void
7175init_raw_breakpoint_without_location (struct breakpoint *b,
7176 struct gdbarch *gdbarch,
28010a5d 7177 enum bptype bptype,
c0a91b2b 7178 const struct breakpoint_ops *ops)
346774a9 7179{
348d480f
PA
7180 gdb_assert (ops != NULL);
7181
28010a5d 7182 b->ops = ops;
4d28f7a8 7183 b->type = bptype;
a6d9a66e 7184 b->gdbarch = gdbarch;
c906108c
SS
7185 b->language = current_language->la_language;
7186 b->input_radix = input_radix;
d0fb5eae 7187 b->related_breakpoint = b;
346774a9
PA
7188}
7189
7190/* Helper to set_raw_breakpoint below. Creates a breakpoint
7191 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7192
7193static struct breakpoint *
7194set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7195 enum bptype bptype,
c0a91b2b 7196 const struct breakpoint_ops *ops)
346774a9 7197{
3b0871f4 7198 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7199
3b0871f4 7200 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7201 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7202}
7203
0ba852ab 7204/* Initialize loc->function_name. */
0e30163f 7205
0d381245 7206static void
0ba852ab 7207set_breakpoint_location_function (struct bp_location *loc)
0d381245 7208{
2bdf28a0
JK
7209 gdb_assert (loc->owner != NULL);
7210
0d381245 7211 if (loc->owner->type == bp_breakpoint
1042e4c0 7212 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7213 || is_tracepoint (loc->owner))
0d381245 7214 {
2c02bd72 7215 const char *function_name;
0e30163f 7216
3467ec66 7217 if (loc->msymbol != NULL
f50776aa 7218 && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
0ba852ab 7219 || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
0e30163f
JK
7220 {
7221 struct breakpoint *b = loc->owner;
7222
c9d95fa3 7223 function_name = loc->msymbol->linkage_name ();
3467ec66
PA
7224
7225 if (b->type == bp_breakpoint && b->loc == loc
7226 && loc->next == NULL && b->related_breakpoint == b)
0e30163f
JK
7227 {
7228 /* Create only the whole new breakpoint of this type but do not
7229 mess more complicated breakpoints with multiple locations. */
7230 b->type = bp_gnu_ifunc_resolver;
6a3a010b 7231 /* Remember the resolver's address for use by the return
dda83cd7 7232 breakpoint. */
3467ec66 7233 loc->related_address = loc->address;
0e30163f
JK
7234 }
7235 }
3467ec66
PA
7236 else
7237 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
0e30163f 7238
2c02bd72
DE
7239 if (function_name)
7240 loc->function_name = xstrdup (function_name);
0d381245
VP
7241 }
7242}
7243
a6d9a66e 7244/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7245struct gdbarch *
a6d9a66e
UW
7246get_sal_arch (struct symtab_and_line sal)
7247{
7248 if (sal.section)
08feed99 7249 return sal.section->objfile->arch ();
a6d9a66e 7250 if (sal.symtab)
08feed99 7251 return SYMTAB_OBJFILE (sal.symtab)->arch ();
a6d9a66e
UW
7252
7253 return NULL;
7254}
7255
346774a9
PA
7256/* Low level routine for partially initializing a breakpoint of type
7257 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7258 file name, and line number are provided by SAL.
0d381245
VP
7259
7260 It is expected that the caller will complete the initialization of
7261 the newly created breakpoint struct as well as output any status
c56053d2 7262 information regarding the creation of a new breakpoint. */
0d381245 7263
346774a9
PA
7264static void
7265init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7266 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7267 const struct breakpoint_ops *ops)
0d381245 7268{
28010a5d 7269 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7270
3742cc8b 7271 add_location_to_breakpoint (b, &sal);
0d381245 7272
6c95b8df
PA
7273 if (bptype != bp_catchpoint)
7274 gdb_assert (sal.pspace != NULL);
7275
f8eba3c6
TT
7276 /* Store the program space that was used to set the breakpoint,
7277 except for ordinary breakpoints, which are independent of the
7278 program space. */
7279 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7280 b->pspace = sal.pspace;
346774a9 7281}
c906108c 7282
346774a9
PA
7283/* set_raw_breakpoint is a low level routine for allocating and
7284 partially initializing a breakpoint of type BPTYPE. The newly
7285 created breakpoint's address, section, source file name, and line
7286 number are provided by SAL. The newly created and partially
7287 initialized breakpoint is added to the breakpoint chain and
7288 is also returned as the value of this function.
7289
7290 It is expected that the caller will complete the initialization of
7291 the newly created breakpoint struct as well as output any status
7292 information regarding the creation of a new breakpoint. In
7293 particular, set_raw_breakpoint does NOT set the breakpoint
7294 number! Care should be taken to not allow an error to occur
7295 prior to completing the initialization of the breakpoint. If this
7296 should happen, a bogus breakpoint will be left on the chain. */
7297
7298struct breakpoint *
7299set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7300 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7301 const struct breakpoint_ops *ops)
346774a9 7302{
3b0871f4 7303 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7304
3b0871f4 7305 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7306 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7307}
7308
53a5351d 7309/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7310 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7311 initiated the operation. */
c906108c
SS
7312
7313void
186c406b 7314set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7315{
35df4500 7316 struct breakpoint *b, *b_tmp;
5d5658a1 7317 int thread = tp->global_num;
0fd8e87f
UW
7318
7319 /* To avoid having to rescan all objfile symbols at every step,
7320 we maintain a list of continually-inserted but always disabled
7321 longjmp "master" breakpoints. Here, we simply create momentary
7322 clones of those and enable them for the requested thread. */
35df4500 7323 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df 7324 if (b->pspace == current_program_space
186c406b
TT
7325 && (b->type == bp_longjmp_master
7326 || b->type == bp_exception_master))
0fd8e87f 7327 {
06edf0c0
PA
7328 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7329 struct breakpoint *clone;
cc59ec59 7330
e2e4d78b
JK
7331 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7332 after their removal. */
06edf0c0 7333 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7334 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7335 clone->thread = thread;
7336 }
186c406b
TT
7337
7338 tp->initiating_frame = frame;
c906108c
SS
7339}
7340
611c83ae 7341/* Delete all longjmp breakpoints from THREAD. */
c906108c 7342void
611c83ae 7343delete_longjmp_breakpoint (int thread)
c906108c 7344{
35df4500 7345 struct breakpoint *b, *b_tmp;
c906108c 7346
35df4500 7347 ALL_BREAKPOINTS_SAFE (b, b_tmp)
186c406b 7348 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7349 {
7350 if (b->thread == thread)
7351 delete_breakpoint (b);
7352 }
c906108c
SS
7353}
7354
f59f708a
PA
7355void
7356delete_longjmp_breakpoint_at_next_stop (int thread)
7357{
7358 struct breakpoint *b, *b_tmp;
7359
7360 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7361 if (b->type == bp_longjmp || b->type == bp_exception)
7362 {
7363 if (b->thread == thread)
7364 b->disposition = disp_del_at_next_stop;
7365 }
7366}
7367
e2e4d78b
JK
7368/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7369 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7370 pointer to any of them. Return NULL if this system cannot place longjmp
7371 breakpoints. */
7372
7373struct breakpoint *
7374set_longjmp_breakpoint_for_call_dummy (void)
7375{
7376 struct breakpoint *b, *retval = NULL;
7377
7378 ALL_BREAKPOINTS (b)
7379 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7380 {
7381 struct breakpoint *new_b;
7382
7383 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7384 &momentary_breakpoint_ops,
7385 1);
00431a78 7386 new_b->thread = inferior_thread ()->global_num;
e2e4d78b
JK
7387
7388 /* Link NEW_B into the chain of RETVAL breakpoints. */
7389
7390 gdb_assert (new_b->related_breakpoint == new_b);
7391 if (retval == NULL)
7392 retval = new_b;
7393 new_b->related_breakpoint = retval;
7394 while (retval->related_breakpoint != new_b->related_breakpoint)
7395 retval = retval->related_breakpoint;
7396 retval->related_breakpoint = new_b;
7397 }
7398
7399 return retval;
7400}
7401
7402/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7403 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7404 stack.
7405
7406 You should call this function only at places where it is safe to currently
7407 unwind the whole stack. Failed stack unwind would discard live dummy
7408 frames. */
7409
7410void
b67a2c6f 7411check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7412{
7413 struct breakpoint *b, *b_tmp;
7414
7415 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7416 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7417 {
7418 struct breakpoint *dummy_b = b->related_breakpoint;
7419
7420 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7421 dummy_b = dummy_b->related_breakpoint;
7422 if (dummy_b->type != bp_call_dummy
7423 || frame_find_by_id (dummy_b->frame_id) != NULL)
7424 continue;
7425
00431a78 7426 dummy_frame_discard (dummy_b->frame_id, tp);
e2e4d78b
JK
7427
7428 while (b->related_breakpoint != b)
7429 {
7430 if (b_tmp == b->related_breakpoint)
7431 b_tmp = b->related_breakpoint->next;
7432 delete_breakpoint (b->related_breakpoint);
7433 }
7434 delete_breakpoint (b);
7435 }
7436}
7437
1900040c
MS
7438void
7439enable_overlay_breakpoints (void)
7440{
52f0bd74 7441 struct breakpoint *b;
1900040c
MS
7442
7443 ALL_BREAKPOINTS (b)
7444 if (b->type == bp_overlay_event)
7445 {
7446 b->enable_state = bp_enabled;
44702360 7447 update_global_location_list (UGLL_MAY_INSERT);
c02f5703 7448 overlay_events_enabled = 1;
1900040c
MS
7449 }
7450}
7451
7452void
7453disable_overlay_breakpoints (void)
7454{
52f0bd74 7455 struct breakpoint *b;
1900040c
MS
7456
7457 ALL_BREAKPOINTS (b)
7458 if (b->type == bp_overlay_event)
7459 {
7460 b->enable_state = bp_disabled;
44702360 7461 update_global_location_list (UGLL_DONT_INSERT);
c02f5703 7462 overlay_events_enabled = 0;
1900040c
MS
7463 }
7464}
7465
aa7d318d
TT
7466/* Set an active std::terminate breakpoint for each std::terminate
7467 master breakpoint. */
7468void
7469set_std_terminate_breakpoint (void)
7470{
35df4500 7471 struct breakpoint *b, *b_tmp;
aa7d318d 7472
35df4500 7473 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7474 if (b->pspace == current_program_space
7475 && b->type == bp_std_terminate_master)
7476 {
06edf0c0 7477 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7478 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7479 }
7480}
7481
7482/* Delete all the std::terminate breakpoints. */
7483void
7484delete_std_terminate_breakpoint (void)
7485{
35df4500 7486 struct breakpoint *b, *b_tmp;
aa7d318d 7487
35df4500 7488 ALL_BREAKPOINTS_SAFE (b, b_tmp)
aa7d318d
TT
7489 if (b->type == bp_std_terminate)
7490 delete_breakpoint (b);
7491}
7492
c4093a6a 7493struct breakpoint *
a6d9a66e 7494create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7495{
7496 struct breakpoint *b;
c4093a6a 7497
06edf0c0
PA
7498 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7499 &internal_breakpoint_ops);
7500
b5de0fa7 7501 b->enable_state = bp_enabled;
f00aae0f 7502 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7503 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7504
44702360 7505 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7506
c4093a6a
JM
7507 return b;
7508}
7509
0101ce28
JJ
7510struct lang_and_radix
7511 {
7512 enum language lang;
7513 int radix;
7514 };
7515
4efc6507
DE
7516/* Create a breakpoint for JIT code registration and unregistration. */
7517
7518struct breakpoint *
7519create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7520{
2a7f3dff
PA
7521 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7522 &internal_breakpoint_ops);
4efc6507 7523}
0101ce28 7524
03673fc7
PP
7525/* Remove JIT code registration and unregistration breakpoint(s). */
7526
7527void
7528remove_jit_event_breakpoints (void)
7529{
7530 struct breakpoint *b, *b_tmp;
7531
7532 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7533 if (b->type == bp_jit_event
7534 && b->loc->pspace == current_program_space)
7535 delete_breakpoint (b);
7536}
7537
cae688ec
JJ
7538void
7539remove_solib_event_breakpoints (void)
7540{
35df4500 7541 struct breakpoint *b, *b_tmp;
cae688ec 7542
35df4500 7543 ALL_BREAKPOINTS_SAFE (b, b_tmp)
6c95b8df
PA
7544 if (b->type == bp_shlib_event
7545 && b->loc->pspace == current_program_space)
cae688ec
JJ
7546 delete_breakpoint (b);
7547}
7548
f37f681c
PA
7549/* See breakpoint.h. */
7550
7551void
7552remove_solib_event_breakpoints_at_next_stop (void)
7553{
7554 struct breakpoint *b, *b_tmp;
7555
7556 ALL_BREAKPOINTS_SAFE (b, b_tmp)
7557 if (b->type == bp_shlib_event
7558 && b->loc->pspace == current_program_space)
7559 b->disposition = disp_del_at_next_stop;
7560}
7561
04086b45
PA
7562/* Helper for create_solib_event_breakpoint /
7563 create_and_insert_solib_event_breakpoint. Allows specifying which
7564 INSERT_MODE to pass through to update_global_location_list. */
7565
7566static struct breakpoint *
7567create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7568 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7569{
7570 struct breakpoint *b;
7571
06edf0c0
PA
7572 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7573 &internal_breakpoint_ops);
04086b45 7574 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7575 return b;
7576}
7577
04086b45
PA
7578struct breakpoint *
7579create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7580{
7581 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7582}
7583
f37f681c
PA
7584/* See breakpoint.h. */
7585
7586struct breakpoint *
7587create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7588{
7589 struct breakpoint *b;
7590
04086b45
PA
7591 /* Explicitly tell update_global_location_list to insert
7592 locations. */
7593 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7594 if (!b->loc->inserted)
7595 {
7596 delete_breakpoint (b);
7597 return NULL;
7598 }
7599 return b;
7600}
7601
cae688ec
JJ
7602/* Disable any breakpoints that are on code in shared libraries. Only
7603 apply to enabled breakpoints, disabled ones can just stay disabled. */
7604
7605void
cb851954 7606disable_breakpoints_in_shlibs (void)
cae688ec 7607{
876fa593 7608 struct bp_location *loc, **locp_tmp;
cae688ec 7609
876fa593 7610 ALL_BP_LOCATIONS (loc, locp_tmp)
cae688ec 7611 {
2bdf28a0 7612 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7613 struct breakpoint *b = loc->owner;
2bdf28a0 7614
4a64f543
MS
7615 /* We apply the check to all breakpoints, including disabled for
7616 those with loc->duplicate set. This is so that when breakpoint
7617 becomes enabled, or the duplicate is removed, gdb will try to
7618 insert all breakpoints. If we don't set shlib_disabled here,
7619 we'll try to insert those breakpoints and fail. */
1042e4c0 7620 if (((b->type == bp_breakpoint)
508ccb1f 7621 || (b->type == bp_jit_event)
1042e4c0 7622 || (b->type == bp_hardware_breakpoint)
d77f58be 7623 || (is_tracepoint (b)))
6c95b8df 7624 && loc->pspace == current_program_space
0d381245 7625 && !loc->shlib_disabled
6c95b8df 7626 && solib_name_from_address (loc->pspace, loc->address)
a77053c2 7627 )
0d381245
VP
7628 {
7629 loc->shlib_disabled = 1;
7630 }
cae688ec
JJ
7631 }
7632}
7633
63644780
NB
7634/* Disable any breakpoints and tracepoints that are in SOLIB upon
7635 notification of unloaded_shlib. Only apply to enabled breakpoints,
7636 disabled ones can just stay disabled. */
84acb35a 7637
75149521 7638static void
84acb35a
JJ
7639disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7640{
876fa593 7641 struct bp_location *loc, **locp_tmp;
84acb35a
JJ
7642 int disabled_shlib_breaks = 0;
7643
876fa593 7644 ALL_BP_LOCATIONS (loc, locp_tmp)
84acb35a 7645 {
2bdf28a0 7646 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
0d381245 7647 struct breakpoint *b = loc->owner;
cc59ec59 7648
1e4d1764 7649 if (solib->pspace == loc->pspace
e2dd7057 7650 && !loc->shlib_disabled
1e4d1764
YQ
7651 && (((b->type == bp_breakpoint
7652 || b->type == bp_jit_event
7653 || b->type == bp_hardware_breakpoint)
7654 && (loc->loc_type == bp_loc_hardware_breakpoint
7655 || loc->loc_type == bp_loc_software_breakpoint))
7656 || is_tracepoint (b))
e2dd7057 7657 && solib_contains_address_p (solib, loc->address))
84acb35a 7658 {
e2dd7057
PP
7659 loc->shlib_disabled = 1;
7660 /* At this point, we cannot rely on remove_breakpoint
7661 succeeding so we must mark the breakpoint as not inserted
7662 to prevent future errors occurring in remove_breakpoints. */
7663 loc->inserted = 0;
8d3788bd
VP
7664
7665 /* This may cause duplicate notifications for the same breakpoint. */
76727919 7666 gdb::observers::breakpoint_modified.notify (b);
8d3788bd 7667
e2dd7057
PP
7668 if (!disabled_shlib_breaks)
7669 {
223ffa71 7670 target_terminal::ours_for_output ();
3e43a32a
MS
7671 warning (_("Temporarily disabling breakpoints "
7672 "for unloaded shared library \"%s\""),
e2dd7057 7673 solib->so_name);
84acb35a 7674 }
e2dd7057 7675 disabled_shlib_breaks = 1;
84acb35a
JJ
7676 }
7677 }
84acb35a
JJ
7678}
7679
63644780
NB
7680/* Disable any breakpoints and tracepoints in OBJFILE upon
7681 notification of free_objfile. Only apply to enabled breakpoints,
7682 disabled ones can just stay disabled. */
7683
7684static void
7685disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7686{
7687 struct breakpoint *b;
7688
7689 if (objfile == NULL)
7690 return;
7691
d03de421
PA
7692 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7693 managed by the user with add-symbol-file/remove-symbol-file.
7694 Similarly to how breakpoints in shared libraries are handled in
7695 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7696 shlib_disabled so they end up uninserted on the next global
7697 location list update. Shared libraries not loaded by the user
7698 aren't handled here -- they're already handled in
7699 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7700 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7701 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7702 main objfile). */
7703 if ((objfile->flags & OBJF_SHARED) == 0
7704 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7705 return;
7706
7707 ALL_BREAKPOINTS (b)
7708 {
7709 struct bp_location *loc;
7710 int bp_modified = 0;
7711
7712 if (!is_breakpoint (b) && !is_tracepoint (b))
7713 continue;
7714
7715 for (loc = b->loc; loc != NULL; loc = loc->next)
7716 {
7717 CORE_ADDR loc_addr = loc->address;
7718
7719 if (loc->loc_type != bp_loc_hardware_breakpoint
7720 && loc->loc_type != bp_loc_software_breakpoint)
7721 continue;
7722
7723 if (loc->shlib_disabled != 0)
7724 continue;
7725
7726 if (objfile->pspace != loc->pspace)
7727 continue;
7728
7729 if (loc->loc_type != bp_loc_hardware_breakpoint
7730 && loc->loc_type != bp_loc_software_breakpoint)
7731 continue;
7732
7733 if (is_addr_in_objfile (loc_addr, objfile))
7734 {
7735 loc->shlib_disabled = 1;
08351840
PA
7736 /* At this point, we don't know whether the object was
7737 unmapped from the inferior or not, so leave the
7738 inserted flag alone. We'll handle failure to
7739 uninsert quietly, in case the object was indeed
7740 unmapped. */
63644780
NB
7741
7742 mark_breakpoint_location_modified (loc);
7743
7744 bp_modified = 1;
7745 }
7746 }
7747
7748 if (bp_modified)
76727919 7749 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7750 }
7751}
7752
ce78b96d
JB
7753/* FORK & VFORK catchpoints. */
7754
e29a4733 7755/* An instance of this type is used to represent a fork or vfork
c1fc2657
SM
7756 catchpoint. A breakpoint is really of this type iff its ops pointer points
7757 to CATCH_FORK_BREAKPOINT_OPS. */
e29a4733 7758
c1fc2657 7759struct fork_catchpoint : public breakpoint
e29a4733 7760{
e29a4733
PA
7761 /* Process id of a child process whose forking triggered this
7762 catchpoint. This field is only valid immediately after this
7763 catchpoint has triggered. */
7764 ptid_t forked_inferior_pid;
7765};
7766
4a64f543
MS
7767/* Implement the "insert" breakpoint_ops method for fork
7768 catchpoints. */
ce78b96d 7769
77b06cd7
TJB
7770static int
7771insert_catch_fork (struct bp_location *bl)
ce78b96d 7772{
e99b03dc 7773 return target_insert_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7774}
7775
4a64f543
MS
7776/* Implement the "remove" breakpoint_ops method for fork
7777 catchpoints. */
ce78b96d
JB
7778
7779static int
73971819 7780remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7781{
e99b03dc 7782 return target_remove_fork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7783}
7784
7785/* Implement the "breakpoint_hit" breakpoint_ops method for fork
7786 catchpoints. */
7787
7788static int
f1310107 7789breakpoint_hit_catch_fork (const struct bp_location *bl,
bd522513 7790 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7791 const struct target_waitstatus *ws)
ce78b96d 7792{
e29a4733
PA
7793 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7794
f90263c1
TT
7795 if (ws->kind != TARGET_WAITKIND_FORKED)
7796 return 0;
7797
7798 c->forked_inferior_pid = ws->value.related_pid;
7799 return 1;
ce78b96d
JB
7800}
7801
4a64f543
MS
7802/* Implement the "print_it" breakpoint_ops method for fork
7803 catchpoints. */
ce78b96d
JB
7804
7805static enum print_stop_action
348d480f 7806print_it_catch_fork (bpstat bs)
ce78b96d 7807{
36dfb11c 7808 struct ui_out *uiout = current_uiout;
348d480f
PA
7809 struct breakpoint *b = bs->breakpoint_at;
7810 struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
e29a4733 7811
ce78b96d 7812 annotate_catchpoint (b->number);
f303dbd6 7813 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7814 if (b->disposition == disp_del)
112e8700 7815 uiout->text ("Temporary catchpoint ");
36dfb11c 7816 else
112e8700
SM
7817 uiout->text ("Catchpoint ");
7818 if (uiout->is_mi_like_p ())
36dfb11c 7819 {
112e8700
SM
7820 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7821 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7822 }
381befee 7823 uiout->field_signed ("bkptno", b->number);
112e8700 7824 uiout->text (" (forked process ");
381befee 7825 uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
112e8700 7826 uiout->text ("), ");
ce78b96d
JB
7827 return PRINT_SRC_AND_LOC;
7828}
7829
4a64f543
MS
7830/* Implement the "print_one" breakpoint_ops method for fork
7831 catchpoints. */
ce78b96d
JB
7832
7833static void
a6d9a66e 7834print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7835{
e29a4733 7836 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7837 struct value_print_options opts;
79a45e25 7838 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7839
7840 get_user_print_options (&opts);
7841
4a64f543
MS
7842 /* Field 4, the address, is omitted (which makes the columns not
7843 line up too nicely with the headers, but the effect is relatively
7844 readable). */
79a45b7d 7845 if (opts.addressprint)
112e8700 7846 uiout->field_skip ("addr");
ce78b96d 7847 annotate_field (5);
112e8700 7848 uiout->text ("fork");
d7e15655 7849 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7850 {
112e8700 7851 uiout->text (", process ");
381befee 7852 uiout->field_signed ("what", c->forked_inferior_pid.pid ());
112e8700 7853 uiout->spaces (1);
ce78b96d 7854 }
8ac3646f 7855
112e8700
SM
7856 if (uiout->is_mi_like_p ())
7857 uiout->field_string ("catch-type", "fork");
ce78b96d
JB
7858}
7859
7860/* Implement the "print_mention" breakpoint_ops method for fork
7861 catchpoints. */
7862
7863static void
7864print_mention_catch_fork (struct breakpoint *b)
7865{
7866 printf_filtered (_("Catchpoint %d (fork)"), b->number);
7867}
7868
6149aea9
PA
7869/* Implement the "print_recreate" breakpoint_ops method for fork
7870 catchpoints. */
7871
7872static void
7873print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7874{
7875 fprintf_unfiltered (fp, "catch fork");
d9b3f62e 7876 print_recreate_thread (b, fp);
6149aea9
PA
7877}
7878
ce78b96d
JB
7879/* The breakpoint_ops structure to be used in fork catchpoints. */
7880
2060206e 7881static struct breakpoint_ops catch_fork_breakpoint_ops;
ce78b96d 7882
4a64f543
MS
7883/* Implement the "insert" breakpoint_ops method for vfork
7884 catchpoints. */
ce78b96d 7885
77b06cd7
TJB
7886static int
7887insert_catch_vfork (struct bp_location *bl)
ce78b96d 7888{
e99b03dc 7889 return target_insert_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7890}
7891
4a64f543
MS
7892/* Implement the "remove" breakpoint_ops method for vfork
7893 catchpoints. */
ce78b96d
JB
7894
7895static int
73971819 7896remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
ce78b96d 7897{
e99b03dc 7898 return target_remove_vfork_catchpoint (inferior_ptid.pid ());
ce78b96d
JB
7899}
7900
7901/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7902 catchpoints. */
7903
7904static int
f1310107 7905breakpoint_hit_catch_vfork (const struct bp_location *bl,
bd522513 7906 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 7907 const struct target_waitstatus *ws)
ce78b96d 7908{
e29a4733
PA
7909 struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7910
f90263c1
TT
7911 if (ws->kind != TARGET_WAITKIND_VFORKED)
7912 return 0;
7913
7914 c->forked_inferior_pid = ws->value.related_pid;
7915 return 1;
ce78b96d
JB
7916}
7917
4a64f543
MS
7918/* Implement the "print_it" breakpoint_ops method for vfork
7919 catchpoints. */
ce78b96d
JB
7920
7921static enum print_stop_action
348d480f 7922print_it_catch_vfork (bpstat bs)
ce78b96d 7923{
36dfb11c 7924 struct ui_out *uiout = current_uiout;
348d480f 7925 struct breakpoint *b = bs->breakpoint_at;
e29a4733
PA
7926 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7927
ce78b96d 7928 annotate_catchpoint (b->number);
f303dbd6 7929 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 7930 if (b->disposition == disp_del)
112e8700 7931 uiout->text ("Temporary catchpoint ");
36dfb11c 7932 else
112e8700
SM
7933 uiout->text ("Catchpoint ");
7934 if (uiout->is_mi_like_p ())
36dfb11c 7935 {
112e8700
SM
7936 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7937 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 7938 }
381befee 7939 uiout->field_signed ("bkptno", b->number);
112e8700 7940 uiout->text (" (vforked process ");
381befee 7941 uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
112e8700 7942 uiout->text ("), ");
ce78b96d
JB
7943 return PRINT_SRC_AND_LOC;
7944}
7945
4a64f543
MS
7946/* Implement the "print_one" breakpoint_ops method for vfork
7947 catchpoints. */
ce78b96d
JB
7948
7949static void
a6d9a66e 7950print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
ce78b96d 7951{
e29a4733 7952 struct fork_catchpoint *c = (struct fork_catchpoint *) b;
79a45b7d 7953 struct value_print_options opts;
79a45e25 7954 struct ui_out *uiout = current_uiout;
79a45b7d
TT
7955
7956 get_user_print_options (&opts);
4a64f543
MS
7957 /* Field 4, the address, is omitted (which makes the columns not
7958 line up too nicely with the headers, but the effect is relatively
7959 readable). */
79a45b7d 7960 if (opts.addressprint)
112e8700 7961 uiout->field_skip ("addr");
ce78b96d 7962 annotate_field (5);
112e8700 7963 uiout->text ("vfork");
d7e15655 7964 if (c->forked_inferior_pid != null_ptid)
ce78b96d 7965 {
112e8700 7966 uiout->text (", process ");
381befee 7967 uiout->field_signed ("what", c->forked_inferior_pid.pid ());
112e8700 7968 uiout->spaces (1);
ce78b96d 7969 }
8ac3646f 7970
112e8700
SM
7971 if (uiout->is_mi_like_p ())
7972 uiout->field_string ("catch-type", "vfork");
ce78b96d
JB
7973}
7974
7975/* Implement the "print_mention" breakpoint_ops method for vfork
7976 catchpoints. */
7977
7978static void
7979print_mention_catch_vfork (struct breakpoint *b)
7980{
7981 printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7982}
7983
6149aea9
PA
7984/* Implement the "print_recreate" breakpoint_ops method for vfork
7985 catchpoints. */
7986
7987static void
7988print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7989{
7990 fprintf_unfiltered (fp, "catch vfork");
d9b3f62e 7991 print_recreate_thread (b, fp);
6149aea9
PA
7992}
7993
ce78b96d
JB
7994/* The breakpoint_ops structure to be used in vfork catchpoints. */
7995
2060206e 7996static struct breakpoint_ops catch_vfork_breakpoint_ops;
ce78b96d 7997
edcc5120 7998/* An instance of this type is used to represent an solib catchpoint.
c1fc2657 7999 A breakpoint is really of this type iff its ops pointer points to
edcc5120
TT
8000 CATCH_SOLIB_BREAKPOINT_OPS. */
8001
c1fc2657 8002struct solib_catchpoint : public breakpoint
edcc5120 8003{
c1fc2657 8004 ~solib_catchpoint () override;
edcc5120
TT
8005
8006 /* True for "catch load", false for "catch unload". */
b650a282 8007 bool is_load;
edcc5120
TT
8008
8009 /* Regular expression to match, if any. COMPILED is only valid when
8010 REGEX is non-NULL. */
8011 char *regex;
2d7cc5c7 8012 std::unique_ptr<compiled_regex> compiled;
edcc5120
TT
8013};
8014
c1fc2657 8015solib_catchpoint::~solib_catchpoint ()
edcc5120 8016{
c1fc2657 8017 xfree (this->regex);
edcc5120
TT
8018}
8019
8020static int
8021insert_catch_solib (struct bp_location *ignore)
8022{
8023 return 0;
8024}
8025
8026static int
73971819 8027remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
edcc5120
TT
8028{
8029 return 0;
8030}
8031
8032static int
8033breakpoint_hit_catch_solib (const struct bp_location *bl,
bd522513 8034 const address_space *aspace,
edcc5120
TT
8035 CORE_ADDR bp_addr,
8036 const struct target_waitstatus *ws)
8037{
8038 struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8039 struct breakpoint *other;
8040
8041 if (ws->kind == TARGET_WAITKIND_LOADED)
8042 return 1;
8043
8044 ALL_BREAKPOINTS (other)
8045 {
8046 struct bp_location *other_bl;
8047
8048 if (other == bl->owner)
8049 continue;
8050
8051 if (other->type != bp_shlib_event)
8052 continue;
8053
c1fc2657 8054 if (self->pspace != NULL && other->pspace != self->pspace)
edcc5120
TT
8055 continue;
8056
8057 for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8058 {
8059 if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8060 return 1;
8061 }
8062 }
8063
8064 return 0;
8065}
8066
8067static void
8068check_status_catch_solib (struct bpstats *bs)
8069{
8070 struct solib_catchpoint *self
8071 = (struct solib_catchpoint *) bs->breakpoint_at;
edcc5120
TT
8072
8073 if (self->is_load)
8074 {
52941706 8075 for (so_list *iter : current_program_space->added_solibs)
edcc5120
TT
8076 {
8077 if (!self->regex
2d7cc5c7 8078 || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
edcc5120
TT
8079 return;
8080 }
8081 }
8082 else
8083 {
6fb16ce6 8084 for (const std::string &iter : current_program_space->deleted_solibs)
edcc5120
TT
8085 {
8086 if (!self->regex
6fb16ce6 8087 || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
edcc5120
TT
8088 return;
8089 }
8090 }
8091
8092 bs->stop = 0;
8093 bs->print_it = print_it_noop;
8094}
8095
8096static enum print_stop_action
8097print_it_catch_solib (bpstat bs)
8098{
8099 struct breakpoint *b = bs->breakpoint_at;
8100 struct ui_out *uiout = current_uiout;
8101
8102 annotate_catchpoint (b->number);
f303dbd6 8103 maybe_print_thread_hit_breakpoint (uiout);
edcc5120 8104 if (b->disposition == disp_del)
112e8700 8105 uiout->text ("Temporary catchpoint ");
edcc5120 8106 else
112e8700 8107 uiout->text ("Catchpoint ");
381befee 8108 uiout->field_signed ("bkptno", b->number);
112e8700
SM
8109 uiout->text ("\n");
8110 if (uiout->is_mi_like_p ())
8111 uiout->field_string ("disp", bpdisp_text (b->disposition));
edcc5120
TT
8112 print_solib_event (1);
8113 return PRINT_SRC_AND_LOC;
8114}
8115
8116static void
8117print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8118{
8119 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8120 struct value_print_options opts;
8121 struct ui_out *uiout = current_uiout;
edcc5120
TT
8122
8123 get_user_print_options (&opts);
8124 /* Field 4, the address, is omitted (which makes the columns not
8125 line up too nicely with the headers, but the effect is relatively
8126 readable). */
8127 if (opts.addressprint)
8128 {
8129 annotate_field (4);
112e8700 8130 uiout->field_skip ("addr");
edcc5120
TT
8131 }
8132
528e1572 8133 std::string msg;
edcc5120
TT
8134 annotate_field (5);
8135 if (self->is_load)
8136 {
8137 if (self->regex)
528e1572 8138 msg = string_printf (_("load of library matching %s"), self->regex);
edcc5120 8139 else
528e1572 8140 msg = _("load of library");
edcc5120
TT
8141 }
8142 else
8143 {
8144 if (self->regex)
528e1572 8145 msg = string_printf (_("unload of library matching %s"), self->regex);
edcc5120 8146 else
528e1572 8147 msg = _("unload of library");
edcc5120 8148 }
112e8700 8149 uiout->field_string ("what", msg);
8ac3646f 8150
112e8700
SM
8151 if (uiout->is_mi_like_p ())
8152 uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
edcc5120
TT
8153}
8154
8155static void
8156print_mention_catch_solib (struct breakpoint *b)
8157{
8158 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8159
8160 printf_filtered (_("Catchpoint %d (%s)"), b->number,
8161 self->is_load ? "load" : "unload");
8162}
8163
8164static void
8165print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8166{
8167 struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8168
8169 fprintf_unfiltered (fp, "%s %s",
8170 b->disposition == disp_del ? "tcatch" : "catch",
8171 self->is_load ? "load" : "unload");
8172 if (self->regex)
8173 fprintf_unfiltered (fp, " %s", self->regex);
8174 fprintf_unfiltered (fp, "\n");
8175}
8176
8177static struct breakpoint_ops catch_solib_breakpoint_ops;
8178
b650a282 8179/* See breakpoint.h. */
edcc5120 8180
91985142 8181void
b650a282 8182add_solib_catchpoint (const char *arg, bool is_load, bool is_temp, bool enabled)
edcc5120 8183{
edcc5120 8184 struct gdbarch *gdbarch = get_current_arch ();
edcc5120 8185
edcc5120
TT
8186 if (!arg)
8187 arg = "";
f1735a53 8188 arg = skip_spaces (arg);
edcc5120 8189
36bd8eaa 8190 std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
edcc5120
TT
8191
8192 if (*arg != '\0')
8193 {
2d7cc5c7
PA
8194 c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8195 _("Invalid regexp")));
edcc5120
TT
8196 c->regex = xstrdup (arg);
8197 }
8198
8199 c->is_load = is_load;
36bd8eaa 8200 init_catchpoint (c.get (), gdbarch, is_temp, NULL,
edcc5120
TT
8201 &catch_solib_breakpoint_ops);
8202
c1fc2657 8203 c->enable_state = enabled ? bp_enabled : bp_disabled;
91985142 8204
b270e6f9 8205 install_breakpoint (0, std::move (c), 1);
edcc5120
TT
8206}
8207
91985142
MG
8208/* A helper function that does all the work for "catch load" and
8209 "catch unload". */
8210
8211static void
eb4c3f4a 8212catch_load_or_unload (const char *arg, int from_tty, int is_load,
91985142
MG
8213 struct cmd_list_element *command)
8214{
91985142 8215 const int enabled = 1;
b650a282 8216 bool temp = get_cmd_context (command) == CATCH_TEMPORARY;
91985142 8217
b650a282 8218 add_solib_catchpoint (arg, is_load, temp, enabled);
91985142
MG
8219}
8220
edcc5120 8221static void
eb4c3f4a 8222catch_load_command_1 (const char *arg, int from_tty,
edcc5120
TT
8223 struct cmd_list_element *command)
8224{
8225 catch_load_or_unload (arg, from_tty, 1, command);
8226}
8227
8228static void
eb4c3f4a 8229catch_unload_command_1 (const char *arg, int from_tty,
edcc5120
TT
8230 struct cmd_list_element *command)
8231{
8232 catch_load_or_unload (arg, from_tty, 0, command);
8233}
8234
b650a282 8235/* See breakpoint.h. */
ce78b96d 8236
ab04a2af 8237void
346774a9 8238init_catchpoint (struct breakpoint *b,
b650a282 8239 struct gdbarch *gdbarch, bool temp,
63160a43 8240 const char *cond_string,
c0a91b2b 8241 const struct breakpoint_ops *ops)
c906108c 8242{
51abb421 8243 symtab_and_line sal;
6c95b8df 8244 sal.pspace = current_program_space;
c5aa993b 8245
28010a5d 8246 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 8247
1b36a34b 8248 b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
b650a282 8249 b->disposition = temp ? disp_del : disp_donttouch;
346774a9
PA
8250}
8251
28010a5d 8252void
b270e6f9 8253install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 8254{
b270e6f9 8255 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 8256 set_breakpoint_number (internal, b);
558a9d82
YQ
8257 if (is_tracepoint (b))
8258 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
8259 if (!internal)
8260 mention (b);
76727919 8261 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
8262
8263 if (update_gll)
44702360 8264 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
8265}
8266
9b70b993 8267static void
a6d9a66e 8268create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
b650a282 8269 bool temp, const char *cond_string,
dda83cd7 8270 const struct breakpoint_ops *ops)
c906108c 8271{
b270e6f9 8272 std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
ce78b96d 8273
b650a282 8274 init_catchpoint (c.get (), gdbarch, temp, cond_string, ops);
e29a4733
PA
8275
8276 c->forked_inferior_pid = null_ptid;
8277
b270e6f9 8278 install_breakpoint (0, std::move (c), 1);
c906108c
SS
8279}
8280
fe798b75
JB
8281/* Exec catchpoints. */
8282
b4d90040 8283/* An instance of this type is used to represent an exec catchpoint.
c1fc2657 8284 A breakpoint is really of this type iff its ops pointer points to
b4d90040
PA
8285 CATCH_EXEC_BREAKPOINT_OPS. */
8286
c1fc2657 8287struct exec_catchpoint : public breakpoint
b4d90040 8288{
c1fc2657 8289 ~exec_catchpoint () override;
b4d90040
PA
8290
8291 /* Filename of a program whose exec triggered this catchpoint.
8292 This field is only valid immediately after this catchpoint has
8293 triggered. */
8294 char *exec_pathname;
8295};
8296
c1fc2657 8297/* Exec catchpoint destructor. */
b4d90040 8298
c1fc2657 8299exec_catchpoint::~exec_catchpoint ()
b4d90040 8300{
c1fc2657 8301 xfree (this->exec_pathname);
b4d90040
PA
8302}
8303
77b06cd7
TJB
8304static int
8305insert_catch_exec (struct bp_location *bl)
c906108c 8306{
e99b03dc 8307 return target_insert_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8308}
c906108c 8309
fe798b75 8310static int
73971819 8311remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
fe798b75 8312{
e99b03dc 8313 return target_remove_exec_catchpoint (inferior_ptid.pid ());
fe798b75 8314}
c906108c 8315
fe798b75 8316static int
f1310107 8317breakpoint_hit_catch_exec (const struct bp_location *bl,
bd522513 8318 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 8319 const struct target_waitstatus *ws)
fe798b75 8320{
b4d90040
PA
8321 struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8322
f90263c1
TT
8323 if (ws->kind != TARGET_WAITKIND_EXECD)
8324 return 0;
8325
8326 c->exec_pathname = xstrdup (ws->value.execd_pathname);
8327 return 1;
fe798b75 8328}
c906108c 8329
fe798b75 8330static enum print_stop_action
348d480f 8331print_it_catch_exec (bpstat bs)
fe798b75 8332{
36dfb11c 8333 struct ui_out *uiout = current_uiout;
348d480f 8334 struct breakpoint *b = bs->breakpoint_at;
b4d90040
PA
8335 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8336
fe798b75 8337 annotate_catchpoint (b->number);
f303dbd6 8338 maybe_print_thread_hit_breakpoint (uiout);
36dfb11c 8339 if (b->disposition == disp_del)
112e8700 8340 uiout->text ("Temporary catchpoint ");
36dfb11c 8341 else
112e8700
SM
8342 uiout->text ("Catchpoint ");
8343 if (uiout->is_mi_like_p ())
36dfb11c 8344 {
112e8700
SM
8345 uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8346 uiout->field_string ("disp", bpdisp_text (b->disposition));
36dfb11c 8347 }
381befee 8348 uiout->field_signed ("bkptno", b->number);
112e8700
SM
8349 uiout->text (" (exec'd ");
8350 uiout->field_string ("new-exec", c->exec_pathname);
8351 uiout->text ("), ");
36dfb11c 8352
fe798b75 8353 return PRINT_SRC_AND_LOC;
c906108c
SS
8354}
8355
fe798b75 8356static void
a6d9a66e 8357print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
fe798b75 8358{
b4d90040 8359 struct exec_catchpoint *c = (struct exec_catchpoint *) b;
fe798b75 8360 struct value_print_options opts;
79a45e25 8361 struct ui_out *uiout = current_uiout;
fe798b75
JB
8362
8363 get_user_print_options (&opts);
8364
8365 /* Field 4, the address, is omitted (which makes the columns
8366 not line up too nicely with the headers, but the effect
8367 is relatively readable). */
8368 if (opts.addressprint)
112e8700 8369 uiout->field_skip ("addr");
fe798b75 8370 annotate_field (5);
112e8700 8371 uiout->text ("exec");
b4d90040 8372 if (c->exec_pathname != NULL)
fe798b75 8373 {
112e8700
SM
8374 uiout->text (", program \"");
8375 uiout->field_string ("what", c->exec_pathname);
8376 uiout->text ("\" ");
fe798b75 8377 }
8ac3646f 8378
112e8700
SM
8379 if (uiout->is_mi_like_p ())
8380 uiout->field_string ("catch-type", "exec");
fe798b75
JB
8381}
8382
8383static void
8384print_mention_catch_exec (struct breakpoint *b)
8385{
8386 printf_filtered (_("Catchpoint %d (exec)"), b->number);
8387}
8388
6149aea9
PA
8389/* Implement the "print_recreate" breakpoint_ops method for exec
8390 catchpoints. */
8391
8392static void
8393print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8394{
8395 fprintf_unfiltered (fp, "catch exec");
d9b3f62e 8396 print_recreate_thread (b, fp);
6149aea9
PA
8397}
8398
2060206e 8399static struct breakpoint_ops catch_exec_breakpoint_ops;
fe798b75 8400
c906108c 8401static int
fba45db2 8402hw_breakpoint_used_count (void)
c906108c 8403{
c906108c 8404 int i = 0;
f1310107
TJB
8405 struct breakpoint *b;
8406 struct bp_location *bl;
c906108c
SS
8407
8408 ALL_BREAKPOINTS (b)
c5aa993b 8409 {
d6b74ac4 8410 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
f1310107
TJB
8411 for (bl = b->loc; bl; bl = bl->next)
8412 {
8413 /* Special types of hardware breakpoints may use more than
8414 one register. */
348d480f 8415 i += b->ops->resources_needed (bl);
f1310107 8416 }
c5aa993b 8417 }
c906108c
SS
8418
8419 return i;
8420}
8421
a1398e0c
PA
8422/* Returns the resources B would use if it were a hardware
8423 watchpoint. */
8424
c906108c 8425static int
a1398e0c 8426hw_watchpoint_use_count (struct breakpoint *b)
c906108c 8427{
c906108c 8428 int i = 0;
e09342b5 8429 struct bp_location *bl;
c906108c 8430
a1398e0c
PA
8431 if (!breakpoint_enabled (b))
8432 return 0;
8433
8434 for (bl = b->loc; bl; bl = bl->next)
8435 {
8436 /* Special types of hardware watchpoints may use more than
8437 one register. */
8438 i += b->ops->resources_needed (bl);
8439 }
8440
8441 return i;
8442}
8443
8444/* Returns the sum the used resources of all hardware watchpoints of
8445 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
8446 the sum of the used resources of all hardware watchpoints of other
8447 types _not_ TYPE. */
8448
8449static int
8450hw_watchpoint_used_count_others (struct breakpoint *except,
8451 enum bptype type, int *other_type_used)
8452{
8453 int i = 0;
8454 struct breakpoint *b;
8455
c906108c
SS
8456 *other_type_used = 0;
8457 ALL_BREAKPOINTS (b)
e09342b5 8458 {
a1398e0c
PA
8459 if (b == except)
8460 continue;
e09342b5
TJB
8461 if (!breakpoint_enabled (b))
8462 continue;
8463
a1398e0c
PA
8464 if (b->type == type)
8465 i += hw_watchpoint_use_count (b);
8466 else if (is_hardware_watchpoint (b))
8467 *other_type_used = 1;
e09342b5
TJB
8468 }
8469
c906108c
SS
8470 return i;
8471}
8472
c906108c 8473void
fba45db2 8474disable_watchpoints_before_interactive_call_start (void)
c906108c 8475{
c5aa993b 8476 struct breakpoint *b;
c906108c
SS
8477
8478 ALL_BREAKPOINTS (b)
c5aa993b 8479 {
cc60f2e3 8480 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 8481 {
b5de0fa7 8482 b->enable_state = bp_call_disabled;
44702360 8483 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b
JM
8484 }
8485 }
c906108c
SS
8486}
8487
8488void
fba45db2 8489enable_watchpoints_after_interactive_call_stop (void)
c906108c 8490{
c5aa993b 8491 struct breakpoint *b;
c906108c
SS
8492
8493 ALL_BREAKPOINTS (b)
c5aa993b 8494 {
cc60f2e3 8495 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 8496 {
b5de0fa7 8497 b->enable_state = bp_enabled;
44702360 8498 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b
JM
8499 }
8500 }
c906108c
SS
8501}
8502
8bea4e01
UW
8503void
8504disable_breakpoints_before_startup (void)
8505{
6c95b8df 8506 current_program_space->executing_startup = 1;
44702360 8507 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
8508}
8509
8510void
8511enable_breakpoints_after_startup (void)
8512{
6c95b8df 8513 current_program_space->executing_startup = 0;
f8eba3c6 8514 breakpoint_re_set ();
8bea4e01
UW
8515}
8516
7c16b83e
PA
8517/* Create a new single-step breakpoint for thread THREAD, with no
8518 locations. */
c906108c 8519
7c16b83e
PA
8520static struct breakpoint *
8521new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8522{
b270e6f9 8523 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 8524
b270e6f9 8525 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
8526 &momentary_breakpoint_ops);
8527
8528 b->disposition = disp_donttouch;
8529 b->frame_id = null_frame_id;
8530
8531 b->thread = thread;
8532 gdb_assert (b->thread != 0);
8533
b270e6f9 8534 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
8535}
8536
8537/* Set a momentary breakpoint of type TYPE at address specified by
8538 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
8539 frame. */
c906108c 8540
454dafbd 8541breakpoint_up
a6d9a66e
UW
8542set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8543 struct frame_id frame_id, enum bptype type)
c906108c 8544{
52f0bd74 8545 struct breakpoint *b;
edb3359d 8546
193facb3
JK
8547 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8548 tail-called one. */
8549 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 8550
06edf0c0 8551 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
8552 b->enable_state = bp_enabled;
8553 b->disposition = disp_donttouch;
818dd999 8554 b->frame_id = frame_id;
c906108c 8555
00431a78 8556 b->thread = inferior_thread ()->global_num;
c906108c 8557
44702360 8558 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 8559
454dafbd 8560 return breakpoint_up (b);
c906108c 8561}
611c83ae 8562
06edf0c0 8563/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
8564 The new breakpoint will have type TYPE, use OPS as its
8565 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 8566
06edf0c0
PA
8567static struct breakpoint *
8568momentary_breakpoint_from_master (struct breakpoint *orig,
8569 enum bptype type,
a1aa2221
LM
8570 const struct breakpoint_ops *ops,
8571 int loc_enabled)
e58b0e63
PA
8572{
8573 struct breakpoint *copy;
8574
06edf0c0 8575 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 8576 copy->loc = allocate_bp_location (copy);
0ba852ab 8577 set_breakpoint_location_function (copy->loc);
e58b0e63 8578
a6d9a66e 8579 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
8580 copy->loc->requested_address = orig->loc->requested_address;
8581 copy->loc->address = orig->loc->address;
8582 copy->loc->section = orig->loc->section;
6c95b8df 8583 copy->loc->pspace = orig->loc->pspace;
55aa24fb 8584 copy->loc->probe = orig->loc->probe;
f8eba3c6 8585 copy->loc->line_number = orig->loc->line_number;
2f202fde 8586 copy->loc->symtab = orig->loc->symtab;
a1aa2221 8587 copy->loc->enabled = loc_enabled;
e58b0e63
PA
8588 copy->frame_id = orig->frame_id;
8589 copy->thread = orig->thread;
6c95b8df 8590 copy->pspace = orig->pspace;
e58b0e63
PA
8591
8592 copy->enable_state = bp_enabled;
8593 copy->disposition = disp_donttouch;
8594 copy->number = internal_breakpoint_number--;
8595
44702360 8596 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
8597 return copy;
8598}
8599
06edf0c0
PA
8600/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
8601 ORIG is NULL. */
8602
8603struct breakpoint *
8604clone_momentary_breakpoint (struct breakpoint *orig)
8605{
8606 /* If there's nothing to clone, then return nothing. */
8607 if (orig == NULL)
8608 return NULL;
8609
a1aa2221 8610 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
8611}
8612
454dafbd 8613breakpoint_up
a6d9a66e
UW
8614set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8615 enum bptype type)
611c83ae
PA
8616{
8617 struct symtab_and_line sal;
8618
8619 sal = find_pc_line (pc, 0);
8620 sal.pc = pc;
8621 sal.section = find_pc_overlay (pc);
8622 sal.explicit_pc = 1;
8623
a6d9a66e 8624 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 8625}
c906108c 8626\f
c5aa993b 8627
c906108c
SS
8628/* Tell the user we have just set a breakpoint B. */
8629
8630static void
fba45db2 8631mention (struct breakpoint *b)
c906108c 8632{
348d480f 8633 b->ops->print_mention (b);
2d33446d 8634 current_uiout->text ("\n");
c906108c 8635}
c906108c 8636\f
c5aa993b 8637
5133a315 8638static bool bp_loc_is_permanent (struct bp_location *loc);
1a853c52 8639
7f32a4d5
PA
8640/* Handle "set breakpoint auto-hw on".
8641
8642 If the explicitly specified breakpoint type is not hardware
8643 breakpoint, check the memory map to see whether the breakpoint
8644 address is in read-only memory.
8645
8646 - location type is not hardware breakpoint, memory is read-only.
8647 We change the type of the location to hardware breakpoint.
8648
8649 - location type is hardware breakpoint, memory is read-write. This
8650 means we've previously made the location hardware one, but then the
8651 memory map changed, so we undo.
8652*/
8653
8654static void
8655handle_automatic_hardware_breakpoints (bp_location *bl)
8656{
8657 if (automatic_hardware_breakpoints
8658 && bl->owner->type != bp_hardware_breakpoint
8659 && (bl->loc_type == bp_loc_software_breakpoint
8660 || bl->loc_type == bp_loc_hardware_breakpoint))
8661 {
8662 /* When breakpoints are removed, remove_breakpoints will use
8663 location types we've just set here, the only possible problem
8664 is that memory map has changed during running program, but
8665 it's not going to work anyway with current gdb. */
8666 mem_region *mr = lookup_mem_region (bl->address);
8667
8668 if (mr != nullptr)
8669 {
8670 enum bp_loc_type new_type;
8671
8672 if (mr->attrib.mode != MEM_RW)
8673 new_type = bp_loc_hardware_breakpoint;
8674 else
8675 new_type = bp_loc_software_breakpoint;
8676
8677 if (new_type != bl->loc_type)
8678 {
8679 static bool said = false;
8680
8681 bl->loc_type = new_type;
8682 if (!said)
8683 {
8684 fprintf_filtered (gdb_stdout,
8685 _("Note: automatically using "
8686 "hardware breakpoints for "
8687 "read-only addresses.\n"));
8688 said = true;
8689 }
8690 }
8691 }
8692 }
8693}
8694
0d381245 8695static struct bp_location *
39d61571 8696add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8697 const struct symtab_and_line *sal)
8698{
8699 struct bp_location *loc, **tmp;
3742cc8b
YQ
8700 CORE_ADDR adjusted_address;
8701 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8702
8703 if (loc_gdbarch == NULL)
8704 loc_gdbarch = b->gdbarch;
8705
8706 /* Adjust the breakpoint's address prior to allocating a location.
8707 Once we call allocate_bp_location(), that mostly uninitialized
8708 location will be placed on the location chain. Adjustment of the
8709 breakpoint may cause target_read_memory() to be called and we do
8710 not want its scan of the location chain to find a breakpoint and
8711 location that's only been partially initialized. */
8712 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8713 sal->pc, b->type);
0d381245 8714
d30113d4 8715 /* Sort the locations by their ADDRESS. */
39d61571 8716 loc = allocate_bp_location (b);
d30113d4
JK
8717 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8718 tmp = &((*tmp)->next))
0d381245 8719 ;
d30113d4 8720 loc->next = *tmp;
0d381245 8721 *tmp = loc;
3742cc8b 8722
0d381245 8723 loc->requested_address = sal->pc;
3742cc8b 8724 loc->address = adjusted_address;
6c95b8df 8725 loc->pspace = sal->pspace;
935676c9 8726 loc->probe.prob = sal->prob;
729662a5 8727 loc->probe.objfile = sal->objfile;
6c95b8df 8728 gdb_assert (loc->pspace != NULL);
0d381245 8729 loc->section = sal->section;
3742cc8b 8730 loc->gdbarch = loc_gdbarch;
f8eba3c6 8731 loc->line_number = sal->line;
2f202fde 8732 loc->symtab = sal->symtab;
4a27f119 8733 loc->symbol = sal->symbol;
3467ec66
PA
8734 loc->msymbol = sal->msymbol;
8735 loc->objfile = sal->objfile;
f8eba3c6 8736
0ba852ab 8737 set_breakpoint_location_function (loc);
1a853c52 8738
6ae88661
LM
8739 /* While by definition, permanent breakpoints are already present in the
8740 code, we don't mark the location as inserted. Normally one would expect
8741 that GDB could rely on that breakpoint instruction to stop the program,
8742 thus removing the need to insert its own breakpoint, except that executing
8743 the breakpoint instruction can kill the target instead of reporting a
8744 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8745 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8746 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8747 breakpoint be inserted normally results in QEMU knowing about the GDB
8748 breakpoint, and thus trap before the breakpoint instruction is executed.
8749 (If GDB later needs to continue execution past the permanent breakpoint,
8750 it manually increments the PC, thus avoiding executing the breakpoint
8751 instruction.) */
1a853c52 8752 if (bp_loc_is_permanent (loc))
6ae88661 8753 loc->permanent = 1;
1a853c52 8754
0d381245
VP
8755 return loc;
8756}
514f746b
AR
8757\f
8758
5133a315
LM
8759/* Return true if LOC is pointing to a permanent breakpoint,
8760 return false otherwise. */
1cf4d951 8761
5133a315 8762static bool
1cf4d951
PA
8763bp_loc_is_permanent (struct bp_location *loc)
8764{
514f746b
AR
8765 gdb_assert (loc != NULL);
8766
cb1e4e32
PA
8767 /* If we have a non-breakpoint-backed catchpoint or a software
8768 watchpoint, just return 0. We should not attempt to read from
8769 the addresses the locations of these breakpoint types point to.
5133a315 8770 gdbarch_program_breakpoint_here_p, below, will attempt to read
244558af 8771 memory. */
cb1e4e32 8772 if (!bl_address_is_meaningful (loc))
5133a315 8773 return false;
244558af 8774
5ed8105e 8775 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8776 switch_to_program_space_and_thread (loc->pspace);
5133a315 8777 return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8778}
8779
e7e0cddf
SS
8780/* Build a command list for the dprintf corresponding to the current
8781 settings of the dprintf style options. */
8782
8783static void
8784update_dprintf_command_list (struct breakpoint *b)
8785{
8786 char *dprintf_args = b->extra_string;
8787 char *printf_line = NULL;
8788
8789 if (!dprintf_args)
8790 return;
8791
8792 dprintf_args = skip_spaces (dprintf_args);
8793
8794 /* Allow a comma, as it may have terminated a location, but don't
8795 insist on it. */
8796 if (*dprintf_args == ',')
8797 ++dprintf_args;
8798 dprintf_args = skip_spaces (dprintf_args);
8799
8800 if (*dprintf_args != '"')
8801 error (_("Bad format string, missing '\"'."));
8802
d3ce09f5 8803 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8804 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8805 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf
SS
8806 {
8807 if (!dprintf_function)
8808 error (_("No function supplied for dprintf call"));
8809
8810 if (dprintf_channel && strlen (dprintf_channel) > 0)
8811 printf_line = xstrprintf ("call (void) %s (%s,%s)",
8812 dprintf_function,
8813 dprintf_channel,
8814 dprintf_args);
8815 else
8816 printf_line = xstrprintf ("call (void) %s (%s)",
8817 dprintf_function,
8818 dprintf_args);
8819 }
d3ce09f5
SS
8820 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8821 {
8822 if (target_can_run_breakpoint_commands ())
8823 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8824 else
8825 {
8826 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8827 printf_line = xstrprintf ("printf %s", dprintf_args);
8828 }
8829 }
e7e0cddf
SS
8830 else
8831 internal_error (__FILE__, __LINE__,
8832 _("Invalid dprintf style."));
8833
f28045c2 8834 gdb_assert (printf_line != NULL);
e7e0cddf 8835
12973681
TT
8836 /* Manufacture a printf sequence. */
8837 struct command_line *printf_cmd_line
8838 = new struct command_line (simple_control, printf_line);
8839 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8840 command_lines_deleter ()));
e7e0cddf
SS
8841}
8842
8843/* Update all dprintf commands, making their command lists reflect
8844 current style settings. */
8845
8846static void
eb4c3f4a 8847update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8848 struct cmd_list_element *c)
8849{
8850 struct breakpoint *b;
8851
8852 ALL_BREAKPOINTS (b)
8853 {
8854 if (b->type == bp_dprintf)
8855 update_dprintf_command_list (b);
8856 }
8857}
c3f6f71d 8858
f00aae0f
KS
8859/* Create a breakpoint with SAL as location. Use LOCATION
8860 as a description of the location, and COND_STRING
b35a8b2f
DE
8861 as condition expression. If LOCATION is NULL then create an
8862 "address location" from the address in the SAL. */
018d34a4
VP
8863
8864static void
d9b3f62e 8865init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8866 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8867 event_location_up &&location,
e1e01040
PA
8868 gdb::unique_xmalloc_ptr<char> filter,
8869 gdb::unique_xmalloc_ptr<char> cond_string,
8870 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8871 enum bptype type, enum bpdisp disposition,
8872 int thread, int task, int ignore_count,
c0a91b2b 8873 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8874 int enabled, int internal, unsigned flags,
8875 int display_canonical)
018d34a4 8876{
0d381245 8877 int i;
018d34a4
VP
8878
8879 if (type == bp_hardware_breakpoint)
8880 {
fbbd034e
AS
8881 int target_resources_ok;
8882
8883 i = hw_breakpoint_used_count ();
8884 target_resources_ok =
8885 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8886 i + 1, 0);
8887 if (target_resources_ok == 0)
8888 error (_("No hardware breakpoint support in the target."));
8889 else if (target_resources_ok < 0)
8890 error (_("Hardware breakpoints used exceeds limit."));
8891 }
8892
6c5b2ebe 8893 gdb_assert (!sals.empty ());
6c95b8df 8894
6c5b2ebe 8895 for (const auto &sal : sals)
0d381245 8896 {
0d381245
VP
8897 struct bp_location *loc;
8898
8899 if (from_tty)
5af949e3
UW
8900 {
8901 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8902 if (!loc_gdbarch)
8903 loc_gdbarch = gdbarch;
8904
8905 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8906 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8907 }
0d381245 8908
6c5b2ebe 8909 if (&sal == &sals[0])
0d381245 8910 {
d9b3f62e 8911 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8912 b->thread = thread;
4a306c9a 8913 b->task = task;
855a6e68 8914
e1e01040
PA
8915 b->cond_string = cond_string.release ();
8916 b->extra_string = extra_string.release ();
0d381245 8917 b->ignore_count = ignore_count;
41447f92 8918 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8919 b->disposition = disposition;
6c95b8df 8920
44f238bb
PA
8921 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8922 b->loc->inserted = 1;
8923
0fb4aa4b
PA
8924 if (type == bp_static_tracepoint)
8925 {
d9b3f62e 8926 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8927 struct static_tracepoint_marker marker;
8928
983af33b 8929 if (strace_marker_p (b))
0fb4aa4b
PA
8930 {
8931 /* We already know the marker exists, otherwise, we
8932 wouldn't see a sal for it. */
d28cd78a
TT
8933 const char *p
8934 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8935 const char *endp;
0fb4aa4b 8936
f1735a53 8937 p = skip_spaces (p);
0fb4aa4b 8938
f1735a53 8939 endp = skip_to_space (p);
0fb4aa4b 8940
5d9310c4 8941 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8942
3e43a32a
MS
8943 printf_filtered (_("Probed static tracepoint "
8944 "marker \"%s\"\n"),
5d9310c4 8945 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8946 }
8947 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8948 {
5d9310c4 8949 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8950
3e43a32a
MS
8951 printf_filtered (_("Probed static tracepoint "
8952 "marker \"%s\"\n"),
5d9310c4 8953 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8954 }
8955 else
3e43a32a
MS
8956 warning (_("Couldn't determine the static "
8957 "tracepoint marker to probe"));
0fb4aa4b
PA
8958 }
8959
0d381245
VP
8960 loc = b->loc;
8961 }
8962 else
018d34a4 8963 {
39d61571 8964 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8965 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8966 loc->inserted = 1;
0d381245
VP
8967 }
8968
b5fa468f
TBA
8969 /* Do not set breakpoint locations conditions yet. As locations
8970 are inserted, they get sorted based on their addresses. Let
8971 the list stabilize to have reliable location numbers. */
e7e0cddf
SS
8972
8973 /* Dynamic printf requires and uses additional arguments on the
8974 command line, otherwise it's an error. */
8975 if (type == bp_dprintf)
8976 {
8977 if (b->extra_string)
8978 update_dprintf_command_list (b);
8979 else
8980 error (_("Format string required"));
8981 }
8982 else if (b->extra_string)
588ae58c 8983 error (_("Garbage '%s' at end of command"), b->extra_string);
855a6e68 8984 }
018d34a4 8985
b5fa468f
TBA
8986
8987 /* The order of the locations is now stable. Set the location
8988 condition using the location's number. */
8989 int loc_num = 1;
8990 for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
8991 {
8992 if (b->cond_string != nullptr)
8993 set_breakpoint_location_condition (b->cond_string, loc, b->number,
8994 loc_num);
8995
8996 ++loc_num;
8997 }
8998
56435ebe 8999 b->display_canonical = display_canonical;
f00aae0f 9000 if (location != NULL)
d28cd78a 9001 b->location = std::move (location);
018d34a4 9002 else
d28cd78a 9003 b->location = new_address_location (b->loc->address, NULL, 0);
c0e8dcd8 9004 b->filter = std::move (filter);
d9b3f62e 9005}
018d34a4 9006
d9b3f62e
PA
9007static void
9008create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 9009 gdb::array_view<const symtab_and_line> sals,
ffc2605c 9010 event_location_up &&location,
e1e01040
PA
9011 gdb::unique_xmalloc_ptr<char> filter,
9012 gdb::unique_xmalloc_ptr<char> cond_string,
9013 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
9014 enum bptype type, enum bpdisp disposition,
9015 int thread, int task, int ignore_count,
c0a91b2b 9016 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
9017 int enabled, int internal, unsigned flags,
9018 int display_canonical)
d9b3f62e 9019{
a5e364af 9020 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 9021
a5e364af 9022 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 9023 sals, std::move (location),
e1e01040
PA
9024 std::move (filter),
9025 std::move (cond_string),
9026 std::move (extra_string),
d9b3f62e
PA
9027 type, disposition,
9028 thread, task, ignore_count,
9029 ops, from_tty,
44f238bb
PA
9030 enabled, internal, flags,
9031 display_canonical);
d9b3f62e 9032
b270e6f9 9033 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
9034}
9035
9036/* Add SALS.nelts breakpoints to the breakpoint table. For each
9037 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9038 value. COND_STRING, if not NULL, specified the condition to be
9039 used for all breakpoints. Essentially the only case where
9040 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9041 function. In that case, it's still not possible to specify
9042 separate conditions for different overloaded functions, so
9043 we take just a single condition string.
9044
c3f6f71d 9045 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 9046 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
9047 array contents). If the function fails (error() is called), the
9048 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 9049 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
9050
9051static void
8cdf0e15 9052create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 9053 struct linespec_result *canonical,
e1e01040
PA
9054 gdb::unique_xmalloc_ptr<char> cond_string,
9055 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
9056 enum bptype type, enum bpdisp disposition,
9057 int thread, int task, int ignore_count,
c0a91b2b 9058 const struct breakpoint_ops *ops, int from_tty,
44f238bb 9059 int enabled, int internal, unsigned flags)
c906108c 9060{
f8eba3c6 9061 if (canonical->pre_expanded)
6c5b2ebe 9062 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 9063
6c5b2ebe 9064 for (const auto &lsal : canonical->lsals)
c3f6f71d 9065 {
f00aae0f 9066 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 9067 'break', without arguments. */
ffc2605c 9068 event_location_up location
f00aae0f 9069 = (canonical->location != NULL
8e9e35b1 9070 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 9071 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 9072 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 9073
6c5b2ebe 9074 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 9075 std::move (location),
e1e01040
PA
9076 std::move (filter_string),
9077 std::move (cond_string),
9078 std::move (extra_string),
e7e0cddf 9079 type, disposition,
84f4c1fe 9080 thread, task, ignore_count, ops,
44f238bb 9081 from_tty, enabled, internal, flags,
56435ebe 9082 canonical->special_display);
c3f6f71d 9083 }
c3f6f71d 9084}
c906108c 9085
f00aae0f 9086/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 9087 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
9088 addresses found. LOCATION points to the end of the SAL (for
9089 linespec locations).
9998af43
TJB
9090
9091 The array and the line spec strings are allocated on the heap, it is
9092 the caller's responsibility to free them. */
c906108c 9093
b9362cc7 9094static void
626d2320 9095parse_breakpoint_sals (struct event_location *location,
58438ac1 9096 struct linespec_result *canonical)
c3f6f71d 9097{
f00aae0f
KS
9098 struct symtab_and_line cursal;
9099
9100 if (event_location_type (location) == LINESPEC_LOCATION)
9101 {
a20714ff 9102 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 9103
a20714ff 9104 if (spec == NULL)
f00aae0f
KS
9105 {
9106 /* The last displayed codepoint, if it's valid, is our default
9107 breakpoint address. */
9108 if (last_displayed_sal_is_valid ())
9109 {
f00aae0f
KS
9110 /* Set sal's pspace, pc, symtab, and line to the values
9111 corresponding to the last call to print_frame_info.
9112 Be sure to reinitialize LINE with NOTCURRENT == 0
9113 as the breakpoint line number is inappropriate otherwise.
9114 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
9115 symtab_and_line sal = get_last_displayed_sal ();
9116 CORE_ADDR pc = sal.pc;
9117
f00aae0f
KS
9118 sal = find_pc_line (pc, 0);
9119
9120 /* "break" without arguments is equivalent to "break *PC"
9121 where PC is the last displayed codepoint's address. So
9122 make sure to set sal.explicit_pc to prevent GDB from
9123 trying to expand the list of sals to include all other
9124 instances with the same symtab and line. */
9125 sal.pc = pc;
9126 sal.explicit_pc = 1;
9127
6c5b2ebe
PA
9128 struct linespec_sals lsal;
9129 lsal.sals = {sal};
f00aae0f
KS
9130 lsal.canonical = NULL;
9131
6c5b2ebe 9132 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
9133 return;
9134 }
9135 else
9136 error (_("No default breakpoint address now."));
c906108c 9137 }
c906108c 9138 }
f00aae0f
KS
9139
9140 /* Force almost all breakpoints to be in terms of the
9141 current_source_symtab (which is decode_line_1's default).
9142 This should produce the results we want almost all of the
9143 time while leaving default_breakpoint_* alone.
9144
9145 ObjC: However, don't match an Objective-C method name which
9146 may have a '+' or '-' succeeded by a '['. */
9147 cursal = get_current_source_symtab_and_line ();
9148 if (last_displayed_sal_is_valid ())
c906108c 9149 {
a20714ff 9150 const char *spec = NULL;
cc80f267 9151
f00aae0f 9152 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 9153 spec = get_linespec_location (location)->spec_string;
cc80f267 9154
f00aae0f 9155 if (!cursal.symtab
a20714ff
PA
9156 || (spec != NULL
9157 && strchr ("+-", spec[0]) != NULL
9158 && spec[1] != '['))
f00aae0f 9159 {
c2f4122d 9160 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
9161 get_last_displayed_symtab (),
9162 get_last_displayed_line (),
9163 canonical, NULL, NULL);
9164 return;
9165 }
c906108c 9166 }
f00aae0f 9167
c2f4122d 9168 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 9169 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 9170}
c906108c 9171
c906108c 9172
c3f6f71d 9173/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 9174 inserted as a breakpoint. If it can't throw an error. */
c906108c 9175
b9362cc7 9176static void
6c5b2ebe 9177breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 9178{
6c5b2ebe
PA
9179 for (auto &sal : sals)
9180 resolve_sal_pc (&sal);
c3f6f71d
JM
9181}
9182
7a697b8d
SS
9183/* Fast tracepoints may have restrictions on valid locations. For
9184 instance, a fast tracepoint using a jump instead of a trap will
9185 likely have to overwrite more bytes than a trap would, and so can
9186 only be placed where the instruction is longer than the jump, or a
9187 multi-instruction sequence does not have a jump into the middle of
9188 it, etc. */
9189
9190static void
9191check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 9192 gdb::array_view<const symtab_and_line> sals)
7a697b8d 9193{
6c5b2ebe 9194 for (const auto &sal : sals)
7a697b8d 9195 {
f8eba3c6
TT
9196 struct gdbarch *sarch;
9197
6c5b2ebe 9198 sarch = get_sal_arch (sal);
f8eba3c6
TT
9199 /* We fall back to GDBARCH if there is no architecture
9200 associated with SAL. */
9201 if (sarch == NULL)
9202 sarch = gdbarch;
281d762b
TT
9203 std::string msg;
9204 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 9205 error (_("May not have a fast tracepoint at %s%s"),
281d762b 9206 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
9207 }
9208}
9209
018d34a4
VP
9210/* Given TOK, a string specification of condition and thread, as
9211 accepted by the 'break' command, extract the condition
9212 string and thread number and set *COND_STRING and *THREAD.
4a64f543 9213 PC identifies the context at which the condition should be parsed.
018d34a4
VP
9214 If no condition is found, *COND_STRING is set to NULL.
9215 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
9216
9217static void
bbc13ae3 9218find_condition_and_thread (const char *tok, CORE_ADDR pc,
e7e0cddf
SS
9219 char **cond_string, int *thread, int *task,
9220 char **rest)
018d34a4
VP
9221{
9222 *cond_string = NULL;
9223 *thread = -1;
ed1d1739
KS
9224 *task = 0;
9225 *rest = NULL;
733d554a 9226 bool force = false;
ed1d1739 9227
018d34a4
VP
9228 while (tok && *tok)
9229 {
bbc13ae3 9230 const char *end_tok;
018d34a4 9231 int toklen;
bbc13ae3
KS
9232 const char *cond_start = NULL;
9233 const char *cond_end = NULL;
cc59ec59 9234
f1735a53 9235 tok = skip_spaces (tok);
e7e0cddf
SS
9236
9237 if ((*tok == '"' || *tok == ',') && rest)
9238 {
9239 *rest = savestring (tok, strlen (tok));
9240 return;
9241 }
9242
f1735a53 9243 end_tok = skip_to_space (tok);
d634f2de 9244
018d34a4 9245 toklen = end_tok - tok;
d634f2de 9246
018d34a4
VP
9247 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9248 {
9249 tok = cond_start = end_tok + 1;
733d554a
TBA
9250 try
9251 {
9252 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9253 }
9254 catch (const gdb_exception_error &)
9255 {
9256 if (!force)
9257 throw;
9258 else
9259 tok = tok + strlen (tok);
9260 }
018d34a4 9261 cond_end = tok;
d634f2de 9262 *cond_string = savestring (cond_start, cond_end - cond_start);
018d34a4 9263 }
733d554a
TBA
9264 else if (toklen >= 1 && strncmp (tok, "-force-condition", toklen) == 0)
9265 {
5759831a 9266 tok = tok + toklen;
733d554a
TBA
9267 force = true;
9268 }
018d34a4
VP
9269 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9270 {
5d5658a1
PA
9271 const char *tmptok;
9272 struct thread_info *thr;
d634f2de 9273
018d34a4 9274 tok = end_tok + 1;
5d5658a1 9275 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
9276 if (tok == tmptok)
9277 error (_("Junk after thread keyword."));
5d5658a1 9278 *thread = thr->global_num;
bbc13ae3 9279 tok = tmptok;
018d34a4 9280 }
4a306c9a
JB
9281 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9282 {
9283 char *tmptok;
9284
9285 tok = end_tok + 1;
bbc13ae3 9286 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
9287 if (tok == tmptok)
9288 error (_("Junk after task keyword."));
9289 if (!valid_task_id (*task))
b6199126 9290 error (_("Unknown task %d."), *task);
bbc13ae3 9291 tok = tmptok;
4a306c9a 9292 }
e7e0cddf
SS
9293 else if (rest)
9294 {
9295 *rest = savestring (tok, strlen (tok));
ccab2054 9296 return;
e7e0cddf 9297 }
018d34a4
VP
9298 else
9299 error (_("Junk at end of arguments."));
9300 }
9301}
9302
b5fa468f
TBA
9303/* Call 'find_condition_and_thread' for each sal in SALS until a parse
9304 succeeds. The parsed values are written to COND_STRING, THREAD,
9305 TASK, and REST. See the comment of 'find_condition_and_thread'
9306 for the description of these parameters and INPUT. */
9307
9308static void
9309find_condition_and_thread_for_sals (const std::vector<symtab_and_line> &sals,
9310 const char *input, char **cond_string,
9311 int *thread, int *task, char **rest)
9312{
9313 int num_failures = 0;
9314 for (auto &sal : sals)
9315 {
9316 char *cond = nullptr;
9317 int thread_id = 0;
9318 int task_id = 0;
9319 char *remaining = nullptr;
9320
9321 /* Here we want to parse 'arg' to separate condition from thread
9322 number. But because parsing happens in a context and the
9323 contexts of sals might be different, try each until there is
9324 success. Finding one successful parse is sufficient for our
9325 goal. When setting the breakpoint we'll re-parse the
9326 condition in the context of each sal. */
9327 try
9328 {
9329 find_condition_and_thread (input, sal.pc, &cond, &thread_id,
9330 &task_id, &remaining);
9331 *cond_string = cond;
9332 *thread = thread_id;
9333 *task = task_id;
9334 *rest = remaining;
9335 break;
9336 }
9337 catch (const gdb_exception_error &e)
9338 {
9339 num_failures++;
9340 /* If no sal remains, do not continue. */
9341 if (num_failures == sals.size ())
9342 throw;
9343 }
9344 }
9345}
9346
0fb4aa4b
PA
9347/* Decode a static tracepoint marker spec. */
9348
6c5b2ebe 9349static std::vector<symtab_and_line>
f00aae0f 9350decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 9351{
f00aae0f
KS
9352 const char *p = &(*arg_p)[3];
9353 const char *endp;
0fb4aa4b 9354
f1735a53 9355 p = skip_spaces (p);
0fb4aa4b 9356
f1735a53 9357 endp = skip_to_space (p);
0fb4aa4b 9358
81b1e71c 9359 std::string marker_str (p, endp - p);
0fb4aa4b 9360
5d9310c4
SM
9361 std::vector<static_tracepoint_marker> markers
9362 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9363 if (markers.empty ())
81b1e71c
TT
9364 error (_("No known static tracepoint marker named %s"),
9365 marker_str.c_str ());
0fb4aa4b 9366
6c5b2ebe 9367 std::vector<symtab_and_line> sals;
5d9310c4 9368 sals.reserve (markers.size ());
0fb4aa4b 9369
5d9310c4 9370 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 9371 {
5d9310c4
SM
9372 symtab_and_line sal = find_pc_line (marker.address, 0);
9373 sal.pc = marker.address;
6c5b2ebe 9374 sals.push_back (sal);
5d9310c4 9375 }
0fb4aa4b 9376
0fb4aa4b
PA
9377 *arg_p = endp;
9378 return sals;
9379}
9380
bac7c5cf
GB
9381/* Returns the breakpoint ops appropriate for use with with LOCATION_TYPE and
9382 according to IS_TRACEPOINT. */
9383
9384static const struct breakpoint_ops *
9385breakpoint_ops_for_event_location_type (enum event_location_type location_type,
9386 bool is_tracepoint)
9387{
9388 if (is_tracepoint)
9389 {
9390 if (location_type == PROBE_LOCATION)
9391 return &tracepoint_probe_breakpoint_ops;
9392 else
9393 return &tracepoint_breakpoint_ops;
9394 }
9395 else
9396 {
9397 if (location_type == PROBE_LOCATION)
9398 return &bkpt_probe_breakpoint_ops;
9399 else
9400 return &bkpt_breakpoint_ops;
9401 }
9402}
9403
9404/* See breakpoint.h. */
9405
9406const struct breakpoint_ops *
9407breakpoint_ops_for_event_location (const struct event_location *location,
9408 bool is_tracepoint)
9409{
9410 if (location != nullptr)
9411 return breakpoint_ops_for_event_location_type
9412 (event_location_type (location), is_tracepoint);
9413 return is_tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops;
9414}
9415
f00aae0f 9416/* See breakpoint.h. */
0101ce28 9417
8cdf0e15
VP
9418int
9419create_breakpoint (struct gdbarch *gdbarch,
626d2320 9420 struct event_location *location,
e1e01040
PA
9421 const char *cond_string,
9422 int thread, const char *extra_string,
f00aae0f 9423 int parse_extra,
0fb4aa4b 9424 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
9425 int ignore_count,
9426 enum auto_boolean pending_break_support,
c0a91b2b 9427 const struct breakpoint_ops *ops,
44f238bb
PA
9428 int from_tty, int enabled, int internal,
9429 unsigned flags)
c3f6f71d 9430{
7efd8fc2 9431 struct linespec_result canonical;
0101ce28 9432 int pending = 0;
4a306c9a 9433 int task = 0;
86b17b60 9434 int prev_bkpt_count = breakpoint_count;
c3f6f71d 9435
348d480f
PA
9436 gdb_assert (ops != NULL);
9437
f00aae0f
KS
9438 /* If extra_string isn't useful, set it to NULL. */
9439 if (extra_string != NULL && *extra_string == '\0')
9440 extra_string = NULL;
9441
a70b8144 9442 try
b78a6381 9443 {
f00aae0f 9444 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 9445 }
230d2906 9446 catch (const gdb_exception_error &e)
0101ce28 9447 {
492d29ea
PA
9448 /* If caller is interested in rc value from parse, set
9449 value. */
9450 if (e.error == NOT_FOUND_ERROR)
0101ce28 9451 {
05ff989b
AC
9452 /* If pending breakpoint support is turned off, throw
9453 error. */
fa8d40ab
JJ
9454
9455 if (pending_break_support == AUTO_BOOLEAN_FALSE)
eedc3f4f 9456 throw;
723a2275
VP
9457
9458 exception_print (gdb_stderr, e);
fa8d40ab 9459
dda83cd7 9460 /* If pending breakpoint support is auto query and the user
05ff989b 9461 selects no, then simply return the error code. */
059fb39f 9462 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
9463 && !nquery (_("Make %s pending on future shared library load? "),
9464 bptype_string (type_wanted)))
fd9b8c24 9465 return 0;
fa8d40ab 9466
05ff989b
AC
9467 /* At this point, either the user was queried about setting
9468 a pending breakpoint and selected yes, or pending
9469 breakpoint behavior is on and thus a pending breakpoint
9470 is defaulted on behalf of the user. */
f00aae0f 9471 pending = 1;
0101ce28 9472 }
492d29ea 9473 else
eedc3f4f 9474 throw;
0101ce28 9475 }
492d29ea 9476
6c5b2ebe 9477 if (!pending && canonical.lsals.empty ())
492d29ea 9478 return 0;
c3f6f71d 9479
c3f6f71d
JM
9480 /* Resolve all line numbers to PC's and verify that the addresses
9481 are ok for the target. */
0101ce28 9482 if (!pending)
f8eba3c6 9483 {
6c5b2ebe
PA
9484 for (auto &lsal : canonical.lsals)
9485 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 9486 }
c3f6f71d 9487
7a697b8d 9488 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 9489 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 9490 {
6c5b2ebe
PA
9491 for (const auto &lsal : canonical.lsals)
9492 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 9493 }
7a697b8d 9494
c3f6f71d
JM
9495 /* Verify that condition can be parsed, before setting any
9496 breakpoints. Allocate a separate condition expression for each
4a64f543 9497 breakpoint. */
0101ce28 9498 if (!pending)
c3f6f71d 9499 {
e1e01040
PA
9500 gdb::unique_xmalloc_ptr<char> cond_string_copy;
9501 gdb::unique_xmalloc_ptr<char> extra_string_copy;
9502
f00aae0f 9503 if (parse_extra)
dda83cd7 9504 {
0878d0fa 9505 char *rest;
e1e01040 9506 char *cond;
52d361e1 9507
6c5b2ebe 9508 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 9509
b5fa468f
TBA
9510 find_condition_and_thread_for_sals (lsal.sals, extra_string,
9511 &cond, &thread, &task, &rest);
e1e01040
PA
9512 cond_string_copy.reset (cond);
9513 extra_string_copy.reset (rest);
dda83cd7 9514 }
2f069f6f 9515 else
dda83cd7 9516 {
f00aae0f
KS
9517 if (type_wanted != bp_dprintf
9518 && extra_string != NULL && *extra_string != '\0')
9519 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa
YQ
9520
9521 /* Create a private copy of condition string. */
9522 if (cond_string)
e1e01040 9523 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
9524 /* Create a private copy of any extra string. */
9525 if (extra_string)
e1e01040 9526 extra_string_copy.reset (xstrdup (extra_string));
dda83cd7 9527 }
0fb4aa4b 9528
52d361e1 9529 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
9530 std::move (cond_string_copy),
9531 std::move (extra_string_copy),
9532 type_wanted,
d9b3f62e
PA
9533 tempflag ? disp_del : disp_donttouch,
9534 thread, task, ignore_count, ops,
44f238bb 9535 from_tty, enabled, internal, flags);
c906108c 9536 }
0101ce28
JJ
9537 else
9538 {
a5e364af 9539 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 9540
a5e364af 9541 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 9542 b->location = copy_event_location (location);
bfccc43c 9543
f00aae0f
KS
9544 if (parse_extra)
9545 b->cond_string = NULL;
e12c7713
MK
9546 else
9547 {
9548 /* Create a private copy of condition string. */
e1e01040 9549 b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
15630549 9550 b->thread = thread;
e12c7713 9551 }
f00aae0f
KS
9552
9553 /* Create a private copy of any extra string. */
e1e01040 9554 b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
0101ce28 9555 b->ignore_count = ignore_count;
0101ce28 9556 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 9557 b->condition_not_parsed = 1;
41447f92 9558 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2 9559 if ((type_wanted != bp_breakpoint
dda83cd7 9560 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 9561 b->pspace = current_program_space;
8bea4e01 9562
b270e6f9 9563 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
9564 }
9565
6c5b2ebe 9566 if (canonical.lsals.size () > 1)
95a42b64 9567 {
3e43a32a
MS
9568 warning (_("Multiple breakpoints were set.\nUse the "
9569 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 9570 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
9571 }
9572
44702360 9573 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
9574
9575 return 1;
c3f6f71d 9576}
c906108c 9577
348d480f 9578/* Set a breakpoint.
72b2ff0e
VP
9579 ARG is a string describing breakpoint address,
9580 condition, and thread.
9581 FLAG specifies if a breakpoint is hardware on,
9582 and if breakpoint is temporary, using BP_HARDWARE_FLAG
9583 and BP_TEMPFLAG. */
348d480f 9584
98deb0da 9585static void
f2fc3015 9586break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 9587{
72b2ff0e 9588 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
9589 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9590 ? bp_hardware_breakpoint
9591 : bp_breakpoint);
f00aae0f 9592
ffc2605c 9593 event_location_up location = string_to_event_location (&arg, current_language);
bac7c5cf
GB
9594 const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
9595 (location.get (), false /* is_tracepoint */);
c3f6f71d 9596
8cdf0e15 9597 create_breakpoint (get_current_arch (),
ffc2605c 9598 location.get (),
f00aae0f 9599 NULL, 0, arg, 1 /* parse arg */,
0fb4aa4b 9600 tempflag, type_wanted,
8cdf0e15
VP
9601 0 /* Ignore count */,
9602 pending_break_support,
55aa24fb 9603 ops,
8cdf0e15 9604 from_tty,
84f4c1fe 9605 1 /* enabled */,
44f238bb
PA
9606 0 /* internal */,
9607 0);
c906108c
SS
9608}
9609
c906108c
SS
9610/* Helper function for break_command_1 and disassemble_command. */
9611
9612void
fba45db2 9613resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
9614{
9615 CORE_ADDR pc;
9616
9617 if (sal->pc == 0 && sal->symtab != NULL)
9618 {
9619 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9620 error (_("No line %d in file \"%s\"."),
05cba821 9621 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9622 sal->pc = pc;
6a048695 9623
4a64f543 9624 /* If this SAL corresponds to a breakpoint inserted using a line
dda83cd7 9625 number, then skip the function prologue if necessary. */
6a048695 9626 if (sal->explicit_line)
059acae7 9627 skip_prologue_sal (sal);
c906108c
SS
9628 }
9629
9630 if (sal->section == 0 && sal->symtab != NULL)
9631 {
346d1dfe 9632 const struct blockvector *bv;
3977b71f 9633 const struct block *b;
c5aa993b 9634 struct symbol *sym;
c906108c 9635
43f3e411
DE
9636 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9637 SYMTAB_COMPUNIT (sal->symtab));
c906108c
SS
9638 if (bv != NULL)
9639 {
7f0df278 9640 sym = block_linkage_function (b);
c906108c
SS
9641 if (sym != NULL)
9642 {
eb822aa6
DE
9643 fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9644 sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9645 sym);
c906108c
SS
9646 }
9647 else
9648 {
4a64f543 9649 /* It really is worthwhile to have the section, so we'll
dda83cd7
SM
9650 just have to look harder. This case can be executed
9651 if we have line numbers but no functions (as can
9652 happen in assembly source). */
c906108c 9653
5ed8105e 9654 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9655 switch_to_program_space_and_thread (sal->pspace);
c906108c 9656
5ed8105e 9657 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9658 if (msym.minsym)
efd66ac6 9659 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
c906108c
SS
9660 }
9661 }
9662 }
9663}
9664
9665void
0b39b52e 9666break_command (const char *arg, int from_tty)
c906108c 9667{
db107f19 9668 break_command_1 (arg, 0, from_tty);
c906108c
SS
9669}
9670
c906108c 9671void
0b39b52e 9672tbreak_command (const char *arg, int from_tty)
c906108c 9673{
db107f19 9674 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9675}
9676
c906108c 9677static void
0b39b52e 9678hbreak_command (const char *arg, int from_tty)
c906108c 9679{
db107f19 9680 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9681}
9682
9683static void
0b39b52e 9684thbreak_command (const char *arg, int from_tty)
c906108c 9685{
db107f19 9686 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9687}
9688
9689static void
ee7ddd71 9690stop_command (const char *arg, int from_tty)
c906108c 9691{
a3f17187 9692 printf_filtered (_("Specify the type of breakpoint to set.\n\
c906108c 9693Usage: stop in <function | address>\n\
a3f17187 9694 stop at <line>\n"));
c906108c
SS
9695}
9696
9697static void
4495129a 9698stopin_command (const char *arg, int from_tty)
c906108c
SS
9699{
9700 int badInput = 0;
9701
cafb3438 9702 if (arg == NULL)
c906108c
SS
9703 badInput = 1;
9704 else if (*arg != '*')
9705 {
4495129a 9706 const char *argptr = arg;
c906108c
SS
9707 int hasColon = 0;
9708
4a64f543 9709 /* Look for a ':'. If this is a line number specification, then
dda83cd7
SM
9710 say it is bad, otherwise, it should be an address or
9711 function/method name. */
c906108c 9712 while (*argptr && !hasColon)
c5aa993b
JM
9713 {
9714 hasColon = (*argptr == ':');
9715 argptr++;
9716 }
c906108c
SS
9717
9718 if (hasColon)
c5aa993b 9719 badInput = (*argptr != ':'); /* Not a class::method */
c906108c 9720 else
c5aa993b 9721 badInput = isdigit (*arg); /* a simple line number */
c906108c
SS
9722 }
9723
9724 if (badInput)
a3f17187 9725 printf_filtered (_("Usage: stop in <function | address>\n"));
c906108c 9726 else
db107f19 9727 break_command_1 (arg, 0, from_tty);
c906108c
SS
9728}
9729
9730static void
4495129a 9731stopat_command (const char *arg, int from_tty)
c906108c
SS
9732{
9733 int badInput = 0;
9734
cafb3438 9735 if (arg == NULL || *arg == '*') /* no line number */
c906108c
SS
9736 badInput = 1;
9737 else
9738 {
4495129a 9739 const char *argptr = arg;
c906108c
SS
9740 int hasColon = 0;
9741
4a64f543 9742 /* Look for a ':'. If there is a '::' then get out, otherwise
dda83cd7 9743 it is probably a line number. */
c906108c 9744 while (*argptr && !hasColon)
c5aa993b
JM
9745 {
9746 hasColon = (*argptr == ':');
9747 argptr++;
9748 }
c906108c
SS
9749
9750 if (hasColon)
c5aa993b 9751 badInput = (*argptr == ':'); /* we have class::method */
c906108c 9752 else
c5aa993b 9753 badInput = !isdigit (*arg); /* not a line number */
c906108c
SS
9754 }
9755
9756 if (badInput)
65e65158 9757 printf_filtered (_("Usage: stop at LINE\n"));
c906108c 9758 else
db107f19 9759 break_command_1 (arg, 0, from_tty);
c906108c
SS
9760}
9761
e7e0cddf
SS
9762/* The dynamic printf command is mostly like a regular breakpoint, but
9763 with a prewired command list consisting of a single output command,
9764 built from extra arguments supplied on the dprintf command
9765 line. */
9766
da821c7b 9767static void
0b39b52e 9768dprintf_command (const char *arg, int from_tty)
e7e0cddf 9769{
ffc2605c 9770 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9771
9772 /* If non-NULL, ARG should have been advanced past the location;
9773 the next character must be ','. */
9774 if (arg != NULL)
9775 {
9776 if (arg[0] != ',' || arg[1] == '\0')
9777 error (_("Format string required"));
9778 else
9779 {
9780 /* Skip the comma. */
9781 ++arg;
9782 }
9783 }
9784
e7e0cddf 9785 create_breakpoint (get_current_arch (),
ffc2605c 9786 location.get (),
f00aae0f 9787 NULL, 0, arg, 1 /* parse arg */,
e7e0cddf
SS
9788 0, bp_dprintf,
9789 0 /* Ignore count */,
9790 pending_break_support,
9791 &dprintf_breakpoint_ops,
9792 from_tty,
9793 1 /* enabled */,
9794 0 /* internal */,
9795 0);
9796}
9797
d3ce09f5 9798static void
0b39b52e 9799agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9800{
9801 error (_("May only run agent-printf on the target"));
9802}
9803
f1310107
TJB
9804/* Implement the "breakpoint_hit" breakpoint_ops method for
9805 ranged breakpoints. */
9806
9807static int
9808breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9809 const address_space *aspace,
09ac7c10
TT
9810 CORE_ADDR bp_addr,
9811 const struct target_waitstatus *ws)
f1310107 9812{
09ac7c10 9813 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 9814 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
9815 return 0;
9816
f1310107
TJB
9817 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9818 bl->length, aspace, bp_addr);
9819}
9820
9821/* Implement the "resources_needed" breakpoint_ops method for
9822 ranged breakpoints. */
9823
9824static int
9825resources_needed_ranged_breakpoint (const struct bp_location *bl)
9826{
9827 return target_ranged_break_num_registers ();
9828}
9829
9830/* Implement the "print_it" breakpoint_ops method for
9831 ranged breakpoints. */
9832
9833static enum print_stop_action
348d480f 9834print_it_ranged_breakpoint (bpstat bs)
f1310107 9835{
348d480f 9836 struct breakpoint *b = bs->breakpoint_at;
f1310107 9837 struct bp_location *bl = b->loc;
79a45e25 9838 struct ui_out *uiout = current_uiout;
f1310107
TJB
9839
9840 gdb_assert (b->type == bp_hardware_breakpoint);
9841
9842 /* Ranged breakpoints have only one location. */
9843 gdb_assert (bl && bl->next == NULL);
9844
9845 annotate_breakpoint (b->number);
f303dbd6
PA
9846
9847 maybe_print_thread_hit_breakpoint (uiout);
9848
f1310107 9849 if (b->disposition == disp_del)
112e8700 9850 uiout->text ("Temporary ranged breakpoint ");
f1310107 9851 else
112e8700
SM
9852 uiout->text ("Ranged breakpoint ");
9853 if (uiout->is_mi_like_p ())
f1310107 9854 {
112e8700 9855 uiout->field_string ("reason",
f1310107 9856 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9857 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9858 }
381befee 9859 uiout->field_signed ("bkptno", b->number);
112e8700 9860 uiout->text (", ");
f1310107
TJB
9861
9862 return PRINT_SRC_AND_LOC;
9863}
9864
9865/* Implement the "print_one" breakpoint_ops method for
9866 ranged breakpoints. */
9867
9868static void
9869print_one_ranged_breakpoint (struct breakpoint *b,
9870 struct bp_location **last_loc)
9871{
9872 struct bp_location *bl = b->loc;
9873 struct value_print_options opts;
79a45e25 9874 struct ui_out *uiout = current_uiout;
f1310107
TJB
9875
9876 /* Ranged breakpoints have only one location. */
9877 gdb_assert (bl && bl->next == NULL);
9878
9879 get_user_print_options (&opts);
9880
9881 if (opts.addressprint)
9882 /* We don't print the address range here, it will be printed later
9883 by print_one_detail_ranged_breakpoint. */
112e8700 9884 uiout->field_skip ("addr");
f1310107
TJB
9885 annotate_field (5);
9886 print_breakpoint_location (b, bl);
9887 *last_loc = bl;
9888}
9889
9890/* Implement the "print_one_detail" breakpoint_ops method for
9891 ranged breakpoints. */
9892
9893static void
9894print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9895 struct ui_out *uiout)
9896{
9897 CORE_ADDR address_start, address_end;
9898 struct bp_location *bl = b->loc;
d7e74731 9899 string_file stb;
f1310107
TJB
9900
9901 gdb_assert (bl);
9902
9903 address_start = bl->address;
9904 address_end = address_start + bl->length - 1;
9905
112e8700 9906 uiout->text ("\taddress range: ");
d7e74731
PA
9907 stb.printf ("[%s, %s]",
9908 print_core_address (bl->gdbarch, address_start),
9909 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9910 uiout->field_stream ("addr", stb);
9911 uiout->text ("\n");
f1310107
TJB
9912}
9913
9914/* Implement the "print_mention" breakpoint_ops method for
9915 ranged breakpoints. */
9916
9917static void
9918print_mention_ranged_breakpoint (struct breakpoint *b)
9919{
9920 struct bp_location *bl = b->loc;
79a45e25 9921 struct ui_out *uiout = current_uiout;
f1310107
TJB
9922
9923 gdb_assert (bl);
9924 gdb_assert (b->type == bp_hardware_breakpoint);
9925
2d33446d
TT
9926 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9927 b->number, paddress (bl->gdbarch, bl->address),
9928 paddress (bl->gdbarch, bl->address + bl->length - 1));
f1310107
TJB
9929}
9930
9931/* Implement the "print_recreate" breakpoint_ops method for
9932 ranged breakpoints. */
9933
9934static void
9935print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9936{
f00aae0f 9937 fprintf_unfiltered (fp, "break-range %s, %s",
d28cd78a
TT
9938 event_location_to_string (b->location.get ()),
9939 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9940 print_recreate_thread (b, fp);
f1310107
TJB
9941}
9942
9943/* The breakpoint_ops structure to be used in ranged breakpoints. */
9944
2060206e 9945static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9946
9947/* Find the address where the end of the breakpoint range should be
9948 placed, given the SAL of the end of the range. This is so that if
9949 the user provides a line number, the end of the range is set to the
9950 last instruction of the given line. */
9951
9952static CORE_ADDR
9953find_breakpoint_range_end (struct symtab_and_line sal)
9954{
9955 CORE_ADDR end;
9956
9957 /* If the user provided a PC value, use it. Otherwise,
9958 find the address of the end of the given location. */
9959 if (sal.explicit_pc)
9960 end = sal.pc;
9961 else
9962 {
9963 int ret;
9964 CORE_ADDR start;
9965
9966 ret = find_line_pc_range (sal, &start, &end);
9967 if (!ret)
9968 error (_("Could not find location of the end of the range."));
9969
9970 /* find_line_pc_range returns the start of the next line. */
9971 end--;
9972 }
9973
9974 return end;
9975}
9976
9977/* Implement the "break-range" CLI command. */
9978
9979static void
0b39b52e 9980break_range_command (const char *arg, int from_tty)
f1310107 9981{
f2fc3015 9982 const char *arg_start;
f1310107
TJB
9983 struct linespec_result canonical_start, canonical_end;
9984 int bp_count, can_use_bp, length;
9985 CORE_ADDR end;
9986 struct breakpoint *b;
f1310107
TJB
9987
9988 /* We don't support software ranged breakpoints. */
9989 if (target_ranged_break_num_registers () < 0)
9990 error (_("This target does not support hardware ranged breakpoints."));
9991
9992 bp_count = hw_breakpoint_used_count ();
9993 bp_count += target_ranged_break_num_registers ();
9994 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9995 bp_count, 0);
9996 if (can_use_bp < 0)
9997 error (_("Hardware breakpoints used exceeds limit."));
9998
f8eba3c6 9999 arg = skip_spaces (arg);
f1310107
TJB
10000 if (arg == NULL || arg[0] == '\0')
10001 error(_("No address range specified."));
10002
f8eba3c6 10003 arg_start = arg;
ffc2605c
TT
10004 event_location_up start_location = string_to_event_location (&arg,
10005 current_language);
10006 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
10007
10008 if (arg[0] != ',')
10009 error (_("Too few arguments."));
6c5b2ebe 10010 else if (canonical_start.lsals.empty ())
f1310107 10011 error (_("Could not find location of the beginning of the range."));
f8eba3c6 10012
6c5b2ebe 10013 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 10014
6c5b2ebe
PA
10015 if (canonical_start.lsals.size () > 1
10016 || lsal_start.sals.size () != 1)
f1310107
TJB
10017 error (_("Cannot create a ranged breakpoint with multiple locations."));
10018
6c5b2ebe 10019 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 10020 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
10021
10022 arg++; /* Skip the comma. */
f8eba3c6 10023 arg = skip_spaces (arg);
f1310107
TJB
10024
10025 /* Parse the end location. */
10026
f1310107
TJB
10027 arg_start = arg;
10028
f8eba3c6 10029 /* We call decode_line_full directly here instead of using
f1310107
TJB
10030 parse_breakpoint_sals because we need to specify the start location's
10031 symtab and line as the default symtab and line for the end of the
10032 range. This makes it possible to have ranges like "foo.c:27, +14",
10033 where +14 means 14 lines from the start location. */
ffc2605c
TT
10034 event_location_up end_location = string_to_event_location (&arg,
10035 current_language);
10036 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
10037 sal_start.symtab, sal_start.line,
10038 &canonical_end, NULL, NULL);
10039
6c5b2ebe 10040 if (canonical_end.lsals.empty ())
f1310107 10041 error (_("Could not find location of the end of the range."));
f8eba3c6 10042
6c5b2ebe
PA
10043 const linespec_sals &lsal_end = canonical_end.lsals[0];
10044 if (canonical_end.lsals.size () > 1
10045 || lsal_end.sals.size () != 1)
f1310107
TJB
10046 error (_("Cannot create a ranged breakpoint with multiple locations."));
10047
6c5b2ebe 10048 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
10049
10050 end = find_breakpoint_range_end (sal_end);
10051 if (sal_start.pc > end)
177b42fe 10052 error (_("Invalid address range, end precedes start."));
f1310107
TJB
10053
10054 length = end - sal_start.pc + 1;
10055 if (length < 0)
10056 /* Length overflowed. */
10057 error (_("Address range too large."));
10058 else if (length == 1)
10059 {
10060 /* This range is simple enough to be handled by
10061 the `hbreak' command. */
81b1e71c 10062 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
10063
10064 return;
10065 }
10066
10067 /* Now set up the breakpoint. */
10068 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 10069 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
10070 set_breakpoint_count (breakpoint_count + 1);
10071 b->number = breakpoint_count;
10072 b->disposition = disp_donttouch;
d28cd78a
TT
10073 b->location = std::move (start_location);
10074 b->location_range_end = std::move (end_location);
f1310107
TJB
10075 b->loc->length = length;
10076
f1310107 10077 mention (b);
76727919 10078 gdb::observers::breakpoint_created.notify (b);
44702360 10079 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
10080}
10081
4a64f543
MS
10082/* Return non-zero if EXP is verified as constant. Returned zero
10083 means EXP is variable. Also the constant detection may fail for
10084 some constant expressions and in such case still falsely return
10085 zero. */
2e6e3d9c 10086
dab72643 10087static bool
65d79d4b
SDJ
10088watchpoint_exp_is_const (const struct expression *exp)
10089{
10090 int i = exp->nelts;
10091
10092 while (i > 0)
10093 {
10094 int oplenp, argsp;
10095
10096 /* We are only interested in the descriptor of each element. */
10097 operator_length (exp, i, &oplenp, &argsp);
10098 i -= oplenp;
10099
10100 switch (exp->elts[i].opcode)
10101 {
10102 case BINOP_ADD:
10103 case BINOP_SUB:
10104 case BINOP_MUL:
10105 case BINOP_DIV:
10106 case BINOP_REM:
10107 case BINOP_MOD:
10108 case BINOP_LSH:
10109 case BINOP_RSH:
10110 case BINOP_LOGICAL_AND:
10111 case BINOP_LOGICAL_OR:
10112 case BINOP_BITWISE_AND:
10113 case BINOP_BITWISE_IOR:
10114 case BINOP_BITWISE_XOR:
10115 case BINOP_EQUAL:
10116 case BINOP_NOTEQUAL:
10117 case BINOP_LESS:
10118 case BINOP_GTR:
10119 case BINOP_LEQ:
10120 case BINOP_GEQ:
10121 case BINOP_REPEAT:
10122 case BINOP_COMMA:
10123 case BINOP_EXP:
10124 case BINOP_MIN:
10125 case BINOP_MAX:
10126 case BINOP_INTDIV:
10127 case BINOP_CONCAT:
65d79d4b
SDJ
10128 case TERNOP_COND:
10129 case TERNOP_SLICE:
65d79d4b
SDJ
10130
10131 case OP_LONG:
edd079d9 10132 case OP_FLOAT:
65d79d4b
SDJ
10133 case OP_LAST:
10134 case OP_COMPLEX:
10135 case OP_STRING:
65d79d4b
SDJ
10136 case OP_ARRAY:
10137 case OP_TYPE:
608b4967
TT
10138 case OP_TYPEOF:
10139 case OP_DECLTYPE:
6e72ca20 10140 case OP_TYPEID:
65d79d4b
SDJ
10141 case OP_NAME:
10142 case OP_OBJC_NSSTRING:
10143
10144 case UNOP_NEG:
10145 case UNOP_LOGICAL_NOT:
10146 case UNOP_COMPLEMENT:
10147 case UNOP_ADDR:
10148 case UNOP_HIGH:
aeaa2474 10149 case UNOP_CAST:
9eaf6705
TT
10150
10151 case UNOP_CAST_TYPE:
10152 case UNOP_REINTERPRET_CAST:
10153 case UNOP_DYNAMIC_CAST:
4a64f543
MS
10154 /* Unary, binary and ternary operators: We have to check
10155 their operands. If they are constant, then so is the
10156 result of that operation. For instance, if A and B are
10157 determined to be constants, then so is "A + B".
10158
10159 UNOP_IND is one exception to the rule above, because the
10160 value of *ADDR is not necessarily a constant, even when
10161 ADDR is. */
65d79d4b
SDJ
10162 break;
10163
10164 case OP_VAR_VALUE:
10165 /* Check whether the associated symbol is a constant.
4a64f543 10166
65d79d4b 10167 We use SYMBOL_CLASS rather than TYPE_CONST because it's
4a64f543
MS
10168 possible that a buggy compiler could mark a variable as
10169 constant even when it is not, and TYPE_CONST would return
10170 true in this case, while SYMBOL_CLASS wouldn't.
10171
10172 We also have to check for function symbols because they
10173 are always constant. */
65d79d4b
SDJ
10174 {
10175 struct symbol *s = exp->elts[i + 2].symbol;
10176
10177 if (SYMBOL_CLASS (s) != LOC_BLOCK
10178 && SYMBOL_CLASS (s) != LOC_CONST
10179 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
dab72643 10180 return false;
65d79d4b
SDJ
10181 break;
10182 }
10183
10184 /* The default action is to return 0 because we are using
10185 the optimistic approach here: If we don't know something,
10186 then it is not a constant. */
10187 default:
dab72643 10188 return false;
65d79d4b
SDJ
10189 }
10190 }
10191
dab72643 10192 return true;
65d79d4b
SDJ
10193}
10194
c1fc2657 10195/* Watchpoint destructor. */
3a5c3e22 10196
c1fc2657 10197watchpoint::~watchpoint ()
3a5c3e22 10198{
c1fc2657
SM
10199 xfree (this->exp_string);
10200 xfree (this->exp_string_reparse);
3a5c3e22
PA
10201}
10202
348d480f
PA
10203/* Implement the "re_set" breakpoint_ops method for watchpoints. */
10204
10205static void
10206re_set_watchpoint (struct breakpoint *b)
10207{
3a5c3e22
PA
10208 struct watchpoint *w = (struct watchpoint *) b;
10209
348d480f
PA
10210 /* Watchpoint can be either on expression using entirely global
10211 variables, or it can be on local variables.
10212
10213 Watchpoints of the first kind are never auto-deleted, and even
10214 persist across program restarts. Since they can use variables
10215 from shared libraries, we need to reparse expression as libraries
10216 are loaded and unloaded.
10217
10218 Watchpoints on local variables can also change meaning as result
10219 of solib event. For example, if a watchpoint uses both a local
10220 and a global variables in expression, it's a local watchpoint,
10221 but unloading of a shared library will make the expression
10222 invalid. This is not a very common use case, but we still
10223 re-evaluate expression, to avoid surprises to the user.
10224
10225 Note that for local watchpoints, we re-evaluate it only if
10226 watchpoints frame id is still valid. If it's not, it means the
10227 watchpoint is out of scope and will be deleted soon. In fact,
10228 I'm not sure we'll ever be called in this case.
10229
10230 If a local watchpoint's frame id is still valid, then
3a5c3e22 10231 w->exp_valid_block is likewise valid, and we can safely use it.
348d480f 10232
3a5c3e22
PA
10233 Don't do anything about disabled watchpoints, since they will be
10234 reevaluated again when enabled. */
10235 update_watchpoint (w, 1 /* reparse */);
348d480f
PA
10236}
10237
77b06cd7
TJB
10238/* Implement the "insert" breakpoint_ops method for hardware watchpoints. */
10239
10240static int
10241insert_watchpoint (struct bp_location *bl)
10242{
3a5c3e22
PA
10243 struct watchpoint *w = (struct watchpoint *) bl->owner;
10244 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10245
10246 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10247 w->cond_exp.get ());
77b06cd7
TJB
10248}
10249
10250/* Implement the "remove" breakpoint_ops method for hardware watchpoints. */
10251
10252static int
73971819 10253remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
77b06cd7 10254{
3a5c3e22
PA
10255 struct watchpoint *w = (struct watchpoint *) bl->owner;
10256 int length = w->exact ? 1 : bl->length;
e09342b5
TJB
10257
10258 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
4d01a485 10259 w->cond_exp.get ());
e09342b5
TJB
10260}
10261
e09342b5 10262static int
348d480f 10263breakpoint_hit_watchpoint (const struct bp_location *bl,
bd522513 10264 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 10265 const struct target_waitstatus *ws)
e09342b5 10266{
348d480f 10267 struct breakpoint *b = bl->owner;
3a5c3e22 10268 struct watchpoint *w = (struct watchpoint *) b;
77b06cd7 10269
348d480f
PA
10270 /* Continuable hardware watchpoints are treated as non-existent if the
10271 reason we stopped wasn't a hardware watchpoint (we didn't stop on
10272 some data address). Otherwise gdb won't stop on a break instruction
10273 in the code (not from a breakpoint) when a hardware watchpoint has
10274 been defined. Also skip watchpoints which we know did not trigger
10275 (did not match the data address). */
10276 if (is_hardware_watchpoint (b)
3a5c3e22 10277 && w->watchpoint_triggered == watch_triggered_no)
348d480f 10278 return 0;
9c06b0b4 10279
348d480f 10280 return 1;
9c06b0b4
TJB
10281}
10282
348d480f
PA
10283static void
10284check_status_watchpoint (bpstat bs)
9c06b0b4 10285{
348d480f 10286 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 10287
348d480f 10288 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
10289}
10290
10291/* Implement the "resources_needed" breakpoint_ops method for
348d480f 10292 hardware watchpoints. */
9c06b0b4
TJB
10293
10294static int
348d480f 10295resources_needed_watchpoint (const struct bp_location *bl)
9c06b0b4 10296{
3a5c3e22
PA
10297 struct watchpoint *w = (struct watchpoint *) bl->owner;
10298 int length = w->exact? 1 : bl->length;
348d480f
PA
10299
10300 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
10301}
10302
10303/* Implement the "works_in_software_mode" breakpoint_ops method for
348d480f 10304 hardware watchpoints. */
9c06b0b4
TJB
10305
10306static int
348d480f 10307works_in_software_mode_watchpoint (const struct breakpoint *b)
9c06b0b4 10308{
efa80663
PA
10309 /* Read and access watchpoints only work with hardware support. */
10310 return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9c06b0b4
TJB
10311}
10312
9c06b0b4 10313static enum print_stop_action
348d480f 10314print_it_watchpoint (bpstat bs)
9c06b0b4 10315{
348d480f 10316 struct breakpoint *b;
348d480f 10317 enum print_stop_action result;
3a5c3e22 10318 struct watchpoint *w;
79a45e25 10319 struct ui_out *uiout = current_uiout;
348d480f
PA
10320
10321 gdb_assert (bs->bp_location_at != NULL);
10322
348d480f 10323 b = bs->breakpoint_at;
3a5c3e22 10324 w = (struct watchpoint *) b;
348d480f 10325
f303dbd6
PA
10326 annotate_watchpoint (b->number);
10327 maybe_print_thread_hit_breakpoint (uiout);
10328
d7e74731
PA
10329 string_file stb;
10330
76f9c9cf 10331 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
10332 switch (b->type)
10333 {
348d480f 10334 case bp_watchpoint:
9c06b0b4 10335 case bp_hardware_watchpoint:
112e8700
SM
10336 if (uiout->is_mi_like_p ())
10337 uiout->field_string
10338 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 10339 mention (b);
76f9c9cf 10340 tuple_emitter.emplace (uiout, "value");
112e8700 10341 uiout->text ("\nOld value = ");
850645cf 10342 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10343 uiout->field_stream ("old", stb);
10344 uiout->text ("\nNew value = ");
850645cf 10345 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10346 uiout->field_stream ("new", stb);
10347 uiout->text ("\n");
348d480f
PA
10348 /* More than one watchpoint may have been triggered. */
10349 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10350 break;
10351
10352 case bp_read_watchpoint:
112e8700
SM
10353 if (uiout->is_mi_like_p ())
10354 uiout->field_string
10355 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 10356 mention (b);
76f9c9cf 10357 tuple_emitter.emplace (uiout, "value");
112e8700 10358 uiout->text ("\nValue = ");
850645cf 10359 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10360 uiout->field_stream ("value", stb);
10361 uiout->text ("\n");
348d480f 10362 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10363 break;
10364
10365 case bp_access_watchpoint:
348d480f
PA
10366 if (bs->old_val != NULL)
10367 {
112e8700
SM
10368 if (uiout->is_mi_like_p ())
10369 uiout->field_string
10370 ("reason",
348d480f
PA
10371 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10372 mention (b);
76f9c9cf 10373 tuple_emitter.emplace (uiout, "value");
112e8700 10374 uiout->text ("\nOld value = ");
850645cf 10375 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
10376 uiout->field_stream ("old", stb);
10377 uiout->text ("\nNew value = ");
348d480f
PA
10378 }
10379 else
10380 {
10381 mention (b);
112e8700
SM
10382 if (uiout->is_mi_like_p ())
10383 uiout->field_string
10384 ("reason",
348d480f 10385 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 10386 tuple_emitter.emplace (uiout, "value");
112e8700 10387 uiout->text ("\nValue = ");
348d480f 10388 }
850645cf 10389 watchpoint_value_print (w->val.get (), &stb);
112e8700
SM
10390 uiout->field_stream ("new", stb);
10391 uiout->text ("\n");
348d480f 10392 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10393 break;
10394 default:
348d480f 10395 result = PRINT_UNKNOWN;
9c06b0b4
TJB
10396 }
10397
348d480f
PA
10398 return result;
10399}
10400
10401/* Implement the "print_mention" breakpoint_ops method for hardware
10402 watchpoints. */
10403
10404static void
10405print_mention_watchpoint (struct breakpoint *b)
10406{
3a5c3e22 10407 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10408 struct ui_out *uiout = current_uiout;
46b9c129 10409 const char *tuple_name;
348d480f
PA
10410
10411 switch (b->type)
10412 {
10413 case bp_watchpoint:
112e8700 10414 uiout->text ("Watchpoint ");
46b9c129 10415 tuple_name = "wpt";
348d480f
PA
10416 break;
10417 case bp_hardware_watchpoint:
112e8700 10418 uiout->text ("Hardware watchpoint ");
46b9c129 10419 tuple_name = "wpt";
348d480f
PA
10420 break;
10421 case bp_read_watchpoint:
112e8700 10422 uiout->text ("Hardware read watchpoint ");
46b9c129 10423 tuple_name = "hw-rwpt";
348d480f
PA
10424 break;
10425 case bp_access_watchpoint:
112e8700 10426 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 10427 tuple_name = "hw-awpt";
348d480f
PA
10428 break;
10429 default:
10430 internal_error (__FILE__, __LINE__,
10431 _("Invalid hardware watchpoint type."));
10432 }
10433
46b9c129 10434 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
381befee 10435 uiout->field_signed ("number", b->number);
112e8700
SM
10436 uiout->text (": ");
10437 uiout->field_string ("exp", w->exp_string);
348d480f
PA
10438}
10439
10440/* Implement the "print_recreate" breakpoint_ops method for
10441 watchpoints. */
10442
10443static void
10444print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10445{
3a5c3e22
PA
10446 struct watchpoint *w = (struct watchpoint *) b;
10447
348d480f
PA
10448 switch (b->type)
10449 {
10450 case bp_watchpoint:
10451 case bp_hardware_watchpoint:
10452 fprintf_unfiltered (fp, "watch");
10453 break;
10454 case bp_read_watchpoint:
10455 fprintf_unfiltered (fp, "rwatch");
10456 break;
10457 case bp_access_watchpoint:
10458 fprintf_unfiltered (fp, "awatch");
10459 break;
10460 default:
10461 internal_error (__FILE__, __LINE__,
10462 _("Invalid watchpoint type."));
10463 }
10464
3a5c3e22 10465 fprintf_unfiltered (fp, " %s", w->exp_string);
d9b3f62e 10466 print_recreate_thread (b, fp);
348d480f
PA
10467}
10468
427cd150
TT
10469/* Implement the "explains_signal" breakpoint_ops method for
10470 watchpoints. */
10471
47591c29 10472static int
427cd150
TT
10473explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10474{
10475 /* A software watchpoint cannot cause a signal other than
10476 GDB_SIGNAL_TRAP. */
10477 if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 10478 return 0;
427cd150 10479
47591c29 10480 return 1;
427cd150
TT
10481}
10482
348d480f
PA
10483/* The breakpoint_ops structure to be used in hardware watchpoints. */
10484
2060206e 10485static struct breakpoint_ops watchpoint_breakpoint_ops;
348d480f
PA
10486
10487/* Implement the "insert" breakpoint_ops method for
10488 masked hardware watchpoints. */
10489
10490static int
10491insert_masked_watchpoint (struct bp_location *bl)
10492{
3a5c3e22
PA
10493 struct watchpoint *w = (struct watchpoint *) bl->owner;
10494
10495 return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
348d480f
PA
10496 bl->watchpoint_type);
10497}
10498
10499/* Implement the "remove" breakpoint_ops method for
10500 masked hardware watchpoints. */
10501
10502static int
73971819 10503remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
348d480f 10504{
3a5c3e22
PA
10505 struct watchpoint *w = (struct watchpoint *) bl->owner;
10506
10507 return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
dda83cd7 10508 bl->watchpoint_type);
348d480f
PA
10509}
10510
10511/* Implement the "resources_needed" breakpoint_ops method for
10512 masked hardware watchpoints. */
10513
10514static int
10515resources_needed_masked_watchpoint (const struct bp_location *bl)
10516{
3a5c3e22
PA
10517 struct watchpoint *w = (struct watchpoint *) bl->owner;
10518
10519 return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
348d480f
PA
10520}
10521
10522/* Implement the "works_in_software_mode" breakpoint_ops method for
10523 masked hardware watchpoints. */
10524
10525static int
10526works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10527{
10528 return 0;
10529}
10530
10531/* Implement the "print_it" breakpoint_ops method for
10532 masked hardware watchpoints. */
10533
10534static enum print_stop_action
10535print_it_masked_watchpoint (bpstat bs)
10536{
10537 struct breakpoint *b = bs->breakpoint_at;
79a45e25 10538 struct ui_out *uiout = current_uiout;
348d480f
PA
10539
10540 /* Masked watchpoints have only one location. */
10541 gdb_assert (b->loc && b->loc->next == NULL);
10542
f303dbd6
PA
10543 annotate_watchpoint (b->number);
10544 maybe_print_thread_hit_breakpoint (uiout);
10545
348d480f
PA
10546 switch (b->type)
10547 {
10548 case bp_hardware_watchpoint:
112e8700
SM
10549 if (uiout->is_mi_like_p ())
10550 uiout->field_string
10551 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
10552 break;
10553
10554 case bp_read_watchpoint:
112e8700
SM
10555 if (uiout->is_mi_like_p ())
10556 uiout->field_string
10557 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
10558 break;
10559
10560 case bp_access_watchpoint:
112e8700
SM
10561 if (uiout->is_mi_like_p ())
10562 uiout->field_string
10563 ("reason",
348d480f
PA
10564 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10565 break;
10566 default:
10567 internal_error (__FILE__, __LINE__,
10568 _("Invalid hardware watchpoint type."));
10569 }
10570
10571 mention (b);
112e8700 10572 uiout->text (_("\n\
9c06b0b4
TJB
10573Check the underlying instruction at PC for the memory\n\
10574address and value which triggered this watchpoint.\n"));
112e8700 10575 uiout->text ("\n");
9c06b0b4
TJB
10576
10577 /* More than one watchpoint may have been triggered. */
10578 return PRINT_UNKNOWN;
10579}
10580
10581/* Implement the "print_one_detail" breakpoint_ops method for
10582 masked hardware watchpoints. */
10583
10584static void
10585print_one_detail_masked_watchpoint (const struct breakpoint *b,
10586 struct ui_out *uiout)
10587{
3a5c3e22
PA
10588 struct watchpoint *w = (struct watchpoint *) b;
10589
9c06b0b4
TJB
10590 /* Masked watchpoints have only one location. */
10591 gdb_assert (b->loc && b->loc->next == NULL);
10592
112e8700
SM
10593 uiout->text ("\tmask ");
10594 uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10595 uiout->text ("\n");
9c06b0b4
TJB
10596}
10597
10598/* Implement the "print_mention" breakpoint_ops method for
10599 masked hardware watchpoints. */
10600
10601static void
10602print_mention_masked_watchpoint (struct breakpoint *b)
10603{
3a5c3e22 10604 struct watchpoint *w = (struct watchpoint *) b;
79a45e25 10605 struct ui_out *uiout = current_uiout;
46b9c129 10606 const char *tuple_name;
9c06b0b4
TJB
10607
10608 switch (b->type)
10609 {
10610 case bp_hardware_watchpoint:
112e8700 10611 uiout->text ("Masked hardware watchpoint ");
46b9c129 10612 tuple_name = "wpt";
9c06b0b4
TJB
10613 break;
10614 case bp_read_watchpoint:
112e8700 10615 uiout->text ("Masked hardware read watchpoint ");
46b9c129 10616 tuple_name = "hw-rwpt";
9c06b0b4
TJB
10617 break;
10618 case bp_access_watchpoint:
112e8700 10619 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 10620 tuple_name = "hw-awpt";
9c06b0b4
TJB
10621 break;
10622 default:
10623 internal_error (__FILE__, __LINE__,
10624 _("Invalid hardware watchpoint type."));
10625 }
10626
46b9c129 10627 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
381befee 10628 uiout->field_signed ("number", b->number);
112e8700
SM
10629 uiout->text (": ");
10630 uiout->field_string ("exp", w->exp_string);
9c06b0b4
TJB
10631}
10632
10633/* Implement the "print_recreate" breakpoint_ops method for
10634 masked hardware watchpoints. */
10635
10636static void
10637print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10638{
3a5c3e22 10639 struct watchpoint *w = (struct watchpoint *) b;
9c06b0b4
TJB
10640
10641 switch (b->type)
10642 {
10643 case bp_hardware_watchpoint:
10644 fprintf_unfiltered (fp, "watch");
10645 break;
10646 case bp_read_watchpoint:
10647 fprintf_unfiltered (fp, "rwatch");
10648 break;
10649 case bp_access_watchpoint:
10650 fprintf_unfiltered (fp, "awatch");
10651 break;
10652 default:
10653 internal_error (__FILE__, __LINE__,
10654 _("Invalid hardware watchpoint type."));
10655 }
10656
53807e9f
TT
10657 fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string,
10658 phex (w->hw_wp_mask, sizeof (CORE_ADDR)));
d9b3f62e 10659 print_recreate_thread (b, fp);
9c06b0b4
TJB
10660}
10661
10662/* The breakpoint_ops structure to be used in masked hardware watchpoints. */
10663
2060206e 10664static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
9c06b0b4
TJB
10665
10666/* Tell whether the given watchpoint is a masked hardware watchpoint. */
10667
f2478a7e 10668static bool
9c06b0b4
TJB
10669is_masked_watchpoint (const struct breakpoint *b)
10670{
10671 return b->ops == &masked_watchpoint_breakpoint_ops;
10672}
10673
53a5351d 10674/* accessflag: hw_write: watch write,
dda83cd7 10675 hw_read: watch read,
53a5351d 10676 hw_access: watch access (read or write) */
c906108c 10677static void
bbc13ae3 10678watch_command_1 (const char *arg, int accessflag, int from_tty,
2e362716 10679 bool just_location, bool internal)
c906108c 10680{
c1fc2657 10681 struct breakpoint *scope_breakpoint = NULL;
270140bd 10682 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
b926417a 10683 struct value *result;
bb9d5f81 10684 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
10685 const char *exp_start = NULL;
10686 const char *exp_end = NULL;
10687 const char *tok, *end_tok;
9c06b0b4 10688 int toklen = -1;
bbc13ae3
KS
10689 const char *cond_start = NULL;
10690 const char *cond_end = NULL;
c906108c 10691 enum bptype bp_type;
37e4754d 10692 int thread = -1;
0cf6dd15 10693 int pc = 0;
9c06b0b4
TJB
10694 /* Flag to indicate whether we are going to use masks for
10695 the hardware watchpoint. */
2e362716 10696 bool use_mask = false;
9c06b0b4 10697 CORE_ADDR mask = 0;
c906108c 10698
37e4754d
LM
10699 /* Make sure that we actually have parameters to parse. */
10700 if (arg != NULL && arg[0] != '\0')
10701 {
bbc13ae3
KS
10702 const char *value_start;
10703
10704 exp_end = arg + strlen (arg);
37e4754d 10705
9c06b0b4
TJB
10706 /* Look for "parameter value" pairs at the end
10707 of the arguments string. */
bbc13ae3 10708 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
10709 {
10710 /* Skip whitespace at the end of the argument list. */
10711 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10712 tok--;
10713
10714 /* Find the beginning of the last token.
10715 This is the value of the parameter. */
10716 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10717 tok--;
10718 value_start = tok + 1;
10719
10720 /* Skip whitespace. */
10721 while (tok > arg && (*tok == ' ' || *tok == '\t'))
10722 tok--;
10723
10724 end_tok = tok;
10725
10726 /* Find the beginning of the second to last token.
10727 This is the parameter itself. */
10728 while (tok > arg && (*tok != ' ' && *tok != '\t'))
10729 tok--;
10730 tok++;
10731 toklen = end_tok - tok + 1;
10732
61012eef 10733 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 10734 {
5d5658a1 10735 struct thread_info *thr;
9c06b0b4
TJB
10736 /* At this point we've found a "thread" token, which means
10737 the user is trying to set a watchpoint that triggers
10738 only in a specific thread. */
5d5658a1 10739 const char *endp;
37e4754d 10740
9c06b0b4
TJB
10741 if (thread != -1)
10742 error(_("You can specify only one thread."));
37e4754d 10743
9c06b0b4 10744 /* Extract the thread ID from the next token. */
5d5658a1 10745 thr = parse_thread_id (value_start, &endp);
37e4754d 10746
5d5658a1 10747 /* Check if the user provided a valid thread ID. */
9c06b0b4 10748 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 10749 invalid_thread_id_error (value_start);
9c06b0b4 10750
5d5658a1 10751 thread = thr->global_num;
9c06b0b4 10752 }
61012eef 10753 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
10754 {
10755 /* We've found a "mask" token, which means the user wants to
10756 create a hardware watchpoint that is going to have the mask
10757 facility. */
10758 struct value *mask_value, *mark;
37e4754d 10759
9c06b0b4
TJB
10760 if (use_mask)
10761 error(_("You can specify only one mask."));
37e4754d 10762
2e362716 10763 use_mask = just_location = true;
37e4754d 10764
9c06b0b4
TJB
10765 mark = value_mark ();
10766 mask_value = parse_to_comma_and_eval (&value_start);
10767 mask = value_as_address (mask_value);
10768 value_free_to_mark (mark);
10769 }
10770 else
10771 /* We didn't recognize what we found. We should stop here. */
10772 break;
37e4754d 10773
9c06b0b4
TJB
10774 /* Truncate the string and get rid of the "parameter value" pair before
10775 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 10776 exp_end = tok;
9c06b0b4 10777 }
37e4754d 10778 }
bbc13ae3
KS
10779 else
10780 exp_end = arg;
37e4754d 10781
bbc13ae3
KS
10782 /* Parse the rest of the arguments. From here on out, everything
10783 is in terms of a newly allocated string instead of the original
10784 ARG. */
81b1e71c
TT
10785 std::string expression (arg, exp_end - arg);
10786 exp_start = arg = expression.c_str ();
699bd4cf
TT
10787 innermost_block_tracker tracker;
10788 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
c906108c 10789 exp_end = arg;
fa8a61dc
TT
10790 /* Remove trailing whitespace from the expression before saving it.
10791 This makes the eventual display of the expression string a bit
10792 prettier. */
10793 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10794 --exp_end;
10795
65d79d4b 10796 /* Checking if the expression is not constant. */
4d01a485 10797 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
10798 {
10799 int len;
10800
10801 len = exp_end - exp_start;
10802 while (len > 0 && isspace (exp_start[len - 1]))
10803 len--;
10804 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10805 }
10806
699bd4cf 10807 exp_valid_block = tracker.block ();
b926417a 10808 struct value *mark = value_mark ();
850645cf
TT
10809 struct value *val_as_value = nullptr;
10810 fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10811 just_location);
06a64a0b 10812
850645cf 10813 if (val_as_value != NULL && just_location)
bb9d5f81 10814 {
850645cf
TT
10815 saved_bitpos = value_bitpos (val_as_value);
10816 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10817 }
10818
850645cf 10819 value_ref_ptr val;
06a64a0b
TT
10820 if (just_location)
10821 {
9c06b0b4
TJB
10822 int ret;
10823
06a64a0b 10824 exp_valid_block = NULL;
850645cf 10825 val = release_value (value_addr (result));
06a64a0b 10826 value_free_to_mark (mark);
9c06b0b4
TJB
10827
10828 if (use_mask)
10829 {
850645cf 10830 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10831 mask);
10832 if (ret == -1)
10833 error (_("This target does not support masked watchpoints."));
10834 else if (ret == -2)
10835 error (_("Invalid mask or memory region."));
10836 }
06a64a0b 10837 }
850645cf
TT
10838 else if (val_as_value != NULL)
10839 val = release_value (val_as_value);
c906108c 10840
f1735a53
TT
10841 tok = skip_spaces (arg);
10842 end_tok = skip_to_space (tok);
c906108c
SS
10843
10844 toklen = end_tok - tok;
10845 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10846 {
10847 tok = cond_start = end_tok + 1;
699bd4cf
TT
10848 innermost_block_tracker if_tracker;
10849 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
60e1c644
PA
10850
10851 /* The watchpoint expression may not be local, but the condition
10852 may still be. E.g.: `watch global if local > 0'. */
699bd4cf 10853 cond_exp_valid_block = if_tracker.block ();
60e1c644 10854
c906108c
SS
10855 cond_end = tok;
10856 }
10857 if (*tok)
8a3fe4f8 10858 error (_("Junk at end of command."));
c906108c 10859
441d7c93
PA
10860 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10861
10862 /* Save this because create_internal_breakpoint below invalidates
10863 'wp_frame'. */
10864 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10865
10866 /* If the expression is "local", then set up a "watchpoint scope"
10867 breakpoint at the point where we've left the scope of the watchpoint
10868 expression. Create the scope breakpoint before the watchpoint, so
10869 that we will encounter it first in bpstat_stop_status. */
441d7c93 10870 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10871 {
441d7c93
PA
10872 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10873
10874 if (frame_id_p (caller_frame_id))
edb3359d 10875 {
441d7c93
PA
10876 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10877 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10878
edb3359d 10879 scope_breakpoint
441d7c93 10880 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10881 bp_watchpoint_scope,
10882 &momentary_breakpoint_ops);
d983da9c 10883
441d7c93
PA
10884 /* create_internal_breakpoint could invalidate WP_FRAME. */
10885 wp_frame = NULL;
10886
edb3359d 10887 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10888
edb3359d
DJ
10889 /* Automatically delete the breakpoint when it hits. */
10890 scope_breakpoint->disposition = disp_del;
d983da9c 10891
edb3359d 10892 /* Only break in the proper frame (help with recursion). */
441d7c93 10893 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10894
edb3359d 10895 /* Set the address at which we will stop. */
441d7c93
PA
10896 scope_breakpoint->loc->gdbarch = caller_arch;
10897 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10898 scope_breakpoint->loc->address
a6d9a66e
UW
10899 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10900 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10901 scope_breakpoint->type);
10902 }
d983da9c
DJ
10903 }
10904
e8369a73
AB
10905 /* Now set up the breakpoint. We create all watchpoints as hardware
10906 watchpoints here even if hardware watchpoints are turned off, a call
10907 to update_watchpoint later in this function will cause the type to
10908 drop back to bp_watchpoint (software watchpoint) if required. */
10909
10910 if (accessflag == hw_read)
10911 bp_type = bp_read_watchpoint;
10912 else if (accessflag == hw_access)
10913 bp_type = bp_access_watchpoint;
10914 else
10915 bp_type = bp_hardware_watchpoint;
3a5c3e22 10916
b270e6f9 10917 std::unique_ptr<watchpoint> w (new watchpoint ());
c1fc2657 10918
348d480f 10919 if (use_mask)
b270e6f9 10920 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10921 &masked_watchpoint_breakpoint_ops);
348d480f 10922 else
b270e6f9 10923 init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
3a5c3e22 10924 &watchpoint_breakpoint_ops);
c1fc2657
SM
10925 w->thread = thread;
10926 w->disposition = disp_donttouch;
10927 w->pspace = current_program_space;
b22e99fd 10928 w->exp = std::move (exp);
3a5c3e22
PA
10929 w->exp_valid_block = exp_valid_block;
10930 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10931 if (just_location)
10932 {
850645cf
TT
10933 struct type *t = value_type (val.get ());
10934 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10935
43cc5389 10936 w->exp_string_reparse
f16a9f57 10937 = current_language->watch_location_expression (t, addr).release ();
06a64a0b 10938
3a5c3e22 10939 w->exp_string = xstrprintf ("-location %.*s",
d63d0675 10940 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10941 }
10942 else
3a5c3e22 10943 w->exp_string = savestring (exp_start, exp_end - exp_start);
9c06b0b4
TJB
10944
10945 if (use_mask)
10946 {
3a5c3e22 10947 w->hw_wp_mask = mask;
9c06b0b4
TJB
10948 }
10949 else
10950 {
3a5c3e22 10951 w->val = val;
bb9d5f81
PP
10952 w->val_bitpos = saved_bitpos;
10953 w->val_bitsize = saved_bitsize;
4c1d86d9 10954 w->val_valid = true;
9c06b0b4 10955 }
77b06cd7 10956
c906108c 10957 if (cond_start)
c1fc2657 10958 w->cond_string = savestring (cond_start, cond_end - cond_start);
c906108c 10959 else
c1fc2657 10960 w->cond_string = 0;
c5aa993b 10961
441d7c93 10962 if (frame_id_p (watchpoint_frame))
f6bc2008 10963 {
441d7c93 10964 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10965 w->watchpoint_thread = inferior_ptid;
f6bc2008 10966 }
c906108c 10967 else
f6bc2008 10968 {
3a5c3e22
PA
10969 w->watchpoint_frame = null_frame_id;
10970 w->watchpoint_thread = null_ptid;
f6bc2008 10971 }
c906108c 10972
d983da9c 10973 if (scope_breakpoint != NULL)
c906108c 10974 {
d983da9c
DJ
10975 /* The scope breakpoint is related to the watchpoint. We will
10976 need to act on them together. */
c1fc2657 10977 w->related_breakpoint = scope_breakpoint;
b270e6f9 10978 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10979 }
d983da9c 10980
06a64a0b
TT
10981 if (!just_location)
10982 value_free_to_mark (mark);
2d134ed3 10983
b270e6f9
TT
10984 /* Finally update the new watchpoint. This creates the locations
10985 that should be inserted. */
10986 update_watchpoint (w.get (), 1);
a9634178 10987
b270e6f9 10988 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10989}
10990
e09342b5 10991/* Return count of debug registers needed to watch the given expression.
e09342b5 10992 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10993
c906108c 10994static int
a6535de1 10995can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
c906108c
SS
10996{
10997 int found_memory_cnt = 0;
10998
10999 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 11000 if (!can_use_hw_watchpoints)
c906108c 11001 return 0;
c5aa993b 11002
a6535de1
TT
11003 gdb_assert (!vals.empty ());
11004 struct value *head = vals[0].get ();
11005
5c44784c
JM
11006 /* Make sure that the value of the expression depends only upon
11007 memory contents, and values computed from them within GDB. If we
11008 find any register references or function calls, we can't use a
11009 hardware watchpoint.
11010
11011 The idea here is that evaluating an expression generates a series
11012 of values, one holding the value of every subexpression. (The
11013 expression a*b+c has five subexpressions: a, b, a*b, c, and
11014 a*b+c.) GDB's values hold almost enough information to establish
11015 the criteria given above --- they identify memory lvalues,
11016 register lvalues, computed values, etcetera. So we can evaluate
11017 the expression, and then scan the chain of values that leaves
11018 behind to decide whether we can detect any possible change to the
11019 expression's final value using only hardware watchpoints.
11020
11021 However, I don't think that the values returned by inferior
11022 function calls are special in any way. So this function may not
11023 notice that an expression involving an inferior function call
11024 can't be watched with hardware watchpoints. FIXME. */
a6535de1 11025 for (const value_ref_ptr &iter : vals)
c906108c 11026 {
a6535de1
TT
11027 struct value *v = iter.get ();
11028
5c44784c 11029 if (VALUE_LVAL (v) == lval_memory)
c906108c 11030 {
8464be76
DJ
11031 if (v != head && value_lazy (v))
11032 /* A lazy memory lvalue in the chain is one that GDB never
11033 needed to fetch; we either just used its address (e.g.,
11034 `a' in `a.b') or we never needed it at all (e.g., `a'
11035 in `a,b'). This doesn't apply to HEAD; if that is
11036 lazy then it was not readable, but watch it anyway. */
5c44784c 11037 ;
53a5351d 11038 else
5c44784c
JM
11039 {
11040 /* Ahh, memory we actually used! Check if we can cover
dda83cd7 11041 it with hardware watchpoints. */
df407dfe 11042 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
11043
11044 /* We only watch structs and arrays if user asked for it
11045 explicitly, never if they just happen to appear in a
11046 middle of some value chain. */
11047 if (v == head
78134374
SM
11048 || (vtype->code () != TYPE_CODE_STRUCT
11049 && vtype->code () != TYPE_CODE_ARRAY))
2e70b7b9 11050 {
42ae5230 11051 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
11052 int len;
11053 int num_regs;
11054
a9634178 11055 len = (target_exact_watchpoints
e09342b5
TJB
11056 && is_scalar_type_recursive (vtype))?
11057 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 11058
e09342b5
TJB
11059 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11060 if (!num_regs)
2e70b7b9
MS
11061 return 0;
11062 else
e09342b5 11063 found_memory_cnt += num_regs;
2e70b7b9 11064 }
5c44784c 11065 }
c5aa993b 11066 }
5086187c
AC
11067 else if (VALUE_LVAL (v) != not_lval
11068 && deprecated_value_modifiable (v) == 0)
38b6c3b3 11069 return 0; /* These are values from the history (e.g., $1). */
5086187c 11070 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 11071 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
11072 }
11073
11074 /* The expression itself looks suitable for using a hardware
11075 watchpoint, but give the target machine a chance to reject it. */
11076 return found_memory_cnt;
11077}
11078
8b93c638 11079void
2e362716 11080watch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 11081{
84f4c1fe 11082 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
11083}
11084
a15a5258
AB
11085/* Options for the watch, awatch, and rwatch commands. */
11086
11087struct watch_options
11088{
11089 /* For -location. */
11090 bool location = false;
11091};
11092
11093/* Definitions of options for the "watch", "awatch", and "rwatch" commands.
11094
11095 Historically GDB always accepted both '-location' and '-l' flags for
11096 these commands (both flags being synonyms). When converting to the
11097 newer option scheme only '-location' is added here. That's fine (for
11098 backward compatibility) as any non-ambiguous prefix of a flag will be
11099 accepted, so '-l', '-loc', are now all accepted.
11100
11101 What this means is that, if in the future, we add any new flag here
11102 that starts with '-l' then this will break backward compatibility, so
11103 please, don't do that! */
11104
11105static const gdb::option::option_def watch_option_defs[] = {
11106 gdb::option::flag_option_def<watch_options> {
11107 "location",
11108 [] (watch_options *opt) { return &opt->location; },
11109 N_("\
11110This evaluates EXPRESSION and watches the memory to which is refers.\n\
11111-l can be used as a short form of -location."),
11112 },
11113};
11114
11115/* Returns the option group used by 'watch', 'awatch', and 'rwatch'
11116 commands. */
11117
11118static gdb::option::option_def_group
11119make_watch_options_def_group (watch_options *opts)
11120{
11121 return {{watch_option_defs}, opts};
11122}
11123
06a64a0b
TT
11124/* A helper function that looks for the "-location" argument and then
11125 calls watch_command_1. */
11126
11127static void
0b39b52e 11128watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b 11129{
a15a5258
AB
11130 watch_options opts;
11131 auto grp = make_watch_options_def_group (&opts);
11132 gdb::option::process_options
11133 (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
11134 if (arg != nullptr && *arg == '\0')
11135 arg = nullptr;
11136
11137 watch_command_1 (arg, accessflag, from_tty, opts.location, false);
11138}
06a64a0b 11139
a15a5258
AB
11140/* Command completion for 'watch', 'awatch', and 'rwatch' commands. */
11141static void
11142watch_command_completer (struct cmd_list_element *ignore,
11143 completion_tracker &tracker,
11144 const char *text, const char * /*word*/)
11145{
11146 const auto group = make_watch_options_def_group (nullptr);
11147 if (gdb::option::complete_options
11148 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
11149 return;
06a64a0b 11150
a15a5258
AB
11151 const char *word = advance_to_expression_complete_word_point (tracker, text);
11152 expression_completer (ignore, tracker, text, word);
8b93c638 11153}
8926118c 11154
c5aa993b 11155static void
0b39b52e 11156watch_command (const char *arg, int from_tty)
c906108c 11157{
06a64a0b 11158 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
11159}
11160
8b93c638 11161void
2e362716 11162rwatch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 11163{
84f4c1fe 11164 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 11165}
8926118c 11166
c5aa993b 11167static void
0b39b52e 11168rwatch_command (const char *arg, int from_tty)
c906108c 11169{
06a64a0b 11170 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
11171}
11172
8b93c638 11173void
2e362716 11174awatch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 11175{
84f4c1fe 11176 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 11177}
8926118c 11178
c5aa993b 11179static void
0b39b52e 11180awatch_command (const char *arg, int from_tty)
c906108c 11181{
06a64a0b 11182 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 11183}
c906108c 11184\f
c5aa993b 11185
cfc31633
PA
11186/* Data for the FSM that manages the until(location)/advance commands
11187 in infcmd.c. Here because it uses the mechanisms of
11188 breakpoints. */
c906108c 11189
46e3ed7f 11190struct until_break_fsm : public thread_fsm
bfec99b2 11191{
46e3ed7f 11192 /* The thread that was current when the command was executed. */
cfc31633
PA
11193 int thread;
11194
df631783
PA
11195 /* The breakpoint set at the return address in the caller frame,
11196 plus breakpoints at all the destination locations. */
11197 std::vector<breakpoint_up> breakpoints;
cfc31633 11198
46e3ed7f 11199 until_break_fsm (struct interp *cmd_interp, int thread,
df631783 11200 std::vector<breakpoint_up> &&breakpoints)
46e3ed7f
TT
11201 : thread_fsm (cmd_interp),
11202 thread (thread),
df631783 11203 breakpoints (std::move (breakpoints))
46e3ed7f
TT
11204 {
11205 }
cfc31633 11206
46e3ed7f
TT
11207 void clean_up (struct thread_info *thread) override;
11208 bool should_stop (struct thread_info *thread) override;
11209 enum async_reply_reason do_async_reply_reason () override;
cfc31633
PA
11210};
11211
cfc31633
PA
11212/* Implementation of the 'should_stop' FSM method for the
11213 until(location)/advance commands. */
11214
46e3ed7f
TT
11215bool
11216until_break_fsm::should_stop (struct thread_info *tp)
cfc31633 11217{
df631783
PA
11218 for (const breakpoint_up &bp : breakpoints)
11219 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11220 bp.get ()) != NULL)
11221 {
11222 set_finished ();
11223 break;
11224 }
cfc31633 11225
46e3ed7f 11226 return true;
cfc31633
PA
11227}
11228
11229/* Implementation of the 'clean_up' FSM method for the
11230 until(location)/advance commands. */
11231
46e3ed7f
TT
11232void
11233until_break_fsm::clean_up (struct thread_info *)
43ff13b4 11234{
cfc31633 11235 /* Clean up our temporary breakpoints. */
df631783 11236 breakpoints.clear ();
46e3ed7f 11237 delete_longjmp_breakpoint (thread);
cfc31633
PA
11238}
11239
11240/* Implementation of the 'async_reply_reason' FSM method for the
11241 until(location)/advance commands. */
11242
46e3ed7f
TT
11243enum async_reply_reason
11244until_break_fsm::do_async_reply_reason ()
cfc31633
PA
11245{
11246 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
11247}
11248
c906108c 11249void
f2fc3015 11250until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 11251{
8556afb4
PA
11252 struct frame_info *frame;
11253 struct gdbarch *frame_gdbarch;
11254 struct frame_id stack_frame_id;
11255 struct frame_id caller_frame_id;
186c406b
TT
11256 int thread;
11257 struct thread_info *tp;
c906108c 11258
70509625 11259 clear_proceed_status (0);
c906108c
SS
11260
11261 /* Set a breakpoint where the user wants it and at return from
4a64f543 11262 this function. */
c5aa993b 11263
ffc2605c 11264 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 11265
6c5b2ebe
PA
11266 std::vector<symtab_and_line> sals
11267 = (last_displayed_sal_is_valid ()
11268 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11269 get_last_displayed_symtab (),
11270 get_last_displayed_line ())
11271 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
cafb3438 11272 NULL, NULL, 0));
c5aa993b 11273
df631783 11274 if (sals.empty ())
8a3fe4f8 11275 error (_("Couldn't get information on specified line."));
c5aa993b 11276
c906108c 11277 if (*arg)
8a3fe4f8 11278 error (_("Junk at end of arguments."));
c5aa993b 11279
186c406b 11280 tp = inferior_thread ();
5d5658a1 11281 thread = tp->global_num;
186c406b 11282
8556afb4
PA
11283 /* Note linespec handling above invalidates the frame chain.
11284 Installing a breakpoint also invalidates the frame chain (as it
11285 may need to switch threads), so do any frame handling before
11286 that. */
11287
11288 frame = get_selected_frame (NULL);
11289 frame_gdbarch = get_frame_arch (frame);
11290 stack_frame_id = get_stack_frame_id (frame);
11291 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 11292
ae66c1fc
EZ
11293 /* Keep within the current frame, or in frames called by the current
11294 one. */
edb3359d 11295
df631783 11296 std::vector<breakpoint_up> breakpoints;
5419bdae
TT
11297
11298 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11299
883bc8d1 11300 if (frame_id_p (caller_frame_id))
c906108c 11301 {
883bc8d1 11302 struct symtab_and_line sal2;
cfc31633 11303 struct gdbarch *caller_gdbarch;
883bc8d1
PA
11304
11305 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11306 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633 11307 caller_gdbarch = frame_unwind_caller_arch (frame);
df631783
PA
11308
11309 breakpoint_up caller_breakpoint
11310 = set_momentary_breakpoint (caller_gdbarch, sal2,
11311 caller_frame_id, bp_until);
11312 breakpoints.emplace_back (std::move (caller_breakpoint));
186c406b 11313
883bc8d1 11314 set_longjmp_breakpoint (tp, caller_frame_id);
5419bdae 11315 lj_deleter.emplace (thread);
c906108c 11316 }
c5aa993b 11317
c70a6932
JK
11318 /* set_momentary_breakpoint could invalidate FRAME. */
11319 frame = NULL;
11320
df631783
PA
11321 /* If the user told us to continue until a specified location, we
11322 don't specify a frame at which we need to stop. Otherwise,
11323 specify the selected frame, because we want to stop only at the
11324 very same frame. */
11325 frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
11326
11327 for (symtab_and_line &sal : sals)
11328 {
11329 resolve_sal_pc (&sal);
11330
11331 breakpoint_up location_breakpoint
11332 = set_momentary_breakpoint (frame_gdbarch, sal,
11333 stop_frame_id, bp_until);
11334 breakpoints.emplace_back (std::move (location_breakpoint));
11335 }
883bc8d1 11336
46e3ed7f 11337 tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
df631783 11338 std::move (breakpoints));
f107f563 11339
5419bdae
TT
11340 if (lj_deleter)
11341 lj_deleter->release ();
f107f563 11342
cfc31633 11343 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 11344}
ae66c1fc 11345
c906108c
SS
11346/* This function attempts to parse an optional "if <cond>" clause
11347 from the arg string. If one is not found, it returns NULL.
c5aa993b 11348
c906108c
SS
11349 Else, it returns a pointer to the condition string. (It does not
11350 attempt to evaluate the string against a particular block.) And,
11351 it updates arg to point to the first character following the parsed
4a64f543 11352 if clause in the arg string. */
53a5351d 11353
63160a43
PA
11354const char *
11355ep_parse_optional_if_clause (const char **arg)
c906108c 11356{
63160a43 11357 const char *cond_string;
c5aa993b
JM
11358
11359 if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
c906108c 11360 return NULL;
c5aa993b 11361
4a64f543 11362 /* Skip the "if" keyword. */
c906108c 11363 (*arg) += 2;
c5aa993b 11364
c906108c 11365 /* Skip any extra leading whitespace, and record the start of the
4a64f543 11366 condition string. */
f1735a53 11367 *arg = skip_spaces (*arg);
c906108c 11368 cond_string = *arg;
c5aa993b 11369
4a64f543
MS
11370 /* Assume that the condition occupies the remainder of the arg
11371 string. */
c906108c 11372 (*arg) += strlen (cond_string);
c5aa993b 11373
c906108c
SS
11374 return cond_string;
11375}
c5aa993b 11376
c906108c
SS
11377/* Commands to deal with catching events, such as signals, exceptions,
11378 process start/exit, etc. */
c5aa993b
JM
11379
11380typedef enum
11381{
44feb3ce
TT
11382 catch_fork_temporary, catch_vfork_temporary,
11383 catch_fork_permanent, catch_vfork_permanent
c5aa993b
JM
11384}
11385catch_fork_kind;
11386
c906108c 11387static void
eb4c3f4a 11388catch_fork_command_1 (const char *arg, int from_tty,
cc59ec59 11389 struct cmd_list_element *command)
c906108c 11390{
a6d9a66e 11391 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11392 const char *cond_string = NULL;
44feb3ce 11393 catch_fork_kind fork_kind;
44feb3ce
TT
11394
11395 fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
b650a282
SM
11396 bool temp = (fork_kind == catch_fork_temporary
11397 || fork_kind == catch_vfork_temporary);
c5aa993b 11398
44feb3ce
TT
11399 if (!arg)
11400 arg = "";
f1735a53 11401 arg = skip_spaces (arg);
c5aa993b 11402
c906108c 11403 /* The allowed syntax is:
c5aa993b
JM
11404 catch [v]fork
11405 catch [v]fork if <cond>
11406
4a64f543 11407 First, check if there's an if clause. */
c906108c 11408 cond_string = ep_parse_optional_if_clause (&arg);
c5aa993b 11409
c906108c 11410 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11411 error (_("Junk at end of arguments."));
c5aa993b 11412
c906108c 11413 /* If this target supports it, create a fork or vfork catchpoint
4a64f543 11414 and enable reporting of such events. */
c5aa993b
JM
11415 switch (fork_kind)
11416 {
44feb3ce
TT
11417 case catch_fork_temporary:
11418 case catch_fork_permanent:
b650a282 11419 create_fork_vfork_event_catchpoint (gdbarch, temp, cond_string,
dda83cd7 11420 &catch_fork_breakpoint_ops);
c906108c 11421 break;
44feb3ce
TT
11422 case catch_vfork_temporary:
11423 case catch_vfork_permanent:
b650a282 11424 create_fork_vfork_event_catchpoint (gdbarch, temp, cond_string,
dda83cd7 11425 &catch_vfork_breakpoint_ops);
c906108c 11426 break;
c5aa993b 11427 default:
8a3fe4f8 11428 error (_("unsupported or unknown fork kind; cannot catch it"));
c906108c 11429 break;
c5aa993b 11430 }
c906108c
SS
11431}
11432
11433static void
eb4c3f4a 11434catch_exec_command_1 (const char *arg, int from_tty,
cc59ec59 11435 struct cmd_list_element *command)
c906108c 11436{
a6d9a66e 11437 struct gdbarch *gdbarch = get_current_arch ();
63160a43 11438 const char *cond_string = NULL;
b650a282 11439 bool temp = get_cmd_context (command) == CATCH_TEMPORARY;
44feb3ce
TT
11440
11441 if (!arg)
11442 arg = "";
f1735a53 11443 arg = skip_spaces (arg);
c906108c
SS
11444
11445 /* The allowed syntax is:
c5aa993b
JM
11446 catch exec
11447 catch exec if <cond>
c906108c 11448
4a64f543 11449 First, check if there's an if clause. */
c906108c
SS
11450 cond_string = ep_parse_optional_if_clause (&arg);
11451
11452 if ((*arg != '\0') && !isspace (*arg))
8a3fe4f8 11453 error (_("Junk at end of arguments."));
c906108c 11454
b270e6f9 11455 std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
b650a282 11456 init_catchpoint (c.get (), gdbarch, temp, cond_string,
b4d90040
PA
11457 &catch_exec_breakpoint_ops);
11458 c->exec_pathname = NULL;
11459
b270e6f9 11460 install_breakpoint (0, std::move (c), 1);
c906108c 11461}
c5aa993b 11462
9ac4176b 11463void
28010a5d
PA
11464init_ada_exception_breakpoint (struct breakpoint *b,
11465 struct gdbarch *gdbarch,
11466 struct symtab_and_line sal,
f2fc3015 11467 const char *addr_string,
c0a91b2b 11468 const struct breakpoint_ops *ops,
28010a5d 11469 int tempflag,
349774ef 11470 int enabled,
28010a5d 11471 int from_tty)
f7f9143b 11472{
f7f9143b
JB
11473 if (from_tty)
11474 {
5af949e3
UW
11475 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11476 if (!loc_gdbarch)
11477 loc_gdbarch = gdbarch;
11478
6c95b8df
PA
11479 describe_other_breakpoints (loc_gdbarch,
11480 sal.pspace, sal.pc, sal.section, -1);
f7f9143b 11481 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
dda83cd7
SM
11482 version for exception catchpoints, because two catchpoints
11483 used for different exception names will use the same address.
11484 In this case, a "breakpoint ... also set at..." warning is
11485 unproductive. Besides, the warning phrasing is also a bit
11486 inappropriate, we should use the word catchpoint, and tell
11487 the user what type of catchpoint it is. The above is good
11488 enough for now, though. */
f7f9143b
JB
11489 }
11490
f06f1252 11491 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
f7f9143b 11492
349774ef 11493 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 11494 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
11495 b->location = string_to_event_location (&addr_string,
11496 language_def (language_ada));
f7f9143b 11497 b->language = language_ada;
f7f9143b
JB
11498}
11499
c906108c
SS
11500\f
11501
81b1e71c 11502/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
11503
11504static int
81b1e71c 11505compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 11506{
81b1e71c
TT
11507 uintptr_t ua = (uintptr_t) a;
11508 uintptr_t ub = (uintptr_t) b;
8a2c437b 11509
81b1e71c 11510 if (a->number < b->number)
8a2c437b 11511 return -1;
81b1e71c 11512 else if (a->number > b->number)
8a2c437b
TT
11513 return 1;
11514
11515 /* Now sort by address, in case we see, e..g, two breakpoints with
11516 the number 0. */
11517 if (ua < ub)
11518 return -1;
94b0e70d 11519 return ua > ub ? 1 : 0;
8a2c437b
TT
11520}
11521
80f8a6eb 11522/* Delete breakpoints by address or line. */
c906108c
SS
11523
11524static void
0b39b52e 11525clear_command (const char *arg, int from_tty)
c906108c 11526{
81b1e71c 11527 struct breakpoint *b;
c906108c 11528 int default_match;
c906108c 11529
6c5b2ebe
PA
11530 std::vector<symtab_and_line> decoded_sals;
11531 symtab_and_line last_sal;
11532 gdb::array_view<symtab_and_line> sals;
c906108c
SS
11533 if (arg)
11534 {
6c5b2ebe
PA
11535 decoded_sals
11536 = decode_line_with_current_source (arg,
11537 (DECODE_LINE_FUNFIRSTLINE
11538 | DECODE_LINE_LIST_MODE));
c906108c 11539 default_match = 0;
6c5b2ebe 11540 sals = decoded_sals;
c906108c
SS
11541 }
11542 else
11543 {
1bfeeb0f
JL
11544 /* Set sal's line, symtab, pc, and pspace to the values
11545 corresponding to the last call to print_frame_info. If the
11546 codepoint is not valid, this will set all the fields to 0. */
51abb421 11547 last_sal = get_last_displayed_sal ();
6c5b2ebe 11548 if (last_sal.symtab == 0)
8a3fe4f8 11549 error (_("No source file specified."));
c906108c 11550
c906108c 11551 default_match = 1;
6c5b2ebe 11552 sals = last_sal;
c906108c
SS
11553 }
11554
4a64f543
MS
11555 /* We don't call resolve_sal_pc here. That's not as bad as it
11556 seems, because all existing breakpoints typically have both
11557 file/line and pc set. So, if clear is given file/line, we can
11558 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
11559
11560 We only support clearing given the address explicitly
11561 present in breakpoint table. Say, we've set breakpoint
4a64f543 11562 at file:line. There were several PC values for that file:line,
ed0616c6 11563 due to optimization, all in one block.
4a64f543
MS
11564
11565 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
11566 PC corresponding to the same file:line, the breakpoint won't
11567 be cleared. We probably can still clear the breakpoint, but
11568 since the other PC value is never presented to user, user
11569 can only find it by guessing, and it does not seem important
11570 to support that. */
11571
4a64f543
MS
11572 /* For each line spec given, delete bps which correspond to it. Do
11573 it in two passes, solely to preserve the current behavior that
11574 from_tty is forced true if we delete more than one
11575 breakpoint. */
c906108c 11576
81b1e71c 11577 std::vector<struct breakpoint *> found;
6c5b2ebe 11578 for (const auto &sal : sals)
c906108c 11579 {
05cba821
JK
11580 const char *sal_fullname;
11581
c906108c 11582 /* If exact pc given, clear bpts at that pc.
dda83cd7
SM
11583 If line given (pc == 0), clear all bpts on specified line.
11584 If defaulting, clear all bpts on default line
11585 or at default pc.
c5aa993b 11586
dda83cd7 11587 defaulting sal.pc != 0 tests to do
c5aa993b 11588
dda83cd7
SM
11589 0 1 pc
11590 1 1 pc _and_ line
11591 0 0 line
11592 1 0 <can't happen> */
c906108c 11593
05cba821
JK
11594 sal_fullname = (sal.symtab == NULL
11595 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 11596
4a64f543 11597 /* Find all matching breakpoints and add them to 'found'. */
d6e956e5 11598 ALL_BREAKPOINTS (b)
c5aa993b 11599 {
0d381245 11600 int match = 0;
4a64f543 11601 /* Are we going to delete b? */
cc60f2e3 11602 if (b->type != bp_none && !is_watchpoint (b))
0d381245
VP
11603 {
11604 struct bp_location *loc = b->loc;
11605 for (; loc; loc = loc->next)
11606 {
f8eba3c6
TT
11607 /* If the user specified file:line, don't allow a PC
11608 match. This matches historical gdb behavior. */
11609 int pc_match = (!sal.explicit_line
11610 && sal.pc
11611 && (loc->pspace == sal.pspace)
11612 && (loc->address == sal.pc)
11613 && (!section_is_overlay (loc->section)
11614 || loc->section == sal.section));
4aac40c8
TT
11615 int line_match = 0;
11616
11617 if ((default_match || sal.explicit_line)
2f202fde 11618 && loc->symtab != NULL
05cba821 11619 && sal_fullname != NULL
4aac40c8 11620 && sal.pspace == loc->pspace
05cba821
JK
11621 && loc->line_number == sal.line
11622 && filename_cmp (symtab_to_fullname (loc->symtab),
11623 sal_fullname) == 0)
11624 line_match = 1;
4aac40c8 11625
0d381245
VP
11626 if (pc_match || line_match)
11627 {
11628 match = 1;
11629 break;
11630 }
11631 }
11632 }
11633
11634 if (match)
81b1e71c 11635 found.push_back (b);
c906108c 11636 }
80f8a6eb 11637 }
8a2c437b 11638
80f8a6eb 11639 /* Now go thru the 'found' chain and delete them. */
81b1e71c 11640 if (found.empty ())
80f8a6eb
MS
11641 {
11642 if (arg)
8a3fe4f8 11643 error (_("No breakpoint at %s."), arg);
80f8a6eb 11644 else
8a3fe4f8 11645 error (_("No breakpoint at this line."));
80f8a6eb 11646 }
c906108c 11647
8a2c437b 11648 /* Remove duplicates from the vec. */
81b1e71c 11649 std::sort (found.begin (), found.end (),
b926417a 11650 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11651 {
b926417a 11652 return compare_breakpoints (bp_a, bp_b) < 0;
81b1e71c
TT
11653 });
11654 found.erase (std::unique (found.begin (), found.end (),
b926417a 11655 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 11656 {
b926417a 11657 return compare_breakpoints (bp_a, bp_b) == 0;
81b1e71c
TT
11658 }),
11659 found.end ());
8a2c437b 11660
81b1e71c 11661 if (found.size () > 1)
4a64f543 11662 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 11663 if (from_tty)
a3f17187 11664 {
81b1e71c 11665 if (found.size () == 1)
a3f17187
AC
11666 printf_unfiltered (_("Deleted breakpoint "));
11667 else
11668 printf_unfiltered (_("Deleted breakpoints "));
11669 }
d6e956e5 11670
81b1e71c 11671 for (breakpoint *iter : found)
80f8a6eb 11672 {
c5aa993b 11673 if (from_tty)
81b1e71c
TT
11674 printf_unfiltered ("%d ", iter->number);
11675 delete_breakpoint (iter);
c906108c 11676 }
80f8a6eb
MS
11677 if (from_tty)
11678 putchar_unfiltered ('\n');
c906108c
SS
11679}
11680\f
11681/* Delete breakpoint in BS if they are `delete' breakpoints and
11682 all breakpoints that are marked for deletion, whether hit or not.
11683 This is called after any breakpoint is hit, or after errors. */
11684
11685void
fba45db2 11686breakpoint_auto_delete (bpstat bs)
c906108c 11687{
35df4500 11688 struct breakpoint *b, *b_tmp;
c906108c
SS
11689
11690 for (; bs; bs = bs->next)
f431efe5
PA
11691 if (bs->breakpoint_at
11692 && bs->breakpoint_at->disposition == disp_del
c906108c 11693 && bs->stop)
f431efe5 11694 delete_breakpoint (bs->breakpoint_at);
c906108c 11695
35df4500 11696 ALL_BREAKPOINTS_SAFE (b, b_tmp)
c5aa993b 11697 {
b5de0fa7 11698 if (b->disposition == disp_del_at_next_stop)
c5aa993b
JM
11699 delete_breakpoint (b);
11700 }
c906108c
SS
11701}
11702
4a64f543 11703/* A comparison function for bp_location AP and BP being interfaced to
39ef2f62 11704 std::sort. Sort elements primarily by their ADDRESS (no matter what
cb1e4e32
PA
11705 bl_address_is_meaningful says), secondarily by ordering first
11706 permanent elements and terciarily just ensuring the array is sorted
39ef2f62 11707 stable way despite std::sort being an unstable algorithm. */
876fa593
JK
11708
11709static int
39ef2f62 11710bp_location_is_less_than (const bp_location *a, const bp_location *b)
876fa593 11711{
876fa593 11712 if (a->address != b->address)
39ef2f62 11713 return a->address < b->address;
876fa593 11714
dea2aa5f
LM
11715 /* Sort locations at the same address by their pspace number, keeping
11716 locations of the same inferior (in a multi-inferior environment)
11717 grouped. */
11718
11719 if (a->pspace->num != b->pspace->num)
39ef2f62 11720 return a->pspace->num < b->pspace->num;
dea2aa5f 11721
876fa593 11722 /* Sort permanent breakpoints first. */
1a853c52 11723 if (a->permanent != b->permanent)
39ef2f62 11724 return a->permanent > b->permanent;
876fa593 11725
7f32a4d5
PA
11726 /* Sort by type in order to make duplicate determination easier.
11727 See update_global_location_list. This is kept in sync with
11728 breakpoint_locations_match. */
11729 if (a->loc_type < b->loc_type)
11730 return true;
11731
11732 /* Likewise, for range-breakpoints, sort by length. */
11733 if (a->loc_type == bp_loc_hardware_breakpoint
11734 && b->loc_type == bp_loc_hardware_breakpoint
11735 && a->length < b->length)
11736 return true;
11737
c56a97f9
JK
11738 /* Make the internal GDB representation stable across GDB runs
11739 where A and B memory inside GDB can differ. Breakpoint locations of
11740 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
11741
11742 if (a->owner->number != b->owner->number)
39ef2f62 11743 return a->owner->number < b->owner->number;
876fa593 11744
39ef2f62 11745 return a < b;
876fa593
JK
11746}
11747
f5336ca5
PA
11748/* Set bp_locations_placed_address_before_address_max and
11749 bp_locations_shadow_len_after_address_max according to the current
11750 content of the bp_locations array. */
f7545552
TT
11751
11752static void
f5336ca5 11753bp_locations_target_extensions_update (void)
f7545552 11754{
876fa593
JK
11755 struct bp_location *bl, **blp_tmp;
11756
f5336ca5
PA
11757 bp_locations_placed_address_before_address_max = 0;
11758 bp_locations_shadow_len_after_address_max = 0;
876fa593
JK
11759
11760 ALL_BP_LOCATIONS (bl, blp_tmp)
11761 {
11762 CORE_ADDR start, end, addr;
11763
11764 if (!bp_location_has_shadow (bl))
11765 continue;
11766
11767 start = bl->target_info.placed_address;
11768 end = start + bl->target_info.shadow_len;
11769
11770 gdb_assert (bl->address >= start);
11771 addr = bl->address - start;
f5336ca5
PA
11772 if (addr > bp_locations_placed_address_before_address_max)
11773 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
11774
11775 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
11776
11777 gdb_assert (bl->address < end);
11778 addr = end - bl->address;
f5336ca5
PA
11779 if (addr > bp_locations_shadow_len_after_address_max)
11780 bp_locations_shadow_len_after_address_max = addr;
876fa593 11781 }
f7545552
TT
11782}
11783
1e4d1764
YQ
11784/* Download tracepoint locations if they haven't been. */
11785
11786static void
11787download_tracepoint_locations (void)
11788{
7ed2c994 11789 struct breakpoint *b;
dd2e65cc 11790 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 11791
5ed8105e 11792 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 11793
7ed2c994 11794 ALL_TRACEPOINTS (b)
1e4d1764 11795 {
7ed2c994 11796 struct bp_location *bl;
1e4d1764 11797 struct tracepoint *t;
f2a8bc8a 11798 int bp_location_downloaded = 0;
1e4d1764 11799
7ed2c994 11800 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
11801 ? !may_insert_fast_tracepoints
11802 : !may_insert_tracepoints))
11803 continue;
11804
dd2e65cc
YQ
11805 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11806 {
11807 if (target_can_download_tracepoint ())
11808 can_download_tracepoint = TRIBOOL_TRUE;
11809 else
11810 can_download_tracepoint = TRIBOOL_FALSE;
11811 }
11812
11813 if (can_download_tracepoint == TRIBOOL_FALSE)
11814 break;
11815
7ed2c994
YQ
11816 for (bl = b->loc; bl; bl = bl->next)
11817 {
11818 /* In tracepoint, locations are _never_ duplicated, so
11819 should_be_inserted is equivalent to
11820 unduplicated_should_be_inserted. */
11821 if (!should_be_inserted (bl) || bl->inserted)
11822 continue;
1e4d1764 11823
7ed2c994 11824 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 11825
7ed2c994 11826 target_download_tracepoint (bl);
1e4d1764 11827
7ed2c994 11828 bl->inserted = 1;
f2a8bc8a 11829 bp_location_downloaded = 1;
7ed2c994
YQ
11830 }
11831 t = (struct tracepoint *) b;
11832 t->number_on_target = b->number;
f2a8bc8a 11833 if (bp_location_downloaded)
76727919 11834 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 11835 }
1e4d1764
YQ
11836}
11837
934709f0
PW
11838/* Swap the insertion/duplication state between two locations. */
11839
11840static void
11841swap_insertion (struct bp_location *left, struct bp_location *right)
11842{
11843 const int left_inserted = left->inserted;
11844 const int left_duplicate = left->duplicate;
b775012e 11845 const int left_needs_update = left->needs_update;
934709f0
PW
11846 const struct bp_target_info left_target_info = left->target_info;
11847
1e4d1764
YQ
11848 /* Locations of tracepoints can never be duplicated. */
11849 if (is_tracepoint (left->owner))
11850 gdb_assert (!left->duplicate);
11851 if (is_tracepoint (right->owner))
11852 gdb_assert (!right->duplicate);
11853
934709f0
PW
11854 left->inserted = right->inserted;
11855 left->duplicate = right->duplicate;
b775012e 11856 left->needs_update = right->needs_update;
934709f0
PW
11857 left->target_info = right->target_info;
11858 right->inserted = left_inserted;
11859 right->duplicate = left_duplicate;
b775012e 11860 right->needs_update = left_needs_update;
934709f0
PW
11861 right->target_info = left_target_info;
11862}
11863
b775012e
LM
11864/* Force the re-insertion of the locations at ADDRESS. This is called
11865 once a new/deleted/modified duplicate location is found and we are evaluating
11866 conditions on the target's side. Such conditions need to be updated on
11867 the target. */
11868
11869static void
11870force_breakpoint_reinsertion (struct bp_location *bl)
11871{
11872 struct bp_location **locp = NULL, **loc2p;
11873 struct bp_location *loc;
11874 CORE_ADDR address = 0;
11875 int pspace_num;
11876
11877 address = bl->address;
11878 pspace_num = bl->pspace->num;
11879
11880 /* This is only meaningful if the target is
11881 evaluating conditions and if the user has
11882 opted for condition evaluation on the target's
11883 side. */
11884 if (gdb_evaluates_breakpoint_condition_p ()
11885 || !target_supports_evaluation_of_breakpoint_conditions ())
11886 return;
11887
11888 /* Flag all breakpoint locations with this address and
11889 the same program space as the location
11890 as "its condition has changed". We need to
11891 update the conditions on the target's side. */
11892 ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11893 {
11894 loc = *loc2p;
11895
11896 if (!is_breakpoint (loc->owner)
11897 || pspace_num != loc->pspace->num)
11898 continue;
11899
11900 /* Flag the location appropriately. We use a different state to
11901 let everyone know that we already updated the set of locations
11902 with addr bl->address and program space bl->pspace. This is so
11903 we don't have to keep calling these functions just to mark locations
11904 that have already been marked. */
11905 loc->condition_changed = condition_updated;
11906
11907 /* Free the agent expression bytecode as well. We will compute
11908 it later on. */
833177a4 11909 loc->cond_bytecode.reset ();
b775012e
LM
11910 }
11911}
7f32a4d5 11912
44702360
PA
11913/* Called whether new breakpoints are created, or existing breakpoints
11914 deleted, to update the global location list and recompute which
11915 locations are duplicate of which.
b775012e 11916
04086b45
PA
11917 The INSERT_MODE flag determines whether locations may not, may, or
11918 shall be inserted now. See 'enum ugll_insert_mode' for more
11919 info. */
b60e7edf 11920
0d381245 11921static void
44702360 11922update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 11923{
74960c60 11924 struct breakpoint *b;
876fa593 11925 struct bp_location **locp, *loc;
b775012e
LM
11926 /* Last breakpoint location address that was marked for update. */
11927 CORE_ADDR last_addr = 0;
11928 /* Last breakpoint location program space that was marked for update. */
11929 int last_pspace_num = -1;
f7545552 11930
2d134ed3
PA
11931 /* Used in the duplicates detection below. When iterating over all
11932 bp_locations, points to the first bp_location of a given address.
11933 Breakpoints and watchpoints of different types are never
11934 duplicates of each other. Keep one pointer for each type of
11935 breakpoint/watchpoint, so we only need to loop over all locations
11936 once. */
11937 struct bp_location *bp_loc_first; /* breakpoint */
11938 struct bp_location *wp_loc_first; /* hardware watchpoint */
11939 struct bp_location *awp_loc_first; /* access watchpoint */
11940 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11941
f5336ca5
PA
11942 /* Saved former bp_locations array which we compare against the newly
11943 built bp_locations from the current state of ALL_BREAKPOINTS. */
81b1e71c 11944 struct bp_location **old_locp;
f5336ca5 11945 unsigned old_locations_count;
81b1e71c 11946 gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
876fa593 11947
f5336ca5
PA
11948 old_locations_count = bp_locations_count;
11949 bp_locations = NULL;
11950 bp_locations_count = 0;
0d381245 11951
74960c60 11952 ALL_BREAKPOINTS (b)
876fa593 11953 for (loc = b->loc; loc; loc = loc->next)
f5336ca5 11954 bp_locations_count++;
876fa593 11955
f5336ca5
PA
11956 bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11957 locp = bp_locations;
876fa593
JK
11958 ALL_BREAKPOINTS (b)
11959 for (loc = b->loc; loc; loc = loc->next)
11960 *locp++ = loc;
7f32a4d5
PA
11961
11962 /* See if we need to "upgrade" a software breakpoint to a hardware
11963 breakpoint. Do this before deciding whether locations are
11964 duplicates. Also do this before sorting because sorting order
11965 depends on location type. */
11966 for (locp = bp_locations;
11967 locp < bp_locations + bp_locations_count;
11968 locp++)
11969 {
11970 loc = *locp;
11971 if (!loc->inserted && should_be_inserted (loc))
11972 handle_automatic_hardware_breakpoints (loc);
11973 }
11974
39ef2f62
CB
11975 std::sort (bp_locations, bp_locations + bp_locations_count,
11976 bp_location_is_less_than);
876fa593 11977
f5336ca5 11978 bp_locations_target_extensions_update ();
74960c60 11979
4a64f543
MS
11980 /* Identify bp_location instances that are no longer present in the
11981 new list, and therefore should be freed. Note that it's not
11982 necessary that those locations should be removed from inferior --
11983 if there's another location at the same address (previously
11984 marked as duplicate), we don't need to remove/insert the
11985 location.
876fa593 11986
4a64f543
MS
11987 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11988 and former bp_location array state respectively. */
876fa593 11989
f5336ca5 11990 locp = bp_locations;
81b1e71c
TT
11991 for (old_locp = old_locations.get ();
11992 old_locp < old_locations.get () + old_locations_count;
876fa593 11993 old_locp++)
74960c60 11994 {
876fa593 11995 struct bp_location *old_loc = *old_locp;
c7d46a38 11996 struct bp_location **loc2p;
876fa593 11997
e5dd4106 11998 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11999 not, we have to free it. */
c7d46a38 12000 int found_object = 0;
20874c92
VP
12001 /* Tells if the location should remain inserted in the target. */
12002 int keep_in_target = 0;
12003 int removed = 0;
876fa593 12004
4a64f543
MS
12005 /* Skip LOCP entries which will definitely never be needed.
12006 Stop either at or being the one matching OLD_LOC. */
f5336ca5 12007 while (locp < bp_locations + bp_locations_count
c7d46a38 12008 && (*locp)->address < old_loc->address)
876fa593 12009 locp++;
c7d46a38
PA
12010
12011 for (loc2p = locp;
f5336ca5 12012 (loc2p < bp_locations + bp_locations_count
c7d46a38
PA
12013 && (*loc2p)->address == old_loc->address);
12014 loc2p++)
12015 {
b775012e
LM
12016 /* Check if this is a new/duplicated location or a duplicated
12017 location that had its condition modified. If so, we want to send
12018 its condition to the target if evaluation of conditions is taking
12019 place there. */
12020 if ((*loc2p)->condition_changed == condition_modified
12021 && (last_addr != old_loc->address
12022 || last_pspace_num != old_loc->pspace->num))
c7d46a38 12023 {
b775012e
LM
12024 force_breakpoint_reinsertion (*loc2p);
12025 last_pspace_num = old_loc->pspace->num;
c7d46a38 12026 }
b775012e
LM
12027
12028 if (*loc2p == old_loc)
12029 found_object = 1;
c7d46a38 12030 }
74960c60 12031
b775012e
LM
12032 /* We have already handled this address, update it so that we don't
12033 have to go through updates again. */
12034 last_addr = old_loc->address;
12035
12036 /* Target-side condition evaluation: Handle deleted locations. */
12037 if (!found_object)
12038 force_breakpoint_reinsertion (old_loc);
12039
4a64f543
MS
12040 /* If this location is no longer present, and inserted, look if
12041 there's maybe a new location at the same address. If so,
12042 mark that one inserted, and don't remove this one. This is
12043 needed so that we don't have a time window where a breakpoint
12044 at certain location is not inserted. */
74960c60 12045
876fa593 12046 if (old_loc->inserted)
0d381245 12047 {
4a64f543
MS
12048 /* If the location is inserted now, we might have to remove
12049 it. */
74960c60 12050
876fa593 12051 if (found_object && should_be_inserted (old_loc))
74960c60 12052 {
4a64f543
MS
12053 /* The location is still present in the location list,
12054 and still should be inserted. Don't do anything. */
20874c92 12055 keep_in_target = 1;
74960c60
VP
12056 }
12057 else
12058 {
b775012e
LM
12059 /* This location still exists, but it won't be kept in the
12060 target since it may have been disabled. We proceed to
12061 remove its target-side condition. */
12062
4a64f543
MS
12063 /* The location is either no longer present, or got
12064 disabled. See if there's another location at the
12065 same address, in which case we don't need to remove
12066 this one from the target. */
876fa593 12067
2bdf28a0 12068 /* OLD_LOC comes from existing struct breakpoint. */
cb1e4e32 12069 if (bl_address_is_meaningful (old_loc))
876fa593 12070 {
876fa593 12071 for (loc2p = locp;
f5336ca5 12072 (loc2p < bp_locations + bp_locations_count
c7d46a38 12073 && (*loc2p)->address == old_loc->address);
876fa593
JK
12074 loc2p++)
12075 {
12076 struct bp_location *loc2 = *loc2p;
12077
7f32a4d5
PA
12078 if (loc2 == old_loc)
12079 continue;
12080
2d134ed3 12081 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 12082 {
85d721b8
PA
12083 /* Read watchpoint locations are switched to
12084 access watchpoints, if the former are not
12085 supported, but the latter are. */
12086 if (is_hardware_watchpoint (old_loc->owner))
12087 {
12088 gdb_assert (is_hardware_watchpoint (loc2->owner));
12089 loc2->watchpoint_type = old_loc->watchpoint_type;
12090 }
12091
934709f0
PW
12092 /* loc2 is a duplicated location. We need to check
12093 if it should be inserted in case it will be
12094 unduplicated. */
7f32a4d5 12095 if (unduplicated_should_be_inserted (loc2))
c7d46a38 12096 {
934709f0 12097 swap_insertion (old_loc, loc2);
c7d46a38
PA
12098 keep_in_target = 1;
12099 break;
12100 }
876fa593
JK
12101 }
12102 }
12103 }
74960c60
VP
12104 }
12105
20874c92
VP
12106 if (!keep_in_target)
12107 {
834c0d03 12108 if (remove_breakpoint (old_loc))
20874c92 12109 {
4a64f543
MS
12110 /* This is just about all we can do. We could keep
12111 this location on the global list, and try to
12112 remove it next time, but there's no particular
12113 reason why we will succeed next time.
20874c92 12114
4a64f543
MS
12115 Note that at this point, old_loc->owner is still
12116 valid, as delete_breakpoint frees the breakpoint
12117 only after calling us. */
3e43a32a
MS
12118 printf_filtered (_("warning: Error removing "
12119 "breakpoint %d\n"),
876fa593 12120 old_loc->owner->number);
20874c92
VP
12121 }
12122 removed = 1;
12123 }
0d381245 12124 }
74960c60
VP
12125
12126 if (!found_object)
1c5cfe86 12127 {
fbea99ea 12128 if (removed && target_is_non_stop_p ()
1cf4d951 12129 && need_moribund_for_location_type (old_loc))
20874c92 12130 {
db82e815
PA
12131 /* This location was removed from the target. In
12132 non-stop mode, a race condition is possible where
12133 we've removed a breakpoint, but stop events for that
12134 breakpoint are already queued and will arrive later.
12135 We apply an heuristic to be able to distinguish such
12136 SIGTRAPs from other random SIGTRAPs: we keep this
12137 breakpoint location for a bit, and will retire it
12138 after we see some number of events. The theory here
12139 is that reporting of events should, "on the average",
12140 be fair, so after a while we'll see events from all
12141 threads that have anything of interest, and no longer
12142 need to keep this breakpoint location around. We
12143 don't hold locations forever so to reduce chances of
12144 mistaking a non-breakpoint SIGTRAP for a breakpoint
12145 SIGTRAP.
12146
12147 The heuristic failing can be disastrous on
12148 decr_pc_after_break targets.
12149
12150 On decr_pc_after_break targets, like e.g., x86-linux,
12151 if we fail to recognize a late breakpoint SIGTRAP,
12152 because events_till_retirement has reached 0 too
12153 soon, we'll fail to do the PC adjustment, and report
12154 a random SIGTRAP to the user. When the user resumes
12155 the inferior, it will most likely immediately crash
2dec564e 12156 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
12157 corrupted, because of being resumed e.g., in the
12158 middle of a multi-byte instruction, or skipped a
12159 one-byte instruction. This was actually seen happen
12160 on native x86-linux, and should be less rare on
12161 targets that do not support new thread events, like
12162 remote, due to the heuristic depending on
12163 thread_count.
12164
12165 Mistaking a random SIGTRAP for a breakpoint trap
12166 causes similar symptoms (PC adjustment applied when
12167 it shouldn't), but then again, playing with SIGTRAPs
12168 behind the debugger's back is asking for trouble.
12169
12170 Since hardware watchpoint traps are always
12171 distinguishable from other traps, so we don't need to
12172 apply keep hardware watchpoint moribund locations
12173 around. We simply always ignore hardware watchpoint
12174 traps we can no longer explain. */
12175
5b6d1e4f
PA
12176 process_stratum_target *proc_target = nullptr;
12177 for (inferior *inf : all_inferiors ())
12178 if (inf->pspace == old_loc->pspace)
12179 {
12180 proc_target = inf->process_target ();
12181 break;
12182 }
12183 if (proc_target != nullptr)
12184 old_loc->events_till_retirement
12185 = 3 * (thread_count (proc_target) + 1);
12186 else
12187 old_loc->events_till_retirement = 1;
876fa593 12188 old_loc->owner = NULL;
20874c92 12189
1123588c 12190 moribund_locations.push_back (old_loc);
1c5cfe86
PA
12191 }
12192 else
f431efe5
PA
12193 {
12194 old_loc->owner = NULL;
12195 decref_bp_location (&old_loc);
12196 }
20874c92 12197 }
74960c60 12198 }
1c5cfe86 12199
348d480f
PA
12200 /* Rescan breakpoints at the same address and section, marking the
12201 first one as "first" and any others as "duplicates". This is so
12202 that the bpt instruction is only inserted once. If we have a
12203 permanent breakpoint at the same place as BPT, make that one the
12204 official one, and the rest as duplicates. Permanent breakpoints
12205 are sorted first for the same address.
12206
12207 Do the same for hardware watchpoints, but also considering the
12208 watchpoint's type (regular/access/read) and length. */
12209
12210 bp_loc_first = NULL;
12211 wp_loc_first = NULL;
12212 awp_loc_first = NULL;
12213 rwp_loc_first = NULL;
12214 ALL_BP_LOCATIONS (loc, locp)
12215 {
12216 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12217 non-NULL. */
348d480f 12218 struct bp_location **loc_first_p;
d3fbdd86 12219 b = loc->owner;
348d480f 12220
6f380991 12221 if (!unduplicated_should_be_inserted (loc)
cb1e4e32 12222 || !bl_address_is_meaningful (loc)
1e4d1764
YQ
12223 /* Don't detect duplicate for tracepoint locations because they are
12224 never duplicated. See the comments in field `duplicate' of
12225 `struct bp_location'. */
348d480f 12226 || is_tracepoint (b))
b775012e
LM
12227 {
12228 /* Clear the condition modification flag. */
12229 loc->condition_changed = condition_unchanged;
12230 continue;
12231 }
348d480f 12232
348d480f
PA
12233 if (b->type == bp_hardware_watchpoint)
12234 loc_first_p = &wp_loc_first;
12235 else if (b->type == bp_read_watchpoint)
12236 loc_first_p = &rwp_loc_first;
12237 else if (b->type == bp_access_watchpoint)
12238 loc_first_p = &awp_loc_first;
12239 else
12240 loc_first_p = &bp_loc_first;
12241
12242 if (*loc_first_p == NULL
12243 || (overlay_debugging && loc->section != (*loc_first_p)->section)
12244 || !breakpoint_locations_match (loc, *loc_first_p))
12245 {
12246 *loc_first_p = loc;
12247 loc->duplicate = 0;
b775012e
LM
12248
12249 if (is_breakpoint (loc->owner) && loc->condition_changed)
12250 {
12251 loc->needs_update = 1;
12252 /* Clear the condition modification flag. */
12253 loc->condition_changed = condition_unchanged;
12254 }
348d480f
PA
12255 continue;
12256 }
12257
934709f0
PW
12258
12259 /* This and the above ensure the invariant that the first location
12260 is not duplicated, and is the inserted one.
12261 All following are marked as duplicated, and are not inserted. */
12262 if (loc->inserted)
12263 swap_insertion (loc, *loc_first_p);
348d480f
PA
12264 loc->duplicate = 1;
12265
b775012e
LM
12266 /* Clear the condition modification flag. */
12267 loc->condition_changed = condition_unchanged;
348d480f
PA
12268 }
12269
a25a5a45 12270 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 12271 {
04086b45 12272 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
12273 insert_breakpoint_locations ();
12274 else
12275 {
44702360
PA
12276 /* Even though the caller told us to not insert new
12277 locations, we may still need to update conditions on the
12278 target's side of breakpoints that were already inserted
12279 if the target is evaluating breakpoint conditions. We
b775012e
LM
12280 only update conditions for locations that are marked
12281 "needs_update". */
12282 update_inserted_breakpoint_locations ();
12283 }
12284 }
348d480f 12285
04086b45 12286 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 12287 download_tracepoint_locations ();
348d480f
PA
12288}
12289
12290void
12291breakpoint_retire_moribund (void)
12292{
1123588c
TT
12293 for (int ix = 0; ix < moribund_locations.size (); ++ix)
12294 {
12295 struct bp_location *loc = moribund_locations[ix];
12296 if (--(loc->events_till_retirement) == 0)
12297 {
12298 decref_bp_location (&loc);
12299 unordered_remove (moribund_locations, ix);
12300 --ix;
12301 }
12302 }
348d480f
PA
12303}
12304
12305static void
44702360 12306update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 12307{
348d480f 12308
a70b8144 12309 try
492d29ea
PA
12310 {
12311 update_global_location_list (insert_mode);
12312 }
230d2906 12313 catch (const gdb_exception_error &e)
492d29ea
PA
12314 {
12315 }
348d480f
PA
12316}
12317
12318/* Clear BKP from a BPS. */
12319
12320static void
12321bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12322{
12323 bpstat bs;
12324
12325 for (bs = bps; bs; bs = bs->next)
12326 if (bs->breakpoint_at == bpt)
12327 {
12328 bs->breakpoint_at = NULL;
12329 bs->old_val = NULL;
12330 /* bs->commands will be freed later. */
12331 }
12332}
12333
12334/* Callback for iterate_over_threads. */
12335static int
12336bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12337{
9a3c8263 12338 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
12339
12340 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12341 return 0;
12342}
12343
12344/* Helper for breakpoint and tracepoint breakpoint_ops->mention
12345 callbacks. */
12346
12347static void
12348say_where (struct breakpoint *b)
12349{
12350 struct value_print_options opts;
12351
12352 get_user_print_options (&opts);
12353
12354 /* i18n: cagney/2005-02-11: Below needs to be merged into a
12355 single string. */
12356 if (b->loc == NULL)
12357 {
f00aae0f
KS
12358 /* For pending locations, the output differs slightly based
12359 on b->extra_string. If this is non-NULL, it contains either
12360 a condition or dprintf arguments. */
12361 if (b->extra_string == NULL)
12362 {
12363 printf_filtered (_(" (%s) pending."),
d28cd78a 12364 event_location_to_string (b->location.get ()));
f00aae0f
KS
12365 }
12366 else if (b->type == bp_dprintf)
12367 {
12368 printf_filtered (_(" (%s,%s) pending."),
d28cd78a 12369 event_location_to_string (b->location.get ()),
f00aae0f
KS
12370 b->extra_string);
12371 }
12372 else
12373 {
12374 printf_filtered (_(" (%s %s) pending."),
d28cd78a 12375 event_location_to_string (b->location.get ()),
f00aae0f
KS
12376 b->extra_string);
12377 }
348d480f
PA
12378 }
12379 else
12380 {
2f202fde 12381 if (opts.addressprint || b->loc->symtab == NULL)
6a831f06
PA
12382 printf_filtered (" at %ps",
12383 styled_string (address_style.style (),
12384 paddress (b->loc->gdbarch,
12385 b->loc->address)));
2f202fde 12386 if (b->loc->symtab != NULL)
f8eba3c6
TT
12387 {
12388 /* If there is a single location, we can print the location
12389 more nicely. */
12390 if (b->loc->next == NULL)
0bb296cb 12391 {
6a831f06
PA
12392 const char *filename
12393 = symtab_to_filename_for_display (b->loc->symtab);
12394 printf_filtered (": file %ps, line %d.",
12395 styled_string (file_name_style.style (),
12396 filename),
0bb296cb
TT
12397 b->loc->line_number);
12398 }
f8eba3c6
TT
12399 else
12400 /* This is not ideal, but each location may have a
12401 different file name, and this at least reflects the
12402 real situation somewhat. */
f00aae0f 12403 printf_filtered (": %s.",
d28cd78a 12404 event_location_to_string (b->location.get ()));
f8eba3c6 12405 }
348d480f
PA
12406
12407 if (b->loc->next)
12408 {
12409 struct bp_location *loc = b->loc;
12410 int n = 0;
12411 for (; loc; loc = loc->next)
12412 ++n;
12413 printf_filtered (" (%d locations)", n);
12414 }
12415 }
12416}
12417
5f486660 12418bp_location::~bp_location ()
348d480f 12419{
5f486660 12420 xfree (function_name);
348d480f
PA
12421}
12422
c1fc2657 12423/* Destructor for the breakpoint base class. */
348d480f 12424
c1fc2657 12425breakpoint::~breakpoint ()
348d480f 12426{
c1fc2657
SM
12427 xfree (this->cond_string);
12428 xfree (this->extra_string);
348d480f
PA
12429}
12430
2060206e
PA
12431static struct bp_location *
12432base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 12433{
5f486660 12434 return new bp_location (self);
348d480f
PA
12435}
12436
2060206e
PA
12437static void
12438base_breakpoint_re_set (struct breakpoint *b)
12439{
12440 /* Nothing to re-set. */
12441}
12442
12443#define internal_error_pure_virtual_called() \
12444 gdb_assert_not_reached ("pure virtual function called")
12445
12446static int
12447base_breakpoint_insert_location (struct bp_location *bl)
12448{
12449 internal_error_pure_virtual_called ();
12450}
12451
12452static int
73971819
PA
12453base_breakpoint_remove_location (struct bp_location *bl,
12454 enum remove_bp_reason reason)
2060206e
PA
12455{
12456 internal_error_pure_virtual_called ();
12457}
12458
12459static int
12460base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12461 const address_space *aspace,
09ac7c10
TT
12462 CORE_ADDR bp_addr,
12463 const struct target_waitstatus *ws)
2060206e
PA
12464{
12465 internal_error_pure_virtual_called ();
12466}
12467
12468static void
12469base_breakpoint_check_status (bpstat bs)
12470{
12471 /* Always stop. */
12472}
12473
12474/* A "works_in_software_mode" breakpoint_ops method that just internal
12475 errors. */
12476
12477static int
12478base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12479{
12480 internal_error_pure_virtual_called ();
12481}
12482
12483/* A "resources_needed" breakpoint_ops method that just internal
12484 errors. */
12485
12486static int
12487base_breakpoint_resources_needed (const struct bp_location *bl)
12488{
12489 internal_error_pure_virtual_called ();
12490}
12491
12492static enum print_stop_action
12493base_breakpoint_print_it (bpstat bs)
12494{
12495 internal_error_pure_virtual_called ();
12496}
12497
12498static void
12499base_breakpoint_print_one_detail (const struct breakpoint *self,
12500 struct ui_out *uiout)
12501{
12502 /* nothing */
12503}
12504
12505static void
12506base_breakpoint_print_mention (struct breakpoint *b)
12507{
12508 internal_error_pure_virtual_called ();
12509}
12510
12511static void
12512base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12513{
12514 internal_error_pure_virtual_called ();
12515}
12516
983af33b 12517static void
f00aae0f 12518base_breakpoint_create_sals_from_location
626d2320 12519 (struct event_location *location,
f00aae0f
KS
12520 struct linespec_result *canonical,
12521 enum bptype type_wanted)
983af33b
SDJ
12522{
12523 internal_error_pure_virtual_called ();
12524}
12525
12526static void
12527base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12528 struct linespec_result *c,
e1e01040
PA
12529 gdb::unique_xmalloc_ptr<char> cond_string,
12530 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12531 enum bptype type_wanted,
12532 enum bpdisp disposition,
12533 int thread,
12534 int task, int ignore_count,
12535 const struct breakpoint_ops *o,
12536 int from_tty, int enabled,
44f238bb 12537 int internal, unsigned flags)
983af33b
SDJ
12538{
12539 internal_error_pure_virtual_called ();
12540}
12541
6c5b2ebe 12542static std::vector<symtab_and_line>
f00aae0f 12543base_breakpoint_decode_location (struct breakpoint *b,
626d2320 12544 struct event_location *location,
6c5b2ebe 12545 struct program_space *search_pspace)
983af33b
SDJ
12546{
12547 internal_error_pure_virtual_called ();
12548}
12549
ab04a2af
TT
12550/* The default 'explains_signal' method. */
12551
47591c29 12552static int
427cd150 12553base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 12554{
47591c29 12555 return 1;
ab04a2af
TT
12556}
12557
9d6e6e84
HZ
12558/* The default "after_condition_true" method. */
12559
12560static void
12561base_breakpoint_after_condition_true (struct bpstats *bs)
12562{
12563 /* Nothing to do. */
12564}
12565
ab04a2af 12566struct breakpoint_ops base_breakpoint_ops =
2060206e 12567{
2060206e
PA
12568 base_breakpoint_allocate_location,
12569 base_breakpoint_re_set,
12570 base_breakpoint_insert_location,
12571 base_breakpoint_remove_location,
12572 base_breakpoint_breakpoint_hit,
12573 base_breakpoint_check_status,
12574 base_breakpoint_resources_needed,
12575 base_breakpoint_works_in_software_mode,
12576 base_breakpoint_print_it,
12577 NULL,
12578 base_breakpoint_print_one_detail,
12579 base_breakpoint_print_mention,
983af33b 12580 base_breakpoint_print_recreate,
5f700d83 12581 base_breakpoint_create_sals_from_location,
983af33b 12582 base_breakpoint_create_breakpoints_sal,
5f700d83 12583 base_breakpoint_decode_location,
9d6e6e84
HZ
12584 base_breakpoint_explains_signal,
12585 base_breakpoint_after_condition_true,
2060206e
PA
12586};
12587
12588/* Default breakpoint_ops methods. */
12589
12590static void
348d480f
PA
12591bkpt_re_set (struct breakpoint *b)
12592{
06edf0c0 12593 /* FIXME: is this still reachable? */
9ef9e6a6 12594 if (breakpoint_event_location_empty_p (b))
06edf0c0 12595 {
f00aae0f 12596 /* Anything without a location can't be re-set. */
348d480f 12597 delete_breakpoint (b);
06edf0c0 12598 return;
348d480f 12599 }
06edf0c0
PA
12600
12601 breakpoint_re_set_default (b);
348d480f
PA
12602}
12603
2060206e 12604static int
348d480f
PA
12605bkpt_insert_location (struct bp_location *bl)
12606{
cd6c3b4f
YQ
12607 CORE_ADDR addr = bl->target_info.reqstd_address;
12608
579c6ad9 12609 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
12610 bl->target_info.placed_address = addr;
12611
348d480f 12612 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 12613 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 12614 else
7c16b83e 12615 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
12616}
12617
2060206e 12618static int
73971819 12619bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
12620{
12621 if (bl->loc_type == bp_loc_hardware_breakpoint)
12622 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12623 else
73971819 12624 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
12625}
12626
2060206e 12627static int
348d480f 12628bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 12629 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 12630 const struct target_waitstatus *ws)
348d480f 12631{
09ac7c10 12632 if (ws->kind != TARGET_WAITKIND_STOPPED
a493e3e2 12633 || ws->value.sig != GDB_SIGNAL_TRAP)
09ac7c10
TT
12634 return 0;
12635
348d480f
PA
12636 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12637 aspace, bp_addr))
12638 return 0;
12639
12640 if (overlay_debugging /* unmapped overlay section */
12641 && section_is_overlay (bl->section)
12642 && !section_is_mapped (bl->section))
12643 return 0;
12644
12645 return 1;
12646}
12647
cd1608cc
PA
12648static int
12649dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 12650 const address_space *aspace, CORE_ADDR bp_addr,
cd1608cc
PA
12651 const struct target_waitstatus *ws)
12652{
12653 if (dprintf_style == dprintf_style_agent
12654 && target_can_run_breakpoint_commands ())
12655 {
12656 /* An agent-style dprintf never causes a stop. If we see a trap
12657 for this address it must be for a breakpoint that happens to
12658 be set at the same address. */
12659 return 0;
12660 }
12661
12662 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12663}
12664
2060206e 12665static int
348d480f
PA
12666bkpt_resources_needed (const struct bp_location *bl)
12667{
12668 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12669
12670 return 1;
12671}
12672
2060206e 12673static enum print_stop_action
348d480f
PA
12674bkpt_print_it (bpstat bs)
12675{
348d480f
PA
12676 struct breakpoint *b;
12677 const struct bp_location *bl;
001c8c33 12678 int bp_temp;
79a45e25 12679 struct ui_out *uiout = current_uiout;
348d480f
PA
12680
12681 gdb_assert (bs->bp_location_at != NULL);
12682
12683 bl = bs->bp_location_at;
12684 b = bs->breakpoint_at;
12685
001c8c33
PA
12686 bp_temp = b->disposition == disp_del;
12687 if (bl->address != bl->requested_address)
12688 breakpoint_adjustment_warning (bl->requested_address,
12689 bl->address,
12690 b->number, 1);
12691 annotate_breakpoint (b->number);
f303dbd6
PA
12692 maybe_print_thread_hit_breakpoint (uiout);
12693
112e8700 12694 if (uiout->is_mi_like_p ())
348d480f 12695 {
112e8700 12696 uiout->field_string ("reason",
001c8c33 12697 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 12698 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 12699 }
6a831f06
PA
12700 if (bp_temp)
12701 uiout->message ("Temporary breakpoint %pF, ",
12702 signed_field ("bkptno", b->number));
12703 else
12704 uiout->message ("Breakpoint %pF, ",
12705 signed_field ("bkptno", b->number));
06edf0c0 12706
001c8c33 12707 return PRINT_SRC_AND_LOC;
06edf0c0
PA
12708}
12709
2060206e 12710static void
06edf0c0
PA
12711bkpt_print_mention (struct breakpoint *b)
12712{
112e8700 12713 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
12714 return;
12715
12716 switch (b->type)
12717 {
12718 case bp_breakpoint:
12719 case bp_gnu_ifunc_resolver:
12720 if (b->disposition == disp_del)
12721 printf_filtered (_("Temporary breakpoint"));
12722 else
12723 printf_filtered (_("Breakpoint"));
12724 printf_filtered (_(" %d"), b->number);
12725 if (b->type == bp_gnu_ifunc_resolver)
12726 printf_filtered (_(" at gnu-indirect-function resolver"));
12727 break;
12728 case bp_hardware_breakpoint:
12729 printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12730 break;
e7e0cddf
SS
12731 case bp_dprintf:
12732 printf_filtered (_("Dprintf %d"), b->number);
12733 break;
06edf0c0
PA
12734 }
12735
12736 say_where (b);
12737}
12738
2060206e 12739static void
06edf0c0
PA
12740bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12741{
12742 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12743 fprintf_unfiltered (fp, "tbreak");
12744 else if (tp->type == bp_breakpoint)
12745 fprintf_unfiltered (fp, "break");
12746 else if (tp->type == bp_hardware_breakpoint
12747 && tp->disposition == disp_del)
12748 fprintf_unfiltered (fp, "thbreak");
12749 else if (tp->type == bp_hardware_breakpoint)
12750 fprintf_unfiltered (fp, "hbreak");
12751 else
12752 internal_error (__FILE__, __LINE__,
12753 _("unhandled breakpoint type %d"), (int) tp->type);
12754
f00aae0f 12755 fprintf_unfiltered (fp, " %s",
d28cd78a 12756 event_location_to_string (tp->location.get ()));
f00aae0f
KS
12757
12758 /* Print out extra_string if this breakpoint is pending. It might
12759 contain, for example, conditions that were set by the user. */
12760 if (tp->loc == NULL && tp->extra_string != NULL)
12761 fprintf_unfiltered (fp, " %s", tp->extra_string);
12762
dd11a36c 12763 print_recreate_thread (tp, fp);
06edf0c0
PA
12764}
12765
983af33b 12766static void
626d2320 12767bkpt_create_sals_from_location (struct event_location *location,
f00aae0f
KS
12768 struct linespec_result *canonical,
12769 enum bptype type_wanted)
983af33b 12770{
f00aae0f 12771 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
12772}
12773
12774static void
12775bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12776 struct linespec_result *canonical,
e1e01040
PA
12777 gdb::unique_xmalloc_ptr<char> cond_string,
12778 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12779 enum bptype type_wanted,
12780 enum bpdisp disposition,
12781 int thread,
12782 int task, int ignore_count,
12783 const struct breakpoint_ops *ops,
12784 int from_tty, int enabled,
44f238bb 12785 int internal, unsigned flags)
983af33b 12786{
023fa29b 12787 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
12788 std::move (cond_string),
12789 std::move (extra_string),
e7e0cddf 12790 type_wanted,
983af33b
SDJ
12791 disposition, thread, task,
12792 ignore_count, ops, from_tty,
44f238bb 12793 enabled, internal, flags);
983af33b
SDJ
12794}
12795
6c5b2ebe 12796static std::vector<symtab_and_line>
f00aae0f 12797bkpt_decode_location (struct breakpoint *b,
626d2320 12798 struct event_location *location,
6c5b2ebe 12799 struct program_space *search_pspace)
983af33b 12800{
6c5b2ebe 12801 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12802}
12803
06edf0c0
PA
12804/* Virtual table for internal breakpoints. */
12805
12806static void
12807internal_bkpt_re_set (struct breakpoint *b)
12808{
12809 switch (b->type)
12810 {
12811 /* Delete overlay event and longjmp master breakpoints; they
12812 will be reset later by breakpoint_re_set. */
12813 case bp_overlay_event:
12814 case bp_longjmp_master:
12815 case bp_std_terminate_master:
12816 case bp_exception_master:
12817 delete_breakpoint (b);
12818 break;
12819
12820 /* This breakpoint is special, it's set up when the inferior
dda83cd7 12821 starts and we really don't want to touch it. */
06edf0c0
PA
12822 case bp_shlib_event:
12823
12824 /* Like bp_shlib_event, this breakpoint type is special. Once
12825 it is set up, we do not want to touch it. */
12826 case bp_thread_event:
12827 break;
12828 }
12829}
12830
12831static void
12832internal_bkpt_check_status (bpstat bs)
12833{
a9b3a50f
PA
12834 if (bs->breakpoint_at->type == bp_shlib_event)
12835 {
12836 /* If requested, stop when the dynamic linker notifies GDB of
12837 events. This allows the user to get control and place
12838 breakpoints in initializer routines for dynamically loaded
12839 objects (among other things). */
12840 bs->stop = stop_on_solib_events;
12841 bs->print = stop_on_solib_events;
12842 }
12843 else
12844 bs->stop = 0;
06edf0c0
PA
12845}
12846
12847static enum print_stop_action
12848internal_bkpt_print_it (bpstat bs)
12849{
06edf0c0 12850 struct breakpoint *b;
06edf0c0 12851
06edf0c0
PA
12852 b = bs->breakpoint_at;
12853
06edf0c0
PA
12854 switch (b->type)
12855 {
348d480f
PA
12856 case bp_shlib_event:
12857 /* Did we stop because the user set the stop_on_solib_events
12858 variable? (If so, we report this as a generic, "Stopped due
12859 to shlib event" message.) */
edcc5120 12860 print_solib_event (0);
348d480f
PA
12861 break;
12862
12863 case bp_thread_event:
12864 /* Not sure how we will get here.
12865 GDB should not stop for these breakpoints. */
12866 printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12867 break;
12868
12869 case bp_overlay_event:
12870 /* By analogy with the thread event, GDB should not stop for these. */
12871 printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
12872 break;
12873
12874 case bp_longjmp_master:
12875 /* These should never be enabled. */
12876 printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12877 break;
12878
12879 case bp_std_terminate_master:
12880 /* These should never be enabled. */
12881 printf_filtered (_("std::terminate Master Breakpoint: "
12882 "gdb should not stop!\n"));
348d480f
PA
12883 break;
12884
12885 case bp_exception_master:
12886 /* These should never be enabled. */
12887 printf_filtered (_("Exception Master Breakpoint: "
12888 "gdb should not stop!\n"));
06edf0c0
PA
12889 break;
12890 }
12891
001c8c33 12892 return PRINT_NOTHING;
06edf0c0
PA
12893}
12894
12895static void
12896internal_bkpt_print_mention (struct breakpoint *b)
12897{
12898 /* Nothing to mention. These breakpoints are internal. */
12899}
12900
06edf0c0
PA
12901/* Virtual table for momentary breakpoints */
12902
12903static void
12904momentary_bkpt_re_set (struct breakpoint *b)
12905{
12906 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12907 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12908 Otherwise these should have been blown away via the cleanup chain
12909 or by breakpoint_init_inferior when we rerun the executable. */
12910}
12911
12912static void
12913momentary_bkpt_check_status (bpstat bs)
12914{
12915 /* Nothing. The point of these breakpoints is causing a stop. */
12916}
12917
12918static enum print_stop_action
12919momentary_bkpt_print_it (bpstat bs)
12920{
001c8c33 12921 return PRINT_UNKNOWN;
348d480f
PA
12922}
12923
06edf0c0
PA
12924static void
12925momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12926{
06edf0c0 12927 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12928}
12929
e2e4d78b
JK
12930/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12931
12932 It gets cleared already on the removal of the first one of such placed
12933 breakpoints. This is OK as they get all removed altogether. */
12934
c1fc2657 12935longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12936{
c1fc2657 12937 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12938
c1fc2657 12939 if (tp != NULL)
e2e4d78b 12940 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12941}
12942
55aa24fb
SDJ
12943/* Specific methods for probe breakpoints. */
12944
12945static int
12946bkpt_probe_insert_location (struct bp_location *bl)
12947{
12948 int v = bkpt_insert_location (bl);
12949
12950 if (v == 0)
12951 {
12952 /* The insertion was successful, now let's set the probe's semaphore
12953 if needed. */
935676c9 12954 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12955 }
12956
12957 return v;
12958}
12959
12960static int
73971819
PA
12961bkpt_probe_remove_location (struct bp_location *bl,
12962 enum remove_bp_reason reason)
55aa24fb
SDJ
12963{
12964 /* Let's clear the semaphore before removing the location. */
935676c9 12965 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12966
73971819 12967 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12968}
12969
12970static void
626d2320 12971bkpt_probe_create_sals_from_location (struct event_location *location,
5f700d83 12972 struct linespec_result *canonical,
f00aae0f 12973 enum bptype type_wanted)
55aa24fb
SDJ
12974{
12975 struct linespec_sals lsal;
12976
c2f4122d 12977 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12978 lsal.canonical
12979 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12980 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12981}
12982
6c5b2ebe 12983static std::vector<symtab_and_line>
f00aae0f 12984bkpt_probe_decode_location (struct breakpoint *b,
626d2320 12985 struct event_location *location,
6c5b2ebe 12986 struct program_space *search_pspace)
55aa24fb 12987{
6c5b2ebe
PA
12988 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12989 if (sals.empty ())
55aa24fb 12990 error (_("probe not found"));
6c5b2ebe 12991 return sals;
55aa24fb
SDJ
12992}
12993
348d480f 12994/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12995
348d480f
PA
12996static void
12997tracepoint_re_set (struct breakpoint *b)
12998{
12999 breakpoint_re_set_default (b);
13000}
876fa593 13001
348d480f
PA
13002static int
13003tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 13004 const address_space *aspace, CORE_ADDR bp_addr,
09ac7c10 13005 const struct target_waitstatus *ws)
348d480f
PA
13006{
13007 /* By definition, the inferior does not report stops at
13008 tracepoints. */
13009 return 0;
74960c60
VP
13010}
13011
13012static void
348d480f
PA
13013tracepoint_print_one_detail (const struct breakpoint *self,
13014 struct ui_out *uiout)
74960c60 13015{
d9b3f62e 13016 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 13017 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
13018 {
13019 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 13020
6a831f06
PA
13021 uiout->message ("\tmarker id is %pF\n",
13022 string_field ("static-tracepoint-marker-string-id",
13023 tp->static_trace_marker_id.c_str ()));
348d480f 13024 }
0d381245
VP
13025}
13026
a474d7c2 13027static void
348d480f 13028tracepoint_print_mention (struct breakpoint *b)
a474d7c2 13029{
112e8700 13030 if (current_uiout->is_mi_like_p ())
348d480f 13031 return;
cc59ec59 13032
348d480f
PA
13033 switch (b->type)
13034 {
13035 case bp_tracepoint:
13036 printf_filtered (_("Tracepoint"));
13037 printf_filtered (_(" %d"), b->number);
13038 break;
13039 case bp_fast_tracepoint:
13040 printf_filtered (_("Fast tracepoint"));
13041 printf_filtered (_(" %d"), b->number);
13042 break;
13043 case bp_static_tracepoint:
13044 printf_filtered (_("Static tracepoint"));
13045 printf_filtered (_(" %d"), b->number);
13046 break;
13047 default:
13048 internal_error (__FILE__, __LINE__,
13049 _("unhandled tracepoint type %d"), (int) b->type);
13050 }
13051
13052 say_where (b);
a474d7c2
PA
13053}
13054
348d480f 13055static void
d9b3f62e 13056tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 13057{
d9b3f62e
PA
13058 struct tracepoint *tp = (struct tracepoint *) self;
13059
13060 if (self->type == bp_fast_tracepoint)
348d480f 13061 fprintf_unfiltered (fp, "ftrace");
c93e8391 13062 else if (self->type == bp_static_tracepoint)
348d480f 13063 fprintf_unfiltered (fp, "strace");
d9b3f62e 13064 else if (self->type == bp_tracepoint)
348d480f
PA
13065 fprintf_unfiltered (fp, "trace");
13066 else
13067 internal_error (__FILE__, __LINE__,
d9b3f62e 13068 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 13069
f00aae0f 13070 fprintf_unfiltered (fp, " %s",
d28cd78a 13071 event_location_to_string (self->location.get ()));
d9b3f62e
PA
13072 print_recreate_thread (self, fp);
13073
13074 if (tp->pass_count)
13075 fprintf_unfiltered (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
13076}
13077
983af33b 13078static void
626d2320 13079tracepoint_create_sals_from_location (struct event_location *location,
f00aae0f
KS
13080 struct linespec_result *canonical,
13081 enum bptype type_wanted)
983af33b 13082{
f00aae0f 13083 create_sals_from_location_default (location, canonical, type_wanted);
983af33b
SDJ
13084}
13085
13086static void
13087tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13088 struct linespec_result *canonical,
e1e01040
PA
13089 gdb::unique_xmalloc_ptr<char> cond_string,
13090 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13091 enum bptype type_wanted,
13092 enum bpdisp disposition,
13093 int thread,
13094 int task, int ignore_count,
13095 const struct breakpoint_ops *ops,
13096 int from_tty, int enabled,
44f238bb 13097 int internal, unsigned flags)
983af33b 13098{
023fa29b 13099 create_breakpoints_sal_default (gdbarch, canonical,
e1e01040
PA
13100 std::move (cond_string),
13101 std::move (extra_string),
e7e0cddf 13102 type_wanted,
983af33b
SDJ
13103 disposition, thread, task,
13104 ignore_count, ops, from_tty,
44f238bb 13105 enabled, internal, flags);
983af33b
SDJ
13106}
13107
6c5b2ebe 13108static std::vector<symtab_and_line>
f00aae0f 13109tracepoint_decode_location (struct breakpoint *b,
626d2320 13110 struct event_location *location,
6c5b2ebe 13111 struct program_space *search_pspace)
983af33b 13112{
6c5b2ebe 13113 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
13114}
13115
2060206e 13116struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 13117
bac7c5cf 13118/* Virtual table for tracepoints on static probes. */
55aa24fb
SDJ
13119
13120static void
f00aae0f 13121tracepoint_probe_create_sals_from_location
626d2320 13122 (struct event_location *location,
f00aae0f
KS
13123 struct linespec_result *canonical,
13124 enum bptype type_wanted)
55aa24fb
SDJ
13125{
13126 /* We use the same method for breakpoint on probes. */
f00aae0f 13127 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
13128}
13129
6c5b2ebe 13130static std::vector<symtab_and_line>
f00aae0f 13131tracepoint_probe_decode_location (struct breakpoint *b,
626d2320 13132 struct event_location *location,
6c5b2ebe 13133 struct program_space *search_pspace)
55aa24fb
SDJ
13134{
13135 /* We use the same method for breakpoint on probes. */
6c5b2ebe 13136 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
13137}
13138
5c2b4418
HZ
13139/* Dprintf breakpoint_ops methods. */
13140
13141static void
13142dprintf_re_set (struct breakpoint *b)
13143{
13144 breakpoint_re_set_default (b);
13145
f00aae0f
KS
13146 /* extra_string should never be non-NULL for dprintf. */
13147 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
13148
13149 /* 1 - connect to target 1, that can run breakpoint commands.
13150 2 - create a dprintf, which resolves fine.
13151 3 - disconnect from target 1
13152 4 - connect to target 2, that can NOT run breakpoint commands.
13153
13154 After steps #3/#4, you'll want the dprintf command list to
13155 be updated, because target 1 and 2 may well return different
13156 answers for target_can_run_breakpoint_commands().
13157 Given absence of finer grained resetting, we get to do
13158 it all the time. */
13159 if (b->extra_string != NULL)
13160 update_dprintf_command_list (b);
13161}
13162
2d9442cc
HZ
13163/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
13164
13165static void
13166dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13167{
f00aae0f 13168 fprintf_unfiltered (fp, "dprintf %s,%s",
d28cd78a 13169 event_location_to_string (tp->location.get ()),
2d9442cc
HZ
13170 tp->extra_string);
13171 print_recreate_thread (tp, fp);
13172}
13173
9d6e6e84
HZ
13174/* Implement the "after_condition_true" breakpoint_ops method for
13175 dprintf.
13176
13177 dprintf's are implemented with regular commands in their command
13178 list, but we run the commands here instead of before presenting the
13179 stop to the user, as dprintf's don't actually cause a stop. This
13180 also makes it so that the commands of multiple dprintfs at the same
13181 address are all handled. */
13182
13183static void
13184dprintf_after_condition_true (struct bpstats *bs)
13185{
04afa70c 13186 struct bpstats tmp_bs;
9d6e6e84
HZ
13187 struct bpstats *tmp_bs_p = &tmp_bs;
13188
13189 /* dprintf's never cause a stop. This wasn't set in the
13190 check_status hook instead because that would make the dprintf's
13191 condition not be evaluated. */
13192 bs->stop = 0;
13193
13194 /* Run the command list here. Take ownership of it instead of
13195 copying. We never want these commands to run later in
13196 bpstat_do_actions, if a breakpoint that causes a stop happens to
13197 be set at same address as this dprintf, or even if running the
13198 commands here throws. */
13199 tmp_bs.commands = bs->commands;
13200 bs->commands = NULL;
9d6e6e84
HZ
13201
13202 bpstat_do_actions_1 (&tmp_bs_p);
13203
13204 /* 'tmp_bs.commands' will usually be NULL by now, but
13205 bpstat_do_actions_1 may return early without processing the whole
13206 list. */
9d6e6e84
HZ
13207}
13208
983af33b
SDJ
13209/* The breakpoint_ops structure to be used on static tracepoints with
13210 markers (`-m'). */
13211
13212static void
626d2320 13213strace_marker_create_sals_from_location (struct event_location *location,
5f700d83 13214 struct linespec_result *canonical,
f00aae0f 13215 enum bptype type_wanted)
983af33b
SDJ
13216{
13217 struct linespec_sals lsal;
f00aae0f 13218 const char *arg_start, *arg;
983af33b 13219
a20714ff 13220 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 13221 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 13222
f2fc3015
TT
13223 std::string str (arg_start, arg - arg_start);
13224 const char *ptr = str.c_str ();
a20714ff
PA
13225 canonical->location
13226 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 13227
8e9e35b1
TT
13228 lsal.canonical
13229 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 13230 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
13231}
13232
13233static void
13234strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13235 struct linespec_result *canonical,
e1e01040
PA
13236 gdb::unique_xmalloc_ptr<char> cond_string,
13237 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13238 enum bptype type_wanted,
13239 enum bpdisp disposition,
13240 int thread,
13241 int task, int ignore_count,
13242 const struct breakpoint_ops *ops,
13243 int from_tty, int enabled,
44f238bb 13244 int internal, unsigned flags)
983af33b 13245{
6c5b2ebe 13246 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
13247
13248 /* If the user is creating a static tracepoint by marker id
13249 (strace -m MARKER_ID), then store the sals index, so that
13250 breakpoint_re_set can try to match up which of the newly
13251 found markers corresponds to this one, and, don't try to
13252 expand multiple locations for each sal, given than SALS
13253 already should contain all sals for MARKER_ID. */
13254
6c5b2ebe 13255 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 13256 {
6c5b2ebe
PA
13257 event_location_up location
13258 = copy_event_location (canonical->location.get ());
983af33b 13259
b270e6f9 13260 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 13261 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 13262 std::move (location), NULL,
e1e01040
PA
13263 std::move (cond_string),
13264 std::move (extra_string),
e7e0cddf 13265 type_wanted, disposition,
983af33b 13266 thread, task, ignore_count, ops,
44f238bb 13267 from_tty, enabled, internal, flags,
983af33b
SDJ
13268 canonical->special_display);
13269 /* Given that its possible to have multiple markers with
13270 the same string id, if the user is creating a static
13271 tracepoint by marker id ("strace -m MARKER_ID"), then
13272 store the sals index, so that breakpoint_re_set can
13273 try to match up which of the newly found markers
13274 corresponds to this one */
13275 tp->static_trace_marker_id_idx = i;
13276
b270e6f9 13277 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
13278 }
13279}
13280
6c5b2ebe 13281static std::vector<symtab_and_line>
f00aae0f 13282strace_marker_decode_location (struct breakpoint *b,
626d2320 13283 struct event_location *location,
6c5b2ebe 13284 struct program_space *search_pspace)
983af33b
SDJ
13285{
13286 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 13287 const char *s = get_linespec_location (location)->spec_string;
983af33b 13288
6c5b2ebe
PA
13289 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13290 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 13291 {
6c5b2ebe
PA
13292 sals[0] = sals[tp->static_trace_marker_id_idx];
13293 sals.resize (1);
13294 return sals;
983af33b
SDJ
13295 }
13296 else
5d9310c4 13297 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
13298}
13299
13300static struct breakpoint_ops strace_marker_breakpoint_ops;
13301
13302static int
13303strace_marker_p (struct breakpoint *b)
13304{
13305 return b->ops == &strace_marker_breakpoint_ops;
13306}
13307
53a5351d 13308/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 13309 structures. */
c906108c
SS
13310
13311void
fba45db2 13312delete_breakpoint (struct breakpoint *bpt)
c906108c 13313{
52f0bd74 13314 struct breakpoint *b;
c906108c 13315
8a3fe4f8 13316 gdb_assert (bpt != NULL);
c906108c 13317
4a64f543
MS
13318 /* Has this bp already been deleted? This can happen because
13319 multiple lists can hold pointers to bp's. bpstat lists are
13320 especial culprits.
13321
13322 One example of this happening is a watchpoint's scope bp. When
13323 the scope bp triggers, we notice that the watchpoint is out of
13324 scope, and delete it. We also delete its scope bp. But the
13325 scope bp is marked "auto-deleting", and is already on a bpstat.
13326 That bpstat is then checked for auto-deleting bp's, which are
13327 deleted.
13328
13329 A real solution to this problem might involve reference counts in
13330 bp's, and/or giving them pointers back to their referencing
13331 bpstat's, and teaching delete_breakpoint to only free a bp's
13332 storage when no more references were extent. A cheaper bandaid
13333 was chosen. */
c906108c
SS
13334 if (bpt->type == bp_none)
13335 return;
13336
4a64f543
MS
13337 /* At least avoid this stale reference until the reference counting
13338 of breakpoints gets resolved. */
d0fb5eae 13339 if (bpt->related_breakpoint != bpt)
e5a0a904 13340 {
d0fb5eae 13341 struct breakpoint *related;
3a5c3e22 13342 struct watchpoint *w;
d0fb5eae
JK
13343
13344 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 13345 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 13346 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
13347 w = (struct watchpoint *) bpt;
13348 else
13349 w = NULL;
13350 if (w != NULL)
13351 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
13352
13353 /* Unlink bpt from the bpt->related_breakpoint ring. */
13354 for (related = bpt; related->related_breakpoint != bpt;
13355 related = related->related_breakpoint);
13356 related->related_breakpoint = bpt->related_breakpoint;
13357 bpt->related_breakpoint = bpt;
e5a0a904
JK
13358 }
13359
a9634178
TJB
13360 /* watch_command_1 creates a watchpoint but only sets its number if
13361 update_watchpoint succeeds in creating its bp_locations. If there's
13362 a problem in that process, we'll be asked to delete the half-created
13363 watchpoint. In that case, don't announce the deletion. */
13364 if (bpt->number)
76727919 13365 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 13366
c906108c
SS
13367 if (breakpoint_chain == bpt)
13368 breakpoint_chain = bpt->next;
13369
c906108c
SS
13370 ALL_BREAKPOINTS (b)
13371 if (b->next == bpt)
c5aa993b
JM
13372 {
13373 b->next = bpt->next;
13374 break;
13375 }
c906108c 13376
f431efe5
PA
13377 /* Be sure no bpstat's are pointing at the breakpoint after it's
13378 been freed. */
13379 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 13380 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
13381 pointing at bpt from the stop_bpstat list entirely, as breakpoint
13382 commands are associated with the bpstat; if we remove it here,
13383 then the later call to bpstat_do_actions (&stop_bpstat); in
13384 event-top.c won't do anything, and temporary breakpoints with
13385 commands won't work. */
13386
13387 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13388
4a64f543
MS
13389 /* Now that breakpoint is removed from breakpoint list, update the
13390 global location list. This will remove locations that used to
13391 belong to this breakpoint. Do this before freeing the breakpoint
13392 itself, since remove_breakpoint looks at location's owner. It
13393 might be better design to have location completely
13394 self-contained, but it's not the case now. */
44702360 13395 update_global_location_list (UGLL_DONT_INSERT);
74960c60 13396
4a64f543
MS
13397 /* On the chance that someone will soon try again to delete this
13398 same bp, we mark it as deleted before freeing its storage. */
c906108c 13399 bpt->type = bp_none;
4d01a485 13400 delete bpt;
c906108c
SS
13401}
13402
51be5b68
PA
13403/* Iterator function to call a user-provided callback function once
13404 for each of B and its related breakpoints. */
13405
13406static void
13407iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 13408 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
13409{
13410 struct breakpoint *related;
13411
13412 related = b;
13413 do
13414 {
13415 struct breakpoint *next;
13416
13417 /* FUNCTION may delete RELATED. */
13418 next = related->related_breakpoint;
13419
13420 if (next == related)
13421 {
13422 /* RELATED is the last ring entry. */
48649e1b 13423 function (related);
51be5b68
PA
13424
13425 /* FUNCTION may have deleted it, so we'd never reach back to
13426 B. There's nothing left to do anyway, so just break
13427 out. */
13428 break;
13429 }
13430 else
48649e1b 13431 function (related);
51be5b68
PA
13432
13433 related = next;
13434 }
13435 while (related != b);
13436}
95a42b64 13437
4495129a 13438static void
981a3fb3 13439delete_command (const char *arg, int from_tty)
c906108c 13440{
35df4500 13441 struct breakpoint *b, *b_tmp;
c906108c 13442
ea9365bb
TT
13443 dont_repeat ();
13444
c906108c
SS
13445 if (arg == 0)
13446 {
13447 int breaks_to_delete = 0;
13448
46c6471b 13449 /* Delete all breakpoints if no argument. Do not delete
dda83cd7
SM
13450 internal breakpoints, these have to be deleted with an
13451 explicit breakpoint number argument. */
c5aa993b 13452 ALL_BREAKPOINTS (b)
46c6471b 13453 if (user_breakpoint_p (b))
973d738b
DJ
13454 {
13455 breaks_to_delete = 1;
13456 break;
13457 }
c906108c
SS
13458
13459 /* Ask user only if there are some breakpoints to delete. */
13460 if (!from_tty
e2e0b3e5 13461 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
c906108c 13462 {
35df4500 13463 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 13464 if (user_breakpoint_p (b))
c5aa993b 13465 delete_breakpoint (b);
c906108c
SS
13466 }
13467 }
13468 else
48649e1b 13469 map_breakpoint_numbers
b926417a 13470 (arg, [&] (breakpoint *br)
48649e1b 13471 {
b926417a 13472 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 13473 });
c906108c
SS
13474}
13475
c2f4122d
PA
13476/* Return true if all locations of B bound to PSPACE are pending. If
13477 PSPACE is NULL, all locations of all program spaces are
13478 considered. */
13479
0d381245 13480static int
c2f4122d 13481all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 13482{
c2f4122d
PA
13483 struct bp_location *loc;
13484
13485 for (loc = b->loc; loc != NULL; loc = loc->next)
13486 if ((pspace == NULL
13487 || loc->pspace == pspace)
13488 && !loc->shlib_disabled
8645ff69 13489 && !loc->pspace->executing_startup)
0d381245
VP
13490 return 0;
13491 return 1;
fe3f5fa8
VP
13492}
13493
776592bf
DE
13494/* Subroutine of update_breakpoint_locations to simplify it.
13495 Return non-zero if multiple fns in list LOC have the same name.
13496 Null names are ignored. */
13497
13498static int
13499ambiguous_names_p (struct bp_location *loc)
13500{
13501 struct bp_location *l;
c1fb9836
TT
13502 htab_up htab (htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13503 xcalloc, xfree));
776592bf
DE
13504
13505 for (l = loc; l != NULL; l = l->next)
13506 {
13507 const char **slot;
13508 const char *name = l->function_name;
13509
13510 /* Allow for some names to be NULL, ignore them. */
13511 if (name == NULL)
13512 continue;
13513
c1fb9836 13514 slot = (const char **) htab_find_slot (htab.get (), (const void *) name,
776592bf 13515 INSERT);
4a64f543
MS
13516 /* NOTE: We can assume slot != NULL here because xcalloc never
13517 returns NULL. */
776592bf 13518 if (*slot != NULL)
c1fb9836 13519 return 1;
776592bf
DE
13520 *slot = name;
13521 }
13522
776592bf
DE
13523 return 0;
13524}
13525
0fb4aa4b
PA
13526/* When symbols change, it probably means the sources changed as well,
13527 and it might mean the static tracepoint markers are no longer at
13528 the same address or line numbers they used to be at last we
13529 checked. Losing your static tracepoints whenever you rebuild is
13530 undesirable. This function tries to resync/rematch gdb static
13531 tracepoints with the markers on the target, for static tracepoints
13532 that have not been set by marker id. Static tracepoint that have
13533 been set by marker id are reset by marker id in breakpoint_re_set.
13534 The heuristic is:
13535
13536 1) For a tracepoint set at a specific address, look for a marker at
13537 the old PC. If one is found there, assume to be the same marker.
13538 If the name / string id of the marker found is different from the
13539 previous known name, assume that means the user renamed the marker
13540 in the sources, and output a warning.
13541
13542 2) For a tracepoint set at a given line number, look for a marker
13543 at the new address of the old line number. If one is found there,
13544 assume to be the same marker. If the name / string id of the
13545 marker found is different from the previous known name, assume that
13546 means the user renamed the marker in the sources, and output a
13547 warning.
13548
13549 3) If a marker is no longer found at the same address or line, it
13550 may mean the marker no longer exists. But it may also just mean
13551 the code changed a bit. Maybe the user added a few lines of code
13552 that made the marker move up or down (in line number terms). Ask
13553 the target for info about the marker with the string id as we knew
13554 it. If found, update line number and address in the matching
13555 static tracepoint. This will get confused if there's more than one
13556 marker with the same ID (possible in UST, although unadvised
13557 precisely because it confuses tools). */
13558
13559static struct symtab_and_line
13560update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13561{
d9b3f62e 13562 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
13563 struct static_tracepoint_marker marker;
13564 CORE_ADDR pc;
0fb4aa4b
PA
13565
13566 pc = sal.pc;
13567 if (sal.line)
13568 find_line_pc (sal.symtab, sal.line, &pc);
13569
13570 if (target_static_tracepoint_marker_at (pc, &marker))
13571 {
5d9310c4 13572 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 13573 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
13574 b->number, tp->static_trace_marker_id.c_str (),
13575 marker.str_id.c_str ());
0fb4aa4b 13576
5d9310c4 13577 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
13578
13579 return sal;
13580 }
13581
13582 /* Old marker wasn't found on target at lineno. Try looking it up
13583 by string ID. */
13584 if (!sal.explicit_pc
13585 && sal.line != 0
13586 && sal.symtab != NULL
5d9310c4 13587 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 13588 {
5d9310c4
SM
13589 std::vector<static_tracepoint_marker> markers
13590 = target_static_tracepoint_markers_by_strid
13591 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 13592
5d9310c4 13593 if (!markers.empty ())
0fb4aa4b 13594 {
0fb4aa4b 13595 struct symbol *sym;
80e1d417 13596 struct static_tracepoint_marker *tpmarker;
79a45e25 13597 struct ui_out *uiout = current_uiout;
67994074 13598 struct explicit_location explicit_loc;
0fb4aa4b 13599
5d9310c4 13600 tpmarker = &markers[0];
0fb4aa4b 13601
5d9310c4 13602 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
13603
13604 warning (_("marker for static tracepoint %d (%s) not "
13605 "found at previous line number"),
5d9310c4 13606 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 13607
51abb421 13608 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 13609 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 13610 uiout->text ("Now in ");
0fb4aa4b
PA
13611 if (sym)
13612 {
987012b8 13613 uiout->field_string ("func", sym->print_name (),
e43b10e1 13614 function_name_style.style ());
112e8700 13615 uiout->text (" at ");
0fb4aa4b 13616 }
112e8700 13617 uiout->field_string ("file",
cbe56571 13618 symtab_to_filename_for_display (sal2.symtab),
e43b10e1 13619 file_name_style.style ());
112e8700 13620 uiout->text (":");
0fb4aa4b 13621
112e8700 13622 if (uiout->is_mi_like_p ())
0fb4aa4b 13623 {
0b0865da 13624 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 13625
112e8700 13626 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
13627 }
13628
381befee 13629 uiout->field_signed ("line", sal2.line);
112e8700 13630 uiout->text ("\n");
0fb4aa4b 13631
80e1d417 13632 b->loc->line_number = sal2.line;
2f202fde 13633 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 13634
d28cd78a 13635 b->location.reset (NULL);
67994074
KS
13636 initialize_explicit_location (&explicit_loc);
13637 explicit_loc.source_filename
00e52e53 13638 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
13639 explicit_loc.line_offset.offset = b->loc->line_number;
13640 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 13641 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
13642
13643 /* Might be nice to check if function changed, and warn if
13644 so. */
0fb4aa4b
PA
13645 }
13646 }
13647 return sal;
13648}
13649
8d3788bd
VP
13650/* Returns 1 iff locations A and B are sufficiently same that
13651 we don't need to report breakpoint as changed. */
13652
13653static int
13654locations_are_equal (struct bp_location *a, struct bp_location *b)
13655{
13656 while (a && b)
13657 {
13658 if (a->address != b->address)
13659 return 0;
13660
13661 if (a->shlib_disabled != b->shlib_disabled)
13662 return 0;
13663
13664 if (a->enabled != b->enabled)
13665 return 0;
13666
b5fa468f
TBA
13667 if (a->disabled_by_cond != b->disabled_by_cond)
13668 return 0;
13669
8d3788bd
VP
13670 a = a->next;
13671 b = b->next;
13672 }
13673
13674 if ((a == NULL) != (b == NULL))
13675 return 0;
13676
13677 return 1;
13678}
13679
c2f4122d
PA
13680/* Split all locations of B that are bound to PSPACE out of B's
13681 location list to a separate list and return that list's head. If
13682 PSPACE is NULL, hoist out all locations of B. */
13683
13684static struct bp_location *
13685hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13686{
13687 struct bp_location head;
13688 struct bp_location *i = b->loc;
13689 struct bp_location **i_link = &b->loc;
13690 struct bp_location *hoisted = &head;
13691
13692 if (pspace == NULL)
13693 {
13694 i = b->loc;
13695 b->loc = NULL;
13696 return i;
13697 }
13698
13699 head.next = NULL;
13700
13701 while (i != NULL)
13702 {
13703 if (i->pspace == pspace)
13704 {
13705 *i_link = i->next;
13706 i->next = NULL;
13707 hoisted->next = i;
13708 hoisted = i;
13709 }
13710 else
13711 i_link = &i->next;
13712 i = *i_link;
13713 }
13714
13715 return head.next;
13716}
13717
13718/* Create new breakpoint locations for B (a hardware or software
13719 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
13720 zero, then B is a ranged breakpoint. Only recreates locations for
13721 FILTER_PSPACE. Locations of other program spaces are left
13722 untouched. */
f1310107 13723
0e30163f 13724void
0d381245 13725update_breakpoint_locations (struct breakpoint *b,
c2f4122d 13726 struct program_space *filter_pspace,
6c5b2ebe
PA
13727 gdb::array_view<const symtab_and_line> sals,
13728 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 13729{
c2f4122d 13730 struct bp_location *existing_locations;
0d381245 13731
6c5b2ebe 13732 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
13733 {
13734 /* Ranged breakpoints have only one start location and one end
13735 location. */
13736 b->enable_state = bp_disabled;
f8eba3c6
TT
13737 printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13738 "multiple locations found\n"),
13739 b->number);
13740 return;
13741 }
f1310107 13742
4a64f543
MS
13743 /* If there's no new locations, and all existing locations are
13744 pending, don't do anything. This optimizes the common case where
13745 all locations are in the same shared library, that was unloaded.
13746 We'd like to retain the location, so that when the library is
13747 loaded again, we don't loose the enabled/disabled status of the
13748 individual locations. */
6c5b2ebe 13749 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
13750 return;
13751
c2f4122d 13752 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 13753
6c5b2ebe 13754 for (const auto &sal : sals)
fe3f5fa8 13755 {
f8eba3c6
TT
13756 struct bp_location *new_loc;
13757
6c5b2ebe 13758 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 13759
6c5b2ebe 13760 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 13761
0d381245
VP
13762 /* Reparse conditions, they might contain references to the
13763 old symtab. */
13764 if (b->cond_string != NULL)
13765 {
bbc13ae3 13766 const char *s;
fe3f5fa8 13767
0d381245 13768 s = b->cond_string;
a70b8144 13769 try
0d381245 13770 {
6c5b2ebe
PA
13771 new_loc->cond = parse_exp_1 (&s, sal.pc,
13772 block_for_pc (sal.pc),
0d381245
VP
13773 0);
13774 }
230d2906 13775 catch (const gdb_exception_error &e)
0d381245 13776 {
b5fa468f 13777 new_loc->disabled_by_cond = true;
0d381245
VP
13778 }
13779 }
fe3f5fa8 13780
6c5b2ebe 13781 if (!sals_end.empty ())
f1310107 13782 {
6c5b2ebe 13783 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 13784
6c5b2ebe 13785 new_loc->length = end - sals[0].pc + 1;
f1310107 13786 }
0d381245 13787 }
fe3f5fa8 13788
4a64f543
MS
13789 /* If possible, carry over 'disable' status from existing
13790 breakpoints. */
0d381245
VP
13791 {
13792 struct bp_location *e = existing_locations;
776592bf
DE
13793 /* If there are multiple breakpoints with the same function name,
13794 e.g. for inline functions, comparing function names won't work.
13795 Instead compare pc addresses; this is just a heuristic as things
13796 may have moved, but in practice it gives the correct answer
13797 often enough until a better solution is found. */
13798 int have_ambiguous_names = ambiguous_names_p (b->loc);
13799
0d381245
VP
13800 for (; e; e = e->next)
13801 {
b5fa468f 13802 if ((!e->enabled || e->disabled_by_cond) && e->function_name)
0d381245
VP
13803 {
13804 struct bp_location *l = b->loc;
776592bf
DE
13805 if (have_ambiguous_names)
13806 {
13807 for (; l; l = l->next)
7f32a4d5
PA
13808 {
13809 /* Ignore software vs hardware location type at
13810 this point, because with "set breakpoint
13811 auto-hw", after a re-set, locations that were
13812 hardware can end up as software, or vice versa.
13813 As mentioned above, this is an heuristic and in
13814 practice should give the correct answer often
13815 enough. */
13816 if (breakpoint_locations_match (e, l, true))
13817 {
b5fa468f
TBA
13818 l->enabled = e->enabled;
13819 l->disabled_by_cond = e->disabled_by_cond;
7f32a4d5
PA
13820 break;
13821 }
13822 }
776592bf
DE
13823 }
13824 else
13825 {
13826 for (; l; l = l->next)
13827 if (l->function_name
13828 && strcmp (e->function_name, l->function_name) == 0)
13829 {
b5fa468f
TBA
13830 l->enabled = e->enabled;
13831 l->disabled_by_cond = e->disabled_by_cond;
776592bf
DE
13832 break;
13833 }
13834 }
0d381245
VP
13835 }
13836 }
13837 }
fe3f5fa8 13838
8d3788bd 13839 if (!locations_are_equal (existing_locations, b->loc))
76727919 13840 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
13841}
13842
f00aae0f 13843/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
13844 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
13845
6c5b2ebe 13846static std::vector<symtab_and_line>
f00aae0f 13847location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 13848 struct program_space *search_pspace, int *found)
ef23e705 13849{
cc06b668 13850 struct gdb_exception exception;
ef23e705 13851
983af33b 13852 gdb_assert (b->ops != NULL);
ef23e705 13853
6c5b2ebe
PA
13854 std::vector<symtab_and_line> sals;
13855
a70b8144 13856 try
ef23e705 13857 {
6c5b2ebe 13858 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 13859 }
94aeb44b 13860 catch (gdb_exception_error &e)
ef23e705
TJB
13861 {
13862 int not_found_and_ok = 0;
492d29ea 13863
ef23e705
TJB
13864 /* For pending breakpoints, it's expected that parsing will
13865 fail until the right shared library is loaded. User has
13866 already told to create pending breakpoints and don't need
13867 extra messages. If breakpoint is in bp_shlib_disabled
13868 state, then user already saw the message about that
13869 breakpoint being disabled, and don't want to see more
13870 errors. */
58438ac1 13871 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
13872 && (b->condition_not_parsed
13873 || (b->loc != NULL
13874 && search_pspace != NULL
13875 && b->loc->pspace != search_pspace)
ef23e705 13876 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 13877 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
13878 || b->enable_state == bp_disabled))
13879 not_found_and_ok = 1;
13880
13881 if (!not_found_and_ok)
13882 {
13883 /* We surely don't want to warn about the same breakpoint
13884 10 times. One solution, implemented here, is disable
13885 the breakpoint on error. Another solution would be to
13886 have separate 'warning emitted' flag. Since this
13887 happens only when a binary has changed, I don't know
13888 which approach is better. */
13889 b->enable_state = bp_disabled;
eedc3f4f 13890 throw;
ef23e705 13891 }
94aeb44b
TT
13892
13893 exception = std::move (e);
ef23e705
TJB
13894 }
13895
492d29ea 13896 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 13897 {
6c5b2ebe
PA
13898 for (auto &sal : sals)
13899 resolve_sal_pc (&sal);
f00aae0f 13900 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 13901 {
ed1d1739
KS
13902 char *cond_string, *extra_string;
13903 int thread, task;
ef23e705 13904
b5fa468f
TBA
13905 find_condition_and_thread_for_sals (sals, b->extra_string,
13906 &cond_string, &thread,
13907 &task, &extra_string);
f00aae0f 13908 gdb_assert (b->cond_string == NULL);
ef23e705
TJB
13909 if (cond_string)
13910 b->cond_string = cond_string;
13911 b->thread = thread;
13912 b->task = task;
e7e0cddf 13913 if (extra_string)
f00aae0f
KS
13914 {
13915 xfree (b->extra_string);
13916 b->extra_string = extra_string;
13917 }
ef23e705
TJB
13918 b->condition_not_parsed = 0;
13919 }
13920
983af33b 13921 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 13922 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 13923
58438ac1
TT
13924 *found = 1;
13925 }
13926 else
13927 *found = 0;
ef23e705
TJB
13928
13929 return sals;
13930}
13931
348d480f
PA
13932/* The default re_set method, for typical hardware or software
13933 breakpoints. Reevaluate the breakpoint and recreate its
13934 locations. */
13935
13936static void
28010a5d 13937breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13938{
c2f4122d 13939 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13940 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13941
6c5b2ebe
PA
13942 int found;
13943 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13944 filter_pspace, &found);
ef23e705 13945 if (found)
6c5b2ebe 13946 expanded = std::move (sals);
ef23e705 13947
f00aae0f 13948 if (b->location_range_end != NULL)
f1310107 13949 {
6c5b2ebe
PA
13950 std::vector<symtab_and_line> sals_end
13951 = location_to_sals (b, b->location_range_end.get (),
13952 filter_pspace, &found);
f1310107 13953 if (found)
6c5b2ebe 13954 expanded_end = std::move (sals_end);
f1310107
TJB
13955 }
13956
c2f4122d 13957 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13958}
13959
983af33b
SDJ
13960/* Default method for creating SALs from an address string. It basically
13961 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13962
13963static void
626d2320 13964create_sals_from_location_default (struct event_location *location,
f00aae0f
KS
13965 struct linespec_result *canonical,
13966 enum bptype type_wanted)
983af33b 13967{
f00aae0f 13968 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13969}
13970
13971/* Call create_breakpoints_sal for the given arguments. This is the default
13972 function for the `create_breakpoints_sal' method of
13973 breakpoint_ops. */
13974
13975static void
13976create_breakpoints_sal_default (struct gdbarch *gdbarch,
13977 struct linespec_result *canonical,
e1e01040
PA
13978 gdb::unique_xmalloc_ptr<char> cond_string,
13979 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13980 enum bptype type_wanted,
13981 enum bpdisp disposition,
13982 int thread,
13983 int task, int ignore_count,
13984 const struct breakpoint_ops *ops,
13985 int from_tty, int enabled,
44f238bb 13986 int internal, unsigned flags)
983af33b 13987{
e1e01040
PA
13988 create_breakpoints_sal (gdbarch, canonical,
13989 std::move (cond_string),
13990 std::move (extra_string),
983af33b
SDJ
13991 type_wanted, disposition,
13992 thread, task, ignore_count, ops, from_tty,
44f238bb 13993 enabled, internal, flags);
983af33b
SDJ
13994}
13995
13996/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13997 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13998
6c5b2ebe 13999static std::vector<symtab_and_line>
f00aae0f 14000decode_location_default (struct breakpoint *b,
626d2320 14001 struct event_location *location,
6c5b2ebe 14002 struct program_space *search_pspace)
983af33b
SDJ
14003{
14004 struct linespec_result canonical;
14005
c2f4122d 14006 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
cafb3438 14007 NULL, 0, &canonical, multiple_symbols_all,
c0e8dcd8 14008 b->filter.get ());
983af33b
SDJ
14009
14010 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 14011 gdb_assert (canonical.lsals.size () < 2);
983af33b 14012
6c5b2ebe 14013 if (!canonical.lsals.empty ())
983af33b 14014 {
6c5b2ebe
PA
14015 const linespec_sals &lsal = canonical.lsals[0];
14016 return std::move (lsal.sals);
983af33b 14017 }
6c5b2ebe 14018 return {};
983af33b
SDJ
14019}
14020
bf469271 14021/* Reset a breakpoint. */
c906108c 14022
bf469271
PA
14023static void
14024breakpoint_re_set_one (breakpoint *b)
c906108c 14025{
fdf44873
TT
14026 input_radix = b->input_radix;
14027 set_language (b->language);
c906108c 14028
348d480f 14029 b->ops->re_set (b);
c906108c
SS
14030}
14031
c2f4122d
PA
14032/* Re-set breakpoint locations for the current program space.
14033 Locations bound to other program spaces are left untouched. */
14034
c906108c 14035void
69de3c6a 14036breakpoint_re_set (void)
c906108c 14037{
35df4500 14038 struct breakpoint *b, *b_tmp;
2a7f3dff 14039
c5aa993b 14040 {
fdf44873
TT
14041 scoped_restore_current_language save_language;
14042 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 14043 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 14044
8e817061
JB
14045 /* breakpoint_re_set_one sets the current_language to the language
14046 of the breakpoint it is resetting (see prepare_re_set_context)
14047 before re-evaluating the breakpoint's location. This change can
14048 unfortunately get undone by accident if the language_mode is set
14049 to auto, and we either switch frames, or more likely in this context,
14050 we select the current frame.
14051
14052 We prevent this by temporarily turning the language_mode to
14053 language_mode_manual. We restore it once all breakpoints
14054 have been reset. */
14055 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
14056 language_mode = language_mode_manual;
14057
5ed8105e
PA
14058 /* Note: we must not try to insert locations until after all
14059 breakpoints have been re-set. Otherwise, e.g., when re-setting
14060 breakpoint 1, we'd insert the locations of breakpoint 2, which
14061 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 14062
5ed8105e
PA
14063 ALL_BREAKPOINTS_SAFE (b, b_tmp)
14064 {
a70b8144 14065 try
bf469271
PA
14066 {
14067 breakpoint_re_set_one (b);
14068 }
230d2906 14069 catch (const gdb_exception &ex)
bf469271
PA
14070 {
14071 exception_fprintf (gdb_stderr, ex,
14072 "Error in re-setting breakpoint %d: ",
14073 b->number);
14074 }
5ed8105e 14075 }
5ed8105e
PA
14076
14077 jit_breakpoint_re_set ();
14078 }
6c95b8df 14079
af02033e
PP
14080 create_overlay_event_breakpoint ();
14081 create_longjmp_master_breakpoint ();
14082 create_std_terminate_master_breakpoint ();
186c406b 14083 create_exception_master_breakpoint ();
2a7f3dff
PA
14084
14085 /* Now we can insert. */
14086 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
14087}
14088\f
c906108c
SS
14089/* Reset the thread number of this breakpoint:
14090
14091 - If the breakpoint is for all threads, leave it as-is.
4a64f543 14092 - Else, reset it to the current thread for inferior_ptid. */
c906108c 14093void
fba45db2 14094breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
14095{
14096 if (b->thread != -1)
14097 {
00431a78 14098 b->thread = inferior_thread ()->global_num;
6c95b8df
PA
14099
14100 /* We're being called after following a fork. The new fork is
14101 selected as current, and unless this was a vfork will have a
14102 different program space from the original thread. Reset that
14103 as well. */
14104 b->loc->pspace = current_program_space;
c906108c
SS
14105 }
14106}
14107
03ac34d5
MS
14108/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14109 If from_tty is nonzero, it prints a message to that effect,
14110 which ends with a period (no newline). */
14111
c906108c 14112void
fba45db2 14113set_ignore_count (int bptnum, int count, int from_tty)
c906108c 14114{
52f0bd74 14115 struct breakpoint *b;
c906108c
SS
14116
14117 if (count < 0)
14118 count = 0;
14119
14120 ALL_BREAKPOINTS (b)
14121 if (b->number == bptnum)
c5aa993b 14122 {
d77f58be
SS
14123 if (is_tracepoint (b))
14124 {
14125 if (from_tty && count != 0)
14126 printf_filtered (_("Ignore count ignored for tracepoint %d."),
14127 bptnum);
14128 return;
14129 }
14130
c5aa993b 14131 b->ignore_count = count;
221ea385
KS
14132 if (from_tty)
14133 {
14134 if (count == 0)
3e43a32a
MS
14135 printf_filtered (_("Will stop next time "
14136 "breakpoint %d is reached."),
221ea385
KS
14137 bptnum);
14138 else if (count == 1)
a3f17187 14139 printf_filtered (_("Will ignore next crossing of breakpoint %d."),
221ea385
KS
14140 bptnum);
14141 else
3e43a32a
MS
14142 printf_filtered (_("Will ignore next %d "
14143 "crossings of breakpoint %d."),
221ea385
KS
14144 count, bptnum);
14145 }
76727919 14146 gdb::observers::breakpoint_modified.notify (b);
c5aa993b
JM
14147 return;
14148 }
c906108c 14149
8a3fe4f8 14150 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
14151}
14152
c906108c
SS
14153/* Command to set ignore-count of breakpoint N to COUNT. */
14154
14155static void
0b39b52e 14156ignore_command (const char *args, int from_tty)
c906108c 14157{
0b39b52e 14158 const char *p = args;
52f0bd74 14159 int num;
c906108c
SS
14160
14161 if (p == 0)
e2e0b3e5 14162 error_no_arg (_("a breakpoint number"));
c5aa993b 14163
c906108c 14164 num = get_number (&p);
5c44784c 14165 if (num == 0)
8a3fe4f8 14166 error (_("bad breakpoint number: '%s'"), args);
c906108c 14167 if (*p == 0)
8a3fe4f8 14168 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
14169
14170 set_ignore_count (num,
14171 longest_to_int (value_as_long (parse_and_eval (p))),
14172 from_tty);
221ea385
KS
14173 if (from_tty)
14174 printf_filtered ("\n");
c906108c
SS
14175}
14176\f
d0fe4701
XR
14177
14178/* Call FUNCTION on each of the breakpoints with numbers in the range
14179 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
14180
14181static void
d0fe4701
XR
14182map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14183 gdb::function_view<void (breakpoint *)> function)
c906108c 14184{
d0fe4701
XR
14185 if (bp_num_range.first == 0)
14186 {
14187 warning (_("bad breakpoint number at or near '%d'"),
14188 bp_num_range.first);
14189 }
14190 else
c906108c 14191 {
d0fe4701 14192 struct breakpoint *b, *tmp;
197f0a60 14193
d0fe4701 14194 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 14195 {
d0fe4701
XR
14196 bool match = false;
14197
5c44784c 14198 ALL_BREAKPOINTS_SAFE (b, tmp)
d0fe4701 14199 if (b->number == i)
5c44784c 14200 {
bfd28288 14201 match = true;
48649e1b 14202 function (b);
11cf8741 14203 break;
5c44784c 14204 }
bfd28288 14205 if (!match)
d0fe4701 14206 printf_unfiltered (_("No breakpoint number %d.\n"), i);
c5aa993b 14207 }
c906108c
SS
14208 }
14209}
14210
d0fe4701
XR
14211/* Call FUNCTION on each of the breakpoints whose numbers are given in
14212 ARGS. */
14213
14214static void
14215map_breakpoint_numbers (const char *args,
14216 gdb::function_view<void (breakpoint *)> function)
14217{
14218 if (args == NULL || *args == '\0')
14219 error_no_arg (_("one or more breakpoint numbers"));
14220
14221 number_or_range_parser parser (args);
14222
14223 while (!parser.finished ())
14224 {
14225 int num = parser.get_number ();
14226 map_breakpoint_number_range (std::make_pair (num, num), function);
14227 }
14228}
14229
14230/* Return the breakpoint location structure corresponding to the
14231 BP_NUM and LOC_NUM values. */
14232
0d381245 14233static struct bp_location *
d0fe4701 14234find_location_by_number (int bp_num, int loc_num)
0d381245 14235{
0d381245 14236 struct breakpoint *b;
0d381245
VP
14237
14238 ALL_BREAKPOINTS (b)
14239 if (b->number == bp_num)
14240 {
14241 break;
14242 }
14243
14244 if (!b || b->number != bp_num)
d0fe4701 14245 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 14246
0d381245 14247 if (loc_num == 0)
d0fe4701 14248 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 14249
d0fe4701
XR
14250 int n = 0;
14251 for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14252 if (++n == loc_num)
14253 return loc;
14254
14255 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
14256}
14257
95e95a6d
PA
14258/* Modes of operation for extract_bp_num. */
14259enum class extract_bp_kind
14260{
14261 /* Extracting a breakpoint number. */
14262 bp,
14263
14264 /* Extracting a location number. */
14265 loc,
14266};
14267
14268/* Extract a breakpoint or location number (as determined by KIND)
14269 from the string starting at START. TRAILER is a character which
14270 can be found after the number. If you don't want a trailer, use
14271 '\0'. If END_OUT is not NULL, it is set to point after the parsed
14272 string. This always returns a positive integer. */
14273
14274static int
14275extract_bp_num (extract_bp_kind kind, const char *start,
14276 int trailer, const char **end_out = NULL)
14277{
14278 const char *end = start;
14279 int num = get_number_trailer (&end, trailer);
14280 if (num < 0)
14281 error (kind == extract_bp_kind::bp
14282 ? _("Negative breakpoint number '%.*s'")
14283 : _("Negative breakpoint location number '%.*s'"),
14284 int (end - start), start);
14285 if (num == 0)
14286 error (kind == extract_bp_kind::bp
14287 ? _("Bad breakpoint number '%.*s'")
14288 : _("Bad breakpoint location number '%.*s'"),
14289 int (end - start), start);
14290
14291 if (end_out != NULL)
14292 *end_out = end;
14293 return num;
14294}
14295
14296/* Extract a breakpoint or location range (as determined by KIND) in
14297 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
14298 representing the (inclusive) range. The returned pair's elements
14299 are always positive integers. */
14300
14301static std::pair<int, int>
14302extract_bp_or_bp_range (extract_bp_kind kind,
14303 const std::string &arg,
14304 std::string::size_type arg_offset)
14305{
14306 std::pair<int, int> range;
14307 const char *bp_loc = &arg[arg_offset];
14308 std::string::size_type dash = arg.find ('-', arg_offset);
14309 if (dash != std::string::npos)
14310 {
14311 /* bp_loc is a range (x-z). */
14312 if (arg.length () == dash + 1)
14313 error (kind == extract_bp_kind::bp
14314 ? _("Bad breakpoint number at or near: '%s'")
14315 : _("Bad breakpoint location number at or near: '%s'"),
14316 bp_loc);
14317
14318 const char *end;
14319 const char *start_first = bp_loc;
14320 const char *start_second = &arg[dash + 1];
14321 range.first = extract_bp_num (kind, start_first, '-');
14322 range.second = extract_bp_num (kind, start_second, '\0', &end);
14323
14324 if (range.first > range.second)
14325 error (kind == extract_bp_kind::bp
14326 ? _("Inverted breakpoint range at '%.*s'")
14327 : _("Inverted breakpoint location range at '%.*s'"),
14328 int (end - start_first), start_first);
14329 }
14330 else
14331 {
14332 /* bp_loc is a single value. */
14333 range.first = extract_bp_num (kind, bp_loc, '\0');
14334 range.second = range.first;
14335 }
14336 return range;
14337}
14338
d0fe4701
XR
14339/* Extract the breakpoint/location range specified by ARG. Returns
14340 the breakpoint range in BP_NUM_RANGE, and the location range in
14341 BP_LOC_RANGE.
14342
14343 ARG may be in any of the following forms:
14344
14345 x where 'x' is a breakpoint number.
14346 x-y where 'x' and 'y' specify a breakpoint numbers range.
14347 x.y where 'x' is a breakpoint number and 'y' a location number.
14348 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14349 location number range.
14350*/
14351
cc638e86 14352static void
d0fe4701
XR
14353extract_bp_number_and_location (const std::string &arg,
14354 std::pair<int, int> &bp_num_range,
14355 std::pair<int, int> &bp_loc_range)
14356{
14357 std::string::size_type dot = arg.find ('.');
14358
14359 if (dot != std::string::npos)
14360 {
14361 /* Handle 'x.y' and 'x.y-z' cases. */
14362
14363 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 14364 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 14365
95e95a6d
PA
14366 bp_num_range.first
14367 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14368 bp_num_range.second = bp_num_range.first;
d0fe4701 14369
95e95a6d
PA
14370 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14371 arg, dot + 1);
d0fe4701
XR
14372 }
14373 else
14374 {
14375 /* Handle x and x-y cases. */
d0fe4701 14376
95e95a6d 14377 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
14378 bp_loc_range.first = 0;
14379 bp_loc_range.second = 0;
14380 }
d0fe4701
XR
14381}
14382
14383/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
14384 specifies whether to enable or disable. */
14385
14386static void
14387enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14388{
14389 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14390 if (loc != NULL)
14391 {
b5fa468f
TBA
14392 if (loc->disabled_by_cond && enable)
14393 error (_("Breakpoint %d's condition is invalid at location %d, "
14394 "cannot enable."), bp_num, loc_num);
14395
d0fe4701
XR
14396 if (loc->enabled != enable)
14397 {
14398 loc->enabled = enable;
14399 mark_breakpoint_location_modified (loc);
14400 }
14401 if (target_supports_enable_disable_tracepoint ()
14402 && current_trace_status ()->running && loc->owner
14403 && is_tracepoint (loc->owner))
14404 target_disable_tracepoint (loc);
14405 }
14406 update_global_location_list (UGLL_DONT_INSERT);
d7154a8d
JV
14407
14408 gdb::observers::breakpoint_modified.notify (loc->owner);
d0fe4701
XR
14409}
14410
14411/* Enable or disable a range of breakpoint locations. BP_NUM is the
14412 number of the breakpoint, and BP_LOC_RANGE specifies the
14413 (inclusive) range of location numbers of that breakpoint to
14414 enable/disable. ENABLE specifies whether to enable or disable the
14415 location. */
14416
14417static void
14418enable_disable_breakpoint_location_range (int bp_num,
14419 std::pair<int, int> &bp_loc_range,
14420 bool enable)
14421{
14422 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14423 enable_disable_bp_num_loc (bp_num, i, enable);
14424}
0d381245 14425
1900040c
MS
14426/* Set ignore-count of breakpoint number BPTNUM to COUNT.
14427 If from_tty is nonzero, it prints a message to that effect,
14428 which ends with a period (no newline). */
14429
c906108c 14430void
fba45db2 14431disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
14432{
14433 /* Never disable a watchpoint scope breakpoint; we want to
14434 hit them when we leave scope so we can delete both the
14435 watchpoint and its scope breakpoint at that time. */
14436 if (bpt->type == bp_watchpoint_scope)
14437 return;
14438
b5de0fa7 14439 bpt->enable_state = bp_disabled;
c906108c 14440
b775012e
LM
14441 /* Mark breakpoint locations modified. */
14442 mark_breakpoint_modified (bpt);
14443
d248b706
KY
14444 if (target_supports_enable_disable_tracepoint ()
14445 && current_trace_status ()->running && is_tracepoint (bpt))
14446 {
14447 struct bp_location *location;
14448
14449 for (location = bpt->loc; location; location = location->next)
14450 target_disable_tracepoint (location);
14451 }
14452
44702360 14453 update_global_location_list (UGLL_DONT_INSERT);
c906108c 14454
76727919 14455 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14456}
14457
d0fe4701
XR
14458/* Enable or disable the breakpoint(s) or breakpoint location(s)
14459 specified in ARGS. ARGS may be in any of the formats handled by
14460 extract_bp_number_and_location. ENABLE specifies whether to enable
14461 or disable the breakpoints/locations. */
14462
c906108c 14463static void
d0fe4701 14464enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 14465{
c906108c 14466 if (args == 0)
46c6471b
PA
14467 {
14468 struct breakpoint *bpt;
14469
14470 ALL_BREAKPOINTS (bpt)
14471 if (user_breakpoint_p (bpt))
d0fe4701
XR
14472 {
14473 if (enable)
14474 enable_breakpoint (bpt);
14475 else
14476 disable_breakpoint (bpt);
14477 }
46c6471b 14478 }
9eaabc75 14479 else
0d381245 14480 {
cb791d59 14481 std::string num = extract_arg (&args);
9eaabc75 14482
cb791d59 14483 while (!num.empty ())
d248b706 14484 {
d0fe4701 14485 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 14486
cc638e86
PA
14487 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14488
14489 if (bp_loc_range.first == bp_loc_range.second
14490 && bp_loc_range.first == 0)
d0fe4701 14491 {
cc638e86
PA
14492 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
14493 map_breakpoint_number_range (bp_num_range,
14494 enable
14495 ? enable_breakpoint
14496 : disable_breakpoint);
14497 }
14498 else
14499 {
14500 /* Handle breakpoint ids with formats 'x.y' or
14501 'x.y-z'. */
14502 enable_disable_breakpoint_location_range
14503 (bp_num_range.first, bp_loc_range, enable);
b775012e 14504 }
9eaabc75 14505 num = extract_arg (&args);
d248b706 14506 }
0d381245 14507 }
c906108c
SS
14508}
14509
d0fe4701
XR
14510/* The disable command disables the specified breakpoints/locations
14511 (or all defined breakpoints) so they're no longer effective in
14512 stopping the inferior. ARGS may be in any of the forms defined in
14513 extract_bp_number_and_location. */
14514
14515static void
14516disable_command (const char *args, int from_tty)
14517{
14518 enable_disable_command (args, from_tty, false);
14519}
14520
c906108c 14521static void
816338b5
SS
14522enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14523 int count)
c906108c 14524{
afe38095 14525 int target_resources_ok;
c906108c
SS
14526
14527 if (bpt->type == bp_hardware_breakpoint)
14528 {
14529 int i;
c5aa993b 14530 i = hw_breakpoint_used_count ();
53a5351d 14531 target_resources_ok =
d92524f1 14532 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 14533 i + 1, 0);
c906108c 14534 if (target_resources_ok == 0)
8a3fe4f8 14535 error (_("No hardware breakpoint support in the target."));
c906108c 14536 else if (target_resources_ok < 0)
8a3fe4f8 14537 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
14538 }
14539
cc60f2e3 14540 if (is_watchpoint (bpt))
c906108c 14541 {
d07205c2 14542 /* Initialize it just to avoid a GCC false warning. */
f486487f 14543 enum enable_state orig_enable_state = bp_disabled;
dde02812 14544
a70b8144 14545 try
c906108c 14546 {
3a5c3e22
PA
14547 struct watchpoint *w = (struct watchpoint *) bpt;
14548
1e718ff1
TJB
14549 orig_enable_state = bpt->enable_state;
14550 bpt->enable_state = bp_enabled;
3a5c3e22 14551 update_watchpoint (w, 1 /* reparse */);
c906108c 14552 }
230d2906 14553 catch (const gdb_exception &e)
c5aa993b 14554 {
1e718ff1 14555 bpt->enable_state = orig_enable_state;
dde02812
ES
14556 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14557 bpt->number);
14558 return;
c5aa993b 14559 }
c906108c 14560 }
0101ce28 14561
b775012e
LM
14562 bpt->enable_state = bp_enabled;
14563
14564 /* Mark breakpoint locations modified. */
14565 mark_breakpoint_modified (bpt);
14566
d248b706
KY
14567 if (target_supports_enable_disable_tracepoint ()
14568 && current_trace_status ()->running && is_tracepoint (bpt))
14569 {
14570 struct bp_location *location;
14571
14572 for (location = bpt->loc; location; location = location->next)
14573 target_enable_tracepoint (location);
14574 }
14575
b4c291bb 14576 bpt->disposition = disposition;
816338b5 14577 bpt->enable_count = count;
44702360 14578 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 14579
76727919 14580 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
14581}
14582
fe3f5fa8 14583
c906108c 14584void
fba45db2 14585enable_breakpoint (struct breakpoint *bpt)
c906108c 14586{
816338b5 14587 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
14588}
14589
d0fe4701
XR
14590/* The enable command enables the specified breakpoints/locations (or
14591 all defined breakpoints) so they once again become (or continue to
14592 be) effective in stopping the inferior. ARGS may be in any of the
14593 forms defined in extract_bp_number_and_location. */
c906108c 14594
c906108c 14595static void
981a3fb3 14596enable_command (const char *args, int from_tty)
c906108c 14597{
d0fe4701 14598 enable_disable_command (args, from_tty, true);
c906108c
SS
14599}
14600
c906108c 14601static void
4495129a 14602enable_once_command (const char *args, int from_tty)
c906108c 14603{
48649e1b
TT
14604 map_breakpoint_numbers
14605 (args, [&] (breakpoint *b)
14606 {
14607 iterate_over_related_breakpoints
14608 (b, [&] (breakpoint *bpt)
14609 {
14610 enable_breakpoint_disp (bpt, disp_disable, 1);
14611 });
14612 });
816338b5
SS
14613}
14614
14615static void
4495129a 14616enable_count_command (const char *args, int from_tty)
816338b5 14617{
b9d61307
SM
14618 int count;
14619
14620 if (args == NULL)
14621 error_no_arg (_("hit count"));
14622
14623 count = get_number (&args);
816338b5 14624
48649e1b
TT
14625 map_breakpoint_numbers
14626 (args, [&] (breakpoint *b)
14627 {
14628 iterate_over_related_breakpoints
14629 (b, [&] (breakpoint *bpt)
14630 {
14631 enable_breakpoint_disp (bpt, disp_disable, count);
14632 });
14633 });
c906108c
SS
14634}
14635
c906108c 14636static void
4495129a 14637enable_delete_command (const char *args, int from_tty)
c906108c 14638{
48649e1b
TT
14639 map_breakpoint_numbers
14640 (args, [&] (breakpoint *b)
14641 {
14642 iterate_over_related_breakpoints
14643 (b, [&] (breakpoint *bpt)
14644 {
14645 enable_breakpoint_disp (bpt, disp_del, 1);
14646 });
14647 });
c906108c
SS
14648}
14649\f
1f3b5d1b
PP
14650/* Invalidate last known value of any hardware watchpoint if
14651 the memory which that value represents has been written to by
14652 GDB itself. */
14653
14654static void
8de0566d
YQ
14655invalidate_bp_value_on_memory_change (struct inferior *inferior,
14656 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
14657 const bfd_byte *data)
14658{
14659 struct breakpoint *bp;
14660
14661 ALL_BREAKPOINTS (bp)
14662 if (bp->enable_state == bp_enabled
3a5c3e22 14663 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 14664 {
3a5c3e22 14665 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 14666
850645cf 14667 if (wp->val_valid && wp->val != nullptr)
3a5c3e22
PA
14668 {
14669 struct bp_location *loc;
14670
14671 for (loc = bp->loc; loc != NULL; loc = loc->next)
14672 if (loc->loc_type == bp_loc_hardware_watchpoint
14673 && loc->address + loc->length > addr
14674 && addr + len > loc->address)
14675 {
3a5c3e22 14676 wp->val = NULL;
4c1d86d9 14677 wp->val_valid = false;
3a5c3e22
PA
14678 }
14679 }
1f3b5d1b
PP
14680 }
14681}
14682
8181d85f
DJ
14683/* Create and insert a breakpoint for software single step. */
14684
14685void
6c95b8df 14686insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 14687 const address_space *aspace,
4a64f543 14688 CORE_ADDR next_pc)
8181d85f 14689{
7c16b83e
PA
14690 struct thread_info *tp = inferior_thread ();
14691 struct symtab_and_line sal;
14692 CORE_ADDR pc = next_pc;
8181d85f 14693
34b7e8a6
PA
14694 if (tp->control.single_step_breakpoints == NULL)
14695 {
14696 tp->control.single_step_breakpoints
5d5658a1 14697 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 14698 }
8181d85f 14699
7c16b83e
PA
14700 sal = find_pc_line (pc, 0);
14701 sal.pc = pc;
14702 sal.section = find_pc_overlay (pc);
14703 sal.explicit_pc = 1;
34b7e8a6 14704 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 14705
7c16b83e 14706 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
14707}
14708
93f9a11f
YQ
14709/* Insert single step breakpoints according to the current state. */
14710
14711int
14712insert_single_step_breakpoints (struct gdbarch *gdbarch)
14713{
f5ea389a 14714 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 14715 std::vector<CORE_ADDR> next_pcs;
93f9a11f 14716
f5ea389a 14717 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 14718
a0ff9e1a 14719 if (!next_pcs.empty ())
93f9a11f 14720 {
f5ea389a 14721 struct frame_info *frame = get_current_frame ();
8b86c959 14722 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 14723
a0ff9e1a 14724 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
14725 insert_single_step_breakpoint (gdbarch, aspace, pc);
14726
93f9a11f
YQ
14727 return 1;
14728 }
14729 else
14730 return 0;
14731}
14732
34b7e8a6 14733/* See breakpoint.h. */
f02253f1
HZ
14734
14735int
7c16b83e 14736breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 14737 const address_space *aspace,
7c16b83e 14738 CORE_ADDR pc)
1aafd4da 14739{
7c16b83e 14740 struct bp_location *loc;
1aafd4da 14741
7c16b83e
PA
14742 for (loc = bp->loc; loc != NULL; loc = loc->next)
14743 if (loc->inserted
14744 && breakpoint_location_address_match (loc, aspace, pc))
14745 return 1;
1aafd4da 14746
7c16b83e 14747 return 0;
ef370185
JB
14748}
14749
14750/* Check whether a software single-step breakpoint is inserted at
14751 PC. */
14752
14753int
accd0bcd 14754single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
14755 CORE_ADDR pc)
14756{
34b7e8a6
PA
14757 struct breakpoint *bpt;
14758
14759 ALL_BREAKPOINTS (bpt)
14760 {
14761 if (bpt->type == bp_single_step
14762 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14763 return 1;
14764 }
14765 return 0;
1aafd4da
UW
14766}
14767
1042e4c0
SS
14768/* Tracepoint-specific operations. */
14769
14770/* Set tracepoint count to NUM. */
14771static void
14772set_tracepoint_count (int num)
14773{
14774 tracepoint_count = num;
4fa62494 14775 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
14776}
14777
70221824 14778static void
0b39b52e 14779trace_command (const char *arg, int from_tty)
1042e4c0 14780{
ffc2605c
TT
14781 event_location_up location = string_to_event_location (&arg,
14782 current_language);
bac7c5cf
GB
14783 const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
14784 (location.get (), true /* is_tracepoint */);
55aa24fb 14785
558a9d82 14786 create_breakpoint (get_current_arch (),
ffc2605c 14787 location.get (),
f00aae0f 14788 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14789 0 /* tempflag */,
14790 bp_tracepoint /* type_wanted */,
14791 0 /* Ignore count */,
14792 pending_break_support,
14793 ops,
14794 from_tty,
14795 1 /* enabled */,
14796 0 /* internal */, 0);
1042e4c0
SS
14797}
14798
70221824 14799static void
0b39b52e 14800ftrace_command (const char *arg, int from_tty)
7a697b8d 14801{
ffc2605c
TT
14802 event_location_up location = string_to_event_location (&arg,
14803 current_language);
558a9d82 14804 create_breakpoint (get_current_arch (),
ffc2605c 14805 location.get (),
f00aae0f 14806 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14807 0 /* tempflag */,
14808 bp_fast_tracepoint /* type_wanted */,
14809 0 /* Ignore count */,
14810 pending_break_support,
14811 &tracepoint_breakpoint_ops,
14812 from_tty,
14813 1 /* enabled */,
14814 0 /* internal */, 0);
0fb4aa4b
PA
14815}
14816
14817/* strace command implementation. Creates a static tracepoint. */
14818
70221824 14819static void
0b39b52e 14820strace_command (const char *arg, int from_tty)
0fb4aa4b 14821{
983af33b 14822 struct breakpoint_ops *ops;
ffc2605c 14823 event_location_up location;
983af33b
SDJ
14824
14825 /* Decide if we are dealing with a static tracepoint marker (`-m'),
14826 or with a normal static tracepoint. */
61012eef 14827 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
14828 {
14829 ops = &strace_marker_breakpoint_ops;
a20714ff 14830 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 14831 }
983af33b 14832 else
f00aae0f
KS
14833 {
14834 ops = &tracepoint_breakpoint_ops;
14835 location = string_to_event_location (&arg, current_language);
14836 }
983af33b 14837
558a9d82 14838 create_breakpoint (get_current_arch (),
ffc2605c 14839 location.get (),
f00aae0f 14840 NULL, 0, arg, 1 /* parse arg */,
558a9d82
YQ
14841 0 /* tempflag */,
14842 bp_static_tracepoint /* type_wanted */,
14843 0 /* Ignore count */,
14844 pending_break_support,
14845 ops,
14846 from_tty,
14847 1 /* enabled */,
14848 0 /* internal */, 0);
7a697b8d
SS
14849}
14850
409873ef
SS
14851/* Set up a fake reader function that gets command lines from a linked
14852 list that was acquired during tracepoint uploading. */
14853
14854static struct uploaded_tp *this_utp;
3149d8c1 14855static int next_cmd;
409873ef
SS
14856
14857static char *
14858read_uploaded_action (void)
14859{
a18ba4e4 14860 char *rslt = nullptr;
409873ef 14861
a18ba4e4
SM
14862 if (next_cmd < this_utp->cmd_strings.size ())
14863 {
67aa1f3c 14864 rslt = this_utp->cmd_strings[next_cmd].get ();
a18ba4e4
SM
14865 next_cmd++;
14866 }
409873ef
SS
14867
14868 return rslt;
14869}
14870
00bf0b85
SS
14871/* Given information about a tracepoint as recorded on a target (which
14872 can be either a live system or a trace file), attempt to create an
14873 equivalent GDB tracepoint. This is not a reliable process, since
14874 the target does not necessarily have all the information used when
14875 the tracepoint was originally defined. */
14876
d9b3f62e 14877struct tracepoint *
00bf0b85 14878create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 14879{
f2fc3015
TT
14880 const char *addr_str;
14881 char small_buf[100];
d9b3f62e 14882 struct tracepoint *tp;
fd9b8c24 14883
409873ef 14884 if (utp->at_string)
67aa1f3c 14885 addr_str = utp->at_string.get ();
409873ef
SS
14886 else
14887 {
14888 /* In the absence of a source location, fall back to raw
14889 address. Since there is no way to confirm that the address
14890 means the same thing as when the trace was started, warn the
14891 user. */
3e43a32a
MS
14892 warning (_("Uploaded tracepoint %d has no "
14893 "source location, using raw address"),
409873ef 14894 utp->number);
8c042590 14895 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
14896 addr_str = small_buf;
14897 }
14898
14899 /* There's not much we can do with a sequence of bytecodes. */
14900 if (utp->cond && !utp->cond_string)
3e43a32a
MS
14901 warning (_("Uploaded tracepoint %d condition "
14902 "has no source form, ignoring it"),
409873ef 14903 utp->number);
d5551862 14904
ffc2605c
TT
14905 event_location_up location = string_to_event_location (&addr_str,
14906 current_language);
8cdf0e15 14907 if (!create_breakpoint (get_current_arch (),
ffc2605c 14908 location.get (),
67aa1f3c 14909 utp->cond_string.get (), -1, addr_str,
e7e0cddf 14910 0 /* parse cond/thread */,
8cdf0e15 14911 0 /* tempflag */,
0fb4aa4b 14912 utp->type /* type_wanted */,
8cdf0e15
VP
14913 0 /* Ignore count */,
14914 pending_break_support,
348d480f 14915 &tracepoint_breakpoint_ops,
8cdf0e15 14916 0 /* from_tty */,
84f4c1fe 14917 utp->enabled /* enabled */,
44f238bb
PA
14918 0 /* internal */,
14919 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 14920 return NULL;
fd9b8c24 14921
409873ef 14922 /* Get the tracepoint we just created. */
fd9b8c24
PA
14923 tp = get_tracepoint (tracepoint_count);
14924 gdb_assert (tp != NULL);
d5551862 14925
00bf0b85
SS
14926 if (utp->pass > 0)
14927 {
8c042590 14928 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 14929 tp->number);
00bf0b85 14930
409873ef 14931 trace_pass_command (small_buf, 0);
00bf0b85
SS
14932 }
14933
409873ef
SS
14934 /* If we have uploaded versions of the original commands, set up a
14935 special-purpose "reader" function and call the usual command line
14936 reader, then pass the result to the breakpoint command-setting
14937 function. */
a18ba4e4 14938 if (!utp->cmd_strings.empty ())
00bf0b85 14939 {
12973681 14940 counted_command_line cmd_list;
00bf0b85 14941
409873ef 14942 this_utp = utp;
3149d8c1 14943 next_cmd = 0;
d5551862 14944
60b3cef2 14945 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
409873ef 14946
c1fc2657 14947 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 14948 }
a18ba4e4
SM
14949 else if (!utp->actions.empty ()
14950 || !utp->step_actions.empty ())
3e43a32a
MS
14951 warning (_("Uploaded tracepoint %d actions "
14952 "have no source form, ignoring them"),
409873ef 14953 utp->number);
00bf0b85 14954
f196051f 14955 /* Copy any status information that might be available. */
c1fc2657 14956 tp->hit_count = utp->hit_count;
f196051f
SS
14957 tp->traceframe_usage = utp->traceframe_usage;
14958
00bf0b85 14959 return tp;
d9b3f62e 14960}
00bf0b85 14961
1042e4c0
SS
14962/* Print information on tracepoint number TPNUM_EXP, or all if
14963 omitted. */
14964
14965static void
1d12d88f 14966info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14967{
79a45e25 14968 struct ui_out *uiout = current_uiout;
e5a67952 14969 int num_printed;
1042e4c0 14970
5c458ae8 14971 num_printed = breakpoint_1 (args, false, is_tracepoint);
d77f58be
SS
14972
14973 if (num_printed == 0)
1042e4c0 14974 {
e5a67952 14975 if (args == NULL || *args == '\0')
112e8700 14976 uiout->message ("No tracepoints.\n");
d77f58be 14977 else
112e8700 14978 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14979 }
ad443146
SS
14980
14981 default_collect_info ();
1042e4c0
SS
14982}
14983
4a64f543 14984/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14985 Not supported by all targets. */
14986static void
5fed81ff 14987enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14988{
14989 enable_command (args, from_tty);
14990}
14991
4a64f543 14992/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14993 Not supported by all targets. */
14994static void
5fed81ff 14995disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14996{
14997 disable_command (args, from_tty);
14998}
14999
4a64f543 15000/* Remove a tracepoint (or all if no argument). */
1042e4c0 15001static void
4495129a 15002delete_trace_command (const char *arg, int from_tty)
1042e4c0 15003{
35df4500 15004 struct breakpoint *b, *b_tmp;
1042e4c0
SS
15005
15006 dont_repeat ();
15007
15008 if (arg == 0)
15009 {
15010 int breaks_to_delete = 0;
15011
15012 /* Delete all breakpoints if no argument.
dda83cd7
SM
15013 Do not delete internal or call-dummy breakpoints, these
15014 have to be deleted with an explicit breakpoint number
4a64f543 15015 argument. */
1042e4c0 15016 ALL_TRACEPOINTS (b)
46c6471b 15017 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0
SS
15018 {
15019 breaks_to_delete = 1;
15020 break;
15021 }
1042e4c0
SS
15022
15023 /* Ask user only if there are some breakpoints to delete. */
15024 if (!from_tty
15025 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15026 {
35df4500 15027 ALL_BREAKPOINTS_SAFE (b, b_tmp)
46c6471b 15028 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 15029 delete_breakpoint (b);
1042e4c0
SS
15030 }
15031 }
15032 else
48649e1b 15033 map_breakpoint_numbers
b926417a 15034 (arg, [&] (breakpoint *br)
48649e1b 15035 {
b926417a 15036 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 15037 });
1042e4c0
SS
15038}
15039
197f0a60
TT
15040/* Helper function for trace_pass_command. */
15041
15042static void
d9b3f62e 15043trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 15044{
d9b3f62e 15045 tp->pass_count = count;
76727919 15046 gdb::observers::breakpoint_modified.notify (tp);
197f0a60
TT
15047 if (from_tty)
15048 printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
c1fc2657 15049 tp->number, count);
197f0a60
TT
15050}
15051
1042e4c0
SS
15052/* Set passcount for tracepoint.
15053
15054 First command argument is passcount, second is tracepoint number.
15055 If tracepoint number omitted, apply to most recently defined.
15056 Also accepts special argument "all". */
15057
15058static void
0b39b52e 15059trace_pass_command (const char *args, int from_tty)
1042e4c0 15060{
d9b3f62e 15061 struct tracepoint *t1;
0b39b52e 15062 ULONGEST count;
1042e4c0
SS
15063
15064 if (args == 0 || *args == 0)
3e43a32a
MS
15065 error (_("passcount command requires an "
15066 "argument (count + optional TP num)"));
1042e4c0 15067
0b39b52e 15068 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 15069
529480d0 15070 args = skip_spaces (args);
1042e4c0
SS
15071 if (*args && strncasecmp (args, "all", 3) == 0)
15072 {
d9b3f62e
PA
15073 struct breakpoint *b;
15074
1042e4c0 15075 args += 3; /* Skip special argument "all". */
1042e4c0
SS
15076 if (*args)
15077 error (_("Junk at end of arguments."));
1042e4c0 15078
d9b3f62e 15079 ALL_TRACEPOINTS (b)
197f0a60 15080 {
d9b3f62e 15081 t1 = (struct tracepoint *) b;
197f0a60
TT
15082 trace_pass_set_count (t1, count, from_tty);
15083 }
15084 }
15085 else if (*args == '\0')
1042e4c0 15086 {
5fa1d40e 15087 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 15088 if (t1)
197f0a60
TT
15089 trace_pass_set_count (t1, count, from_tty);
15090 }
15091 else
15092 {
bfd28288
PA
15093 number_or_range_parser parser (args);
15094 while (!parser.finished ())
1042e4c0 15095 {
bfd28288 15096 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
15097 if (t1)
15098 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
15099 }
15100 }
1042e4c0
SS
15101}
15102
d9b3f62e 15103struct tracepoint *
1042e4c0
SS
15104get_tracepoint (int num)
15105{
15106 struct breakpoint *t;
15107
15108 ALL_TRACEPOINTS (t)
15109 if (t->number == num)
d9b3f62e 15110 return (struct tracepoint *) t;
1042e4c0
SS
15111
15112 return NULL;
15113}
15114
d5551862
SS
15115/* Find the tracepoint with the given target-side number (which may be
15116 different from the tracepoint number after disconnecting and
15117 reconnecting). */
15118
d9b3f62e 15119struct tracepoint *
d5551862
SS
15120get_tracepoint_by_number_on_target (int num)
15121{
d9b3f62e 15122 struct breakpoint *b;
d5551862 15123
d9b3f62e
PA
15124 ALL_TRACEPOINTS (b)
15125 {
15126 struct tracepoint *t = (struct tracepoint *) b;
15127
15128 if (t->number_on_target == num)
15129 return t;
15130 }
d5551862
SS
15131
15132 return NULL;
15133}
15134
1042e4c0 15135/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 15136 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
15137 If the argument is missing, the most recent tracepoint
15138 (tracepoint_count) is returned. */
15139
d9b3f62e 15140struct tracepoint *
0b39b52e 15141get_tracepoint_by_number (const char **arg,
bfd28288 15142 number_or_range_parser *parser)
1042e4c0 15143{
1042e4c0
SS
15144 struct breakpoint *t;
15145 int tpnum;
0b39b52e 15146 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 15147
bfd28288 15148 if (parser != NULL)
197f0a60 15149 {
bfd28288
PA
15150 gdb_assert (!parser->finished ());
15151 tpnum = parser->get_number ();
197f0a60
TT
15152 }
15153 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 15154 tpnum = tracepoint_count;
1042e4c0 15155 else
197f0a60 15156 tpnum = get_number (arg);
1042e4c0
SS
15157
15158 if (tpnum <= 0)
15159 {
15160 if (instring && *instring)
15161 printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15162 instring);
15163 else
5fa1d40e 15164 printf_filtered (_("No previous tracepoint\n"));
1042e4c0
SS
15165 return NULL;
15166 }
15167
15168 ALL_TRACEPOINTS (t)
15169 if (t->number == tpnum)
15170 {
d9b3f62e 15171 return (struct tracepoint *) t;
1042e4c0
SS
15172 }
15173
1042e4c0
SS
15174 printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15175 return NULL;
15176}
15177
d9b3f62e
PA
15178void
15179print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15180{
15181 if (b->thread != -1)
15182 fprintf_unfiltered (fp, " thread %d", b->thread);
15183
15184 if (b->task != 0)
15185 fprintf_unfiltered (fp, " task %d", b->task);
15186
15187 fprintf_unfiltered (fp, "\n");
15188}
15189
6149aea9
PA
15190/* Save information on user settable breakpoints (watchpoints, etc) to
15191 a new script file named FILENAME. If FILTER is non-NULL, call it
15192 on each breakpoint and only include the ones for which it returns
f2478a7e 15193 true. */
6149aea9 15194
1042e4c0 15195static void
4495129a 15196save_breakpoints (const char *filename, int from_tty,
f2478a7e 15197 bool (*filter) (const struct breakpoint *))
1042e4c0
SS
15198{
15199 struct breakpoint *tp;
6149aea9 15200 int any = 0;
6149aea9 15201 int extra_trace_bits = 0;
1042e4c0 15202
6149aea9
PA
15203 if (filename == 0 || *filename == 0)
15204 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
15205
15206 /* See if we have anything to save. */
6149aea9 15207 ALL_BREAKPOINTS (tp)
1042e4c0 15208 {
6149aea9 15209 /* Skip internal and momentary breakpoints. */
09d682a4 15210 if (!user_breakpoint_p (tp))
6149aea9
PA
15211 continue;
15212
15213 /* If we have a filter, only save the breakpoints it accepts. */
15214 if (filter && !filter (tp))
15215 continue;
15216
15217 any = 1;
15218
15219 if (is_tracepoint (tp))
15220 {
15221 extra_trace_bits = 1;
15222
15223 /* We can stop searching. */
15224 break;
15225 }
1042e4c0 15226 }
6149aea9
PA
15227
15228 if (!any)
1042e4c0 15229 {
6149aea9 15230 warning (_("Nothing to save."));
1042e4c0
SS
15231 return;
15232 }
15233
ee0c3293 15234 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
15235
15236 stdio_file fp;
15237
ee0c3293 15238 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 15239 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 15240 expanded_filename.get (), safe_strerror (errno));
8bf6485c 15241
6149aea9 15242 if (extra_trace_bits)
d7e74731 15243 save_trace_state_variables (&fp);
8bf6485c 15244
6149aea9 15245 ALL_BREAKPOINTS (tp)
1042e4c0 15246 {
6149aea9 15247 /* Skip internal and momentary breakpoints. */
09d682a4 15248 if (!user_breakpoint_p (tp))
6149aea9 15249 continue;
8bf6485c 15250
6149aea9
PA
15251 /* If we have a filter, only save the breakpoints it accepts. */
15252 if (filter && !filter (tp))
15253 continue;
15254
d7e74731 15255 tp->ops->print_recreate (tp, &fp);
1042e4c0 15256
6149aea9
PA
15257 /* Note, we can't rely on tp->number for anything, as we can't
15258 assume the recreated breakpoint numbers will match. Use $bpnum
15259 instead. */
15260
15261 if (tp->cond_string)
d7e74731 15262 fp.printf (" condition $bpnum %s\n", tp->cond_string);
6149aea9
PA
15263
15264 if (tp->ignore_count)
d7e74731 15265 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 15266
2d9442cc 15267 if (tp->type != bp_dprintf && tp->commands)
1042e4c0 15268 {
d7e74731 15269 fp.puts (" commands\n");
a7bdde9e 15270
d7e74731 15271 current_uiout->redirect (&fp);
a70b8144 15272 try
1042e4c0 15273 {
d1b0a7bf 15274 print_command_lines (current_uiout, tp->commands.get (), 2);
a7bdde9e 15275 }
230d2906 15276 catch (const gdb_exception &ex)
492d29ea 15277 {
112e8700 15278 current_uiout->redirect (NULL);
eedc3f4f 15279 throw;
492d29ea 15280 }
1042e4c0 15281
112e8700 15282 current_uiout->redirect (NULL);
d7e74731 15283 fp.puts (" end\n");
1042e4c0 15284 }
6149aea9
PA
15285
15286 if (tp->enable_state == bp_disabled)
d7e74731 15287 fp.puts ("disable $bpnum\n");
6149aea9
PA
15288
15289 /* If this is a multi-location breakpoint, check if the locations
15290 should be individually disabled. Watchpoint locations are
15291 special, and not user visible. */
15292 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15293 {
15294 struct bp_location *loc;
15295 int n = 1;
15296
15297 for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15298 if (!loc->enabled)
d7e74731 15299 fp.printf ("disable $bpnum.%d\n", n);
6149aea9 15300 }
1042e4c0 15301 }
8bf6485c 15302
6149aea9 15303 if (extra_trace_bits && *default_collect)
d7e74731 15304 fp.printf ("set default-collect %s\n", default_collect);
8bf6485c 15305
1042e4c0 15306 if (from_tty)
ee0c3293 15307 printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
15308}
15309
15310/* The `save breakpoints' command. */
15311
15312static void
4495129a 15313save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
15314{
15315 save_breakpoints (args, from_tty, NULL);
15316}
15317
15318/* The `save tracepoints' command. */
15319
15320static void
4495129a 15321save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
15322{
15323 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
15324}
15325
15326/* Create a vector of all tracepoints. */
15327
f51e0e20 15328std::vector<breakpoint *>
eeae04df 15329all_tracepoints (void)
1042e4c0 15330{
f51e0e20 15331 std::vector<breakpoint *> tp_vec;
1042e4c0
SS
15332 struct breakpoint *tp;
15333
15334 ALL_TRACEPOINTS (tp)
15335 {
f51e0e20 15336 tp_vec.push_back (tp);
1042e4c0
SS
15337 }
15338
15339 return tp_vec;
15340}
15341
c906108c 15342\f
629500fa
KS
15343/* This help string is used to consolidate all the help string for specifying
15344 locations used by several commands. */
15345
15346#define LOCATION_HELP_STRING \
15347"Linespecs are colon-separated lists of location parameters, such as\n\
15348source filename, function name, label name, and line number.\n\
15349Example: To specify the start of a label named \"the_top\" in the\n\
15350function \"fact\" in the file \"factorial.c\", use\n\
15351\"factorial.c:fact:the_top\".\n\
15352\n\
15353Address locations begin with \"*\" and specify an exact address in the\n\
15354program. Example: To specify the fourth byte past the start function\n\
15355\"main\", use \"*main + 4\".\n\
15356\n\
15357Explicit locations are similar to linespecs but use an option/argument\n\
15358syntax to specify location parameters.\n\
15359Example: To specify the start of the label named \"the_top\" in the\n\
15360function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
15361-function fact -label the_top\".\n\
15362\n\
15363By default, a specified function is matched against the program's\n\
15364functions in all scopes. For C++, this means in all namespaces and\n\
15365classes. For Ada, this means in all packages. E.g., in C++,\n\
15366\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
15367\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
89549d7f 15368specified name as a complete fully-qualified name instead."
629500fa 15369
4a64f543
MS
15370/* This help string is used for the break, hbreak, tbreak and thbreak
15371 commands. It is defined as a macro to prevent duplication.
15372 COMMAND should be a string constant containing the name of the
15373 command. */
629500fa 15374
31e2b00f 15375#define BREAK_ARGS_HELP(command) \
733d554a
TBA
15376command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]\n\
15377\t[-force-condition] [if CONDITION]\n\
fb7b5af4
SDJ
15378PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15379probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
15380guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15381`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
15382LOCATION may be a linespec, address, or explicit location as described\n\
15383below.\n\
15384\n\
dc10affe
PA
15385With no LOCATION, uses current execution address of the selected\n\
15386stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
15387\n\
15388THREADNUM is the number from \"info threads\".\n\
15389CONDITION is a boolean expression.\n\
733d554a
TBA
15390\n\
15391With the \"-force-condition\" flag, the condition is defined even when\n\
15392it is invalid for all current locations.\n\
89549d7f 15393\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
15394Multiple breakpoints at one place are permitted, and useful if their\n\
15395conditions are different.\n\
31e2b00f
AS
15396\n\
15397Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15398
44feb3ce
TT
15399/* List of subcommands for "catch". */
15400static struct cmd_list_element *catch_cmdlist;
15401
15402/* List of subcommands for "tcatch". */
15403static struct cmd_list_element *tcatch_cmdlist;
15404
9ac4176b 15405void
a121b7c1 15406add_catch_command (const char *name, const char *docstring,
eb4c3f4a 15407 cmd_const_sfunc_ftype *sfunc,
625e8578 15408 completer_ftype *completer,
44feb3ce
TT
15409 void *user_data_catch,
15410 void *user_data_tcatch)
15411{
15412 struct cmd_list_element *command;
15413
0450cc4c 15414 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15415 &catch_cmdlist);
15416 set_cmd_sfunc (command, sfunc);
15417 set_cmd_context (command, user_data_catch);
a96d9b2e 15418 set_cmd_completer (command, completer);
44feb3ce 15419
0450cc4c 15420 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce
TT
15421 &tcatch_cmdlist);
15422 set_cmd_sfunc (command, sfunc);
15423 set_cmd_context (command, user_data_tcatch);
a96d9b2e 15424 set_cmd_completer (command, completer);
44feb3ce
TT
15425}
15426
84f4c1fe 15427struct breakpoint *
95da600f 15428iterate_over_breakpoints (gdb::function_view<bool (breakpoint *)> callback)
84f4c1fe 15429{
35df4500 15430 struct breakpoint *b, *b_tmp;
84f4c1fe 15431
35df4500 15432 ALL_BREAKPOINTS_SAFE (b, b_tmp)
84f4c1fe 15433 {
95da600f 15434 if (callback (b))
84f4c1fe
PM
15435 return b;
15436 }
15437
15438 return NULL;
15439}
15440
0574c78f
GB
15441/* Zero if any of the breakpoint's locations could be a location where
15442 functions have been inlined, nonzero otherwise. */
15443
15444static int
15445is_non_inline_function (struct breakpoint *b)
15446{
15447 /* The shared library event breakpoint is set on the address of a
15448 non-inline function. */
15449 if (b->type == bp_shlib_event)
15450 return 1;
15451
15452 return 0;
15453}
15454
15455/* Nonzero if the specified PC cannot be a location where functions
15456 have been inlined. */
15457
15458int
accd0bcd 15459pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
09ac7c10 15460 const struct target_waitstatus *ws)
0574c78f
GB
15461{
15462 struct breakpoint *b;
15463 struct bp_location *bl;
15464
15465 ALL_BREAKPOINTS (b)
15466 {
15467 if (!is_non_inline_function (b))
15468 continue;
15469
15470 for (bl = b->loc; bl != NULL; bl = bl->next)
15471 {
15472 if (!bl->shlib_disabled
09ac7c10 15473 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
15474 return 1;
15475 }
15476 }
15477
15478 return 0;
15479}
15480
2f202fde
JK
15481/* Remove any references to OBJFILE which is going to be freed. */
15482
15483void
15484breakpoint_free_objfile (struct objfile *objfile)
15485{
15486 struct bp_location **locp, *loc;
15487
15488 ALL_BP_LOCATIONS (loc, locp)
eb822aa6 15489 if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
2f202fde
JK
15490 loc->symtab = NULL;
15491}
15492
2060206e
PA
15493void
15494initialize_breakpoint_ops (void)
15495{
15496 static int initialized = 0;
15497
15498 struct breakpoint_ops *ops;
15499
15500 if (initialized)
15501 return;
15502 initialized = 1;
15503
15504 /* The breakpoint_ops structure to be inherit by all kinds of
15505 breakpoints (real breakpoints, i.e., user "break" breakpoints,
15506 internal and momentary breakpoints, etc.). */
15507 ops = &bkpt_base_breakpoint_ops;
15508 *ops = base_breakpoint_ops;
15509 ops->re_set = bkpt_re_set;
15510 ops->insert_location = bkpt_insert_location;
15511 ops->remove_location = bkpt_remove_location;
15512 ops->breakpoint_hit = bkpt_breakpoint_hit;
5f700d83 15513 ops->create_sals_from_location = bkpt_create_sals_from_location;
983af33b 15514 ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
5f700d83 15515 ops->decode_location = bkpt_decode_location;
2060206e
PA
15516
15517 /* The breakpoint_ops structure to be used in regular breakpoints. */
15518 ops = &bkpt_breakpoint_ops;
15519 *ops = bkpt_base_breakpoint_ops;
15520 ops->re_set = bkpt_re_set;
15521 ops->resources_needed = bkpt_resources_needed;
15522 ops->print_it = bkpt_print_it;
15523 ops->print_mention = bkpt_print_mention;
15524 ops->print_recreate = bkpt_print_recreate;
15525
15526 /* Ranged breakpoints. */
15527 ops = &ranged_breakpoint_ops;
15528 *ops = bkpt_breakpoint_ops;
15529 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15530 ops->resources_needed = resources_needed_ranged_breakpoint;
15531 ops->print_it = print_it_ranged_breakpoint;
15532 ops->print_one = print_one_ranged_breakpoint;
15533 ops->print_one_detail = print_one_detail_ranged_breakpoint;
15534 ops->print_mention = print_mention_ranged_breakpoint;
15535 ops->print_recreate = print_recreate_ranged_breakpoint;
15536
15537 /* Internal breakpoints. */
15538 ops = &internal_breakpoint_ops;
15539 *ops = bkpt_base_breakpoint_ops;
15540 ops->re_set = internal_bkpt_re_set;
15541 ops->check_status = internal_bkpt_check_status;
15542 ops->print_it = internal_bkpt_print_it;
15543 ops->print_mention = internal_bkpt_print_mention;
15544
15545 /* Momentary breakpoints. */
15546 ops = &momentary_breakpoint_ops;
15547 *ops = bkpt_base_breakpoint_ops;
15548 ops->re_set = momentary_bkpt_re_set;
15549 ops->check_status = momentary_bkpt_check_status;
15550 ops->print_it = momentary_bkpt_print_it;
15551 ops->print_mention = momentary_bkpt_print_mention;
15552
55aa24fb
SDJ
15553 /* Probe breakpoints. */
15554 ops = &bkpt_probe_breakpoint_ops;
15555 *ops = bkpt_breakpoint_ops;
15556 ops->insert_location = bkpt_probe_insert_location;
15557 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
15558 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15559 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 15560
2060206e
PA
15561 /* Watchpoints. */
15562 ops = &watchpoint_breakpoint_ops;
15563 *ops = base_breakpoint_ops;
15564 ops->re_set = re_set_watchpoint;
15565 ops->insert_location = insert_watchpoint;
15566 ops->remove_location = remove_watchpoint;
15567 ops->breakpoint_hit = breakpoint_hit_watchpoint;
15568 ops->check_status = check_status_watchpoint;
15569 ops->resources_needed = resources_needed_watchpoint;
15570 ops->works_in_software_mode = works_in_software_mode_watchpoint;
15571 ops->print_it = print_it_watchpoint;
15572 ops->print_mention = print_mention_watchpoint;
15573 ops->print_recreate = print_recreate_watchpoint;
427cd150 15574 ops->explains_signal = explains_signal_watchpoint;
2060206e
PA
15575
15576 /* Masked watchpoints. */
15577 ops = &masked_watchpoint_breakpoint_ops;
15578 *ops = watchpoint_breakpoint_ops;
15579 ops->insert_location = insert_masked_watchpoint;
15580 ops->remove_location = remove_masked_watchpoint;
15581 ops->resources_needed = resources_needed_masked_watchpoint;
15582 ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15583 ops->print_it = print_it_masked_watchpoint;
15584 ops->print_one_detail = print_one_detail_masked_watchpoint;
15585 ops->print_mention = print_mention_masked_watchpoint;
15586 ops->print_recreate = print_recreate_masked_watchpoint;
15587
15588 /* Tracepoints. */
15589 ops = &tracepoint_breakpoint_ops;
15590 *ops = base_breakpoint_ops;
15591 ops->re_set = tracepoint_re_set;
15592 ops->breakpoint_hit = tracepoint_breakpoint_hit;
15593 ops->print_one_detail = tracepoint_print_one_detail;
15594 ops->print_mention = tracepoint_print_mention;
15595 ops->print_recreate = tracepoint_print_recreate;
5f700d83 15596 ops->create_sals_from_location = tracepoint_create_sals_from_location;
983af33b 15597 ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
5f700d83 15598 ops->decode_location = tracepoint_decode_location;
983af33b 15599
55aa24fb
SDJ
15600 /* Probe tracepoints. */
15601 ops = &tracepoint_probe_breakpoint_ops;
15602 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
15603 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15604 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 15605
983af33b
SDJ
15606 /* Static tracepoints with marker (`-m'). */
15607 ops = &strace_marker_breakpoint_ops;
15608 *ops = tracepoint_breakpoint_ops;
5f700d83 15609 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 15610 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 15611 ops->decode_location = strace_marker_decode_location;
2060206e
PA
15612
15613 /* Fork catchpoints. */
15614 ops = &catch_fork_breakpoint_ops;
15615 *ops = base_breakpoint_ops;
15616 ops->insert_location = insert_catch_fork;
15617 ops->remove_location = remove_catch_fork;
15618 ops->breakpoint_hit = breakpoint_hit_catch_fork;
15619 ops->print_it = print_it_catch_fork;
15620 ops->print_one = print_one_catch_fork;
15621 ops->print_mention = print_mention_catch_fork;
15622 ops->print_recreate = print_recreate_catch_fork;
15623
15624 /* Vfork catchpoints. */
15625 ops = &catch_vfork_breakpoint_ops;
15626 *ops = base_breakpoint_ops;
15627 ops->insert_location = insert_catch_vfork;
15628 ops->remove_location = remove_catch_vfork;
15629 ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15630 ops->print_it = print_it_catch_vfork;
15631 ops->print_one = print_one_catch_vfork;
15632 ops->print_mention = print_mention_catch_vfork;
15633 ops->print_recreate = print_recreate_catch_vfork;
15634
15635 /* Exec catchpoints. */
15636 ops = &catch_exec_breakpoint_ops;
15637 *ops = base_breakpoint_ops;
2060206e
PA
15638 ops->insert_location = insert_catch_exec;
15639 ops->remove_location = remove_catch_exec;
15640 ops->breakpoint_hit = breakpoint_hit_catch_exec;
15641 ops->print_it = print_it_catch_exec;
15642 ops->print_one = print_one_catch_exec;
15643 ops->print_mention = print_mention_catch_exec;
15644 ops->print_recreate = print_recreate_catch_exec;
15645
edcc5120
TT
15646 /* Solib-related catchpoints. */
15647 ops = &catch_solib_breakpoint_ops;
15648 *ops = base_breakpoint_ops;
edcc5120
TT
15649 ops->insert_location = insert_catch_solib;
15650 ops->remove_location = remove_catch_solib;
15651 ops->breakpoint_hit = breakpoint_hit_catch_solib;
15652 ops->check_status = check_status_catch_solib;
15653 ops->print_it = print_it_catch_solib;
15654 ops->print_one = print_one_catch_solib;
15655 ops->print_mention = print_mention_catch_solib;
15656 ops->print_recreate = print_recreate_catch_solib;
e7e0cddf
SS
15657
15658 ops = &dprintf_breakpoint_ops;
15659 *ops = bkpt_base_breakpoint_ops;
5c2b4418 15660 ops->re_set = dprintf_re_set;
e7e0cddf
SS
15661 ops->resources_needed = bkpt_resources_needed;
15662 ops->print_it = bkpt_print_it;
15663 ops->print_mention = bkpt_print_mention;
2d9442cc 15664 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 15665 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 15666 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
15667}
15668
8bfd80db
YQ
15669/* Chain containing all defined "enable breakpoint" subcommands. */
15670
15671static struct cmd_list_element *enablebreaklist = NULL;
15672
8588b356
SM
15673/* See breakpoint.h. */
15674
15675cmd_list_element *commands_cmd_element = nullptr;
15676
6c265988 15677void _initialize_breakpoint ();
c906108c 15678void
6c265988 15679_initialize_breakpoint ()
c906108c
SS
15680{
15681 struct cmd_list_element *c;
15682
2060206e
PA
15683 initialize_breakpoint_ops ();
15684
76727919
TT
15685 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15686 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15687 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
84acb35a 15688
c906108c
SS
15689 breakpoint_chain = 0;
15690 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
15691 before a breakpoint is set. */
15692 breakpoint_count = 0;
15693
1042e4c0
SS
15694 tracepoint_count = 0;
15695
1bedd215
AC
15696 add_com ("ignore", class_breakpoint, ignore_command, _("\
15697Set ignore-count of breakpoint number N to COUNT.\n\
15698Usage is `ignore N COUNT'."));
c906108c 15699
8588b356
SM
15700 commands_cmd_element = add_com ("commands", class_breakpoint,
15701 commands_command, _("\
18da0c51
MG
15702Set commands to be executed when the given breakpoints are hit.\n\
15703Give a space-separated breakpoint list as argument after \"commands\".\n\
15704A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15705(e.g. `5-7').\n\
c906108c
SS
15706With no argument, the targeted breakpoint is the last one set.\n\
15707The commands themselves follow starting on the next line.\n\
15708Type a line containing \"end\" to indicate the end of them.\n\
15709Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 15710then no output is printed when it is hit, except what the commands print."));
c906108c 15711
b1d4d8d1
TBA
15712 const auto cc_opts = make_condition_command_options_def_group (nullptr);
15713 static std::string condition_command_help
15714 = gdb::option::build_help (_("\
1bedd215 15715Specify breakpoint number N to break only if COND is true.\n\
b1d4d8d1 15716Usage is `condition [OPTION] N COND', where N is an integer and COND\n\
733d554a 15717is an expression to be evaluated whenever breakpoint N is reached.\n\
b1d4d8d1
TBA
15718\n\
15719Options:\n\
15720%OPTIONS%"), cc_opts);
15721
15722 c = add_com ("condition", class_breakpoint, condition_command,
15723 condition_command_help.c_str ());
15724 set_cmd_completer_handle_brkchars (c, condition_completer);
c906108c 15725
1bedd215 15726 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 15727Set a temporary breakpoint.\n\
c906108c
SS
15728Like \"break\" except the breakpoint is only temporary,\n\
15729so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
15730by using \"enable delete\" on the breakpoint number.\n\
15731\n"
15732BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 15733 set_cmd_completer (c, location_completer);
c94fdfd0 15734
1bedd215 15735 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 15736Set a hardware assisted breakpoint.\n\
c906108c 15737Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
15738some target hardware may not have this support.\n\
15739\n"
15740BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 15741 set_cmd_completer (c, location_completer);
c906108c 15742
1bedd215 15743 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 15744Set a temporary hardware assisted breakpoint.\n\
c906108c 15745Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
15746so it will be deleted when hit.\n\
15747\n"
15748BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 15749 set_cmd_completer (c, location_completer);
c906108c 15750
1bedd215 15751 add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
590042fc
PW
15752Enable all or some breakpoints.\n\
15753Usage: enable [BREAKPOINTNUM]...\n\
c906108c
SS
15754Give breakpoint numbers (separated by spaces) as arguments.\n\
15755With no subcommand, breakpoints are enabled until you command otherwise.\n\
15756This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 15757With a subcommand you can enable temporarily."),
c906108c 15758 &enablelist, "enable ", 1, &cmdlist);
c906108c
SS
15759
15760 add_com_alias ("en", "enable", class_breakpoint, 1);
15761
84951ab5 15762 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
590042fc
PW
15763Enable all or some breakpoints.\n\
15764Usage: enable breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
15765Give breakpoint numbers (separated by spaces) as arguments.\n\
15766This is used to cancel the effect of the \"disable\" command.\n\
89549d7f 15767May be abbreviated to simply \"enable\"."),
c5aa993b 15768 &enablebreaklist, "enable breakpoints ", 1, &enablelist);
c906108c 15769
1a966eab 15770 add_cmd ("once", no_class, enable_once_command, _("\
590042fc
PW
15771Enable some breakpoints for one hit.\n\
15772Usage: enable breakpoints once BREAKPOINTNUM...\n\
1a966eab 15773If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
15774 &enablebreaklist);
15775
1a966eab 15776 add_cmd ("delete", no_class, enable_delete_command, _("\
590042fc
PW
15777Enable some breakpoints and delete when hit.\n\
15778Usage: enable breakpoints delete BREAKPOINTNUM...\n\
1a966eab 15779If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15780 &enablebreaklist);
15781
816338b5 15782 add_cmd ("count", no_class, enable_count_command, _("\
590042fc
PW
15783Enable some breakpoints for COUNT hits.\n\
15784Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n\
816338b5
SS
15785If a breakpoint is hit while enabled in this fashion,\n\
15786the count is decremented; when it reaches zero, the breakpoint is disabled."),
15787 &enablebreaklist);
15788
1a966eab 15789 add_cmd ("delete", no_class, enable_delete_command, _("\
590042fc
PW
15790Enable some breakpoints and delete when hit.\n\
15791Usage: enable delete BREAKPOINTNUM...\n\
1a966eab 15792If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
15793 &enablelist);
15794
1a966eab 15795 add_cmd ("once", no_class, enable_once_command, _("\
590042fc
PW
15796Enable some breakpoints for one hit.\n\
15797Usage: enable once BREAKPOINTNUM...\n\
1a966eab 15798If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
15799 &enablelist);
15800
15801 add_cmd ("count", no_class, enable_count_command, _("\
590042fc
PW
15802Enable some breakpoints for COUNT hits.\n\
15803Usage: enable count COUNT BREAKPOINTNUM...\n\
816338b5
SS
15804If a breakpoint is hit while enabled in this fashion,\n\
15805the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
15806 &enablelist);
15807
1bedd215 15808 add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
590042fc
PW
15809Disable all or some breakpoints.\n\
15810Usage: disable [BREAKPOINTNUM]...\n\
c906108c
SS
15811Arguments are breakpoint numbers with spaces in between.\n\
15812To disable all breakpoints, give no argument.\n\
64b9b334 15813A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
c906108c
SS
15814 &disablelist, "disable ", 1, &cmdlist);
15815 add_com_alias ("dis", "disable", class_breakpoint, 1);
15816 add_com_alias ("disa", "disable", class_breakpoint, 1);
c906108c 15817
57b4f16e 15818 add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
590042fc
PW
15819Disable all or some breakpoints.\n\
15820Usage: disable breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
15821Arguments are breakpoint numbers with spaces in between.\n\
15822To disable all breakpoints, give no argument.\n\
64b9b334 15823A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 15824This command may be abbreviated \"disable\"."),
c906108c
SS
15825 &disablelist);
15826
1bedd215 15827 add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
590042fc
PW
15828Delete all or some breakpoints.\n\
15829Usage: delete [BREAKPOINTNUM]...\n\
c906108c
SS
15830Arguments are breakpoint numbers with spaces in between.\n\
15831To delete all breakpoints, give no argument.\n\
15832\n\
590042fc 15833Also a prefix command for deletion of other GDB objects."),
c906108c
SS
15834 &deletelist, "delete ", 1, &cmdlist);
15835 add_com_alias ("d", "delete", class_breakpoint, 1);
7f198e01 15836 add_com_alias ("del", "delete", class_breakpoint, 1);
c906108c 15837
57b4f16e 15838 add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
590042fc
PW
15839Delete all or some breakpoints or auto-display expressions.\n\
15840Usage: delete breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
15841Arguments are breakpoint numbers with spaces in between.\n\
15842To delete all breakpoints, give no argument.\n\
1a966eab 15843This command may be abbreviated \"delete\"."),
c906108c
SS
15844 &deletelist);
15845
1bedd215 15846 add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
15847Clear breakpoint at specified location.\n\
15848Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
15849\n\
15850With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa 15851is executing in.\n"
89549d7f 15852"\n" LOCATION_HELP_STRING "\n\n\
1bedd215 15853See also the \"delete\" command which clears breakpoints by number."));
a6cc4789 15854 add_com_alias ("cl", "clear", class_breakpoint, 1);
c906108c 15855
1bedd215 15856 c = add_com ("break", class_breakpoint, break_command, _("\
629500fa 15857Set breakpoint at specified location.\n"
31e2b00f 15858BREAK_ARGS_HELP ("break")));
5ba2abeb 15859 set_cmd_completer (c, location_completer);
c94fdfd0 15860
c906108c
SS
15861 add_com_alias ("b", "break", class_run, 1);
15862 add_com_alias ("br", "break", class_run, 1);
15863 add_com_alias ("bre", "break", class_run, 1);
15864 add_com_alias ("brea", "break", class_run, 1);
15865
c906108c
SS
15866 if (dbx_commands)
15867 {
1bedd215
AC
15868 add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15869Break in function/address or break at a line in the current file."),
c5aa993b
JM
15870 &stoplist, "stop ", 1, &cmdlist);
15871 add_cmd ("in", class_breakpoint, stopin_command,
1a966eab 15872 _("Break in function or address."), &stoplist);
c5aa993b 15873 add_cmd ("at", class_breakpoint, stopat_command,
1a966eab 15874 _("Break at a line in the current file."), &stoplist);
11db9430 15875 add_com ("status", class_info, info_breakpoints_command, _("\
1bedd215 15876Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15877The \"Type\" column indicates one of:\n\
15878\tbreakpoint - normal breakpoint\n\
15879\twatchpoint - watchpoint\n\
15880The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15881the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15882breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15883address and file/line number respectively.\n\
15884\n\
15885Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15886are set to the address of the last breakpoint listed unless the command\n\
15887is prefixed with \"server \".\n\n\
c906108c 15888Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15889breakpoint set."));
c906108c
SS
15890 }
15891
11db9430 15892 add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 15893Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
15894The \"Type\" column indicates one of:\n\
15895\tbreakpoint - normal breakpoint\n\
15896\twatchpoint - watchpoint\n\
15897The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15898the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15899breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
15900address and file/line number respectively.\n\
15901\n\
15902Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15903are set to the address of the last breakpoint listed unless the command\n\
15904is prefixed with \"server \".\n\n\
c906108c 15905Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 15906breakpoint set."));
c906108c 15907
6b04bdb7
MS
15908 add_info_alias ("b", "breakpoints", 1);
15909
1a966eab
AC
15910 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15911Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
15912The \"Type\" column indicates one of:\n\
15913\tbreakpoint - normal breakpoint\n\
15914\twatchpoint - watchpoint\n\
15915\tlongjmp - internal breakpoint used to step through longjmp()\n\
15916\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15917\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
15918\tfinish - internal breakpoint used by the \"finish\" command\n\
15919The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
15920the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
15921breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
15922address and file/line number respectively.\n\
15923\n\
15924Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
15925are set to the address of the last breakpoint listed unless the command\n\
15926is prefixed with \"server \".\n\n\
c906108c 15927Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 15928breakpoint set."),
c906108c
SS
15929 &maintenanceinfolist);
15930
3b6acaee 15931 add_basic_prefix_cmd ("catch", class_breakpoint, _("\
44feb3ce 15932Set catchpoints to catch events."),
3b6acaee
TT
15933 &catch_cmdlist, "catch ",
15934 0/*allow-unknown*/, &cmdlist);
44feb3ce 15935
3b6acaee 15936 add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
44feb3ce 15937Set temporary catchpoints to catch events."),
3b6acaee
TT
15938 &tcatch_cmdlist, "tcatch ",
15939 0/*allow-unknown*/, &cmdlist);
44feb3ce 15940
44feb3ce
TT
15941 add_catch_command ("fork", _("Catch calls to fork."),
15942 catch_fork_command_1,
dda83cd7 15943 NULL,
44feb3ce
TT
15944 (void *) (uintptr_t) catch_fork_permanent,
15945 (void *) (uintptr_t) catch_fork_temporary);
15946 add_catch_command ("vfork", _("Catch calls to vfork."),
15947 catch_fork_command_1,
dda83cd7 15948 NULL,
44feb3ce
TT
15949 (void *) (uintptr_t) catch_vfork_permanent,
15950 (void *) (uintptr_t) catch_vfork_temporary);
15951 add_catch_command ("exec", _("Catch calls to exec."),
15952 catch_exec_command_1,
dda83cd7 15953 NULL,
a96d9b2e
SDJ
15954 CATCH_PERMANENT,
15955 CATCH_TEMPORARY);
edcc5120
TT
15956 add_catch_command ("load", _("Catch loads of shared libraries.\n\
15957Usage: catch load [REGEX]\n\
15958If REGEX is given, only stop for libraries matching the regular expression."),
15959 catch_load_command_1,
15960 NULL,
15961 CATCH_PERMANENT,
15962 CATCH_TEMPORARY);
15963 add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15964Usage: catch unload [REGEX]\n\
15965If REGEX is given, only stop for libraries matching the regular expression."),
15966 catch_unload_command_1,
15967 NULL,
15968 CATCH_PERMANENT,
15969 CATCH_TEMPORARY);
c5aa993b 15970
a15a5258
AB
15971 const auto opts = make_watch_options_def_group (nullptr);
15972
15973 static const std::string watch_help = gdb::option::build_help (_("\
15974Set a watchpoint for EXPRESSION.\n\
15975Usage: watch [-location] EXPRESSION\n\
15976\n\
15977Options:\n\
15978%OPTIONS%\n\
15979\n\
c906108c 15980A watchpoint stops execution of your program whenever the value of\n\
a15a5258
AB
15981an expression changes."), opts);
15982 c = add_com ("watch", class_breakpoint, watch_command,
15983 watch_help.c_str ());
15984 set_cmd_completer_handle_brkchars (c, watch_command_completer);
15985
15986 static const std::string rwatch_help = gdb::option::build_help (_("\
15987Set a read watchpoint for EXPRESSION.\n\
15988Usage: rwatch [-location] EXPRESSION\n\
15989\n\
15990Options:\n\
15991%OPTIONS%\n\
15992\n\
15993A read watchpoint stops execution of your program whenever the value of\n\
15994an expression is read."), opts);
15995 c = add_com ("rwatch", class_breakpoint, rwatch_command,
15996 rwatch_help.c_str ());
15997 set_cmd_completer_handle_brkchars (c, watch_command_completer);
15998
15999 static const std::string awatch_help = gdb::option::build_help (_("\
16000Set an access watchpoint for EXPRESSION.\n\
16001Usage: awatch [-location] EXPRESSION\n\
16002\n\
16003Options:\n\
16004%OPTIONS%\n\
16005\n\
16006An access watchpoint stops execution of your program whenever the value\n\
16007of an expression is either read or written."), opts);
16008 c = add_com ("awatch", class_breakpoint, awatch_command,
16009 awatch_help.c_str ());
16010 set_cmd_completer_handle_brkchars (c, watch_command_completer);
c906108c 16011
11db9430 16012 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 16013Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 16014
920d2a44
AC
16015 /* XXX: cagney/2005-02-23: This should be a boolean, and should
16016 respond to changes - contrary to the description. */
85c07804
AC
16017 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16018 &can_use_hw_watchpoints, _("\
16019Set debugger's willingness to use watchpoint hardware."), _("\
16020Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
16021If zero, gdb will not use hardware for new watchpoints, even if\n\
16022such is available. (However, any hardware watchpoints that were\n\
16023created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
16024hardware.)"),
16025 NULL,
920d2a44 16026 show_can_use_hw_watchpoints,
85c07804 16027 &setlist, &showlist);
c906108c
SS
16028
16029 can_use_hw_watchpoints = 1;
fa8d40ab 16030
1042e4c0
SS
16031 /* Tracepoint manipulation commands. */
16032
16033 c = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 16034Set a tracepoint at specified location.\n\
1042e4c0
SS
16035\n"
16036BREAK_ARGS_HELP ("trace") "\n\
16037Do \"help tracepoints\" for info on other tracepoint commands."));
16038 set_cmd_completer (c, location_completer);
16039
57b4f16e
PW
16040 add_com_alias ("tp", "trace", class_breakpoint, 0);
16041 add_com_alias ("tr", "trace", class_breakpoint, 1);
16042 add_com_alias ("tra", "trace", class_breakpoint, 1);
16043 add_com_alias ("trac", "trace", class_breakpoint, 1);
1042e4c0 16044
7a697b8d 16045 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 16046Set a fast tracepoint at specified location.\n\
7a697b8d
SS
16047\n"
16048BREAK_ARGS_HELP ("ftrace") "\n\
16049Do \"help tracepoints\" for info on other tracepoint commands."));
16050 set_cmd_completer (c, location_completer);
16051
0fb4aa4b 16052 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 16053Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
16054\n\
16055strace [LOCATION] [if CONDITION]\n\
629500fa
KS
16056LOCATION may be a linespec, explicit, or address location (described below) \n\
16057or -m MARKER_ID.\n\n\
16058If a marker id is specified, probe the marker with that name. With\n\
16059no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
16060Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16061This collects arbitrary user data passed in the probe point call to the\n\
16062tracing library. You can inspect it when analyzing the trace buffer,\n\
16063by printing the $_sdata variable like any other convenience variable.\n\
16064\n\
16065CONDITION is a boolean expression.\n\
89549d7f 16066\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
16067Multiple tracepoints at one place are permitted, and useful if their\n\
16068conditions are different.\n\
0fb4aa4b
PA
16069\n\
16070Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16071Do \"help tracepoints\" for info on other tracepoint commands."));
16072 set_cmd_completer (c, location_completer);
16073
11db9430 16074 add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 16075Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
16076Convenience variable \"$tpnum\" contains the number of the\n\
16077last tracepoint set."));
16078
16079 add_info_alias ("tp", "tracepoints", 1);
16080
16081 add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16082Delete specified tracepoints.\n\
16083Arguments are tracepoint numbers, separated by spaces.\n\
16084No argument means delete all tracepoints."),
16085 &deletelist);
7e20dfcd 16086 add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
1042e4c0
SS
16087
16088 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16089Disable specified tracepoints.\n\
16090Arguments are tracepoint numbers, separated by spaces.\n\
16091No argument means disable all tracepoints."),
16092 &disablelist);
16093 deprecate_cmd (c, "disable");
16094
16095 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16096Enable specified tracepoints.\n\
16097Arguments are tracepoint numbers, separated by spaces.\n\
16098No argument means enable all tracepoints."),
16099 &enablelist);
16100 deprecate_cmd (c, "enable");
16101
16102 add_com ("passcount", class_trace, trace_pass_command, _("\
16103Set the passcount for a tracepoint.\n\
16104The trace will end when the tracepoint has been passed 'count' times.\n\
16105Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16106if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16107
0743fc83
TT
16108 add_basic_prefix_cmd ("save", class_breakpoint,
16109 _("Save breakpoint definitions as a script."),
16110 &save_cmdlist, "save ",
16111 0/*allow-unknown*/, &cmdlist);
6149aea9
PA
16112
16113 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16114Save current breakpoint definitions as a script.\n\
cce7e648 16115This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
16116catchpoints, tracepoints). Use the 'source' command in another debug\n\
16117session to restore them."),
16118 &save_cmdlist);
16119 set_cmd_completer (c, filename_completer);
16120
16121 c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 16122Save current tracepoint definitions as a script.\n\
6149aea9
PA
16123Use the 'source' command in another debug session to restore them."),
16124 &save_cmdlist);
1042e4c0
SS
16125 set_cmd_completer (c, filename_completer);
16126
6149aea9
PA
16127 c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16128 deprecate_cmd (c, "save tracepoints");
16129
3b6acaee 16130 add_basic_prefix_cmd ("breakpoint", class_maintenance, _("\
590042fc 16131Breakpoint specific settings.\n\
fa8d40ab 16132Configure various breakpoint-specific variables such as\n\
590042fc 16133pending breakpoint behavior."),
3b6acaee
TT
16134 &breakpoint_set_cmdlist, "set breakpoint ",
16135 0/*allow-unknown*/, &setlist);
16136 add_show_prefix_cmd ("breakpoint", class_maintenance, _("\
590042fc 16137Breakpoint specific settings.\n\
fa8d40ab 16138Configure various breakpoint-specific variables such as\n\
590042fc 16139pending breakpoint behavior."),
3b6acaee
TT
16140 &breakpoint_show_cmdlist, "show breakpoint ",
16141 0/*allow-unknown*/, &showlist);
fa8d40ab 16142
7915a72c
AC
16143 add_setshow_auto_boolean_cmd ("pending", no_class,
16144 &pending_break_support, _("\
16145Set debugger's behavior regarding pending breakpoints."), _("\
16146Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
16147If on, an unrecognized breakpoint location will cause gdb to create a\n\
16148pending breakpoint. If off, an unrecognized breakpoint location results in\n\
16149an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 16150user-query to see if a pending breakpoint should be created."),
2c5b56ce 16151 NULL,
920d2a44 16152 show_pending_break_support,
6e1d7d6c
AC
16153 &breakpoint_set_cmdlist,
16154 &breakpoint_show_cmdlist);
fa8d40ab
JJ
16155
16156 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
16157
16158 add_setshow_boolean_cmd ("auto-hw", no_class,
16159 &automatic_hardware_breakpoints, _("\
16160Set automatic usage of hardware breakpoints."), _("\
16161Show automatic usage of hardware breakpoints."), _("\
16162If set, the debugger will automatically use hardware breakpoints for\n\
16163breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
16164a warning will be emitted for such breakpoints."),
16165 NULL,
16166 show_automatic_hardware_breakpoints,
16167 &breakpoint_set_cmdlist,
16168 &breakpoint_show_cmdlist);
74960c60 16169
a25a5a45
PA
16170 add_setshow_boolean_cmd ("always-inserted", class_support,
16171 &always_inserted_mode, _("\
74960c60
VP
16172Set mode for inserting breakpoints."), _("\
16173Show mode for inserting breakpoints."), _("\
a25a5a45
PA
16174When this mode is on, breakpoints are inserted immediately as soon as\n\
16175they're created, kept inserted even when execution stops, and removed\n\
16176only when the user deletes them. When this mode is off (the default),\n\
16177breakpoints are inserted only when execution continues, and removed\n\
16178when execution stops."),
72d0e2c5
YQ
16179 NULL,
16180 &show_always_inserted_mode,
16181 &breakpoint_set_cmdlist,
16182 &breakpoint_show_cmdlist);
f1310107 16183
b775012e
LM
16184 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16185 condition_evaluation_enums,
16186 &condition_evaluation_mode_1, _("\
16187Set mode of breakpoint condition evaluation."), _("\
16188Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 16189When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
16190evaluated on the host's side by GDB. When it is set to \"target\",\n\
16191breakpoint conditions will be downloaded to the target (if the target\n\
16192supports such feature) and conditions will be evaluated on the target's side.\n\
16193If this is set to \"auto\" (default), this will be automatically set to\n\
16194\"target\" if it supports condition evaluation, otherwise it will\n\
7a4e8e7d 16195be set to \"host\"."),
b775012e
LM
16196 &set_condition_evaluation_mode,
16197 &show_condition_evaluation_mode,
16198 &breakpoint_set_cmdlist,
16199 &breakpoint_show_cmdlist);
16200
f1310107
TJB
16201 add_com ("break-range", class_breakpoint, break_range_command, _("\
16202Set a breakpoint for an address range.\n\
16203break-range START-LOCATION, END-LOCATION\n\
16204where START-LOCATION and END-LOCATION can be one of the following:\n\
16205 LINENUM, for that line in the current file,\n\
16206 FILE:LINENUM, for that line in that file,\n\
16207 +OFFSET, for that number of lines after the current line\n\
dda83cd7 16208 or the start of the range\n\
f1310107
TJB
16209 FUNCTION, for the first line in that function,\n\
16210 FILE:FUNCTION, to distinguish among like-named static functions.\n\
16211 *ADDRESS, for the instruction at that address.\n\
16212\n\
16213The breakpoint will stop execution of the inferior whenever it executes\n\
16214an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16215range (including START-LOCATION and END-LOCATION)."));
16216
e7e0cddf 16217 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 16218Set a dynamic printf at specified location.\n\
e7e0cddf 16219dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
16220location may be a linespec, explicit, or address location.\n"
16221"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
16222 set_cmd_completer (c, location_completer);
16223
16224 add_setshow_enum_cmd ("dprintf-style", class_support,
16225 dprintf_style_enums, &dprintf_style, _("\
16226Set the style of usage for dynamic printf."), _("\
16227Show the style of usage for dynamic printf."), _("\
16228This setting chooses how GDB will do a dynamic printf.\n\
16229If the value is \"gdb\", then the printing is done by GDB to its own\n\
16230console, as with the \"printf\" command.\n\
16231If the value is \"call\", the print is done by calling a function in your\n\
16232program; by default printf(), but you can choose a different function or\n\
16233output stream by setting dprintf-function and dprintf-channel."),
16234 update_dprintf_commands, NULL,
16235 &setlist, &showlist);
16236
16237 dprintf_function = xstrdup ("printf");
16238 add_setshow_string_cmd ("dprintf-function", class_support,
16239 &dprintf_function, _("\
590042fc
PW
16240Set the function to use for dynamic printf."), _("\
16241Show the function to use for dynamic printf."), NULL,
e7e0cddf
SS
16242 update_dprintf_commands, NULL,
16243 &setlist, &showlist);
16244
16245 dprintf_channel = xstrdup ("");
16246 add_setshow_string_cmd ("dprintf-channel", class_support,
16247 &dprintf_channel, _("\
590042fc
PW
16248Set the channel to use for dynamic printf."), _("\
16249Show the channel to use for dynamic printf."), NULL,
e7e0cddf
SS
16250 update_dprintf_commands, NULL,
16251 &setlist, &showlist);
16252
d3ce09f5
SS
16253 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16254 &disconnected_dprintf, _("\
16255Set whether dprintf continues after GDB disconnects."), _("\
16256Show whether dprintf continues after GDB disconnects."), _("\
16257Use this to let dprintf commands continue to hit and produce output\n\
16258even if GDB disconnects or detaches from the target."),
16259 NULL,
16260 NULL,
16261 &setlist, &showlist);
16262
16263 add_com ("agent-printf", class_vars, agent_printf_command, _("\
590042fc
PW
16264Target agent only formatted printing, like the C \"printf\" function.\n\
16265Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
16266This supports most C printf format specifications, like %s, %d, etc.\n\
16267This is useful for formatted output in user-defined commands."));
d3ce09f5 16268
491144b5 16269 automatic_hardware_breakpoints = true;
f3b1572e 16270
76727919
TT
16271 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
16272 gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
c906108c 16273}
This page took 3.783106 seconds and 4 git commands to generate.