]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/breakpoint.c
Convert watchpoints to vtable ops
[thirdparty/binutils-gdb.git] / gdb / breakpoint.c
CommitLineData
c906108c 1/* Everything about breakpoints, for GDB.
8926118c 2
4a94e368 3 Copyright (C) 1986-2022 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"
d322d6d6 59#include "gdbsupport/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"
0f8e2034 70#include "cli/cli-decode.h"
d3ce09f5 71
1042e4c0 72/* readline include files */
073bbbb0 73#include "readline/tilde.h"
1042e4c0
SS
74
75/* readline defines this. */
76#undef savestring
77
034dad6f 78#include "mi/mi-common.h"
6dddc817 79#include "extension.h"
325fac50 80#include <algorithm>
5ed8105e 81#include "progspace-and-thread.h"
268a13a5
TT
82#include "gdbsupport/array-view.h"
83#include "gdbsupport/gdb_optional.h"
104c1213 84
4a64f543 85/* Prototypes for local functions. */
c906108c 86
896b6bda 87static void map_breakpoint_numbers (const char *,
48649e1b 88 gdb::function_view<void (breakpoint *)>);
c906108c 89
348d480f
PA
90static void breakpoint_re_set_default (struct breakpoint *);
91
f00aae0f 92static void
626d2320 93 create_sals_from_location_default (struct event_location *location,
f00aae0f
KS
94 struct linespec_result *canonical,
95 enum bptype type_wanted);
983af33b
SDJ
96
97static void create_breakpoints_sal_default (struct gdbarch *,
98 struct linespec_result *,
e1e01040
PA
99 gdb::unique_xmalloc_ptr<char>,
100 gdb::unique_xmalloc_ptr<char>,
101 enum bptype,
983af33b
SDJ
102 enum bpdisp, int, int,
103 int,
104 const struct breakpoint_ops *,
44f238bb 105 int, int, int, unsigned);
983af33b 106
6c5b2ebe 107static std::vector<symtab_and_line> decode_location_default
626d2320 108 (struct breakpoint *b, struct event_location *location,
6c5b2ebe 109 struct program_space *search_pspace);
983af33b 110
a6535de1
TT
111static int can_use_hardware_watchpoint
112 (const std::vector<value_ref_ptr> &vals);
c906108c 113
a14ed312 114static void mention (struct breakpoint *);
c906108c 115
348d480f
PA
116static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
117 enum bptype,
c0a91b2b 118 const struct breakpoint_ops *);
3742cc8b
YQ
119static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
120 const struct symtab_and_line *);
121
4a64f543
MS
122/* This function is used in gdbtk sources and thus can not be made
123 static. */
cd0f67f3
SM
124static struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
125 struct symtab_and_line,
126 enum bptype,
127 const struct breakpoint_ops *);
c906108c 128
06edf0c0
PA
129static struct breakpoint *
130 momentary_breakpoint_from_master (struct breakpoint *orig,
131 enum bptype type,
a1aa2221
LM
132 const struct breakpoint_ops *ops,
133 int loc_enabled);
06edf0c0 134
76897487
KB
135static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
136
a6d9a66e
UW
137static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
138 CORE_ADDR bpaddr,
dda83cd7 139 enum bptype bptype);
76897487 140
6c95b8df
PA
141static void describe_other_breakpoints (struct gdbarch *,
142 struct program_space *, CORE_ADDR,
5af949e3 143 struct obj_section *, int);
c906108c 144
85d721b8
PA
145static int watchpoint_locations_match (struct bp_location *loc1,
146 struct bp_location *loc2);
147
7f32a4d5
PA
148static int breakpoint_locations_match (struct bp_location *loc1,
149 struct bp_location *loc2,
150 bool sw_hw_bps_match = false);
151
f1310107 152static int breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 153 const struct address_space *aspace,
f1310107
TJB
154 CORE_ADDR addr);
155
d35ae833 156static int breakpoint_location_address_range_overlap (struct bp_location *,
accd0bcd 157 const address_space *,
d35ae833
PA
158 CORE_ADDR, int);
159
834c0d03 160static int remove_breakpoint (struct bp_location *);
b2b6a7da 161static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
c906108c 162
313f3b21 163static enum print_stop_action print_bp_stop_message (bpstat *bs);
c906108c 164
a14ed312 165static int hw_breakpoint_used_count (void);
c906108c 166
a1398e0c
PA
167static int hw_watchpoint_use_count (struct breakpoint *);
168
169static int hw_watchpoint_used_count_others (struct breakpoint *except,
170 enum bptype type,
171 int *other_type_used);
c906108c 172
816338b5
SS
173static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
174 int count);
c906108c 175
f431efe5 176static void decref_bp_location (struct bp_location **loc);
fe3f5fa8 177
39d61571 178static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
a5606eee 179
44702360
PA
180/* update_global_location_list's modes of operation wrt to whether to
181 insert locations now. */
182enum ugll_insert_mode
183{
184 /* Don't insert any breakpoint locations into the inferior, only
185 remove already-inserted locations that no longer should be
186 inserted. Functions that delete a breakpoint or breakpoints
187 should specify this mode, so that deleting a breakpoint doesn't
188 have the side effect of inserting the locations of other
189 breakpoints that are marked not-inserted, but should_be_inserted
190 returns true on them.
191
192 This behavior is useful is situations close to tear-down -- e.g.,
193 after an exec, while the target still has execution, but
194 breakpoint shadows of the previous executable image should *NOT*
195 be restored to the new image; or before detaching, where the
196 target still has execution and wants to delete breakpoints from
197 GDB's lists, and all breakpoints had already been removed from
198 the inferior. */
199 UGLL_DONT_INSERT,
200
a25a5a45
PA
201 /* May insert breakpoints iff breakpoints_should_be_inserted_now
202 claims breakpoints should be inserted now. */
04086b45
PA
203 UGLL_MAY_INSERT,
204
a25a5a45
PA
205 /* Insert locations now, irrespective of
206 breakpoints_should_be_inserted_now. E.g., say all threads are
207 stopped right now, and the user did "continue". We need to
208 insert breakpoints _before_ resuming the target, but
209 UGLL_MAY_INSERT wouldn't insert them, because
210 breakpoints_should_be_inserted_now returns false at that point,
211 as no thread is running yet. */
04086b45 212 UGLL_INSERT
44702360
PA
213};
214
215static void update_global_location_list (enum ugll_insert_mode);
a5606eee 216
44702360 217static void update_global_location_list_nothrow (enum ugll_insert_mode);
74960c60 218
74960c60 219static void insert_breakpoint_locations (void);
a5606eee 220
0b39b52e 221static void trace_pass_command (const char *, int);
1042e4c0 222
558a9d82
YQ
223static void set_tracepoint_count (int num);
224
f2478a7e 225static bool is_masked_watchpoint (const struct breakpoint *b);
9c06b0b4 226
983af33b
SDJ
227/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
228 otherwise. */
229
230static int strace_marker_p (struct breakpoint *b);
0fb4aa4b 231
2060206e
PA
232/* The breakpoint_ops structure to be inherited by all breakpoint_ops
233 that are implemented on top of software or hardware breakpoints
234 (user breakpoints, internal and momentary breakpoints, etc.). */
235static struct breakpoint_ops bkpt_base_breakpoint_ops;
236
237/* Internal breakpoints class type. */
06edf0c0 238static struct breakpoint_ops internal_breakpoint_ops;
2060206e
PA
239
240/* Momentary breakpoints class type. */
06edf0c0
PA
241static struct breakpoint_ops momentary_breakpoint_ops;
242
2060206e
PA
243/* The breakpoint_ops structure to be used in regular user created
244 breakpoints. */
245struct breakpoint_ops bkpt_breakpoint_ops;
246
55aa24fb
SDJ
247/* Breakpoints set on probes. */
248static struct breakpoint_ops bkpt_probe_breakpoint_ops;
249
bac7c5cf
GB
250/* Tracepoints set on probes. */
251static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
252
e7e0cddf 253/* Dynamic printf class type. */
c5867ab6 254struct breakpoint_ops dprintf_breakpoint_ops;
e7e0cddf 255
d3ce09f5
SS
256/* The style in which to perform a dynamic printf. This is a user
257 option because different output options have different tradeoffs;
258 if GDB does the printing, there is better error handling if there
259 is a problem with any of the arguments, but using an inferior
260 function lets you have special-purpose printers and sending of
261 output to the same place as compiled-in print functions. */
262
263static const char dprintf_style_gdb[] = "gdb";
264static const char dprintf_style_call[] = "call";
265static const char dprintf_style_agent[] = "agent";
266static const char *const dprintf_style_enums[] = {
267 dprintf_style_gdb,
268 dprintf_style_call,
269 dprintf_style_agent,
270 NULL
271};
272static const char *dprintf_style = dprintf_style_gdb;
273
274/* The function to use for dynamic printf if the preferred style is to
275 call into the inferior. The value is simply a string that is
276 copied into the command, so it can be anything that GDB can
277 evaluate to a callable address, not necessarily a function name. */
278
e0700ba4 279static std::string dprintf_function = "printf";
d3ce09f5
SS
280
281/* The channel to use for dynamic printf if the preferred style is to
282 call into the inferior; if a nonempty string, it will be passed to
283 the call as the first argument, with the format string as the
284 second. As with the dprintf function, this can be anything that
285 GDB knows how to evaluate, so in addition to common choices like
286 "stderr", this could be an app-specific expression like
287 "mystreams[curlogger]". */
288
e0700ba4 289static std::string dprintf_channel;
d3ce09f5
SS
290
291/* True if dprintf commands should continue to operate even if GDB
292 has disconnected. */
491144b5 293static bool disconnected_dprintf = true;
d3ce09f5 294
5cea2a26
PA
295struct command_line *
296breakpoint_commands (struct breakpoint *b)
297{
d1b0a7bf 298 return b->commands ? b->commands.get () : NULL;
5cea2a26 299}
3daf8fe5 300
f3b1572e
PA
301/* Flag indicating that a command has proceeded the inferior past the
302 current breakpoint. */
303
491144b5 304static bool breakpoint_proceeded;
f3b1572e 305
956a9fb9 306const char *
2cec12e5
AR
307bpdisp_text (enum bpdisp disp)
308{
4a64f543
MS
309 /* NOTE: the following values are a part of MI protocol and
310 represent values of 'disp' field returned when inferior stops at
311 a breakpoint. */
bc043ef3 312 static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
cc59ec59 313
2cec12e5
AR
314 return bpdisps[(int) disp];
315}
c906108c 316
4a64f543 317/* Prototypes for exported functions. */
c906108c 318/* If FALSE, gdb will not use hardware support for watchpoints, even
4a64f543 319 if such is available. */
c906108c
SS
320static int can_use_hw_watchpoints;
321
920d2a44
AC
322static void
323show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
324 struct cmd_list_element *c,
325 const char *value)
326{
6cb06a8c
TT
327 gdb_printf (file,
328 _("Debugger's willingness to use "
329 "watchpoint hardware is %s.\n"),
330 value);
920d2a44
AC
331}
332
fa8d40ab
JJ
333/* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
334 If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
4a64f543 335 for unrecognized breakpoint locations.
fa8d40ab
JJ
336 If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized. */
337static enum auto_boolean pending_break_support;
920d2a44
AC
338static void
339show_pending_break_support (struct ui_file *file, int from_tty,
340 struct cmd_list_element *c,
341 const char *value)
342{
6cb06a8c
TT
343 gdb_printf (file,
344 _("Debugger's behavior regarding "
345 "pending breakpoints is %s.\n"),
346 value);
920d2a44 347}
fa8d40ab 348
491144b5 349/* If true, gdb will automatically use hardware breakpoints for breakpoints
4a64f543 350 set with "break" but falling in read-only memory.
491144b5 351 If false, gdb will warn about such breakpoints, but won't automatically
765dc015 352 use hardware breakpoints. */
491144b5 353static bool automatic_hardware_breakpoints;
765dc015
VP
354static void
355show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
356 struct cmd_list_element *c,
357 const char *value)
358{
6cb06a8c
TT
359 gdb_printf (file,
360 _("Automatic usage of hardware breakpoints is %s.\n"),
361 value);
765dc015
VP
362}
363
a25a5a45
PA
364/* If on, GDB keeps breakpoints inserted even if the inferior is
365 stopped, and immediately inserts any new breakpoints as soon as
366 they're created. If off (default), GDB keeps breakpoints off of
367 the target as long as possible. That is, it delays inserting
368 breakpoints until the next resume, and removes them again when the
369 target fully stops. This is a bit safer in case GDB crashes while
370 processing user input. */
491144b5 371static bool always_inserted_mode = false;
72d0e2c5 372
33e5cbd6 373static void
74960c60 374show_always_inserted_mode (struct ui_file *file, int from_tty,
33e5cbd6 375 struct cmd_list_element *c, const char *value)
74960c60 376{
6cb06a8c
TT
377 gdb_printf (file, _("Always inserted breakpoint mode is %s.\n"),
378 value);
74960c60
VP
379}
380
b57bacec
PA
381/* See breakpoint.h. */
382
33e5cbd6 383int
a25a5a45 384breakpoints_should_be_inserted_now (void)
33e5cbd6 385{
a25a5a45
PA
386 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
387 {
388 /* If breakpoints are global, they should be inserted even if no
389 thread under gdb's control is running, or even if there are
390 no threads under GDB's control yet. */
391 return 1;
392 }
5b6d1e4f 393 else
a25a5a45 394 {
a25a5a45
PA
395 if (always_inserted_mode)
396 {
397 /* The user wants breakpoints inserted even if all threads
398 are stopped. */
399 return 1;
400 }
401
5b6d1e4f
PA
402 for (inferior *inf : all_inferiors ())
403 if (inf->has_execution ()
404 && threads_are_executing (inf->process_target ()))
405 return 1;
372316f1
PA
406
407 /* Don't remove breakpoints yet if, even though all threads are
408 stopped, we still have events to process. */
08036331 409 for (thread_info *tp : all_non_exited_threads ())
1edb66d8 410 if (tp->resumed () && tp->has_pending_waitstatus ())
372316f1 411 return 1;
a25a5a45
PA
412 }
413 return 0;
33e5cbd6 414}
765dc015 415
b775012e
LM
416static const char condition_evaluation_both[] = "host or target";
417
418/* Modes for breakpoint condition evaluation. */
419static const char condition_evaluation_auto[] = "auto";
420static const char condition_evaluation_host[] = "host";
421static const char condition_evaluation_target[] = "target";
422static const char *const condition_evaluation_enums[] = {
423 condition_evaluation_auto,
424 condition_evaluation_host,
425 condition_evaluation_target,
426 NULL
427};
428
429/* Global that holds the current mode for breakpoint condition evaluation. */
430static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
431
432/* Global that we use to display information to the user (gets its value from
433 condition_evaluation_mode_1. */
434static const char *condition_evaluation_mode = condition_evaluation_auto;
435
436/* Translate a condition evaluation mode MODE into either "host"
437 or "target". This is used mostly to translate from "auto" to the
438 real setting that is being used. It returns the translated
439 evaluation mode. */
440
441static const char *
442translate_condition_evaluation_mode (const char *mode)
443{
444 if (mode == condition_evaluation_auto)
445 {
446 if (target_supports_evaluation_of_breakpoint_conditions ())
447 return condition_evaluation_target;
448 else
449 return condition_evaluation_host;
450 }
451 else
452 return mode;
453}
454
455/* Discovers what condition_evaluation_auto translates to. */
456
457static const char *
458breakpoint_condition_evaluation_mode (void)
459{
460 return translate_condition_evaluation_mode (condition_evaluation_mode);
461}
462
463/* Return true if GDB should evaluate breakpoint conditions or false
464 otherwise. */
465
466static int
467gdb_evaluates_breakpoint_condition_p (void)
468{
469 const char *mode = breakpoint_condition_evaluation_mode ();
470
471 return (mode == condition_evaluation_host);
472}
473
c906108c
SS
474/* Are we executing breakpoint commands? */
475static int executing_breakpoint_commands;
476
c02f5703
MS
477/* Are overlay event breakpoints enabled? */
478static int overlay_events_enabled;
479
e09342b5 480/* See description in breakpoint.h. */
491144b5 481bool target_exact_watchpoints = false;
e09342b5 482
c906108c 483/* Walk the following statement or block through all breakpoints.
e5dd4106 484 ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
4a64f543 485 current breakpoint. */
c906108c 486
5c44784c
JM
487#define ALL_BREAKPOINTS_SAFE(B,TMP) \
488 for (B = breakpoint_chain; \
489 B ? (TMP=B->next, 1): 0; \
490 B = TMP)
c906108c 491
7cc221ef 492/* Chains of all breakpoints defined. */
c906108c 493
81e6b8eb 494static struct breakpoint *breakpoint_chain;
c906108c 495
240edef6 496/* See breakpoint.h. */
43892fdf 497
240edef6 498breakpoint_range
43892fdf
SM
499all_breakpoints ()
500{
501 return breakpoint_range (breakpoint_chain);
502}
503
240edef6 504/* See breakpoint.h. */
1428b37a 505
240edef6 506breakpoint_safe_range
1428b37a
SM
507all_breakpoints_safe ()
508{
509 return breakpoint_safe_range (all_breakpoints ());
510}
511
f6d17b2b
SM
512/* See breakpoint.h. */
513
514tracepoint_range
515all_tracepoints ()
516{
517 return tracepoint_range (breakpoint_chain);
518}
519
39ef2f62 520/* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS. */
876fa593 521
5d51cd5d 522static std::vector<bp_location *> bp_locations;
876fa593 523
055c879f
SM
524/* See breakpoint.h. */
525
526const std::vector<bp_location *> &
48d7020b
SM
527all_bp_locations ()
528{
529 return bp_locations;
530}
531
e0d9a270
SM
532/* Range to iterate over breakpoint locations at a given address. */
533
534struct bp_locations_at_addr_range
535{
536 using iterator = std::vector<bp_location *>::iterator;
537
538 bp_locations_at_addr_range (CORE_ADDR addr)
539 {
540 struct compare
541 {
542 bool operator() (const bp_location *loc, CORE_ADDR addr_) const
543 { return loc->address < addr_; }
544
545 bool operator() (CORE_ADDR addr_, const bp_location *loc) const
546 { return addr_ < loc->address; }
547 };
548
549 auto it_pair = std::equal_range (bp_locations.begin (), bp_locations.end (),
550 addr, compare ());
551
552 m_begin = it_pair.first;
553 m_end = it_pair.second;
554 }
555
556 iterator begin () const
557 { return m_begin; }
558
559 iterator end () const
560 { return m_end; }
561
562private:
563 iterator m_begin;
564 iterator m_end;
565};
566
567/* Return a range to iterate over all breakpoint locations exactly at address
568 ADDR.
569
570 If it's needed to iterate multiple times on the same range, it's possible
571 to save the range in a local variable and use it multiple times:
572
573 auto range = all_bp_locations_at_addr (addr);
574
575 for (bp_location *loc : range)
576 // use loc
577
578 for (bp_location *loc : range)
579 // use loc
580
581 This saves a bit of time, as it avoids re-doing the binary searches to find
582 the range's boundaries. Just remember not to change the bp_locations vector
583 in the mean time, as it could make the range's iterators stale. */
584
585static bp_locations_at_addr_range
586all_bp_locations_at_addr (CORE_ADDR addr)
587{
588 return bp_locations_at_addr_range (addr);
589}
590
4a64f543 591/* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
f5336ca5 592 ADDRESS for the current elements of BP_LOCATIONS which get a valid
4a64f543 593 result from bp_location_has_shadow. You can use it for roughly
f5336ca5 594 limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
4a64f543 595 an address you need to read. */
876fa593 596
f5336ca5 597static CORE_ADDR bp_locations_placed_address_before_address_max;
876fa593 598
4a64f543
MS
599/* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
600 + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
f5336ca5
PA
601 BP_LOCATIONS which get a valid result from bp_location_has_shadow.
602 You can use it for roughly limiting the subrange of BP_LOCATIONS to
4a64f543 603 scan for shadow bytes for an address you need to read. */
876fa593 604
f5336ca5 605static CORE_ADDR bp_locations_shadow_len_after_address_max;
7cc221ef 606
4a64f543 607/* The locations that no longer correspond to any breakpoint, unlinked
f5336ca5
PA
608 from the bp_locations array, but for which a hit may still be
609 reported by a target. */
1123588c 610static std::vector<bp_location *> moribund_locations;
20874c92 611
c906108c
SS
612/* Number of last breakpoint made. */
613
95a42b64
TT
614static int breakpoint_count;
615
86b17b60
PA
616/* The value of `breakpoint_count' before the last command that
617 created breakpoints. If the last (break-like) command created more
618 than one breakpoint, then the difference between BREAKPOINT_COUNT
619 and PREV_BREAKPOINT_COUNT is more than one. */
620static int prev_breakpoint_count;
c906108c 621
1042e4c0
SS
622/* Number of last tracepoint made. */
623
95a42b64 624static int tracepoint_count;
1042e4c0 625
6149aea9
PA
626static struct cmd_list_element *breakpoint_set_cmdlist;
627static struct cmd_list_element *breakpoint_show_cmdlist;
9291a0cd 628struct cmd_list_element *save_cmdlist;
6149aea9 629
468d015d
JJ
630/* Return whether a breakpoint is an active enabled breakpoint. */
631static int
632breakpoint_enabled (struct breakpoint *b)
633{
0d381245 634 return (b->enable_state == bp_enabled);
468d015d
JJ
635}
636
c906108c
SS
637/* Set breakpoint count to NUM. */
638
95a42b64 639static void
fba45db2 640set_breakpoint_count (int num)
c906108c 641{
86b17b60 642 prev_breakpoint_count = breakpoint_count;
c906108c 643 breakpoint_count = num;
4fa62494 644 set_internalvar_integer (lookup_internalvar ("bpnum"), num);
c906108c
SS
645}
646
86b17b60
PA
647/* Used by `start_rbreak_breakpoints' below, to record the current
648 breakpoint count before "rbreak" creates any breakpoint. */
649static int rbreak_start_breakpoint_count;
650
95a42b64
TT
651/* Called at the start an "rbreak" command to record the first
652 breakpoint made. */
86b17b60 653
c80049d3 654scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
95a42b64 655{
86b17b60 656 rbreak_start_breakpoint_count = breakpoint_count;
95a42b64
TT
657}
658
659/* Called at the end of an "rbreak" command to record the last
660 breakpoint made. */
86b17b60 661
c80049d3 662scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
95a42b64 663{
86b17b60 664 prev_breakpoint_count = rbreak_start_breakpoint_count;
95a42b64
TT
665}
666
4a64f543 667/* Used in run_command to zero the hit count when a new run starts. */
c906108c
SS
668
669void
fba45db2 670clear_breakpoint_hit_counts (void)
c906108c 671{
43892fdf 672 for (breakpoint *b : all_breakpoints ())
c906108c
SS
673 b->hit_count = 0;
674}
675
c906108c 676\f
48cb2d85
VP
677/* Return the breakpoint with the specified number, or NULL
678 if the number does not refer to an existing breakpoint. */
679
680struct breakpoint *
681get_breakpoint (int num)
682{
43892fdf 683 for (breakpoint *b : all_breakpoints ())
48cb2d85
VP
684 if (b->number == num)
685 return b;
686
43892fdf 687 return nullptr;
48cb2d85 688}
5c44784c 689
c906108c 690\f
adc36818 691
b775012e
LM
692/* Mark locations as "conditions have changed" in case the target supports
693 evaluating conditions on its side. */
694
695static void
696mark_breakpoint_modified (struct breakpoint *b)
697{
b775012e
LM
698 /* This is only meaningful if the target is
699 evaluating conditions and if the user has
700 opted for condition evaluation on the target's
701 side. */
702 if (gdb_evaluates_breakpoint_condition_p ()
703 || !target_supports_evaluation_of_breakpoint_conditions ())
704 return;
705
706 if (!is_breakpoint (b))
707 return;
708
40cb8ca5 709 for (bp_location *loc : b->locations ())
b775012e
LM
710 loc->condition_changed = condition_modified;
711}
712
713/* Mark location as "conditions have changed" in case the target supports
714 evaluating conditions on its side. */
715
716static void
717mark_breakpoint_location_modified (struct bp_location *loc)
718{
719 /* This is only meaningful if the target is
720 evaluating conditions and if the user has
721 opted for condition evaluation on the target's
722 side. */
723 if (gdb_evaluates_breakpoint_condition_p ()
724 || !target_supports_evaluation_of_breakpoint_conditions ())
725
726 return;
727
728 if (!is_breakpoint (loc->owner))
729 return;
730
731 loc->condition_changed = condition_modified;
732}
733
734/* Sets the condition-evaluation mode using the static global
735 condition_evaluation_mode. */
736
737static void
eb4c3f4a 738set_condition_evaluation_mode (const char *args, int from_tty,
b775012e
LM
739 struct cmd_list_element *c)
740{
b775012e
LM
741 const char *old_mode, *new_mode;
742
743 if ((condition_evaluation_mode_1 == condition_evaluation_target)
744 && !target_supports_evaluation_of_breakpoint_conditions ())
745 {
746 condition_evaluation_mode_1 = condition_evaluation_mode;
747 warning (_("Target does not support breakpoint condition evaluation.\n"
748 "Using host evaluation mode instead."));
749 return;
750 }
751
752 new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
753 old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
754
abf1152a
JK
755 /* Flip the switch. Flip it even if OLD_MODE == NEW_MODE as one of the
756 settings was "auto". */
757 condition_evaluation_mode = condition_evaluation_mode_1;
758
b775012e
LM
759 /* Only update the mode if the user picked a different one. */
760 if (new_mode != old_mode)
761 {
b775012e
LM
762 /* If the user switched to a different evaluation mode, we
763 need to synch the changes with the target as follows:
764
765 "host" -> "target": Send all (valid) conditions to the target.
766 "target" -> "host": Remove all the conditions from the target.
767 */
768
b775012e
LM
769 if (new_mode == condition_evaluation_target)
770 {
771 /* Mark everything modified and synch conditions with the
772 target. */
48d7020b 773 for (bp_location *loc : all_bp_locations ())
b775012e 774 mark_breakpoint_location_modified (loc);
24b21115 775 }
b775012e
LM
776 else
777 {
778 /* Manually mark non-duplicate locations to synch conditions
779 with the target. We do this to remove all the conditions the
780 target knows about. */
48d7020b 781 for (bp_location *loc : all_bp_locations ())
b775012e
LM
782 if (is_breakpoint (loc->owner) && loc->inserted)
783 loc->needs_update = 1;
784 }
785
786 /* Do the update. */
44702360 787 update_global_location_list (UGLL_MAY_INSERT);
b775012e
LM
788 }
789
790 return;
791}
792
793/* Shows the current mode of breakpoint condition evaluation. Explicitly shows
794 what "auto" is translating to. */
795
796static void
797show_condition_evaluation_mode (struct ui_file *file, int from_tty,
798 struct cmd_list_element *c, const char *value)
799{
800 if (condition_evaluation_mode == condition_evaluation_auto)
6cb06a8c
TT
801 gdb_printf (file,
802 _("Breakpoint condition evaluation "
803 "mode is %s (currently %s).\n"),
804 value,
805 breakpoint_condition_evaluation_mode ());
b775012e 806 else
6cb06a8c
TT
807 gdb_printf (file, _("Breakpoint condition evaluation mode is %s.\n"),
808 value);
b775012e
LM
809}
810
b5fa468f
TBA
811/* Parse COND_STRING in the context of LOC and set as the condition
812 expression of LOC. BP_NUM is the number of LOC's owner, LOC_NUM is
813 the number of LOC within its owner. In case of parsing error, mark
814 LOC as DISABLED_BY_COND. In case of success, unset DISABLED_BY_COND. */
815
816static void
817set_breakpoint_location_condition (const char *cond_string, bp_location *loc,
818 int bp_num, int loc_num)
819{
820 bool has_junk = false;
821 try
822 {
823 expression_up new_exp = parse_exp_1 (&cond_string, loc->address,
824 block_for_pc (loc->address), 0);
825 if (*cond_string != 0)
826 has_junk = true;
827 else
828 {
829 loc->cond = std::move (new_exp);
830 if (loc->disabled_by_cond && loc->enabled)
6cb06a8c
TT
831 gdb_printf (_("Breakpoint %d's condition is now valid at "
832 "location %d, enabling.\n"),
833 bp_num, loc_num);
b5fa468f
TBA
834
835 loc->disabled_by_cond = false;
836 }
837 }
838 catch (const gdb_exception_error &e)
839 {
840 if (loc->enabled)
841 {
842 /* Warn if a user-enabled location is now becoming disabled-by-cond.
843 BP_NUM is 0 if the breakpoint is being defined for the first
844 time using the "break ... if ..." command, and non-zero if
845 already defined. */
846 if (bp_num != 0)
847 warning (_("failed to validate condition at location %d.%d, "
848 "disabling:\n %s"), bp_num, loc_num, e.what ());
849 else
850 warning (_("failed to validate condition at location %d, "
851 "disabling:\n %s"), loc_num, e.what ());
852 }
853
854 loc->disabled_by_cond = true;
855 }
856
857 if (has_junk)
858 error (_("Garbage '%s' follows condition"), cond_string);
859}
860
adc36818 861void
7a26bd4d 862set_breakpoint_condition (struct breakpoint *b, const char *exp,
733d554a 863 int from_tty, bool force)
adc36818 864{
4c55e970 865 if (*exp == 0)
3a5c3e22 866 {
6f781ee3 867 b->cond_string.reset ();
3a5c3e22 868
4c55e970 869 if (is_watchpoint (b))
78319c15 870 static_cast<watchpoint *> (b)->cond_exp.reset ();
4c55e970
TBA
871 else
872 {
b5fa468f 873 int loc_num = 1;
40cb8ca5 874 for (bp_location *loc : b->locations ())
4c55e970
TBA
875 {
876 loc->cond.reset ();
b5fa468f 877 if (loc->disabled_by_cond && loc->enabled)
6cb06a8c
TT
878 gdb_printf (_("Breakpoint %d's condition is now valid at "
879 "location %d, enabling.\n"),
880 b->number, loc_num);
b5fa468f
TBA
881 loc->disabled_by_cond = false;
882 loc_num++;
4c55e970
TBA
883
884 /* No need to free the condition agent expression
885 bytecode (if we have one). We will handle this
886 when we go through update_global_location_list. */
887 }
888 }
1e620590 889
adc36818 890 if (from_tty)
6cb06a8c 891 gdb_printf (_("Breakpoint %d now unconditional.\n"), b->number);
adc36818
PM
892 }
893 else
894 {
adc36818
PM
895 if (is_watchpoint (b))
896 {
699bd4cf 897 innermost_block_tracker tracker;
78319c15 898 const char *arg = exp;
4c55e970 899 expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
78319c15 900 if (*arg != 0)
adc36818 901 error (_("Junk at end of expression"));
78319c15 902 watchpoint *w = static_cast<watchpoint *> (b);
4c55e970 903 w->cond_exp = std::move (new_exp);
699bd4cf 904 w->cond_exp_valid_block = tracker.block ();
adc36818
PM
905 }
906 else
907 {
4c55e970
TBA
908 /* Parse and set condition expressions. We make two passes.
909 In the first, we parse the condition string to see if it
b5fa468f
TBA
910 is valid in at least one location. If so, the condition
911 would be accepted. So we go ahead and set the locations'
912 conditions. In case no valid case is found, we throw
4c55e970
TBA
913 the error and the condition string will be rejected.
914 This two-pass approach is taken to avoid setting the
915 state of locations in case of a reject. */
40cb8ca5 916 for (bp_location *loc : b->locations ())
4c55e970 917 {
b5fa468f
TBA
918 try
919 {
920 const char *arg = exp;
921 parse_exp_1 (&arg, loc->address,
922 block_for_pc (loc->address), 0);
923 if (*arg != 0)
924 error (_("Junk at end of expression"));
925 break;
926 }
927 catch (const gdb_exception_error &e)
928 {
929 /* Condition string is invalid. If this happens to
733d554a
TBA
930 be the last loc, abandon (if not forced) or continue
931 (if forced). */
932 if (loc->next == nullptr && !force)
b5fa468f
TBA
933 throw;
934 }
4c55e970
TBA
935 }
936
b5fa468f 937 /* If we reach here, the condition is valid at some locations. */
dda83cd7 938 int loc_num = 1;
40cb8ca5
SM
939 for (bp_location *loc : b->locations ())
940 {
941 set_breakpoint_location_condition (exp, loc, b->number, loc_num);
942 loc_num++;
943 }
adc36818 944 }
1e620590
TBA
945
946 /* We know that the new condition parsed successfully. The
947 condition string of the breakpoint can be safely updated. */
6f781ee3 948 b->cond_string = make_unique_xstrdup (exp);
1e620590 949 b->condition_not_parsed = 0;
adc36818 950 }
b775012e
LM
951 mark_breakpoint_modified (b);
952
76727919 953 gdb::observers::breakpoint_modified.notify (b);
adc36818
PM
954}
955
79aabb73
TBA
956/* See breakpoint.h. */
957
958void
959set_breakpoint_condition (int bpnum, const char *exp, int from_tty,
960 bool force)
961{
43892fdf 962 for (breakpoint *b : all_breakpoints ())
79aabb73
TBA
963 if (b->number == bpnum)
964 {
965 /* Check if this breakpoint has a "stop" method implemented in an
966 extension language. This method and conditions entered into GDB
967 from the CLI are mutually exclusive. */
968 const struct extension_language_defn *extlang
969 = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
970
971 if (extlang != NULL)
972 {
973 error (_("Only one stop condition allowed. There is currently"
974 " a %s stop condition defined for this breakpoint."),
975 ext_lang_capitalized_name (extlang));
976 }
977 set_breakpoint_condition (b, exp, from_tty, force);
978
979 if (is_breakpoint (b))
980 update_global_location_list (UGLL_MAY_INSERT);
981
982 return;
983 }
984
985 error (_("No breakpoint number %d."), bpnum);
986}
987
b1d4d8d1
TBA
988/* The options for the "condition" command. */
989
990struct condition_command_opts
991{
992 /* For "-force". */
993 bool force_condition = false;
994};
995
996static const gdb::option::option_def condition_command_option_defs[] = {
997
998 gdb::option::flag_option_def<condition_command_opts> {
999 "force",
1000 [] (condition_command_opts *opts) { return &opts->force_condition; },
1001 N_("Set the condition even if it is invalid for all current locations."),
1002 },
1003
1004};
1005
1006/* Create an option_def_group for the "condition" options, with
1007 CC_OPTS as context. */
1008
1009static inline gdb::option::option_def_group
1010make_condition_command_options_def_group (condition_command_opts *cc_opts)
1011{
1012 return {{condition_command_option_defs}, cc_opts};
1013}
1014
d55637df
TT
1015/* Completion for the "condition" command. */
1016
eb3ff9a5 1017static void
6f937416 1018condition_completer (struct cmd_list_element *cmd,
eb3ff9a5 1019 completion_tracker &tracker,
b1d4d8d1 1020 const char *text, const char * /*word*/)
d55637df 1021{
b1d4d8d1
TBA
1022 bool has_no_arguments = (*text == '\0');
1023 condition_command_opts cc_opts;
1024 const auto group = make_condition_command_options_def_group (&cc_opts);
1025 if (gdb::option::complete_options
1026 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
1027 return;
d55637df 1028
f1735a53 1029 text = skip_spaces (text);
b1d4d8d1 1030 const char *space = skip_to_space (text);
d55637df
TT
1031 if (*space == '\0')
1032 {
1033 int len;
d55637df
TT
1034
1035 if (text[0] == '$')
1036 {
b1d4d8d1 1037 tracker.advance_custom_word_point_by (1);
d55637df 1038 /* We don't support completion of history indices. */
eb3ff9a5
PA
1039 if (!isdigit (text[1]))
1040 complete_internalvar (tracker, &text[1]);
1041 return;
d55637df
TT
1042 }
1043
b1d4d8d1
TBA
1044 /* Suggest the "-force" flag if no arguments are given. If
1045 arguments were passed, they either already include the flag,
1046 or we are beyond the point of suggesting it because it's
1047 positionally the first argument. */
1048 if (has_no_arguments)
1049 gdb::option::complete_on_all_options (tracker, group);
1050
d55637df
TT
1051 /* We're completing the breakpoint number. */
1052 len = strlen (text);
1053
43892fdf 1054 for (breakpoint *b : all_breakpoints ())
58ce7251
SDJ
1055 {
1056 char number[50];
1057
1058 xsnprintf (number, sizeof (number), "%d", b->number);
1059
1060 if (strncmp (number, text, len) == 0)
b02f78f9 1061 tracker.add_completion (make_unique_xstrdup (number));
58ce7251 1062 }
d55637df 1063
eb3ff9a5 1064 return;
d55637df
TT
1065 }
1066
b1d4d8d1
TBA
1067 /* We're completing the expression part. Skip the breakpoint num. */
1068 const char *exp_start = skip_spaces (space);
1069 tracker.advance_custom_word_point_by (exp_start - text);
1070 text = exp_start;
1071 const char *word = advance_to_expression_complete_word_point (tracker, text);
eb3ff9a5 1072 expression_completer (cmd, tracker, text, word);
d55637df
TT
1073}
1074
c906108c
SS
1075/* condition N EXP -- set break condition of breakpoint N to EXP. */
1076
1077static void
0b39b52e 1078condition_command (const char *arg, int from_tty)
c906108c 1079{
0b39b52e 1080 const char *p;
52f0bd74 1081 int bnum;
c906108c
SS
1082
1083 if (arg == 0)
e2e0b3e5 1084 error_no_arg (_("breakpoint number"));
c906108c
SS
1085
1086 p = arg;
733d554a
TBA
1087
1088 /* Check if the "-force" flag was passed. */
b1d4d8d1
TBA
1089 condition_command_opts cc_opts;
1090 const auto group = make_condition_command_options_def_group (&cc_opts);
1091 gdb::option::process_options
1092 (&p, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
733d554a 1093
c906108c 1094 bnum = get_number (&p);
5c44784c 1095 if (bnum == 0)
8a3fe4f8 1096 error (_("Bad breakpoint argument: '%s'"), arg);
c906108c 1097
79aabb73 1098 set_breakpoint_condition (bnum, p, from_tty, cc_opts.force_condition);
c906108c
SS
1099}
1100
a7bdde9e
VP
1101/* Check that COMMAND do not contain commands that are suitable
1102 only for tracepoints and not suitable for ordinary breakpoints.
4a64f543
MS
1103 Throw if any such commands is found. */
1104
a7bdde9e
VP
1105static void
1106check_no_tracepoint_commands (struct command_line *commands)
1107{
1108 struct command_line *c;
cc59ec59 1109
a7bdde9e
VP
1110 for (c = commands; c; c = c->next)
1111 {
a7bdde9e 1112 if (c->control_type == while_stepping_control)
3e43a32a
MS
1113 error (_("The 'while-stepping' command can "
1114 "only be used for tracepoints"));
a7bdde9e 1115
12973681
TT
1116 check_no_tracepoint_commands (c->body_list_0.get ());
1117 check_no_tracepoint_commands (c->body_list_1.get ());
a7bdde9e
VP
1118
1119 /* Not that command parsing removes leading whitespace and comment
4a64f543 1120 lines and also empty lines. So, we only need to check for
a7bdde9e
VP
1121 command directly. */
1122 if (strstr (c->line, "collect ") == c->line)
1123 error (_("The 'collect' command can only be used for tracepoints"));
1124
51661e93
VP
1125 if (strstr (c->line, "teval ") == c->line)
1126 error (_("The 'teval' command can only be used for tracepoints"));
a7bdde9e
VP
1127 }
1128}
1129
c1fc2657 1130struct longjmp_breakpoint : public breakpoint
3b0871f4 1131{
c1fc2657 1132 ~longjmp_breakpoint () override;
3b0871f4
SM
1133};
1134
d77f58be
SS
1135/* Encapsulate tests for different types of tracepoints. */
1136
3b0871f4
SM
1137static bool
1138is_tracepoint_type (bptype type)
d9b3f62e
PA
1139{
1140 return (type == bp_tracepoint
1141 || type == bp_fast_tracepoint
1142 || type == bp_static_tracepoint);
1143}
1144
3b0871f4
SM
1145static bool
1146is_longjmp_type (bptype type)
1147{
1148 return type == bp_longjmp || type == bp_exception;
1149}
1150
f2478a7e
SM
1151/* See breakpoint.h. */
1152
1153bool
d77f58be 1154is_tracepoint (const struct breakpoint *b)
a7bdde9e 1155{
d9b3f62e 1156 return is_tracepoint_type (b->type);
a7bdde9e 1157}
d9b3f62e 1158
a5e364af
SM
1159/* Factory function to create an appropriate instance of breakpoint given
1160 TYPE. */
1161
1162static std::unique_ptr<breakpoint>
1163new_breakpoint_from_type (bptype type)
1164{
1165 breakpoint *b;
1166
1167 if (is_tracepoint_type (type))
c1fc2657 1168 b = new tracepoint ();
3b0871f4 1169 else if (is_longjmp_type (type))
c1fc2657 1170 b = new longjmp_breakpoint ();
a5e364af
SM
1171 else
1172 b = new breakpoint ();
1173
1174 return std::unique_ptr<breakpoint> (b);
1175}
1176
e5dd4106 1177/* A helper function that validates that COMMANDS are valid for a
95a42b64
TT
1178 breakpoint. This function will throw an exception if a problem is
1179 found. */
48cb2d85 1180
95a42b64
TT
1181static void
1182validate_commands_for_breakpoint (struct breakpoint *b,
1183 struct command_line *commands)
48cb2d85 1184{
d77f58be 1185 if (is_tracepoint (b))
a7bdde9e 1186 {
c9a6ce02 1187 struct tracepoint *t = (struct tracepoint *) b;
a7bdde9e
VP
1188 struct command_line *c;
1189 struct command_line *while_stepping = 0;
c9a6ce02
PA
1190
1191 /* Reset the while-stepping step count. The previous commands
dda83cd7
SM
1192 might have included a while-stepping action, while the new
1193 ones might not. */
c9a6ce02
PA
1194 t->step_count = 0;
1195
1196 /* We need to verify that each top-level element of commands is
1197 valid for tracepoints, that there's at most one
1198 while-stepping element, and that the while-stepping's body
1199 has valid tracing commands excluding nested while-stepping.
1200 We also need to validate the tracepoint action line in the
1201 context of the tracepoint --- validate_actionline actually
1202 has side effects, like setting the tracepoint's
1203 while-stepping STEP_COUNT, in addition to checking if the
1204 collect/teval actions parse and make sense in the
1205 tracepoint's context. */
a7bdde9e
VP
1206 for (c = commands; c; c = c->next)
1207 {
a7bdde9e
VP
1208 if (c->control_type == while_stepping_control)
1209 {
1210 if (b->type == bp_fast_tracepoint)
3e43a32a
MS
1211 error (_("The 'while-stepping' command "
1212 "cannot be used for fast tracepoint"));
0fb4aa4b 1213 else if (b->type == bp_static_tracepoint)
3e43a32a
MS
1214 error (_("The 'while-stepping' command "
1215 "cannot be used for static tracepoint"));
a7bdde9e
VP
1216
1217 if (while_stepping)
3e43a32a
MS
1218 error (_("The 'while-stepping' command "
1219 "can be used only once"));
a7bdde9e
VP
1220 else
1221 while_stepping = c;
1222 }
c9a6ce02
PA
1223
1224 validate_actionline (c->line, b);
a7bdde9e
VP
1225 }
1226 if (while_stepping)
1227 {
1228 struct command_line *c2;
1229
12973681
TT
1230 gdb_assert (while_stepping->body_list_1 == nullptr);
1231 c2 = while_stepping->body_list_0.get ();
a7bdde9e
VP
1232 for (; c2; c2 = c2->next)
1233 {
a7bdde9e
VP
1234 if (c2->control_type == while_stepping_control)
1235 error (_("The 'while-stepping' command cannot be nested"));
1236 }
1237 }
1238 }
1239 else
1240 {
1241 check_no_tracepoint_commands (commands);
1242 }
95a42b64
TT
1243}
1244
0fb4aa4b
PA
1245/* Return a vector of all the static tracepoints set at ADDR. The
1246 caller is responsible for releasing the vector. */
1247
f51e0e20 1248std::vector<breakpoint *>
0fb4aa4b
PA
1249static_tracepoints_here (CORE_ADDR addr)
1250{
f51e0e20 1251 std::vector<breakpoint *> found;
0fb4aa4b 1252
43892fdf 1253 for (breakpoint *b : all_breakpoints ())
0fb4aa4b
PA
1254 if (b->type == bp_static_tracepoint)
1255 {
40cb8ca5 1256 for (bp_location *loc : b->locations ())
0fb4aa4b 1257 if (loc->address == addr)
f51e0e20 1258 found.push_back (b);
0fb4aa4b
PA
1259 }
1260
1261 return found;
1262}
1263
95a42b64 1264/* Set the command list of B to COMMANDS. If breakpoint is tracepoint,
4a64f543 1265 validate that only allowed commands are included. */
95a42b64
TT
1266
1267void
4a64f543 1268breakpoint_set_commands (struct breakpoint *b,
12973681 1269 counted_command_line &&commands)
95a42b64 1270{
93921405 1271 validate_commands_for_breakpoint (b, commands.get ());
a7bdde9e 1272
d1b0a7bf 1273 b->commands = std::move (commands);
76727919 1274 gdb::observers::breakpoint_modified.notify (b);
48cb2d85
VP
1275}
1276
45a43567
TT
1277/* Set the internal `silent' flag on the breakpoint. Note that this
1278 is not the same as the "silent" that may appear in the breakpoint's
1279 commands. */
1280
1281void
1282breakpoint_set_silent (struct breakpoint *b, int silent)
1283{
1284 int old_silent = b->silent;
1285
1286 b->silent = silent;
1287 if (old_silent != silent)
76727919 1288 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1289}
1290
1291/* Set the thread for this breakpoint. If THREAD is -1, make the
1292 breakpoint work for any thread. */
1293
1294void
1295breakpoint_set_thread (struct breakpoint *b, int thread)
1296{
1297 int old_thread = b->thread;
1298
1299 b->thread = thread;
1300 if (old_thread != thread)
76727919 1301 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1302}
1303
1304/* Set the task for this breakpoint. If TASK is 0, make the
1305 breakpoint work for any task. */
1306
1307void
1308breakpoint_set_task (struct breakpoint *b, int task)
1309{
1310 int old_task = b->task;
1311
1312 b->task = task;
1313 if (old_task != task)
76727919 1314 gdb::observers::breakpoint_modified.notify (b);
45a43567
TT
1315}
1316
95a42b64 1317static void
896b6bda 1318commands_command_1 (const char *arg, int from_tty,
4a64f543 1319 struct command_line *control)
95a42b64 1320{
d1b0a7bf 1321 counted_command_line cmd;
999700cd
PW
1322 /* cmd_read will be true once we have read cmd. Note that cmd might still be
1323 NULL after the call to read_command_lines if the user provides an empty
1324 list of command by just typing "end". */
1325 bool cmd_read = false;
95a42b64 1326
896b6bda
PA
1327 std::string new_arg;
1328
95a42b64
TT
1329 if (arg == NULL || !*arg)
1330 {
da1df1db 1331 /* Argument not explicitly given. Synthesize it. */
86b17b60 1332 if (breakpoint_count - prev_breakpoint_count > 1)
896b6bda
PA
1333 new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1334 breakpoint_count);
95a42b64 1335 else if (breakpoint_count > 0)
896b6bda 1336 new_arg = string_printf ("%d", breakpoint_count);
48649e1b 1337 }
da1df1db
TBA
1338 else
1339 {
1340 /* Create a copy of ARG. This is needed because the "commands"
1341 command may be coming from a script. In that case, the read
1342 line buffer is going to be overwritten in the lambda of
1343 'map_breakpoint_numbers' below when reading the next line
1344 before we are are done parsing the breakpoint numbers. */
1345 new_arg = arg;
1346 }
1347 arg = new_arg.c_str ();
48649e1b
TT
1348
1349 map_breakpoint_numbers
1350 (arg, [&] (breakpoint *b)
1351 {
999700cd 1352 if (!cmd_read)
48649e1b 1353 {
999700cd 1354 gdb_assert (cmd == NULL);
48649e1b 1355 if (control != NULL)
12973681 1356 cmd = control->body_list_0;
48649e1b
TT
1357 else
1358 {
81b1e71c
TT
1359 std::string str
1360 = string_printf (_("Type commands for breakpoint(s) "
1361 "%s, one per line."),
1362 arg);
48649e1b 1363
60b3cef2
TT
1364 auto do_validate = [=] (const char *line)
1365 {
1366 validate_actionline (line, b);
1367 };
1368 gdb::function_view<void (const char *)> validator;
1369 if (is_tracepoint (b))
1370 validator = do_validate;
1371
1372 cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
48649e1b 1373 }
999700cd 1374 cmd_read = true;
48649e1b
TT
1375 }
1376
1377 /* If a breakpoint was on the list more than once, we don't need to
1378 do anything. */
1379 if (b->commands != cmd)
1380 {
d1b0a7bf 1381 validate_commands_for_breakpoint (b, cmd.get ());
48649e1b 1382 b->commands = cmd;
76727919 1383 gdb::observers::breakpoint_modified.notify (b);
48649e1b
TT
1384 }
1385 });
95a42b64
TT
1386}
1387
1388static void
0b39b52e 1389commands_command (const char *arg, int from_tty)
95a42b64
TT
1390{
1391 commands_command_1 (arg, from_tty, NULL);
c906108c 1392}
40c03ae8
EZ
1393
1394/* Like commands_command, but instead of reading the commands from
1395 input stream, takes them from an already parsed command structure.
1396
1397 This is used by cli-script.c to DTRT with breakpoint commands
1398 that are part of if and while bodies. */
1399enum command_control_type
896b6bda 1400commands_from_control_command (const char *arg, struct command_line *cmd)
40c03ae8 1401{
95a42b64
TT
1402 commands_command_1 (arg, 0, cmd);
1403 return simple_control;
40c03ae8 1404}
876fa593
JK
1405
1406/* Return non-zero if BL->TARGET_INFO contains valid information. */
1407
1408static int
1409bp_location_has_shadow (struct bp_location *bl)
1410{
1411 if (bl->loc_type != bp_loc_software_breakpoint)
1412 return 0;
1413 if (!bl->inserted)
1414 return 0;
1415 if (bl->target_info.shadow_len == 0)
e5dd4106 1416 /* BL isn't valid, or doesn't shadow memory. */
876fa593
JK
1417 return 0;
1418 return 1;
1419}
1420
9d497a19
PA
1421/* Update BUF, which is LEN bytes read from the target address
1422 MEMADDR, by replacing a memory breakpoint with its shadowed
1423 contents.
1424
1425 If READBUF is not NULL, this buffer must not overlap with the of
1426 the breakpoint location's shadow_contents buffer. Otherwise, a
1427 failed assertion internal error will be raised. */
1428
1429static void
1430one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1431 const gdb_byte *writebuf_org,
1432 ULONGEST memaddr, LONGEST len,
1433 struct bp_target_info *target_info,
1434 struct gdbarch *gdbarch)
1435{
1436 /* Now do full processing of the found relevant range of elements. */
1437 CORE_ADDR bp_addr = 0;
1438 int bp_size = 0;
1439 int bptoffset = 0;
1440
1441 if (!breakpoint_address_match (target_info->placed_address_space, 0,
1442 current_program_space->aspace, 0))
1443 {
1444 /* The breakpoint is inserted in a different address space. */
1445 return;
1446 }
1447
1448 /* Addresses and length of the part of the breakpoint that
1449 we need to copy. */
1450 bp_addr = target_info->placed_address;
1451 bp_size = target_info->shadow_len;
1452
1453 if (bp_addr + bp_size <= memaddr)
1454 {
1455 /* The breakpoint is entirely before the chunk of memory we are
1456 reading. */
1457 return;
1458 }
1459
1460 if (bp_addr >= memaddr + len)
1461 {
1462 /* The breakpoint is entirely after the chunk of memory we are
1463 reading. */
1464 return;
1465 }
1466
1467 /* Offset within shadow_contents. */
1468 if (bp_addr < memaddr)
1469 {
1470 /* Only copy the second part of the breakpoint. */
1471 bp_size -= memaddr - bp_addr;
1472 bptoffset = memaddr - bp_addr;
1473 bp_addr = memaddr;
1474 }
1475
1476 if (bp_addr + bp_size > memaddr + len)
1477 {
1478 /* Only copy the first part of the breakpoint. */
1479 bp_size -= (bp_addr + bp_size) - (memaddr + len);
1480 }
1481
1482 if (readbuf != NULL)
1483 {
1484 /* Verify that the readbuf buffer does not overlap with the
1485 shadow_contents buffer. */
1486 gdb_assert (target_info->shadow_contents >= readbuf + len
1487 || readbuf >= (target_info->shadow_contents
1488 + target_info->shadow_len));
1489
1490 /* Update the read buffer with this inserted breakpoint's
1491 shadow. */
1492 memcpy (readbuf + bp_addr - memaddr,
1493 target_info->shadow_contents + bptoffset, bp_size);
1494 }
1495 else
1496 {
1497 const unsigned char *bp;
0d5ed153
MR
1498 CORE_ADDR addr = target_info->reqstd_address;
1499 int placed_size;
9d497a19
PA
1500
1501 /* Update the shadow with what we want to write to memory. */
1502 memcpy (target_info->shadow_contents + bptoffset,
1503 writebuf_org + bp_addr - memaddr, bp_size);
1504
1505 /* Determine appropriate breakpoint contents and size for this
1506 address. */
0d5ed153 1507 bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
9d497a19
PA
1508
1509 /* Update the final write buffer with this inserted
1510 breakpoint's INSN. */
1511 memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1512 }
1513}
1514
8defab1a 1515/* Update BUF, which is LEN bytes read from the target address MEMADDR,
876fa593
JK
1516 by replacing any memory breakpoints with their shadowed contents.
1517
35c63cd8
JB
1518 If READBUF is not NULL, this buffer must not overlap with any of
1519 the breakpoint location's shadow_contents buffers. Otherwise,
1520 a failed assertion internal error will be raised.
1521
876fa593 1522 The range of shadowed area by each bp_location is:
f5336ca5
PA
1523 bl->address - bp_locations_placed_address_before_address_max
1524 up to bl->address + bp_locations_shadow_len_after_address_max
876fa593
JK
1525 The range we were requested to resolve shadows for is:
1526 memaddr ... memaddr + len
1527 Thus the safe cutoff boundaries for performance optimization are
35df4500 1528 memaddr + len <= (bl->address
f5336ca5 1529 - bp_locations_placed_address_before_address_max)
876fa593 1530 and:
f5336ca5 1531 bl->address + bp_locations_shadow_len_after_address_max <= memaddr */
c906108c 1532
8defab1a 1533void
f0ba3972
PA
1534breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1535 const gdb_byte *writebuf_org,
1536 ULONGEST memaddr, LONGEST len)
c906108c 1537{
4a64f543
MS
1538 /* Left boundary, right boundary and median element of our binary
1539 search. */
876fa593
JK
1540 unsigned bc_l, bc_r, bc;
1541
4a64f543
MS
1542 /* Find BC_L which is a leftmost element which may affect BUF
1543 content. It is safe to report lower value but a failure to
1544 report higher one. */
876fa593
JK
1545
1546 bc_l = 0;
5d51cd5d 1547 bc_r = bp_locations.size ();
876fa593
JK
1548 while (bc_l + 1 < bc_r)
1549 {
35df4500 1550 struct bp_location *bl;
876fa593
JK
1551
1552 bc = (bc_l + bc_r) / 2;
f5336ca5 1553 bl = bp_locations[bc];
876fa593 1554
4a64f543
MS
1555 /* Check first BL->ADDRESS will not overflow due to the added
1556 constant. Then advance the left boundary only if we are sure
1557 the BC element can in no way affect the BUF content (MEMADDR
1558 to MEMADDR + LEN range).
876fa593 1559
f5336ca5 1560 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
4a64f543
MS
1561 offset so that we cannot miss a breakpoint with its shadow
1562 range tail still reaching MEMADDR. */
c5aa993b 1563
f5336ca5 1564 if ((bl->address + bp_locations_shadow_len_after_address_max
35df4500 1565 >= bl->address)
f5336ca5 1566 && (bl->address + bp_locations_shadow_len_after_address_max
35df4500 1567 <= memaddr))
876fa593
JK
1568 bc_l = bc;
1569 else
1570 bc_r = bc;
1571 }
1572
128070bb
PA
1573 /* Due to the binary search above, we need to make sure we pick the
1574 first location that's at BC_L's address. E.g., if there are
1575 multiple locations at the same address, BC_L may end up pointing
1576 at a duplicate location, and miss the "master"/"inserted"
1577 location. Say, given locations L1, L2 and L3 at addresses A and
1578 B:
1579
1580 L1@A, L2@A, L3@B, ...
1581
1582 BC_L could end up pointing at location L2, while the "master"
1583 location could be L1. Since the `loc->inserted' flag is only set
1584 on "master" locations, we'd forget to restore the shadow of L1
1585 and L2. */
1586 while (bc_l > 0
f5336ca5 1587 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
128070bb
PA
1588 bc_l--;
1589
876fa593
JK
1590 /* Now do full processing of the found relevant range of elements. */
1591
5d51cd5d 1592 for (bc = bc_l; bc < bp_locations.size (); bc++)
01add95b
SM
1593 {
1594 struct bp_location *bl = bp_locations[bc];
876fa593 1595
01add95b
SM
1596 /* bp_location array has BL->OWNER always non-NULL. */
1597 if (bl->owner->type == bp_none)
1598 warning (_("reading through apparently deleted breakpoint #%d?"),
1599 bl->owner->number);
ffce0d52 1600
01add95b
SM
1601 /* Performance optimization: any further element can no longer affect BUF
1602 content. */
876fa593 1603
01add95b
SM
1604 if (bl->address >= bp_locations_placed_address_before_address_max
1605 && (memaddr + len
1606 <= (bl->address
1607 - bp_locations_placed_address_before_address_max)))
1608 break;
876fa593 1609
01add95b
SM
1610 if (!bp_location_has_shadow (bl))
1611 continue;
6c95b8df 1612
01add95b
SM
1613 one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1614 memaddr, len, &bl->target_info, bl->gdbarch);
1615 }
c906108c 1616}
9d497a19 1617
f2478a7e 1618/* See breakpoint.h. */
b775012e 1619
f2478a7e 1620bool
b775012e
LM
1621is_breakpoint (const struct breakpoint *bpt)
1622{
1623 return (bpt->type == bp_breakpoint
e7e0cddf
SS
1624 || bpt->type == bp_hardware_breakpoint
1625 || bpt->type == bp_dprintf);
b775012e
LM
1626}
1627
60e1c644
PA
1628/* Return true if BPT is of any hardware watchpoint kind. */
1629
f2478a7e 1630static bool
d77f58be 1631is_hardware_watchpoint (const struct breakpoint *bpt)
a5606eee
VP
1632{
1633 return (bpt->type == bp_hardware_watchpoint
1634 || bpt->type == bp_read_watchpoint
1635 || bpt->type == bp_access_watchpoint);
1636}
7270d8f2 1637
f2478a7e 1638/* See breakpoint.h. */
60e1c644 1639
f2478a7e 1640bool
d77f58be 1641is_watchpoint (const struct breakpoint *bpt)
60e1c644
PA
1642{
1643 return (is_hardware_watchpoint (bpt)
1644 || bpt->type == bp_watchpoint);
1645}
1646
3a5c3e22
PA
1647/* Returns true if the current thread and its running state are safe
1648 to evaluate or update watchpoint B. Watchpoints on local
1649 expressions need to be evaluated in the context of the thread that
1650 was current when the watchpoint was created, and, that thread needs
1651 to be stopped to be able to select the correct frame context.
1652 Watchpoints on global expressions can be evaluated on any thread,
1653 and in any state. It is presently left to the target allowing
1654 memory accesses when threads are running. */
f6bc2008
PA
1655
1656static int
3a5c3e22 1657watchpoint_in_thread_scope (struct watchpoint *b)
f6bc2008 1658{
c1fc2657 1659 return (b->pspace == current_program_space
d7e15655
TT
1660 && (b->watchpoint_thread == null_ptid
1661 || (inferior_ptid == b->watchpoint_thread
611841bb 1662 && !inferior_thread ()->executing ())));
f6bc2008
PA
1663}
1664
d0fb5eae
JK
1665/* Set watchpoint B to disp_del_at_next_stop, even including its possible
1666 associated bp_watchpoint_scope breakpoint. */
1667
1668static void
3a5c3e22 1669watchpoint_del_at_next_stop (struct watchpoint *w)
d0fb5eae 1670{
c1fc2657 1671 if (w->related_breakpoint != w)
d0fb5eae 1672 {
c1fc2657
SM
1673 gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1674 gdb_assert (w->related_breakpoint->related_breakpoint == w);
1675 w->related_breakpoint->disposition = disp_del_at_next_stop;
1676 w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1677 w->related_breakpoint = w;
d0fb5eae 1678 }
c1fc2657 1679 w->disposition = disp_del_at_next_stop;
d0fb5eae
JK
1680}
1681
bb9d5f81
PP
1682/* Extract a bitfield value from value VAL using the bit parameters contained in
1683 watchpoint W. */
1684
1685static struct value *
1686extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1687{
1688 struct value *bit_val;
1689
1690 if (val == NULL)
1691 return NULL;
1692
1693 bit_val = allocate_value (value_type (val));
1694
1695 unpack_value_bitfield (bit_val,
1696 w->val_bitpos,
1697 w->val_bitsize,
50888e42 1698 value_contents_for_printing (val).data (),
bb9d5f81
PP
1699 value_offset (val),
1700 val);
1701
1702 return bit_val;
1703}
1704
c6d81124
PA
1705/* Allocate a dummy location and add it to B, which must be a software
1706 watchpoint. This is required because even if a software watchpoint
1707 is not watching any memory, bpstat_stop_status requires a location
1708 to be able to report stops. */
1709
1710static void
1711software_watchpoint_add_no_memory_location (struct breakpoint *b,
1712 struct program_space *pspace)
1713{
1714 gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1715
1716 b->loc = allocate_bp_location (b);
1717 b->loc->pspace = pspace;
1718 b->loc->address = -1;
1719 b->loc->length = -1;
1720}
1721
1722/* Returns true if B is a software watchpoint that is not watching any
1723 memory (e.g., "watch $pc"). */
1724
f2478a7e 1725static bool
c6d81124
PA
1726is_no_memory_software_watchpoint (struct breakpoint *b)
1727{
1728 return (b->type == bp_watchpoint
1729 && b->loc != NULL
1730 && b->loc->next == NULL
1731 && b->loc->address == -1
1732 && b->loc->length == -1);
1733}
1734
567e1b4e
JB
1735/* Assuming that B is a watchpoint:
1736 - Reparse watchpoint expression, if REPARSE is non-zero
a5606eee 1737 - Evaluate expression and store the result in B->val
567e1b4e
JB
1738 - Evaluate the condition if there is one, and store the result
1739 in b->loc->cond.
a5606eee
VP
1740 - Update the list of values that must be watched in B->loc.
1741
4a64f543
MS
1742 If the watchpoint disposition is disp_del_at_next_stop, then do
1743 nothing. If this is local watchpoint that is out of scope, delete
1744 it.
1745
1746 Even with `set breakpoint always-inserted on' the watchpoints are
1747 removed + inserted on each stop here. Normal breakpoints must
1748 never be removed because they might be missed by a running thread
1749 when debugging in non-stop mode. On the other hand, hardware
1750 watchpoints (is_hardware_watchpoint; processed here) are specific
1751 to each LWP since they are stored in each LWP's hardware debug
1752 registers. Therefore, such LWP must be stopped first in order to
1753 be able to modify its hardware watchpoints.
1754
1755 Hardware watchpoints must be reset exactly once after being
1756 presented to the user. It cannot be done sooner, because it would
1757 reset the data used to present the watchpoint hit to the user. And
1758 it must not be done later because it could display the same single
1759 watchpoint hit during multiple GDB stops. Note that the latter is
1760 relevant only to the hardware watchpoint types bp_read_watchpoint
1761 and bp_access_watchpoint. False hit by bp_hardware_watchpoint is
1762 not user-visible - its hit is suppressed if the memory content has
1763 not changed.
1764
1765 The following constraints influence the location where we can reset
1766 hardware watchpoints:
1767
1768 * target_stopped_by_watchpoint and target_stopped_data_address are
1769 called several times when GDB stops.
1770
1771 [linux]
1772 * Multiple hardware watchpoints can be hit at the same time,
1773 causing GDB to stop. GDB only presents one hardware watchpoint
1774 hit at a time as the reason for stopping, and all the other hits
1775 are presented later, one after the other, each time the user
1776 requests the execution to be resumed. Execution is not resumed
1777 for the threads still having pending hit event stored in
1778 LWP_INFO->STATUS. While the watchpoint is already removed from
1779 the inferior on the first stop the thread hit event is kept being
1780 reported from its cached value by linux_nat_stopped_data_address
1781 until the real thread resume happens after the watchpoint gets
1782 presented and thus its LWP_INFO->STATUS gets reset.
1783
1784 Therefore the hardware watchpoint hit can get safely reset on the
1785 watchpoint removal from inferior. */
a79d3c27 1786
b40ce68a 1787static void
3a5c3e22 1788update_watchpoint (struct watchpoint *b, int reparse)
7270d8f2 1789{
a5606eee 1790 int within_current_scope;
a5606eee 1791 struct frame_id saved_frame_id;
66076460 1792 int frame_saved;
a5606eee 1793
f6bc2008
PA
1794 /* If this is a local watchpoint, we only want to check if the
1795 watchpoint frame is in scope if the current thread is the thread
1796 that was used to create the watchpoint. */
1797 if (!watchpoint_in_thread_scope (b))
1798 return;
1799
c1fc2657 1800 if (b->disposition == disp_del_at_next_stop)
a5606eee
VP
1801 return;
1802
66076460 1803 frame_saved = 0;
a5606eee
VP
1804
1805 /* Determine if the watchpoint is within scope. */
1806 if (b->exp_valid_block == NULL)
1807 within_current_scope = 1;
1808 else
1809 {
b5db5dfc
UW
1810 struct frame_info *fi = get_current_frame ();
1811 struct gdbarch *frame_arch = get_frame_arch (fi);
1812 CORE_ADDR frame_pc = get_frame_pc (fi);
1813
c9cf6e20
MG
1814 /* If we're at a point where the stack has been destroyed
1815 (e.g. in a function epilogue), unwinding may not work
1816 properly. Do not attempt to recreate locations at this
b5db5dfc 1817 point. See similar comments in watchpoint_check. */
c9cf6e20 1818 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
b5db5dfc 1819 return;
66076460
DJ
1820
1821 /* Save the current frame's ID so we can restore it after
dda83cd7 1822 evaluating the watchpoint expression on its own frame. */
66076460 1823 /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
dda83cd7
SM
1824 took a frame parameter, so that we didn't have to change the
1825 selected frame. */
66076460
DJ
1826 frame_saved = 1;
1827 saved_frame_id = get_frame_id (get_selected_frame (NULL));
1828
a5606eee
VP
1829 fi = frame_find_by_id (b->watchpoint_frame);
1830 within_current_scope = (fi != NULL);
1831 if (within_current_scope)
1832 select_frame (fi);
1833 }
1834
b5db5dfc
UW
1835 /* We don't free locations. They are stored in the bp_location array
1836 and update_global_location_list will eventually delete them and
1837 remove breakpoints if needed. */
c1fc2657 1838 b->loc = NULL;
b5db5dfc 1839
a5606eee
VP
1840 if (within_current_scope && reparse)
1841 {
bbc13ae3 1842 const char *s;
d63d0675 1843
4d01a485 1844 b->exp.reset ();
a4c50be3
TT
1845 s = (b->exp_string_reparse
1846 ? b->exp_string_reparse.get ()
1847 : b->exp_string.get ());
1bb9788d 1848 b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
a5606eee
VP
1849 /* If the meaning of expression itself changed, the old value is
1850 no longer relevant. We don't want to report a watchpoint hit
1851 to the user when the old value and the new value may actually
1852 be completely different objects. */
fa4727a6 1853 b->val = NULL;
4c1d86d9 1854 b->val_valid = false;
60e1c644
PA
1855
1856 /* Note that unlike with breakpoints, the watchpoint's condition
1857 expression is stored in the breakpoint object, not in the
1858 locations (re)created below. */
c1fc2657 1859 if (b->cond_string != NULL)
60e1c644 1860 {
4d01a485 1861 b->cond_exp.reset ();
60e1c644 1862
6f781ee3 1863 s = b->cond_string.get ();
1bb9788d 1864 b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
60e1c644 1865 }
a5606eee 1866 }
a5606eee
VP
1867
1868 /* If we failed to parse the expression, for example because
1869 it refers to a global variable in a not-yet-loaded shared library,
1870 don't try to insert watchpoint. We don't automatically delete
1871 such watchpoint, though, since failure to parse expression
1872 is different from out-of-scope watchpoint. */
55f6301a 1873 if (!target_has_execution ())
2d134ed3
PA
1874 {
1875 /* Without execution, memory can't change. No use to try and
1876 set watchpoint locations. The watchpoint will be reset when
1877 the target gains execution, through breakpoint_re_set. */
e8369a73
AB
1878 if (!can_use_hw_watchpoints)
1879 {
c1fc2657
SM
1880 if (b->ops->works_in_software_mode (b))
1881 b->type = bp_watchpoint;
e8369a73 1882 else
638aa5a1
AB
1883 error (_("Can't set read/access watchpoint when "
1884 "hardware watchpoints are disabled."));
e8369a73 1885 }
2d134ed3
PA
1886 }
1887 else if (within_current_scope && b->exp)
a5606eee 1888 {
a6535de1 1889 std::vector<value_ref_ptr> val_chain;
8d49165d 1890 struct value *v, *result;
2d134ed3 1891 struct program_space *frame_pspace;
a5606eee 1892
1eaebe02 1893 fetch_subexp_value (b->exp.get (), b->exp->op.get (), &v, &result,
413403fc 1894 &val_chain, false);
a5606eee 1895
a5606eee
VP
1896 /* Avoid setting b->val if it's already set. The meaning of
1897 b->val is 'the last value' user saw, and we should update
1898 it only if we reported that last value to user. As it
9c06b0b4
TJB
1899 happens, the code that reports it updates b->val directly.
1900 We don't keep track of the memory value for masked
1901 watchpoints. */
c1fc2657 1902 if (!b->val_valid && !is_masked_watchpoint (b))
fa4727a6 1903 {
bb9d5f81 1904 if (b->val_bitsize != 0)
850645cf
TT
1905 v = extract_bitfield_from_watchpoint_value (b, v);
1906 b->val = release_value (v);
4c1d86d9 1907 b->val_valid = true;
fa4727a6 1908 }
a5606eee 1909
2d134ed3
PA
1910 frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1911
a5606eee 1912 /* Look at each value on the value chain. */
a6535de1
TT
1913 gdb_assert (!val_chain.empty ());
1914 for (const value_ref_ptr &iter : val_chain)
a5606eee 1915 {
a6535de1
TT
1916 v = iter.get ();
1917
a5606eee
VP
1918 /* If it's a memory location, and GDB actually needed
1919 its contents to evaluate the expression, then we
fa4727a6
DJ
1920 must watch it. If the first value returned is
1921 still lazy, that means an error occurred reading it;
1922 watch it anyway in case it becomes readable. */
a5606eee 1923 if (VALUE_LVAL (v) == lval_memory
a6535de1 1924 && (v == val_chain[0] || ! value_lazy (v)))
a5606eee
VP
1925 {
1926 struct type *vtype = check_typedef (value_type (v));
7270d8f2 1927
a5606eee
VP
1928 /* We only watch structs and arrays if user asked
1929 for it explicitly, never if they just happen to
1930 appear in the middle of some value chain. */
fa4727a6 1931 if (v == result
78134374
SM
1932 || (vtype->code () != TYPE_CODE_STRUCT
1933 && vtype->code () != TYPE_CODE_ARRAY))
a5606eee
VP
1934 {
1935 CORE_ADDR addr;
f486487f 1936 enum target_hw_bp_type type;
a5606eee 1937 struct bp_location *loc, **tmp;
bb9d5f81
PP
1938 int bitpos = 0, bitsize = 0;
1939
1940 if (value_bitsize (v) != 0)
1941 {
1942 /* Extract the bit parameters out from the bitfield
1943 sub-expression. */
1944 bitpos = value_bitpos (v);
1945 bitsize = value_bitsize (v);
1946 }
1947 else if (v == result && b->val_bitsize != 0)
1948 {
1949 /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1950 lvalue whose bit parameters are saved in the fields
1951 VAL_BITPOS and VAL_BITSIZE. */
1952 bitpos = b->val_bitpos;
1953 bitsize = b->val_bitsize;
1954 }
a5606eee 1955
42ae5230 1956 addr = value_address (v);
bb9d5f81
PP
1957 if (bitsize != 0)
1958 {
1959 /* Skip the bytes that don't contain the bitfield. */
1960 addr += bitpos / 8;
1961 }
1962
a5606eee 1963 type = hw_write;
c1fc2657 1964 if (b->type == bp_read_watchpoint)
a5606eee 1965 type = hw_read;
c1fc2657 1966 else if (b->type == bp_access_watchpoint)
a5606eee 1967 type = hw_access;
3a5c3e22 1968
c1fc2657
SM
1969 loc = allocate_bp_location (b);
1970 for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
a5606eee
VP
1971 ;
1972 *tmp = loc;
8ee511af 1973 loc->gdbarch = value_type (v)->arch ();
6c95b8df
PA
1974
1975 loc->pspace = frame_pspace;
f17d9474 1976 loc->address = address_significant (loc->gdbarch, addr);
bb9d5f81
PP
1977
1978 if (bitsize != 0)
1979 {
1980 /* Just cover the bytes that make up the bitfield. */
1981 loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1982 }
1983 else
1984 loc->length = TYPE_LENGTH (value_type (v));
1985
a5606eee
VP
1986 loc->watchpoint_type = type;
1987 }
1988 }
9fa40276
TJB
1989 }
1990
1991 /* Change the type of breakpoint between hardware assisted or
1992 an ordinary watchpoint depending on the hardware support
1993 and free hardware slots. REPARSE is set when the inferior
1994 is started. */
a9634178 1995 if (reparse)
9fa40276 1996 {
e09342b5 1997 int reg_cnt;
9fa40276 1998 enum bp_loc_type loc_type;
a5606eee 1999
a9634178 2000 reg_cnt = can_use_hardware_watchpoint (val_chain);
e09342b5
TJB
2001
2002 if (reg_cnt)
9fa40276
TJB
2003 {
2004 int i, target_resources_ok, other_type_used;
a1398e0c 2005 enum bptype type;
9fa40276 2006
a9634178
TJB
2007 /* Use an exact watchpoint when there's only one memory region to be
2008 watched, and only one debug register is needed to watch it. */
2009 b->exact = target_exact_watchpoints && reg_cnt == 1;
2010
9fa40276 2011 /* We need to determine how many resources are already
e09342b5
TJB
2012 used for all other hardware watchpoints plus this one
2013 to see if we still have enough resources to also fit
a1398e0c
PA
2014 this watchpoint in as well. */
2015
2016 /* If this is a software watchpoint, we try to turn it
2017 to a hardware one -- count resources as if B was of
2018 hardware watchpoint type. */
c1fc2657 2019 type = b->type;
a1398e0c
PA
2020 if (type == bp_watchpoint)
2021 type = bp_hardware_watchpoint;
2022
2023 /* This watchpoint may or may not have been placed on
2024 the list yet at this point (it won't be in the list
2025 if we're trying to create it for the first time,
2026 through watch_command), so always account for it
2027 manually. */
2028
2029 /* Count resources used by all watchpoints except B. */
c1fc2657 2030 i = hw_watchpoint_used_count_others (b, type, &other_type_used);
a1398e0c
PA
2031
2032 /* Add in the resources needed for B. */
c1fc2657 2033 i += hw_watchpoint_use_count (b);
a1398e0c
PA
2034
2035 target_resources_ok
2036 = target_can_use_hardware_watchpoint (type, i, other_type_used);
e09342b5 2037 if (target_resources_ok <= 0)
a9634178 2038 {
c1fc2657 2039 int sw_mode = b->ops->works_in_software_mode (b);
9c06b0b4
TJB
2040
2041 if (target_resources_ok == 0 && !sw_mode)
a9634178
TJB
2042 error (_("Target does not support this type of "
2043 "hardware watchpoint."));
9c06b0b4
TJB
2044 else if (target_resources_ok < 0 && !sw_mode)
2045 error (_("There are not enough available hardware "
2046 "resources for this watchpoint."));
a1398e0c
PA
2047
2048 /* Downgrade to software watchpoint. */
c1fc2657 2049 b->type = bp_watchpoint;
a1398e0c
PA
2050 }
2051 else
2052 {
2053 /* If this was a software watchpoint, we've just
2054 found we have enough resources to turn it to a
2055 hardware watchpoint. Otherwise, this is a
2056 nop. */
c1fc2657 2057 b->type = type;
a9634178 2058 }
9fa40276 2059 }
c1fc2657 2060 else if (!b->ops->works_in_software_mode (b))
638aa5a1
AB
2061 {
2062 if (!can_use_hw_watchpoints)
2063 error (_("Can't set read/access watchpoint when "
2064 "hardware watchpoints are disabled."));
2065 else
2066 error (_("Expression cannot be implemented with "
2067 "read/access watchpoint."));
2068 }
9fa40276 2069 else
c1fc2657 2070 b->type = bp_watchpoint;
9fa40276 2071
c1fc2657 2072 loc_type = (b->type == bp_watchpoint? bp_loc_other
9fa40276 2073 : bp_loc_hardware_watchpoint);
40cb8ca5 2074 for (bp_location *bl : b->locations ())
9fa40276
TJB
2075 bl->loc_type = loc_type;
2076 }
2077
c7437ca6
PA
2078 /* If a software watchpoint is not watching any memory, then the
2079 above left it without any location set up. But,
2080 bpstat_stop_status requires a location to be able to report
2081 stops, so make sure there's at least a dummy one. */
c1fc2657
SM
2082 if (b->type == bp_watchpoint && b->loc == NULL)
2083 software_watchpoint_add_no_memory_location (b, frame_pspace);
a5606eee
VP
2084 }
2085 else if (!within_current_scope)
7270d8f2 2086 {
6cb06a8c 2087 gdb_printf (_("\
ac74f770
MS
2088Watchpoint %d deleted because the program has left the block\n\
2089in which its expression is valid.\n"),
6cb06a8c 2090 b->number);
d0fb5eae 2091 watchpoint_del_at_next_stop (b);
7270d8f2 2092 }
a5606eee
VP
2093
2094 /* Restore the selected frame. */
66076460
DJ
2095 if (frame_saved)
2096 select_frame (frame_find_by_id (saved_frame_id));
7270d8f2
OF
2097}
2098
a5606eee 2099
74960c60 2100/* Returns 1 iff breakpoint location should be
1e4d1764
YQ
2101 inserted in the inferior. We don't differentiate the type of BL's owner
2102 (breakpoint vs. tracepoint), although insert_location in tracepoint's
2103 breakpoint_ops is not defined, because in insert_bp_location,
2104 tracepoint's insert_location will not be called. */
74960c60 2105static int
35df4500 2106should_be_inserted (struct bp_location *bl)
74960c60 2107{
35df4500 2108 if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
74960c60
VP
2109 return 0;
2110
35df4500 2111 if (bl->owner->disposition == disp_del_at_next_stop)
74960c60
VP
2112 return 0;
2113
b5fa468f
TBA
2114 if (!bl->enabled || bl->disabled_by_cond
2115 || bl->shlib_disabled || bl->duplicate)
74960c60
VP
2116 return 0;
2117
f8eba3c6
TT
2118 if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2119 return 0;
2120
56710373
PA
2121 /* This is set for example, when we're attached to the parent of a
2122 vfork, and have detached from the child. The child is running
2123 free, and we expect it to do an exec or exit, at which point the
2124 OS makes the parent schedulable again (and the target reports
2125 that the vfork is done). Until the child is done with the shared
2126 memory region, do not insert breakpoints in the parent, otherwise
2127 the child could still trip on the parent's breakpoints. Since
2128 the parent is blocked anyway, it won't miss any breakpoint. */
35df4500 2129 if (bl->pspace->breakpoints_not_allowed)
56710373
PA
2130 return 0;
2131
31e77af2 2132 /* Don't insert a breakpoint if we're trying to step past its
21edc42f
YQ
2133 location, except if the breakpoint is a single-step breakpoint,
2134 and the breakpoint's thread is the thread which is stepping past
2135 a breakpoint. */
31e77af2
PA
2136 if ((bl->loc_type == bp_loc_software_breakpoint
2137 || bl->loc_type == bp_loc_hardware_breakpoint)
2138 && stepping_past_instruction_at (bl->pspace->aspace,
21edc42f
YQ
2139 bl->address)
2140 /* The single-step breakpoint may be inserted at the location
2141 we're trying to step if the instruction branches to itself.
2142 However, the instruction won't be executed at all and it may
2143 break the semantics of the instruction, for example, the
2144 instruction is a conditional branch or updates some flags.
2145 We can't fix it unless GDB is able to emulate the instruction
2146 or switch to displaced stepping. */
2147 && !(bl->owner->type == bp_single_step
2148 && thread_is_stepping_over_breakpoint (bl->owner->thread)))
e558d7c1 2149 {
1eb8556f
SM
2150 infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
2151 paddress (bl->gdbarch, bl->address));
e558d7c1
PA
2152 return 0;
2153 }
31e77af2 2154
963f9c80
PA
2155 /* Don't insert watchpoints if we're trying to step past the
2156 instruction that triggered one. */
2157 if ((bl->loc_type == bp_loc_hardware_watchpoint)
2158 && stepping_past_nonsteppable_watchpoint ())
2159 {
1eb8556f 2160 infrun_debug_printf ("stepping past non-steppable watchpoint. "
ae1f4d2d 2161 "skipping watchpoint at %s:%d",
1eb8556f 2162 paddress (bl->gdbarch, bl->address), bl->length);
963f9c80
PA
2163 return 0;
2164 }
2165
74960c60
VP
2166 return 1;
2167}
2168
934709f0
PW
2169/* Same as should_be_inserted but does the check assuming
2170 that the location is not duplicated. */
2171
2172static int
2173unduplicated_should_be_inserted (struct bp_location *bl)
2174{
2175 int result;
2176 const int save_duplicate = bl->duplicate;
2177
2178 bl->duplicate = 0;
2179 result = should_be_inserted (bl);
2180 bl->duplicate = save_duplicate;
2181 return result;
2182}
2183
b775012e
LM
2184/* Parses a conditional described by an expression COND into an
2185 agent expression bytecode suitable for evaluation
2186 by the bytecode interpreter. Return NULL if there was
2187 any error during parsing. */
2188
833177a4 2189static agent_expr_up
b775012e
LM
2190parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2191{
833177a4 2192 if (cond == NULL)
b775012e
LM
2193 return NULL;
2194
833177a4
PA
2195 agent_expr_up aexpr;
2196
b775012e
LM
2197 /* We don't want to stop processing, so catch any errors
2198 that may show up. */
a70b8144 2199 try
b775012e 2200 {
036e657b 2201 aexpr = gen_eval_for_expr (scope, cond);
b775012e
LM
2202 }
2203
230d2906 2204 catch (const gdb_exception_error &ex)
b775012e
LM
2205 {
2206 /* If we got here, it means the condition could not be parsed to a valid
2207 bytecode expression and thus can't be evaluated on the target's side.
2208 It's no use iterating through the conditions. */
b775012e
LM
2209 }
2210
2211 /* We have a valid agent expression. */
2212 return aexpr;
2213}
2214
2215/* Based on location BL, create a list of breakpoint conditions to be
2216 passed on to the target. If we have duplicated locations with different
2217 conditions, we will add such conditions to the list. The idea is that the
2218 target will evaluate the list of conditions and will only notify GDB when
2219 one of them is true. */
2220
2221static void
2222build_target_condition_list (struct bp_location *bl)
2223{
b775012e
LM
2224 int null_condition_or_parse_error = 0;
2225 int modified = bl->needs_update;
b775012e 2226
8b4f3082 2227 /* Release conditions left over from a previous insert. */
3cde5c42 2228 bl->target_info.conditions.clear ();
8b4f3082 2229
b775012e
LM
2230 /* This is only meaningful if the target is
2231 evaluating conditions and if the user has
2232 opted for condition evaluation on the target's
2233 side. */
2234 if (gdb_evaluates_breakpoint_condition_p ()
2235 || !target_supports_evaluation_of_breakpoint_conditions ())
2236 return;
2237
e0d9a270
SM
2238 auto loc_range = all_bp_locations_at_addr (bl->address);
2239
b775012e 2240 /* Do a first pass to check for locations with no assigned
7f32a4d5
PA
2241 conditions or conditions that fail to parse to a valid agent
2242 expression bytecode. If any of these happen, then it's no use to
2243 send conditions to the target since this location will always
2244 trigger and generate a response back to GDB. Note we consider
2245 all locations at the same address irrespective of type, i.e.,
2246 even if the locations aren't considered duplicates (e.g.,
2247 software breakpoint and hardware breakpoint at the same
2248 address). */
e0d9a270 2249 for (bp_location *loc : loc_range)
b775012e 2250 {
b775012e
LM
2251 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2252 {
2253 if (modified)
2254 {
b775012e
LM
2255 /* Re-parse the conditions since something changed. In that
2256 case we already freed the condition bytecodes (see
2257 force_breakpoint_reinsertion). We just
2258 need to parse the condition to bytecodes again. */
833177a4
PA
2259 loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2260 loc->cond.get ());
b775012e
LM
2261 }
2262
2263 /* If we have a NULL bytecode expression, it means something
2264 went wrong or we have a null condition expression. */
2265 if (!loc->cond_bytecode)
2266 {
2267 null_condition_or_parse_error = 1;
2268 break;
2269 }
2270 }
2271 }
2272
2273 /* If any of these happened, it means we will have to evaluate the conditions
2274 for the location's address on gdb's side. It is no use keeping bytecodes
2275 for all the other duplicate locations, thus we free all of them here.
2276
2277 This is so we have a finer control over which locations' conditions are
2278 being evaluated by GDB or the remote stub. */
2279 if (null_condition_or_parse_error)
2280 {
e0d9a270 2281 for (bp_location *loc : loc_range)
b775012e 2282 {
b775012e
LM
2283 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2284 {
2285 /* Only go as far as the first NULL bytecode is
2286 located. */
2287 if (!loc->cond_bytecode)
2288 return;
2289
833177a4 2290 loc->cond_bytecode.reset ();
b775012e
LM
2291 }
2292 }
2293 }
2294
7f32a4d5
PA
2295 /* No NULL conditions or failed bytecode generation. Build a
2296 condition list for this location's address. If we have software
2297 and hardware locations at the same address, they aren't
2298 considered duplicates, but we still marge all the conditions
2299 anyway, as it's simpler, and doesn't really make a practical
2300 difference. */
e0d9a270
SM
2301 for (bp_location *loc : loc_range)
2302 if (loc->cond
2303 && is_breakpoint (loc->owner)
2304 && loc->pspace->num == bl->pspace->num
2305 && loc->owner->enable_state == bp_enabled
2306 && loc->enabled
2307 && !loc->disabled_by_cond)
2308 {
2309 /* Add the condition to the vector. This will be used later
2310 to send the conditions to the target. */
2311 bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2312 }
b775012e
LM
2313
2314 return;
2315}
2316
d3ce09f5
SS
2317/* Parses a command described by string CMD into an agent expression
2318 bytecode suitable for evaluation by the bytecode interpreter.
2319 Return NULL if there was any error during parsing. */
2320
833177a4 2321static agent_expr_up
d3ce09f5
SS
2322parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2323{
bbc13ae3
KS
2324 const char *cmdrest;
2325 const char *format_start, *format_end;
d3ce09f5
SS
2326 struct gdbarch *gdbarch = get_current_arch ();
2327
833177a4 2328 if (cmd == NULL)
d3ce09f5
SS
2329 return NULL;
2330
2331 cmdrest = cmd;
2332
2333 if (*cmdrest == ',')
2334 ++cmdrest;
f1735a53 2335 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2336
2337 if (*cmdrest++ != '"')
2338 error (_("No format string following the location"));
2339
2340 format_start = cmdrest;
2341
8e481c3b 2342 format_pieces fpieces (&cmdrest);
d3ce09f5
SS
2343
2344 format_end = cmdrest;
2345
2346 if (*cmdrest++ != '"')
2347 error (_("Bad format string, non-terminated '\"'."));
2348
f1735a53 2349 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2350
2351 if (!(*cmdrest == ',' || *cmdrest == '\0'))
2352 error (_("Invalid argument syntax"));
2353
2354 if (*cmdrest == ',')
2355 cmdrest++;
f1735a53 2356 cmdrest = skip_spaces (cmdrest);
d3ce09f5
SS
2357
2358 /* For each argument, make an expression. */
2359
8e481c3b 2360 std::vector<struct expression *> argvec;
d3ce09f5
SS
2361 while (*cmdrest != '\0')
2362 {
bbc13ae3 2363 const char *cmd1;
d3ce09f5
SS
2364
2365 cmd1 = cmdrest;
4d01a485 2366 expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
8e481c3b 2367 argvec.push_back (expr.release ());
d3ce09f5
SS
2368 cmdrest = cmd1;
2369 if (*cmdrest == ',')
2370 ++cmdrest;
2371 }
2372
833177a4
PA
2373 agent_expr_up aexpr;
2374
d3ce09f5
SS
2375 /* We don't want to stop processing, so catch any errors
2376 that may show up. */
a70b8144 2377 try
d3ce09f5 2378 {
036e657b
JB
2379 aexpr = gen_printf (scope, gdbarch, 0, 0,
2380 format_start, format_end - format_start,
8e481c3b 2381 argvec.size (), argvec.data ());
d3ce09f5 2382 }
230d2906 2383 catch (const gdb_exception_error &ex)
d3ce09f5
SS
2384 {
2385 /* If we got here, it means the command could not be parsed to a valid
2386 bytecode expression and thus can't be evaluated on the target's side.
2387 It's no use iterating through the other commands. */
d3ce09f5 2388 }
492d29ea 2389
d3ce09f5
SS
2390 /* We have a valid agent expression, return it. */
2391 return aexpr;
2392}
2393
2394/* Based on location BL, create a list of breakpoint commands to be
2395 passed on to the target. If we have duplicated locations with
2396 different commands, we will add any such to the list. */
2397
2398static void
2399build_target_command_list (struct bp_location *bl)
2400{
d3ce09f5
SS
2401 int null_command_or_parse_error = 0;
2402 int modified = bl->needs_update;
d3ce09f5 2403
3cde5c42
PA
2404 /* Clear commands left over from a previous insert. */
2405 bl->target_info.tcommands.clear ();
8b4f3082 2406
41fac0cf 2407 if (!target_can_run_breakpoint_commands ())
d3ce09f5
SS
2408 return;
2409
41fac0cf
PA
2410 /* For now, limit to agent-style dprintf breakpoints. */
2411 if (dprintf_style != dprintf_style_agent)
d3ce09f5
SS
2412 return;
2413
e0d9a270
SM
2414 auto loc_range = all_bp_locations_at_addr (bl->address);
2415
7f32a4d5
PA
2416 /* For now, if we have any location at the same address that isn't a
2417 dprintf, don't install the target-side commands, as that would
2418 make the breakpoint not be reported to the core, and we'd lose
41fac0cf 2419 control. */
e0d9a270
SM
2420 for (bp_location *loc : loc_range)
2421 if (is_breakpoint (loc->owner)
2422 && loc->pspace->num == bl->pspace->num
2423 && loc->owner->type != bp_dprintf)
2424 return;
41fac0cf 2425
d3ce09f5
SS
2426 /* Do a first pass to check for locations with no assigned
2427 conditions or conditions that fail to parse to a valid agent expression
2428 bytecode. If any of these happen, then it's no use to send conditions
2429 to the target since this location will always trigger and generate a
2430 response back to GDB. */
e0d9a270 2431 for (bp_location *loc : loc_range)
d3ce09f5 2432 {
d3ce09f5
SS
2433 if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2434 {
2435 if (modified)
2436 {
d3ce09f5
SS
2437 /* Re-parse the commands since something changed. In that
2438 case we already freed the command bytecodes (see
2439 force_breakpoint_reinsertion). We just
2440 need to parse the command to bytecodes again. */
833177a4
PA
2441 loc->cmd_bytecode
2442 = parse_cmd_to_aexpr (bl->address,
6f781ee3 2443 loc->owner->extra_string.get ());
d3ce09f5
SS
2444 }
2445
2446 /* If we have a NULL bytecode expression, it means something
2447 went wrong or we have a null command expression. */
2448 if (!loc->cmd_bytecode)
2449 {
2450 null_command_or_parse_error = 1;
2451 break;
2452 }
2453 }
2454 }
2455
2456 /* If anything failed, then we're not doing target-side commands,
2457 and so clean up. */
2458 if (null_command_or_parse_error)
2459 {
e0d9a270
SM
2460 for (bp_location *loc : loc_range)
2461 if (is_breakpoint (loc->owner)
2462 && loc->pspace->num == bl->pspace->num)
2463 {
2464 /* Only go as far as the first NULL bytecode is
2465 located. */
2466 if (loc->cmd_bytecode == NULL)
2467 return;
d3ce09f5 2468
e0d9a270
SM
2469 loc->cmd_bytecode.reset ();
2470 }
d3ce09f5
SS
2471 }
2472
7f32a4d5
PA
2473 /* No NULL commands or failed bytecode generation. Build a command
2474 list for all duplicate locations at this location's address.
2475 Note that here we must care for whether the breakpoint location
2476 types are considered duplicates, otherwise, say, if we have a
2477 software and hardware location at the same address, the target
2478 could end up running the commands twice. For the moment, we only
2479 support targets-side commands with dprintf, but it doesn't hurt
2480 to be pedantically correct in case that changes. */
e0d9a270
SM
2481 for (bp_location *loc : loc_range)
2482 if (breakpoint_locations_match (bl, loc)
2483 && loc->owner->extra_string
2484 && is_breakpoint (loc->owner)
2485 && loc->pspace->num == bl->pspace->num
2486 && loc->owner->enable_state == bp_enabled
2487 && loc->enabled
2488 && !loc->disabled_by_cond)
2489 {
2490 /* Add the command to the vector. This will be used later
2491 to send the commands to the target. */
2492 bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2493 }
d3ce09f5
SS
2494
2495 bl->target_info.persist = 0;
2496 /* Maybe flag this location as persistent. */
2497 if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2498 bl->target_info.persist = 1;
2499}
2500
833b7ab5
YQ
2501/* Return the kind of breakpoint on address *ADDR. Get the kind
2502 of breakpoint according to ADDR except single-step breakpoint.
2503 Get the kind of single-step breakpoint according to the current
2504 registers state. */
cd6c3b4f
YQ
2505
2506static int
2507breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2508{
833b7ab5
YQ
2509 if (bl->owner->type == bp_single_step)
2510 {
2511 struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2512 struct regcache *regcache;
2513
00431a78 2514 regcache = get_thread_regcache (thr);
833b7ab5
YQ
2515
2516 return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2517 regcache, addr);
2518 }
2519 else
2520 return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
cd6c3b4f
YQ
2521}
2522
35df4500
TJB
2523/* Insert a low-level "breakpoint" of some type. BL is the breakpoint
2524 location. Any error messages are printed to TMP_ERROR_STREAM; and
3fbb6ffa 2525 DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
c30eee59
TJB
2526 Returns 0 for success, 1 if the bp_location type is not supported or
2527 -1 for failure.
879bfdc2 2528
4a64f543
MS
2529 NOTE drow/2003-09-09: This routine could be broken down to an
2530 object-style method for each breakpoint or catchpoint type. */
26bb91f3 2531static int
35df4500 2532insert_bp_location (struct bp_location *bl,
26bb91f3 2533 struct ui_file *tmp_error_stream,
3fbb6ffa 2534 int *disabled_breaks,
dd61ec5c
MW
2535 int *hw_breakpoint_error,
2536 int *hw_bp_error_explained_already)
879bfdc2 2537{
cc06b668 2538 gdb_exception bp_excpt;
879bfdc2 2539
b775012e 2540 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2541 return 0;
2542
35c63cd8
JB
2543 /* Note we don't initialize bl->target_info, as that wipes out
2544 the breakpoint location's shadow_contents if the breakpoint
2545 is still inserted at that location. This in turn breaks
2546 target_read_memory which depends on these buffers when
2547 a memory read is requested at the breakpoint location:
2548 Once the target_info has been wiped, we fail to see that
2549 we have a breakpoint inserted at that address and thus
2550 read the breakpoint instead of returning the data saved in
2551 the breakpoint location's shadow contents. */
0d5ed153 2552 bl->target_info.reqstd_address = bl->address;
35df4500 2553 bl->target_info.placed_address_space = bl->pspace->aspace;
f1310107 2554 bl->target_info.length = bl->length;
8181d85f 2555
b775012e
LM
2556 /* When working with target-side conditions, we must pass all the conditions
2557 for the same breakpoint address down to the target since GDB will not
2558 insert those locations. With a list of breakpoint conditions, the target
2559 can decide when to stop and notify GDB. */
2560
2561 if (is_breakpoint (bl->owner))
2562 {
2563 build_target_condition_list (bl);
d3ce09f5
SS
2564 build_target_command_list (bl);
2565 /* Reset the modification marker. */
b775012e
LM
2566 bl->needs_update = 0;
2567 }
2568
7f32a4d5
PA
2569 /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
2570 set at a read-only address, then a breakpoint location will have
2571 been changed to hardware breakpoint before we get here. If it is
2572 "off" however, error out before actually trying to insert the
2573 breakpoint, with a nicer error message. */
35df4500 2574 if (bl->loc_type == bp_loc_software_breakpoint
7f32a4d5 2575 && !automatic_hardware_breakpoints)
879bfdc2 2576 {
7f32a4d5 2577 mem_region *mr = lookup_mem_region (bl->address);
cc59ec59 2578
7f32a4d5
PA
2579 if (mr != nullptr && mr->attrib.mode != MEM_RW)
2580 {
6cb06a8c
TT
2581 gdb_printf (tmp_error_stream,
2582 _("Cannot insert breakpoint %d.\n"
2583 "Cannot set software breakpoint "
2584 "at read-only address %s\n"),
2585 bl->owner->number,
2586 paddress (bl->gdbarch, bl->address));
7f32a4d5 2587 return 1;
765dc015 2588 }
7f32a4d5
PA
2589 }
2590
2591 if (bl->loc_type == bp_loc_software_breakpoint
2592 || bl->loc_type == bp_loc_hardware_breakpoint)
2593 {
879bfdc2
DJ
2594 /* First check to see if we have to handle an overlay. */
2595 if (overlay_debugging == ovly_off
35df4500
TJB
2596 || bl->section == NULL
2597 || !(section_is_overlay (bl->section)))
879bfdc2
DJ
2598 {
2599 /* No overlay handling: just set the breakpoint. */
a70b8144 2600 try
dd61ec5c 2601 {
0000e5cc
PA
2602 int val;
2603
dd61ec5c 2604 val = bl->owner->ops->insert_location (bl);
0000e5cc 2605 if (val)
688fca4f 2606 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dd61ec5c 2607 }
94aeb44b 2608 catch (gdb_exception &e)
dd61ec5c 2609 {
94aeb44b 2610 bp_excpt = std::move (e);
dd61ec5c 2611 }
879bfdc2
DJ
2612 }
2613 else
2614 {
4a64f543 2615 /* This breakpoint is in an overlay section.
879bfdc2
DJ
2616 Shall we set a breakpoint at the LMA? */
2617 if (!overlay_events_enabled)
2618 {
2619 /* Yes -- overlay event support is not active,
2620 so we must try to set a breakpoint at the LMA.
2621 This will not work for a hardware breakpoint. */
35df4500 2622 if (bl->loc_type == bp_loc_hardware_breakpoint)
8a3fe4f8 2623 warning (_("hardware breakpoint %d not supported in overlay!"),
35df4500 2624 bl->owner->number);
879bfdc2
DJ
2625 else
2626 {
35df4500
TJB
2627 CORE_ADDR addr = overlay_unmapped_address (bl->address,
2628 bl->section);
879bfdc2 2629 /* Set a software (trap) breakpoint at the LMA. */
35df4500 2630 bl->overlay_target_info = bl->target_info;
0d5ed153 2631 bl->overlay_target_info.reqstd_address = addr;
0000e5cc
PA
2632
2633 /* No overlay handling: just set the breakpoint. */
a70b8144 2634 try
0000e5cc
PA
2635 {
2636 int val;
2637
579c6ad9 2638 bl->overlay_target_info.kind
cd6c3b4f
YQ
2639 = breakpoint_kind (bl, &addr);
2640 bl->overlay_target_info.placed_address = addr;
0000e5cc
PA
2641 val = target_insert_breakpoint (bl->gdbarch,
2642 &bl->overlay_target_info);
2643 if (val)
688fca4f
PA
2644 bp_excpt
2645 = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
0000e5cc 2646 }
94aeb44b 2647 catch (gdb_exception &e)
0000e5cc 2648 {
94aeb44b 2649 bp_excpt = std::move (e);
0000e5cc
PA
2650 }
2651
688fca4f 2652 if (bp_excpt.reason != 0)
6cb06a8c
TT
2653 gdb_printf (tmp_error_stream,
2654 "Overlay breakpoint %d "
2655 "failed: in ROM?\n",
2656 bl->owner->number);
879bfdc2
DJ
2657 }
2658 }
2659 /* Shall we set a breakpoint at the VMA? */
35df4500 2660 if (section_is_mapped (bl->section))
879bfdc2
DJ
2661 {
2662 /* Yes. This overlay section is mapped into memory. */
a70b8144 2663 try
dda83cd7 2664 {
0000e5cc
PA
2665 int val;
2666
dda83cd7 2667 val = bl->owner->ops->insert_location (bl);
0000e5cc 2668 if (val)
688fca4f 2669 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
dda83cd7 2670 }
94aeb44b 2671 catch (gdb_exception &e)
dda83cd7 2672 {
94aeb44b 2673 bp_excpt = std::move (e);
dda83cd7 2674 }
879bfdc2
DJ
2675 }
2676 else
2677 {
2678 /* No. This breakpoint will not be inserted.
2679 No error, but do not mark the bp as 'inserted'. */
2680 return 0;
2681 }
2682 }
2683
688fca4f 2684 if (bp_excpt.reason != 0)
879bfdc2
DJ
2685 {
2686 /* Can't set the breakpoint. */
0000e5cc 2687
80dc83fd
AB
2688 /* If the target has closed then it will have deleted any
2689 breakpoints inserted within the target inferior, as a result
2690 any further attempts to interact with the breakpoint objects
2691 is not possible. Just rethrow the error. */
2692 if (bp_excpt.error == TARGET_CLOSE_ERROR)
2693 throw bp_excpt;
2694 gdb_assert (bl->owner != nullptr);
2695
0000e5cc
PA
2696 /* In some cases, we might not be able to insert a
2697 breakpoint in a shared library that has already been
2698 removed, but we have not yet processed the shlib unload
2699 event. Unfortunately, some targets that implement
076855f9
PA
2700 breakpoint insertion themselves can't tell why the
2701 breakpoint insertion failed (e.g., the remote target
2702 doesn't define error codes), so we must treat generic
2703 errors as memory errors. */
688fca4f
PA
2704 if (bp_excpt.reason == RETURN_ERROR
2705 && (bp_excpt.error == GENERIC_ERROR
2706 || bp_excpt.error == MEMORY_ERROR)
076855f9 2707 && bl->loc_type == bp_loc_software_breakpoint
08351840 2708 && (solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
2709 || shared_objfile_contains_address_p (bl->pspace,
2710 bl->address)))
879bfdc2 2711 {
4a64f543 2712 /* See also: disable_breakpoints_in_shlibs. */
35df4500 2713 bl->shlib_disabled = 1;
76727919 2714 gdb::observers::breakpoint_modified.notify (bl->owner);
3fbb6ffa
TJB
2715 if (!*disabled_breaks)
2716 {
6cb06a8c
TT
2717 gdb_printf (tmp_error_stream,
2718 "Cannot insert breakpoint %d.\n",
2719 bl->owner->number);
2720 gdb_printf (tmp_error_stream,
2721 "Temporarily disabling shared "
2722 "library breakpoints:\n");
3fbb6ffa
TJB
2723 }
2724 *disabled_breaks = 1;
6cb06a8c
TT
2725 gdb_printf (tmp_error_stream,
2726 "breakpoint #%d\n", bl->owner->number);
0000e5cc 2727 return 0;
879bfdc2
DJ
2728 }
2729 else
879bfdc2 2730 {
35df4500 2731 if (bl->loc_type == bp_loc_hardware_breakpoint)
879bfdc2 2732 {
0000e5cc 2733 *hw_breakpoint_error = 1;
688fca4f 2734 *hw_bp_error_explained_already = bp_excpt.message != NULL;
6cb06a8c
TT
2735 gdb_printf (tmp_error_stream,
2736 "Cannot insert hardware breakpoint %d%s",
2737 bl->owner->number,
2738 bp_excpt.message ? ":" : ".\n");
dda83cd7 2739 if (bp_excpt.message != NULL)
6cb06a8c
TT
2740 gdb_printf (tmp_error_stream, "%s.\n",
2741 bp_excpt.what ());
879bfdc2
DJ
2742 }
2743 else
2744 {
688fca4f 2745 if (bp_excpt.message == NULL)
0000e5cc 2746 {
1ccbe998 2747 std::string message
0000e5cc
PA
2748 = memory_error_message (TARGET_XFER_E_IO,
2749 bl->gdbarch, bl->address);
0000e5cc 2750
6cb06a8c
TT
2751 gdb_printf (tmp_error_stream,
2752 "Cannot insert breakpoint %d.\n"
2753 "%s\n",
2754 bl->owner->number, message.c_str ());
0000e5cc
PA
2755 }
2756 else
2757 {
6cb06a8c
TT
2758 gdb_printf (tmp_error_stream,
2759 "Cannot insert breakpoint %d: %s\n",
2760 bl->owner->number,
2761 bp_excpt.what ());
0000e5cc 2762 }
879bfdc2 2763 }
0000e5cc 2764 return 1;
879bfdc2
DJ
2765
2766 }
2767 }
2768 else
35df4500 2769 bl->inserted = 1;
879bfdc2 2770
0000e5cc 2771 return 0;
879bfdc2
DJ
2772 }
2773
35df4500 2774 else if (bl->loc_type == bp_loc_hardware_watchpoint
879bfdc2 2775 /* NOTE drow/2003-09-08: This state only exists for removing
4a64f543 2776 watchpoints. It's not clear that it's necessary... */
35df4500 2777 && bl->owner->disposition != disp_del_at_next_stop)
879bfdc2 2778 {
0000e5cc
PA
2779 int val;
2780
77b06cd7
TJB
2781 gdb_assert (bl->owner->ops != NULL
2782 && bl->owner->ops->insert_location != NULL);
2783
2784 val = bl->owner->ops->insert_location (bl);
85d721b8
PA
2785
2786 /* If trying to set a read-watchpoint, and it turns out it's not
2787 supported, try emulating one with an access watchpoint. */
35df4500 2788 if (val == 1 && bl->watchpoint_type == hw_read)
85d721b8 2789 {
85d721b8
PA
2790 /* But don't try to insert it, if there's already another
2791 hw_access location that would be considered a duplicate
2792 of this one. */
48d7020b 2793 for (bp_location *loc : all_bp_locations ())
35df4500 2794 if (loc != bl
85d721b8 2795 && loc->watchpoint_type == hw_access
35df4500 2796 && watchpoint_locations_match (bl, loc))
85d721b8 2797 {
35df4500
TJB
2798 bl->duplicate = 1;
2799 bl->inserted = 1;
2800 bl->target_info = loc->target_info;
2801 bl->watchpoint_type = hw_access;
85d721b8
PA
2802 val = 0;
2803 break;
2804 }
2805
2806 if (val == 1)
2807 {
77b06cd7
TJB
2808 bl->watchpoint_type = hw_access;
2809 val = bl->owner->ops->insert_location (bl);
2810
2811 if (val)
2812 /* Back to the original value. */
2813 bl->watchpoint_type = hw_read;
85d721b8
PA
2814 }
2815 }
2816
35df4500 2817 bl->inserted = (val == 0);
879bfdc2
DJ
2818 }
2819
35df4500 2820 else if (bl->owner->type == bp_catchpoint)
879bfdc2 2821 {
0000e5cc
PA
2822 int val;
2823
77b06cd7
TJB
2824 gdb_assert (bl->owner->ops != NULL
2825 && bl->owner->ops->insert_location != NULL);
2826
2827 val = bl->owner->ops->insert_location (bl);
2828 if (val)
2829 {
2830 bl->owner->enable_state = bp_disabled;
2831
2832 if (val == 1)
2833 warning (_("\
2834Error inserting catchpoint %d: Your system does not support this type\n\
2835of catchpoint."), bl->owner->number);
2836 else
2837 warning (_("Error inserting catchpoint %d."), bl->owner->number);
2838 }
2839
2840 bl->inserted = (val == 0);
1640b821
DJ
2841
2842 /* We've already printed an error message if there was a problem
2843 inserting this catchpoint, and we've disabled the catchpoint,
2844 so just return success. */
2845 return 0;
879bfdc2
DJ
2846 }
2847
2848 return 0;
2849}
2850
6c95b8df
PA
2851/* This function is called when program space PSPACE is about to be
2852 deleted. It takes care of updating breakpoints to not reference
2853 PSPACE anymore. */
2854
2855void
2856breakpoint_program_space_exit (struct program_space *pspace)
2857{
6c95b8df 2858 /* Remove any breakpoint that was set through this program space. */
1428b37a
SM
2859 for (breakpoint *b : all_breakpoints_safe ())
2860 if (b->pspace == pspace)
2861 delete_breakpoint (b);
6c95b8df
PA
2862
2863 /* Breakpoints set through other program spaces could have locations
2864 bound to PSPACE as well. Remove those. */
48d7020b 2865 for (bp_location *loc : all_bp_locations ())
6c95b8df
PA
2866 {
2867 struct bp_location *tmp;
2868
2869 if (loc->pspace == pspace)
2870 {
2bdf28a0 2871 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
6c95b8df
PA
2872 if (loc->owner->loc == loc)
2873 loc->owner->loc = loc->next;
2874 else
2875 for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2876 if (tmp->next == loc)
2877 {
2878 tmp->next = loc->next;
2879 break;
2880 }
2881 }
2882 }
2883
2884 /* Now update the global location list to permanently delete the
2885 removed locations above. */
44702360 2886 update_global_location_list (UGLL_DONT_INSERT);
6c95b8df
PA
2887}
2888
74960c60
VP
2889/* Make sure all breakpoints are inserted in inferior.
2890 Throws exception on any error.
2891 A breakpoint that is already inserted won't be inserted
2892 again, so calling this function twice is safe. */
2893void
2894insert_breakpoints (void)
2895{
43892fdf 2896 for (breakpoint *bpt : all_breakpoints ())
74960c60 2897 if (is_hardware_watchpoint (bpt))
3a5c3e22
PA
2898 {
2899 struct watchpoint *w = (struct watchpoint *) bpt;
2900
2901 update_watchpoint (w, 0 /* don't reparse. */);
2902 }
74960c60 2903
04086b45
PA
2904 /* Updating watchpoints creates new locations, so update the global
2905 location list. Explicitly tell ugll to insert locations and
7f32a4d5
PA
2906 ignore breakpoints_always_inserted_mode. Also,
2907 update_global_location_list tries to "upgrade" software
2908 breakpoints to hardware breakpoints to handle "set breakpoint
2909 auto-hw", so we need to call it even if we don't have new
2910 locations. */
04086b45 2911 update_global_location_list (UGLL_INSERT);
74960c60
VP
2912}
2913
b775012e
LM
2914/* This is used when we need to synch breakpoint conditions between GDB and the
2915 target. It is the case with deleting and disabling of breakpoints when using
2916 always-inserted mode. */
2917
2918static void
2919update_inserted_breakpoint_locations (void)
2920{
b775012e
LM
2921 int error_flag = 0;
2922 int val = 0;
2923 int disabled_breaks = 0;
2924 int hw_breakpoint_error = 0;
dd61ec5c 2925 int hw_bp_details_reported = 0;
b775012e 2926
d7e74731 2927 string_file tmp_error_stream;
b775012e
LM
2928
2929 /* Explicitly mark the warning -- this will only be printed if
2930 there was an error. */
d7e74731 2931 tmp_error_stream.puts ("Warning:\n");
b775012e 2932
5ed8105e 2933 scoped_restore_current_pspace_and_thread restore_pspace_thread;
b775012e 2934
48d7020b 2935 for (bp_location *bl : all_bp_locations ())
b775012e
LM
2936 {
2937 /* We only want to update software breakpoints and hardware
2938 breakpoints. */
2939 if (!is_breakpoint (bl->owner))
2940 continue;
2941
2942 /* We only want to update locations that are already inserted
2943 and need updating. This is to avoid unwanted insertion during
2944 deletion of breakpoints. */
4daf1902 2945 if (!bl->inserted || !bl->needs_update)
b775012e
LM
2946 continue;
2947
2948 switch_to_program_space_and_thread (bl->pspace);
2949
2950 /* For targets that support global breakpoints, there's no need
2951 to select an inferior to insert breakpoint to. In fact, even
2952 if we aren't attached to any process yet, we should still
2953 insert breakpoints. */
f5656ead 2954 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
55f6301a 2955 && (inferior_ptid == null_ptid || !target_has_execution ()))
b775012e
LM
2956 continue;
2957
d7e74731 2958 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 2959 &hw_breakpoint_error, &hw_bp_details_reported);
b775012e
LM
2960 if (val)
2961 error_flag = val;
2962 }
2963
2964 if (error_flag)
2965 {
223ffa71 2966 target_terminal::ours_for_output ();
b775012e
LM
2967 error_stream (tmp_error_stream);
2968 }
b775012e
LM
2969}
2970
c30eee59 2971/* Used when starting or continuing the program. */
c906108c 2972
74960c60
VP
2973static void
2974insert_breakpoint_locations (void)
c906108c 2975{
eacd795a 2976 int error_flag = 0;
c906108c 2977 int val = 0;
3fbb6ffa 2978 int disabled_breaks = 0;
81d0cc19 2979 int hw_breakpoint_error = 0;
dd61ec5c 2980 int hw_bp_error_explained_already = 0;
c906108c 2981
d7e74731
PA
2982 string_file tmp_error_stream;
2983
81d0cc19
GS
2984 /* Explicitly mark the warning -- this will only be printed if
2985 there was an error. */
d7e74731 2986 tmp_error_stream.puts ("Warning:\n");
6c95b8df 2987
5ed8105e 2988 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 2989
48d7020b 2990 for (bp_location *bl : all_bp_locations ())
879bfdc2 2991 {
b775012e 2992 if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
879bfdc2
DJ
2993 continue;
2994
4a64f543
MS
2995 /* There is no point inserting thread-specific breakpoints if
2996 the thread no longer exists. ALL_BP_LOCATIONS bp_location
2997 has BL->OWNER always non-NULL. */
35df4500 2998 if (bl->owner->thread != -1
5d5658a1 2999 && !valid_global_thread_id (bl->owner->thread))
f365de73
AS
3000 continue;
3001
35df4500 3002 switch_to_program_space_and_thread (bl->pspace);
6c95b8df
PA
3003
3004 /* For targets that support global breakpoints, there's no need
3005 to select an inferior to insert breakpoint to. In fact, even
3006 if we aren't attached to any process yet, we should still
3007 insert breakpoints. */
f5656ead 3008 if (!gdbarch_has_global_breakpoints (target_gdbarch ())
55f6301a 3009 && (inferior_ptid == null_ptid || !target_has_execution ()))
6c95b8df
PA
3010 continue;
3011
d7e74731 3012 val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
dd61ec5c 3013 &hw_breakpoint_error, &hw_bp_error_explained_already);
879bfdc2 3014 if (val)
eacd795a 3015 error_flag = val;
879bfdc2 3016 }
c906108c 3017
4a64f543
MS
3018 /* If we failed to insert all locations of a watchpoint, remove
3019 them, as half-inserted watchpoint is of limited use. */
43892fdf 3020 for (breakpoint *bpt : all_breakpoints ())
a5606eee
VP
3021 {
3022 int some_failed = 0;
a5606eee
VP
3023
3024 if (!is_hardware_watchpoint (bpt))
3025 continue;
3026
d6b74ac4 3027 if (!breakpoint_enabled (bpt))
a5606eee 3028 continue;
74960c60
VP
3029
3030 if (bpt->disposition == disp_del_at_next_stop)
3031 continue;
a5606eee 3032
40cb8ca5 3033 for (bp_location *loc : bpt->locations ())
56710373 3034 if (!loc->inserted && should_be_inserted (loc))
a5606eee
VP
3035 {
3036 some_failed = 1;
3037 break;
3038 }
40cb8ca5 3039
a5606eee
VP
3040 if (some_failed)
3041 {
40cb8ca5 3042 for (bp_location *loc : bpt->locations ())
a5606eee 3043 if (loc->inserted)
834c0d03 3044 remove_breakpoint (loc);
a5606eee
VP
3045
3046 hw_breakpoint_error = 1;
d7e74731
PA
3047 tmp_error_stream.printf ("Could not insert "
3048 "hardware watchpoint %d.\n",
3049 bpt->number);
eacd795a 3050 error_flag = -1;
a5606eee
VP
3051 }
3052 }
3053
eacd795a 3054 if (error_flag)
81d0cc19
GS
3055 {
3056 /* If a hardware breakpoint or watchpoint was inserted, add a
dda83cd7 3057 message about possibly exhausted resources. */
dd61ec5c 3058 if (hw_breakpoint_error && !hw_bp_error_explained_already)
81d0cc19 3059 {
d7e74731 3060 tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
c6510018 3061You may have requested too many hardware breakpoints/watchpoints.\n");
81d0cc19 3062 }
223ffa71 3063 target_terminal::ours_for_output ();
81d0cc19
GS
3064 error_stream (tmp_error_stream);
3065 }
c906108c
SS
3066}
3067
c30eee59
TJB
3068/* Used when the program stops.
3069 Returns zero if successful, or non-zero if there was a problem
3070 removing a breakpoint location. */
3071
c906108c 3072int
fba45db2 3073remove_breakpoints (void)
c906108c 3074{
3a1bae8e 3075 int val = 0;
c906108c 3076
48d7020b 3077 for (bp_location *bl : all_bp_locations ())
1e4d1764 3078 if (bl->inserted && !is_tracepoint (bl->owner))
834c0d03 3079 val |= remove_breakpoint (bl);
01add95b 3080
3a1bae8e 3081 return val;
c906108c
SS
3082}
3083
49fa26b0
PA
3084/* When a thread exits, remove breakpoints that are related to
3085 that thread. */
3086
3087static void
3088remove_threaded_breakpoints (struct thread_info *tp, int silent)
3089{
1428b37a 3090 for (breakpoint *b : all_breakpoints_safe ())
49fa26b0 3091 {
5d5658a1 3092 if (b->thread == tp->global_num && user_breakpoint_p (b))
49fa26b0
PA
3093 {
3094 b->disposition = disp_del_at_next_stop;
3095
6cb06a8c 3096 gdb_printf (_("\
43792cf0 3097Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
6cb06a8c 3098 b->number, print_thread_id (tp));
49fa26b0
PA
3099
3100 /* Hide it from the user. */
3101 b->number = 0;
3102 }
3103 }
3104}
3105
f3869b1a 3106/* See breakpoint.h. */
6c95b8df 3107
f3869b1a 3108void
00431a78 3109remove_breakpoints_inf (inferior *inf)
6c95b8df 3110{
6c95b8df 3111 int val;
6c95b8df 3112
48d7020b 3113 for (bp_location *bl : all_bp_locations ())
01add95b
SM
3114 {
3115 if (bl->pspace != inf->pspace)
3116 continue;
6c95b8df 3117
01add95b
SM
3118 if (bl->inserted && !bl->target_info.persist)
3119 {
3120 val = remove_breakpoint (bl);
3121 if (val != 0)
3122 return;
3123 }
3124 }
6c95b8df
PA
3125}
3126
e58b0e63
PA
3127static int internal_breakpoint_number = -1;
3128
84f4c1fe
PM
3129/* Set the breakpoint number of B, depending on the value of INTERNAL.
3130 If INTERNAL is non-zero, the breakpoint number will be populated
3131 from internal_breakpoint_number and that variable decremented.
e5dd4106 3132 Otherwise the breakpoint number will be populated from
84f4c1fe
PM
3133 breakpoint_count and that value incremented. Internal breakpoints
3134 do not set the internal var bpnum. */
3135static void
3136set_breakpoint_number (int internal, struct breakpoint *b)
3137{
3138 if (internal)
3139 b->number = internal_breakpoint_number--;
3140 else
3141 {
3142 set_breakpoint_count (breakpoint_count + 1);
3143 b->number = breakpoint_count;
3144 }
3145}
3146
e62c965a 3147static struct breakpoint *
a6d9a66e 3148create_internal_breakpoint (struct gdbarch *gdbarch,
06edf0c0 3149 CORE_ADDR address, enum bptype type,
c0a91b2b 3150 const struct breakpoint_ops *ops)
e62c965a 3151{
51abb421 3152 symtab_and_line sal;
e62c965a
PP
3153 sal.pc = address;
3154 sal.section = find_pc_overlay (sal.pc);
6c95b8df 3155 sal.pspace = current_program_space;
e62c965a 3156
51abb421 3157 breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
e62c965a
PP
3158 b->number = internal_breakpoint_number--;
3159 b->disposition = disp_donttouch;
3160
3161 return b;
3162}
3163
17450429
PP
3164static const char *const longjmp_names[] =
3165 {
3166 "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3167 };
3168#define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3169
3170/* Per-objfile data private to breakpoint.c. */
3171struct breakpoint_objfile_data
3172{
3173 /* Minimal symbol for "_ovly_debug_event" (if any). */
f6b3ad54 3174 struct bound_minimal_symbol overlay_msym;
17450429
PP
3175
3176 /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any). */
f6b3ad54 3177 struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
17450429 3178
28106bc2 3179 /* True if we have looked for longjmp probes. */
43dce439 3180 int longjmp_searched = 0;
28106bc2 3181
45461e0d
SM
3182 /* SystemTap probe points for longjmp (if any). These are non-owning
3183 references. */
3184 std::vector<probe *> longjmp_probes;
28106bc2 3185
17450429 3186 /* Minimal symbol for "std::terminate()" (if any). */
f6b3ad54 3187 struct bound_minimal_symbol terminate_msym;
17450429
PP
3188
3189 /* Minimal symbol for "_Unwind_DebugHook" (if any). */
f6b3ad54 3190 struct bound_minimal_symbol exception_msym;
28106bc2
SDJ
3191
3192 /* True if we have looked for exception probes. */
43dce439 3193 int exception_searched = 0;
28106bc2 3194
45461e0d
SM
3195 /* SystemTap probe points for unwinding (if any). These are non-owning
3196 references. */
3197 std::vector<probe *> exception_probes;
17450429
PP
3198};
3199
51d3063a
TT
3200static const struct objfile_key<breakpoint_objfile_data>
3201 breakpoint_objfile_key;
17450429
PP
3202
3203/* Minimal symbol not found sentinel. */
3204static struct minimal_symbol msym_not_found;
3205
3206/* Returns TRUE if MSYM point to the "not found" sentinel. */
3207
3208static int
3209msym_not_found_p (const struct minimal_symbol *msym)
3210{
3211 return msym == &msym_not_found;
3212}
3213
3214/* Return per-objfile data needed by breakpoint.c.
3215 Allocate the data if necessary. */
3216
3217static struct breakpoint_objfile_data *
3218get_breakpoint_objfile_data (struct objfile *objfile)
3219{
3220 struct breakpoint_objfile_data *bp_objfile_data;
3221
51d3063a 3222 bp_objfile_data = breakpoint_objfile_key.get (objfile);
17450429 3223 if (bp_objfile_data == NULL)
51d3063a 3224 bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
17450429
PP
3225 return bp_objfile_data;
3226}
3227
e62c965a 3228static void
af02033e 3229create_overlay_event_breakpoint (void)
e62c965a 3230{
af02033e 3231 const char *const func_name = "_ovly_debug_event";
e62c965a 3232
2030c079 3233 for (objfile *objfile : current_program_space->objfiles ())
69de3c6a
PP
3234 {
3235 struct breakpoint *b;
17450429
PP
3236 struct breakpoint_objfile_data *bp_objfile_data;
3237 CORE_ADDR addr;
67994074 3238 struct explicit_location explicit_loc;
69de3c6a 3239
17450429
PP
3240 bp_objfile_data = get_breakpoint_objfile_data (objfile);
3241
3b7344d5 3242 if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
17450429
PP
3243 continue;
3244
3b7344d5 3245 if (bp_objfile_data->overlay_msym.minsym == NULL)
17450429 3246 {
3b7344d5 3247 struct bound_minimal_symbol m;
17450429
PP
3248
3249 m = lookup_minimal_symbol_text (func_name, objfile);
3b7344d5 3250 if (m.minsym == NULL)
17450429
PP
3251 {
3252 /* Avoid future lookups in this objfile. */
3b7344d5 3253 bp_objfile_data->overlay_msym.minsym = &msym_not_found;
17450429
PP
3254 continue;
3255 }
3256 bp_objfile_data->overlay_msym = m;
3257 }
e62c965a 3258
4aeddc50 3259 addr = bp_objfile_data->overlay_msym.value_address ();
08feed99 3260 b = create_internal_breakpoint (objfile->arch (), addr,
dda83cd7 3261 bp_overlay_event,
06edf0c0 3262 &internal_breakpoint_ops);
67994074
KS
3263 initialize_explicit_location (&explicit_loc);
3264 explicit_loc.function_name = ASTRDUP (func_name);
d28cd78a 3265 b->location = new_explicit_location (&explicit_loc);
e62c965a 3266
69de3c6a 3267 if (overlay_debugging == ovly_auto)
dda83cd7
SM
3268 {
3269 b->enable_state = bp_enabled;
3270 overlay_events_enabled = 1;
3271 }
69de3c6a
PP
3272 else
3273 {
dda83cd7
SM
3274 b->enable_state = bp_disabled;
3275 overlay_events_enabled = 0;
69de3c6a 3276 }
e62c965a 3277 }
e62c965a
PP
3278}
3279
2a7f6487
TV
3280/* Install a master longjmp breakpoint for OBJFILE using a probe. Return
3281 true if a breakpoint was installed. */
3282
3283static bool
3284create_longjmp_master_breakpoint_probe (objfile *objfile)
0fd8e87f 3285{
2a7f6487
TV
3286 struct gdbarch *gdbarch = objfile->arch ();
3287 struct breakpoint_objfile_data *bp_objfile_data
3288 = get_breakpoint_objfile_data (objfile);
0fd8e87f 3289
2a7f6487 3290 if (!bp_objfile_data->longjmp_searched)
94c93c35 3291 {
2a7f6487
TV
3292 std::vector<probe *> ret
3293 = find_probes_in_objfile (objfile, "libc", "longjmp");
af02033e 3294
2a7f6487 3295 if (!ret.empty ())
94c93c35 3296 {
2a7f6487
TV
3297 /* We are only interested in checking one element. */
3298 probe *p = ret[0];
0fd8e87f 3299
2a7f6487
TV
3300 if (!p->can_evaluate_arguments ())
3301 {
3302 /* We cannot use the probe interface here,
3303 because it does not know how to evaluate
3304 arguments. */
3305 ret.clear ();
3306 }
3307 }
3308 bp_objfile_data->longjmp_probes = ret;
3309 bp_objfile_data->longjmp_searched = 1;
3310 }
0fd8e87f 3311
2a7f6487
TV
3312 if (bp_objfile_data->longjmp_probes.empty ())
3313 return false;
17450429 3314
2a7f6487
TV
3315 for (probe *p : bp_objfile_data->longjmp_probes)
3316 {
3317 struct breakpoint *b;
25f9533e 3318
2a7f6487
TV
3319 b = create_internal_breakpoint (gdbarch,
3320 p->get_relocated_address (objfile),
3321 bp_longjmp_master,
3322 &internal_breakpoint_ops);
3323 b->location = new_probe_location ("-probe-stap libc:longjmp");
3324 b->enable_state = bp_disabled;
3325 }
aed57c53 3326
2a7f6487
TV
3327 return true;
3328}
25f9533e 3329
2a7f6487
TV
3330/* Install master longjmp breakpoints for OBJFILE using longjmp_names.
3331 Return true if at least one breakpoint was installed. */
3332
3333static bool
3334create_longjmp_master_breakpoint_names (objfile *objfile)
3335{
3336 struct gdbarch *gdbarch = objfile->arch ();
3337 if (!gdbarch_get_longjmp_target_p (gdbarch))
3338 return false;
3339
3340 struct breakpoint_objfile_data *bp_objfile_data
3341 = get_breakpoint_objfile_data (objfile);
3342 unsigned int installed_bp = 0;
3343
3344 for (int i = 0; i < NUM_LONGJMP_NAMES; i++)
3345 {
3346 struct breakpoint *b;
3347 const char *func_name;
3348 CORE_ADDR addr;
3349 struct explicit_location explicit_loc;
3350
3351 if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3352 continue;
28106bc2 3353
2a7f6487
TV
3354 func_name = longjmp_names[i];
3355 if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3356 {
3357 struct bound_minimal_symbol m;
3358
3359 m = lookup_minimal_symbol_text (func_name, objfile);
3360 if (m.minsym == NULL)
3361 {
3362 /* Prevent future lookups in this objfile. */
3363 bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
94c93c35
TT
3364 continue;
3365 }
2a7f6487
TV
3366 bp_objfile_data->longjmp_msym[i] = m;
3367 }
28106bc2 3368
4aeddc50 3369 addr = bp_objfile_data->longjmp_msym[i].value_address ();
2a7f6487
TV
3370 b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3371 &internal_breakpoint_ops);
3372 initialize_explicit_location (&explicit_loc);
3373 explicit_loc.function_name = ASTRDUP (func_name);
3374 b->location = new_explicit_location (&explicit_loc);
3375 b->enable_state = bp_disabled;
3376 installed_bp++;
3377 }
28106bc2 3378
2a7f6487
TV
3379 return installed_bp > 0;
3380}
0fd8e87f 3381
2a7f6487 3382/* Create a master longjmp breakpoint. */
17450429 3383
2a7f6487
TV
3384static void
3385create_longjmp_master_breakpoint (void)
3386{
3387 scoped_restore_current_program_space restore_pspace;
aed57c53 3388
2a7f6487
TV
3389 for (struct program_space *pspace : program_spaces)
3390 {
3391 set_current_program_space (pspace);
17450429 3392
2a7f6487
TV
3393 for (objfile *obj : current_program_space->objfiles ())
3394 {
3395 /* Skip separate debug object, it's handled in the loop below. */
3396 if (obj->separate_debug_objfile_backlink != nullptr)
3397 continue;
3398
3399 /* Try a probe kind breakpoint on main objfile. */
3400 if (create_longjmp_master_breakpoint_probe (obj))
3401 continue;
3402
3403 /* Try longjmp_names kind breakpoints on main and separate_debug
3404 objfiles. */
3405 for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3406 if (create_longjmp_master_breakpoint_names (debug_objfile))
3407 break;
94c93c35
TT
3408 }
3409 }
0fd8e87f
UW
3410}
3411
af02033e 3412/* Create a master std::terminate breakpoint. */
aa7d318d 3413static void
af02033e 3414create_std_terminate_master_breakpoint (void)
aa7d318d 3415{
af02033e 3416 const char *const func_name = "std::terminate()";
aa7d318d 3417
5ed8105e 3418 scoped_restore_current_program_space restore_pspace;
aa7d318d 3419
94c93c35
TT
3420 for (struct program_space *pspace : program_spaces)
3421 {
3422 CORE_ADDR addr;
17450429 3423
94c93c35 3424 set_current_program_space (pspace);
17450429 3425
94c93c35
TT
3426 for (objfile *objfile : current_program_space->objfiles ())
3427 {
3428 struct breakpoint *b;
3429 struct breakpoint_objfile_data *bp_objfile_data;
3430 struct explicit_location explicit_loc;
aa7d318d 3431
94c93c35 3432 bp_objfile_data = get_breakpoint_objfile_data (objfile);
aa7d318d 3433
94c93c35
TT
3434 if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3435 continue;
17450429 3436
94c93c35
TT
3437 if (bp_objfile_data->terminate_msym.minsym == NULL)
3438 {
3439 struct bound_minimal_symbol m;
17450429 3440
94c93c35 3441 m = lookup_minimal_symbol (func_name, NULL, objfile);
60f62e2b
SM
3442 if (m.minsym == NULL || (m.minsym->type () != mst_text
3443 && m.minsym->type () != mst_file_text))
94c93c35
TT
3444 {
3445 /* Prevent future lookups in this objfile. */
3446 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3447 continue;
3448 }
3449 bp_objfile_data->terminate_msym = m;
3450 }
aa7d318d 3451
4aeddc50 3452 addr = bp_objfile_data->terminate_msym.value_address ();
94c93c35
TT
3453 b = create_internal_breakpoint (objfile->arch (), addr,
3454 bp_std_terminate_master,
3455 &internal_breakpoint_ops);
3456 initialize_explicit_location (&explicit_loc);
3457 explicit_loc.function_name = ASTRDUP (func_name);
3458 b->location = new_explicit_location (&explicit_loc);
3459 b->enable_state = bp_disabled;
3460 }
3461 }
aa7d318d
TT
3462}
3463
1940319c
TV
3464/* Install a master breakpoint on the unwinder's debug hook for OBJFILE using a
3465 probe. Return true if a breakpoint was installed. */
186c406b 3466
1940319c
TV
3467static bool
3468create_exception_master_breakpoint_probe (objfile *objfile)
186c406b 3469{
1940319c
TV
3470 struct breakpoint *b;
3471 struct gdbarch *gdbarch;
3472 struct breakpoint_objfile_data *bp_objfile_data;
186c406b 3473
1940319c 3474 bp_objfile_data = get_breakpoint_objfile_data (objfile);
17450429 3475
1940319c
TV
3476 /* We prefer the SystemTap probe point if it exists. */
3477 if (!bp_objfile_data->exception_searched)
3478 {
3479 std::vector<probe *> ret
3480 = find_probes_in_objfile (objfile, "libgcc", "unwind");
17450429 3481
1940319c 3482 if (!ret.empty ())
28106bc2 3483 {
1940319c
TV
3484 /* We are only interested in checking one element. */
3485 probe *p = ret[0];
25f9533e 3486
1940319c 3487 if (!p->can_evaluate_arguments ())
25f9533e 3488 {
1940319c
TV
3489 /* We cannot use the probe interface here, because it does
3490 not know how to evaluate arguments. */
3491 ret.clear ();
25f9533e 3492 }
28106bc2 3493 }
1940319c
TV
3494 bp_objfile_data->exception_probes = ret;
3495 bp_objfile_data->exception_searched = 1;
3496 }
28106bc2 3497
1940319c
TV
3498 if (bp_objfile_data->exception_probes.empty ())
3499 return false;
45461e0d 3500
1940319c 3501 gdbarch = objfile->arch ();
28106bc2 3502
1940319c
TV
3503 for (probe *p : bp_objfile_data->exception_probes)
3504 {
3505 b = create_internal_breakpoint (gdbarch,
3506 p->get_relocated_address (objfile),
3507 bp_exception_master,
3508 &internal_breakpoint_ops);
3509 b->location = new_probe_location ("-probe-stap libgcc:unwind");
3510 b->enable_state = bp_disabled;
3511 }
28106bc2 3512
1940319c
TV
3513 return true;
3514}
28106bc2 3515
1940319c
TV
3516/* Install a master breakpoint on the unwinder's debug hook for OBJFILE using
3517 _Unwind_DebugHook. Return true if a breakpoint was installed. */
17450429 3518
1940319c
TV
3519static bool
3520create_exception_master_breakpoint_hook (objfile *objfile)
3521{
3522 const char *const func_name = "_Unwind_DebugHook";
3523 struct breakpoint *b;
3524 struct gdbarch *gdbarch;
3525 struct breakpoint_objfile_data *bp_objfile_data;
3526 CORE_ADDR addr;
3527 struct explicit_location explicit_loc;
186c406b 3528
1940319c 3529 bp_objfile_data = get_breakpoint_objfile_data (objfile);
186c406b 3530
1940319c
TV
3531 if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3532 return false;
17450429 3533
1940319c
TV
3534 gdbarch = objfile->arch ();
3535
3536 if (bp_objfile_data->exception_msym.minsym == NULL)
3537 {
3538 struct bound_minimal_symbol debug_hook;
3539
3540 debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3541 if (debug_hook.minsym == NULL)
3542 {
3543 bp_objfile_data->exception_msym.minsym = &msym_not_found;
3544 return false;
186c406b 3545 }
17450429 3546
1940319c
TV
3547 bp_objfile_data->exception_msym = debug_hook;
3548 }
3549
4aeddc50 3550 addr = bp_objfile_data->exception_msym.value_address ();
328d42d8
SM
3551 addr = gdbarch_convert_from_func_ptr_addr
3552 (gdbarch, addr, current_inferior ()->top_target ());
1940319c
TV
3553 b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3554 &internal_breakpoint_ops);
3555 initialize_explicit_location (&explicit_loc);
3556 explicit_loc.function_name = ASTRDUP (func_name);
3557 b->location = new_explicit_location (&explicit_loc);
3558 b->enable_state = bp_disabled;
3559
3560 return true;
3561}
3562
3563/* Install a master breakpoint on the unwinder's debug hook. */
3564
3565static void
3566create_exception_master_breakpoint (void)
3567{
3568 for (objfile *obj : current_program_space->objfiles ())
3569 {
3570 /* Skip separate debug object. */
3571 if (obj->separate_debug_objfile_backlink)
3572 continue;
3573
3574 /* Try a probe kind breakpoint. */
3575 if (create_exception_master_breakpoint_probe (obj))
3576 continue;
3577
7c6944ab
TV
3578 /* Iterate over main and separate debug objects and try an
3579 _Unwind_DebugHook kind breakpoint. */
3580 for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3581 if (create_exception_master_breakpoint_hook (debug_objfile))
1940319c 3582 break;
186c406b 3583 }
186c406b
TT
3584}
3585
9ef9e6a6
KS
3586/* Does B have a location spec? */
3587
3588static int
3589breakpoint_event_location_empty_p (const struct breakpoint *b)
3590{
d28cd78a 3591 return b->location != NULL && event_location_empty_p (b->location.get ());
9ef9e6a6
KS
3592}
3593
c906108c 3594void
fba45db2 3595update_breakpoints_after_exec (void)
c906108c 3596{
25b22b0a
PA
3597 /* We're about to delete breakpoints from GDB's lists. If the
3598 INSERTED flag is true, GDB will try to lift the breakpoints by
3599 writing the breakpoints' "shadow contents" back into memory. The
3600 "shadow contents" are NOT valid after an exec, so GDB should not
3601 do that. Instead, the target is responsible from marking
3602 breakpoints out as soon as it detects an exec. We don't do that
3603 here instead, because there may be other attempts to delete
3604 breakpoints after detecting an exec and before reaching here. */
48d7020b 3605 for (bp_location *bploc : all_bp_locations ())
6c95b8df
PA
3606 if (bploc->pspace == current_program_space)
3607 gdb_assert (!bploc->inserted);
c906108c 3608
1428b37a 3609 for (breakpoint *b : all_breakpoints_safe ())
01add95b
SM
3610 {
3611 if (b->pspace != current_program_space)
c5aa993b 3612 continue;
c906108c 3613
01add95b
SM
3614 /* Solib breakpoints must be explicitly reset after an exec(). */
3615 if (b->type == bp_shlib_event)
3616 {
3617 delete_breakpoint (b);
3618 continue;
3619 }
4efc6507 3620
01add95b
SM
3621 /* JIT breakpoints must be explicitly reset after an exec(). */
3622 if (b->type == bp_jit_event)
3623 {
3624 delete_breakpoint (b);
3625 continue;
3626 }
c4093a6a 3627
01add95b
SM
3628 /* Thread event breakpoints must be set anew after an exec(),
3629 as must overlay event and longjmp master breakpoints. */
3630 if (b->type == bp_thread_event || b->type == bp_overlay_event
3631 || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3632 || b->type == bp_exception_master)
3633 {
3634 delete_breakpoint (b);
3635 continue;
3636 }
c5aa993b 3637
01add95b
SM
3638 /* Step-resume breakpoints are meaningless after an exec(). */
3639 if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3640 {
3641 delete_breakpoint (b);
3642 continue;
3643 }
7c16b83e 3644
01add95b
SM
3645 /* Just like single-step breakpoints. */
3646 if (b->type == bp_single_step)
3647 {
3648 delete_breakpoint (b);
3649 continue;
3650 }
611c83ae 3651
01add95b
SM
3652 /* Longjmp and longjmp-resume breakpoints are also meaningless
3653 after an exec. */
3654 if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3655 || b->type == bp_longjmp_call_dummy
3656 || b->type == bp_exception || b->type == bp_exception_resume)
3657 {
3658 delete_breakpoint (b);
3659 continue;
3660 }
ce78b96d 3661
01add95b
SM
3662 if (b->type == bp_catchpoint)
3663 {
3664 /* For now, none of the bp_catchpoint breakpoints need to
3665 do anything at this point. In the future, if some of
3666 the catchpoints need to something, we will need to add
3667 a new method, and call this method from here. */
3668 continue;
3669 }
c5aa993b 3670
01add95b
SM
3671 /* bp_finish is a special case. The only way we ought to be able
3672 to see one of these when an exec() has happened, is if the user
3673 caught a vfork, and then said "finish". Ordinarily a finish just
3674 carries them to the call-site of the current callee, by setting
3675 a temporary bp there and resuming. But in this case, the finish
3676 will carry them entirely through the vfork & exec.
3677
3678 We don't want to allow a bp_finish to remain inserted now. But
3679 we can't safely delete it, 'cause finish_command has a handle to
3680 the bp on a bpstat, and will later want to delete it. There's a
3681 chance (and I've seen it happen) that if we delete the bp_finish
3682 here, that its storage will get reused by the time finish_command
3683 gets 'round to deleting the "use to be a bp_finish" breakpoint.
3684 We really must allow finish_command to delete a bp_finish.
3685
3686 In the absence of a general solution for the "how do we know
3687 it's safe to delete something others may have handles to?"
3688 problem, what we'll do here is just uninsert the bp_finish, and
3689 let finish_command delete it.
3690
3691 (We know the bp_finish is "doomed" in the sense that it's
3692 momentary, and will be deleted as soon as finish_command sees
3693 the inferior stopped. So it doesn't matter that the bp's
3694 address is probably bogus in the new a.out, unlike e.g., the
3695 solib breakpoints.) */
3696
3697 if (b->type == bp_finish)
3698 {
3699 continue;
3700 }
3701
3702 /* Without a symbolic address, we have little hope of the
3703 pre-exec() address meaning the same thing in the post-exec()
3704 a.out. */
3705 if (breakpoint_event_location_empty_p (b))
3706 {
3707 delete_breakpoint (b);
3708 continue;
3709 }
3710 }
c906108c
SS
3711}
3712
3713int
d80ee84f 3714detach_breakpoints (ptid_t ptid)
c906108c 3715{
3a1bae8e 3716 int val = 0;
2989a365 3717 scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
6c95b8df 3718 struct inferior *inf = current_inferior ();
c5aa993b 3719
e99b03dc 3720 if (ptid.pid () == inferior_ptid.pid ())
8a3fe4f8 3721 error (_("Cannot detach breakpoints of inferior_ptid"));
c5aa993b 3722
6c95b8df 3723 /* Set inferior_ptid; remove_breakpoint_1 uses this global. */
d80ee84f 3724 inferior_ptid = ptid;
48d7020b 3725 for (bp_location *bl : all_bp_locations ())
01add95b
SM
3726 {
3727 if (bl->pspace != inf->pspace)
3728 continue;
3729
3730 /* This function must physically remove breakpoints locations
3731 from the specified ptid, without modifying the breakpoint
3732 package's state. Locations of type bp_loc_other are only
3733 maintained at GDB side. So, there is no need to remove
3734 these bp_loc_other locations. Moreover, removing these
3735 would modify the breakpoint package's state. */
3736 if (bl->loc_type == bp_loc_other)
3737 continue;
3738
3739 if (bl->inserted)
3740 val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3741 }
d03285ec 3742
3a1bae8e 3743 return val;
c906108c
SS
3744}
3745
35df4500 3746/* Remove the breakpoint location BL from the current address space.
6c95b8df
PA
3747 Note that this is used to detach breakpoints from a child fork.
3748 When we get here, the child isn't in the inferior list, and neither
3749 do we have objects to represent its address space --- we should
35df4500 3750 *not* look at bl->pspace->aspace here. */
6c95b8df 3751
c906108c 3752static int
b2b6a7da 3753remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
c906108c
SS
3754{
3755 int val;
c5aa993b 3756
35df4500
TJB
3757 /* BL is never in moribund_locations by our callers. */
3758 gdb_assert (bl->owner != NULL);
2bdf28a0 3759
74960c60
VP
3760 /* The type of none suggests that owner is actually deleted.
3761 This should not ever happen. */
35df4500 3762 gdb_assert (bl->owner->type != bp_none);
0bde7532 3763
35df4500
TJB
3764 if (bl->loc_type == bp_loc_software_breakpoint
3765 || bl->loc_type == bp_loc_hardware_breakpoint)
c906108c 3766 {
c02f5703
MS
3767 /* "Normal" instruction breakpoint: either the standard
3768 trap-instruction bp (bp_breakpoint), or a
3769 bp_hardware_breakpoint. */
3770
3771 /* First check to see if we have to handle an overlay. */
3772 if (overlay_debugging == ovly_off
35df4500
TJB
3773 || bl->section == NULL
3774 || !(section_is_overlay (bl->section)))
c02f5703
MS
3775 {
3776 /* No overlay handling: just remove the breakpoint. */
08351840
PA
3777
3778 /* If we're trying to uninsert a memory breakpoint that we
3779 know is set in a dynamic object that is marked
3780 shlib_disabled, then either the dynamic object was
3781 removed with "remove-symbol-file" or with
3782 "nosharedlibrary". In the former case, we don't know
3783 whether another dynamic object might have loaded over the
3784 breakpoint's address -- the user might well let us know
3785 about it next with add-symbol-file (the whole point of
d03de421 3786 add-symbol-file is letting the user manually maintain a
08351840
PA
3787 list of dynamically loaded objects). If we have the
3788 breakpoint's shadow memory, that is, this is a software
3789 breakpoint managed by GDB, check whether the breakpoint
3790 is still inserted in memory, to avoid overwriting wrong
3791 code with stale saved shadow contents. Note that HW
3792 breakpoints don't have shadow memory, as they're
3793 implemented using a mechanism that is not dependent on
3794 being able to modify the target's memory, and as such
3795 they should always be removed. */
3796 if (bl->shlib_disabled
3797 && bl->target_info.shadow_len != 0
3798 && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3799 val = 0;
3800 else
73971819 3801 val = bl->owner->ops->remove_location (bl, reason);
c02f5703 3802 }
c906108c
SS
3803 else
3804 {
4a64f543 3805 /* This breakpoint is in an overlay section.
c02f5703
MS
3806 Did we set a breakpoint at the LMA? */
3807 if (!overlay_events_enabled)
3808 {
3809 /* Yes -- overlay event support is not active, so we
3810 should have set a breakpoint at the LMA. Remove it.
3811 */
c02f5703
MS
3812 /* Ignore any failures: if the LMA is in ROM, we will
3813 have already warned when we failed to insert it. */
35df4500
TJB
3814 if (bl->loc_type == bp_loc_hardware_breakpoint)
3815 target_remove_hw_breakpoint (bl->gdbarch,
3816 &bl->overlay_target_info);
c02f5703 3817 else
35df4500 3818 target_remove_breakpoint (bl->gdbarch,
73971819
PA
3819 &bl->overlay_target_info,
3820 reason);
c02f5703
MS
3821 }
3822 /* Did we set a breakpoint at the VMA?
3823 If so, we will have marked the breakpoint 'inserted'. */
35df4500 3824 if (bl->inserted)
c906108c 3825 {
c02f5703
MS
3826 /* Yes -- remove it. Previously we did not bother to
3827 remove the breakpoint if the section had been
3828 unmapped, but let's not rely on that being safe. We
3829 don't know what the overlay manager might do. */
aa67235e
UW
3830
3831 /* However, we should remove *software* breakpoints only
3832 if the section is still mapped, or else we overwrite
3833 wrong code with the saved shadow contents. */
348d480f
PA
3834 if (bl->loc_type == bp_loc_hardware_breakpoint
3835 || section_is_mapped (bl->section))
73971819 3836 val = bl->owner->ops->remove_location (bl, reason);
aa67235e
UW
3837 else
3838 val = 0;
c906108c 3839 }
c02f5703
MS
3840 else
3841 {
3842 /* No -- not inserted, so no need to remove. No error. */
3843 val = 0;
3844 }
c906108c 3845 }
879d1e6b 3846
08351840
PA
3847 /* In some cases, we might not be able to remove a breakpoint in
3848 a shared library that has already been removed, but we have
3849 not yet processed the shlib unload event. Similarly for an
3850 unloaded add-symbol-file object - the user might not yet have
3851 had the chance to remove-symbol-file it. shlib_disabled will
3852 be set if the library/object has already been removed, but
3853 the breakpoint hasn't been uninserted yet, e.g., after
3854 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3855 always-inserted mode. */
076855f9 3856 if (val
08351840
PA
3857 && (bl->loc_type == bp_loc_software_breakpoint
3858 && (bl->shlib_disabled
3859 || solib_name_from_address (bl->pspace, bl->address)
d03de421
PA
3860 || shared_objfile_contains_address_p (bl->pspace,
3861 bl->address))))
879d1e6b
UW
3862 val = 0;
3863
c906108c
SS
3864 if (val)
3865 return val;
b2b6a7da 3866 bl->inserted = (reason == DETACH_BREAKPOINT);
c906108c 3867 }
35df4500 3868 else if (bl->loc_type == bp_loc_hardware_watchpoint)
c906108c 3869 {
77b06cd7
TJB
3870 gdb_assert (bl->owner->ops != NULL
3871 && bl->owner->ops->remove_location != NULL);
3872
b2b6a7da 3873 bl->inserted = (reason == DETACH_BREAKPOINT);
73971819 3874 bl->owner->ops->remove_location (bl, reason);
2e70b7b9 3875
c906108c 3876 /* Failure to remove any of the hardware watchpoints comes here. */
b2b6a7da 3877 if (reason == REMOVE_BREAKPOINT && bl->inserted)
8a3fe4f8 3878 warning (_("Could not remove hardware watchpoint %d."),
35df4500 3879 bl->owner->number);
c906108c 3880 }
35df4500 3881 else if (bl->owner->type == bp_catchpoint
dda83cd7
SM
3882 && breakpoint_enabled (bl->owner)
3883 && !bl->duplicate)
ce78b96d 3884 {
77b06cd7
TJB
3885 gdb_assert (bl->owner->ops != NULL
3886 && bl->owner->ops->remove_location != NULL);
ce78b96d 3887
73971819 3888 val = bl->owner->ops->remove_location (bl, reason);
ce78b96d
JB
3889 if (val)
3890 return val;
77b06cd7 3891
b2b6a7da 3892 bl->inserted = (reason == DETACH_BREAKPOINT);
ce78b96d 3893 }
c906108c
SS
3894
3895 return 0;
3896}
3897
6c95b8df 3898static int
834c0d03 3899remove_breakpoint (struct bp_location *bl)
6c95b8df 3900{
35df4500
TJB
3901 /* BL is never in moribund_locations by our callers. */
3902 gdb_assert (bl->owner != NULL);
2bdf28a0 3903
6c95b8df
PA
3904 /* The type of none suggests that owner is actually deleted.
3905 This should not ever happen. */
35df4500 3906 gdb_assert (bl->owner->type != bp_none);
6c95b8df 3907
5ed8105e 3908 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 3909
35df4500 3910 switch_to_program_space_and_thread (bl->pspace);
6c95b8df 3911
5ed8105e 3912 return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
6c95b8df
PA
3913}
3914
c906108c
SS
3915/* Clear the "inserted" flag in all breakpoints. */
3916
25b22b0a 3917void
fba45db2 3918mark_breakpoints_out (void)
c906108c 3919{
48d7020b 3920 for (bp_location *bl : all_bp_locations ())
66c4b3e8 3921 if (bl->pspace == current_program_space)
35df4500 3922 bl->inserted = 0;
c906108c
SS
3923}
3924
53a5351d
JM
3925/* Clear the "inserted" flag in all breakpoints and delete any
3926 breakpoints which should go away between runs of the program.
c906108c
SS
3927
3928 Plus other such housekeeping that has to be done for breakpoints
3929 between runs.
3930
53a5351d
JM
3931 Note: this function gets called at the end of a run (by
3932 generic_mourn_inferior) and when a run begins (by
4a64f543 3933 init_wait_for_inferior). */
c906108c
SS
3934
3935
3936
3937void
fba45db2 3938breakpoint_init_inferior (enum inf_context context)
c906108c 3939{
6c95b8df 3940 struct program_space *pspace = current_program_space;
c906108c 3941
50c71eaf
PA
3942 /* If breakpoint locations are shared across processes, then there's
3943 nothing to do. */
f5656ead 3944 if (gdbarch_has_global_breakpoints (target_gdbarch ()))
50c71eaf
PA
3945 return;
3946
1a853c52 3947 mark_breakpoints_out ();
075f6582 3948
1428b37a 3949 for (breakpoint *b : all_breakpoints_safe ())
01add95b
SM
3950 {
3951 if (b->loc && b->loc->pspace != pspace)
3952 continue;
6c95b8df 3953
01add95b
SM
3954 switch (b->type)
3955 {
3956 case bp_call_dummy:
3957 case bp_longjmp_call_dummy:
c906108c 3958
01add95b
SM
3959 /* If the call dummy breakpoint is at the entry point it will
3960 cause problems when the inferior is rerun, so we better get
3961 rid of it. */
ab92d69b 3962
01add95b 3963 case bp_watchpoint_scope:
ab92d69b 3964
01add95b 3965 /* Also get rid of scope breakpoints. */
ab92d69b 3966
01add95b 3967 case bp_shlib_event:
ab92d69b 3968
01add95b
SM
3969 /* Also remove solib event breakpoints. Their addresses may
3970 have changed since the last time we ran the program.
3971 Actually we may now be debugging against different target;
3972 and so the solib backend that installed this breakpoint may
3973 not be used in by the target. E.g.,
ab92d69b 3974
01add95b
SM
3975 (gdb) file prog-linux
3976 (gdb) run # native linux target
3977 ...
3978 (gdb) kill
3979 (gdb) file prog-win.exe
3980 (gdb) tar rem :9999 # remote Windows gdbserver.
3981 */
c906108c 3982
01add95b 3983 case bp_step_resume:
f59f708a 3984
01add95b 3985 /* Also remove step-resume breakpoints. */
f59f708a 3986
01add95b 3987 case bp_single_step:
7c16b83e 3988
01add95b 3989 /* Also remove single-step breakpoints. */
7c16b83e 3990
01add95b
SM
3991 delete_breakpoint (b);
3992 break;
c906108c 3993
01add95b
SM
3994 case bp_watchpoint:
3995 case bp_hardware_watchpoint:
3996 case bp_read_watchpoint:
3997 case bp_access_watchpoint:
3998 {
3999 struct watchpoint *w = (struct watchpoint *) b;
c906108c 4000
01add95b
SM
4001 /* Likewise for watchpoints on local expressions. */
4002 if (w->exp_valid_block != NULL)
4003 delete_breakpoint (b);
4004 else
4005 {
4006 /* Get rid of existing locations, which are no longer
4007 valid. New ones will be created in
4008 update_watchpoint, when the inferior is restarted.
4009 The next update_global_location_list call will
4010 garbage collect them. */
4011 b->loc = NULL;
4012
4013 if (context == inf_starting)
4014 {
4015 /* Reset val field to force reread of starting value in
4016 insert_breakpoints. */
4017 w->val.reset (nullptr);
4018 w->val_valid = false;
4019 }
4020 }
4021 }
4022 break;
4023 default:
4024 break;
3a5c3e22 4025 }
01add95b 4026 }
1c5cfe86
PA
4027
4028 /* Get rid of the moribund locations. */
1123588c 4029 for (bp_location *bl : moribund_locations)
35df4500 4030 decref_bp_location (&bl);
1123588c 4031 moribund_locations.clear ();
c906108c
SS
4032}
4033
6c95b8df
PA
4034/* These functions concern about actual breakpoints inserted in the
4035 target --- to e.g. check if we need to do decr_pc adjustment or if
4036 we need to hop over the bkpt --- so we check for address space
4037 match, not program space. */
4038
c2c6d25f
JM
4039/* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4040 exists at PC. It returns ordinary_breakpoint_here if it's an
4041 ordinary breakpoint, or permanent_breakpoint_here if it's a
4042 permanent breakpoint.
4043 - When continuing from a location with an ordinary breakpoint, we
4044 actually single step once before calling insert_breakpoints.
e5dd4106 4045 - When continuing from a location with a permanent breakpoint, we
c2c6d25f
JM
4046 need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4047 the target, to advance the PC past the breakpoint. */
c906108c 4048
c2c6d25f 4049enum breakpoint_here
accd0bcd 4050breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4051{
c2c6d25f 4052 int any_breakpoint_here = 0;
c906108c 4053
48d7020b 4054 for (bp_location *bl : all_bp_locations ())
075f6582 4055 {
35df4500
TJB
4056 if (bl->loc_type != bp_loc_software_breakpoint
4057 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4058 continue;
4059
f1310107 4060 /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL. */
35df4500 4061 if ((breakpoint_enabled (bl->owner)
1a853c52 4062 || bl->permanent)
f1310107 4063 && breakpoint_location_address_match (bl, aspace, pc))
075f6582
DJ
4064 {
4065 if (overlay_debugging
35df4500
TJB
4066 && section_is_overlay (bl->section)
4067 && !section_is_mapped (bl->section))
075f6582 4068 continue; /* unmapped overlay -- can't be a match */
1a853c52 4069 else if (bl->permanent)
075f6582
DJ
4070 return permanent_breakpoint_here;
4071 else
4072 any_breakpoint_here = 1;
4073 }
4074 }
c906108c 4075
f486487f 4076 return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
c906108c
SS
4077}
4078
d35ae833
PA
4079/* See breakpoint.h. */
4080
4081int
accd0bcd 4082breakpoint_in_range_p (const address_space *aspace,
d35ae833
PA
4083 CORE_ADDR addr, ULONGEST len)
4084{
48d7020b 4085 for (bp_location *bl : all_bp_locations ())
d35ae833
PA
4086 {
4087 if (bl->loc_type != bp_loc_software_breakpoint
4088 && bl->loc_type != bp_loc_hardware_breakpoint)
4089 continue;
4090
4091 if ((breakpoint_enabled (bl->owner)
4092 || bl->permanent)
4093 && breakpoint_location_address_range_overlap (bl, aspace,
4094 addr, len))
4095 {
4096 if (overlay_debugging
4097 && section_is_overlay (bl->section)
4098 && !section_is_mapped (bl->section))
4099 {
4100 /* Unmapped overlay -- can't be a match. */
4101 continue;
4102 }
4103
4104 return 1;
4105 }
4106 }
4107
4108 return 0;
4109}
4110
1c5cfe86
PA
4111/* Return true if there's a moribund breakpoint at PC. */
4112
4113int
accd0bcd 4114moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
1c5cfe86 4115{
1123588c 4116 for (bp_location *loc : moribund_locations)
f1310107 4117 if (breakpoint_location_address_match (loc, aspace, pc))
1c5cfe86
PA
4118 return 1;
4119
4120 return 0;
4121}
c2c6d25f 4122
f7ce857f
PA
4123/* Returns non-zero iff BL is inserted at PC, in address space
4124 ASPACE. */
4125
4126static int
4127bp_location_inserted_here_p (struct bp_location *bl,
accd0bcd 4128 const address_space *aspace, CORE_ADDR pc)
f7ce857f
PA
4129{
4130 if (bl->inserted
4131 && breakpoint_address_match (bl->pspace->aspace, bl->address,
4132 aspace, pc))
4133 {
4134 if (overlay_debugging
4135 && section_is_overlay (bl->section)
4136 && !section_is_mapped (bl->section))
4137 return 0; /* unmapped overlay -- can't be a match */
4138 else
4139 return 1;
4140 }
4141 return 0;
4142}
4143
a1fd2fa5 4144/* Returns non-zero iff there's a breakpoint inserted at PC. */
c906108c
SS
4145
4146int
accd0bcd 4147breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
c906108c 4148{
e0d9a270 4149 for (bp_location *bl : all_bp_locations_at_addr (pc))
c5aa993b 4150 {
35df4500
TJB
4151 if (bl->loc_type != bp_loc_software_breakpoint
4152 && bl->loc_type != bp_loc_hardware_breakpoint)
075f6582
DJ
4153 continue;
4154
f7ce857f
PA
4155 if (bp_location_inserted_here_p (bl, aspace, pc))
4156 return 1;
c5aa993b 4157 }
c36b740a
VP
4158 return 0;
4159}
4160
a1fd2fa5
PA
4161/* This function returns non-zero iff there is a software breakpoint
4162 inserted at PC. */
c36b740a
VP
4163
4164int
accd0bcd 4165software_breakpoint_inserted_here_p (const address_space *aspace,
a1fd2fa5 4166 CORE_ADDR pc)
4fa8626c 4167{
e0d9a270 4168 for (bp_location *bl : all_bp_locations_at_addr (pc))
4fa8626c 4169 {
35df4500 4170 if (bl->loc_type != bp_loc_software_breakpoint)
4fa8626c
DJ
4171 continue;
4172
f7ce857f
PA
4173 if (bp_location_inserted_here_p (bl, aspace, pc))
4174 return 1;
4fa8626c
DJ
4175 }
4176
4177 return 0;
9c02b525
PA
4178}
4179
4180/* See breakpoint.h. */
4181
4182int
accd0bcd 4183hardware_breakpoint_inserted_here_p (const address_space *aspace,
9c02b525
PA
4184 CORE_ADDR pc)
4185{
e0d9a270 4186 for (bp_location *bl : all_bp_locations_at_addr (pc))
9c02b525 4187 {
9c02b525
PA
4188 if (bl->loc_type != bp_loc_hardware_breakpoint)
4189 continue;
4190
4191 if (bp_location_inserted_here_p (bl, aspace, pc))
4192 return 1;
4193 }
4194
4195 return 0;
4fa8626c
DJ
4196}
4197
9093389c 4198int
accd0bcd 4199hardware_watchpoint_inserted_in_range (const address_space *aspace,
9093389c
PA
4200 CORE_ADDR addr, ULONGEST len)
4201{
43892fdf 4202 for (breakpoint *bpt : all_breakpoints ())
9093389c 4203 {
9093389c
PA
4204 if (bpt->type != bp_hardware_watchpoint
4205 && bpt->type != bp_access_watchpoint)
4206 continue;
4207
4208 if (!breakpoint_enabled (bpt))
4209 continue;
4210
40cb8ca5 4211 for (bp_location *loc : bpt->locations ())
9093389c
PA
4212 if (loc->pspace->aspace == aspace && loc->inserted)
4213 {
4214 CORE_ADDR l, h;
4215
4216 /* Check for intersection. */
768adc05
PA
4217 l = std::max<CORE_ADDR> (loc->address, addr);
4218 h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
9093389c
PA
4219 if (l < h)
4220 return 1;
4221 }
4222 }
4223 return 0;
4224}
c5aa993b 4225
f2478a7e 4226/* See breakpoint.h. */
c906108c 4227
f2478a7e
SM
4228bool
4229is_catchpoint (struct breakpoint *b)
c906108c 4230{
f2478a7e 4231 return (b->type == bp_catchpoint);
c906108c
SS
4232}
4233
c906108c
SS
4234/* Clear a bpstat so that it says we are not at any breakpoint.
4235 Also free any storage that is part of a bpstat. */
4236
4237void
313f3b21 4238bpstat_clear (bpstat **bsp)
c906108c 4239{
313f3b21
SM
4240 bpstat *p;
4241 bpstat *q;
c906108c
SS
4242
4243 if (bsp == 0)
4244 return;
4245 p = *bsp;
4246 while (p != NULL)
4247 {
4248 q = p->next;
04afa70c 4249 delete p;
c906108c
SS
4250 p = q;
4251 }
4252 *bsp = NULL;
4253}
4254
313f3b21 4255bpstat::bpstat (const bpstat &other)
04afa70c
TT
4256 : next (NULL),
4257 bp_location_at (other.bp_location_at),
4258 breakpoint_at (other.breakpoint_at),
4259 commands (other.commands),
04afa70c
TT
4260 print (other.print),
4261 stop (other.stop),
4262 print_it (other.print_it)
4263{
850645cf
TT
4264 if (other.old_val != NULL)
4265 old_val = release_value (value_copy (other.old_val.get ()));
04afa70c
TT
4266}
4267
c906108c
SS
4268/* Return a copy of a bpstat. Like "bs1 = bs2" but all storage that
4269 is part of the bpstat is copied as well. */
4270
313f3b21
SM
4271bpstat *
4272bpstat_copy (bpstat *bs)
c906108c 4273{
313f3b21
SM
4274 bpstat *p = nullptr;
4275 bpstat *tmp;
4276 bpstat *retval = nullptr;
c906108c
SS
4277
4278 if (bs == NULL)
4279 return bs;
4280
4281 for (; bs != NULL; bs = bs->next)
4282 {
313f3b21 4283 tmp = new bpstat (*bs);
31cc81e9 4284
c906108c
SS
4285 if (p == NULL)
4286 /* This is the first thing in the chain. */
4287 retval = tmp;
4288 else
4289 p->next = tmp;
4290 p = tmp;
4291 }
4292 p->next = NULL;
4293 return retval;
4294}
4295
4a64f543 4296/* Find the bpstat associated with this breakpoint. */
c906108c 4297
313f3b21
SM
4298bpstat *
4299bpstat_find_breakpoint (bpstat *bsp, struct breakpoint *breakpoint)
c906108c 4300{
c5aa993b
JM
4301 if (bsp == NULL)
4302 return NULL;
c906108c 4303
c5aa993b
JM
4304 for (; bsp != NULL; bsp = bsp->next)
4305 {
f431efe5 4306 if (bsp->breakpoint_at == breakpoint)
c5aa993b
JM
4307 return bsp;
4308 }
c906108c
SS
4309 return NULL;
4310}
4311
ab04a2af
TT
4312/* See breakpoint.h. */
4313
4c462cb0 4314bool
313f3b21 4315bpstat_explains_signal (bpstat *bsp, enum gdb_signal sig)
ab04a2af 4316{
ab04a2af
TT
4317 for (; bsp != NULL; bsp = bsp->next)
4318 {
427cd150
TT
4319 if (bsp->breakpoint_at == NULL)
4320 {
4321 /* A moribund location can never explain a signal other than
4322 GDB_SIGNAL_TRAP. */
4323 if (sig == GDB_SIGNAL_TRAP)
4c462cb0 4324 return true;
427cd150
TT
4325 }
4326 else
47591c29
PA
4327 {
4328 if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4329 sig))
4c462cb0 4330 return true;
47591c29 4331 }
ab04a2af
TT
4332 }
4333
4c462cb0 4334 return false;
ab04a2af
TT
4335}
4336
4a64f543
MS
4337/* Put in *NUM the breakpoint number of the first breakpoint we are
4338 stopped at. *BSP upon return is a bpstat which points to the
4339 remaining breakpoints stopped at (but which is not guaranteed to be
4340 good for anything but further calls to bpstat_num).
4341
8671a17b
PA
4342 Return 0 if passed a bpstat which does not indicate any breakpoints.
4343 Return -1 if stopped at a breakpoint that has been deleted since
4344 we set it.
4345 Return 1 otherwise. */
c906108c
SS
4346
4347int
313f3b21 4348bpstat_num (bpstat **bsp, int *num)
c906108c
SS
4349{
4350 struct breakpoint *b;
4351
4352 if ((*bsp) == NULL)
4353 return 0; /* No more breakpoint values */
8671a17b 4354
4a64f543
MS
4355 /* We assume we'll never have several bpstats that correspond to a
4356 single breakpoint -- otherwise, this function might return the
4357 same number more than once and this will look ugly. */
f431efe5 4358 b = (*bsp)->breakpoint_at;
8671a17b
PA
4359 *bsp = (*bsp)->next;
4360 if (b == NULL)
4361 return -1; /* breakpoint that's been deleted since */
4362
4363 *num = b->number; /* We have its number */
4364 return 1;
c906108c
SS
4365}
4366
e93ca019 4367/* See breakpoint.h. */
c906108c
SS
4368
4369void
e93ca019 4370bpstat_clear_actions (void)
c906108c 4371{
313f3b21 4372 bpstat *bs;
e93ca019 4373
00431a78 4374 if (inferior_ptid == null_ptid)
e93ca019
JK
4375 return;
4376
00431a78 4377 thread_info *tp = inferior_thread ();
e93ca019 4378 for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
c906108c 4379 {
d1b0a7bf 4380 bs->commands = NULL;
850645cf 4381 bs->old_val.reset (nullptr);
c906108c
SS
4382 }
4383}
4384
f3b1572e
PA
4385/* Called when a command is about to proceed the inferior. */
4386
4387static void
4388breakpoint_about_to_proceed (void)
4389{
d7e15655 4390 if (inferior_ptid != null_ptid)
f3b1572e
PA
4391 {
4392 struct thread_info *tp = inferior_thread ();
4393
4394 /* Allow inferior function calls in breakpoint commands to not
4395 interrupt the command list. When the call finishes
4396 successfully, the inferior will be standing at the same
4397 breakpoint as if nothing happened. */
16c381f0 4398 if (tp->control.in_infcall)
f3b1572e
PA
4399 return;
4400 }
4401
4402 breakpoint_proceeded = 1;
4403}
4404
abf85f46
JK
4405/* Return non-zero iff CMD as the first line of a command sequence is `silent'
4406 or its equivalent. */
4407
4408static int
4409command_line_is_silent (struct command_line *cmd)
4410{
4f45d445 4411 return cmd && (strcmp ("silent", cmd->line) == 0);
abf85f46
JK
4412}
4413
4a64f543
MS
4414/* Execute all the commands associated with all the breakpoints at
4415 this location. Any of these commands could cause the process to
4416 proceed beyond this point, etc. We look out for such changes by
4417 checking the global "breakpoint_proceeded" after each command.
c906108c 4418
347bddb7
PA
4419 Returns true if a breakpoint command resumed the inferior. In that
4420 case, it is the caller's responsibility to recall it again with the
4421 bpstat of the current thread. */
4422
4423static int
313f3b21 4424bpstat_do_actions_1 (bpstat **bsp)
c906108c 4425{
313f3b21 4426 bpstat *bs;
347bddb7 4427 int again = 0;
c906108c
SS
4428
4429 /* Avoid endless recursion if a `source' command is contained
4430 in bs->commands. */
4431 if (executing_breakpoint_commands)
347bddb7 4432 return 0;
c906108c 4433
81b1e71c
TT
4434 scoped_restore save_executing
4435 = make_scoped_restore (&executing_breakpoint_commands, 1);
c906108c 4436
1ac32117 4437 scoped_restore preventer = prevent_dont_repeat ();
cf6c5ffb 4438
4a64f543 4439 /* This pointer will iterate over the list of bpstat's. */
c906108c
SS
4440 bs = *bsp;
4441
4442 breakpoint_proceeded = 0;
4443 for (; bs != NULL; bs = bs->next)
4444 {
d1b0a7bf 4445 struct command_line *cmd = NULL;
6c50ab1c
JB
4446
4447 /* Take ownership of the BSP's command tree, if it has one.
4448
dda83cd7
SM
4449 The command tree could legitimately contain commands like
4450 'step' and 'next', which call clear_proceed_status, which
4451 frees stop_bpstat's command tree. To make sure this doesn't
4452 free the tree we're executing out from under us, we need to
4453 take ownership of the tree ourselves. Since a given bpstat's
4454 commands are only executed once, we don't need to copy it; we
4455 can clear the pointer in the bpstat, and make sure we free
4456 the tree when we're done. */
d1b0a7bf 4457 counted_command_line ccmd = bs->commands;
9add0f1b 4458 bs->commands = NULL;
d1b0a7bf
TT
4459 if (ccmd != NULL)
4460 cmd = ccmd.get ();
abf85f46
JK
4461 if (command_line_is_silent (cmd))
4462 {
4463 /* The action has been already done by bpstat_stop_status. */
4464 cmd = cmd->next;
4465 }
6c50ab1c 4466
c906108c
SS
4467 while (cmd != NULL)
4468 {
4469 execute_control_command (cmd);
4470
4471 if (breakpoint_proceeded)
4472 break;
4473 else
4474 cmd = cmd->next;
4475 }
6c50ab1c 4476
c906108c 4477 if (breakpoint_proceeded)
32c1e744 4478 {
cb814510 4479 if (current_ui->async)
347bddb7
PA
4480 /* If we are in async mode, then the target might be still
4481 running, not stopped at any breakpoint, so nothing for
4482 us to do here -- just return to the event loop. */
4483 ;
32c1e744
VP
4484 else
4485 /* In sync mode, when execute_control_command returns
4486 we're already standing on the next breakpoint.
347bddb7
PA
4487 Breakpoint commands for that stop were not run, since
4488 execute_command does not run breakpoint commands --
4489 only command_line_handler does, but that one is not
4490 involved in execution of breakpoint commands. So, we
4491 can now execute breakpoint commands. It should be
4492 noted that making execute_command do bpstat actions is
4493 not an option -- in this case we'll have recursive
4494 invocation of bpstat for each breakpoint with a
4495 command, and can easily blow up GDB stack. Instead, we
4496 return true, which will trigger the caller to recall us
4497 with the new stop_bpstat. */
4498 again = 1;
4499 break;
32c1e744 4500 }
c906108c 4501 }
347bddb7
PA
4502 return again;
4503}
4504
00431a78
PA
4505/* Helper for bpstat_do_actions. Get the current thread, if there's
4506 one, is alive and has execution. Return NULL otherwise. */
4507
4508static thread_info *
4509get_bpstat_thread ()
4510{
55f6301a 4511 if (inferior_ptid == null_ptid || !target_has_execution ())
00431a78
PA
4512 return NULL;
4513
4514 thread_info *tp = inferior_thread ();
611841bb 4515 if (tp->state == THREAD_EXITED || tp->executing ())
00431a78
PA
4516 return NULL;
4517 return tp;
4518}
4519
347bddb7
PA
4520void
4521bpstat_do_actions (void)
4522{
694c6bf5 4523 auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
00431a78 4524 thread_info *tp;
353d1d73 4525
347bddb7 4526 /* Do any commands attached to breakpoint we are stopped at. */
00431a78
PA
4527 while ((tp = get_bpstat_thread ()) != NULL)
4528 {
4529 /* Since in sync mode, bpstat_do_actions may resume the
4530 inferior, and only return when it is stopped at the next
4531 breakpoint, we keep doing breakpoint actions until it returns
4532 false to indicate the inferior was not resumed. */
4533 if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4534 break;
4535 }
353d1d73 4536
694c6bf5 4537 cleanup_if_error.release ();
c906108c
SS
4538}
4539
fa4727a6
DJ
4540/* Print out the (old or new) value associated with a watchpoint. */
4541
4542static void
4543watchpoint_value_print (struct value *val, struct ui_file *stream)
4544{
4545 if (val == NULL)
7f6aba03 4546 fprintf_styled (stream, metadata_style.style (), _("<unreadable>"));
fa4727a6 4547 else
79a45b7d
TT
4548 {
4549 struct value_print_options opts;
4550 get_user_print_options (&opts);
4551 value_print (val, stream, &opts);
4552 }
fa4727a6
DJ
4553}
4554
f303dbd6
PA
4555/* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4556 debugging multiple threads. */
4557
4558void
4559maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4560{
112e8700 4561 if (uiout->is_mi_like_p ())
f303dbd6
PA
4562 return;
4563
112e8700 4564 uiout->text ("\n");
f303dbd6
PA
4565
4566 if (show_thread_that_caused_stop ())
4567 {
f303dbd6
PA
4568 struct thread_info *thr = inferior_thread ();
4569
112e8700 4570 uiout->text ("Thread ");
33eca680 4571 uiout->field_string ("thread-id", print_thread_id (thr));
f303dbd6 4572
25558938 4573 const char *name = thread_name (thr);
f303dbd6
PA
4574 if (name != NULL)
4575 {
112e8700 4576 uiout->text (" \"");
33eca680 4577 uiout->field_string ("name", name);
112e8700 4578 uiout->text ("\"");
f303dbd6
PA
4579 }
4580
112e8700 4581 uiout->text (" hit ");
f303dbd6
PA
4582 }
4583}
4584
e514a9d6 4585/* Generic routine for printing messages indicating why we
4a64f543 4586 stopped. The behavior of this function depends on the value
e514a9d6
JM
4587 'print_it' in the bpstat structure. Under some circumstances we
4588 may decide not to print anything here and delegate the task to
4a64f543 4589 normal_stop(). */
e514a9d6
JM
4590
4591static enum print_stop_action
313f3b21 4592print_bp_stop_message (bpstat *bs)
e514a9d6
JM
4593{
4594 switch (bs->print_it)
4595 {
4596 case print_it_noop:
4a64f543 4597 /* Nothing should be printed for this bpstat entry. */
e514a9d6
JM
4598 return PRINT_UNKNOWN;
4599 break;
4600
4601 case print_it_done:
4602 /* We still want to print the frame, but we already printed the
dda83cd7 4603 relevant messages. */
e514a9d6
JM
4604 return PRINT_SRC_AND_LOC;
4605 break;
4606
4607 case print_it_normal:
4f8d1dc6 4608 {
f431efe5
PA
4609 struct breakpoint *b = bs->breakpoint_at;
4610
1a6a67de
TJB
4611 /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4612 which has since been deleted. */
4613 if (b == NULL)
4614 return PRINT_UNKNOWN;
4615
348d480f
PA
4616 /* Normal case. Call the breakpoint's print_it method. */
4617 return b->ops->print_it (bs);
4f8d1dc6 4618 }
348d480f 4619 break;
3086aeae 4620
e514a9d6 4621 default:
8e65ff28 4622 internal_error (__FILE__, __LINE__,
e2e0b3e5 4623 _("print_bp_stop_message: unrecognized enum value"));
e514a9d6 4624 break;
c906108c 4625 }
c906108c
SS
4626}
4627
2f9ee862 4628/* See breakpoint.h. */
edcc5120 4629
2f9ee862 4630void
4e9e993a 4631print_solib_event (bool is_catchpoint)
edcc5120 4632{
6fb16ce6 4633 bool any_deleted = !current_program_space->deleted_solibs.empty ();
bcb430e4 4634 bool any_added = !current_program_space->added_solibs.empty ();
edcc5120
TT
4635
4636 if (!is_catchpoint)
4637 {
4638 if (any_added || any_deleted)
112e8700 4639 current_uiout->text (_("Stopped due to shared library event:\n"));
edcc5120 4640 else
112e8700
SM
4641 current_uiout->text (_("Stopped due to shared library event (no "
4642 "libraries added or removed)\n"));
edcc5120
TT
4643 }
4644
112e8700
SM
4645 if (current_uiout->is_mi_like_p ())
4646 current_uiout->field_string ("reason",
4647 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
edcc5120
TT
4648
4649 if (any_deleted)
4650 {
112e8700 4651 current_uiout->text (_(" Inferior unloaded "));
10f489e5 4652 ui_out_emit_list list_emitter (current_uiout, "removed");
6fb16ce6 4653 for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
edcc5120 4654 {
6fb16ce6
SM
4655 const std::string &name = current_program_space->deleted_solibs[ix];
4656
edcc5120 4657 if (ix > 0)
112e8700
SM
4658 current_uiout->text (" ");
4659 current_uiout->field_string ("library", name);
4660 current_uiout->text ("\n");
edcc5120 4661 }
edcc5120
TT
4662 }
4663
4664 if (any_added)
4665 {
112e8700 4666 current_uiout->text (_(" Inferior loaded "));
10f489e5 4667 ui_out_emit_list list_emitter (current_uiout, "added");
bcb430e4 4668 bool first = true;
52941706 4669 for (so_list *iter : current_program_space->added_solibs)
edcc5120 4670 {
bcb430e4 4671 if (!first)
112e8700 4672 current_uiout->text (" ");
bcb430e4 4673 first = false;
112e8700
SM
4674 current_uiout->field_string ("library", iter->so_name);
4675 current_uiout->text ("\n");
edcc5120 4676 }
edcc5120
TT
4677 }
4678}
4679
e514a9d6
JM
4680/* Print a message indicating what happened. This is called from
4681 normal_stop(). The input to this routine is the head of the bpstat
36dfb11c
TT
4682 list - a list of the eventpoints that caused this stop. KIND is
4683 the target_waitkind for the stopping event. This
e514a9d6
JM
4684 routine calls the generic print routine for printing a message
4685 about reasons for stopping. This will print (for example) the
4686 "Breakpoint n," part of the output. The return value of this
4687 routine is one of:
c906108c 4688
4a64f543 4689 PRINT_UNKNOWN: Means we printed nothing.
917317f4 4690 PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4a64f543 4691 code to print the location. An example is
c5aa993b
JM
4692 "Breakpoint 1, " which should be followed by
4693 the location.
917317f4 4694 PRINT_SRC_ONLY: Means we printed something, but there is no need
c5aa993b
JM
4695 to also print the location part of the message.
4696 An example is the catch/throw messages, which
4a64f543 4697 don't require a location appended to the end.
917317f4 4698 PRINT_NOTHING: We have done some printing and we don't need any
4a64f543 4699 further info to be printed. */
c906108c 4700
917317f4 4701enum print_stop_action
313f3b21 4702bpstat_print (bpstat *bs, int kind)
c906108c 4703{
f486487f 4704 enum print_stop_action val;
c5aa993b 4705
c906108c 4706 /* Maybe another breakpoint in the chain caused us to stop.
53a5351d
JM
4707 (Currently all watchpoints go on the bpstat whether hit or not.
4708 That probably could (should) be changed, provided care is taken
c906108c 4709 with respect to bpstat_explains_signal). */
e514a9d6
JM
4710 for (; bs; bs = bs->next)
4711 {
4712 val = print_bp_stop_message (bs);
4713 if (val == PRINT_SRC_ONLY
4714 || val == PRINT_SRC_AND_LOC
4715 || val == PRINT_NOTHING)
4716 return val;
4717 }
c906108c 4718
36dfb11c
TT
4719 /* If we had hit a shared library event breakpoint,
4720 print_bp_stop_message would print out this message. If we hit an
4721 OS-level shared library event, do the same thing. */
4722 if (kind == TARGET_WAITKIND_LOADED)
4723 {
4e9e993a 4724 print_solib_event (false);
36dfb11c
TT
4725 return PRINT_NOTHING;
4726 }
4727
e514a9d6 4728 /* We reached the end of the chain, or we got a null BS to start
4a64f543 4729 with and nothing was printed. */
917317f4 4730 return PRINT_UNKNOWN;
c906108c
SS
4731}
4732
bf469271 4733/* Evaluate the boolean expression EXP and return the result. */
c906108c 4734
bf469271
PA
4735static bool
4736breakpoint_cond_eval (expression *exp)
c906108c 4737{
278cd55f 4738 struct value *mark = value_mark ();
bf469271 4739 bool res = value_true (evaluate_expression (exp));
cc59ec59 4740
c906108c 4741 value_free_to_mark (mark);
bf469271 4742 return res;
c906108c
SS
4743}
4744
5760d0ab 4745/* Allocate a new bpstat. Link it to the FIFO list by BS_LINK_POINTER. */
c906108c 4746
313f3b21 4747bpstat::bpstat (struct bp_location *bl, bpstat ***bs_link_pointer)
04afa70c 4748 : next (NULL),
b6433ede 4749 bp_location_at (bp_location_ref_ptr::new_reference (bl)),
04afa70c
TT
4750 breakpoint_at (bl->owner),
4751 commands (NULL),
04afa70c
TT
4752 print (0),
4753 stop (0),
4754 print_it (print_it_normal)
c906108c 4755{
04afa70c
TT
4756 **bs_link_pointer = this;
4757 *bs_link_pointer = &next;
4758}
4759
313f3b21 4760bpstat::bpstat ()
04afa70c 4761 : next (NULL),
04afa70c
TT
4762 breakpoint_at (NULL),
4763 commands (NULL),
04afa70c
TT
4764 print (0),
4765 stop (0),
4766 print_it (print_it_normal)
4767{
c906108c
SS
4768}
4769\f
d983da9c
DJ
4770/* The target has stopped with waitstatus WS. Check if any hardware
4771 watchpoints have triggered, according to the target. */
4772
4773int
c272a98c 4774watchpoints_triggered (const target_waitstatus &ws)
d983da9c 4775{
57810aa7 4776 bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
d983da9c 4777 CORE_ADDR addr;
d983da9c
DJ
4778
4779 if (!stopped_by_watchpoint)
4780 {
4781 /* We were not stopped by a watchpoint. Mark all watchpoints
4782 as not triggered. */
43892fdf 4783 for (breakpoint *b : all_breakpoints ())
cc60f2e3 4784 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4785 {
4786 struct watchpoint *w = (struct watchpoint *) b;
4787
4788 w->watchpoint_triggered = watch_triggered_no;
4789 }
d983da9c
DJ
4790
4791 return 0;
4792 }
4793
328d42d8 4794 if (!target_stopped_data_address (current_inferior ()->top_target (), &addr))
d983da9c
DJ
4795 {
4796 /* We were stopped by a watchpoint, but we don't know where.
4797 Mark all watchpoints as unknown. */
43892fdf 4798 for (breakpoint *b : all_breakpoints ())
cc60f2e3 4799 if (is_hardware_watchpoint (b))
3a5c3e22
PA
4800 {
4801 struct watchpoint *w = (struct watchpoint *) b;
4802
4803 w->watchpoint_triggered = watch_triggered_unknown;
4804 }
d983da9c 4805
3c4797ba 4806 return 1;
d983da9c
DJ
4807 }
4808
4809 /* The target could report the data address. Mark watchpoints
4810 affected by this data address as triggered, and all others as not
4811 triggered. */
4812
43892fdf 4813 for (breakpoint *b : all_breakpoints ())
cc60f2e3 4814 if (is_hardware_watchpoint (b))
d983da9c 4815 {
3a5c3e22 4816 struct watchpoint *w = (struct watchpoint *) b;
d983da9c 4817
3a5c3e22 4818 w->watchpoint_triggered = watch_triggered_no;
40cb8ca5 4819 for (bp_location *loc : b->locations ())
9c06b0b4 4820 {
3a5c3e22 4821 if (is_masked_watchpoint (b))
9c06b0b4 4822 {
3a5c3e22
PA
4823 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4824 CORE_ADDR start = loc->address & w->hw_wp_mask;
9c06b0b4
TJB
4825
4826 if (newaddr == start)
4827 {
3a5c3e22 4828 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4829 break;
4830 }
4831 }
4832 /* Exact match not required. Within range is sufficient. */
328d42d8
SM
4833 else if (target_watchpoint_addr_within_range
4834 (current_inferior ()->top_target (), addr, loc->address,
4835 loc->length))
9c06b0b4 4836 {
3a5c3e22 4837 w->watchpoint_triggered = watch_triggered_yes;
9c06b0b4
TJB
4838 break;
4839 }
4840 }
d983da9c
DJ
4841 }
4842
4843 return 1;
4844}
4845
bf469271
PA
4846/* Possible return values for watchpoint_check. */
4847enum wp_check_result
4848 {
4849 /* The watchpoint has been deleted. */
4850 WP_DELETED = 1,
4851
4852 /* The value has changed. */
4853 WP_VALUE_CHANGED = 2,
4854
4855 /* The value has not changed. */
4856 WP_VALUE_NOT_CHANGED = 3,
4857
4858 /* Ignore this watchpoint, no matter if the value changed or not. */
4859 WP_IGNORE = 4,
4860 };
c906108c
SS
4861
4862#define BP_TEMPFLAG 1
4863#define BP_HARDWAREFLAG 2
4864
4a64f543 4865/* Evaluate watchpoint condition expression and check if its value
bf469271 4866 changed. */
553e4c11 4867
bf469271 4868static wp_check_result
313f3b21 4869watchpoint_check (bpstat *bs)
c906108c 4870{
3a5c3e22 4871 struct watchpoint *b;
c906108c
SS
4872 struct frame_info *fr;
4873 int within_current_scope;
4874
f431efe5 4875 /* BS is built from an existing struct breakpoint. */
2bdf28a0 4876 gdb_assert (bs->breakpoint_at != NULL);
3a5c3e22 4877 b = (struct watchpoint *) bs->breakpoint_at;
d0fb5eae 4878
f6bc2008
PA
4879 /* If this is a local watchpoint, we only want to check if the
4880 watchpoint frame is in scope if the current thread is the thread
4881 that was used to create the watchpoint. */
4882 if (!watchpoint_in_thread_scope (b))
60e1c644 4883 return WP_IGNORE;
f6bc2008 4884
c906108c
SS
4885 if (b->exp_valid_block == NULL)
4886 within_current_scope = 1;
4887 else
4888 {
edb3359d
DJ
4889 struct frame_info *frame = get_current_frame ();
4890 struct gdbarch *frame_arch = get_frame_arch (frame);
4891 CORE_ADDR frame_pc = get_frame_pc (frame);
4892
c9cf6e20 4893 /* stack_frame_destroyed_p() returns a non-zero value if we're
4a64f543
MS
4894 still in the function but the stack frame has already been
4895 invalidated. Since we can't rely on the values of local
4896 variables after the stack has been destroyed, we are treating
4897 the watchpoint in that state as `not changed' without further
4898 checking. Don't mark watchpoints as changed if the current
4899 frame is in an epilogue - even if they are in some other
4900 frame, our view of the stack is likely to be wrong and
4901 frame_find_by_id could error out. */
c9cf6e20 4902 if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
60e1c644 4903 return WP_IGNORE;
a0f49112 4904
101dcfbe 4905 fr = frame_find_by_id (b->watchpoint_frame);
c906108c 4906 within_current_scope = (fr != NULL);
69fbadd5
DJ
4907
4908 /* If we've gotten confused in the unwinder, we might have
4909 returned a frame that can't describe this variable. */
edb3359d
DJ
4910 if (within_current_scope)
4911 {
4912 struct symbol *function;
4913
4914 function = get_frame_function (fr);
4915 if (function == NULL
4aeddc50 4916 || !contained_in (b->exp_valid_block, function->value_block ()))
edb3359d
DJ
4917 within_current_scope = 0;
4918 }
69fbadd5 4919
edb3359d 4920 if (within_current_scope)
c906108c
SS
4921 /* If we end up stopping, the current frame will get selected
4922 in normal_stop. So this call to select_frame won't affect
4923 the user. */
0f7d239c 4924 select_frame (fr);
c906108c 4925 }
c5aa993b 4926
c906108c
SS
4927 if (within_current_scope)
4928 {
4a64f543 4929 /* We use value_{,free_to_}mark because it could be a *long*
dda83cd7
SM
4930 time before we return to the command level and call
4931 free_all_values. We can't call free_all_values because we
4932 might be in the middle of evaluating a function call. */
c906108c 4933
9c06b0b4 4934 struct value *mark;
fa4727a6
DJ
4935 struct value *new_val;
4936
c1fc2657 4937 if (is_masked_watchpoint (b))
9c06b0b4
TJB
4938 /* Since we don't know the exact trigger address (from
4939 stopped_data_address), just tell the user we've triggered
4940 a mask watchpoint. */
4941 return WP_VALUE_CHANGED;
4942
4943 mark = value_mark ();
1eaebe02 4944 fetch_subexp_value (b->exp.get (), b->exp->op.get (), &new_val,
413403fc 4945 NULL, NULL, false);
218d2fc6 4946
bb9d5f81
PP
4947 if (b->val_bitsize != 0)
4948 new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4949
4a64f543
MS
4950 /* We use value_equal_contents instead of value_equal because
4951 the latter coerces an array to a pointer, thus comparing just
4952 the address of the array instead of its contents. This is
4953 not what we want. */
fa4727a6 4954 if ((b->val != NULL) != (new_val != NULL)
850645cf
TT
4955 || (b->val != NULL && !value_equal_contents (b->val.get (),
4956 new_val)))
c906108c 4957 {
c906108c 4958 bs->old_val = b->val;
850645cf 4959 b->val = release_value (new_val);
4c1d86d9 4960 b->val_valid = true;
850645cf
TT
4961 if (new_val != NULL)
4962 value_free_to_mark (mark);
c906108c
SS
4963 return WP_VALUE_CHANGED;
4964 }
4965 else
4966 {
60e1c644 4967 /* Nothing changed. */
c906108c 4968 value_free_to_mark (mark);
c906108c
SS
4969 return WP_VALUE_NOT_CHANGED;
4970 }
4971 }
4972 else
4973 {
4974 /* This seems like the only logical thing to do because
dda83cd7
SM
4975 if we temporarily ignored the watchpoint, then when
4976 we reenter the block in which it is valid it contains
4977 garbage (in the case of a function, it may have two
4978 garbage values, one before and one after the prologue).
4979 So we can't even detect the first assignment to it and
4980 watch after that (since the garbage may or may not equal
4981 the first value assigned). */
348d480f
PA
4982 /* We print all the stop information in
4983 breakpoint_ops->print_it, but in this case, by the time we
4984 call breakpoint_ops->print_it this bp will be deleted
4985 already. So we have no choice but print the information
4986 here. */
468afe6c 4987
0e454242 4988 SWITCH_THRU_ALL_UIS ()
dda83cd7 4989 {
468afe6c
PA
4990 struct ui_out *uiout = current_uiout;
4991
112e8700
SM
4992 if (uiout->is_mi_like_p ())
4993 uiout->field_string
4994 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
6a831f06
PA
4995 uiout->message ("\nWatchpoint %pF deleted because the program has "
4996 "left the block in\n"
4997 "which its expression is valid.\n",
4998 signed_field ("wpnum", b->number));
468afe6c 4999 }
4ce44c66 5000
cdac0397 5001 /* Make sure the watchpoint's commands aren't executed. */
d1b0a7bf 5002 b->commands = NULL;
d0fb5eae 5003 watchpoint_del_at_next_stop (b);
c906108c
SS
5004
5005 return WP_DELETED;
5006 }
5007}
5008
18a18393 5009/* Return true if it looks like target has stopped due to hitting
348d480f
PA
5010 breakpoint location BL. This function does not check if we should
5011 stop, only if BL explains the stop. */
5012
18a18393 5013static int
6c95b8df 5014bpstat_check_location (const struct bp_location *bl,
accd0bcd 5015 const address_space *aspace, CORE_ADDR bp_addr,
c272a98c 5016 const target_waitstatus &ws)
18a18393
VP
5017{
5018 struct breakpoint *b = bl->owner;
5019
348d480f 5020 /* BL is from an existing breakpoint. */
2bdf28a0
JK
5021 gdb_assert (b != NULL);
5022
bd522513 5023 return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
18a18393
VP
5024}
5025
3a5c3e22
PA
5026/* Determine if the watched values have actually changed, and we
5027 should stop. If not, set BS->stop to 0. */
5028
18a18393 5029static void
313f3b21 5030bpstat_check_watchpoint (bpstat *bs)
18a18393 5031{
2bdf28a0 5032 const struct bp_location *bl;
3a5c3e22 5033 struct watchpoint *b;
2bdf28a0
JK
5034
5035 /* BS is built for existing struct breakpoint. */
b6433ede 5036 bl = bs->bp_location_at.get ();
2bdf28a0 5037 gdb_assert (bl != NULL);
3a5c3e22 5038 b = (struct watchpoint *) bs->breakpoint_at;
2bdf28a0 5039 gdb_assert (b != NULL);
18a18393 5040
18a18393 5041 {
18a18393
VP
5042 int must_check_value = 0;
5043
c1fc2657 5044 if (b->type == bp_watchpoint)
18a18393
VP
5045 /* For a software watchpoint, we must always check the
5046 watched value. */
5047 must_check_value = 1;
5048 else if (b->watchpoint_triggered == watch_triggered_yes)
5049 /* We have a hardware watchpoint (read, write, or access)
5050 and the target earlier reported an address watched by
5051 this watchpoint. */
5052 must_check_value = 1;
5053 else if (b->watchpoint_triggered == watch_triggered_unknown
c1fc2657 5054 && b->type == bp_hardware_watchpoint)
18a18393
VP
5055 /* We were stopped by a hardware watchpoint, but the target could
5056 not report the data address. We must check the watchpoint's
5057 value. Access and read watchpoints are out of luck; without
5058 a data address, we can't figure it out. */
5059 must_check_value = 1;
3a5c3e22 5060
18a18393
VP
5061 if (must_check_value)
5062 {
bf469271
PA
5063 wp_check_result e;
5064
a70b8144 5065 try
bf469271
PA
5066 {
5067 e = watchpoint_check (bs);
5068 }
230d2906 5069 catch (const gdb_exception &ex)
bf469271
PA
5070 {
5071 exception_fprintf (gdb_stderr, ex,
5072 "Error evaluating expression "
5073 "for watchpoint %d\n",
5074 b->number);
5075
5076 SWITCH_THRU_ALL_UIS ()
5077 {
6cb06a8c
TT
5078 gdb_printf (_("Watchpoint %d deleted.\n"),
5079 b->number);
bf469271
PA
5080 }
5081 watchpoint_del_at_next_stop (b);
5082 e = WP_DELETED;
5083 }
bf469271 5084
18a18393
VP
5085 switch (e)
5086 {
5087 case WP_DELETED:
5088 /* We've already printed what needs to be printed. */
5089 bs->print_it = print_it_done;
5090 /* Stop. */
5091 break;
60e1c644
PA
5092 case WP_IGNORE:
5093 bs->print_it = print_it_noop;
5094 bs->stop = 0;
5095 break;
18a18393 5096 case WP_VALUE_CHANGED:
c1fc2657 5097 if (b->type == bp_read_watchpoint)
18a18393 5098 {
85d721b8
PA
5099 /* There are two cases to consider here:
5100
4a64f543 5101 1. We're watching the triggered memory for reads.
85d721b8
PA
5102 In that case, trust the target, and always report
5103 the watchpoint hit to the user. Even though
5104 reads don't cause value changes, the value may
5105 have changed since the last time it was read, and
5106 since we're not trapping writes, we will not see
5107 those, and as such we should ignore our notion of
5108 old value.
5109
4a64f543 5110 2. We're watching the triggered memory for both
85d721b8
PA
5111 reads and writes. There are two ways this may
5112 happen:
5113
4a64f543 5114 2.1. This is a target that can't break on data
85d721b8
PA
5115 reads only, but can break on accesses (reads or
5116 writes), such as e.g., x86. We detect this case
5117 at the time we try to insert read watchpoints.
5118
4a64f543 5119 2.2. Otherwise, the target supports read
85d721b8
PA
5120 watchpoints, but, the user set an access or write
5121 watchpoint watching the same memory as this read
5122 watchpoint.
5123
5124 If we're watching memory writes as well as reads,
5125 ignore watchpoint hits when we find that the
5126 value hasn't changed, as reads don't cause
5127 changes. This still gives false positives when
5128 the program writes the same value to memory as
5129 what there was already in memory (we will confuse
5130 it for a read), but it's much better than
5131 nothing. */
5132
5133 int other_write_watchpoint = 0;
5134
5135 if (bl->watchpoint_type == hw_read)
5136 {
43892fdf 5137 for (breakpoint *other_b : all_breakpoints ())
3a5c3e22
PA
5138 if (other_b->type == bp_hardware_watchpoint
5139 || other_b->type == bp_access_watchpoint)
85d721b8 5140 {
3a5c3e22
PA
5141 struct watchpoint *other_w =
5142 (struct watchpoint *) other_b;
5143
5144 if (other_w->watchpoint_triggered
5145 == watch_triggered_yes)
5146 {
5147 other_write_watchpoint = 1;
5148 break;
5149 }
85d721b8
PA
5150 }
5151 }
5152
5153 if (other_write_watchpoint
5154 || bl->watchpoint_type == hw_access)
5155 {
5156 /* We're watching the same memory for writes,
5157 and the value changed since the last time we
5158 updated it, so this trap must be for a write.
5159 Ignore it. */
5160 bs->print_it = print_it_noop;
5161 bs->stop = 0;
5162 }
18a18393
VP
5163 }
5164 break;
5165 case WP_VALUE_NOT_CHANGED:
c1fc2657
SM
5166 if (b->type == bp_hardware_watchpoint
5167 || b->type == bp_watchpoint)
18a18393
VP
5168 {
5169 /* Don't stop: write watchpoints shouldn't fire if
5170 the value hasn't changed. */
5171 bs->print_it = print_it_noop;
5172 bs->stop = 0;
5173 }
5174 /* Stop. */
5175 break;
5176 default:
5177 /* Can't happen. */
18a18393
VP
5178 break;
5179 }
5180 }
5181 else /* must_check_value == 0 */
5182 {
5183 /* This is a case where some watchpoint(s) triggered, but
5184 not at the address of this watchpoint, or else no
5185 watchpoint triggered after all. So don't print
5186 anything for this watchpoint. */
5187 bs->print_it = print_it_noop;
5188 bs->stop = 0;
5189 }
5190 }
5191}
5192
7d4df6a4
DE
5193/* For breakpoints that are currently marked as telling gdb to stop,
5194 check conditions (condition proper, frame, thread and ignore count)
18a18393
VP
5195 of breakpoint referred to by BS. If we should not stop for this
5196 breakpoint, set BS->stop to 0. */
f431efe5 5197
18a18393 5198static void
313f3b21 5199bpstat_check_breakpoint_conditions (bpstat *bs, thread_info *thread)
18a18393 5200{
2bdf28a0
JK
5201 const struct bp_location *bl;
5202 struct breakpoint *b;
bf469271
PA
5203 /* Assume stop. */
5204 bool condition_result = true;
7d4df6a4
DE
5205 struct expression *cond;
5206
5207 gdb_assert (bs->stop);
2bdf28a0
JK
5208
5209 /* BS is built for existing struct breakpoint. */
b6433ede 5210 bl = bs->bp_location_at.get ();
2bdf28a0 5211 gdb_assert (bl != NULL);
f431efe5 5212 b = bs->breakpoint_at;
2bdf28a0 5213 gdb_assert (b != NULL);
18a18393 5214
b775012e
LM
5215 /* Even if the target evaluated the condition on its end and notified GDB, we
5216 need to do so again since GDB does not know if we stopped due to a
5217 breakpoint or a single step breakpoint. */
5218
18a18393 5219 if (frame_id_p (b->frame_id)
edb3359d 5220 && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
18a18393 5221 {
7d4df6a4
DE
5222 bs->stop = 0;
5223 return;
5224 }
60e1c644 5225
12ab52e9
PA
5226 /* If this is a thread/task-specific breakpoint, don't waste cpu
5227 evaluating the condition if this isn't the specified
5228 thread/task. */
00431a78
PA
5229 if ((b->thread != -1 && b->thread != thread->global_num)
5230 || (b->task != 0 && b->task != ada_get_task_number (thread)))
6c1b0f7b
DE
5231 {
5232 bs->stop = 0;
5233 return;
5234 }
5235
6dddc817
DE
5236 /* Evaluate extension language breakpoints that have a "stop" method
5237 implemented. */
5238 bs->stop = breakpoint_ext_lang_cond_says_stop (b);
7371cf6d 5239
7d4df6a4
DE
5240 if (is_watchpoint (b))
5241 {
5242 struct watchpoint *w = (struct watchpoint *) b;
3a5c3e22 5243
4d01a485 5244 cond = w->cond_exp.get ();
7d4df6a4
DE
5245 }
5246 else
4d01a485 5247 cond = bl->cond.get ();
60e1c644 5248
7d4df6a4
DE
5249 if (cond && b->disposition != disp_del_at_next_stop)
5250 {
5251 int within_current_scope = 1;
5252 struct watchpoint * w;
60e1c644 5253
7d4df6a4
DE
5254 /* We use value_mark and value_free_to_mark because it could
5255 be a long time before we return to the command level and
5256 call free_all_values. We can't call free_all_values
5257 because we might be in the middle of evaluating a
5258 function call. */
5259 struct value *mark = value_mark ();
5260
5261 if (is_watchpoint (b))
5262 w = (struct watchpoint *) b;
5263 else
5264 w = NULL;
5265
5266 /* Need to select the frame, with all that implies so that
5267 the conditions will have the right context. Because we
5268 use the frame, we will not see an inlined function's
5269 variables when we arrive at a breakpoint at the start
5270 of the inlined function; the current frame will be the
5271 call site. */
5272 if (w == NULL || w->cond_exp_valid_block == NULL)
5273 select_frame (get_current_frame ());
5274 else
18a18393 5275 {
7d4df6a4
DE
5276 struct frame_info *frame;
5277
5278 /* For local watchpoint expressions, which particular
5279 instance of a local is being watched matters, so we
5280 keep track of the frame to evaluate the expression
5281 in. To evaluate the condition however, it doesn't
5282 really matter which instantiation of the function
5283 where the condition makes sense triggers the
5284 watchpoint. This allows an expression like "watch
5285 global if q > 10" set in `func', catch writes to
5286 global on all threads that call `func', or catch
5287 writes on all recursive calls of `func' by a single
5288 thread. We simply always evaluate the condition in
5289 the innermost frame that's executing where it makes
5290 sense to evaluate the condition. It seems
5291 intuitive. */
5292 frame = block_innermost_frame (w->cond_exp_valid_block);
5293 if (frame != NULL)
5294 select_frame (frame);
5295 else
5296 within_current_scope = 0;
18a18393 5297 }
7d4df6a4 5298 if (within_current_scope)
bf469271 5299 {
a70b8144 5300 try
bf469271
PA
5301 {
5302 condition_result = breakpoint_cond_eval (cond);
5303 }
230d2906 5304 catch (const gdb_exception &ex)
bf469271
PA
5305 {
5306 exception_fprintf (gdb_stderr, ex,
5307 "Error in testing breakpoint condition:\n");
5308 }
bf469271 5309 }
7d4df6a4 5310 else
18a18393 5311 {
7d4df6a4
DE
5312 warning (_("Watchpoint condition cannot be tested "
5313 "in the current scope"));
5314 /* If we failed to set the right context for this
5315 watchpoint, unconditionally report it. */
18a18393 5316 }
7d4df6a4
DE
5317 /* FIXME-someday, should give breakpoint #. */
5318 value_free_to_mark (mark);
18a18393 5319 }
7d4df6a4 5320
bf469271 5321 if (cond && !condition_result)
7d4df6a4
DE
5322 {
5323 bs->stop = 0;
5324 }
7d4df6a4
DE
5325 else if (b->ignore_count > 0)
5326 {
5327 b->ignore_count--;
5328 bs->stop = 0;
5329 /* Increase the hit count even though we don't stop. */
5330 ++(b->hit_count);
76727919 5331 gdb::observers::breakpoint_modified.notify (b);
7d4df6a4 5332 }
18a18393
VP
5333}
5334
1cf4d951
PA
5335/* Returns true if we need to track moribund locations of LOC's type
5336 on the current target. */
5337
5338static int
5339need_moribund_for_location_type (struct bp_location *loc)
5340{
5341 return ((loc->loc_type == bp_loc_software_breakpoint
5342 && !target_supports_stopped_by_sw_breakpoint ())
5343 || (loc->loc_type == bp_loc_hardware_breakpoint
5344 && !target_supports_stopped_by_hw_breakpoint ()));
5345}
5346
ddfe970e 5347/* See breakpoint.h. */
c906108c 5348
313f3b21 5349bpstat *
ddfe970e 5350build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
c272a98c 5351 const target_waitstatus &ws)
c906108c 5352{
313f3b21 5353 bpstat *bs_head = nullptr, **bs_link = &bs_head;
c5aa993b 5354
43892fdf 5355 for (breakpoint *b : all_breakpoints ())
429374b8 5356 {
1a853c52 5357 if (!breakpoint_enabled (b))
429374b8 5358 continue;
a5606eee 5359
40cb8ca5 5360 for (bp_location *bl : b->locations ())
429374b8 5361 {
4a64f543
MS
5362 /* For hardware watchpoints, we look only at the first
5363 location. The watchpoint_check function will work on the
5364 entire expression, not the individual locations. For
5365 read watchpoints, the watchpoints_triggered function has
5366 checked all locations already. */
429374b8
JK
5367 if (b->type == bp_hardware_watchpoint && bl != b->loc)
5368 break;
18a18393 5369
b5fa468f 5370 if (!bl->enabled || bl->disabled_by_cond || bl->shlib_disabled)
429374b8 5371 continue;
c5aa993b 5372
09ac7c10 5373 if (!bpstat_check_location (bl, aspace, bp_addr, ws))
429374b8 5374 continue;
c5aa993b 5375
4a64f543
MS
5376 /* Come here if it's a watchpoint, or if the break address
5377 matches. */
c5aa993b 5378
313f3b21 5379 bpstat *bs = new bpstat (bl, &bs_link); /* Alloc a bpstat to
ddfe970e 5380 explain stop. */
c5aa993b 5381
f431efe5
PA
5382 /* Assume we stop. Should we find a watchpoint that is not
5383 actually triggered, or if the condition of the breakpoint
5384 evaluates as false, we'll reset 'stop' to 0. */
429374b8
JK
5385 bs->stop = 1;
5386 bs->print = 1;
d983da9c 5387
f431efe5
PA
5388 /* If this is a scope breakpoint, mark the associated
5389 watchpoint as triggered so that we will handle the
5390 out-of-scope event. We'll get to the watchpoint next
5391 iteration. */
d0fb5eae 5392 if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
3a5c3e22
PA
5393 {
5394 struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5395
5396 w->watchpoint_triggered = watch_triggered_yes;
5397 }
f431efe5
PA
5398 }
5399 }
5400
7c16b83e 5401 /* Check if a moribund breakpoint explains the stop. */
1cf4d951
PA
5402 if (!target_supports_stopped_by_sw_breakpoint ()
5403 || !target_supports_stopped_by_hw_breakpoint ())
f431efe5 5404 {
1123588c 5405 for (bp_location *loc : moribund_locations)
f431efe5 5406 {
1cf4d951
PA
5407 if (breakpoint_location_address_match (loc, aspace, bp_addr)
5408 && need_moribund_for_location_type (loc))
5409 {
313f3b21 5410 bpstat *bs = new bpstat (loc, &bs_link);
1cf4d951
PA
5411 /* For hits of moribund locations, we should just proceed. */
5412 bs->stop = 0;
5413 bs->print = 0;
5414 bs->print_it = print_it_noop;
5415 }
f431efe5
PA
5416 }
5417 }
5418
ddfe970e
KS
5419 return bs_head;
5420}
5421
5422/* See breakpoint.h. */
5423
313f3b21 5424bpstat *
ddfe970e 5425bpstat_stop_status (const address_space *aspace,
00431a78 5426 CORE_ADDR bp_addr, thread_info *thread,
c272a98c 5427 const target_waitstatus &ws,
313f3b21 5428 bpstat *stop_chain)
ddfe970e
KS
5429{
5430 struct breakpoint *b = NULL;
5431 /* First item of allocated bpstat's. */
313f3b21
SM
5432 bpstat *bs_head = stop_chain;
5433 bpstat *bs;
ddfe970e
KS
5434 int need_remove_insert;
5435 int removed_any;
5436
5437 /* First, build the bpstat chain with locations that explain a
5438 target stop, while being careful to not set the target running,
5439 as that may invalidate locations (in particular watchpoint
5440 locations are recreated). Resuming will happen here with
5441 breakpoint conditions or watchpoint expressions that include
5442 inferior function calls. */
5443 if (bs_head == NULL)
5444 bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5445
edcc5120
TT
5446 /* A bit of special processing for shlib breakpoints. We need to
5447 process solib loading here, so that the lists of loaded and
5448 unloaded libraries are correct before we handle "catch load" and
5449 "catch unload". */
5450 for (bs = bs_head; bs != NULL; bs = bs->next)
5451 {
5d268276 5452 if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
edcc5120
TT
5453 {
5454 handle_solib_event ();
5455 break;
5456 }
5457 }
5458
f431efe5
PA
5459 /* Now go through the locations that caused the target to stop, and
5460 check whether we're interested in reporting this stop to higher
5461 layers, or whether we should resume the target transparently. */
5462
5463 removed_any = 0;
5464
5760d0ab 5465 for (bs = bs_head; bs != NULL; bs = bs->next)
f431efe5
PA
5466 {
5467 if (!bs->stop)
5468 continue;
5469
f431efe5 5470 b = bs->breakpoint_at;
348d480f
PA
5471 b->ops->check_status (bs);
5472 if (bs->stop)
28010a5d 5473 {
00431a78 5474 bpstat_check_breakpoint_conditions (bs, thread);
f431efe5 5475
429374b8
JK
5476 if (bs->stop)
5477 {
5478 ++(b->hit_count);
c906108c 5479
4a64f543 5480 /* We will stop here. */
429374b8
JK
5481 if (b->disposition == disp_disable)
5482 {
816338b5 5483 --(b->enable_count);
1a853c52 5484 if (b->enable_count <= 0)
429374b8 5485 b->enable_state = bp_disabled;
f431efe5 5486 removed_any = 1;
429374b8 5487 }
bd7ccaa9 5488 gdb::observers::breakpoint_modified.notify (b);
429374b8
JK
5489 if (b->silent)
5490 bs->print = 0;
5491 bs->commands = b->commands;
abf85f46 5492 if (command_line_is_silent (bs->commands
d1b0a7bf 5493 ? bs->commands.get () : NULL))
abf85f46 5494 bs->print = 0;
9d6e6e84
HZ
5495
5496 b->ops->after_condition_true (bs);
429374b8
JK
5497 }
5498
348d480f 5499 }
a9b3a50f
PA
5500
5501 /* Print nothing for this entry if we don't stop or don't
5502 print. */
5503 if (!bs->stop || !bs->print)
5504 bs->print_it = print_it_noop;
429374b8 5505 }
876fa593 5506
d983da9c
DJ
5507 /* If we aren't stopping, the value of some hardware watchpoint may
5508 not have changed, but the intermediate memory locations we are
5509 watching may have. Don't bother if we're stopping; this will get
5510 done later. */
d832cb68 5511 need_remove_insert = 0;
5760d0ab
JK
5512 if (! bpstat_causes_stop (bs_head))
5513 for (bs = bs_head; bs != NULL; bs = bs->next)
d983da9c 5514 if (!bs->stop
f431efe5
PA
5515 && bs->breakpoint_at
5516 && is_hardware_watchpoint (bs->breakpoint_at))
d983da9c 5517 {
3a5c3e22
PA
5518 struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5519
5520 update_watchpoint (w, 0 /* don't reparse. */);
d832cb68 5521 need_remove_insert = 1;
d983da9c
DJ
5522 }
5523
d832cb68 5524 if (need_remove_insert)
44702360 5525 update_global_location_list (UGLL_MAY_INSERT);
f431efe5 5526 else if (removed_any)
44702360 5527 update_global_location_list (UGLL_DONT_INSERT);
d832cb68 5528
5760d0ab 5529 return bs_head;
c906108c 5530}
628fe4e4 5531
d37e0847
PA
5532/* See breakpoint.h. */
5533
5534bpstat *
5535bpstat_stop_status_nowatch (const address_space *aspace, CORE_ADDR bp_addr,
5536 thread_info *thread, const target_waitstatus &ws)
5537{
5538 gdb_assert (!target_stopped_by_watchpoint ());
5539
5540 /* Clear all watchpoints' 'watchpoint_triggered' value from a
5541 previous stop to avoid confusing bpstat_stop_status. */
5542 watchpoints_triggered (ws);
5543
5544 return bpstat_stop_status (aspace, bp_addr, thread, ws);
5545}
5546
628fe4e4 5547static void
61c26be8 5548handle_jit_event (CORE_ADDR address)
628fe4e4 5549{
628fe4e4
JK
5550 struct gdbarch *gdbarch;
5551
1eb8556f 5552 infrun_debug_printf ("handling bp_jit_event");
243a9253 5553
628fe4e4
JK
5554 /* Switch terminal for any messages produced by
5555 breakpoint_re_set. */
223ffa71 5556 target_terminal::ours_for_output ();
628fe4e4 5557
61c26be8
MS
5558 gdbarch = get_frame_arch (get_current_frame ());
5559 /* This event is caused by a breakpoint set in `jit_breakpoint_re_set`,
5560 thus it is expected that its objectfile can be found through
5561 minimal symbol lookup. If it doesn't work (and assert fails), it
5562 most likely means that `jit_breakpoint_re_set` was changes and this
5563 function needs to be updated too. */
5564 bound_minimal_symbol jit_bp_sym = lookup_minimal_symbol_by_pc (address);
5565 gdb_assert (jit_bp_sym.objfile != nullptr);
5566 jit_event_handler (gdbarch, jit_bp_sym.objfile);
628fe4e4 5567
223ffa71 5568 target_terminal::inferior ();
628fe4e4
JK
5569}
5570
5571/* Prepare WHAT final decision for infrun. */
5572
5573/* Decide what infrun needs to do with this bpstat. */
5574
c906108c 5575struct bpstat_what
313f3b21 5576bpstat_what (bpstat *bs_head)
c906108c 5577{
c906108c 5578 struct bpstat_what retval;
313f3b21 5579 bpstat *bs;
c906108c 5580
628fe4e4 5581 retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
aa7d318d 5582 retval.call_dummy = STOP_NONE;
e2d0f980 5583 retval.is_longjmp = false;
628fe4e4 5584
0e30163f 5585 for (bs = bs_head; bs != NULL; bs = bs->next)
c906108c 5586 {
628fe4e4
JK
5587 /* Extract this BS's action. After processing each BS, we check
5588 if its action overrides all we've seem so far. */
5589 enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5590 enum bptype bptype;
5591
c906108c 5592 if (bs->breakpoint_at == NULL)
628fe4e4
JK
5593 {
5594 /* I suspect this can happen if it was a momentary
5595 breakpoint which has since been deleted. */
5596 bptype = bp_none;
5597 }
20874c92 5598 else
f431efe5 5599 bptype = bs->breakpoint_at->type;
628fe4e4
JK
5600
5601 switch (bptype)
c906108c
SS
5602 {
5603 case bp_none:
628fe4e4 5604 break;
c906108c
SS
5605 case bp_breakpoint:
5606 case bp_hardware_breakpoint:
7c16b83e 5607 case bp_single_step:
c906108c
SS
5608 case bp_until:
5609 case bp_finish:
a9b3a50f 5610 case bp_shlib_event:
c906108c
SS
5611 if (bs->stop)
5612 {
5613 if (bs->print)
628fe4e4 5614 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5615 else
628fe4e4 5616 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5617 }
5618 else
628fe4e4 5619 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5620 break;
5621 case bp_watchpoint:
5622 case bp_hardware_watchpoint:
5623 case bp_read_watchpoint:
5624 case bp_access_watchpoint:
5625 if (bs->stop)
5626 {
5627 if (bs->print)
628fe4e4 5628 this_action = BPSTAT_WHAT_STOP_NOISY;
c906108c 5629 else
628fe4e4 5630 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c
SS
5631 }
5632 else
628fe4e4
JK
5633 {
5634 /* There was a watchpoint, but we're not stopping.
5635 This requires no further action. */
5636 }
c906108c
SS
5637 break;
5638 case bp_longjmp:
e2e4d78b 5639 case bp_longjmp_call_dummy:
186c406b 5640 case bp_exception:
0a39bb32
PA
5641 if (bs->stop)
5642 {
5643 this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5644 retval.is_longjmp = bptype != bp_exception;
5645 }
5646 else
5647 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5648 break;
5649 case bp_longjmp_resume:
186c406b 5650 case bp_exception_resume:
0a39bb32
PA
5651 if (bs->stop)
5652 {
5653 this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5654 retval.is_longjmp = bptype == bp_longjmp_resume;
5655 }
5656 else
5657 this_action = BPSTAT_WHAT_SINGLE;
c906108c
SS
5658 break;
5659 case bp_step_resume:
5660 if (bs->stop)
628fe4e4
JK
5661 this_action = BPSTAT_WHAT_STEP_RESUME;
5662 else
c906108c 5663 {
628fe4e4
JK
5664 /* It is for the wrong frame. */
5665 this_action = BPSTAT_WHAT_SINGLE;
c906108c 5666 }
c906108c 5667 break;
2c03e5be
PA
5668 case bp_hp_step_resume:
5669 if (bs->stop)
5670 this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5671 else
5672 {
5673 /* It is for the wrong frame. */
5674 this_action = BPSTAT_WHAT_SINGLE;
5675 }
5676 break;
c906108c 5677 case bp_watchpoint_scope:
c4093a6a 5678 case bp_thread_event:
1900040c 5679 case bp_overlay_event:
0fd8e87f 5680 case bp_longjmp_master:
aa7d318d 5681 case bp_std_terminate_master:
186c406b 5682 case bp_exception_master:
628fe4e4 5683 this_action = BPSTAT_WHAT_SINGLE;
c4093a6a 5684 break;
ce78b96d 5685 case bp_catchpoint:
c5aa993b
JM
5686 if (bs->stop)
5687 {
5688 if (bs->print)
628fe4e4 5689 this_action = BPSTAT_WHAT_STOP_NOISY;
c5aa993b 5690 else
628fe4e4 5691 this_action = BPSTAT_WHAT_STOP_SILENT;
c5aa993b
JM
5692 }
5693 else
628fe4e4 5694 {
cb1e4e32
PA
5695 /* Some catchpoints are implemented with breakpoints.
5696 For those, we need to step over the breakpoint. */
5697 if (bs->bp_location_at->loc_type != bp_loc_other)
5698 this_action = BPSTAT_WHAT_SINGLE;
628fe4e4
JK
5699 }
5700 break;
628fe4e4 5701 case bp_jit_event:
628fe4e4 5702 this_action = BPSTAT_WHAT_SINGLE;
c5aa993b 5703 break;
c906108c 5704 case bp_call_dummy:
53a5351d
JM
5705 /* Make sure the action is stop (silent or noisy),
5706 so infrun.c pops the dummy frame. */
aa7d318d 5707 retval.call_dummy = STOP_STACK_DUMMY;
628fe4e4 5708 this_action = BPSTAT_WHAT_STOP_SILENT;
aa7d318d
TT
5709 break;
5710 case bp_std_terminate:
5711 /* Make sure the action is stop (silent or noisy),
5712 so infrun.c pops the dummy frame. */
aa7d318d 5713 retval.call_dummy = STOP_STD_TERMINATE;
628fe4e4 5714 this_action = BPSTAT_WHAT_STOP_SILENT;
c906108c 5715 break;
1042e4c0 5716 case bp_tracepoint:
7a697b8d 5717 case bp_fast_tracepoint:
0fb4aa4b 5718 case bp_static_tracepoint:
1042e4c0
SS
5719 /* Tracepoint hits should not be reported back to GDB, and
5720 if one got through somehow, it should have been filtered
5721 out already. */
5722 internal_error (__FILE__, __LINE__,
7a697b8d 5723 _("bpstat_what: tracepoint encountered"));
0e30163f
JK
5724 break;
5725 case bp_gnu_ifunc_resolver:
5726 /* Step over it (and insert bp_gnu_ifunc_resolver_return). */
5727 this_action = BPSTAT_WHAT_SINGLE;
5728 break;
5729 case bp_gnu_ifunc_resolver_return:
5730 /* The breakpoint will be removed, execution will restart from the
5731 PC of the former breakpoint. */
5732 this_action = BPSTAT_WHAT_KEEP_CHECKING;
5733 break;
e7e0cddf
SS
5734
5735 case bp_dprintf:
a11cfd87
HZ
5736 if (bs->stop)
5737 this_action = BPSTAT_WHAT_STOP_SILENT;
5738 else
5739 this_action = BPSTAT_WHAT_SINGLE;
e7e0cddf
SS
5740 break;
5741
628fe4e4
JK
5742 default:
5743 internal_error (__FILE__, __LINE__,
5744 _("bpstat_what: unhandled bptype %d"), (int) bptype);
c906108c 5745 }
628fe4e4 5746
325fac50 5747 retval.main_action = std::max (retval.main_action, this_action);
c906108c 5748 }
628fe4e4 5749
243a9253
PA
5750 return retval;
5751}
628fe4e4 5752
243a9253 5753void
313f3b21 5754bpstat_run_callbacks (bpstat *bs_head)
243a9253 5755{
313f3b21 5756 bpstat *bs;
628fe4e4 5757
0e30163f
JK
5758 for (bs = bs_head; bs != NULL; bs = bs->next)
5759 {
5760 struct breakpoint *b = bs->breakpoint_at;
5761
5762 if (b == NULL)
5763 continue;
5764 switch (b->type)
5765 {
243a9253 5766 case bp_jit_event:
61c26be8 5767 handle_jit_event (bs->bp_location_at->address);
243a9253 5768 break;
0e30163f
JK
5769 case bp_gnu_ifunc_resolver:
5770 gnu_ifunc_resolver_stop (b);
5771 break;
5772 case bp_gnu_ifunc_resolver_return:
5773 gnu_ifunc_resolver_return_stop (b);
5774 break;
5775 }
5776 }
c906108c
SS
5777}
5778
4c462cb0 5779/* See breakpoint.h. */
c906108c 5780
4c462cb0
SM
5781bool
5782bpstat_should_step ()
c906108c 5783{
43892fdf 5784 for (breakpoint *b : all_breakpoints ())
717a8278 5785 if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
4c462cb0 5786 return true;
43892fdf 5787
4c462cb0 5788 return false;
c906108c
SS
5789}
5790
4c462cb0
SM
5791/* See breakpoint.h. */
5792
5793bool
313f3b21 5794bpstat_causes_stop (bpstat *bs)
67822962
PA
5795{
5796 for (; bs != NULL; bs = bs->next)
5797 if (bs->stop)
4c462cb0 5798 return true;
67822962 5799
4c462cb0 5800 return false;
67822962
PA
5801}
5802
c906108c 5803\f
c5aa993b 5804
6c92c339 5805/* Compute a number of spaces suitable to indent the next line
170b53b2
UW
5806 so it starts at the position corresponding to the table column
5807 named COL_NAME in the currently active table of UIOUT. */
5808
6c92c339 5809static int
170b53b2
UW
5810wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5811{
170b53b2 5812 int i, total_width, width, align;
c5209615 5813 const char *text;
170b53b2
UW
5814
5815 total_width = 0;
112e8700 5816 for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
170b53b2
UW
5817 {
5818 if (strcmp (text, col_name) == 0)
6c92c339 5819 return total_width;
170b53b2
UW
5820
5821 total_width += width + 1;
5822 }
5823
6c92c339 5824 return 0;
170b53b2
UW
5825}
5826
b775012e
LM
5827/* Determine if the locations of this breakpoint will have their conditions
5828 evaluated by the target, host or a mix of both. Returns the following:
5829
5830 "host": Host evals condition.
5831 "host or target": Host or Target evals condition.
5832 "target": Target evals condition.
5833*/
5834
5835static const char *
5836bp_condition_evaluator (struct breakpoint *b)
5837{
b775012e
LM
5838 char host_evals = 0;
5839 char target_evals = 0;
5840
5841 if (!b)
5842 return NULL;
5843
5844 if (!is_breakpoint (b))
5845 return NULL;
5846
5847 if (gdb_evaluates_breakpoint_condition_p ()
5848 || !target_supports_evaluation_of_breakpoint_conditions ())
5849 return condition_evaluation_host;
5850
40cb8ca5 5851 for (bp_location *bl : b->locations ())
b775012e
LM
5852 {
5853 if (bl->cond_bytecode)
5854 target_evals++;
5855 else
5856 host_evals++;
5857 }
5858
5859 if (host_evals && target_evals)
5860 return condition_evaluation_both;
5861 else if (target_evals)
5862 return condition_evaluation_target;
5863 else
5864 return condition_evaluation_host;
5865}
5866
5867/* Determine the breakpoint location's condition evaluator. This is
5868 similar to bp_condition_evaluator, but for locations. */
5869
5870static const char *
5871bp_location_condition_evaluator (struct bp_location *bl)
5872{
5873 if (bl && !is_breakpoint (bl->owner))
5874 return NULL;
5875
5876 if (gdb_evaluates_breakpoint_condition_p ()
5877 || !target_supports_evaluation_of_breakpoint_conditions ())
5878 return condition_evaluation_host;
5879
5880 if (bl && bl->cond_bytecode)
5881 return condition_evaluation_target;
5882 else
5883 return condition_evaluation_host;
5884}
5885
859825b8
JK
5886/* Print the LOC location out of the list of B->LOC locations. */
5887
170b53b2
UW
5888static void
5889print_breakpoint_location (struct breakpoint *b,
5890 struct bp_location *loc)
0d381245 5891{
79a45e25 5892 struct ui_out *uiout = current_uiout;
5ed8105e
PA
5893
5894 scoped_restore_current_program_space restore_pspace;
6c95b8df 5895
859825b8
JK
5896 if (loc != NULL && loc->shlib_disabled)
5897 loc = NULL;
5898
6c95b8df
PA
5899 if (loc != NULL)
5900 set_current_program_space (loc->pspace);
5901
56435ebe 5902 if (b->display_canonical)
d28cd78a 5903 uiout->field_string ("what", event_location_to_string (b->location.get ()));
2f202fde 5904 else if (loc && loc->symtab)
0d381245 5905 {
4a27f119
KS
5906 const struct symbol *sym = loc->symbol;
5907
0d381245
VP
5908 if (sym)
5909 {
112e8700 5910 uiout->text ("in ");
987012b8 5911 uiout->field_string ("func", sym->print_name (),
e43b10e1 5912 function_name_style.style ());
112e8700
SM
5913 uiout->text (" ");
5914 uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5915 uiout->text ("at ");
0d381245 5916 }
112e8700 5917 uiout->field_string ("file",
cbe56571 5918 symtab_to_filename_for_display (loc->symtab),
e43b10e1 5919 file_name_style.style ());
112e8700 5920 uiout->text (":");
05cba821 5921
112e8700
SM
5922 if (uiout->is_mi_like_p ())
5923 uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
0d381245 5924
381befee 5925 uiout->field_signed ("line", loc->line_number);
0d381245 5926 }
859825b8 5927 else if (loc)
0d381245 5928 {
d7e74731 5929 string_file stb;
170b53b2 5930
d7e74731 5931 print_address_symbolic (loc->gdbarch, loc->address, &stb,
22e722e1 5932 demangle, "");
112e8700 5933 uiout->field_stream ("at", stb);
0d381245 5934 }
859825b8 5935 else
f00aae0f 5936 {
d28cd78a
TT
5937 uiout->field_string ("pending",
5938 event_location_to_string (b->location.get ()));
f00aae0f
KS
5939 /* If extra_string is available, it could be holding a condition
5940 or dprintf arguments. In either case, make sure it is printed,
5941 too, but only for non-MI streams. */
112e8700 5942 if (!uiout->is_mi_like_p () && b->extra_string != NULL)
f00aae0f
KS
5943 {
5944 if (b->type == bp_dprintf)
112e8700 5945 uiout->text (",");
f00aae0f 5946 else
112e8700 5947 uiout->text (" ");
6f781ee3 5948 uiout->text (b->extra_string.get ());
f00aae0f
KS
5949 }
5950 }
6c95b8df 5951
b775012e
LM
5952 if (loc && is_breakpoint (b)
5953 && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5954 && bp_condition_evaluator (b) == condition_evaluation_both)
5955 {
112e8700
SM
5956 uiout->text (" (");
5957 uiout->field_string ("evaluated-by",
b775012e 5958 bp_location_condition_evaluator (loc));
112e8700 5959 uiout->text (")");
b775012e 5960 }
0d381245
VP
5961}
5962
269b11a2
PA
5963static const char *
5964bptype_string (enum bptype type)
c906108c 5965{
c4093a6a
JM
5966 struct ep_type_description
5967 {
5968 enum bptype type;
a121b7c1 5969 const char *description;
c4093a6a
JM
5970 };
5971 static struct ep_type_description bptypes[] =
c906108c 5972 {
c5aa993b
JM
5973 {bp_none, "?deleted?"},
5974 {bp_breakpoint, "breakpoint"},
c906108c 5975 {bp_hardware_breakpoint, "hw breakpoint"},
7c16b83e 5976 {bp_single_step, "sw single-step"},
c5aa993b
JM
5977 {bp_until, "until"},
5978 {bp_finish, "finish"},
5979 {bp_watchpoint, "watchpoint"},
c906108c 5980 {bp_hardware_watchpoint, "hw watchpoint"},
c5aa993b
JM
5981 {bp_read_watchpoint, "read watchpoint"},
5982 {bp_access_watchpoint, "acc watchpoint"},
5983 {bp_longjmp, "longjmp"},
5984 {bp_longjmp_resume, "longjmp resume"},
e2e4d78b 5985 {bp_longjmp_call_dummy, "longjmp for call dummy"},
186c406b
TT
5986 {bp_exception, "exception"},
5987 {bp_exception_resume, "exception resume"},
c5aa993b 5988 {bp_step_resume, "step resume"},
2c03e5be 5989 {bp_hp_step_resume, "high-priority step resume"},
c5aa993b
JM
5990 {bp_watchpoint_scope, "watchpoint scope"},
5991 {bp_call_dummy, "call dummy"},
aa7d318d 5992 {bp_std_terminate, "std::terminate"},
c5aa993b 5993 {bp_shlib_event, "shlib events"},
c4093a6a 5994 {bp_thread_event, "thread events"},
1900040c 5995 {bp_overlay_event, "overlay events"},
0fd8e87f 5996 {bp_longjmp_master, "longjmp master"},
aa7d318d 5997 {bp_std_terminate_master, "std::terminate master"},
186c406b 5998 {bp_exception_master, "exception master"},
ce78b96d 5999 {bp_catchpoint, "catchpoint"},
1042e4c0 6000 {bp_tracepoint, "tracepoint"},
7a697b8d 6001 {bp_fast_tracepoint, "fast tracepoint"},
0fb4aa4b 6002 {bp_static_tracepoint, "static tracepoint"},
e7e0cddf 6003 {bp_dprintf, "dprintf"},
4efc6507 6004 {bp_jit_event, "jit events"},
0e30163f
JK
6005 {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6006 {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
c5aa993b 6007 };
269b11a2
PA
6008
6009 if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6010 || ((int) type != bptypes[(int) type].type))
6011 internal_error (__FILE__, __LINE__,
6012 _("bptypes table does not describe type #%d."),
6013 (int) type);
6014
6015 return bptypes[(int) type].description;
6016}
6017
998580f1
MK
6018/* For MI, output a field named 'thread-groups' with a list as the value.
6019 For CLI, prefix the list with the string 'inf'. */
6020
6021static void
6022output_thread_groups (struct ui_out *uiout,
6023 const char *field_name,
5c632425 6024 const std::vector<int> &inf_nums,
998580f1
MK
6025 int mi_only)
6026{
112e8700 6027 int is_mi = uiout->is_mi_like_p ();
998580f1
MK
6028
6029 /* For backward compatibility, don't display inferiors in CLI unless
6030 there are several. Always display them for MI. */
6031 if (!is_mi && mi_only)
6032 return;
6033
10f489e5 6034 ui_out_emit_list list_emitter (uiout, field_name);
752eb8b4 6035
5c632425 6036 for (size_t i = 0; i < inf_nums.size (); i++)
998580f1
MK
6037 {
6038 if (is_mi)
6039 {
6040 char mi_group[10];
6041
5c632425 6042 xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
112e8700 6043 uiout->field_string (NULL, mi_group);
998580f1
MK
6044 }
6045 else
6046 {
6047 if (i == 0)
112e8700 6048 uiout->text (" inf ");
998580f1 6049 else
112e8700 6050 uiout->text (", ");
998580f1 6051
5c632425 6052 uiout->text (plongest (inf_nums[i]));
998580f1
MK
6053 }
6054 }
998580f1
MK
6055}
6056
a38118e5
PA
6057/* Print B to gdb_stdout. If RAW_LOC, print raw breakpoint locations
6058 instead of going via breakpoint_ops::print_one. This makes "maint
6059 info breakpoints" show the software breakpoint locations of
6060 catchpoints, which are considered internal implementation
c01e038b
TT
6061 detail. Returns true if RAW_LOC is false and if the breakpoint's
6062 print_one method did something; false otherwise. */
269b11a2 6063
c01e038b 6064static bool
269b11a2
PA
6065print_one_breakpoint_location (struct breakpoint *b,
6066 struct bp_location *loc,
6067 int loc_number,
6068 struct bp_location **last_loc,
a38118e5 6069 int allflag, bool raw_loc)
269b11a2
PA
6070{
6071 struct command_line *l;
c2c6d25f 6072 static char bpenables[] = "nynny";
c906108c 6073
79a45e25 6074 struct ui_out *uiout = current_uiout;
0d381245
VP
6075 int header_of_multiple = 0;
6076 int part_of_multiple = (loc != NULL);
79a45b7d
TT
6077 struct value_print_options opts;
6078
6079 get_user_print_options (&opts);
0d381245
VP
6080
6081 gdb_assert (!loc || loc_number != 0);
4a64f543
MS
6082 /* See comment in print_one_breakpoint concerning treatment of
6083 breakpoints with single disabled location. */
0d381245
VP
6084 if (loc == NULL
6085 && (b->loc != NULL
b5fa468f
TBA
6086 && (b->loc->next != NULL
6087 || !b->loc->enabled || b->loc->disabled_by_cond)))
0d381245
VP
6088 header_of_multiple = 1;
6089 if (loc == NULL)
6090 loc = b->loc;
6091
c4093a6a
JM
6092 annotate_record ();
6093
6094 /* 1 */
6095 annotate_field (0);
0d381245 6096 if (part_of_multiple)
528e1572 6097 uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
0d381245 6098 else
381befee 6099 uiout->field_signed ("number", b->number);
c4093a6a
JM
6100
6101 /* 2 */
6102 annotate_field (1);
0d381245 6103 if (part_of_multiple)
112e8700 6104 uiout->field_skip ("type");
269b11a2 6105 else
112e8700 6106 uiout->field_string ("type", bptype_string (b->type));
c4093a6a
JM
6107
6108 /* 3 */
6109 annotate_field (2);
0d381245 6110 if (part_of_multiple)
112e8700 6111 uiout->field_skip ("disp");
0d381245 6112 else
112e8700 6113 uiout->field_string ("disp", bpdisp_text (b->disposition));
0d381245 6114
c4093a6a
JM
6115 /* 4 */
6116 annotate_field (3);
85c88e2a
TBA
6117 /* For locations that are disabled because of an invalid condition,
6118 display "N*" on CLI, where "*" refers to a footnote below the
6119 table. For MI, simply display a "N" without a footnote. */
6120 const char *N = (uiout->is_mi_like_p ()) ? "N" : "N*";
0d381245 6121 if (part_of_multiple)
85c88e2a 6122 uiout->field_string ("enabled", (loc->disabled_by_cond ? N
b5fa468f 6123 : (loc->enabled ? "y" : "n")));
0d381245 6124 else
112e8700 6125 uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
0d381245 6126
c4093a6a 6127 /* 5 and 6 */
c01e038b
TT
6128 bool result = false;
6129 if (!raw_loc && b->ops != NULL && b->ops->print_one (b, last_loc))
6130 result = true;
3086aeae 6131 else
a38118e5
PA
6132 {
6133 if (is_watchpoint (b))
3a5c3e22
PA
6134 {
6135 struct watchpoint *w = (struct watchpoint *) b;
6136
6137 /* Field 4, the address, is omitted (which makes the columns
6138 not line up too nicely with the headers, but the effect
6139 is relatively readable). */
6140 if (opts.addressprint)
112e8700 6141 uiout->field_skip ("addr");
3a5c3e22 6142 annotate_field (5);
a4c50be3 6143 uiout->field_string ("what", w->exp_string.get ());
3a5c3e22 6144 }
f06f1252
TT
6145 else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6146 || is_ada_exception_catchpoint (b))
a38118e5
PA
6147 {
6148 if (opts.addressprint)
6149 {
6150 annotate_field (4);
6151 if (header_of_multiple)
7f6aba03
TT
6152 uiout->field_string ("addr", "<MULTIPLE>",
6153 metadata_style.style ());
a38118e5 6154 else if (b->loc == NULL || loc->shlib_disabled)
7f6aba03
TT
6155 uiout->field_string ("addr", "<PENDING>",
6156 metadata_style.style ());
a38118e5
PA
6157 else
6158 uiout->field_core_addr ("addr",
6159 loc->gdbarch, loc->address);
6160 }
6161 annotate_field (5);
6162 if (!header_of_multiple)
6163 print_breakpoint_location (b, loc);
6164 if (b->loc)
6165 *last_loc = b->loc;
6166 }
6167 }
6c95b8df 6168
998580f1 6169 if (loc != NULL && !header_of_multiple)
6c95b8df 6170 {
5c632425 6171 std::vector<int> inf_nums;
998580f1 6172 int mi_only = 1;
6c95b8df 6173
08036331 6174 for (inferior *inf : all_inferiors ())
6c95b8df
PA
6175 {
6176 if (inf->pspace == loc->pspace)
5c632425 6177 inf_nums.push_back (inf->num);
6c95b8df 6178 }
998580f1 6179
dda83cd7 6180 /* For backward compatibility, don't display inferiors in CLI unless
998580f1
MK
6181 there are several. Always display for MI. */
6182 if (allflag
6183 || (!gdbarch_has_global_breakpoints (target_gdbarch ())
94c93c35 6184 && (program_spaces.size () > 1
998580f1
MK
6185 || number_of_inferiors () > 1)
6186 /* LOC is for existing B, it cannot be in
6187 moribund_locations and thus having NULL OWNER. */
6188 && loc->owner->type != bp_catchpoint))
6189 mi_only = 0;
5c632425 6190 output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6c95b8df
PA
6191 }
6192
4a306c9a 6193 if (!part_of_multiple)
c4093a6a 6194 {
4a306c9a
JB
6195 if (b->thread != -1)
6196 {
6197 /* FIXME: This seems to be redundant and lost here; see the
4a64f543 6198 "stop only in" line a little further down. */
112e8700 6199 uiout->text (" thread ");
381befee 6200 uiout->field_signed ("thread", b->thread);
4a306c9a
JB
6201 }
6202 else if (b->task != 0)
6203 {
112e8700 6204 uiout->text (" task ");
381befee 6205 uiout->field_signed ("task", b->task);
4a306c9a 6206 }
c4093a6a 6207 }
f1310107 6208
112e8700 6209 uiout->text ("\n");
f1310107 6210
348d480f 6211 if (!part_of_multiple)
f1310107
TJB
6212 b->ops->print_one_detail (b, uiout);
6213
0d381245 6214 if (part_of_multiple && frame_id_p (b->frame_id))
c4093a6a
JM
6215 {
6216 annotate_field (6);
112e8700 6217 uiout->text ("\tstop only in stack frame at ");
e5dd4106 6218 /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
dda83cd7 6219 the frame ID. */
112e8700 6220 uiout->field_core_addr ("frame",
5af949e3 6221 b->gdbarch, b->frame_id.stack_addr);
112e8700 6222 uiout->text ("\n");
c4093a6a
JM
6223 }
6224
28010a5d 6225 if (!part_of_multiple && b->cond_string)
c4093a6a
JM
6226 {
6227 annotate_field (7);
d77f58be 6228 if (is_tracepoint (b))
112e8700 6229 uiout->text ("\ttrace only if ");
1042e4c0 6230 else
112e8700 6231 uiout->text ("\tstop only if ");
6f781ee3 6232 uiout->field_string ("cond", b->cond_string.get ());
b775012e
LM
6233
6234 /* Print whether the target is doing the breakpoint's condition
6235 evaluation. If GDB is doing the evaluation, don't print anything. */
6236 if (is_breakpoint (b)
6237 && breakpoint_condition_evaluation_mode ()
6238 == condition_evaluation_target)
6239 {
6a831f06
PA
6240 uiout->message (" (%pF evals)",
6241 string_field ("evaluated-by",
6242 bp_condition_evaluator (b)));
b775012e 6243 }
112e8700 6244 uiout->text ("\n");
0101ce28
JJ
6245 }
6246
0d381245 6247 if (!part_of_multiple && b->thread != -1)
c4093a6a 6248 {
4a64f543 6249 /* FIXME should make an annotation for this. */
112e8700
SM
6250 uiout->text ("\tstop only in thread ");
6251 if (uiout->is_mi_like_p ())
381befee 6252 uiout->field_signed ("thread", b->thread);
5d5658a1
PA
6253 else
6254 {
6255 struct thread_info *thr = find_thread_global_id (b->thread);
6256
112e8700 6257 uiout->field_string ("thread", print_thread_id (thr));
5d5658a1 6258 }
112e8700 6259 uiout->text ("\n");
c4093a6a
JM
6260 }
6261
556ec64d
YQ
6262 if (!part_of_multiple)
6263 {
6264 if (b->hit_count)
31f56a27
YQ
6265 {
6266 /* FIXME should make an annotation for this. */
6267 if (is_catchpoint (b))
112e8700 6268 uiout->text ("\tcatchpoint");
31f56a27 6269 else if (is_tracepoint (b))
112e8700 6270 uiout->text ("\ttracepoint");
31f56a27 6271 else
112e8700
SM
6272 uiout->text ("\tbreakpoint");
6273 uiout->text (" already hit ");
381befee 6274 uiout->field_signed ("times", b->hit_count);
31f56a27 6275 if (b->hit_count == 1)
112e8700 6276 uiout->text (" time\n");
31f56a27 6277 else
112e8700 6278 uiout->text (" times\n");
31f56a27 6279 }
556ec64d
YQ
6280 else
6281 {
31f56a27 6282 /* Output the count also if it is zero, but only if this is mi. */
112e8700 6283 if (uiout->is_mi_like_p ())
381befee 6284 uiout->field_signed ("times", b->hit_count);
556ec64d
YQ
6285 }
6286 }
8b93c638 6287
0d381245 6288 if (!part_of_multiple && b->ignore_count)
c4093a6a
JM
6289 {
6290 annotate_field (8);
6a831f06
PA
6291 uiout->message ("\tignore next %pF hits\n",
6292 signed_field ("ignore", b->ignore_count));
c4093a6a 6293 }
059fb39f 6294
816338b5
SS
6295 /* Note that an enable count of 1 corresponds to "enable once"
6296 behavior, which is reported by the combination of enablement and
6297 disposition, so we don't need to mention it here. */
6298 if (!part_of_multiple && b->enable_count > 1)
6299 {
6300 annotate_field (8);
112e8700 6301 uiout->text ("\tdisable after ");
816338b5
SS
6302 /* Tweak the wording to clarify that ignore and enable counts
6303 are distinct, and have additive effect. */
6304 if (b->ignore_count)
112e8700 6305 uiout->text ("additional ");
816338b5 6306 else
112e8700 6307 uiout->text ("next ");
381befee 6308 uiout->field_signed ("enable", b->enable_count);
112e8700 6309 uiout->text (" hits\n");
816338b5
SS
6310 }
6311
f196051f
SS
6312 if (!part_of_multiple && is_tracepoint (b))
6313 {
6314 struct tracepoint *tp = (struct tracepoint *) b;
6315
6316 if (tp->traceframe_usage)
6317 {
112e8700 6318 uiout->text ("\ttrace buffer usage ");
381befee 6319 uiout->field_signed ("traceframe-usage", tp->traceframe_usage);
112e8700 6320 uiout->text (" bytes\n");
f196051f
SS
6321 }
6322 }
d3ce09f5 6323
d1b0a7bf 6324 l = b->commands ? b->commands.get () : NULL;
059fb39f 6325 if (!part_of_multiple && l)
c4093a6a
JM
6326 {
6327 annotate_field (9);
2e783024 6328 ui_out_emit_tuple tuple_emitter (uiout, "script");
8b93c638 6329 print_command_lines (uiout, l, 4);
c4093a6a 6330 }
d24317b4 6331
d9b3f62e 6332 if (is_tracepoint (b))
1042e4c0 6333 {
d9b3f62e
PA
6334 struct tracepoint *t = (struct tracepoint *) b;
6335
6336 if (!part_of_multiple && t->pass_count)
6337 {
6338 annotate_field (10);
112e8700 6339 uiout->text ("\tpass count ");
381befee 6340 uiout->field_signed ("pass", t->pass_count);
112e8700 6341 uiout->text (" \n");
d9b3f62e 6342 }
f2a8bc8a
YQ
6343
6344 /* Don't display it when tracepoint or tracepoint location is
6345 pending. */
6346 if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6347 {
6348 annotate_field (11);
6349
112e8700
SM
6350 if (uiout->is_mi_like_p ())
6351 uiout->field_string ("installed",
f2a8bc8a
YQ
6352 loc->inserted ? "y" : "n");
6353 else
6354 {
6355 if (loc->inserted)
112e8700 6356 uiout->text ("\t");
f2a8bc8a 6357 else
112e8700
SM
6358 uiout->text ("\tnot ");
6359 uiout->text ("installed on target\n");
f2a8bc8a
YQ
6360 }
6361 }
1042e4c0
SS
6362 }
6363
112e8700 6364 if (uiout->is_mi_like_p () && !part_of_multiple)
d24317b4 6365 {
3a5c3e22
PA
6366 if (is_watchpoint (b))
6367 {
6368 struct watchpoint *w = (struct watchpoint *) b;
6369
a4c50be3 6370 uiout->field_string ("original-location", w->exp_string.get ());
3a5c3e22 6371 }
f00aae0f 6372 else if (b->location != NULL
d28cd78a 6373 && event_location_to_string (b->location.get ()) != NULL)
112e8700 6374 uiout->field_string ("original-location",
d28cd78a 6375 event_location_to_string (b->location.get ()));
d24317b4 6376 }
c01e038b
TT
6377
6378 return result;
c4093a6a 6379}
c5aa993b 6380
13674803
SM
6381/* See breakpoint.h. */
6382
6383bool fix_multi_location_breakpoint_output_globally = false;
6384
0d381245
VP
6385static void
6386print_one_breakpoint (struct breakpoint *b,
4a64f543 6387 struct bp_location **last_loc,
6c95b8df 6388 int allflag)
0d381245 6389{
79a45e25 6390 struct ui_out *uiout = current_uiout;
13674803
SM
6391 bool use_fixed_output
6392 = (uiout->test_flags (fix_multi_location_breakpoint_output)
6393 || fix_multi_location_breakpoint_output_globally);
8d3788bd 6394
b4be1b06 6395 gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
c01e038b
TT
6396 bool printed = print_one_breakpoint_location (b, NULL, 0, last_loc,
6397 allflag, false);
8d3788bd 6398
b4be1b06
SM
6399 /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6400 are outside. */
6401 if (!use_fixed_output)
6402 bkpt_tuple_emitter.reset ();
0d381245
VP
6403
6404 /* If this breakpoint has custom print function,
6405 it's already printed. Otherwise, print individual
6406 locations, if any. */
c01e038b 6407 if (!printed || allflag)
0d381245 6408 {
4a64f543
MS
6409 /* If breakpoint has a single location that is disabled, we
6410 print it as if it had several locations, since otherwise it's
6411 hard to represent "breakpoint enabled, location disabled"
6412 situation.
6413
6414 Note that while hardware watchpoints have several locations
a38118e5
PA
6415 internally, that's not a property exposed to users.
6416
6417 Likewise, while catchpoints may be implemented with
6418 breakpoints (e.g., catch throw), that's not a property
6419 exposed to users. We do however display the internal
6420 breakpoint locations with "maint info breakpoints". */
6421 if (!is_hardware_watchpoint (b)
f06f1252
TT
6422 && (!is_catchpoint (b) || is_exception_catchpoint (b)
6423 || is_ada_exception_catchpoint (b))
a38118e5 6424 && (allflag
b5fa468f
TBA
6425 || (b->loc && (b->loc->next
6426 || !b->loc->enabled
6427 || b->loc->disabled_by_cond))))
0d381245 6428 {
b4be1b06
SM
6429 gdb::optional<ui_out_emit_list> locations_list;
6430
6431 /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6432 MI record. For later versions, place breakpoint locations in a
6433 list. */
6434 if (uiout->is_mi_like_p () && use_fixed_output)
6435 locations_list.emplace (uiout, "locations");
8d3788bd 6436
b4be1b06 6437 int n = 1;
40cb8ca5 6438 for (bp_location *loc : b->locations ())
8d3788bd 6439 {
b4be1b06 6440 ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
a38118e5
PA
6441 print_one_breakpoint_location (b, loc, n, last_loc,
6442 allflag, allflag);
40cb8ca5 6443 n++;
8d3788bd 6444 }
0d381245
VP
6445 }
6446 }
6447}
6448
a6d9a66e
UW
6449static int
6450breakpoint_address_bits (struct breakpoint *b)
6451{
6452 int print_address_bits = 0;
a6d9a66e 6453
c6d81124
PA
6454 /* Software watchpoints that aren't watching memory don't have an
6455 address to print. */
6456 if (is_no_memory_software_watchpoint (b))
6457 return 0;
6458
40cb8ca5 6459 for (bp_location *loc : b->locations ())
a6d9a66e 6460 {
c7437ca6
PA
6461 int addr_bit;
6462
c7437ca6 6463 addr_bit = gdbarch_addr_bit (loc->gdbarch);
a6d9a66e
UW
6464 if (addr_bit > print_address_bits)
6465 print_address_bits = addr_bit;
6466 }
6467
6468 return print_address_bits;
6469}
0d381245 6470
65630365 6471/* See breakpoint.h. */
c5aa993b 6472
65630365
PA
6473void
6474print_breakpoint (breakpoint *b)
c4093a6a 6475{
a6d9a66e 6476 struct bp_location *dummy_loc = NULL;
65630365 6477 print_one_breakpoint (b, &dummy_loc, 0);
c4093a6a 6478}
c5aa993b 6479
09d682a4
TT
6480/* Return true if this breakpoint was set by the user, false if it is
6481 internal or momentary. */
6482
6483int
6484user_breakpoint_p (struct breakpoint *b)
6485{
46c6471b 6486 return b->number > 0;
09d682a4
TT
6487}
6488
93daf339
TT
6489/* See breakpoint.h. */
6490
6491int
6492pending_breakpoint_p (struct breakpoint *b)
6493{
6494 return b->loc == NULL;
6495}
6496
5c458ae8
SM
6497/* Print information on breakpoints (including watchpoints and tracepoints).
6498
6499 If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6500 understood by number_or_range_parser. Only breakpoints included in this
6501 list are then printed.
6502
6503 If SHOW_INTERNAL is true, print internal breakpoints.
6504
6505 If FILTER is non-NULL, call it on each breakpoint and only include the
6506 ones for which it returns true.
6507
6508 Return the total number of breakpoints listed. */
c906108c 6509
d77f58be 6510static int
5c458ae8 6511breakpoint_1 (const char *bp_num_list, bool show_internal,
f2478a7e 6512 bool (*filter) (const struct breakpoint *))
c4093a6a 6513{
a6d9a66e 6514 struct bp_location *last_loc = NULL;
7f3b0473 6515 int nr_printable_breakpoints;
79a45b7d 6516 struct value_print_options opts;
a6d9a66e 6517 int print_address_bits = 0;
269b11a2 6518 int print_type_col_width = 14;
79a45e25 6519 struct ui_out *uiout = current_uiout;
b5fa468f 6520 bool has_disabled_by_cond_location = false;
269b11a2 6521
79a45b7d
TT
6522 get_user_print_options (&opts);
6523
4a64f543
MS
6524 /* Compute the number of rows in the table, as well as the size
6525 required for address fields. */
7f3b0473 6526 nr_printable_breakpoints = 0;
43892fdf 6527 for (breakpoint *b : all_breakpoints ())
e5a67952
MS
6528 {
6529 /* If we have a filter, only list the breakpoints it accepts. */
6530 if (filter && !filter (b))
6531 continue;
6532
5c458ae8 6533 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
e5a67952 6534 accept. Skip the others. */
5c458ae8 6535 if (bp_num_list != NULL && *bp_num_list != '\0')
e5a67952 6536 {
5c458ae8 6537 if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
e5a67952 6538 continue;
5c458ae8 6539 if (!show_internal && !number_is_in_list (bp_num_list, b->number))
e5a67952
MS
6540 continue;
6541 }
269b11a2 6542
5c458ae8 6543 if (show_internal || user_breakpoint_p (b))
e5a67952
MS
6544 {
6545 int addr_bit, type_len;
a6d9a66e 6546
e5a67952
MS
6547 addr_bit = breakpoint_address_bits (b);
6548 if (addr_bit > print_address_bits)
6549 print_address_bits = addr_bit;
269b11a2 6550
e5a67952
MS
6551 type_len = strlen (bptype_string (b->type));
6552 if (type_len > print_type_col_width)
6553 print_type_col_width = type_len;
6554
6555 nr_printable_breakpoints++;
6556 }
6557 }
7f3b0473 6558
4a2b031d
TT
6559 {
6560 ui_out_emit_table table_emitter (uiout,
6561 opts.addressprint ? 6 : 5,
6562 nr_printable_breakpoints,
6563 "BreakpointTable");
6564
6565 if (nr_printable_breakpoints > 0)
6566 annotate_breakpoints_headers ();
6567 if (nr_printable_breakpoints > 0)
6568 annotate_field (0);
6569 uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6570 if (nr_printable_breakpoints > 0)
6571 annotate_field (1);
6572 uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6573 if (nr_printable_breakpoints > 0)
6574 annotate_field (2);
6575 uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6576 if (nr_printable_breakpoints > 0)
6577 annotate_field (3);
6578 uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6579 if (opts.addressprint)
6580 {
6581 if (nr_printable_breakpoints > 0)
6582 annotate_field (4);
6583 if (print_address_bits <= 32)
6584 uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6585 else
6586 uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6587 }
6588 if (nr_printable_breakpoints > 0)
6589 annotate_field (5);
6590 uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6591 uiout->table_body ();
6592 if (nr_printable_breakpoints > 0)
6593 annotate_breakpoints_table ();
6594
43892fdf 6595 for (breakpoint *b : all_breakpoints ())
4a2b031d
TT
6596 {
6597 QUIT;
6598 /* If we have a filter, only list the breakpoints it accepts. */
6599 if (filter && !filter (b))
6600 continue;
e5a67952 6601
5c458ae8 6602 /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
4a2b031d 6603 accept. Skip the others. */
e5a67952 6604
5c458ae8 6605 if (bp_num_list != NULL && *bp_num_list != '\0')
4a2b031d 6606 {
5c458ae8 6607 if (show_internal) /* maintenance info breakpoint */
4a2b031d 6608 {
5c458ae8 6609 if (parse_and_eval_long (bp_num_list) != b->number)
4a2b031d
TT
6610 continue;
6611 }
6612 else /* all others */
6613 {
5c458ae8 6614 if (!number_is_in_list (bp_num_list, b->number))
4a2b031d
TT
6615 continue;
6616 }
6617 }
6618 /* We only print out user settable breakpoints unless the
5c458ae8
SM
6619 show_internal is set. */
6620 if (show_internal || user_breakpoint_p (b))
b5fa468f
TBA
6621 {
6622 print_one_breakpoint (b, &last_loc, show_internal);
40cb8ca5 6623 for (bp_location *loc : b->locations ())
b5fa468f
TBA
6624 if (loc->disabled_by_cond)
6625 has_disabled_by_cond_location = true;
6626 }
4a2b031d
TT
6627 }
6628 }
698384cd 6629
7f3b0473 6630 if (nr_printable_breakpoints == 0)
c906108c 6631 {
4a64f543
MS
6632 /* If there's a filter, let the caller decide how to report
6633 empty list. */
d77f58be
SS
6634 if (!filter)
6635 {
5c458ae8 6636 if (bp_num_list == NULL || *bp_num_list == '\0')
112e8700 6637 uiout->message ("No breakpoints or watchpoints.\n");
d77f58be 6638 else
112e8700 6639 uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
5c458ae8 6640 bp_num_list);
d77f58be 6641 }
c906108c
SS
6642 }
6643 else
c4093a6a 6644 {
a6d9a66e
UW
6645 if (last_loc && !server_command)
6646 set_next_address (last_loc->gdbarch, last_loc->address);
b5fa468f 6647
85c88e2a 6648 if (has_disabled_by_cond_location && !uiout->is_mi_like_p ())
b5fa468f
TBA
6649 uiout->message (_("(*): Breakpoint condition is invalid at this "
6650 "location.\n"));
c4093a6a 6651 }
c906108c 6652
4a64f543 6653 /* FIXME? Should this be moved up so that it is only called when
c4093a6a 6654 there have been breakpoints? */
c906108c 6655 annotate_breakpoints_table_end ();
d77f58be
SS
6656
6657 return nr_printable_breakpoints;
c906108c
SS
6658}
6659
ad443146
SS
6660/* Display the value of default-collect in a way that is generally
6661 compatible with the breakpoint list. */
6662
6663static void
6664default_collect_info (void)
6665{
79a45e25
PA
6666 struct ui_out *uiout = current_uiout;
6667
ad443146
SS
6668 /* If it has no value (which is frequently the case), say nothing; a
6669 message like "No default-collect." gets in user's face when it's
6670 not wanted. */
e0700ba4 6671 if (default_collect.empty ())
ad443146
SS
6672 return;
6673
6674 /* The following phrase lines up nicely with per-tracepoint collect
6675 actions. */
112e8700
SM
6676 uiout->text ("default collect ");
6677 uiout->field_string ("default-collect", default_collect);
6678 uiout->text (" \n");
ad443146
SS
6679}
6680
c906108c 6681static void
0b39b52e 6682info_breakpoints_command (const char *args, int from_tty)
c906108c 6683{
5c458ae8 6684 breakpoint_1 (args, false, NULL);
ad443146
SS
6685
6686 default_collect_info ();
d77f58be
SS
6687}
6688
6689static void
1d12d88f 6690info_watchpoints_command (const char *args, int from_tty)
d77f58be 6691{
5c458ae8 6692 int num_printed = breakpoint_1 (args, false, is_watchpoint);
79a45e25 6693 struct ui_out *uiout = current_uiout;
d77f58be
SS
6694
6695 if (num_printed == 0)
6696 {
e5a67952 6697 if (args == NULL || *args == '\0')
112e8700 6698 uiout->message ("No watchpoints.\n");
d77f58be 6699 else
112e8700 6700 uiout->message ("No watchpoint matching '%s'.\n", args);
d77f58be 6701 }
c906108c
SS
6702}
6703
7a292a7a 6704static void
4495129a 6705maintenance_info_breakpoints (const char *args, int from_tty)
c906108c 6706{
5c458ae8 6707 breakpoint_1 (args, true, NULL);
ad443146
SS
6708
6709 default_collect_info ();
c906108c
SS
6710}
6711
0d381245 6712static int
714835d5 6713breakpoint_has_pc (struct breakpoint *b,
6c95b8df 6714 struct program_space *pspace,
714835d5 6715 CORE_ADDR pc, struct obj_section *section)
0d381245 6716{
40cb8ca5 6717 for (bp_location *bl : b->locations ())
0d381245 6718 {
6c95b8df
PA
6719 if (bl->pspace == pspace
6720 && bl->address == pc
0d381245
VP
6721 && (!overlay_debugging || bl->section == section))
6722 return 1;
6723 }
6724 return 0;
6725}
6726
672f9b60 6727/* Print a message describing any user-breakpoints set at PC. This
6c95b8df
PA
6728 concerns with logical breakpoints, so we match program spaces, not
6729 address spaces. */
c906108c
SS
6730
6731static void
6c95b8df
PA
6732describe_other_breakpoints (struct gdbarch *gdbarch,
6733 struct program_space *pspace, CORE_ADDR pc,
5af949e3 6734 struct obj_section *section, int thread)
c906108c 6735{
52f0bd74 6736 int others = 0;
c906108c 6737
43892fdf 6738 for (breakpoint *b : all_breakpoints ())
672f9b60 6739 others += (user_breakpoint_p (b)
dda83cd7 6740 && breakpoint_has_pc (b, pspace, pc, section));
43892fdf 6741
c906108c
SS
6742 if (others > 0)
6743 {
a3f17187 6744 if (others == 1)
6cb06a8c 6745 gdb_printf (_("Note: breakpoint "));
a3f17187 6746 else /* if (others == ???) */
6cb06a8c 6747 gdb_printf (_("Note: breakpoints "));
43892fdf 6748 for (breakpoint *b : all_breakpoints ())
672f9b60 6749 if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
0d381245
VP
6750 {
6751 others--;
6cb06a8c 6752 gdb_printf ("%d", b->number);
0d381245 6753 if (b->thread == -1 && thread != -1)
6cb06a8c 6754 gdb_printf (" (all threads)");
0d381245 6755 else if (b->thread != -1)
6cb06a8c
TT
6756 gdb_printf (" (thread %d)", b->thread);
6757 gdb_printf ("%s%s ",
6758 ((b->enable_state == bp_disabled
6759 || b->enable_state == bp_call_disabled)
6760 ? " (disabled)"
6761 : ""),
6762 (others > 1) ? ","
6763 : ((others == 1) ? " and" : ""));
0d381245 6764 }
6a831f06
PA
6765 current_uiout->message (_("also set at pc %ps.\n"),
6766 styled_string (address_style.style (),
6767 paddress (gdbarch, pc)));
c906108c
SS
6768 }
6769}
6770\f
c906108c 6771
cb1e4e32
PA
6772/* Return true iff it is meaningful to use the address member of LOC.
6773 For some breakpoint types, the locations' address members are
6774 irrelevant and it makes no sense to attempt to compare them to
6775 other addresses (or use them for any other purpose either).
2d134ed3 6776
cb1e4e32
PA
6777 More specifically, software watchpoints and catchpoints that are
6778 not backed by breakpoints always have a zero valued location
6779 address and we don't want to mark breakpoints of any of these types
6780 to be a duplicate of an actual breakpoint location at address
6781 zero. */
e4f237da 6782
cb1e4e32
PA
6783static bool
6784bl_address_is_meaningful (bp_location *loc)
e4f237da 6785{
cb1e4e32 6786 return loc->loc_type != bp_loc_other;
2d134ed3
PA
6787}
6788
6789/* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6790 true if LOC1 and LOC2 represent the same watchpoint location. */
6791
6792static int
4a64f543
MS
6793watchpoint_locations_match (struct bp_location *loc1,
6794 struct bp_location *loc2)
2d134ed3 6795{
3a5c3e22
PA
6796 struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6797 struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6798
6799 /* Both of them must exist. */
6800 gdb_assert (w1 != NULL);
6801 gdb_assert (w2 != NULL);
2bdf28a0 6802
4a64f543
MS
6803 /* If the target can evaluate the condition expression in hardware,
6804 then we we need to insert both watchpoints even if they are at
6805 the same place. Otherwise the watchpoint will only trigger when
6806 the condition of whichever watchpoint was inserted evaluates to
6807 true, not giving a chance for GDB to check the condition of the
6808 other watchpoint. */
3a5c3e22 6809 if ((w1->cond_exp
4a64f543
MS
6810 && target_can_accel_watchpoint_condition (loc1->address,
6811 loc1->length,
0cf6dd15 6812 loc1->watchpoint_type,
4d01a485 6813 w1->cond_exp.get ()))
3a5c3e22 6814 || (w2->cond_exp
4a64f543
MS
6815 && target_can_accel_watchpoint_condition (loc2->address,
6816 loc2->length,
0cf6dd15 6817 loc2->watchpoint_type,
4d01a485 6818 w2->cond_exp.get ())))
0cf6dd15
TJB
6819 return 0;
6820
85d721b8
PA
6821 /* Note that this checks the owner's type, not the location's. In
6822 case the target does not support read watchpoints, but does
6823 support access watchpoints, we'll have bp_read_watchpoint
6824 watchpoints with hw_access locations. Those should be considered
6825 duplicates of hw_read locations. The hw_read locations will
6826 become hw_access locations later. */
2d134ed3
PA
6827 return (loc1->owner->type == loc2->owner->type
6828 && loc1->pspace->aspace == loc2->pspace->aspace
6829 && loc1->address == loc2->address
6830 && loc1->length == loc2->length);
e4f237da
KB
6831}
6832
31e77af2 6833/* See breakpoint.h. */
6c95b8df 6834
31e77af2 6835int
accd0bcd
YQ
6836breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6837 const address_space *aspace2, CORE_ADDR addr2)
6c95b8df 6838{
f5656ead 6839 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6c95b8df
PA
6840 || aspace1 == aspace2)
6841 && addr1 == addr2);
6842}
6843
f1310107
TJB
6844/* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6845 {ASPACE1,ADDR1,LEN1}. In most targets, this can only be true if ASPACE1
6846 matches ASPACE2. On targets that have global breakpoints, the address
6847 space doesn't really matter. */
6848
6849static int
accd0bcd
YQ
6850breakpoint_address_match_range (const address_space *aspace1,
6851 CORE_ADDR addr1,
6852 int len1, const address_space *aspace2,
f1310107
TJB
6853 CORE_ADDR addr2)
6854{
f5656ead 6855 return ((gdbarch_has_global_breakpoints (target_gdbarch ())
f1310107
TJB
6856 || aspace1 == aspace2)
6857 && addr2 >= addr1 && addr2 < addr1 + len1);
6858}
6859
6860/* Returns true if {ASPACE,ADDR} matches the breakpoint BL. BL may be
6861 a ranged breakpoint. In most targets, a match happens only if ASPACE
6862 matches the breakpoint's address space. On targets that have global
6863 breakpoints, the address space doesn't really matter. */
6864
6865static int
6866breakpoint_location_address_match (struct bp_location *bl,
accd0bcd 6867 const address_space *aspace,
f1310107
TJB
6868 CORE_ADDR addr)
6869{
6870 return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6871 aspace, addr)
6872 || (bl->length
6873 && breakpoint_address_match_range (bl->pspace->aspace,
6874 bl->address, bl->length,
6875 aspace, addr)));
6876}
6877
d35ae833
PA
6878/* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6879 breakpoint BL. BL may be a ranged breakpoint. In most targets, a
6880 match happens only if ASPACE matches the breakpoint's address
6881 space. On targets that have global breakpoints, the address space
6882 doesn't really matter. */
6883
6884static int
6885breakpoint_location_address_range_overlap (struct bp_location *bl,
accd0bcd 6886 const address_space *aspace,
d35ae833
PA
6887 CORE_ADDR addr, int len)
6888{
6889 if (gdbarch_has_global_breakpoints (target_gdbarch ())
6890 || bl->pspace->aspace == aspace)
6891 {
6892 int bl_len = bl->length != 0 ? bl->length : 1;
6893
6894 if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6895 return 1;
6896 }
6897 return 0;
6898}
6899
1e4d1764
YQ
6900/* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6901 Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6902 true, otherwise returns false. */
6903
6904static int
6905tracepoint_locations_match (struct bp_location *loc1,
6906 struct bp_location *loc2)
6907{
6908 if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6909 /* Since tracepoint locations are never duplicated with others', tracepoint
6910 locations at the same address of different tracepoints are regarded as
6911 different locations. */
6912 return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6913 else
6914 return 0;
6915}
6916
2d134ed3 6917/* Assuming LOC1 and LOC2's types' have meaningful target addresses
cb1e4e32 6918 (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
7f32a4d5
PA
6919 the same location. If SW_HW_BPS_MATCH is true, then software
6920 breakpoint locations and hardware breakpoint locations match,
6921 otherwise they don't. */
2d134ed3
PA
6922
6923static int
7f32a4d5
PA
6924breakpoint_locations_match (struct bp_location *loc1,
6925 struct bp_location *loc2,
6926 bool sw_hw_bps_match)
2d134ed3 6927{
2bdf28a0
JK
6928 int hw_point1, hw_point2;
6929
6930 /* Both of them must not be in moribund_locations. */
6931 gdb_assert (loc1->owner != NULL);
6932 gdb_assert (loc2->owner != NULL);
6933
6934 hw_point1 = is_hardware_watchpoint (loc1->owner);
6935 hw_point2 = is_hardware_watchpoint (loc2->owner);
2d134ed3
PA
6936
6937 if (hw_point1 != hw_point2)
6938 return 0;
6939 else if (hw_point1)
6940 return watchpoint_locations_match (loc1, loc2);
1e4d1764
YQ
6941 else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6942 return tracepoint_locations_match (loc1, loc2);
2d134ed3 6943 else
7f32a4d5
PA
6944 /* We compare bp_location.length in order to cover ranged
6945 breakpoints. Keep this in sync with
6946 bp_location_is_less_than. */
f1310107
TJB
6947 return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6948 loc2->pspace->aspace, loc2->address)
7f32a4d5 6949 && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
f1310107 6950 && loc1->length == loc2->length);
2d134ed3
PA
6951}
6952
76897487
KB
6953static void
6954breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
dda83cd7 6955 int bnum, int have_bnum)
76897487 6956{
f63fbe86
MS
6957 /* The longest string possibly returned by hex_string_custom
6958 is 50 chars. These must be at least that big for safety. */
6959 char astr1[64];
6960 char astr2[64];
76897487 6961
bb599908
PH
6962 strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6963 strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
76897487 6964 if (have_bnum)
8a3fe4f8 6965 warning (_("Breakpoint %d address previously adjusted from %s to %s."),
dda83cd7 6966 bnum, astr1, astr2);
76897487 6967 else
8a3fe4f8 6968 warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
76897487
KB
6969}
6970
4a64f543
MS
6971/* Adjust a breakpoint's address to account for architectural
6972 constraints on breakpoint placement. Return the adjusted address.
6973 Note: Very few targets require this kind of adjustment. For most
6974 targets, this function is simply the identity function. */
76897487
KB
6975
6976static CORE_ADDR
a6d9a66e
UW
6977adjust_breakpoint_address (struct gdbarch *gdbarch,
6978 CORE_ADDR bpaddr, enum bptype bptype)
76897487 6979{
a0de8c21
YQ
6980 if (bptype == bp_watchpoint
6981 || bptype == bp_hardware_watchpoint
6982 || bptype == bp_read_watchpoint
6983 || bptype == bp_access_watchpoint
6984 || bptype == bp_catchpoint)
88f7da05
KB
6985 {
6986 /* Watchpoints and the various bp_catch_* eventpoints should not
dda83cd7 6987 have their addresses modified. */
88f7da05
KB
6988 return bpaddr;
6989 }
7c16b83e
PA
6990 else if (bptype == bp_single_step)
6991 {
6992 /* Single-step breakpoints should not have their addresses
6993 modified. If there's any architectural constrain that
6994 applies to this address, then it should have already been
6995 taken into account when the breakpoint was created in the
6996 first place. If we didn't do this, stepping through e.g.,
6997 Thumb-2 IT blocks would break. */
6998 return bpaddr;
6999 }
76897487
KB
7000 else
7001 {
a0de8c21
YQ
7002 CORE_ADDR adjusted_bpaddr = bpaddr;
7003
7004 if (gdbarch_adjust_breakpoint_address_p (gdbarch))
7005 {
7006 /* Some targets have architectural constraints on the placement
7007 of breakpoint instructions. Obtain the adjusted address. */
7008 adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7009 }
76897487 7010
a0de8c21 7011 adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
76897487
KB
7012
7013 /* An adjusted breakpoint address can significantly alter
dda83cd7 7014 a user's expectations. Print a warning if an adjustment
76897487
KB
7015 is required. */
7016 if (adjusted_bpaddr != bpaddr)
7017 breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7018
7019 return adjusted_bpaddr;
7020 }
7021}
7022
cb1e4e32
PA
7023static bp_loc_type
7024bp_location_from_bp_type (bptype type)
7cc221ef 7025{
cb1e4e32 7026 switch (type)
e049a4b5
DJ
7027 {
7028 case bp_breakpoint:
7c16b83e 7029 case bp_single_step:
e049a4b5
DJ
7030 case bp_until:
7031 case bp_finish:
7032 case bp_longjmp:
7033 case bp_longjmp_resume:
e2e4d78b 7034 case bp_longjmp_call_dummy:
186c406b
TT
7035 case bp_exception:
7036 case bp_exception_resume:
e049a4b5 7037 case bp_step_resume:
2c03e5be 7038 case bp_hp_step_resume:
e049a4b5
DJ
7039 case bp_watchpoint_scope:
7040 case bp_call_dummy:
aa7d318d 7041 case bp_std_terminate:
e049a4b5
DJ
7042 case bp_shlib_event:
7043 case bp_thread_event:
7044 case bp_overlay_event:
4efc6507 7045 case bp_jit_event:
0fd8e87f 7046 case bp_longjmp_master:
aa7d318d 7047 case bp_std_terminate_master:
186c406b 7048 case bp_exception_master:
0e30163f
JK
7049 case bp_gnu_ifunc_resolver:
7050 case bp_gnu_ifunc_resolver_return:
e7e0cddf 7051 case bp_dprintf:
cb1e4e32 7052 return bp_loc_software_breakpoint;
e049a4b5 7053 case bp_hardware_breakpoint:
cb1e4e32 7054 return bp_loc_hardware_breakpoint;
e049a4b5
DJ
7055 case bp_hardware_watchpoint:
7056 case bp_read_watchpoint:
7057 case bp_access_watchpoint:
cb1e4e32 7058 return bp_loc_hardware_watchpoint;
e049a4b5 7059 case bp_watchpoint:
ce78b96d 7060 case bp_catchpoint:
15c3d785
PA
7061 case bp_tracepoint:
7062 case bp_fast_tracepoint:
0fb4aa4b 7063 case bp_static_tracepoint:
cb1e4e32 7064 return bp_loc_other;
e049a4b5 7065 default:
e2e0b3e5 7066 internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
e049a4b5 7067 }
cb1e4e32
PA
7068}
7069
7070bp_location::bp_location (breakpoint *owner, bp_loc_type type)
7071{
7072 this->owner = owner;
7073 this->cond_bytecode = NULL;
7074 this->shlib_disabled = 0;
7075 this->enabled = 1;
b5fa468f 7076 this->disabled_by_cond = false;
cb1e4e32
PA
7077
7078 this->loc_type = type;
e049a4b5 7079
cb1e4e32
PA
7080 if (this->loc_type == bp_loc_software_breakpoint
7081 || this->loc_type == bp_loc_hardware_breakpoint)
7082 mark_breakpoint_location_modified (this);
7083
b6433ede 7084 incref ();
cb1e4e32
PA
7085}
7086
7087bp_location::bp_location (breakpoint *owner)
7088 : bp_location::bp_location (owner,
7089 bp_location_from_bp_type (owner->type))
7090{
28010a5d
PA
7091}
7092
7093/* Allocate a struct bp_location. */
7094
7095static struct bp_location *
7096allocate_bp_location (struct breakpoint *bpt)
7097{
348d480f
PA
7098 return bpt->ops->allocate_location (bpt);
7099}
7cc221ef 7100
f431efe5
PA
7101/* Decrement reference count. If the reference count reaches 0,
7102 destroy the bp_location. Sets *BLP to NULL. */
7103
7104static void
7105decref_bp_location (struct bp_location **blp)
7106{
b6433ede 7107 bp_location_ref_policy::decref (*blp);
f431efe5
PA
7108 *blp = NULL;
7109}
7110
346774a9 7111/* Add breakpoint B at the end of the global breakpoint chain. */
c906108c 7112
b270e6f9
TT
7113static breakpoint *
7114add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
c906108c 7115{
346774a9 7116 struct breakpoint *b1;
b270e6f9 7117 struct breakpoint *result = b.get ();
c906108c 7118
346774a9
PA
7119 /* Add this breakpoint to the end of the chain so that a list of
7120 breakpoints will come out in order of increasing numbers. */
7121
7122 b1 = breakpoint_chain;
7123 if (b1 == 0)
b270e6f9 7124 breakpoint_chain = b.release ();
346774a9
PA
7125 else
7126 {
7127 while (b1->next)
7128 b1 = b1->next;
b270e6f9 7129 b1->next = b.release ();
346774a9 7130 }
b270e6f9
TT
7131
7132 return result;
346774a9
PA
7133}
7134
7135/* Initializes breakpoint B with type BPTYPE and no locations yet. */
7136
7137static void
7138init_raw_breakpoint_without_location (struct breakpoint *b,
7139 struct gdbarch *gdbarch,
28010a5d 7140 enum bptype bptype,
c0a91b2b 7141 const struct breakpoint_ops *ops)
346774a9 7142{
348d480f
PA
7143 gdb_assert (ops != NULL);
7144
28010a5d 7145 b->ops = ops;
4d28f7a8 7146 b->type = bptype;
a6d9a66e 7147 b->gdbarch = gdbarch;
c906108c
SS
7148 b->language = current_language->la_language;
7149 b->input_radix = input_radix;
d0fb5eae 7150 b->related_breakpoint = b;
346774a9
PA
7151}
7152
7153/* Helper to set_raw_breakpoint below. Creates a breakpoint
7154 that has type BPTYPE and has no locations as yet. */
346774a9
PA
7155
7156static struct breakpoint *
7157set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
348d480f 7158 enum bptype bptype,
c0a91b2b 7159 const struct breakpoint_ops *ops)
346774a9 7160{
3b0871f4 7161 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7162
3b0871f4 7163 init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
b270e6f9 7164 return add_to_breakpoint_chain (std::move (b));
0d381245
VP
7165}
7166
0ba852ab 7167/* Initialize loc->function_name. */
0e30163f 7168
0d381245 7169static void
0ba852ab 7170set_breakpoint_location_function (struct bp_location *loc)
0d381245 7171{
2bdf28a0
JK
7172 gdb_assert (loc->owner != NULL);
7173
0d381245 7174 if (loc->owner->type == bp_breakpoint
1042e4c0 7175 || loc->owner->type == bp_hardware_breakpoint
d77f58be 7176 || is_tracepoint (loc->owner))
0d381245 7177 {
2c02bd72 7178 const char *function_name;
0e30163f 7179
3467ec66 7180 if (loc->msymbol != NULL
60f62e2b
SM
7181 && (loc->msymbol->type () == mst_text_gnu_ifunc
7182 || loc->msymbol->type () == mst_data_gnu_ifunc))
0e30163f
JK
7183 {
7184 struct breakpoint *b = loc->owner;
7185
c9d95fa3 7186 function_name = loc->msymbol->linkage_name ();
3467ec66
PA
7187
7188 if (b->type == bp_breakpoint && b->loc == loc
7189 && loc->next == NULL && b->related_breakpoint == b)
0e30163f
JK
7190 {
7191 /* Create only the whole new breakpoint of this type but do not
7192 mess more complicated breakpoints with multiple locations. */
7193 b->type = bp_gnu_ifunc_resolver;
6a3a010b 7194 /* Remember the resolver's address for use by the return
dda83cd7 7195 breakpoint. */
3467ec66 7196 loc->related_address = loc->address;
0e30163f
JK
7197 }
7198 }
3467ec66
PA
7199 else
7200 find_pc_partial_function (loc->address, &function_name, NULL, NULL);
0e30163f 7201
2c02bd72 7202 if (function_name)
23d6ee64 7203 loc->function_name = make_unique_xstrdup (function_name);
0d381245
VP
7204 }
7205}
7206
a6d9a66e 7207/* Attempt to determine architecture of location identified by SAL. */
1bfeeb0f 7208struct gdbarch *
a6d9a66e
UW
7209get_sal_arch (struct symtab_and_line sal)
7210{
7211 if (sal.section)
08feed99 7212 return sal.section->objfile->arch ();
a6d9a66e 7213 if (sal.symtab)
3c86fae3 7214 return sal.symtab->compunit ()->objfile ()->arch ();
a6d9a66e
UW
7215
7216 return NULL;
7217}
7218
346774a9
PA
7219/* Low level routine for partially initializing a breakpoint of type
7220 BPTYPE. The newly created breakpoint's address, section, source
c56053d2 7221 file name, and line number are provided by SAL.
0d381245
VP
7222
7223 It is expected that the caller will complete the initialization of
7224 the newly created breakpoint struct as well as output any status
c56053d2 7225 information regarding the creation of a new breakpoint. */
0d381245 7226
346774a9
PA
7227static void
7228init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
28010a5d 7229 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7230 const struct breakpoint_ops *ops)
0d381245 7231{
28010a5d 7232 init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
346774a9 7233
3742cc8b 7234 add_location_to_breakpoint (b, &sal);
0d381245 7235
6c95b8df
PA
7236 if (bptype != bp_catchpoint)
7237 gdb_assert (sal.pspace != NULL);
7238
f8eba3c6
TT
7239 /* Store the program space that was used to set the breakpoint,
7240 except for ordinary breakpoints, which are independent of the
7241 program space. */
7242 if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7243 b->pspace = sal.pspace;
346774a9 7244}
c906108c 7245
346774a9
PA
7246/* set_raw_breakpoint is a low level routine for allocating and
7247 partially initializing a breakpoint of type BPTYPE. The newly
7248 created breakpoint's address, section, source file name, and line
7249 number are provided by SAL. The newly created and partially
7250 initialized breakpoint is added to the breakpoint chain and
7251 is also returned as the value of this function.
7252
7253 It is expected that the caller will complete the initialization of
7254 the newly created breakpoint struct as well as output any status
7255 information regarding the creation of a new breakpoint. In
7256 particular, set_raw_breakpoint does NOT set the breakpoint
7257 number! Care should be taken to not allow an error to occur
7258 prior to completing the initialization of the breakpoint. If this
7259 should happen, a bogus breakpoint will be left on the chain. */
7260
cd0f67f3 7261static struct breakpoint *
346774a9 7262set_raw_breakpoint (struct gdbarch *gdbarch,
348d480f 7263 struct symtab_and_line sal, enum bptype bptype,
c0a91b2b 7264 const struct breakpoint_ops *ops)
346774a9 7265{
3b0871f4 7266 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
346774a9 7267
3b0871f4 7268 init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
b270e6f9 7269 return add_to_breakpoint_chain (std::move (b));
c906108c
SS
7270}
7271
53a5351d 7272/* Call this routine when stepping and nexting to enable a breakpoint
186c406b
TT
7273 if we do a longjmp() or 'throw' in TP. FRAME is the frame which
7274 initiated the operation. */
c906108c
SS
7275
7276void
186c406b 7277set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
c906108c 7278{
5d5658a1 7279 int thread = tp->global_num;
0fd8e87f
UW
7280
7281 /* To avoid having to rescan all objfile symbols at every step,
7282 we maintain a list of continually-inserted but always disabled
7283 longjmp "master" breakpoints. Here, we simply create momentary
7284 clones of those and enable them for the requested thread. */
1428b37a 7285 for (breakpoint *b : all_breakpoints_safe ())
6c95b8df 7286 if (b->pspace == current_program_space
186c406b
TT
7287 && (b->type == bp_longjmp_master
7288 || b->type == bp_exception_master))
0fd8e87f 7289 {
06edf0c0
PA
7290 enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7291 struct breakpoint *clone;
cc59ec59 7292
e2e4d78b
JK
7293 /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7294 after their removal. */
06edf0c0 7295 clone = momentary_breakpoint_from_master (b, type,
c1fc2657 7296 &momentary_breakpoint_ops, 1);
0fd8e87f
UW
7297 clone->thread = thread;
7298 }
186c406b
TT
7299
7300 tp->initiating_frame = frame;
c906108c
SS
7301}
7302
611c83ae 7303/* Delete all longjmp breakpoints from THREAD. */
c906108c 7304void
611c83ae 7305delete_longjmp_breakpoint (int thread)
c906108c 7306{
1428b37a 7307 for (breakpoint *b : all_breakpoints_safe ())
186c406b 7308 if (b->type == bp_longjmp || b->type == bp_exception)
611c83ae
PA
7309 {
7310 if (b->thread == thread)
7311 delete_breakpoint (b);
7312 }
c906108c
SS
7313}
7314
f59f708a
PA
7315void
7316delete_longjmp_breakpoint_at_next_stop (int thread)
7317{
1428b37a 7318 for (breakpoint *b : all_breakpoints_safe ())
f59f708a
PA
7319 if (b->type == bp_longjmp || b->type == bp_exception)
7320 {
7321 if (b->thread == thread)
7322 b->disposition = disp_del_at_next_stop;
7323 }
7324}
7325
e2e4d78b
JK
7326/* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7327 INFERIOR_PTID thread. Chain them all by RELATED_BREAKPOINT and return
7328 pointer to any of them. Return NULL if this system cannot place longjmp
7329 breakpoints. */
7330
7331struct breakpoint *
7332set_longjmp_breakpoint_for_call_dummy (void)
7333{
43892fdf 7334 breakpoint *retval = nullptr;
e2e4d78b 7335
43892fdf 7336 for (breakpoint *b : all_breakpoints ())
e2e4d78b
JK
7337 if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7338 {
7339 struct breakpoint *new_b;
7340
7341 new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
a1aa2221
LM
7342 &momentary_breakpoint_ops,
7343 1);
00431a78 7344 new_b->thread = inferior_thread ()->global_num;
e2e4d78b
JK
7345
7346 /* Link NEW_B into the chain of RETVAL breakpoints. */
7347
7348 gdb_assert (new_b->related_breakpoint == new_b);
7349 if (retval == NULL)
7350 retval = new_b;
7351 new_b->related_breakpoint = retval;
7352 while (retval->related_breakpoint != new_b->related_breakpoint)
7353 retval = retval->related_breakpoint;
7354 retval->related_breakpoint = new_b;
7355 }
7356
7357 return retval;
7358}
7359
7360/* Verify all existing dummy frames and their associated breakpoints for
b67a2c6f 7361 TP. Remove those which can no longer be found in the current frame
e2e4d78b
JK
7362 stack.
7363
b4b3e2de
AB
7364 If the unwind fails then there is not sufficient information to discard
7365 dummy frames. In this case, elide the clean up and the dummy frames will
7366 be cleaned up next time this function is called from a location where
7367 unwinding is possible. */
e2e4d78b
JK
7368
7369void
b67a2c6f 7370check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
e2e4d78b
JK
7371{
7372 struct breakpoint *b, *b_tmp;
7373
7374 ALL_BREAKPOINTS_SAFE (b, b_tmp)
5d5658a1 7375 if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
e2e4d78b
JK
7376 {
7377 struct breakpoint *dummy_b = b->related_breakpoint;
7378
b4b3e2de
AB
7379 /* Find the bp_call_dummy breakpoint in the list of breakpoints
7380 chained off b->related_breakpoint. */
e2e4d78b
JK
7381 while (dummy_b != b && dummy_b->type != bp_call_dummy)
7382 dummy_b = dummy_b->related_breakpoint;
b4b3e2de
AB
7383
7384 /* If there was no bp_call_dummy breakpoint then there's nothing
7385 more to do. Or, if the dummy frame associated with the
7386 bp_call_dummy is still on the stack then we need to leave this
7387 bp_call_dummy in place. */
e2e4d78b
JK
7388 if (dummy_b->type != bp_call_dummy
7389 || frame_find_by_id (dummy_b->frame_id) != NULL)
7390 continue;
b4b3e2de
AB
7391
7392 /* We didn't find the dummy frame on the stack, this could be
7393 because we have longjmp'd to a stack frame that is previous to
7394 the dummy frame, or it could be because the stack unwind is
7395 broken at some point between the longjmp frame and the dummy
7396 frame.
7397
7398 Next we figure out why the stack unwind stopped. If it looks
7399 like the unwind is complete then we assume the dummy frame has
7400 been jumped over, however, if the unwind stopped for an
7401 unexpected reason then we assume the stack unwind is currently
7402 broken, and that we will (eventually) return to the dummy
7403 frame.
7404
7405 It might be tempting to consider using frame_id_inner here, but
7406 that is not safe. There is no guarantee that the stack frames
7407 we are looking at here are even on the same stack as the
7408 original dummy frame, hence frame_id_inner can't be used. See
7409 the comments on frame_id_inner for more details. */
7410 bool unwind_finished_unexpectedly = false;
7411 for (struct frame_info *fi = get_current_frame (); fi != nullptr; )
7412 {
7413 struct frame_info *prev = get_prev_frame (fi);
7414 if (prev == nullptr)
7415 {
7416 /* FI is the last stack frame. Why did this frame not
7417 unwind further? */
7418 auto stop_reason = get_frame_unwind_stop_reason (fi);
7419 if (stop_reason != UNWIND_NO_REASON
7420 && stop_reason != UNWIND_OUTERMOST)
7421 unwind_finished_unexpectedly = true;
7422 }
7423 fi = prev;
7424 }
7425 if (unwind_finished_unexpectedly)
7426 continue;
7427
00431a78 7428 dummy_frame_discard (dummy_b->frame_id, tp);
e2e4d78b
JK
7429
7430 while (b->related_breakpoint != b)
7431 {
7432 if (b_tmp == b->related_breakpoint)
7433 b_tmp = b->related_breakpoint->next;
7434 delete_breakpoint (b->related_breakpoint);
7435 }
7436 delete_breakpoint (b);
7437 }
7438}
7439
1900040c
MS
7440void
7441enable_overlay_breakpoints (void)
7442{
43892fdf 7443 for (breakpoint *b : all_breakpoints ())
1900040c 7444 if (b->type == bp_overlay_event)
01add95b
SM
7445 {
7446 b->enable_state = bp_enabled;
7447 update_global_location_list (UGLL_MAY_INSERT);
7448 overlay_events_enabled = 1;
7449 }
1900040c
MS
7450}
7451
7452void
7453disable_overlay_breakpoints (void)
7454{
43892fdf 7455 for (breakpoint *b : all_breakpoints ())
1900040c 7456 if (b->type == bp_overlay_event)
01add95b
SM
7457 {
7458 b->enable_state = bp_disabled;
7459 update_global_location_list (UGLL_DONT_INSERT);
7460 overlay_events_enabled = 0;
7461 }
1900040c
MS
7462}
7463
aa7d318d
TT
7464/* Set an active std::terminate breakpoint for each std::terminate
7465 master breakpoint. */
7466void
7467set_std_terminate_breakpoint (void)
7468{
1428b37a 7469 for (breakpoint *b : all_breakpoints_safe ())
aa7d318d
TT
7470 if (b->pspace == current_program_space
7471 && b->type == bp_std_terminate_master)
7472 {
06edf0c0 7473 momentary_breakpoint_from_master (b, bp_std_terminate,
a1aa2221 7474 &momentary_breakpoint_ops, 1);
aa7d318d
TT
7475 }
7476}
7477
7478/* Delete all the std::terminate breakpoints. */
7479void
7480delete_std_terminate_breakpoint (void)
7481{
1428b37a 7482 for (breakpoint *b : all_breakpoints_safe ())
aa7d318d
TT
7483 if (b->type == bp_std_terminate)
7484 delete_breakpoint (b);
7485}
7486
c4093a6a 7487struct breakpoint *
a6d9a66e 7488create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
c4093a6a
JM
7489{
7490 struct breakpoint *b;
c4093a6a 7491
06edf0c0
PA
7492 b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7493 &internal_breakpoint_ops);
7494
b5de0fa7 7495 b->enable_state = bp_enabled;
f00aae0f 7496 /* location has to be used or breakpoint_re_set will delete me. */
d28cd78a 7497 b->location = new_address_location (b->loc->address, NULL, 0);
c4093a6a 7498
44702360 7499 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7500
c4093a6a
JM
7501 return b;
7502}
7503
0101ce28
JJ
7504struct lang_and_radix
7505 {
7506 enum language lang;
7507 int radix;
7508 };
7509
4efc6507
DE
7510/* Create a breakpoint for JIT code registration and unregistration. */
7511
7512struct breakpoint *
7513create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7514{
2a7f3dff
PA
7515 return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7516 &internal_breakpoint_ops);
4efc6507 7517}
0101ce28 7518
03673fc7
PP
7519/* Remove JIT code registration and unregistration breakpoint(s). */
7520
7521void
7522remove_jit_event_breakpoints (void)
7523{
1428b37a 7524 for (breakpoint *b : all_breakpoints_safe ())
03673fc7
PP
7525 if (b->type == bp_jit_event
7526 && b->loc->pspace == current_program_space)
7527 delete_breakpoint (b);
7528}
7529
cae688ec
JJ
7530void
7531remove_solib_event_breakpoints (void)
7532{
1428b37a 7533 for (breakpoint *b : all_breakpoints_safe ())
6c95b8df
PA
7534 if (b->type == bp_shlib_event
7535 && b->loc->pspace == current_program_space)
cae688ec
JJ
7536 delete_breakpoint (b);
7537}
7538
f37f681c
PA
7539/* See breakpoint.h. */
7540
7541void
7542remove_solib_event_breakpoints_at_next_stop (void)
7543{
1428b37a 7544 for (breakpoint *b : all_breakpoints_safe ())
f37f681c
PA
7545 if (b->type == bp_shlib_event
7546 && b->loc->pspace == current_program_space)
7547 b->disposition = disp_del_at_next_stop;
7548}
7549
04086b45
PA
7550/* Helper for create_solib_event_breakpoint /
7551 create_and_insert_solib_event_breakpoint. Allows specifying which
7552 INSERT_MODE to pass through to update_global_location_list. */
7553
7554static struct breakpoint *
7555create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7556 enum ugll_insert_mode insert_mode)
cae688ec
JJ
7557{
7558 struct breakpoint *b;
7559
06edf0c0
PA
7560 b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7561 &internal_breakpoint_ops);
04086b45 7562 update_global_location_list_nothrow (insert_mode);
cae688ec
JJ
7563 return b;
7564}
7565
04086b45
PA
7566struct breakpoint *
7567create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7568{
7569 return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7570}
7571
f37f681c
PA
7572/* See breakpoint.h. */
7573
7574struct breakpoint *
7575create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7576{
7577 struct breakpoint *b;
7578
04086b45
PA
7579 /* Explicitly tell update_global_location_list to insert
7580 locations. */
7581 b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
f37f681c
PA
7582 if (!b->loc->inserted)
7583 {
7584 delete_breakpoint (b);
7585 return NULL;
7586 }
7587 return b;
7588}
7589
cae688ec
JJ
7590/* Disable any breakpoints that are on code in shared libraries. Only
7591 apply to enabled breakpoints, disabled ones can just stay disabled. */
7592
7593void
cb851954 7594disable_breakpoints_in_shlibs (void)
cae688ec 7595{
48d7020b 7596 for (bp_location *loc : all_bp_locations ())
01add95b
SM
7597 {
7598 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7599 struct breakpoint *b = loc->owner;
7600
7601 /* We apply the check to all breakpoints, including disabled for
7602 those with loc->duplicate set. This is so that when breakpoint
7603 becomes enabled, or the duplicate is removed, gdb will try to
7604 insert all breakpoints. If we don't set shlib_disabled here,
7605 we'll try to insert those breakpoints and fail. */
7606 if (((b->type == bp_breakpoint)
7607 || (b->type == bp_jit_event)
7608 || (b->type == bp_hardware_breakpoint)
7609 || (is_tracepoint (b)))
7610 && loc->pspace == current_program_space
7611 && !loc->shlib_disabled
7612 && solib_name_from_address (loc->pspace, loc->address)
7613 )
7614 {
7615 loc->shlib_disabled = 1;
7616 }
7617 }
cae688ec
JJ
7618}
7619
63644780
NB
7620/* Disable any breakpoints and tracepoints that are in SOLIB upon
7621 notification of unloaded_shlib. Only apply to enabled breakpoints,
7622 disabled ones can just stay disabled. */
84acb35a 7623
75149521 7624static void
84acb35a
JJ
7625disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7626{
84acb35a
JJ
7627 int disabled_shlib_breaks = 0;
7628
48d7020b 7629 for (bp_location *loc : all_bp_locations ())
01add95b
SM
7630 {
7631 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL. */
7632 struct breakpoint *b = loc->owner;
7633
7634 if (solib->pspace == loc->pspace
7635 && !loc->shlib_disabled
7636 && (((b->type == bp_breakpoint
7637 || b->type == bp_jit_event
7638 || b->type == bp_hardware_breakpoint)
7639 && (loc->loc_type == bp_loc_hardware_breakpoint
7640 || loc->loc_type == bp_loc_software_breakpoint))
7641 || is_tracepoint (b))
7642 && solib_contains_address_p (solib, loc->address))
7643 {
7644 loc->shlib_disabled = 1;
7645 /* At this point, we cannot rely on remove_breakpoint
7646 succeeding so we must mark the breakpoint as not inserted
7647 to prevent future errors occurring in remove_breakpoints. */
7648 loc->inserted = 0;
7649
7650 /* This may cause duplicate notifications for the same breakpoint. */
7651 gdb::observers::breakpoint_modified.notify (b);
7652
7653 if (!disabled_shlib_breaks)
7654 {
7655 target_terminal::ours_for_output ();
7656 warning (_("Temporarily disabling breakpoints "
7657 "for unloaded shared library \"%s\""),
7658 solib->so_name);
7659 }
7660 disabled_shlib_breaks = 1;
7661 }
7662 }
84acb35a
JJ
7663}
7664
63644780
NB
7665/* Disable any breakpoints and tracepoints in OBJFILE upon
7666 notification of free_objfile. Only apply to enabled breakpoints,
7667 disabled ones can just stay disabled. */
7668
7669static void
7670disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7671{
63644780
NB
7672 if (objfile == NULL)
7673 return;
7674
d03de421
PA
7675 /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7676 managed by the user with add-symbol-file/remove-symbol-file.
7677 Similarly to how breakpoints in shared libraries are handled in
7678 response to "nosharedlibrary", mark breakpoints in such modules
08351840
PA
7679 shlib_disabled so they end up uninserted on the next global
7680 location list update. Shared libraries not loaded by the user
7681 aren't handled here -- they're already handled in
7682 disable_breakpoints_in_unloaded_shlib, called by solib.c's
7683 solib_unloaded observer. We skip objfiles that are not
d03de421
PA
7684 OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7685 main objfile). */
7686 if ((objfile->flags & OBJF_SHARED) == 0
7687 || (objfile->flags & OBJF_USERLOADED) == 0)
63644780
NB
7688 return;
7689
43892fdf 7690 for (breakpoint *b : all_breakpoints ())
63644780 7691 {
63644780
NB
7692 int bp_modified = 0;
7693
7694 if (!is_breakpoint (b) && !is_tracepoint (b))
7695 continue;
7696
40cb8ca5 7697 for (bp_location *loc : b->locations ())
63644780
NB
7698 {
7699 CORE_ADDR loc_addr = loc->address;
7700
7701 if (loc->loc_type != bp_loc_hardware_breakpoint
7702 && loc->loc_type != bp_loc_software_breakpoint)
7703 continue;
7704
7705 if (loc->shlib_disabled != 0)
7706 continue;
7707
7708 if (objfile->pspace != loc->pspace)
7709 continue;
7710
7711 if (loc->loc_type != bp_loc_hardware_breakpoint
7712 && loc->loc_type != bp_loc_software_breakpoint)
7713 continue;
7714
7715 if (is_addr_in_objfile (loc_addr, objfile))
7716 {
7717 loc->shlib_disabled = 1;
08351840
PA
7718 /* At this point, we don't know whether the object was
7719 unmapped from the inferior or not, so leave the
7720 inserted flag alone. We'll handle failure to
7721 uninsert quietly, in case the object was indeed
7722 unmapped. */
63644780
NB
7723
7724 mark_breakpoint_location_modified (loc);
7725
7726 bp_modified = 1;
7727 }
7728 }
7729
7730 if (bp_modified)
76727919 7731 gdb::observers::breakpoint_modified.notify (b);
63644780
NB
7732 }
7733}
7734
b650a282 7735/* See breakpoint.h. */
ce78b96d 7736
ab04a2af 7737void
346774a9 7738init_catchpoint (struct breakpoint *b,
b650a282 7739 struct gdbarch *gdbarch, bool temp,
63160a43 7740 const char *cond_string,
c0a91b2b 7741 const struct breakpoint_ops *ops)
c906108c 7742{
51abb421 7743 symtab_and_line sal;
6c95b8df 7744 sal.pspace = current_program_space;
c5aa993b 7745
28010a5d 7746 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
ce78b96d 7747
6f781ee3
TT
7748 if (cond_string == nullptr)
7749 b->cond_string.reset ();
7750 else
7751 b->cond_string = make_unique_xstrdup (cond_string);
b650a282 7752 b->disposition = temp ? disp_del : disp_donttouch;
346774a9
PA
7753}
7754
28010a5d 7755void
b270e6f9 7756install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
c56053d2 7757{
b270e6f9 7758 breakpoint *b = add_to_breakpoint_chain (std::move (arg));
3a5c3e22 7759 set_breakpoint_number (internal, b);
558a9d82
YQ
7760 if (is_tracepoint (b))
7761 set_tracepoint_count (breakpoint_count);
3a5c3e22
PA
7762 if (!internal)
7763 mention (b);
76727919 7764 gdb::observers::breakpoint_created.notify (b);
3ea46bff
YQ
7765
7766 if (update_gll)
44702360 7767 update_global_location_list (UGLL_MAY_INSERT);
c56053d2
PA
7768}
7769
c906108c 7770static int
fba45db2 7771hw_breakpoint_used_count (void)
c906108c 7772{
c906108c
SS
7773 int i = 0;
7774
43892fdf 7775 for (breakpoint *b : all_breakpoints ())
d6b74ac4 7776 if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
40cb8ca5 7777 for (bp_location *bl : b->locations ())
f1310107
TJB
7778 {
7779 /* Special types of hardware breakpoints may use more than
7780 one register. */
348d480f 7781 i += b->ops->resources_needed (bl);
f1310107 7782 }
c906108c
SS
7783
7784 return i;
7785}
7786
a1398e0c
PA
7787/* Returns the resources B would use if it were a hardware
7788 watchpoint. */
7789
c906108c 7790static int
a1398e0c 7791hw_watchpoint_use_count (struct breakpoint *b)
c906108c 7792{
c906108c
SS
7793 int i = 0;
7794
a1398e0c
PA
7795 if (!breakpoint_enabled (b))
7796 return 0;
7797
40cb8ca5 7798 for (bp_location *bl : b->locations ())
a1398e0c
PA
7799 {
7800 /* Special types of hardware watchpoints may use more than
7801 one register. */
7802 i += b->ops->resources_needed (bl);
7803 }
7804
7805 return i;
7806}
7807
7808/* Returns the sum the used resources of all hardware watchpoints of
7809 type TYPE in the breakpoints list. Also returns in OTHER_TYPE_USED
7810 the sum of the used resources of all hardware watchpoints of other
7811 types _not_ TYPE. */
7812
7813static int
7814hw_watchpoint_used_count_others (struct breakpoint *except,
7815 enum bptype type, int *other_type_used)
7816{
7817 int i = 0;
a1398e0c 7818
c906108c 7819 *other_type_used = 0;
43892fdf 7820 for (breakpoint *b : all_breakpoints ())
e09342b5 7821 {
a1398e0c
PA
7822 if (b == except)
7823 continue;
e09342b5
TJB
7824 if (!breakpoint_enabled (b))
7825 continue;
7826
a1398e0c
PA
7827 if (b->type == type)
7828 i += hw_watchpoint_use_count (b);
7829 else if (is_hardware_watchpoint (b))
7830 *other_type_used = 1;
e09342b5
TJB
7831 }
7832
c906108c
SS
7833 return i;
7834}
7835
c906108c 7836void
fba45db2 7837disable_watchpoints_before_interactive_call_start (void)
c906108c 7838{
43892fdf 7839 for (breakpoint *b : all_breakpoints ())
cc60f2e3 7840 if (is_watchpoint (b) && breakpoint_enabled (b))
c5aa993b 7841 {
b5de0fa7 7842 b->enable_state = bp_call_disabled;
44702360 7843 update_global_location_list (UGLL_DONT_INSERT);
c5aa993b 7844 }
c906108c
SS
7845}
7846
7847void
fba45db2 7848enable_watchpoints_after_interactive_call_stop (void)
c906108c 7849{
43892fdf 7850 for (breakpoint *b : all_breakpoints ())
cc60f2e3 7851 if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
c5aa993b 7852 {
b5de0fa7 7853 b->enable_state = bp_enabled;
44702360 7854 update_global_location_list (UGLL_MAY_INSERT);
c5aa993b 7855 }
c906108c
SS
7856}
7857
8bea4e01
UW
7858void
7859disable_breakpoints_before_startup (void)
7860{
6c95b8df 7861 current_program_space->executing_startup = 1;
44702360 7862 update_global_location_list (UGLL_DONT_INSERT);
8bea4e01
UW
7863}
7864
7865void
7866enable_breakpoints_after_startup (void)
7867{
6c95b8df 7868 current_program_space->executing_startup = 0;
f8eba3c6 7869 breakpoint_re_set ();
8bea4e01
UW
7870}
7871
7c16b83e
PA
7872/* Create a new single-step breakpoint for thread THREAD, with no
7873 locations. */
c906108c 7874
7c16b83e
PA
7875static struct breakpoint *
7876new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
7877{
b270e6f9 7878 std::unique_ptr<breakpoint> b (new breakpoint ());
7c16b83e 7879
b270e6f9 7880 init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
7c16b83e
PA
7881 &momentary_breakpoint_ops);
7882
7883 b->disposition = disp_donttouch;
7884 b->frame_id = null_frame_id;
7885
7886 b->thread = thread;
7887 gdb_assert (b->thread != 0);
7888
b270e6f9 7889 return add_to_breakpoint_chain (std::move (b));
7c16b83e
PA
7890}
7891
7892/* Set a momentary breakpoint of type TYPE at address specified by
7893 SAL. If FRAME_ID is valid, the breakpoint is restricted to that
7894 frame. */
c906108c 7895
454dafbd 7896breakpoint_up
a6d9a66e
UW
7897set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
7898 struct frame_id frame_id, enum bptype type)
c906108c 7899{
52f0bd74 7900 struct breakpoint *b;
edb3359d 7901
193facb3
JK
7902 /* If FRAME_ID is valid, it should be a real frame, not an inlined or
7903 tail-called one. */
7904 gdb_assert (!frame_id_artificial_p (frame_id));
edb3359d 7905
06edf0c0 7906 b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
b5de0fa7
EZ
7907 b->enable_state = bp_enabled;
7908 b->disposition = disp_donttouch;
818dd999 7909 b->frame_id = frame_id;
c906108c 7910
00431a78 7911 b->thread = inferior_thread ()->global_num;
c906108c 7912
44702360 7913 update_global_location_list_nothrow (UGLL_MAY_INSERT);
74960c60 7914
454dafbd 7915 return breakpoint_up (b);
c906108c 7916}
611c83ae 7917
06edf0c0 7918/* Make a momentary breakpoint based on the master breakpoint ORIG.
a1aa2221
LM
7919 The new breakpoint will have type TYPE, use OPS as its
7920 breakpoint_ops, and will set enabled to LOC_ENABLED. */
e58b0e63 7921
06edf0c0
PA
7922static struct breakpoint *
7923momentary_breakpoint_from_master (struct breakpoint *orig,
7924 enum bptype type,
a1aa2221
LM
7925 const struct breakpoint_ops *ops,
7926 int loc_enabled)
e58b0e63
PA
7927{
7928 struct breakpoint *copy;
7929
06edf0c0 7930 copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
e58b0e63 7931 copy->loc = allocate_bp_location (copy);
0ba852ab 7932 set_breakpoint_location_function (copy->loc);
e58b0e63 7933
a6d9a66e 7934 copy->loc->gdbarch = orig->loc->gdbarch;
e58b0e63
PA
7935 copy->loc->requested_address = orig->loc->requested_address;
7936 copy->loc->address = orig->loc->address;
7937 copy->loc->section = orig->loc->section;
6c95b8df 7938 copy->loc->pspace = orig->loc->pspace;
55aa24fb 7939 copy->loc->probe = orig->loc->probe;
f8eba3c6 7940 copy->loc->line_number = orig->loc->line_number;
2f202fde 7941 copy->loc->symtab = orig->loc->symtab;
a1aa2221 7942 copy->loc->enabled = loc_enabled;
e58b0e63
PA
7943 copy->frame_id = orig->frame_id;
7944 copy->thread = orig->thread;
6c95b8df 7945 copy->pspace = orig->pspace;
e58b0e63
PA
7946
7947 copy->enable_state = bp_enabled;
7948 copy->disposition = disp_donttouch;
7949 copy->number = internal_breakpoint_number--;
7950
44702360 7951 update_global_location_list_nothrow (UGLL_DONT_INSERT);
e58b0e63
PA
7952 return copy;
7953}
7954
06edf0c0
PA
7955/* Make a deep copy of momentary breakpoint ORIG. Returns NULL if
7956 ORIG is NULL. */
7957
7958struct breakpoint *
7959clone_momentary_breakpoint (struct breakpoint *orig)
7960{
7961 /* If there's nothing to clone, then return nothing. */
7962 if (orig == NULL)
7963 return NULL;
7964
16922ea6 7965 gdb_assert (orig->ops == &momentary_breakpoint_ops);
a1aa2221 7966 return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
06edf0c0
PA
7967}
7968
454dafbd 7969breakpoint_up
a6d9a66e
UW
7970set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
7971 enum bptype type)
611c83ae
PA
7972{
7973 struct symtab_and_line sal;
7974
7975 sal = find_pc_line (pc, 0);
7976 sal.pc = pc;
7977 sal.section = find_pc_overlay (pc);
7978 sal.explicit_pc = 1;
7979
a6d9a66e 7980 return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
611c83ae 7981}
c906108c 7982\f
c5aa993b 7983
c906108c
SS
7984/* Tell the user we have just set a breakpoint B. */
7985
7986static void
fba45db2 7987mention (struct breakpoint *b)
c906108c 7988{
348d480f 7989 b->ops->print_mention (b);
2d33446d 7990 current_uiout->text ("\n");
c906108c 7991}
c906108c 7992\f
c5aa993b 7993
5133a315 7994static bool bp_loc_is_permanent (struct bp_location *loc);
1a853c52 7995
7f32a4d5
PA
7996/* Handle "set breakpoint auto-hw on".
7997
7998 If the explicitly specified breakpoint type is not hardware
7999 breakpoint, check the memory map to see whether the breakpoint
8000 address is in read-only memory.
8001
8002 - location type is not hardware breakpoint, memory is read-only.
8003 We change the type of the location to hardware breakpoint.
8004
8005 - location type is hardware breakpoint, memory is read-write. This
8006 means we've previously made the location hardware one, but then the
8007 memory map changed, so we undo.
8008*/
8009
8010static void
8011handle_automatic_hardware_breakpoints (bp_location *bl)
8012{
8013 if (automatic_hardware_breakpoints
8014 && bl->owner->type != bp_hardware_breakpoint
8015 && (bl->loc_type == bp_loc_software_breakpoint
8016 || bl->loc_type == bp_loc_hardware_breakpoint))
8017 {
8018 /* When breakpoints are removed, remove_breakpoints will use
8019 location types we've just set here, the only possible problem
8020 is that memory map has changed during running program, but
8021 it's not going to work anyway with current gdb. */
8022 mem_region *mr = lookup_mem_region (bl->address);
8023
8024 if (mr != nullptr)
8025 {
8026 enum bp_loc_type new_type;
8027
8028 if (mr->attrib.mode != MEM_RW)
8029 new_type = bp_loc_hardware_breakpoint;
8030 else
8031 new_type = bp_loc_software_breakpoint;
8032
8033 if (new_type != bl->loc_type)
8034 {
8035 static bool said = false;
8036
8037 bl->loc_type = new_type;
8038 if (!said)
8039 {
6cb06a8c
TT
8040 gdb_printf (_("Note: automatically using "
8041 "hardware breakpoints for "
8042 "read-only addresses.\n"));
7f32a4d5
PA
8043 said = true;
8044 }
8045 }
8046 }
8047 }
8048}
8049
0d381245 8050static struct bp_location *
39d61571 8051add_location_to_breakpoint (struct breakpoint *b,
0d381245
VP
8052 const struct symtab_and_line *sal)
8053{
8054 struct bp_location *loc, **tmp;
3742cc8b
YQ
8055 CORE_ADDR adjusted_address;
8056 struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8057
8058 if (loc_gdbarch == NULL)
8059 loc_gdbarch = b->gdbarch;
8060
8061 /* Adjust the breakpoint's address prior to allocating a location.
8062 Once we call allocate_bp_location(), that mostly uninitialized
8063 location will be placed on the location chain. Adjustment of the
8064 breakpoint may cause target_read_memory() to be called and we do
8065 not want its scan of the location chain to find a breakpoint and
8066 location that's only been partially initialized. */
8067 adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8068 sal->pc, b->type);
0d381245 8069
d30113d4 8070 /* Sort the locations by their ADDRESS. */
39d61571 8071 loc = allocate_bp_location (b);
d30113d4
JK
8072 for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8073 tmp = &((*tmp)->next))
0d381245 8074 ;
d30113d4 8075 loc->next = *tmp;
0d381245 8076 *tmp = loc;
3742cc8b 8077
0d381245 8078 loc->requested_address = sal->pc;
3742cc8b 8079 loc->address = adjusted_address;
6c95b8df 8080 loc->pspace = sal->pspace;
935676c9 8081 loc->probe.prob = sal->prob;
729662a5 8082 loc->probe.objfile = sal->objfile;
6c95b8df 8083 gdb_assert (loc->pspace != NULL);
0d381245 8084 loc->section = sal->section;
3742cc8b 8085 loc->gdbarch = loc_gdbarch;
f8eba3c6 8086 loc->line_number = sal->line;
2f202fde 8087 loc->symtab = sal->symtab;
4a27f119 8088 loc->symbol = sal->symbol;
3467ec66
PA
8089 loc->msymbol = sal->msymbol;
8090 loc->objfile = sal->objfile;
f8eba3c6 8091
0ba852ab 8092 set_breakpoint_location_function (loc);
1a853c52 8093
6ae88661
LM
8094 /* While by definition, permanent breakpoints are already present in the
8095 code, we don't mark the location as inserted. Normally one would expect
8096 that GDB could rely on that breakpoint instruction to stop the program,
8097 thus removing the need to insert its own breakpoint, except that executing
8098 the breakpoint instruction can kill the target instead of reporting a
8099 SIGTRAP. E.g., on SPARC, when interrupts are disabled, executing the
8100 instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8101 with "Trap 0x02 while interrupts disabled, Error state". Letting the
8102 breakpoint be inserted normally results in QEMU knowing about the GDB
8103 breakpoint, and thus trap before the breakpoint instruction is executed.
8104 (If GDB later needs to continue execution past the permanent breakpoint,
8105 it manually increments the PC, thus avoiding executing the breakpoint
8106 instruction.) */
1a853c52 8107 if (bp_loc_is_permanent (loc))
6ae88661 8108 loc->permanent = 1;
1a853c52 8109
0d381245
VP
8110 return loc;
8111}
514f746b
AR
8112\f
8113
5133a315
LM
8114/* Return true if LOC is pointing to a permanent breakpoint,
8115 return false otherwise. */
1cf4d951 8116
5133a315 8117static bool
1cf4d951
PA
8118bp_loc_is_permanent (struct bp_location *loc)
8119{
514f746b
AR
8120 gdb_assert (loc != NULL);
8121
cb1e4e32
PA
8122 /* If we have a non-breakpoint-backed catchpoint or a software
8123 watchpoint, just return 0. We should not attempt to read from
8124 the addresses the locations of these breakpoint types point to.
5133a315 8125 gdbarch_program_breakpoint_here_p, below, will attempt to read
244558af 8126 memory. */
cb1e4e32 8127 if (!bl_address_is_meaningful (loc))
5133a315 8128 return false;
244558af 8129
5ed8105e 8130 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 8131 switch_to_program_space_and_thread (loc->pspace);
5133a315 8132 return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
514f746b
AR
8133}
8134
e7e0cddf
SS
8135/* Build a command list for the dprintf corresponding to the current
8136 settings of the dprintf style options. */
8137
8138static void
8139update_dprintf_command_list (struct breakpoint *b)
8140{
6f781ee3 8141 const char *dprintf_args = b->extra_string.get ();
8579fd13 8142 gdb::unique_xmalloc_ptr<char> printf_line = nullptr;
e7e0cddf
SS
8143
8144 if (!dprintf_args)
8145 return;
8146
8147 dprintf_args = skip_spaces (dprintf_args);
8148
8149 /* Allow a comma, as it may have terminated a location, but don't
8150 insist on it. */
8151 if (*dprintf_args == ',')
8152 ++dprintf_args;
8153 dprintf_args = skip_spaces (dprintf_args);
8154
8155 if (*dprintf_args != '"')
8156 error (_("Bad format string, missing '\"'."));
8157
d3ce09f5 8158 if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
e7e0cddf 8159 printf_line = xstrprintf ("printf %s", dprintf_args);
d3ce09f5 8160 else if (strcmp (dprintf_style, dprintf_style_call) == 0)
e7e0cddf 8161 {
e0700ba4 8162 if (dprintf_function.empty ())
e7e0cddf
SS
8163 error (_("No function supplied for dprintf call"));
8164
e0700ba4 8165 if (!dprintf_channel.empty ())
e7e0cddf 8166 printf_line = xstrprintf ("call (void) %s (%s,%s)",
e0700ba4
SM
8167 dprintf_function.c_str (),
8168 dprintf_channel.c_str (),
e7e0cddf
SS
8169 dprintf_args);
8170 else
8171 printf_line = xstrprintf ("call (void) %s (%s)",
e0700ba4 8172 dprintf_function.c_str (),
e7e0cddf
SS
8173 dprintf_args);
8174 }
d3ce09f5
SS
8175 else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8176 {
8177 if (target_can_run_breakpoint_commands ())
8178 printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8179 else
8180 {
8181 warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8182 printf_line = xstrprintf ("printf %s", dprintf_args);
8183 }
8184 }
e7e0cddf
SS
8185 else
8186 internal_error (__FILE__, __LINE__,
8187 _("Invalid dprintf style."));
8188
f28045c2 8189 gdb_assert (printf_line != NULL);
e7e0cddf 8190
12973681
TT
8191 /* Manufacture a printf sequence. */
8192 struct command_line *printf_cmd_line
8579fd13 8193 = new struct command_line (simple_control, printf_line.release ());
12973681
TT
8194 breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8195 command_lines_deleter ()));
e7e0cddf
SS
8196}
8197
8198/* Update all dprintf commands, making their command lists reflect
8199 current style settings. */
8200
8201static void
eb4c3f4a 8202update_dprintf_commands (const char *args, int from_tty,
e7e0cddf
SS
8203 struct cmd_list_element *c)
8204{
43892fdf
SM
8205 for (breakpoint *b : all_breakpoints ())
8206 if (b->type == bp_dprintf)
e7e0cddf 8207 update_dprintf_command_list (b);
e7e0cddf 8208}
c3f6f71d 8209
f00aae0f
KS
8210/* Create a breakpoint with SAL as location. Use LOCATION
8211 as a description of the location, and COND_STRING
b35a8b2f
DE
8212 as condition expression. If LOCATION is NULL then create an
8213 "address location" from the address in the SAL. */
018d34a4
VP
8214
8215static void
d9b3f62e 8216init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
6c5b2ebe 8217 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8218 event_location_up &&location,
e1e01040
PA
8219 gdb::unique_xmalloc_ptr<char> filter,
8220 gdb::unique_xmalloc_ptr<char> cond_string,
8221 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8222 enum bptype type, enum bpdisp disposition,
8223 int thread, int task, int ignore_count,
c0a91b2b 8224 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8225 int enabled, int internal, unsigned flags,
8226 int display_canonical)
018d34a4 8227{
0d381245 8228 int i;
018d34a4
VP
8229
8230 if (type == bp_hardware_breakpoint)
8231 {
fbbd034e
AS
8232 int target_resources_ok;
8233
8234 i = hw_breakpoint_used_count ();
8235 target_resources_ok =
8236 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
018d34a4
VP
8237 i + 1, 0);
8238 if (target_resources_ok == 0)
8239 error (_("No hardware breakpoint support in the target."));
8240 else if (target_resources_ok < 0)
8241 error (_("Hardware breakpoints used exceeds limit."));
8242 }
8243
6c5b2ebe 8244 gdb_assert (!sals.empty ());
6c95b8df 8245
6c5b2ebe 8246 for (const auto &sal : sals)
0d381245 8247 {
0d381245
VP
8248 struct bp_location *loc;
8249
8250 if (from_tty)
5af949e3
UW
8251 {
8252 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8253 if (!loc_gdbarch)
8254 loc_gdbarch = gdbarch;
8255
8256 describe_other_breakpoints (loc_gdbarch,
6c95b8df 8257 sal.pspace, sal.pc, sal.section, thread);
5af949e3 8258 }
0d381245 8259
6c5b2ebe 8260 if (&sal == &sals[0])
0d381245 8261 {
d9b3f62e 8262 init_raw_breakpoint (b, gdbarch, sal, type, ops);
0d381245 8263 b->thread = thread;
4a306c9a 8264 b->task = task;
855a6e68 8265
6f781ee3
TT
8266 b->cond_string = std::move (cond_string);
8267 b->extra_string = std::move (extra_string);
0d381245 8268 b->ignore_count = ignore_count;
41447f92 8269 b->enable_state = enabled ? bp_enabled : bp_disabled;
0d381245 8270 b->disposition = disposition;
6c95b8df 8271
44f238bb
PA
8272 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8273 b->loc->inserted = 1;
8274
0fb4aa4b
PA
8275 if (type == bp_static_tracepoint)
8276 {
d9b3f62e 8277 struct tracepoint *t = (struct tracepoint *) b;
0fb4aa4b
PA
8278 struct static_tracepoint_marker marker;
8279
983af33b 8280 if (strace_marker_p (b))
0fb4aa4b
PA
8281 {
8282 /* We already know the marker exists, otherwise, we
8283 wouldn't see a sal for it. */
d28cd78a
TT
8284 const char *p
8285 = &event_location_to_string (b->location.get ())[3];
f00aae0f 8286 const char *endp;
0fb4aa4b 8287
f1735a53 8288 p = skip_spaces (p);
0fb4aa4b 8289
f1735a53 8290 endp = skip_to_space (p);
0fb4aa4b 8291
5d9310c4 8292 t->static_trace_marker_id.assign (p, endp - p);
0fb4aa4b 8293
6cb06a8c
TT
8294 gdb_printf (_("Probed static tracepoint "
8295 "marker \"%s\"\n"),
8296 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8297 }
8298 else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8299 {
5d9310c4 8300 t->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b 8301
6cb06a8c
TT
8302 gdb_printf (_("Probed static tracepoint "
8303 "marker \"%s\"\n"),
8304 t->static_trace_marker_id.c_str ());
0fb4aa4b
PA
8305 }
8306 else
3e43a32a
MS
8307 warning (_("Couldn't determine the static "
8308 "tracepoint marker to probe"));
0fb4aa4b
PA
8309 }
8310
0d381245
VP
8311 loc = b->loc;
8312 }
8313 else
018d34a4 8314 {
39d61571 8315 loc = add_location_to_breakpoint (b, &sal);
44f238bb
PA
8316 if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8317 loc->inserted = 1;
0d381245
VP
8318 }
8319
b5fa468f
TBA
8320 /* Do not set breakpoint locations conditions yet. As locations
8321 are inserted, they get sorted based on their addresses. Let
8322 the list stabilize to have reliable location numbers. */
e7e0cddf
SS
8323
8324 /* Dynamic printf requires and uses additional arguments on the
8325 command line, otherwise it's an error. */
8326 if (type == bp_dprintf)
8327 {
8328 if (b->extra_string)
8329 update_dprintf_command_list (b);
8330 else
8331 error (_("Format string required"));
8332 }
8333 else if (b->extra_string)
6f781ee3 8334 error (_("Garbage '%s' at end of command"), b->extra_string.get ());
855a6e68 8335 }
018d34a4 8336
b5fa468f
TBA
8337
8338 /* The order of the locations is now stable. Set the location
8339 condition using the location's number. */
8340 int loc_num = 1;
40cb8ca5 8341 for (bp_location *loc : b->locations ())
b5fa468f
TBA
8342 {
8343 if (b->cond_string != nullptr)
6f781ee3
TT
8344 set_breakpoint_location_condition (b->cond_string.get (), loc,
8345 b->number, loc_num);
b5fa468f
TBA
8346
8347 ++loc_num;
8348 }
8349
56435ebe 8350 b->display_canonical = display_canonical;
f00aae0f 8351 if (location != NULL)
d28cd78a 8352 b->location = std::move (location);
018d34a4 8353 else
d28cd78a 8354 b->location = new_address_location (b->loc->address, NULL, 0);
c0e8dcd8 8355 b->filter = std::move (filter);
d9b3f62e 8356}
018d34a4 8357
d9b3f62e
PA
8358static void
8359create_breakpoint_sal (struct gdbarch *gdbarch,
6c5b2ebe 8360 gdb::array_view<const symtab_and_line> sals,
ffc2605c 8361 event_location_up &&location,
e1e01040
PA
8362 gdb::unique_xmalloc_ptr<char> filter,
8363 gdb::unique_xmalloc_ptr<char> cond_string,
8364 gdb::unique_xmalloc_ptr<char> extra_string,
d9b3f62e
PA
8365 enum bptype type, enum bpdisp disposition,
8366 int thread, int task, int ignore_count,
c0a91b2b 8367 const struct breakpoint_ops *ops, int from_tty,
44f238bb
PA
8368 int enabled, int internal, unsigned flags,
8369 int display_canonical)
d9b3f62e 8370{
a5e364af 8371 std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
d9b3f62e 8372
a5e364af 8373 init_breakpoint_sal (b.get (), gdbarch,
ffc2605c 8374 sals, std::move (location),
e1e01040
PA
8375 std::move (filter),
8376 std::move (cond_string),
8377 std::move (extra_string),
d9b3f62e
PA
8378 type, disposition,
8379 thread, task, ignore_count,
8380 ops, from_tty,
44f238bb
PA
8381 enabled, internal, flags,
8382 display_canonical);
d9b3f62e 8383
b270e6f9 8384 install_breakpoint (internal, std::move (b), 0);
018d34a4
VP
8385}
8386
8387/* Add SALS.nelts breakpoints to the breakpoint table. For each
8388 SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8389 value. COND_STRING, if not NULL, specified the condition to be
8390 used for all breakpoints. Essentially the only case where
8391 SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8392 function. In that case, it's still not possible to specify
8393 separate conditions for different overloaded functions, so
8394 we take just a single condition string.
8395
c3f6f71d 8396 NOTE: If the function succeeds, the caller is expected to cleanup
018d34a4 8397 the arrays ADDR_STRING, COND_STRING, and SALS (but not the
c3f6f71d
JM
8398 array contents). If the function fails (error() is called), the
8399 caller is expected to cleanups both the ADDR_STRING, COND_STRING,
4a64f543 8400 COND and SALS arrays and each of those arrays contents. */
c906108c
SS
8401
8402static void
8cdf0e15 8403create_breakpoints_sal (struct gdbarch *gdbarch,
7efd8fc2 8404 struct linespec_result *canonical,
e1e01040
PA
8405 gdb::unique_xmalloc_ptr<char> cond_string,
8406 gdb::unique_xmalloc_ptr<char> extra_string,
8cdf0e15
VP
8407 enum bptype type, enum bpdisp disposition,
8408 int thread, int task, int ignore_count,
c0a91b2b 8409 const struct breakpoint_ops *ops, int from_tty,
44f238bb 8410 int enabled, int internal, unsigned flags)
c906108c 8411{
f8eba3c6 8412 if (canonical->pre_expanded)
6c5b2ebe 8413 gdb_assert (canonical->lsals.size () == 1);
f8eba3c6 8414
6c5b2ebe 8415 for (const auto &lsal : canonical->lsals)
c3f6f71d 8416 {
f00aae0f 8417 /* Note that 'location' can be NULL in the case of a plain
f8eba3c6 8418 'break', without arguments. */
ffc2605c 8419 event_location_up location
f00aae0f 8420 = (canonical->location != NULL
8e9e35b1 8421 ? copy_event_location (canonical->location.get ()) : NULL);
e1e01040 8422 gdb::unique_xmalloc_ptr<char> filter_string
6c5b2ebe 8423 (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
0d381245 8424
6c5b2ebe 8425 create_breakpoint_sal (gdbarch, lsal.sals,
ffc2605c 8426 std::move (location),
e1e01040
PA
8427 std::move (filter_string),
8428 std::move (cond_string),
8429 std::move (extra_string),
e7e0cddf 8430 type, disposition,
84f4c1fe 8431 thread, task, ignore_count, ops,
44f238bb 8432 from_tty, enabled, internal, flags,
56435ebe 8433 canonical->special_display);
c3f6f71d 8434 }
c3f6f71d 8435}
c906108c 8436
f00aae0f 8437/* Parse LOCATION which is assumed to be a SAL specification possibly
c3f6f71d 8438 followed by conditionals. On return, SALS contains an array of SAL
f00aae0f
KS
8439 addresses found. LOCATION points to the end of the SAL (for
8440 linespec locations).
9998af43
TJB
8441
8442 The array and the line spec strings are allocated on the heap, it is
8443 the caller's responsibility to free them. */
c906108c 8444
b9362cc7 8445static void
626d2320 8446parse_breakpoint_sals (struct event_location *location,
58438ac1 8447 struct linespec_result *canonical)
c3f6f71d 8448{
f00aae0f
KS
8449 struct symtab_and_line cursal;
8450
8451 if (event_location_type (location) == LINESPEC_LOCATION)
8452 {
a20714ff 8453 const char *spec = get_linespec_location (location)->spec_string;
f00aae0f 8454
a20714ff 8455 if (spec == NULL)
f00aae0f
KS
8456 {
8457 /* The last displayed codepoint, if it's valid, is our default
8458 breakpoint address. */
8459 if (last_displayed_sal_is_valid ())
8460 {
f00aae0f
KS
8461 /* Set sal's pspace, pc, symtab, and line to the values
8462 corresponding to the last call to print_frame_info.
8463 Be sure to reinitialize LINE with NOTCURRENT == 0
8464 as the breakpoint line number is inappropriate otherwise.
8465 find_pc_line would adjust PC, re-set it back. */
51abb421
PA
8466 symtab_and_line sal = get_last_displayed_sal ();
8467 CORE_ADDR pc = sal.pc;
8468
f00aae0f
KS
8469 sal = find_pc_line (pc, 0);
8470
8471 /* "break" without arguments is equivalent to "break *PC"
8472 where PC is the last displayed codepoint's address. So
8473 make sure to set sal.explicit_pc to prevent GDB from
8474 trying to expand the list of sals to include all other
8475 instances with the same symtab and line. */
8476 sal.pc = pc;
8477 sal.explicit_pc = 1;
8478
6c5b2ebe
PA
8479 struct linespec_sals lsal;
8480 lsal.sals = {sal};
f00aae0f
KS
8481 lsal.canonical = NULL;
8482
6c5b2ebe 8483 canonical->lsals.push_back (std::move (lsal));
f00aae0f
KS
8484 return;
8485 }
8486 else
8487 error (_("No default breakpoint address now."));
c906108c 8488 }
c906108c 8489 }
f00aae0f
KS
8490
8491 /* Force almost all breakpoints to be in terms of the
8492 current_source_symtab (which is decode_line_1's default).
8493 This should produce the results we want almost all of the
8494 time while leaving default_breakpoint_* alone.
8495
8496 ObjC: However, don't match an Objective-C method name which
8497 may have a '+' or '-' succeeded by a '['. */
8498 cursal = get_current_source_symtab_and_line ();
8499 if (last_displayed_sal_is_valid ())
c906108c 8500 {
a20714ff 8501 const char *spec = NULL;
cc80f267 8502
f00aae0f 8503 if (event_location_type (location) == LINESPEC_LOCATION)
a20714ff 8504 spec = get_linespec_location (location)->spec_string;
cc80f267 8505
f00aae0f 8506 if (!cursal.symtab
a20714ff
PA
8507 || (spec != NULL
8508 && strchr ("+-", spec[0]) != NULL
8509 && spec[1] != '['))
f00aae0f 8510 {
c2f4122d 8511 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f
KS
8512 get_last_displayed_symtab (),
8513 get_last_displayed_line (),
8514 canonical, NULL, NULL);
8515 return;
8516 }
c906108c 8517 }
f00aae0f 8518
c2f4122d 8519 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
f00aae0f 8520 cursal.symtab, cursal.line, canonical, NULL, NULL);
c3f6f71d 8521}
c906108c 8522
c906108c 8523
c3f6f71d 8524/* Convert each SAL into a real PC. Verify that the PC can be
4a64f543 8525 inserted as a breakpoint. If it can't throw an error. */
c906108c 8526
b9362cc7 8527static void
6c5b2ebe 8528breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
c3f6f71d 8529{
6c5b2ebe
PA
8530 for (auto &sal : sals)
8531 resolve_sal_pc (&sal);
c3f6f71d
JM
8532}
8533
7a697b8d
SS
8534/* Fast tracepoints may have restrictions on valid locations. For
8535 instance, a fast tracepoint using a jump instead of a trap will
8536 likely have to overwrite more bytes than a trap would, and so can
8537 only be placed where the instruction is longer than the jump, or a
8538 multi-instruction sequence does not have a jump into the middle of
8539 it, etc. */
8540
8541static void
8542check_fast_tracepoint_sals (struct gdbarch *gdbarch,
6c5b2ebe 8543 gdb::array_view<const symtab_and_line> sals)
7a697b8d 8544{
6c5b2ebe 8545 for (const auto &sal : sals)
7a697b8d 8546 {
f8eba3c6
TT
8547 struct gdbarch *sarch;
8548
6c5b2ebe 8549 sarch = get_sal_arch (sal);
f8eba3c6
TT
8550 /* We fall back to GDBARCH if there is no architecture
8551 associated with SAL. */
8552 if (sarch == NULL)
8553 sarch = gdbarch;
281d762b
TT
8554 std::string msg;
8555 if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
53c3572a 8556 error (_("May not have a fast tracepoint at %s%s"),
281d762b 8557 paddress (sarch, sal.pc), msg.c_str ());
7a697b8d
SS
8558 }
8559}
8560
018d34a4
VP
8561/* Given TOK, a string specification of condition and thread, as
8562 accepted by the 'break' command, extract the condition
8563 string and thread number and set *COND_STRING and *THREAD.
4a64f543 8564 PC identifies the context at which the condition should be parsed.
018d34a4
VP
8565 If no condition is found, *COND_STRING is set to NULL.
8566 If no thread is found, *THREAD is set to -1. */
d634f2de
JB
8567
8568static void
bbc13ae3 8569find_condition_and_thread (const char *tok, CORE_ADDR pc,
6f781ee3
TT
8570 gdb::unique_xmalloc_ptr<char> *cond_string,
8571 int *thread, int *task,
8572 gdb::unique_xmalloc_ptr<char> *rest)
018d34a4 8573{
6f781ee3 8574 cond_string->reset ();
018d34a4 8575 *thread = -1;
ed1d1739 8576 *task = 0;
6f781ee3 8577 rest->reset ();
733d554a 8578 bool force = false;
ed1d1739 8579
018d34a4
VP
8580 while (tok && *tok)
8581 {
bbc13ae3 8582 const char *end_tok;
018d34a4 8583 int toklen;
bbc13ae3
KS
8584 const char *cond_start = NULL;
8585 const char *cond_end = NULL;
cc59ec59 8586
f1735a53 8587 tok = skip_spaces (tok);
e7e0cddf
SS
8588
8589 if ((*tok == '"' || *tok == ',') && rest)
8590 {
6f781ee3 8591 rest->reset (savestring (tok, strlen (tok)));
e7e0cddf
SS
8592 return;
8593 }
8594
f1735a53 8595 end_tok = skip_to_space (tok);
d634f2de 8596
018d34a4 8597 toklen = end_tok - tok;
d634f2de 8598
018d34a4
VP
8599 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8600 {
8601 tok = cond_start = end_tok + 1;
733d554a
TBA
8602 try
8603 {
8604 parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
8605 }
8606 catch (const gdb_exception_error &)
8607 {
8608 if (!force)
8609 throw;
8610 else
8611 tok = tok + strlen (tok);
8612 }
018d34a4 8613 cond_end = tok;
6f781ee3 8614 cond_string->reset (savestring (cond_start, cond_end - cond_start));
018d34a4 8615 }
733d554a
TBA
8616 else if (toklen >= 1 && strncmp (tok, "-force-condition", toklen) == 0)
8617 {
5759831a 8618 tok = tok + toklen;
733d554a
TBA
8619 force = true;
8620 }
018d34a4
VP
8621 else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8622 {
5d5658a1
PA
8623 const char *tmptok;
8624 struct thread_info *thr;
d634f2de 8625
018d34a4 8626 tok = end_tok + 1;
5d5658a1 8627 thr = parse_thread_id (tok, &tmptok);
018d34a4
VP
8628 if (tok == tmptok)
8629 error (_("Junk after thread keyword."));
5d5658a1 8630 *thread = thr->global_num;
bbc13ae3 8631 tok = tmptok;
018d34a4 8632 }
4a306c9a
JB
8633 else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8634 {
8635 char *tmptok;
8636
8637 tok = end_tok + 1;
bbc13ae3 8638 *task = strtol (tok, &tmptok, 0);
4a306c9a
JB
8639 if (tok == tmptok)
8640 error (_("Junk after task keyword."));
8641 if (!valid_task_id (*task))
b6199126 8642 error (_("Unknown task %d."), *task);
bbc13ae3 8643 tok = tmptok;
4a306c9a 8644 }
e7e0cddf
SS
8645 else if (rest)
8646 {
6f781ee3 8647 rest->reset (savestring (tok, strlen (tok)));
ccab2054 8648 return;
e7e0cddf 8649 }
018d34a4
VP
8650 else
8651 error (_("Junk at end of arguments."));
8652 }
8653}
8654
b5fa468f
TBA
8655/* Call 'find_condition_and_thread' for each sal in SALS until a parse
8656 succeeds. The parsed values are written to COND_STRING, THREAD,
8657 TASK, and REST. See the comment of 'find_condition_and_thread'
8658 for the description of these parameters and INPUT. */
8659
8660static void
8661find_condition_and_thread_for_sals (const std::vector<symtab_and_line> &sals,
6f781ee3
TT
8662 const char *input,
8663 gdb::unique_xmalloc_ptr<char> *cond_string,
8664 int *thread, int *task,
8665 gdb::unique_xmalloc_ptr<char> *rest)
b5fa468f
TBA
8666{
8667 int num_failures = 0;
8668 for (auto &sal : sals)
8669 {
6f781ee3 8670 gdb::unique_xmalloc_ptr<char> cond;
b5fa468f
TBA
8671 int thread_id = 0;
8672 int task_id = 0;
6f781ee3 8673 gdb::unique_xmalloc_ptr<char> remaining;
b5fa468f
TBA
8674
8675 /* Here we want to parse 'arg' to separate condition from thread
8676 number. But because parsing happens in a context and the
8677 contexts of sals might be different, try each until there is
8678 success. Finding one successful parse is sufficient for our
8679 goal. When setting the breakpoint we'll re-parse the
8680 condition in the context of each sal. */
8681 try
8682 {
8683 find_condition_and_thread (input, sal.pc, &cond, &thread_id,
8684 &task_id, &remaining);
6f781ee3 8685 *cond_string = std::move (cond);
b5fa468f
TBA
8686 *thread = thread_id;
8687 *task = task_id;
6f781ee3 8688 *rest = std::move (remaining);
b5fa468f
TBA
8689 break;
8690 }
8691 catch (const gdb_exception_error &e)
8692 {
8693 num_failures++;
8694 /* If no sal remains, do not continue. */
8695 if (num_failures == sals.size ())
8696 throw;
8697 }
8698 }
8699}
8700
0fb4aa4b
PA
8701/* Decode a static tracepoint marker spec. */
8702
6c5b2ebe 8703static std::vector<symtab_and_line>
f00aae0f 8704decode_static_tracepoint_spec (const char **arg_p)
0fb4aa4b 8705{
f00aae0f
KS
8706 const char *p = &(*arg_p)[3];
8707 const char *endp;
0fb4aa4b 8708
f1735a53 8709 p = skip_spaces (p);
0fb4aa4b 8710
f1735a53 8711 endp = skip_to_space (p);
0fb4aa4b 8712
81b1e71c 8713 std::string marker_str (p, endp - p);
0fb4aa4b 8714
5d9310c4
SM
8715 std::vector<static_tracepoint_marker> markers
8716 = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
8717 if (markers.empty ())
81b1e71c
TT
8718 error (_("No known static tracepoint marker named %s"),
8719 marker_str.c_str ());
0fb4aa4b 8720
6c5b2ebe 8721 std::vector<symtab_and_line> sals;
5d9310c4 8722 sals.reserve (markers.size ());
0fb4aa4b 8723
5d9310c4 8724 for (const static_tracepoint_marker &marker : markers)
0fb4aa4b 8725 {
5d9310c4
SM
8726 symtab_and_line sal = find_pc_line (marker.address, 0);
8727 sal.pc = marker.address;
6c5b2ebe 8728 sals.push_back (sal);
5d9310c4 8729 }
0fb4aa4b 8730
0fb4aa4b
PA
8731 *arg_p = endp;
8732 return sals;
8733}
8734
bac7c5cf
GB
8735/* Returns the breakpoint ops appropriate for use with with LOCATION_TYPE and
8736 according to IS_TRACEPOINT. */
8737
8738static const struct breakpoint_ops *
8739breakpoint_ops_for_event_location_type (enum event_location_type location_type,
8740 bool is_tracepoint)
8741{
8742 if (is_tracepoint)
8743 {
8744 if (location_type == PROBE_LOCATION)
8745 return &tracepoint_probe_breakpoint_ops;
8746 else
8747 return &tracepoint_breakpoint_ops;
8748 }
8749 else
8750 {
8751 if (location_type == PROBE_LOCATION)
8752 return &bkpt_probe_breakpoint_ops;
8753 else
8754 return &bkpt_breakpoint_ops;
8755 }
8756}
8757
8758/* See breakpoint.h. */
8759
8760const struct breakpoint_ops *
8761breakpoint_ops_for_event_location (const struct event_location *location,
8762 bool is_tracepoint)
8763{
8764 if (location != nullptr)
8765 return breakpoint_ops_for_event_location_type
8766 (event_location_type (location), is_tracepoint);
8767 return is_tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops;
8768}
8769
f00aae0f 8770/* See breakpoint.h. */
0101ce28 8771
8cdf0e15
VP
8772int
8773create_breakpoint (struct gdbarch *gdbarch,
626d2320 8774 struct event_location *location,
e1e01040
PA
8775 const char *cond_string,
8776 int thread, const char *extra_string,
10a636cc 8777 bool force_condition, int parse_extra,
0fb4aa4b 8778 int tempflag, enum bptype type_wanted,
8cdf0e15
VP
8779 int ignore_count,
8780 enum auto_boolean pending_break_support,
c0a91b2b 8781 const struct breakpoint_ops *ops,
44f238bb
PA
8782 int from_tty, int enabled, int internal,
8783 unsigned flags)
c3f6f71d 8784{
7efd8fc2 8785 struct linespec_result canonical;
0101ce28 8786 int pending = 0;
4a306c9a 8787 int task = 0;
86b17b60 8788 int prev_bkpt_count = breakpoint_count;
c3f6f71d 8789
348d480f
PA
8790 gdb_assert (ops != NULL);
8791
f00aae0f
KS
8792 /* If extra_string isn't useful, set it to NULL. */
8793 if (extra_string != NULL && *extra_string == '\0')
8794 extra_string = NULL;
8795
a70b8144 8796 try
b78a6381 8797 {
f00aae0f 8798 ops->create_sals_from_location (location, &canonical, type_wanted);
b78a6381 8799 }
230d2906 8800 catch (const gdb_exception_error &e)
0101ce28 8801 {
492d29ea
PA
8802 /* If caller is interested in rc value from parse, set
8803 value. */
8804 if (e.error == NOT_FOUND_ERROR)
0101ce28 8805 {
05ff989b
AC
8806 /* If pending breakpoint support is turned off, throw
8807 error. */
fa8d40ab
JJ
8808
8809 if (pending_break_support == AUTO_BOOLEAN_FALSE)
eedc3f4f 8810 throw;
723a2275
VP
8811
8812 exception_print (gdb_stderr, e);
fa8d40ab 8813
dda83cd7 8814 /* If pending breakpoint support is auto query and the user
05ff989b 8815 selects no, then simply return the error code. */
059fb39f 8816 if (pending_break_support == AUTO_BOOLEAN_AUTO
bfccc43c
YQ
8817 && !nquery (_("Make %s pending on future shared library load? "),
8818 bptype_string (type_wanted)))
fd9b8c24 8819 return 0;
fa8d40ab 8820
05ff989b
AC
8821 /* At this point, either the user was queried about setting
8822 a pending breakpoint and selected yes, or pending
8823 breakpoint behavior is on and thus a pending breakpoint
8824 is defaulted on behalf of the user. */
f00aae0f 8825 pending = 1;
0101ce28 8826 }
492d29ea 8827 else
eedc3f4f 8828 throw;
0101ce28 8829 }
492d29ea 8830
6c5b2ebe 8831 if (!pending && canonical.lsals.empty ())
492d29ea 8832 return 0;
c3f6f71d 8833
c3f6f71d
JM
8834 /* Resolve all line numbers to PC's and verify that the addresses
8835 are ok for the target. */
0101ce28 8836 if (!pending)
f8eba3c6 8837 {
6c5b2ebe
PA
8838 for (auto &lsal : canonical.lsals)
8839 breakpoint_sals_to_pc (lsal.sals);
f8eba3c6 8840 }
c3f6f71d 8841
7a697b8d 8842 /* Fast tracepoints may have additional restrictions on location. */
bfccc43c 8843 if (!pending && type_wanted == bp_fast_tracepoint)
f8eba3c6 8844 {
6c5b2ebe
PA
8845 for (const auto &lsal : canonical.lsals)
8846 check_fast_tracepoint_sals (gdbarch, lsal.sals);
f8eba3c6 8847 }
7a697b8d 8848
c3f6f71d
JM
8849 /* Verify that condition can be parsed, before setting any
8850 breakpoints. Allocate a separate condition expression for each
4a64f543 8851 breakpoint. */
0101ce28 8852 if (!pending)
c3f6f71d 8853 {
e1e01040
PA
8854 gdb::unique_xmalloc_ptr<char> cond_string_copy;
8855 gdb::unique_xmalloc_ptr<char> extra_string_copy;
8856
f00aae0f 8857 if (parse_extra)
dda83cd7 8858 {
6f781ee3
TT
8859 gdb::unique_xmalloc_ptr<char> rest;
8860 gdb::unique_xmalloc_ptr<char> cond;
52d361e1 8861
6c5b2ebe 8862 const linespec_sals &lsal = canonical.lsals[0];
52d361e1 8863
b5fa468f
TBA
8864 find_condition_and_thread_for_sals (lsal.sals, extra_string,
8865 &cond, &thread, &task, &rest);
6f781ee3
TT
8866 cond_string_copy = std::move (cond);
8867 extra_string_copy = std::move (rest);
dda83cd7 8868 }
2f069f6f 8869 else
dda83cd7 8870 {
f00aae0f
KS
8871 if (type_wanted != bp_dprintf
8872 && extra_string != NULL && *extra_string != '\0')
8873 error (_("Garbage '%s' at end of location"), extra_string);
0878d0fa 8874
10a636cc
TBA
8875 /* Check the validity of the condition. We should error out
8876 if the condition is invalid at all of the locations and
8877 if it is not forced. In the PARSE_EXTRA case above, this
8878 check is done when parsing the EXTRA_STRING. */
8879 if (cond_string != nullptr && !force_condition)
8880 {
8881 int num_failures = 0;
8882 const linespec_sals &lsal = canonical.lsals[0];
8883 for (const auto &sal : lsal.sals)
8884 {
8885 const char *cond = cond_string;
8886 try
8887 {
8888 parse_exp_1 (&cond, sal.pc, block_for_pc (sal.pc), 0);
8889 /* One success is sufficient to keep going. */
8890 break;
8891 }
8892 catch (const gdb_exception_error &)
8893 {
8894 num_failures++;
8895 /* If this is the last sal, error out. */
8896 if (num_failures == lsal.sals.size ())
8897 throw;
8898 }
8899 }
8900 }
8901
0878d0fa
YQ
8902 /* Create a private copy of condition string. */
8903 if (cond_string)
e1e01040 8904 cond_string_copy.reset (xstrdup (cond_string));
0878d0fa
YQ
8905 /* Create a private copy of any extra string. */
8906 if (extra_string)
e1e01040 8907 extra_string_copy.reset (xstrdup (extra_string));
dda83cd7 8908 }
0fb4aa4b 8909
52d361e1 8910 ops->create_breakpoints_sal (gdbarch, &canonical,
e1e01040
PA
8911 std::move (cond_string_copy),
8912 std::move (extra_string_copy),
8913 type_wanted,
d9b3f62e
PA
8914 tempflag ? disp_del : disp_donttouch,
8915 thread, task, ignore_count, ops,
44f238bb 8916 from_tty, enabled, internal, flags);
c906108c 8917 }
0101ce28
JJ
8918 else
8919 {
a5e364af 8920 std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
bfccc43c 8921
a5e364af 8922 init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
d28cd78a 8923 b->location = copy_event_location (location);
bfccc43c 8924
f00aae0f
KS
8925 if (parse_extra)
8926 b->cond_string = NULL;
e12c7713
MK
8927 else
8928 {
8929 /* Create a private copy of condition string. */
6f781ee3
TT
8930 b->cond_string.reset (cond_string != NULL
8931 ? xstrdup (cond_string)
8932 : NULL);
15630549 8933 b->thread = thread;
e12c7713 8934 }
f00aae0f
KS
8935
8936 /* Create a private copy of any extra string. */
6f781ee3
TT
8937 b->extra_string.reset (extra_string != NULL
8938 ? xstrdup (extra_string)
8939 : NULL);
0101ce28 8940 b->ignore_count = ignore_count;
0101ce28 8941 b->disposition = tempflag ? disp_del : disp_donttouch;
0d381245 8942 b->condition_not_parsed = 1;
41447f92 8943 b->enable_state = enabled ? bp_enabled : bp_disabled;
cc72b2a2 8944 if ((type_wanted != bp_breakpoint
dda83cd7 8945 && type_wanted != bp_hardware_breakpoint) || thread != -1)
f8eba3c6 8946 b->pspace = current_program_space;
8bea4e01 8947
b270e6f9 8948 install_breakpoint (internal, std::move (b), 0);
0101ce28
JJ
8949 }
8950
6c5b2ebe 8951 if (canonical.lsals.size () > 1)
95a42b64 8952 {
3e43a32a
MS
8953 warning (_("Multiple breakpoints were set.\nUse the "
8954 "\"delete\" command to delete unwanted breakpoints."));
86b17b60 8955 prev_breakpoint_count = prev_bkpt_count;
95a42b64
TT
8956 }
8957
44702360 8958 update_global_location_list (UGLL_MAY_INSERT);
fd9b8c24
PA
8959
8960 return 1;
c3f6f71d 8961}
c906108c 8962
348d480f 8963/* Set a breakpoint.
72b2ff0e
VP
8964 ARG is a string describing breakpoint address,
8965 condition, and thread.
8966 FLAG specifies if a breakpoint is hardware on,
8967 and if breakpoint is temporary, using BP_HARDWARE_FLAG
8968 and BP_TEMPFLAG. */
348d480f 8969
98deb0da 8970static void
f2fc3015 8971break_command_1 (const char *arg, int flag, int from_tty)
c3f6f71d 8972{
72b2ff0e 8973 int tempflag = flag & BP_TEMPFLAG;
0fb4aa4b
PA
8974 enum bptype type_wanted = (flag & BP_HARDWAREFLAG
8975 ? bp_hardware_breakpoint
8976 : bp_breakpoint);
f00aae0f 8977
ffc2605c 8978 event_location_up location = string_to_event_location (&arg, current_language);
bac7c5cf
GB
8979 const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
8980 (location.get (), false /* is_tracepoint */);
c3f6f71d 8981
8cdf0e15 8982 create_breakpoint (get_current_arch (),
ffc2605c 8983 location.get (),
10a636cc 8984 NULL, 0, arg, false, 1 /* parse arg */,
0fb4aa4b 8985 tempflag, type_wanted,
8cdf0e15
VP
8986 0 /* Ignore count */,
8987 pending_break_support,
55aa24fb 8988 ops,
8cdf0e15 8989 from_tty,
84f4c1fe 8990 1 /* enabled */,
44f238bb
PA
8991 0 /* internal */,
8992 0);
c906108c
SS
8993}
8994
c906108c
SS
8995/* Helper function for break_command_1 and disassemble_command. */
8996
8997void
fba45db2 8998resolve_sal_pc (struct symtab_and_line *sal)
c906108c
SS
8999{
9000 CORE_ADDR pc;
9001
9002 if (sal->pc == 0 && sal->symtab != NULL)
9003 {
9004 if (!find_line_pc (sal->symtab, sal->line, &pc))
8a3fe4f8 9005 error (_("No line %d in file \"%s\"."),
05cba821 9006 sal->line, symtab_to_filename_for_display (sal->symtab));
c906108c 9007 sal->pc = pc;
6a048695 9008
4a64f543 9009 /* If this SAL corresponds to a breakpoint inserted using a line
dda83cd7 9010 number, then skip the function prologue if necessary. */
6a048695 9011 if (sal->explicit_line)
059acae7 9012 skip_prologue_sal (sal);
c906108c
SS
9013 }
9014
9015 if (sal->section == 0 && sal->symtab != NULL)
9016 {
346d1dfe 9017 const struct blockvector *bv;
3977b71f 9018 const struct block *b;
c5aa993b 9019 struct symbol *sym;
c906108c 9020
43f3e411 9021 bv = blockvector_for_pc_sect (sal->pc, 0, &b,
c6159652 9022 sal->symtab->compunit ());
c906108c
SS
9023 if (bv != NULL)
9024 {
7f0df278 9025 sym = block_linkage_function (b);
c906108c
SS
9026 if (sym != NULL)
9027 {
3c86fae3
SM
9028 fixup_symbol_section (sym, sal->symtab->compunit ()->objfile ());
9029 sal->section
9030 = sym->obj_section (sal->symtab->compunit ()->objfile ());
c906108c
SS
9031 }
9032 else
9033 {
4a64f543 9034 /* It really is worthwhile to have the section, so we'll
dda83cd7
SM
9035 just have to look harder. This case can be executed
9036 if we have line numbers but no functions (as can
9037 happen in assembly source). */
c906108c 9038
5ed8105e 9039 scoped_restore_current_pspace_and_thread restore_pspace_thread;
6c95b8df 9040 switch_to_program_space_and_thread (sal->pspace);
c906108c 9041
5ed8105e 9042 bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
7cbd4a93 9043 if (msym.minsym)
1db66e34 9044 sal->section = msym.obj_section ();
c906108c
SS
9045 }
9046 }
9047 }
9048}
9049
9050void
0b39b52e 9051break_command (const char *arg, int from_tty)
c906108c 9052{
db107f19 9053 break_command_1 (arg, 0, from_tty);
c906108c
SS
9054}
9055
c906108c 9056void
0b39b52e 9057tbreak_command (const char *arg, int from_tty)
c906108c 9058{
db107f19 9059 break_command_1 (arg, BP_TEMPFLAG, from_tty);
c906108c
SS
9060}
9061
c906108c 9062static void
0b39b52e 9063hbreak_command (const char *arg, int from_tty)
c906108c 9064{
db107f19 9065 break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
c906108c
SS
9066}
9067
9068static void
0b39b52e 9069thbreak_command (const char *arg, int from_tty)
c906108c 9070{
db107f19 9071 break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
c906108c
SS
9072}
9073
e7e0cddf
SS
9074/* The dynamic printf command is mostly like a regular breakpoint, but
9075 with a prewired command list consisting of a single output command,
9076 built from extra arguments supplied on the dprintf command
9077 line. */
9078
da821c7b 9079static void
0b39b52e 9080dprintf_command (const char *arg, int from_tty)
e7e0cddf 9081{
ffc2605c 9082 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f
KS
9083
9084 /* If non-NULL, ARG should have been advanced past the location;
9085 the next character must be ','. */
9086 if (arg != NULL)
9087 {
9088 if (arg[0] != ',' || arg[1] == '\0')
9089 error (_("Format string required"));
9090 else
9091 {
9092 /* Skip the comma. */
9093 ++arg;
9094 }
9095 }
9096
e7e0cddf 9097 create_breakpoint (get_current_arch (),
ffc2605c 9098 location.get (),
10a636cc 9099 NULL, 0, arg, false, 1 /* parse arg */,
e7e0cddf
SS
9100 0, bp_dprintf,
9101 0 /* Ignore count */,
9102 pending_break_support,
9103 &dprintf_breakpoint_ops,
9104 from_tty,
9105 1 /* enabled */,
9106 0 /* internal */,
9107 0);
9108}
9109
d3ce09f5 9110static void
0b39b52e 9111agent_printf_command (const char *arg, int from_tty)
d3ce09f5
SS
9112{
9113 error (_("May only run agent-printf on the target"));
9114}
9115
f1310107
TJB
9116/* Implement the "breakpoint_hit" breakpoint_ops method for
9117 ranged breakpoints. */
9118
9119static int
9120breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
bd522513 9121 const address_space *aspace,
09ac7c10 9122 CORE_ADDR bp_addr,
c272a98c 9123 const target_waitstatus &ws)
f1310107 9124{
c272a98c
SM
9125 if (ws.kind () != TARGET_WAITKIND_STOPPED
9126 || ws.sig () != GDB_SIGNAL_TRAP)
09ac7c10
TT
9127 return 0;
9128
f1310107
TJB
9129 return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9130 bl->length, aspace, bp_addr);
9131}
9132
9133/* Implement the "resources_needed" breakpoint_ops method for
9134 ranged breakpoints. */
9135
9136static int
9137resources_needed_ranged_breakpoint (const struct bp_location *bl)
9138{
9139 return target_ranged_break_num_registers ();
9140}
9141
9142/* Implement the "print_it" breakpoint_ops method for
9143 ranged breakpoints. */
9144
9145static enum print_stop_action
313f3b21 9146print_it_ranged_breakpoint (bpstat *bs)
f1310107 9147{
348d480f 9148 struct breakpoint *b = bs->breakpoint_at;
f1310107 9149 struct bp_location *bl = b->loc;
79a45e25 9150 struct ui_out *uiout = current_uiout;
f1310107
TJB
9151
9152 gdb_assert (b->type == bp_hardware_breakpoint);
9153
9154 /* Ranged breakpoints have only one location. */
9155 gdb_assert (bl && bl->next == NULL);
9156
9157 annotate_breakpoint (b->number);
f303dbd6
PA
9158
9159 maybe_print_thread_hit_breakpoint (uiout);
9160
f1310107 9161 if (b->disposition == disp_del)
112e8700 9162 uiout->text ("Temporary ranged breakpoint ");
f1310107 9163 else
112e8700
SM
9164 uiout->text ("Ranged breakpoint ");
9165 if (uiout->is_mi_like_p ())
f1310107 9166 {
112e8700 9167 uiout->field_string ("reason",
f1310107 9168 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 9169 uiout->field_string ("disp", bpdisp_text (b->disposition));
f1310107 9170 }
381befee 9171 uiout->field_signed ("bkptno", b->number);
112e8700 9172 uiout->text (", ");
f1310107
TJB
9173
9174 return PRINT_SRC_AND_LOC;
9175}
9176
9177/* Implement the "print_one" breakpoint_ops method for
9178 ranged breakpoints. */
9179
c01e038b 9180static bool
f1310107
TJB
9181print_one_ranged_breakpoint (struct breakpoint *b,
9182 struct bp_location **last_loc)
9183{
9184 struct bp_location *bl = b->loc;
9185 struct value_print_options opts;
79a45e25 9186 struct ui_out *uiout = current_uiout;
f1310107
TJB
9187
9188 /* Ranged breakpoints have only one location. */
9189 gdb_assert (bl && bl->next == NULL);
9190
9191 get_user_print_options (&opts);
9192
9193 if (opts.addressprint)
9194 /* We don't print the address range here, it will be printed later
9195 by print_one_detail_ranged_breakpoint. */
112e8700 9196 uiout->field_skip ("addr");
f1310107
TJB
9197 annotate_field (5);
9198 print_breakpoint_location (b, bl);
9199 *last_loc = bl;
c01e038b
TT
9200
9201 return true;
f1310107
TJB
9202}
9203
9204/* Implement the "print_one_detail" breakpoint_ops method for
9205 ranged breakpoints. */
9206
9207static void
9208print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9209 struct ui_out *uiout)
9210{
9211 CORE_ADDR address_start, address_end;
9212 struct bp_location *bl = b->loc;
d7e74731 9213 string_file stb;
f1310107
TJB
9214
9215 gdb_assert (bl);
9216
9217 address_start = bl->address;
9218 address_end = address_start + bl->length - 1;
9219
112e8700 9220 uiout->text ("\taddress range: ");
d7e74731
PA
9221 stb.printf ("[%s, %s]",
9222 print_core_address (bl->gdbarch, address_start),
9223 print_core_address (bl->gdbarch, address_end));
112e8700
SM
9224 uiout->field_stream ("addr", stb);
9225 uiout->text ("\n");
f1310107
TJB
9226}
9227
9228/* Implement the "print_mention" breakpoint_ops method for
9229 ranged breakpoints. */
9230
9231static void
9232print_mention_ranged_breakpoint (struct breakpoint *b)
9233{
9234 struct bp_location *bl = b->loc;
79a45e25 9235 struct ui_out *uiout = current_uiout;
f1310107
TJB
9236
9237 gdb_assert (bl);
9238 gdb_assert (b->type == bp_hardware_breakpoint);
9239
2d33446d
TT
9240 uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9241 b->number, paddress (bl->gdbarch, bl->address),
9242 paddress (bl->gdbarch, bl->address + bl->length - 1));
f1310107
TJB
9243}
9244
9245/* Implement the "print_recreate" breakpoint_ops method for
9246 ranged breakpoints. */
9247
9248static void
9249print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9250{
6cb06a8c
TT
9251 gdb_printf (fp, "break-range %s, %s",
9252 event_location_to_string (b->location.get ()),
9253 event_location_to_string (b->location_range_end.get ()));
d9b3f62e 9254 print_recreate_thread (b, fp);
f1310107
TJB
9255}
9256
9257/* The breakpoint_ops structure to be used in ranged breakpoints. */
9258
2060206e 9259static struct breakpoint_ops ranged_breakpoint_ops;
f1310107
TJB
9260
9261/* Find the address where the end of the breakpoint range should be
9262 placed, given the SAL of the end of the range. This is so that if
9263 the user provides a line number, the end of the range is set to the
9264 last instruction of the given line. */
9265
9266static CORE_ADDR
9267find_breakpoint_range_end (struct symtab_and_line sal)
9268{
9269 CORE_ADDR end;
9270
9271 /* If the user provided a PC value, use it. Otherwise,
9272 find the address of the end of the given location. */
9273 if (sal.explicit_pc)
9274 end = sal.pc;
9275 else
9276 {
9277 int ret;
9278 CORE_ADDR start;
9279
9280 ret = find_line_pc_range (sal, &start, &end);
9281 if (!ret)
9282 error (_("Could not find location of the end of the range."));
9283
9284 /* find_line_pc_range returns the start of the next line. */
9285 end--;
9286 }
9287
9288 return end;
9289}
9290
9291/* Implement the "break-range" CLI command. */
9292
9293static void
0b39b52e 9294break_range_command (const char *arg, int from_tty)
f1310107 9295{
f2fc3015 9296 const char *arg_start;
f1310107
TJB
9297 struct linespec_result canonical_start, canonical_end;
9298 int bp_count, can_use_bp, length;
9299 CORE_ADDR end;
9300 struct breakpoint *b;
f1310107
TJB
9301
9302 /* We don't support software ranged breakpoints. */
9303 if (target_ranged_break_num_registers () < 0)
9304 error (_("This target does not support hardware ranged breakpoints."));
9305
9306 bp_count = hw_breakpoint_used_count ();
9307 bp_count += target_ranged_break_num_registers ();
9308 can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9309 bp_count, 0);
9310 if (can_use_bp < 0)
9311 error (_("Hardware breakpoints used exceeds limit."));
9312
f8eba3c6 9313 arg = skip_spaces (arg);
f1310107
TJB
9314 if (arg == NULL || arg[0] == '\0')
9315 error(_("No address range specified."));
9316
f8eba3c6 9317 arg_start = arg;
ffc2605c
TT
9318 event_location_up start_location = string_to_event_location (&arg,
9319 current_language);
9320 parse_breakpoint_sals (start_location.get (), &canonical_start);
f1310107
TJB
9321
9322 if (arg[0] != ',')
9323 error (_("Too few arguments."));
6c5b2ebe 9324 else if (canonical_start.lsals.empty ())
f1310107 9325 error (_("Could not find location of the beginning of the range."));
f8eba3c6 9326
6c5b2ebe 9327 const linespec_sals &lsal_start = canonical_start.lsals[0];
f8eba3c6 9328
6c5b2ebe
PA
9329 if (canonical_start.lsals.size () > 1
9330 || lsal_start.sals.size () != 1)
f1310107
TJB
9331 error (_("Cannot create a ranged breakpoint with multiple locations."));
9332
6c5b2ebe 9333 const symtab_and_line &sal_start = lsal_start.sals[0];
81b1e71c 9334 std::string addr_string_start (arg_start, arg - arg_start);
f1310107
TJB
9335
9336 arg++; /* Skip the comma. */
f8eba3c6 9337 arg = skip_spaces (arg);
f1310107
TJB
9338
9339 /* Parse the end location. */
9340
f1310107
TJB
9341 arg_start = arg;
9342
f8eba3c6 9343 /* We call decode_line_full directly here instead of using
f1310107
TJB
9344 parse_breakpoint_sals because we need to specify the start location's
9345 symtab and line as the default symtab and line for the end of the
9346 range. This makes it possible to have ranges like "foo.c:27, +14",
9347 where +14 means 14 lines from the start location. */
ffc2605c
TT
9348 event_location_up end_location = string_to_event_location (&arg,
9349 current_language);
9350 decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
f8eba3c6
TT
9351 sal_start.symtab, sal_start.line,
9352 &canonical_end, NULL, NULL);
9353
6c5b2ebe 9354 if (canonical_end.lsals.empty ())
f1310107 9355 error (_("Could not find location of the end of the range."));
f8eba3c6 9356
6c5b2ebe
PA
9357 const linespec_sals &lsal_end = canonical_end.lsals[0];
9358 if (canonical_end.lsals.size () > 1
9359 || lsal_end.sals.size () != 1)
f1310107
TJB
9360 error (_("Cannot create a ranged breakpoint with multiple locations."));
9361
6c5b2ebe 9362 const symtab_and_line &sal_end = lsal_end.sals[0];
f1310107
TJB
9363
9364 end = find_breakpoint_range_end (sal_end);
9365 if (sal_start.pc > end)
177b42fe 9366 error (_("Invalid address range, end precedes start."));
f1310107
TJB
9367
9368 length = end - sal_start.pc + 1;
9369 if (length < 0)
9370 /* Length overflowed. */
9371 error (_("Address range too large."));
9372 else if (length == 1)
9373 {
9374 /* This range is simple enough to be handled by
9375 the `hbreak' command. */
81b1e71c 9376 hbreak_command (&addr_string_start[0], 1);
f1310107
TJB
9377
9378 return;
9379 }
9380
9381 /* Now set up the breakpoint. */
9382 b = set_raw_breakpoint (get_current_arch (), sal_start,
348d480f 9383 bp_hardware_breakpoint, &ranged_breakpoint_ops);
f1310107
TJB
9384 set_breakpoint_count (breakpoint_count + 1);
9385 b->number = breakpoint_count;
9386 b->disposition = disp_donttouch;
d28cd78a
TT
9387 b->location = std::move (start_location);
9388 b->location_range_end = std::move (end_location);
f1310107
TJB
9389 b->loc->length = length;
9390
f1310107 9391 mention (b);
76727919 9392 gdb::observers::breakpoint_created.notify (b);
44702360 9393 update_global_location_list (UGLL_MAY_INSERT);
f1310107
TJB
9394}
9395
4a64f543
MS
9396/* Return non-zero if EXP is verified as constant. Returned zero
9397 means EXP is variable. Also the constant detection may fail for
9398 some constant expressions and in such case still falsely return
9399 zero. */
2e6e3d9c 9400
dab72643 9401static bool
65d79d4b
SDJ
9402watchpoint_exp_is_const (const struct expression *exp)
9403{
1eaebe02 9404 return exp->op->constant_p ();
65d79d4b
SDJ
9405}
9406
3a292923 9407/* Implement the "re_set" method for watchpoints. */
348d480f 9408
3a292923
TT
9409void
9410watchpoint::re_set ()
348d480f
PA
9411{
9412 /* Watchpoint can be either on expression using entirely global
9413 variables, or it can be on local variables.
9414
9415 Watchpoints of the first kind are never auto-deleted, and even
9416 persist across program restarts. Since they can use variables
9417 from shared libraries, we need to reparse expression as libraries
9418 are loaded and unloaded.
9419
9420 Watchpoints on local variables can also change meaning as result
9421 of solib event. For example, if a watchpoint uses both a local
9422 and a global variables in expression, it's a local watchpoint,
9423 but unloading of a shared library will make the expression
9424 invalid. This is not a very common use case, but we still
9425 re-evaluate expression, to avoid surprises to the user.
9426
9427 Note that for local watchpoints, we re-evaluate it only if
9428 watchpoints frame id is still valid. If it's not, it means the
9429 watchpoint is out of scope and will be deleted soon. In fact,
9430 I'm not sure we'll ever be called in this case.
9431
9432 If a local watchpoint's frame id is still valid, then
3a292923 9433 exp_valid_block is likewise valid, and we can safely use it.
348d480f 9434
3a5c3e22
PA
9435 Don't do anything about disabled watchpoints, since they will be
9436 reevaluated again when enabled. */
3a292923 9437 update_watchpoint (this, 1 /* reparse */);
348d480f
PA
9438}
9439
3a292923 9440/* Implement the "insert" method for hardware watchpoints. */
77b06cd7 9441
3a292923
TT
9442int
9443watchpoint::insert_location (struct bp_location *bl)
77b06cd7 9444{
3a292923 9445 int length = exact ? 1 : bl->length;
e09342b5
TJB
9446
9447 return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
3a292923 9448 cond_exp.get ());
77b06cd7
TJB
9449}
9450
3a292923 9451/* Implement the "remove" method for hardware watchpoints. */
77b06cd7 9452
3a292923
TT
9453int
9454watchpoint::remove_location (struct bp_location *bl,
9455 enum remove_bp_reason reason)
77b06cd7 9456{
3a292923 9457 int length = exact ? 1 : bl->length;
e09342b5
TJB
9458
9459 return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
3a292923 9460 cond_exp.get ());
e09342b5
TJB
9461}
9462
3a292923
TT
9463int
9464watchpoint::breakpoint_hit (const struct bp_location *bl,
9465 const address_space *aspace, CORE_ADDR bp_addr,
9466 const target_waitstatus &ws)
e09342b5 9467{
348d480f 9468 struct breakpoint *b = bl->owner;
77b06cd7 9469
348d480f
PA
9470 /* Continuable hardware watchpoints are treated as non-existent if the
9471 reason we stopped wasn't a hardware watchpoint (we didn't stop on
9472 some data address). Otherwise gdb won't stop on a break instruction
9473 in the code (not from a breakpoint) when a hardware watchpoint has
9474 been defined. Also skip watchpoints which we know did not trigger
9475 (did not match the data address). */
9476 if (is_hardware_watchpoint (b)
3a292923 9477 && watchpoint_triggered == watch_triggered_no)
348d480f 9478 return 0;
9c06b0b4 9479
348d480f 9480 return 1;
9c06b0b4
TJB
9481}
9482
3a292923
TT
9483void
9484watchpoint::check_status (bpstat *bs)
9c06b0b4 9485{
348d480f 9486 gdb_assert (is_watchpoint (bs->breakpoint_at));
9c06b0b4 9487
348d480f 9488 bpstat_check_watchpoint (bs);
9c06b0b4
TJB
9489}
9490
3a292923
TT
9491/* Implement the "resources_needed" method for hardware
9492 watchpoints. */
9c06b0b4 9493
3a292923
TT
9494int
9495watchpoint::resources_needed (const struct bp_location *bl)
9c06b0b4 9496{
3a292923 9497 int length = exact? 1 : bl->length;
348d480f
PA
9498
9499 return target_region_ok_for_hw_watchpoint (bl->address, length);
9c06b0b4
TJB
9500}
9501
3a292923
TT
9502/* Implement the "works_in_software_mode" method for hardware
9503 watchpoints. */
9c06b0b4 9504
3a292923
TT
9505int
9506watchpoint::works_in_software_mode () const
9c06b0b4 9507{
efa80663 9508 /* Read and access watchpoints only work with hardware support. */
3a292923 9509 return type == bp_watchpoint || type == bp_hardware_watchpoint;
9c06b0b4
TJB
9510}
9511
3a292923
TT
9512enum print_stop_action
9513watchpoint::print_it (bpstat *bs)
9c06b0b4 9514{
348d480f 9515 struct breakpoint *b;
348d480f 9516 enum print_stop_action result;
79a45e25 9517 struct ui_out *uiout = current_uiout;
348d480f
PA
9518
9519 gdb_assert (bs->bp_location_at != NULL);
9520
348d480f
PA
9521 b = bs->breakpoint_at;
9522
f303dbd6
PA
9523 annotate_watchpoint (b->number);
9524 maybe_print_thread_hit_breakpoint (uiout);
9525
d7e74731
PA
9526 string_file stb;
9527
76f9c9cf 9528 gdb::optional<ui_out_emit_tuple> tuple_emitter;
9c06b0b4
TJB
9529 switch (b->type)
9530 {
348d480f 9531 case bp_watchpoint:
9c06b0b4 9532 case bp_hardware_watchpoint:
112e8700
SM
9533 if (uiout->is_mi_like_p ())
9534 uiout->field_string
9535 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f 9536 mention (b);
76f9c9cf 9537 tuple_emitter.emplace (uiout, "value");
112e8700 9538 uiout->text ("\nOld value = ");
850645cf 9539 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
9540 uiout->field_stream ("old", stb);
9541 uiout->text ("\nNew value = ");
3a292923 9542 watchpoint_value_print (val.get (), &stb);
112e8700
SM
9543 uiout->field_stream ("new", stb);
9544 uiout->text ("\n");
348d480f
PA
9545 /* More than one watchpoint may have been triggered. */
9546 result = PRINT_UNKNOWN;
9c06b0b4
TJB
9547 break;
9548
9549 case bp_read_watchpoint:
112e8700
SM
9550 if (uiout->is_mi_like_p ())
9551 uiout->field_string
9552 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f 9553 mention (b);
76f9c9cf 9554 tuple_emitter.emplace (uiout, "value");
112e8700 9555 uiout->text ("\nValue = ");
3a292923 9556 watchpoint_value_print (val.get (), &stb);
112e8700
SM
9557 uiout->field_stream ("value", stb);
9558 uiout->text ("\n");
348d480f 9559 result = PRINT_UNKNOWN;
9c06b0b4
TJB
9560 break;
9561
9562 case bp_access_watchpoint:
348d480f
PA
9563 if (bs->old_val != NULL)
9564 {
112e8700
SM
9565 if (uiout->is_mi_like_p ())
9566 uiout->field_string
9567 ("reason",
348d480f
PA
9568 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9569 mention (b);
76f9c9cf 9570 tuple_emitter.emplace (uiout, "value");
112e8700 9571 uiout->text ("\nOld value = ");
850645cf 9572 watchpoint_value_print (bs->old_val.get (), &stb);
112e8700
SM
9573 uiout->field_stream ("old", stb);
9574 uiout->text ("\nNew value = ");
348d480f
PA
9575 }
9576 else
9577 {
9578 mention (b);
112e8700
SM
9579 if (uiout->is_mi_like_p ())
9580 uiout->field_string
9581 ("reason",
348d480f 9582 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
76f9c9cf 9583 tuple_emitter.emplace (uiout, "value");
112e8700 9584 uiout->text ("\nValue = ");
348d480f 9585 }
3a292923 9586 watchpoint_value_print (val.get (), &stb);
112e8700
SM
9587 uiout->field_stream ("new", stb);
9588 uiout->text ("\n");
348d480f 9589 result = PRINT_UNKNOWN;
9c06b0b4
TJB
9590 break;
9591 default:
348d480f 9592 result = PRINT_UNKNOWN;
9c06b0b4
TJB
9593 }
9594
348d480f
PA
9595 return result;
9596}
9597
3a292923 9598/* Implement the "print_mention" method for hardware watchpoints. */
348d480f 9599
3a292923
TT
9600void
9601watchpoint::print_mention ()
348d480f 9602{
79a45e25 9603 struct ui_out *uiout = current_uiout;
46b9c129 9604 const char *tuple_name;
348d480f 9605
3a292923 9606 switch (type)
348d480f
PA
9607 {
9608 case bp_watchpoint:
112e8700 9609 uiout->text ("Watchpoint ");
46b9c129 9610 tuple_name = "wpt";
348d480f
PA
9611 break;
9612 case bp_hardware_watchpoint:
112e8700 9613 uiout->text ("Hardware watchpoint ");
46b9c129 9614 tuple_name = "wpt";
348d480f
PA
9615 break;
9616 case bp_read_watchpoint:
112e8700 9617 uiout->text ("Hardware read watchpoint ");
46b9c129 9618 tuple_name = "hw-rwpt";
348d480f
PA
9619 break;
9620 case bp_access_watchpoint:
112e8700 9621 uiout->text ("Hardware access (read/write) watchpoint ");
46b9c129 9622 tuple_name = "hw-awpt";
348d480f
PA
9623 break;
9624 default:
9625 internal_error (__FILE__, __LINE__,
9626 _("Invalid hardware watchpoint type."));
9627 }
9628
46b9c129 9629 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
3a292923 9630 uiout->field_signed ("number", number);
112e8700 9631 uiout->text (": ");
3a292923 9632 uiout->field_string ("exp", exp_string.get ());
348d480f
PA
9633}
9634
3a292923 9635/* Implement the "print_recreate" method for watchpoints. */
348d480f 9636
3a292923
TT
9637void
9638watchpoint::print_recreate (struct ui_file *fp)
348d480f 9639{
3a292923 9640 switch (type)
348d480f
PA
9641 {
9642 case bp_watchpoint:
9643 case bp_hardware_watchpoint:
6cb06a8c 9644 gdb_printf (fp, "watch");
348d480f
PA
9645 break;
9646 case bp_read_watchpoint:
6cb06a8c 9647 gdb_printf (fp, "rwatch");
348d480f
PA
9648 break;
9649 case bp_access_watchpoint:
6cb06a8c 9650 gdb_printf (fp, "awatch");
348d480f
PA
9651 break;
9652 default:
9653 internal_error (__FILE__, __LINE__,
9654 _("Invalid watchpoint type."));
9655 }
9656
3a292923
TT
9657 gdb_printf (fp, " %s", exp_string.get ());
9658 print_recreate_thread (this, fp);
348d480f
PA
9659}
9660
3a292923 9661/* Implement the "explains_signal" method for watchpoints. */
427cd150 9662
3a292923
TT
9663int
9664watchpoint::explains_signal (enum gdb_signal sig)
427cd150
TT
9665{
9666 /* A software watchpoint cannot cause a signal other than
9667 GDB_SIGNAL_TRAP. */
3a292923 9668 if (type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
47591c29 9669 return 0;
427cd150 9670
47591c29 9671 return 1;
427cd150
TT
9672}
9673
3a292923
TT
9674struct masked_watchpoint : public watchpoint
9675{
9676 int insert_location (struct bp_location *) override;
9677 int remove_location (struct bp_location *,
9678 enum remove_bp_reason reason) override;
9679 int resources_needed (const struct bp_location *) override;
9680 int works_in_software_mode () const override;
9681 enum print_stop_action print_it (struct bpstat *bs) override;
9682 void print_one_detail (struct ui_out *) const override;
9683 void print_mention () override;
9684 void print_recreate (struct ui_file *fp) override;
9685};
348d480f 9686
3a292923 9687/* Implement the "insert" method for masked hardware watchpoints. */
348d480f 9688
3a292923
TT
9689int
9690masked_watchpoint::insert_location (struct bp_location *bl)
348d480f 9691{
3a292923 9692 return target_insert_mask_watchpoint (bl->address, hw_wp_mask,
348d480f
PA
9693 bl->watchpoint_type);
9694}
9695
3a292923 9696/* Implement the "remove" method for masked hardware watchpoints. */
348d480f 9697
3a292923
TT
9698int
9699masked_watchpoint::remove_location (struct bp_location *bl,
9700 enum remove_bp_reason reason)
348d480f 9701{
3a292923 9702 return target_remove_mask_watchpoint (bl->address, hw_wp_mask,
dda83cd7 9703 bl->watchpoint_type);
348d480f
PA
9704}
9705
3a292923
TT
9706/* Implement the "resources_needed" method for masked hardware
9707 watchpoints. */
348d480f 9708
3a292923
TT
9709int
9710masked_watchpoint::resources_needed (const struct bp_location *bl)
348d480f 9711{
3a292923 9712 return target_masked_watch_num_registers (bl->address, hw_wp_mask);
348d480f
PA
9713}
9714
3a292923
TT
9715/* Implement the "works_in_software_mode" method for masked hardware
9716 watchpoints. */
348d480f 9717
3a292923
TT
9718int
9719masked_watchpoint::works_in_software_mode () const
348d480f
PA
9720{
9721 return 0;
9722}
9723
3a292923
TT
9724/* Implement the "print_it" method for masked hardware
9725 watchpoints. */
348d480f 9726
3a292923
TT
9727enum print_stop_action
9728masked_watchpoint::print_it (bpstat *bs)
348d480f
PA
9729{
9730 struct breakpoint *b = bs->breakpoint_at;
79a45e25 9731 struct ui_out *uiout = current_uiout;
348d480f
PA
9732
9733 /* Masked watchpoints have only one location. */
9734 gdb_assert (b->loc && b->loc->next == NULL);
9735
f303dbd6
PA
9736 annotate_watchpoint (b->number);
9737 maybe_print_thread_hit_breakpoint (uiout);
9738
348d480f
PA
9739 switch (b->type)
9740 {
9741 case bp_hardware_watchpoint:
112e8700
SM
9742 if (uiout->is_mi_like_p ())
9743 uiout->field_string
9744 ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
348d480f
PA
9745 break;
9746
9747 case bp_read_watchpoint:
112e8700
SM
9748 if (uiout->is_mi_like_p ())
9749 uiout->field_string
9750 ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
348d480f
PA
9751 break;
9752
9753 case bp_access_watchpoint:
112e8700
SM
9754 if (uiout->is_mi_like_p ())
9755 uiout->field_string
9756 ("reason",
348d480f
PA
9757 async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9758 break;
9759 default:
9760 internal_error (__FILE__, __LINE__,
9761 _("Invalid hardware watchpoint type."));
9762 }
9763
9764 mention (b);
112e8700 9765 uiout->text (_("\n\
9c06b0b4
TJB
9766Check the underlying instruction at PC for the memory\n\
9767address and value which triggered this watchpoint.\n"));
112e8700 9768 uiout->text ("\n");
9c06b0b4
TJB
9769
9770 /* More than one watchpoint may have been triggered. */
9771 return PRINT_UNKNOWN;
9772}
9773
3a292923
TT
9774/* Implement the "print_one_detail" method for masked hardware
9775 watchpoints. */
9c06b0b4 9776
3a292923
TT
9777void
9778masked_watchpoint::print_one_detail (struct ui_out *uiout) const
9c06b0b4
TJB
9779{
9780 /* Masked watchpoints have only one location. */
3a292923 9781 gdb_assert (loc && loc->next == NULL);
9c06b0b4 9782
112e8700 9783 uiout->text ("\tmask ");
3a292923 9784 uiout->field_core_addr ("mask", loc->gdbarch, hw_wp_mask);
112e8700 9785 uiout->text ("\n");
9c06b0b4
TJB
9786}
9787
3a292923
TT
9788/* Implement the "print_mention" method for masked hardware
9789 watchpoints. */
9c06b0b4 9790
3a292923
TT
9791void
9792masked_watchpoint::print_mention ()
9c06b0b4 9793{
79a45e25 9794 struct ui_out *uiout = current_uiout;
46b9c129 9795 const char *tuple_name;
9c06b0b4 9796
3a292923 9797 switch (type)
9c06b0b4
TJB
9798 {
9799 case bp_hardware_watchpoint:
112e8700 9800 uiout->text ("Masked hardware watchpoint ");
46b9c129 9801 tuple_name = "wpt";
9c06b0b4
TJB
9802 break;
9803 case bp_read_watchpoint:
112e8700 9804 uiout->text ("Masked hardware read watchpoint ");
46b9c129 9805 tuple_name = "hw-rwpt";
9c06b0b4
TJB
9806 break;
9807 case bp_access_watchpoint:
112e8700 9808 uiout->text ("Masked hardware access (read/write) watchpoint ");
46b9c129 9809 tuple_name = "hw-awpt";
9c06b0b4
TJB
9810 break;
9811 default:
9812 internal_error (__FILE__, __LINE__,
9813 _("Invalid hardware watchpoint type."));
9814 }
9815
46b9c129 9816 ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
3a292923 9817 uiout->field_signed ("number", number);
112e8700 9818 uiout->text (": ");
3a292923 9819 uiout->field_string ("exp", exp_string.get ());
9c06b0b4
TJB
9820}
9821
3a292923
TT
9822/* Implement the "print_recreate" method for masked hardware
9823 watchpoints. */
9c06b0b4 9824
3a292923
TT
9825void
9826masked_watchpoint::print_recreate (struct ui_file *fp)
9c06b0b4 9827{
3a292923 9828 switch (type)
9c06b0b4
TJB
9829 {
9830 case bp_hardware_watchpoint:
6cb06a8c 9831 gdb_printf (fp, "watch");
9c06b0b4
TJB
9832 break;
9833 case bp_read_watchpoint:
6cb06a8c 9834 gdb_printf (fp, "rwatch");
9c06b0b4
TJB
9835 break;
9836 case bp_access_watchpoint:
6cb06a8c 9837 gdb_printf (fp, "awatch");
9c06b0b4
TJB
9838 break;
9839 default:
9840 internal_error (__FILE__, __LINE__,
9841 _("Invalid hardware watchpoint type."));
9842 }
9843
3a292923
TT
9844 gdb_printf (fp, " %s mask 0x%s", exp_string.get (),
9845 phex (hw_wp_mask, sizeof (CORE_ADDR)));
9846 print_recreate_thread (this, fp);
9c06b0b4
TJB
9847}
9848
9c06b0b4
TJB
9849/* Tell whether the given watchpoint is a masked hardware watchpoint. */
9850
f2478a7e 9851static bool
9c06b0b4
TJB
9852is_masked_watchpoint (const struct breakpoint *b)
9853{
3a292923 9854 return dynamic_cast<const masked_watchpoint *> (b) != nullptr;
9c06b0b4
TJB
9855}
9856
53a5351d 9857/* accessflag: hw_write: watch write,
dda83cd7 9858 hw_read: watch read,
53a5351d 9859 hw_access: watch access (read or write) */
c906108c 9860static void
bbc13ae3 9861watch_command_1 (const char *arg, int accessflag, int from_tty,
2e362716 9862 bool just_location, bool internal)
c906108c 9863{
c1fc2657 9864 struct breakpoint *scope_breakpoint = NULL;
270140bd 9865 const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
b926417a 9866 struct value *result;
bb9d5f81 9867 int saved_bitpos = 0, saved_bitsize = 0;
bbc13ae3
KS
9868 const char *exp_start = NULL;
9869 const char *exp_end = NULL;
9870 const char *tok, *end_tok;
9c06b0b4 9871 int toklen = -1;
bbc13ae3
KS
9872 const char *cond_start = NULL;
9873 const char *cond_end = NULL;
c906108c 9874 enum bptype bp_type;
37e4754d 9875 int thread = -1;
9c06b0b4
TJB
9876 /* Flag to indicate whether we are going to use masks for
9877 the hardware watchpoint. */
2e362716 9878 bool use_mask = false;
9c06b0b4 9879 CORE_ADDR mask = 0;
8a18382f 9880 int task = 0;
c906108c 9881
37e4754d
LM
9882 /* Make sure that we actually have parameters to parse. */
9883 if (arg != NULL && arg[0] != '\0')
9884 {
bbc13ae3
KS
9885 const char *value_start;
9886
9887 exp_end = arg + strlen (arg);
37e4754d 9888
9c06b0b4
TJB
9889 /* Look for "parameter value" pairs at the end
9890 of the arguments string. */
bbc13ae3 9891 for (tok = exp_end - 1; tok > arg; tok--)
9c06b0b4
TJB
9892 {
9893 /* Skip whitespace at the end of the argument list. */
9894 while (tok > arg && (*tok == ' ' || *tok == '\t'))
9895 tok--;
9896
9897 /* Find the beginning of the last token.
9898 This is the value of the parameter. */
9899 while (tok > arg && (*tok != ' ' && *tok != '\t'))
9900 tok--;
9901 value_start = tok + 1;
9902
9903 /* Skip whitespace. */
9904 while (tok > arg && (*tok == ' ' || *tok == '\t'))
9905 tok--;
9906
9907 end_tok = tok;
9908
9909 /* Find the beginning of the second to last token.
9910 This is the parameter itself. */
9911 while (tok > arg && (*tok != ' ' && *tok != '\t'))
9912 tok--;
9913 tok++;
9914 toklen = end_tok - tok + 1;
9915
61012eef 9916 if (toklen == 6 && startswith (tok, "thread"))
9c06b0b4 9917 {
5d5658a1 9918 struct thread_info *thr;
9c06b0b4
TJB
9919 /* At this point we've found a "thread" token, which means
9920 the user is trying to set a watchpoint that triggers
9921 only in a specific thread. */
5d5658a1 9922 const char *endp;
37e4754d 9923
9c06b0b4
TJB
9924 if (thread != -1)
9925 error(_("You can specify only one thread."));
37e4754d 9926
9c06b0b4 9927 /* Extract the thread ID from the next token. */
5d5658a1 9928 thr = parse_thread_id (value_start, &endp);
37e4754d 9929
5d5658a1 9930 /* Check if the user provided a valid thread ID. */
9c06b0b4 9931 if (*endp != ' ' && *endp != '\t' && *endp != '\0')
5d5658a1 9932 invalid_thread_id_error (value_start);
9c06b0b4 9933
5d5658a1 9934 thread = thr->global_num;
9c06b0b4 9935 }
8a18382f
TT
9936 else if (toklen == 4 && startswith (tok, "task"))
9937 {
9938 char *tmp;
9939
9940 task = strtol (value_start, &tmp, 0);
9941 if (tmp == value_start)
9942 error (_("Junk after task keyword."));
9943 if (!valid_task_id (task))
9944 error (_("Unknown task %d."), task);
9945 }
61012eef 9946 else if (toklen == 4 && startswith (tok, "mask"))
9c06b0b4
TJB
9947 {
9948 /* We've found a "mask" token, which means the user wants to
9949 create a hardware watchpoint that is going to have the mask
9950 facility. */
9951 struct value *mask_value, *mark;
37e4754d 9952
9c06b0b4
TJB
9953 if (use_mask)
9954 error(_("You can specify only one mask."));
37e4754d 9955
2e362716 9956 use_mask = just_location = true;
37e4754d 9957
9c06b0b4
TJB
9958 mark = value_mark ();
9959 mask_value = parse_to_comma_and_eval (&value_start);
9960 mask = value_as_address (mask_value);
9961 value_free_to_mark (mark);
9962 }
9963 else
9964 /* We didn't recognize what we found. We should stop here. */
9965 break;
37e4754d 9966
9c06b0b4
TJB
9967 /* Truncate the string and get rid of the "parameter value" pair before
9968 the arguments string is parsed by the parse_exp_1 function. */
bbc13ae3 9969 exp_end = tok;
9c06b0b4 9970 }
37e4754d 9971 }
bbc13ae3
KS
9972 else
9973 exp_end = arg;
37e4754d 9974
bbc13ae3
KS
9975 /* Parse the rest of the arguments. From here on out, everything
9976 is in terms of a newly allocated string instead of the original
9977 ARG. */
81b1e71c
TT
9978 std::string expression (arg, exp_end - arg);
9979 exp_start = arg = expression.c_str ();
699bd4cf
TT
9980 innermost_block_tracker tracker;
9981 expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
c906108c 9982 exp_end = arg;
fa8a61dc
TT
9983 /* Remove trailing whitespace from the expression before saving it.
9984 This makes the eventual display of the expression string a bit
9985 prettier. */
9986 while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
9987 --exp_end;
9988
65d79d4b 9989 /* Checking if the expression is not constant. */
4d01a485 9990 if (watchpoint_exp_is_const (exp.get ()))
65d79d4b
SDJ
9991 {
9992 int len;
9993
9994 len = exp_end - exp_start;
9995 while (len > 0 && isspace (exp_start[len - 1]))
9996 len--;
9997 error (_("Cannot watch constant value `%.*s'."), len, exp_start);
9998 }
9999
699bd4cf 10000 exp_valid_block = tracker.block ();
b926417a 10001 struct value *mark = value_mark ();
850645cf 10002 struct value *val_as_value = nullptr;
1eaebe02
TT
10003 fetch_subexp_value (exp.get (), exp->op.get (), &val_as_value, &result, NULL,
10004 just_location);
06a64a0b 10005
850645cf 10006 if (val_as_value != NULL && just_location)
bb9d5f81 10007 {
850645cf
TT
10008 saved_bitpos = value_bitpos (val_as_value);
10009 saved_bitsize = value_bitsize (val_as_value);
bb9d5f81
PP
10010 }
10011
850645cf 10012 value_ref_ptr val;
06a64a0b
TT
10013 if (just_location)
10014 {
9c06b0b4
TJB
10015 int ret;
10016
06a64a0b 10017 exp_valid_block = NULL;
850645cf 10018 val = release_value (value_addr (result));
06a64a0b 10019 value_free_to_mark (mark);
9c06b0b4
TJB
10020
10021 if (use_mask)
10022 {
850645cf 10023 ret = target_masked_watch_num_registers (value_as_address (val.get ()),
9c06b0b4
TJB
10024 mask);
10025 if (ret == -1)
10026 error (_("This target does not support masked watchpoints."));
10027 else if (ret == -2)
10028 error (_("Invalid mask or memory region."));
10029 }
06a64a0b 10030 }
850645cf
TT
10031 else if (val_as_value != NULL)
10032 val = release_value (val_as_value);
c906108c 10033
f1735a53
TT
10034 tok = skip_spaces (arg);
10035 end_tok = skip_to_space (tok);
c906108c
SS
10036
10037 toklen = end_tok - tok;
10038 if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10039 {
10040 tok = cond_start = end_tok + 1;
699bd4cf
TT
10041 innermost_block_tracker if_tracker;
10042 parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
60e1c644
PA
10043
10044 /* The watchpoint expression may not be local, but the condition
10045 may still be. E.g.: `watch global if local > 0'. */
699bd4cf 10046 cond_exp_valid_block = if_tracker.block ();
60e1c644 10047
c906108c
SS
10048 cond_end = tok;
10049 }
10050 if (*tok)
8a3fe4f8 10051 error (_("Junk at end of command."));
c906108c 10052
441d7c93
PA
10053 frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10054
10055 /* Save this because create_internal_breakpoint below invalidates
10056 'wp_frame'. */
10057 frame_id watchpoint_frame = get_frame_id (wp_frame);
d983da9c
DJ
10058
10059 /* If the expression is "local", then set up a "watchpoint scope"
10060 breakpoint at the point where we've left the scope of the watchpoint
10061 expression. Create the scope breakpoint before the watchpoint, so
10062 that we will encounter it first in bpstat_stop_status. */
441d7c93 10063 if (exp_valid_block != NULL && wp_frame != NULL)
d983da9c 10064 {
441d7c93
PA
10065 frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10066
10067 if (frame_id_p (caller_frame_id))
edb3359d 10068 {
441d7c93
PA
10069 gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10070 CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10071
24b21115 10072 scope_breakpoint
441d7c93 10073 = create_internal_breakpoint (caller_arch, caller_pc,
06edf0c0
PA
10074 bp_watchpoint_scope,
10075 &momentary_breakpoint_ops);
d983da9c 10076
441d7c93
PA
10077 /* create_internal_breakpoint could invalidate WP_FRAME. */
10078 wp_frame = NULL;
10079
edb3359d 10080 scope_breakpoint->enable_state = bp_enabled;
d983da9c 10081
edb3359d
DJ
10082 /* Automatically delete the breakpoint when it hits. */
10083 scope_breakpoint->disposition = disp_del;
d983da9c 10084
edb3359d 10085 /* Only break in the proper frame (help with recursion). */
441d7c93 10086 scope_breakpoint->frame_id = caller_frame_id;
d983da9c 10087
edb3359d 10088 /* Set the address at which we will stop. */
441d7c93
PA
10089 scope_breakpoint->loc->gdbarch = caller_arch;
10090 scope_breakpoint->loc->requested_address = caller_pc;
edb3359d 10091 scope_breakpoint->loc->address
a6d9a66e
UW
10092 = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10093 scope_breakpoint->loc->requested_address,
edb3359d
DJ
10094 scope_breakpoint->type);
10095 }
d983da9c
DJ
10096 }
10097
e8369a73
AB
10098 /* Now set up the breakpoint. We create all watchpoints as hardware
10099 watchpoints here even if hardware watchpoints are turned off, a call
10100 to update_watchpoint later in this function will cause the type to
10101 drop back to bp_watchpoint (software watchpoint) if required. */
10102
10103 if (accessflag == hw_read)
10104 bp_type = bp_read_watchpoint;
10105 else if (accessflag == hw_access)
10106 bp_type = bp_access_watchpoint;
10107 else
10108 bp_type = bp_hardware_watchpoint;
3a5c3e22 10109
3a292923 10110 std::unique_ptr<watchpoint> w;
348d480f 10111 if (use_mask)
3a292923 10112 w.reset (new masked_watchpoint ());
348d480f 10113 else
3a292923
TT
10114 w.reset (new watchpoint ());
10115 init_raw_breakpoint_without_location (w.get (), nullptr, bp_type,
10116 &vtable_breakpoint_ops);
10117
c1fc2657 10118 w->thread = thread;
8a18382f 10119 w->task = task;
c1fc2657
SM
10120 w->disposition = disp_donttouch;
10121 w->pspace = current_program_space;
b22e99fd 10122 w->exp = std::move (exp);
3a5c3e22
PA
10123 w->exp_valid_block = exp_valid_block;
10124 w->cond_exp_valid_block = cond_exp_valid_block;
06a64a0b
TT
10125 if (just_location)
10126 {
850645cf
TT
10127 struct type *t = value_type (val.get ());
10128 CORE_ADDR addr = value_as_address (val.get ());
06a64a0b 10129
43cc5389 10130 w->exp_string_reparse
a4c50be3 10131 = current_language->watch_location_expression (t, addr);
06a64a0b 10132
8579fd13
AB
10133 w->exp_string = xstrprintf ("-location %.*s",
10134 (int) (exp_end - exp_start), exp_start);
06a64a0b
TT
10135 }
10136 else
a4c50be3 10137 w->exp_string.reset (savestring (exp_start, exp_end - exp_start));
9c06b0b4
TJB
10138
10139 if (use_mask)
10140 {
3a5c3e22 10141 w->hw_wp_mask = mask;
9c06b0b4
TJB
10142 }
10143 else
10144 {
3a5c3e22 10145 w->val = val;
bb9d5f81
PP
10146 w->val_bitpos = saved_bitpos;
10147 w->val_bitsize = saved_bitsize;
4c1d86d9 10148 w->val_valid = true;
9c06b0b4 10149 }
77b06cd7 10150
c906108c 10151 if (cond_start)
6f781ee3 10152 w->cond_string.reset (savestring (cond_start, cond_end - cond_start));
c906108c 10153 else
c1fc2657 10154 w->cond_string = 0;
c5aa993b 10155
441d7c93 10156 if (frame_id_p (watchpoint_frame))
f6bc2008 10157 {
441d7c93 10158 w->watchpoint_frame = watchpoint_frame;
3a5c3e22 10159 w->watchpoint_thread = inferior_ptid;
f6bc2008 10160 }
c906108c 10161 else
f6bc2008 10162 {
3a5c3e22
PA
10163 w->watchpoint_frame = null_frame_id;
10164 w->watchpoint_thread = null_ptid;
f6bc2008 10165 }
c906108c 10166
d983da9c 10167 if (scope_breakpoint != NULL)
c906108c 10168 {
d983da9c
DJ
10169 /* The scope breakpoint is related to the watchpoint. We will
10170 need to act on them together. */
c1fc2657 10171 w->related_breakpoint = scope_breakpoint;
b270e6f9 10172 scope_breakpoint->related_breakpoint = w.get ();
c906108c 10173 }
d983da9c 10174
06a64a0b
TT
10175 if (!just_location)
10176 value_free_to_mark (mark);
2d134ed3 10177
b270e6f9
TT
10178 /* Finally update the new watchpoint. This creates the locations
10179 that should be inserted. */
10180 update_watchpoint (w.get (), 1);
a9634178 10181
b270e6f9 10182 install_breakpoint (internal, std::move (w), 1);
c906108c
SS
10183}
10184
e09342b5 10185/* Return count of debug registers needed to watch the given expression.
e09342b5 10186 If the watchpoint cannot be handled in hardware return zero. */
c906108c 10187
c906108c 10188static int
a6535de1 10189can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
c906108c
SS
10190{
10191 int found_memory_cnt = 0;
10192
10193 /* Did the user specifically forbid us to use hardware watchpoints? */
c5aa993b 10194 if (!can_use_hw_watchpoints)
c906108c 10195 return 0;
c5aa993b 10196
a6535de1
TT
10197 gdb_assert (!vals.empty ());
10198 struct value *head = vals[0].get ();
10199
5c44784c
JM
10200 /* Make sure that the value of the expression depends only upon
10201 memory contents, and values computed from them within GDB. If we
10202 find any register references or function calls, we can't use a
10203 hardware watchpoint.
10204
10205 The idea here is that evaluating an expression generates a series
10206 of values, one holding the value of every subexpression. (The
10207 expression a*b+c has five subexpressions: a, b, a*b, c, and
10208 a*b+c.) GDB's values hold almost enough information to establish
10209 the criteria given above --- they identify memory lvalues,
10210 register lvalues, computed values, etcetera. So we can evaluate
10211 the expression, and then scan the chain of values that leaves
10212 behind to decide whether we can detect any possible change to the
10213 expression's final value using only hardware watchpoints.
10214
10215 However, I don't think that the values returned by inferior
10216 function calls are special in any way. So this function may not
10217 notice that an expression involving an inferior function call
10218 can't be watched with hardware watchpoints. FIXME. */
a6535de1 10219 for (const value_ref_ptr &iter : vals)
c906108c 10220 {
a6535de1
TT
10221 struct value *v = iter.get ();
10222
5c44784c 10223 if (VALUE_LVAL (v) == lval_memory)
c906108c 10224 {
8464be76
DJ
10225 if (v != head && value_lazy (v))
10226 /* A lazy memory lvalue in the chain is one that GDB never
10227 needed to fetch; we either just used its address (e.g.,
10228 `a' in `a.b') or we never needed it at all (e.g., `a'
10229 in `a,b'). This doesn't apply to HEAD; if that is
10230 lazy then it was not readable, but watch it anyway. */
5c44784c 10231 ;
53a5351d 10232 else
5c44784c
JM
10233 {
10234 /* Ahh, memory we actually used! Check if we can cover
dda83cd7 10235 it with hardware watchpoints. */
df407dfe 10236 struct type *vtype = check_typedef (value_type (v));
2e70b7b9
MS
10237
10238 /* We only watch structs and arrays if user asked for it
10239 explicitly, never if they just happen to appear in a
10240 middle of some value chain. */
10241 if (v == head
78134374
SM
10242 || (vtype->code () != TYPE_CODE_STRUCT
10243 && vtype->code () != TYPE_CODE_ARRAY))
2e70b7b9 10244 {
42ae5230 10245 CORE_ADDR vaddr = value_address (v);
e09342b5
TJB
10246 int len;
10247 int num_regs;
10248
a9634178 10249 len = (target_exact_watchpoints
e09342b5
TJB
10250 && is_scalar_type_recursive (vtype))?
10251 1 : TYPE_LENGTH (value_type (v));
2e70b7b9 10252
e09342b5
TJB
10253 num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10254 if (!num_regs)
2e70b7b9
MS
10255 return 0;
10256 else
e09342b5 10257 found_memory_cnt += num_regs;
2e70b7b9 10258 }
5c44784c 10259 }
c5aa993b 10260 }
5086187c
AC
10261 else if (VALUE_LVAL (v) != not_lval
10262 && deprecated_value_modifiable (v) == 0)
38b6c3b3 10263 return 0; /* These are values from the history (e.g., $1). */
5086187c 10264 else if (VALUE_LVAL (v) == lval_register)
38b6c3b3 10265 return 0; /* Cannot watch a register with a HW watchpoint. */
c906108c
SS
10266 }
10267
10268 /* The expression itself looks suitable for using a hardware
10269 watchpoint, but give the target machine a chance to reject it. */
10270 return found_memory_cnt;
10271}
10272
8b93c638 10273void
2e362716 10274watch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 10275{
84f4c1fe 10276 watch_command_1 (arg, hw_write, from_tty, 0, internal);
06a64a0b
TT
10277}
10278
a15a5258
AB
10279/* Options for the watch, awatch, and rwatch commands. */
10280
10281struct watch_options
10282{
10283 /* For -location. */
10284 bool location = false;
10285};
10286
10287/* Definitions of options for the "watch", "awatch", and "rwatch" commands.
10288
10289 Historically GDB always accepted both '-location' and '-l' flags for
10290 these commands (both flags being synonyms). When converting to the
10291 newer option scheme only '-location' is added here. That's fine (for
10292 backward compatibility) as any non-ambiguous prefix of a flag will be
10293 accepted, so '-l', '-loc', are now all accepted.
10294
10295 What this means is that, if in the future, we add any new flag here
10296 that starts with '-l' then this will break backward compatibility, so
10297 please, don't do that! */
10298
10299static const gdb::option::option_def watch_option_defs[] = {
10300 gdb::option::flag_option_def<watch_options> {
10301 "location",
10302 [] (watch_options *opt) { return &opt->location; },
10303 N_("\
10304This evaluates EXPRESSION and watches the memory to which is refers.\n\
10305-l can be used as a short form of -location."),
10306 },
10307};
10308
10309/* Returns the option group used by 'watch', 'awatch', and 'rwatch'
10310 commands. */
10311
10312static gdb::option::option_def_group
10313make_watch_options_def_group (watch_options *opts)
10314{
10315 return {{watch_option_defs}, opts};
10316}
10317
06a64a0b
TT
10318/* A helper function that looks for the "-location" argument and then
10319 calls watch_command_1. */
10320
10321static void
0b39b52e 10322watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
06a64a0b 10323{
a15a5258
AB
10324 watch_options opts;
10325 auto grp = make_watch_options_def_group (&opts);
10326 gdb::option::process_options
10327 (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
10328 if (arg != nullptr && *arg == '\0')
10329 arg = nullptr;
10330
10331 watch_command_1 (arg, accessflag, from_tty, opts.location, false);
10332}
06a64a0b 10333
a15a5258
AB
10334/* Command completion for 'watch', 'awatch', and 'rwatch' commands. */
10335static void
10336watch_command_completer (struct cmd_list_element *ignore,
10337 completion_tracker &tracker,
10338 const char *text, const char * /*word*/)
10339{
10340 const auto group = make_watch_options_def_group (nullptr);
10341 if (gdb::option::complete_options
10342 (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
10343 return;
06a64a0b 10344
a15a5258
AB
10345 const char *word = advance_to_expression_complete_word_point (tracker, text);
10346 expression_completer (ignore, tracker, text, word);
8b93c638 10347}
8926118c 10348
c5aa993b 10349static void
0b39b52e 10350watch_command (const char *arg, int from_tty)
c906108c 10351{
06a64a0b 10352 watch_maybe_just_location (arg, hw_write, from_tty);
c906108c
SS
10353}
10354
8b93c638 10355void
2e362716 10356rwatch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 10357{
84f4c1fe 10358 watch_command_1 (arg, hw_read, from_tty, 0, internal);
8b93c638 10359}
8926118c 10360
c5aa993b 10361static void
0b39b52e 10362rwatch_command (const char *arg, int from_tty)
c906108c 10363{
06a64a0b 10364 watch_maybe_just_location (arg, hw_read, from_tty);
c906108c
SS
10365}
10366
8b93c638 10367void
2e362716 10368awatch_command_wrapper (const char *arg, int from_tty, bool internal)
8b93c638 10369{
84f4c1fe 10370 watch_command_1 (arg, hw_access, from_tty, 0, internal);
8b93c638 10371}
8926118c 10372
c5aa993b 10373static void
0b39b52e 10374awatch_command (const char *arg, int from_tty)
c906108c 10375{
06a64a0b 10376 watch_maybe_just_location (arg, hw_access, from_tty);
c906108c 10377}
c906108c 10378\f
c5aa993b 10379
cfc31633
PA
10380/* Data for the FSM that manages the until(location)/advance commands
10381 in infcmd.c. Here because it uses the mechanisms of
10382 breakpoints. */
c906108c 10383
46e3ed7f 10384struct until_break_fsm : public thread_fsm
bfec99b2 10385{
46e3ed7f 10386 /* The thread that was current when the command was executed. */
cfc31633
PA
10387 int thread;
10388
df631783
PA
10389 /* The breakpoint set at the return address in the caller frame,
10390 plus breakpoints at all the destination locations. */
10391 std::vector<breakpoint_up> breakpoints;
cfc31633 10392
46e3ed7f 10393 until_break_fsm (struct interp *cmd_interp, int thread,
df631783 10394 std::vector<breakpoint_up> &&breakpoints)
46e3ed7f
TT
10395 : thread_fsm (cmd_interp),
10396 thread (thread),
df631783 10397 breakpoints (std::move (breakpoints))
46e3ed7f
TT
10398 {
10399 }
cfc31633 10400
46e3ed7f
TT
10401 void clean_up (struct thread_info *thread) override;
10402 bool should_stop (struct thread_info *thread) override;
10403 enum async_reply_reason do_async_reply_reason () override;
cfc31633
PA
10404};
10405
cfc31633
PA
10406/* Implementation of the 'should_stop' FSM method for the
10407 until(location)/advance commands. */
10408
46e3ed7f
TT
10409bool
10410until_break_fsm::should_stop (struct thread_info *tp)
cfc31633 10411{
df631783
PA
10412 for (const breakpoint_up &bp : breakpoints)
10413 if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10414 bp.get ()) != NULL)
10415 {
10416 set_finished ();
10417 break;
10418 }
cfc31633 10419
46e3ed7f 10420 return true;
cfc31633
PA
10421}
10422
10423/* Implementation of the 'clean_up' FSM method for the
10424 until(location)/advance commands. */
10425
46e3ed7f
TT
10426void
10427until_break_fsm::clean_up (struct thread_info *)
43ff13b4 10428{
cfc31633 10429 /* Clean up our temporary breakpoints. */
df631783 10430 breakpoints.clear ();
46e3ed7f 10431 delete_longjmp_breakpoint (thread);
cfc31633
PA
10432}
10433
10434/* Implementation of the 'async_reply_reason' FSM method for the
10435 until(location)/advance commands. */
10436
46e3ed7f
TT
10437enum async_reply_reason
10438until_break_fsm::do_async_reply_reason ()
cfc31633
PA
10439{
10440 return EXEC_ASYNC_LOCATION_REACHED;
43ff13b4
JM
10441}
10442
c906108c 10443void
f2fc3015 10444until_break_command (const char *arg, int from_tty, int anywhere)
c906108c 10445{
8556afb4
PA
10446 struct frame_info *frame;
10447 struct gdbarch *frame_gdbarch;
10448 struct frame_id stack_frame_id;
10449 struct frame_id caller_frame_id;
186c406b
TT
10450 int thread;
10451 struct thread_info *tp;
c906108c 10452
70509625 10453 clear_proceed_status (0);
c906108c
SS
10454
10455 /* Set a breakpoint where the user wants it and at return from
4a64f543 10456 this function. */
c5aa993b 10457
ffc2605c 10458 event_location_up location = string_to_event_location (&arg, current_language);
f00aae0f 10459
6c5b2ebe
PA
10460 std::vector<symtab_and_line> sals
10461 = (last_displayed_sal_is_valid ()
10462 ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10463 get_last_displayed_symtab (),
10464 get_last_displayed_line ())
10465 : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
cafb3438 10466 NULL, NULL, 0));
c5aa993b 10467
df631783 10468 if (sals.empty ())
8a3fe4f8 10469 error (_("Couldn't get information on specified line."));
c5aa993b 10470
c906108c 10471 if (*arg)
8a3fe4f8 10472 error (_("Junk at end of arguments."));
c5aa993b 10473
186c406b 10474 tp = inferior_thread ();
5d5658a1 10475 thread = tp->global_num;
186c406b 10476
8556afb4
PA
10477 /* Note linespec handling above invalidates the frame chain.
10478 Installing a breakpoint also invalidates the frame chain (as it
10479 may need to switch threads), so do any frame handling before
10480 that. */
10481
10482 frame = get_selected_frame (NULL);
10483 frame_gdbarch = get_frame_arch (frame);
10484 stack_frame_id = get_stack_frame_id (frame);
10485 caller_frame_id = frame_unwind_caller_id (frame);
883bc8d1 10486
ae66c1fc
EZ
10487 /* Keep within the current frame, or in frames called by the current
10488 one. */
edb3359d 10489
df631783 10490 std::vector<breakpoint_up> breakpoints;
5419bdae
TT
10491
10492 gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
10493
883bc8d1 10494 if (frame_id_p (caller_frame_id))
c906108c 10495 {
883bc8d1 10496 struct symtab_and_line sal2;
cfc31633 10497 struct gdbarch *caller_gdbarch;
883bc8d1
PA
10498
10499 sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10500 sal2.pc = frame_unwind_caller_pc (frame);
cfc31633 10501 caller_gdbarch = frame_unwind_caller_arch (frame);
df631783
PA
10502
10503 breakpoint_up caller_breakpoint
10504 = set_momentary_breakpoint (caller_gdbarch, sal2,
10505 caller_frame_id, bp_until);
10506 breakpoints.emplace_back (std::move (caller_breakpoint));
186c406b 10507
883bc8d1 10508 set_longjmp_breakpoint (tp, caller_frame_id);
5419bdae 10509 lj_deleter.emplace (thread);
c906108c 10510 }
c5aa993b 10511
c70a6932
JK
10512 /* set_momentary_breakpoint could invalidate FRAME. */
10513 frame = NULL;
10514
df631783
PA
10515 /* If the user told us to continue until a specified location, we
10516 don't specify a frame at which we need to stop. Otherwise,
10517 specify the selected frame, because we want to stop only at the
10518 very same frame. */
10519 frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
10520
10521 for (symtab_and_line &sal : sals)
10522 {
10523 resolve_sal_pc (&sal);
10524
10525 breakpoint_up location_breakpoint
10526 = set_momentary_breakpoint (frame_gdbarch, sal,
10527 stop_frame_id, bp_until);
10528 breakpoints.emplace_back (std::move (location_breakpoint));
10529 }
883bc8d1 10530
573269a8
LS
10531 tp->set_thread_fsm
10532 (std::unique_ptr<thread_fsm>
10533 (new until_break_fsm (command_interp (), tp->global_num,
10534 std::move (breakpoints))));
f107f563 10535
5419bdae
TT
10536 if (lj_deleter)
10537 lj_deleter->release ();
f107f563 10538
cfc31633 10539 proceed (-1, GDB_SIGNAL_DEFAULT);
c906108c 10540}
ae66c1fc 10541
9ac4176b 10542void
28010a5d
PA
10543init_ada_exception_breakpoint (struct breakpoint *b,
10544 struct gdbarch *gdbarch,
10545 struct symtab_and_line sal,
f2fc3015 10546 const char *addr_string,
c0a91b2b 10547 const struct breakpoint_ops *ops,
28010a5d 10548 int tempflag,
349774ef 10549 int enabled,
28010a5d 10550 int from_tty)
f7f9143b 10551{
f7f9143b
JB
10552 if (from_tty)
10553 {
5af949e3
UW
10554 struct gdbarch *loc_gdbarch = get_sal_arch (sal);
10555 if (!loc_gdbarch)
10556 loc_gdbarch = gdbarch;
10557
6c95b8df
PA
10558 describe_other_breakpoints (loc_gdbarch,
10559 sal.pspace, sal.pc, sal.section, -1);
f7f9143b 10560 /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
dda83cd7
SM
10561 version for exception catchpoints, because two catchpoints
10562 used for different exception names will use the same address.
10563 In this case, a "breakpoint ... also set at..." warning is
10564 unproductive. Besides, the warning phrasing is also a bit
10565 inappropriate, we should use the word catchpoint, and tell
10566 the user what type of catchpoint it is. The above is good
10567 enough for now, though. */
f7f9143b
JB
10568 }
10569
f06f1252 10570 init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
f7f9143b 10571
349774ef 10572 b->enable_state = enabled ? bp_enabled : bp_disabled;
f7f9143b 10573 b->disposition = tempflag ? disp_del : disp_donttouch;
d28cd78a
TT
10574 b->location = string_to_event_location (&addr_string,
10575 language_def (language_ada));
f7f9143b 10576 b->language = language_ada;
f7f9143b
JB
10577}
10578
c906108c
SS
10579\f
10580
81b1e71c 10581/* Compare two breakpoints and return a strcmp-like result. */
8a2c437b
TT
10582
10583static int
81b1e71c 10584compare_breakpoints (const breakpoint *a, const breakpoint *b)
8a2c437b 10585{
81b1e71c
TT
10586 uintptr_t ua = (uintptr_t) a;
10587 uintptr_t ub = (uintptr_t) b;
8a2c437b 10588
81b1e71c 10589 if (a->number < b->number)
8a2c437b 10590 return -1;
81b1e71c 10591 else if (a->number > b->number)
8a2c437b
TT
10592 return 1;
10593
10594 /* Now sort by address, in case we see, e..g, two breakpoints with
10595 the number 0. */
10596 if (ua < ub)
10597 return -1;
94b0e70d 10598 return ua > ub ? 1 : 0;
8a2c437b
TT
10599}
10600
80f8a6eb 10601/* Delete breakpoints by address or line. */
c906108c
SS
10602
10603static void
0b39b52e 10604clear_command (const char *arg, int from_tty)
c906108c 10605{
c906108c 10606 int default_match;
c906108c 10607
6c5b2ebe
PA
10608 std::vector<symtab_and_line> decoded_sals;
10609 symtab_and_line last_sal;
10610 gdb::array_view<symtab_and_line> sals;
c906108c
SS
10611 if (arg)
10612 {
6c5b2ebe
PA
10613 decoded_sals
10614 = decode_line_with_current_source (arg,
10615 (DECODE_LINE_FUNFIRSTLINE
10616 | DECODE_LINE_LIST_MODE));
c906108c 10617 default_match = 0;
6c5b2ebe 10618 sals = decoded_sals;
c906108c
SS
10619 }
10620 else
10621 {
1bfeeb0f
JL
10622 /* Set sal's line, symtab, pc, and pspace to the values
10623 corresponding to the last call to print_frame_info. If the
10624 codepoint is not valid, this will set all the fields to 0. */
51abb421 10625 last_sal = get_last_displayed_sal ();
6c5b2ebe 10626 if (last_sal.symtab == 0)
8a3fe4f8 10627 error (_("No source file specified."));
c906108c 10628
c906108c 10629 default_match = 1;
6c5b2ebe 10630 sals = last_sal;
c906108c
SS
10631 }
10632
4a64f543
MS
10633 /* We don't call resolve_sal_pc here. That's not as bad as it
10634 seems, because all existing breakpoints typically have both
10635 file/line and pc set. So, if clear is given file/line, we can
10636 match this to existing breakpoint without obtaining pc at all.
ed0616c6
VP
10637
10638 We only support clearing given the address explicitly
10639 present in breakpoint table. Say, we've set breakpoint
4a64f543 10640 at file:line. There were several PC values for that file:line,
ed0616c6 10641 due to optimization, all in one block.
4a64f543
MS
10642
10643 We've picked one PC value. If "clear" is issued with another
ed0616c6
VP
10644 PC corresponding to the same file:line, the breakpoint won't
10645 be cleared. We probably can still clear the breakpoint, but
10646 since the other PC value is never presented to user, user
10647 can only find it by guessing, and it does not seem important
10648 to support that. */
10649
4a64f543
MS
10650 /* For each line spec given, delete bps which correspond to it. Do
10651 it in two passes, solely to preserve the current behavior that
10652 from_tty is forced true if we delete more than one
10653 breakpoint. */
c906108c 10654
81b1e71c 10655 std::vector<struct breakpoint *> found;
6c5b2ebe 10656 for (const auto &sal : sals)
c906108c 10657 {
05cba821
JK
10658 const char *sal_fullname;
10659
c906108c 10660 /* If exact pc given, clear bpts at that pc.
dda83cd7
SM
10661 If line given (pc == 0), clear all bpts on specified line.
10662 If defaulting, clear all bpts on default line
10663 or at default pc.
c5aa993b 10664
dda83cd7 10665 defaulting sal.pc != 0 tests to do
c5aa993b 10666
dda83cd7
SM
10667 0 1 pc
10668 1 1 pc _and_ line
10669 0 0 line
10670 1 0 <can't happen> */
c906108c 10671
05cba821
JK
10672 sal_fullname = (sal.symtab == NULL
10673 ? NULL : symtab_to_fullname (sal.symtab));
c906108c 10674
4a64f543 10675 /* Find all matching breakpoints and add them to 'found'. */
43892fdf 10676 for (breakpoint *b : all_breakpoints ())
c5aa993b 10677 {
0d381245 10678 int match = 0;
4a64f543 10679 /* Are we going to delete b? */
a5c69b1e
EL
10680 if (b->type != bp_none && !is_watchpoint (b)
10681 && user_breakpoint_p (b))
0d381245 10682 {
40cb8ca5 10683 for (bp_location *loc : b->locations ())
0d381245 10684 {
f8eba3c6
TT
10685 /* If the user specified file:line, don't allow a PC
10686 match. This matches historical gdb behavior. */
10687 int pc_match = (!sal.explicit_line
10688 && sal.pc
10689 && (loc->pspace == sal.pspace)
10690 && (loc->address == sal.pc)
10691 && (!section_is_overlay (loc->section)
10692 || loc->section == sal.section));
4aac40c8
TT
10693 int line_match = 0;
10694
10695 if ((default_match || sal.explicit_line)
2f202fde 10696 && loc->symtab != NULL
05cba821 10697 && sal_fullname != NULL
4aac40c8 10698 && sal.pspace == loc->pspace
05cba821
JK
10699 && loc->line_number == sal.line
10700 && filename_cmp (symtab_to_fullname (loc->symtab),
10701 sal_fullname) == 0)
10702 line_match = 1;
4aac40c8 10703
0d381245
VP
10704 if (pc_match || line_match)
10705 {
10706 match = 1;
10707 break;
10708 }
10709 }
10710 }
10711
10712 if (match)
81b1e71c 10713 found.push_back (b);
c906108c 10714 }
80f8a6eb 10715 }
8a2c437b 10716
80f8a6eb 10717 /* Now go thru the 'found' chain and delete them. */
81b1e71c 10718 if (found.empty ())
80f8a6eb
MS
10719 {
10720 if (arg)
8a3fe4f8 10721 error (_("No breakpoint at %s."), arg);
80f8a6eb 10722 else
8a3fe4f8 10723 error (_("No breakpoint at this line."));
80f8a6eb 10724 }
c906108c 10725
8a2c437b 10726 /* Remove duplicates from the vec. */
81b1e71c 10727 std::sort (found.begin (), found.end (),
b926417a 10728 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 10729 {
b926417a 10730 return compare_breakpoints (bp_a, bp_b) < 0;
81b1e71c
TT
10731 });
10732 found.erase (std::unique (found.begin (), found.end (),
b926417a 10733 [] (const breakpoint *bp_a, const breakpoint *bp_b)
81b1e71c 10734 {
b926417a 10735 return compare_breakpoints (bp_a, bp_b) == 0;
81b1e71c
TT
10736 }),
10737 found.end ());
8a2c437b 10738
81b1e71c 10739 if (found.size () > 1)
4a64f543 10740 from_tty = 1; /* Always report if deleted more than one. */
80f8a6eb 10741 if (from_tty)
a3f17187 10742 {
81b1e71c 10743 if (found.size () == 1)
6cb06a8c 10744 gdb_printf (_("Deleted breakpoint "));
a3f17187 10745 else
6cb06a8c 10746 gdb_printf (_("Deleted breakpoints "));
a3f17187 10747 }
d6e956e5 10748
81b1e71c 10749 for (breakpoint *iter : found)
80f8a6eb 10750 {
c5aa993b 10751 if (from_tty)
6cb06a8c 10752 gdb_printf ("%d ", iter->number);
81b1e71c 10753 delete_breakpoint (iter);
c906108c 10754 }
80f8a6eb 10755 if (from_tty)
a11ac3b3 10756 gdb_putc ('\n');
c906108c
SS
10757}
10758\f
10759/* Delete breakpoint in BS if they are `delete' breakpoints and
10760 all breakpoints that are marked for deletion, whether hit or not.
10761 This is called after any breakpoint is hit, or after errors. */
10762
10763void
313f3b21 10764breakpoint_auto_delete (bpstat *bs)
c906108c 10765{
c906108c 10766 for (; bs; bs = bs->next)
f431efe5
PA
10767 if (bs->breakpoint_at
10768 && bs->breakpoint_at->disposition == disp_del
c906108c 10769 && bs->stop)
f431efe5 10770 delete_breakpoint (bs->breakpoint_at);
c906108c 10771
1428b37a 10772 for (breakpoint *b : all_breakpoints_safe ())
b5de0fa7 10773 if (b->disposition == disp_del_at_next_stop)
c5aa993b 10774 delete_breakpoint (b);
c906108c
SS
10775}
10776
4a64f543 10777/* A comparison function for bp_location AP and BP being interfaced to
39ef2f62 10778 std::sort. Sort elements primarily by their ADDRESS (no matter what
cb1e4e32
PA
10779 bl_address_is_meaningful says), secondarily by ordering first
10780 permanent elements and terciarily just ensuring the array is sorted
39ef2f62 10781 stable way despite std::sort being an unstable algorithm. */
876fa593
JK
10782
10783static int
39ef2f62 10784bp_location_is_less_than (const bp_location *a, const bp_location *b)
876fa593 10785{
876fa593 10786 if (a->address != b->address)
39ef2f62 10787 return a->address < b->address;
876fa593 10788
dea2aa5f
LM
10789 /* Sort locations at the same address by their pspace number, keeping
10790 locations of the same inferior (in a multi-inferior environment)
10791 grouped. */
10792
10793 if (a->pspace->num != b->pspace->num)
39ef2f62 10794 return a->pspace->num < b->pspace->num;
dea2aa5f 10795
876fa593 10796 /* Sort permanent breakpoints first. */
1a853c52 10797 if (a->permanent != b->permanent)
39ef2f62 10798 return a->permanent > b->permanent;
876fa593 10799
7f32a4d5
PA
10800 /* Sort by type in order to make duplicate determination easier.
10801 See update_global_location_list. This is kept in sync with
10802 breakpoint_locations_match. */
10803 if (a->loc_type < b->loc_type)
10804 return true;
10805
10806 /* Likewise, for range-breakpoints, sort by length. */
10807 if (a->loc_type == bp_loc_hardware_breakpoint
10808 && b->loc_type == bp_loc_hardware_breakpoint
10809 && a->length < b->length)
10810 return true;
10811
c56a97f9
JK
10812 /* Make the internal GDB representation stable across GDB runs
10813 where A and B memory inside GDB can differ. Breakpoint locations of
10814 the same type at the same address can be sorted in arbitrary order. */
876fa593
JK
10815
10816 if (a->owner->number != b->owner->number)
39ef2f62 10817 return a->owner->number < b->owner->number;
876fa593 10818
39ef2f62 10819 return a < b;
876fa593
JK
10820}
10821
f5336ca5
PA
10822/* Set bp_locations_placed_address_before_address_max and
10823 bp_locations_shadow_len_after_address_max according to the current
10824 content of the bp_locations array. */
f7545552
TT
10825
10826static void
f5336ca5 10827bp_locations_target_extensions_update (void)
f7545552 10828{
f5336ca5
PA
10829 bp_locations_placed_address_before_address_max = 0;
10830 bp_locations_shadow_len_after_address_max = 0;
876fa593 10831
48d7020b 10832 for (bp_location *bl : all_bp_locations ())
876fa593
JK
10833 {
10834 CORE_ADDR start, end, addr;
10835
10836 if (!bp_location_has_shadow (bl))
10837 continue;
10838
10839 start = bl->target_info.placed_address;
10840 end = start + bl->target_info.shadow_len;
10841
10842 gdb_assert (bl->address >= start);
10843 addr = bl->address - start;
f5336ca5
PA
10844 if (addr > bp_locations_placed_address_before_address_max)
10845 bp_locations_placed_address_before_address_max = addr;
876fa593
JK
10846
10847 /* Zero SHADOW_LEN would not pass bp_location_has_shadow. */
10848
10849 gdb_assert (bl->address < end);
10850 addr = end - bl->address;
f5336ca5
PA
10851 if (addr > bp_locations_shadow_len_after_address_max)
10852 bp_locations_shadow_len_after_address_max = addr;
876fa593 10853 }
f7545552
TT
10854}
10855
1e4d1764
YQ
10856/* Download tracepoint locations if they haven't been. */
10857
10858static void
10859download_tracepoint_locations (void)
10860{
dd2e65cc 10861 enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
1e4d1764 10862
5ed8105e 10863 scoped_restore_current_pspace_and_thread restore_pspace_thread;
1e4d1764 10864
f6d17b2b 10865 for (breakpoint *b : all_tracepoints ())
1e4d1764
YQ
10866 {
10867 struct tracepoint *t;
f2a8bc8a 10868 int bp_location_downloaded = 0;
1e4d1764 10869
7ed2c994 10870 if ((b->type == bp_fast_tracepoint
1e4d1764
YQ
10871 ? !may_insert_fast_tracepoints
10872 : !may_insert_tracepoints))
10873 continue;
10874
dd2e65cc
YQ
10875 if (can_download_tracepoint == TRIBOOL_UNKNOWN)
10876 {
10877 if (target_can_download_tracepoint ())
10878 can_download_tracepoint = TRIBOOL_TRUE;
10879 else
10880 can_download_tracepoint = TRIBOOL_FALSE;
10881 }
10882
10883 if (can_download_tracepoint == TRIBOOL_FALSE)
10884 break;
10885
40cb8ca5 10886 for (bp_location *bl : b->locations ())
7ed2c994
YQ
10887 {
10888 /* In tracepoint, locations are _never_ duplicated, so
10889 should_be_inserted is equivalent to
10890 unduplicated_should_be_inserted. */
10891 if (!should_be_inserted (bl) || bl->inserted)
10892 continue;
1e4d1764 10893
7ed2c994 10894 switch_to_program_space_and_thread (bl->pspace);
1e4d1764 10895
7ed2c994 10896 target_download_tracepoint (bl);
1e4d1764 10897
7ed2c994 10898 bl->inserted = 1;
f2a8bc8a 10899 bp_location_downloaded = 1;
7ed2c994
YQ
10900 }
10901 t = (struct tracepoint *) b;
10902 t->number_on_target = b->number;
f2a8bc8a 10903 if (bp_location_downloaded)
76727919 10904 gdb::observers::breakpoint_modified.notify (b);
1e4d1764 10905 }
1e4d1764
YQ
10906}
10907
934709f0
PW
10908/* Swap the insertion/duplication state between two locations. */
10909
10910static void
10911swap_insertion (struct bp_location *left, struct bp_location *right)
10912{
10913 const int left_inserted = left->inserted;
10914 const int left_duplicate = left->duplicate;
b775012e 10915 const int left_needs_update = left->needs_update;
934709f0
PW
10916 const struct bp_target_info left_target_info = left->target_info;
10917
1e4d1764
YQ
10918 /* Locations of tracepoints can never be duplicated. */
10919 if (is_tracepoint (left->owner))
10920 gdb_assert (!left->duplicate);
10921 if (is_tracepoint (right->owner))
10922 gdb_assert (!right->duplicate);
10923
934709f0
PW
10924 left->inserted = right->inserted;
10925 left->duplicate = right->duplicate;
b775012e 10926 left->needs_update = right->needs_update;
934709f0
PW
10927 left->target_info = right->target_info;
10928 right->inserted = left_inserted;
10929 right->duplicate = left_duplicate;
b775012e 10930 right->needs_update = left_needs_update;
934709f0
PW
10931 right->target_info = left_target_info;
10932}
10933
b775012e
LM
10934/* Force the re-insertion of the locations at ADDRESS. This is called
10935 once a new/deleted/modified duplicate location is found and we are evaluating
10936 conditions on the target's side. Such conditions need to be updated on
10937 the target. */
10938
10939static void
10940force_breakpoint_reinsertion (struct bp_location *bl)
10941{
b775012e
LM
10942 CORE_ADDR address = 0;
10943 int pspace_num;
10944
10945 address = bl->address;
10946 pspace_num = bl->pspace->num;
10947
10948 /* This is only meaningful if the target is
10949 evaluating conditions and if the user has
10950 opted for condition evaluation on the target's
10951 side. */
10952 if (gdb_evaluates_breakpoint_condition_p ()
10953 || !target_supports_evaluation_of_breakpoint_conditions ())
10954 return;
10955
10956 /* Flag all breakpoint locations with this address and
10957 the same program space as the location
10958 as "its condition has changed". We need to
10959 update the conditions on the target's side. */
e0d9a270 10960 for (bp_location *loc : all_bp_locations_at_addr (address))
b775012e 10961 {
b775012e
LM
10962 if (!is_breakpoint (loc->owner)
10963 || pspace_num != loc->pspace->num)
10964 continue;
10965
10966 /* Flag the location appropriately. We use a different state to
10967 let everyone know that we already updated the set of locations
10968 with addr bl->address and program space bl->pspace. This is so
10969 we don't have to keep calling these functions just to mark locations
10970 that have already been marked. */
10971 loc->condition_changed = condition_updated;
10972
10973 /* Free the agent expression bytecode as well. We will compute
10974 it later on. */
833177a4 10975 loc->cond_bytecode.reset ();
b775012e
LM
10976 }
10977}
7f32a4d5 10978
44702360
PA
10979/* Called whether new breakpoints are created, or existing breakpoints
10980 deleted, to update the global location list and recompute which
10981 locations are duplicate of which.
b775012e 10982
04086b45
PA
10983 The INSERT_MODE flag determines whether locations may not, may, or
10984 shall be inserted now. See 'enum ugll_insert_mode' for more
10985 info. */
b60e7edf 10986
0d381245 10987static void
44702360 10988update_global_location_list (enum ugll_insert_mode insert_mode)
0d381245 10989{
b775012e
LM
10990 /* Last breakpoint location address that was marked for update. */
10991 CORE_ADDR last_addr = 0;
10992 /* Last breakpoint location program space that was marked for update. */
10993 int last_pspace_num = -1;
f7545552 10994
2d134ed3
PA
10995 /* Used in the duplicates detection below. When iterating over all
10996 bp_locations, points to the first bp_location of a given address.
10997 Breakpoints and watchpoints of different types are never
10998 duplicates of each other. Keep one pointer for each type of
10999 breakpoint/watchpoint, so we only need to loop over all locations
11000 once. */
11001 struct bp_location *bp_loc_first; /* breakpoint */
11002 struct bp_location *wp_loc_first; /* hardware watchpoint */
11003 struct bp_location *awp_loc_first; /* access watchpoint */
11004 struct bp_location *rwp_loc_first; /* read watchpoint */
876fa593 11005
f5336ca5
PA
11006 /* Saved former bp_locations array which we compare against the newly
11007 built bp_locations from the current state of ALL_BREAKPOINTS. */
5d51cd5d
SM
11008 std::vector<bp_location *> old_locations = std::move (bp_locations);
11009 bp_locations.clear ();
876fa593 11010
43892fdf 11011 for (breakpoint *b : all_breakpoints ())
40cb8ca5 11012 for (bp_location *loc : b->locations ())
5d51cd5d 11013 bp_locations.push_back (loc);
7f32a4d5
PA
11014
11015 /* See if we need to "upgrade" a software breakpoint to a hardware
11016 breakpoint. Do this before deciding whether locations are
11017 duplicates. Also do this before sorting because sorting order
11018 depends on location type. */
5d51cd5d
SM
11019 for (bp_location *loc : bp_locations)
11020 if (!loc->inserted && should_be_inserted (loc))
7f32a4d5 11021 handle_automatic_hardware_breakpoints (loc);
7f32a4d5 11022
5d51cd5d 11023 std::sort (bp_locations.begin (), bp_locations.end (),
39ef2f62 11024 bp_location_is_less_than);
876fa593 11025
f5336ca5 11026 bp_locations_target_extensions_update ();
74960c60 11027
4a64f543
MS
11028 /* Identify bp_location instances that are no longer present in the
11029 new list, and therefore should be freed. Note that it's not
11030 necessary that those locations should be removed from inferior --
11031 if there's another location at the same address (previously
11032 marked as duplicate), we don't need to remove/insert the
11033 location.
876fa593 11034
4a64f543
MS
11035 LOCP is kept in sync with OLD_LOCP, each pointing to the current
11036 and former bp_location array state respectively. */
876fa593 11037
5d51cd5d
SM
11038 size_t loc_i = 0;
11039 for (bp_location *old_loc : old_locations)
74960c60 11040 {
e5dd4106 11041 /* Tells if 'old_loc' is found among the new locations. If
4a64f543 11042 not, we have to free it. */
c7d46a38 11043 int found_object = 0;
20874c92
VP
11044 /* Tells if the location should remain inserted in the target. */
11045 int keep_in_target = 0;
11046 int removed = 0;
876fa593 11047
4a64f543
MS
11048 /* Skip LOCP entries which will definitely never be needed.
11049 Stop either at or being the one matching OLD_LOC. */
5d51cd5d
SM
11050 while (loc_i < bp_locations.size ()
11051 && bp_locations[loc_i]->address < old_loc->address)
11052 loc_i++;
c7d46a38 11053
5d51cd5d
SM
11054 for (size_t loc2_i = loc_i;
11055 (loc2_i < bp_locations.size ()
11056 && bp_locations[loc2_i]->address == old_loc->address);
11057 loc2_i++)
c7d46a38 11058 {
b775012e
LM
11059 /* Check if this is a new/duplicated location or a duplicated
11060 location that had its condition modified. If so, we want to send
11061 its condition to the target if evaluation of conditions is taking
11062 place there. */
5d51cd5d 11063 if (bp_locations[loc2_i]->condition_changed == condition_modified
b775012e
LM
11064 && (last_addr != old_loc->address
11065 || last_pspace_num != old_loc->pspace->num))
c7d46a38 11066 {
5d51cd5d 11067 force_breakpoint_reinsertion (bp_locations[loc2_i]);
b775012e 11068 last_pspace_num = old_loc->pspace->num;
c7d46a38 11069 }
b775012e 11070
5d51cd5d 11071 if (bp_locations[loc2_i] == old_loc)
b775012e 11072 found_object = 1;
c7d46a38 11073 }
74960c60 11074
b775012e
LM
11075 /* We have already handled this address, update it so that we don't
11076 have to go through updates again. */
11077 last_addr = old_loc->address;
11078
11079 /* Target-side condition evaluation: Handle deleted locations. */
11080 if (!found_object)
11081 force_breakpoint_reinsertion (old_loc);
11082
4a64f543
MS
11083 /* If this location is no longer present, and inserted, look if
11084 there's maybe a new location at the same address. If so,
11085 mark that one inserted, and don't remove this one. This is
11086 needed so that we don't have a time window where a breakpoint
11087 at certain location is not inserted. */
74960c60 11088
876fa593 11089 if (old_loc->inserted)
0d381245 11090 {
4a64f543
MS
11091 /* If the location is inserted now, we might have to remove
11092 it. */
74960c60 11093
876fa593 11094 if (found_object && should_be_inserted (old_loc))
74960c60 11095 {
4a64f543
MS
11096 /* The location is still present in the location list,
11097 and still should be inserted. Don't do anything. */
20874c92 11098 keep_in_target = 1;
74960c60
VP
11099 }
11100 else
11101 {
b775012e
LM
11102 /* This location still exists, but it won't be kept in the
11103 target since it may have been disabled. We proceed to
11104 remove its target-side condition. */
11105
4a64f543
MS
11106 /* The location is either no longer present, or got
11107 disabled. See if there's another location at the
11108 same address, in which case we don't need to remove
11109 this one from the target. */
876fa593 11110
2bdf28a0 11111 /* OLD_LOC comes from existing struct breakpoint. */
cb1e4e32 11112 if (bl_address_is_meaningful (old_loc))
876fa593 11113 {
5d51cd5d
SM
11114 for (size_t loc2_i = loc_i;
11115 (loc2_i < bp_locations.size ()
11116 && bp_locations[loc2_i]->address == old_loc->address);
11117 loc2_i++)
876fa593 11118 {
5d51cd5d 11119 bp_location *loc2 = bp_locations[loc2_i];
876fa593 11120
7f32a4d5
PA
11121 if (loc2 == old_loc)
11122 continue;
11123
2d134ed3 11124 if (breakpoint_locations_match (loc2, old_loc))
c7d46a38 11125 {
85d721b8
PA
11126 /* Read watchpoint locations are switched to
11127 access watchpoints, if the former are not
11128 supported, but the latter are. */
11129 if (is_hardware_watchpoint (old_loc->owner))
11130 {
11131 gdb_assert (is_hardware_watchpoint (loc2->owner));
11132 loc2->watchpoint_type = old_loc->watchpoint_type;
11133 }
11134
934709f0
PW
11135 /* loc2 is a duplicated location. We need to check
11136 if it should be inserted in case it will be
11137 unduplicated. */
7f32a4d5 11138 if (unduplicated_should_be_inserted (loc2))
c7d46a38 11139 {
934709f0 11140 swap_insertion (old_loc, loc2);
c7d46a38
PA
11141 keep_in_target = 1;
11142 break;
11143 }
876fa593
JK
11144 }
11145 }
11146 }
74960c60
VP
11147 }
11148
20874c92
VP
11149 if (!keep_in_target)
11150 {
834c0d03 11151 if (remove_breakpoint (old_loc))
20874c92 11152 {
4a64f543
MS
11153 /* This is just about all we can do. We could keep
11154 this location on the global list, and try to
11155 remove it next time, but there's no particular
11156 reason why we will succeed next time.
20874c92 11157
4a64f543
MS
11158 Note that at this point, old_loc->owner is still
11159 valid, as delete_breakpoint frees the breakpoint
11160 only after calling us. */
6cb06a8c
TT
11161 gdb_printf (_("warning: Error removing "
11162 "breakpoint %d\n"),
11163 old_loc->owner->number);
20874c92
VP
11164 }
11165 removed = 1;
11166 }
0d381245 11167 }
74960c60
VP
11168
11169 if (!found_object)
1c5cfe86 11170 {
fbea99ea 11171 if (removed && target_is_non_stop_p ()
1cf4d951 11172 && need_moribund_for_location_type (old_loc))
20874c92 11173 {
db82e815
PA
11174 /* This location was removed from the target. In
11175 non-stop mode, a race condition is possible where
11176 we've removed a breakpoint, but stop events for that
11177 breakpoint are already queued and will arrive later.
11178 We apply an heuristic to be able to distinguish such
11179 SIGTRAPs from other random SIGTRAPs: we keep this
11180 breakpoint location for a bit, and will retire it
11181 after we see some number of events. The theory here
11182 is that reporting of events should, "on the average",
11183 be fair, so after a while we'll see events from all
11184 threads that have anything of interest, and no longer
11185 need to keep this breakpoint location around. We
11186 don't hold locations forever so to reduce chances of
11187 mistaking a non-breakpoint SIGTRAP for a breakpoint
11188 SIGTRAP.
11189
11190 The heuristic failing can be disastrous on
11191 decr_pc_after_break targets.
11192
11193 On decr_pc_after_break targets, like e.g., x86-linux,
11194 if we fail to recognize a late breakpoint SIGTRAP,
11195 because events_till_retirement has reached 0 too
11196 soon, we'll fail to do the PC adjustment, and report
11197 a random SIGTRAP to the user. When the user resumes
11198 the inferior, it will most likely immediately crash
2dec564e 11199 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
db82e815
PA
11200 corrupted, because of being resumed e.g., in the
11201 middle of a multi-byte instruction, or skipped a
11202 one-byte instruction. This was actually seen happen
11203 on native x86-linux, and should be less rare on
11204 targets that do not support new thread events, like
11205 remote, due to the heuristic depending on
11206 thread_count.
11207
11208 Mistaking a random SIGTRAP for a breakpoint trap
11209 causes similar symptoms (PC adjustment applied when
11210 it shouldn't), but then again, playing with SIGTRAPs
11211 behind the debugger's back is asking for trouble.
11212
11213 Since hardware watchpoint traps are always
11214 distinguishable from other traps, so we don't need to
11215 apply keep hardware watchpoint moribund locations
11216 around. We simply always ignore hardware watchpoint
11217 traps we can no longer explain. */
11218
5b6d1e4f
PA
11219 process_stratum_target *proc_target = nullptr;
11220 for (inferior *inf : all_inferiors ())
11221 if (inf->pspace == old_loc->pspace)
11222 {
11223 proc_target = inf->process_target ();
11224 break;
11225 }
11226 if (proc_target != nullptr)
11227 old_loc->events_till_retirement
11228 = 3 * (thread_count (proc_target) + 1);
11229 else
11230 old_loc->events_till_retirement = 1;
876fa593 11231 old_loc->owner = NULL;
20874c92 11232
1123588c 11233 moribund_locations.push_back (old_loc);
1c5cfe86
PA
11234 }
11235 else
f431efe5
PA
11236 {
11237 old_loc->owner = NULL;
11238 decref_bp_location (&old_loc);
11239 }
20874c92 11240 }
74960c60 11241 }
1c5cfe86 11242
348d480f
PA
11243 /* Rescan breakpoints at the same address and section, marking the
11244 first one as "first" and any others as "duplicates". This is so
11245 that the bpt instruction is only inserted once. If we have a
11246 permanent breakpoint at the same place as BPT, make that one the
11247 official one, and the rest as duplicates. Permanent breakpoints
11248 are sorted first for the same address.
11249
11250 Do the same for hardware watchpoints, but also considering the
11251 watchpoint's type (regular/access/read) and length. */
11252
11253 bp_loc_first = NULL;
11254 wp_loc_first = NULL;
11255 awp_loc_first = NULL;
11256 rwp_loc_first = NULL;
40cb8ca5 11257
48d7020b 11258 for (bp_location *loc : all_bp_locations ())
348d480f
PA
11259 {
11260 /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11261 non-NULL. */
348d480f 11262 struct bp_location **loc_first_p;
43892fdf 11263 breakpoint *b = loc->owner;
348d480f 11264
6f380991 11265 if (!unduplicated_should_be_inserted (loc)
cb1e4e32 11266 || !bl_address_is_meaningful (loc)
1e4d1764
YQ
11267 /* Don't detect duplicate for tracepoint locations because they are
11268 never duplicated. See the comments in field `duplicate' of
11269 `struct bp_location'. */
348d480f 11270 || is_tracepoint (b))
b775012e
LM
11271 {
11272 /* Clear the condition modification flag. */
11273 loc->condition_changed = condition_unchanged;
11274 continue;
11275 }
348d480f 11276
348d480f
PA
11277 if (b->type == bp_hardware_watchpoint)
11278 loc_first_p = &wp_loc_first;
11279 else if (b->type == bp_read_watchpoint)
11280 loc_first_p = &rwp_loc_first;
11281 else if (b->type == bp_access_watchpoint)
11282 loc_first_p = &awp_loc_first;
11283 else
11284 loc_first_p = &bp_loc_first;
11285
11286 if (*loc_first_p == NULL
11287 || (overlay_debugging && loc->section != (*loc_first_p)->section)
11288 || !breakpoint_locations_match (loc, *loc_first_p))
11289 {
11290 *loc_first_p = loc;
11291 loc->duplicate = 0;
b775012e
LM
11292
11293 if (is_breakpoint (loc->owner) && loc->condition_changed)
11294 {
11295 loc->needs_update = 1;
11296 /* Clear the condition modification flag. */
11297 loc->condition_changed = condition_unchanged;
11298 }
348d480f
PA
11299 continue;
11300 }
11301
934709f0
PW
11302
11303 /* This and the above ensure the invariant that the first location
11304 is not duplicated, and is the inserted one.
11305 All following are marked as duplicated, and are not inserted. */
11306 if (loc->inserted)
11307 swap_insertion (loc, *loc_first_p);
348d480f
PA
11308 loc->duplicate = 1;
11309
b775012e
LM
11310 /* Clear the condition modification flag. */
11311 loc->condition_changed = condition_unchanged;
348d480f
PA
11312 }
11313
a25a5a45 11314 if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
b775012e 11315 {
04086b45 11316 if (insert_mode != UGLL_DONT_INSERT)
b775012e
LM
11317 insert_breakpoint_locations ();
11318 else
11319 {
44702360
PA
11320 /* Even though the caller told us to not insert new
11321 locations, we may still need to update conditions on the
11322 target's side of breakpoints that were already inserted
11323 if the target is evaluating breakpoint conditions. We
b775012e
LM
11324 only update conditions for locations that are marked
11325 "needs_update". */
11326 update_inserted_breakpoint_locations ();
11327 }
11328 }
348d480f 11329
04086b45 11330 if (insert_mode != UGLL_DONT_INSERT)
1e4d1764 11331 download_tracepoint_locations ();
348d480f
PA
11332}
11333
11334void
11335breakpoint_retire_moribund (void)
11336{
1123588c
TT
11337 for (int ix = 0; ix < moribund_locations.size (); ++ix)
11338 {
11339 struct bp_location *loc = moribund_locations[ix];
11340 if (--(loc->events_till_retirement) == 0)
11341 {
11342 decref_bp_location (&loc);
11343 unordered_remove (moribund_locations, ix);
11344 --ix;
11345 }
11346 }
348d480f
PA
11347}
11348
11349static void
44702360 11350update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
348d480f 11351{
348d480f 11352
a70b8144 11353 try
492d29ea
PA
11354 {
11355 update_global_location_list (insert_mode);
11356 }
230d2906 11357 catch (const gdb_exception_error &e)
492d29ea
PA
11358 {
11359 }
348d480f
PA
11360}
11361
11362/* Clear BKP from a BPS. */
11363
11364static void
313f3b21 11365bpstat_remove_bp_location (bpstat *bps, struct breakpoint *bpt)
348d480f 11366{
313f3b21 11367 bpstat *bs;
348d480f
PA
11368
11369 for (bs = bps; bs; bs = bs->next)
11370 if (bs->breakpoint_at == bpt)
11371 {
11372 bs->breakpoint_at = NULL;
11373 bs->old_val = NULL;
11374 /* bs->commands will be freed later. */
11375 }
11376}
11377
11378/* Callback for iterate_over_threads. */
11379static int
11380bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
11381{
9a3c8263 11382 struct breakpoint *bpt = (struct breakpoint *) data;
348d480f
PA
11383
11384 bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
11385 return 0;
11386}
11387
11388/* Helper for breakpoint and tracepoint breakpoint_ops->mention
11389 callbacks. */
11390
11391static void
11392say_where (struct breakpoint *b)
11393{
11394 struct value_print_options opts;
11395
11396 get_user_print_options (&opts);
11397
11398 /* i18n: cagney/2005-02-11: Below needs to be merged into a
11399 single string. */
11400 if (b->loc == NULL)
11401 {
f00aae0f
KS
11402 /* For pending locations, the output differs slightly based
11403 on b->extra_string. If this is non-NULL, it contains either
11404 a condition or dprintf arguments. */
11405 if (b->extra_string == NULL)
11406 {
6cb06a8c
TT
11407 gdb_printf (_(" (%s) pending."),
11408 event_location_to_string (b->location.get ()));
f00aae0f
KS
11409 }
11410 else if (b->type == bp_dprintf)
11411 {
6cb06a8c
TT
11412 gdb_printf (_(" (%s,%s) pending."),
11413 event_location_to_string (b->location.get ()),
11414 b->extra_string.get ());
f00aae0f
KS
11415 }
11416 else
11417 {
6cb06a8c
TT
11418 gdb_printf (_(" (%s %s) pending."),
11419 event_location_to_string (b->location.get ()),
11420 b->extra_string.get ());
f00aae0f 11421 }
348d480f
PA
11422 }
11423 else
11424 {
2f202fde 11425 if (opts.addressprint || b->loc->symtab == NULL)
6cb06a8c
TT
11426 gdb_printf (" at %ps",
11427 styled_string (address_style.style (),
11428 paddress (b->loc->gdbarch,
11429 b->loc->address)));
2f202fde 11430 if (b->loc->symtab != NULL)
f8eba3c6
TT
11431 {
11432 /* If there is a single location, we can print the location
11433 more nicely. */
11434 if (b->loc->next == NULL)
0bb296cb 11435 {
6a831f06
PA
11436 const char *filename
11437 = symtab_to_filename_for_display (b->loc->symtab);
6cb06a8c
TT
11438 gdb_printf (": file %ps, line %d.",
11439 styled_string (file_name_style.style (),
11440 filename),
11441 b->loc->line_number);
0bb296cb 11442 }
f8eba3c6
TT
11443 else
11444 /* This is not ideal, but each location may have a
11445 different file name, and this at least reflects the
11446 real situation somewhat. */
6cb06a8c
TT
11447 gdb_printf (": %s.",
11448 event_location_to_string (b->location.get ()));
f8eba3c6 11449 }
348d480f
PA
11450
11451 if (b->loc->next)
11452 {
11453 struct bp_location *loc = b->loc;
11454 int n = 0;
11455 for (; loc; loc = loc->next)
11456 ++n;
6cb06a8c 11457 gdb_printf (" (%d locations)", n);
348d480f
PA
11458 }
11459 }
11460}
11461
40cb8ca5
SM
11462/* See breakpoint.h. */
11463
9be25986 11464bp_location_range breakpoint::locations ()
40cb8ca5 11465{
9be25986 11466 return bp_location_range (this->loc);
40cb8ca5
SM
11467}
11468
2060206e
PA
11469static struct bp_location *
11470base_breakpoint_allocate_location (struct breakpoint *self)
348d480f 11471{
5f486660 11472 return new bp_location (self);
348d480f
PA
11473}
11474
4c6a92b1
TT
11475struct bp_location *
11476breakpoint::allocate_location ()
11477{
11478 return new bp_location (this);
11479}
11480
2060206e
PA
11481static void
11482base_breakpoint_re_set (struct breakpoint *b)
11483{
11484 /* Nothing to re-set. */
11485}
11486
11487#define internal_error_pure_virtual_called() \
11488 gdb_assert_not_reached ("pure virtual function called")
11489
11490static int
11491base_breakpoint_insert_location (struct bp_location *bl)
11492{
11493 internal_error_pure_virtual_called ();
11494}
11495
4c6a92b1
TT
11496int
11497breakpoint::insert_location (struct bp_location *bl)
11498{
11499 internal_error_pure_virtual_called ();
11500}
11501
2060206e 11502static int
73971819
PA
11503base_breakpoint_remove_location (struct bp_location *bl,
11504 enum remove_bp_reason reason)
2060206e
PA
11505{
11506 internal_error_pure_virtual_called ();
11507}
11508
4c6a92b1
TT
11509int
11510breakpoint::remove_location (struct bp_location *bl,
11511 enum remove_bp_reason reason)
11512{
11513 internal_error_pure_virtual_called ();
11514}
11515
2060206e
PA
11516static int
11517base_breakpoint_breakpoint_hit (const struct bp_location *bl,
bd522513 11518 const address_space *aspace,
09ac7c10 11519 CORE_ADDR bp_addr,
c272a98c 11520 const target_waitstatus &ws)
2060206e
PA
11521{
11522 internal_error_pure_virtual_called ();
11523}
11524
4c6a92b1
TT
11525int
11526breakpoint::breakpoint_hit (const struct bp_location *bl,
11527 const address_space *aspace,
11528 CORE_ADDR bp_addr,
11529 const target_waitstatus &ws)
11530{
11531 internal_error_pure_virtual_called ();
11532}
11533
2060206e 11534static void
313f3b21 11535base_breakpoint_check_status (bpstat *bs)
2060206e
PA
11536{
11537 /* Always stop. */
11538}
11539
11540/* A "works_in_software_mode" breakpoint_ops method that just internal
11541 errors. */
11542
11543static int
11544base_breakpoint_works_in_software_mode (const struct breakpoint *b)
11545{
11546 internal_error_pure_virtual_called ();
11547}
11548
4c6a92b1
TT
11549int
11550breakpoint::works_in_software_mode () const
11551{
11552 internal_error_pure_virtual_called ();
11553}
11554
2060206e
PA
11555/* A "resources_needed" breakpoint_ops method that just internal
11556 errors. */
11557
11558static int
11559base_breakpoint_resources_needed (const struct bp_location *bl)
11560{
11561 internal_error_pure_virtual_called ();
11562}
11563
4c6a92b1
TT
11564int
11565breakpoint::resources_needed (const struct bp_location *bl)
11566{
11567 internal_error_pure_virtual_called ();
11568}
11569
2060206e 11570static enum print_stop_action
313f3b21 11571base_breakpoint_print_it (bpstat *bs)
2060206e
PA
11572{
11573 internal_error_pure_virtual_called ();
11574}
11575
4c6a92b1
TT
11576enum print_stop_action
11577breakpoint::print_it (bpstat *bs)
11578{
11579 internal_error_pure_virtual_called ();
11580}
11581
c01e038b
TT
11582static bool
11583base_breakpoint_print_one (struct breakpoint *, struct bp_location **)
11584{
11585 return false;
11586}
11587
2060206e
PA
11588static void
11589base_breakpoint_print_one_detail (const struct breakpoint *self,
11590 struct ui_out *uiout)
11591{
11592 /* nothing */
11593}
11594
11595static void
11596base_breakpoint_print_mention (struct breakpoint *b)
11597{
11598 internal_error_pure_virtual_called ();
11599}
11600
4c6a92b1
TT
11601void
11602breakpoint::print_mention ()
11603{
11604 internal_error_pure_virtual_called ();
11605}
11606
2060206e
PA
11607static void
11608base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
11609{
11610 internal_error_pure_virtual_called ();
11611}
11612
4c6a92b1
TT
11613void
11614breakpoint::print_recreate (struct ui_file *fp)
11615{
11616 internal_error_pure_virtual_called ();
11617}
11618
983af33b 11619static void
f00aae0f 11620base_breakpoint_create_sals_from_location
626d2320 11621 (struct event_location *location,
f00aae0f
KS
11622 struct linespec_result *canonical,
11623 enum bptype type_wanted)
983af33b
SDJ
11624{
11625 internal_error_pure_virtual_called ();
11626}
11627
11628static void
11629base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
11630 struct linespec_result *c,
e1e01040
PA
11631 gdb::unique_xmalloc_ptr<char> cond_string,
11632 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
11633 enum bptype type_wanted,
11634 enum bpdisp disposition,
11635 int thread,
11636 int task, int ignore_count,
11637 const struct breakpoint_ops *o,
11638 int from_tty, int enabled,
44f238bb 11639 int internal, unsigned flags)
983af33b
SDJ
11640{
11641 internal_error_pure_virtual_called ();
11642}
11643
6c5b2ebe 11644static std::vector<symtab_and_line>
f00aae0f 11645base_breakpoint_decode_location (struct breakpoint *b,
626d2320 11646 struct event_location *location,
6c5b2ebe 11647 struct program_space *search_pspace)
983af33b
SDJ
11648{
11649 internal_error_pure_virtual_called ();
11650}
11651
4c6a92b1
TT
11652std::vector<symtab_and_line>
11653breakpoint::decode_location (struct event_location *location,
11654 struct program_space *search_pspace)
11655{
11656 internal_error_pure_virtual_called ();
11657}
11658
ab04a2af
TT
11659/* The default 'explains_signal' method. */
11660
47591c29 11661static int
427cd150 11662base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
ab04a2af 11663{
47591c29 11664 return 1;
ab04a2af
TT
11665}
11666
9d6e6e84
HZ
11667/* The default "after_condition_true" method. */
11668
11669static void
313f3b21 11670base_breakpoint_after_condition_true (struct bpstat *bs)
9d6e6e84
HZ
11671{
11672 /* Nothing to do. */
11673}
11674
ab04a2af 11675struct breakpoint_ops base_breakpoint_ops =
2060206e 11676{
2060206e
PA
11677 base_breakpoint_allocate_location,
11678 base_breakpoint_re_set,
11679 base_breakpoint_insert_location,
11680 base_breakpoint_remove_location,
11681 base_breakpoint_breakpoint_hit,
11682 base_breakpoint_check_status,
11683 base_breakpoint_resources_needed,
11684 base_breakpoint_works_in_software_mode,
11685 base_breakpoint_print_it,
c01e038b 11686 base_breakpoint_print_one,
2060206e
PA
11687 base_breakpoint_print_one_detail,
11688 base_breakpoint_print_mention,
983af33b 11689 base_breakpoint_print_recreate,
5f700d83 11690 base_breakpoint_create_sals_from_location,
983af33b 11691 base_breakpoint_create_breakpoints_sal,
5f700d83 11692 base_breakpoint_decode_location,
9d6e6e84
HZ
11693 base_breakpoint_explains_signal,
11694 base_breakpoint_after_condition_true,
2060206e
PA
11695};
11696
4c6a92b1
TT
11697struct breakpoint_ops vtable_breakpoint_ops =
11698{
11699 [] (struct breakpoint *b) { return b->allocate_location (); },
11700 [] (struct breakpoint *b) { b->re_set (); },
11701 [] (struct bp_location *l)
11702 {
11703 return l->owner->insert_location (l);
11704 },
11705 [] (struct bp_location *l, enum remove_bp_reason reason)
11706 {
11707 return l->owner->remove_location (l, reason);
11708 },
11709 [] (const struct bp_location *bl,
11710 const address_space *aspace,
11711 CORE_ADDR bp_addr,
11712 const target_waitstatus &ws)
11713 {
11714 return bl->owner->breakpoint_hit (bl, aspace, bp_addr, ws);
11715 },
11716 [] (struct bpstat *bs) { bs->breakpoint_at->check_status (bs); },
11717 [] (const struct bp_location *bl)
11718 { return bl->owner->resources_needed (bl); },
11719 [] (const struct breakpoint *b)
11720 { return b->works_in_software_mode (); },
11721 [] (struct bpstat *bs)
11722 { return bs->breakpoint_at->print_it (bs); },
11723 [] (struct breakpoint *b, struct bp_location **bl)
11724 { return b->print_one (bl); },
11725 [] (const struct breakpoint *b, struct ui_out *out)
11726 { b->print_one_detail (out); },
11727 [] (struct breakpoint *b) { b->print_mention (); },
11728 [] (struct breakpoint *b, struct ui_file *fp)
11729 { b->print_recreate (fp); },
11730 create_sals_from_location_default,
11731 create_breakpoints_sal_default,
11732 [] (struct breakpoint *b,
11733 struct event_location *location,
11734 struct program_space *search_pspace)
11735 { return b->decode_location (location, search_pspace); },
11736 [] (struct breakpoint *b, enum gdb_signal s)
11737 { return b->explains_signal (s); },
11738 [] (struct bpstat *bs)
11739 { bs->breakpoint_at->after_condition_true (bs); }
11740};
11741
2060206e
PA
11742/* Default breakpoint_ops methods. */
11743
11744static void
348d480f
PA
11745bkpt_re_set (struct breakpoint *b)
11746{
06edf0c0 11747 /* FIXME: is this still reachable? */
9ef9e6a6 11748 if (breakpoint_event_location_empty_p (b))
06edf0c0 11749 {
f00aae0f 11750 /* Anything without a location can't be re-set. */
348d480f 11751 delete_breakpoint (b);
06edf0c0 11752 return;
348d480f 11753 }
06edf0c0
PA
11754
11755 breakpoint_re_set_default (b);
348d480f
PA
11756}
11757
2060206e 11758static int
348d480f
PA
11759bkpt_insert_location (struct bp_location *bl)
11760{
cd6c3b4f
YQ
11761 CORE_ADDR addr = bl->target_info.reqstd_address;
11762
579c6ad9 11763 bl->target_info.kind = breakpoint_kind (bl, &addr);
cd6c3b4f
YQ
11764 bl->target_info.placed_address = addr;
11765
348d480f 11766 if (bl->loc_type == bp_loc_hardware_breakpoint)
7c16b83e 11767 return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
348d480f 11768 else
7c16b83e 11769 return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
348d480f
PA
11770}
11771
2060206e 11772static int
73971819 11773bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
348d480f
PA
11774{
11775 if (bl->loc_type == bp_loc_hardware_breakpoint)
11776 return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
11777 else
73971819 11778 return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
348d480f
PA
11779}
11780
2060206e 11781static int
348d480f 11782bkpt_breakpoint_hit (const struct bp_location *bl,
bd522513 11783 const address_space *aspace, CORE_ADDR bp_addr,
c272a98c 11784 const target_waitstatus &ws)
348d480f 11785{
c272a98c
SM
11786 if (ws.kind () != TARGET_WAITKIND_STOPPED
11787 || ws.sig () != GDB_SIGNAL_TRAP)
09ac7c10
TT
11788 return 0;
11789
348d480f
PA
11790 if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
11791 aspace, bp_addr))
11792 return 0;
11793
11794 if (overlay_debugging /* unmapped overlay section */
11795 && section_is_overlay (bl->section)
11796 && !section_is_mapped (bl->section))
11797 return 0;
11798
11799 return 1;
11800}
11801
cd1608cc
PA
11802static int
11803dprintf_breakpoint_hit (const struct bp_location *bl,
bd522513 11804 const address_space *aspace, CORE_ADDR bp_addr,
c272a98c 11805 const target_waitstatus &ws)
cd1608cc
PA
11806{
11807 if (dprintf_style == dprintf_style_agent
11808 && target_can_run_breakpoint_commands ())
11809 {
11810 /* An agent-style dprintf never causes a stop. If we see a trap
11811 for this address it must be for a breakpoint that happens to
11812 be set at the same address. */
11813 return 0;
11814 }
11815
11816 return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
11817}
11818
2060206e 11819static int
348d480f
PA
11820bkpt_resources_needed (const struct bp_location *bl)
11821{
11822 gdb_assert (bl->owner->type == bp_hardware_breakpoint);
11823
11824 return 1;
11825}
11826
2060206e 11827static enum print_stop_action
313f3b21 11828bkpt_print_it (bpstat *bs)
348d480f 11829{
348d480f
PA
11830 struct breakpoint *b;
11831 const struct bp_location *bl;
001c8c33 11832 int bp_temp;
79a45e25 11833 struct ui_out *uiout = current_uiout;
348d480f
PA
11834
11835 gdb_assert (bs->bp_location_at != NULL);
11836
b6433ede 11837 bl = bs->bp_location_at.get ();
348d480f
PA
11838 b = bs->breakpoint_at;
11839
001c8c33
PA
11840 bp_temp = b->disposition == disp_del;
11841 if (bl->address != bl->requested_address)
11842 breakpoint_adjustment_warning (bl->requested_address,
11843 bl->address,
11844 b->number, 1);
11845 annotate_breakpoint (b->number);
f303dbd6
PA
11846 maybe_print_thread_hit_breakpoint (uiout);
11847
112e8700 11848 if (uiout->is_mi_like_p ())
348d480f 11849 {
112e8700 11850 uiout->field_string ("reason",
001c8c33 11851 async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
112e8700 11852 uiout->field_string ("disp", bpdisp_text (b->disposition));
06edf0c0 11853 }
6a831f06
PA
11854 if (bp_temp)
11855 uiout->message ("Temporary breakpoint %pF, ",
11856 signed_field ("bkptno", b->number));
11857 else
11858 uiout->message ("Breakpoint %pF, ",
11859 signed_field ("bkptno", b->number));
06edf0c0 11860
001c8c33 11861 return PRINT_SRC_AND_LOC;
06edf0c0
PA
11862}
11863
2060206e 11864static void
06edf0c0
PA
11865bkpt_print_mention (struct breakpoint *b)
11866{
112e8700 11867 if (current_uiout->is_mi_like_p ())
06edf0c0
PA
11868 return;
11869
11870 switch (b->type)
11871 {
11872 case bp_breakpoint:
11873 case bp_gnu_ifunc_resolver:
11874 if (b->disposition == disp_del)
6cb06a8c 11875 gdb_printf (_("Temporary breakpoint"));
06edf0c0 11876 else
6cb06a8c
TT
11877 gdb_printf (_("Breakpoint"));
11878 gdb_printf (_(" %d"), b->number);
06edf0c0 11879 if (b->type == bp_gnu_ifunc_resolver)
6cb06a8c 11880 gdb_printf (_(" at gnu-indirect-function resolver"));
06edf0c0
PA
11881 break;
11882 case bp_hardware_breakpoint:
6cb06a8c 11883 gdb_printf (_("Hardware assisted breakpoint %d"), b->number);
06edf0c0 11884 break;
e7e0cddf 11885 case bp_dprintf:
6cb06a8c 11886 gdb_printf (_("Dprintf %d"), b->number);
e7e0cddf 11887 break;
06edf0c0
PA
11888 }
11889
11890 say_where (b);
11891}
11892
2060206e 11893static void
06edf0c0
PA
11894bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
11895{
11896 if (tp->type == bp_breakpoint && tp->disposition == disp_del)
6cb06a8c 11897 gdb_printf (fp, "tbreak");
06edf0c0 11898 else if (tp->type == bp_breakpoint)
6cb06a8c 11899 gdb_printf (fp, "break");
06edf0c0
PA
11900 else if (tp->type == bp_hardware_breakpoint
11901 && tp->disposition == disp_del)
6cb06a8c 11902 gdb_printf (fp, "thbreak");
06edf0c0 11903 else if (tp->type == bp_hardware_breakpoint)
6cb06a8c 11904 gdb_printf (fp, "hbreak");
06edf0c0
PA
11905 else
11906 internal_error (__FILE__, __LINE__,
11907 _("unhandled breakpoint type %d"), (int) tp->type);
11908
6cb06a8c
TT
11909 gdb_printf (fp, " %s",
11910 event_location_to_string (tp->location.get ()));
f00aae0f
KS
11911
11912 /* Print out extra_string if this breakpoint is pending. It might
11913 contain, for example, conditions that were set by the user. */
11914 if (tp->loc == NULL && tp->extra_string != NULL)
6cb06a8c 11915 gdb_printf (fp, " %s", tp->extra_string.get ());
f00aae0f 11916
dd11a36c 11917 print_recreate_thread (tp, fp);
06edf0c0
PA
11918}
11919
6c5b2ebe 11920static std::vector<symtab_and_line>
f00aae0f 11921bkpt_decode_location (struct breakpoint *b,
626d2320 11922 struct event_location *location,
6c5b2ebe 11923 struct program_space *search_pspace)
983af33b 11924{
6c5b2ebe 11925 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
11926}
11927
06edf0c0
PA
11928/* Virtual table for internal breakpoints. */
11929
11930static void
11931internal_bkpt_re_set (struct breakpoint *b)
11932{
11933 switch (b->type)
11934 {
11935 /* Delete overlay event and longjmp master breakpoints; they
11936 will be reset later by breakpoint_re_set. */
11937 case bp_overlay_event:
11938 case bp_longjmp_master:
11939 case bp_std_terminate_master:
11940 case bp_exception_master:
11941 delete_breakpoint (b);
11942 break;
11943
11944 /* This breakpoint is special, it's set up when the inferior
dda83cd7 11945 starts and we really don't want to touch it. */
06edf0c0
PA
11946 case bp_shlib_event:
11947
11948 /* Like bp_shlib_event, this breakpoint type is special. Once
11949 it is set up, we do not want to touch it. */
11950 case bp_thread_event:
11951 break;
11952 }
11953}
11954
11955static void
313f3b21 11956internal_bkpt_check_status (bpstat *bs)
06edf0c0 11957{
a9b3a50f
PA
11958 if (bs->breakpoint_at->type == bp_shlib_event)
11959 {
11960 /* If requested, stop when the dynamic linker notifies GDB of
11961 events. This allows the user to get control and place
11962 breakpoints in initializer routines for dynamically loaded
11963 objects (among other things). */
11964 bs->stop = stop_on_solib_events;
11965 bs->print = stop_on_solib_events;
11966 }
11967 else
11968 bs->stop = 0;
06edf0c0
PA
11969}
11970
11971static enum print_stop_action
313f3b21 11972internal_bkpt_print_it (bpstat *bs)
06edf0c0 11973{
06edf0c0 11974 struct breakpoint *b;
06edf0c0 11975
06edf0c0
PA
11976 b = bs->breakpoint_at;
11977
06edf0c0
PA
11978 switch (b->type)
11979 {
348d480f
PA
11980 case bp_shlib_event:
11981 /* Did we stop because the user set the stop_on_solib_events
11982 variable? (If so, we report this as a generic, "Stopped due
11983 to shlib event" message.) */
4e9e993a 11984 print_solib_event (false);
348d480f
PA
11985 break;
11986
11987 case bp_thread_event:
11988 /* Not sure how we will get here.
11989 GDB should not stop for these breakpoints. */
6cb06a8c 11990 gdb_printf (_("Thread Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
11991 break;
11992
11993 case bp_overlay_event:
11994 /* By analogy with the thread event, GDB should not stop for these. */
6cb06a8c 11995 gdb_printf (_("Overlay Event Breakpoint: gdb should not stop!\n"));
348d480f
PA
11996 break;
11997
11998 case bp_longjmp_master:
11999 /* These should never be enabled. */
6cb06a8c 12000 gdb_printf (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
348d480f
PA
12001 break;
12002
12003 case bp_std_terminate_master:
12004 /* These should never be enabled. */
6cb06a8c
TT
12005 gdb_printf (_("std::terminate Master Breakpoint: "
12006 "gdb should not stop!\n"));
348d480f
PA
12007 break;
12008
12009 case bp_exception_master:
12010 /* These should never be enabled. */
6cb06a8c
TT
12011 gdb_printf (_("Exception Master Breakpoint: "
12012 "gdb should not stop!\n"));
06edf0c0
PA
12013 break;
12014 }
12015
001c8c33 12016 return PRINT_NOTHING;
06edf0c0
PA
12017}
12018
12019static void
12020internal_bkpt_print_mention (struct breakpoint *b)
12021{
12022 /* Nothing to mention. These breakpoints are internal. */
12023}
12024
06edf0c0
PA
12025/* Virtual table for momentary breakpoints */
12026
12027static void
12028momentary_bkpt_re_set (struct breakpoint *b)
12029{
12030 /* Keep temporary breakpoints, which can be encountered when we step
4d1eb6b4 12031 over a dlopen call and solib_add is resetting the breakpoints.
06edf0c0
PA
12032 Otherwise these should have been blown away via the cleanup chain
12033 or by breakpoint_init_inferior when we rerun the executable. */
12034}
12035
12036static void
313f3b21 12037momentary_bkpt_check_status (bpstat *bs)
06edf0c0
PA
12038{
12039 /* Nothing. The point of these breakpoints is causing a stop. */
12040}
12041
12042static enum print_stop_action
313f3b21 12043momentary_bkpt_print_it (bpstat *bs)
06edf0c0 12044{
001c8c33 12045 return PRINT_UNKNOWN;
348d480f
PA
12046}
12047
06edf0c0
PA
12048static void
12049momentary_bkpt_print_mention (struct breakpoint *b)
348d480f 12050{
06edf0c0 12051 /* Nothing to mention. These breakpoints are internal. */
348d480f
PA
12052}
12053
e2e4d78b
JK
12054/* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12055
12056 It gets cleared already on the removal of the first one of such placed
12057 breakpoints. This is OK as they get all removed altogether. */
12058
c1fc2657 12059longjmp_breakpoint::~longjmp_breakpoint ()
e2e4d78b 12060{
c1fc2657 12061 thread_info *tp = find_thread_global_id (this->thread);
e2e4d78b 12062
c1fc2657 12063 if (tp != NULL)
e2e4d78b 12064 tp->initiating_frame = null_frame_id;
e2e4d78b
JK
12065}
12066
55aa24fb
SDJ
12067/* Specific methods for probe breakpoints. */
12068
12069static int
12070bkpt_probe_insert_location (struct bp_location *bl)
12071{
12072 int v = bkpt_insert_location (bl);
12073
12074 if (v == 0)
12075 {
12076 /* The insertion was successful, now let's set the probe's semaphore
12077 if needed. */
935676c9 12078 bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb
SDJ
12079 }
12080
12081 return v;
12082}
12083
12084static int
73971819
PA
12085bkpt_probe_remove_location (struct bp_location *bl,
12086 enum remove_bp_reason reason)
55aa24fb
SDJ
12087{
12088 /* Let's clear the semaphore before removing the location. */
935676c9 12089 bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
55aa24fb 12090
73971819 12091 return bkpt_remove_location (bl, reason);
55aa24fb
SDJ
12092}
12093
12094static void
626d2320 12095bkpt_probe_create_sals_from_location (struct event_location *location,
5f700d83 12096 struct linespec_result *canonical,
f00aae0f 12097 enum bptype type_wanted)
55aa24fb
SDJ
12098{
12099 struct linespec_sals lsal;
12100
c2f4122d 12101 lsal.sals = parse_probes (location, NULL, canonical);
8e9e35b1
TT
12102 lsal.canonical
12103 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12104 canonical->lsals.push_back (std::move (lsal));
55aa24fb
SDJ
12105}
12106
6c5b2ebe 12107static std::vector<symtab_and_line>
f00aae0f 12108bkpt_probe_decode_location (struct breakpoint *b,
626d2320 12109 struct event_location *location,
6c5b2ebe 12110 struct program_space *search_pspace)
55aa24fb 12111{
6c5b2ebe
PA
12112 std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12113 if (sals.empty ())
55aa24fb 12114 error (_("probe not found"));
6c5b2ebe 12115 return sals;
55aa24fb
SDJ
12116}
12117
348d480f 12118/* The breakpoint_ops structure to be used in tracepoints. */
876fa593 12119
348d480f
PA
12120static void
12121tracepoint_re_set (struct breakpoint *b)
12122{
12123 breakpoint_re_set_default (b);
12124}
876fa593 12125
348d480f
PA
12126static int
12127tracepoint_breakpoint_hit (const struct bp_location *bl,
bd522513 12128 const address_space *aspace, CORE_ADDR bp_addr,
c272a98c 12129 const target_waitstatus &ws)
348d480f
PA
12130{
12131 /* By definition, the inferior does not report stops at
12132 tracepoints. */
12133 return 0;
74960c60
VP
12134}
12135
12136static void
348d480f
PA
12137tracepoint_print_one_detail (const struct breakpoint *self,
12138 struct ui_out *uiout)
74960c60 12139{
d9b3f62e 12140 struct tracepoint *tp = (struct tracepoint *) self;
5d9310c4 12141 if (!tp->static_trace_marker_id.empty ())
348d480f
PA
12142 {
12143 gdb_assert (self->type == bp_static_tracepoint);
cc59ec59 12144
6a831f06
PA
12145 uiout->message ("\tmarker id is %pF\n",
12146 string_field ("static-tracepoint-marker-string-id",
12147 tp->static_trace_marker_id.c_str ()));
348d480f 12148 }
0d381245
VP
12149}
12150
a474d7c2 12151static void
348d480f 12152tracepoint_print_mention (struct breakpoint *b)
a474d7c2 12153{
112e8700 12154 if (current_uiout->is_mi_like_p ())
348d480f 12155 return;
cc59ec59 12156
348d480f
PA
12157 switch (b->type)
12158 {
12159 case bp_tracepoint:
6cb06a8c
TT
12160 gdb_printf (_("Tracepoint"));
12161 gdb_printf (_(" %d"), b->number);
348d480f
PA
12162 break;
12163 case bp_fast_tracepoint:
6cb06a8c
TT
12164 gdb_printf (_("Fast tracepoint"));
12165 gdb_printf (_(" %d"), b->number);
348d480f
PA
12166 break;
12167 case bp_static_tracepoint:
6cb06a8c
TT
12168 gdb_printf (_("Static tracepoint"));
12169 gdb_printf (_(" %d"), b->number);
348d480f
PA
12170 break;
12171 default:
12172 internal_error (__FILE__, __LINE__,
12173 _("unhandled tracepoint type %d"), (int) b->type);
12174 }
12175
12176 say_where (b);
a474d7c2
PA
12177}
12178
348d480f 12179static void
d9b3f62e 12180tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
a474d7c2 12181{
d9b3f62e
PA
12182 struct tracepoint *tp = (struct tracepoint *) self;
12183
12184 if (self->type == bp_fast_tracepoint)
6cb06a8c 12185 gdb_printf (fp, "ftrace");
c93e8391 12186 else if (self->type == bp_static_tracepoint)
6cb06a8c 12187 gdb_printf (fp, "strace");
d9b3f62e 12188 else if (self->type == bp_tracepoint)
6cb06a8c 12189 gdb_printf (fp, "trace");
348d480f
PA
12190 else
12191 internal_error (__FILE__, __LINE__,
d9b3f62e 12192 _("unhandled tracepoint type %d"), (int) self->type);
cc59ec59 12193
6cb06a8c
TT
12194 gdb_printf (fp, " %s",
12195 event_location_to_string (self->location.get ()));
d9b3f62e
PA
12196 print_recreate_thread (self, fp);
12197
12198 if (tp->pass_count)
6cb06a8c 12199 gdb_printf (fp, " passcount %d\n", tp->pass_count);
a474d7c2
PA
12200}
12201
6c5b2ebe 12202static std::vector<symtab_and_line>
f00aae0f 12203tracepoint_decode_location (struct breakpoint *b,
626d2320 12204 struct event_location *location,
6c5b2ebe 12205 struct program_space *search_pspace)
983af33b 12206{
6c5b2ebe 12207 return decode_location_default (b, location, search_pspace);
983af33b
SDJ
12208}
12209
2060206e 12210struct breakpoint_ops tracepoint_breakpoint_ops;
348d480f 12211
bac7c5cf 12212/* Virtual table for tracepoints on static probes. */
55aa24fb
SDJ
12213
12214static void
f00aae0f 12215tracepoint_probe_create_sals_from_location
626d2320 12216 (struct event_location *location,
f00aae0f
KS
12217 struct linespec_result *canonical,
12218 enum bptype type_wanted)
55aa24fb
SDJ
12219{
12220 /* We use the same method for breakpoint on probes. */
f00aae0f 12221 bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
55aa24fb
SDJ
12222}
12223
6c5b2ebe 12224static std::vector<symtab_and_line>
f00aae0f 12225tracepoint_probe_decode_location (struct breakpoint *b,
626d2320 12226 struct event_location *location,
6c5b2ebe 12227 struct program_space *search_pspace)
55aa24fb
SDJ
12228{
12229 /* We use the same method for breakpoint on probes. */
6c5b2ebe 12230 return bkpt_probe_decode_location (b, location, search_pspace);
55aa24fb
SDJ
12231}
12232
5c2b4418
HZ
12233/* Dprintf breakpoint_ops methods. */
12234
12235static void
12236dprintf_re_set (struct breakpoint *b)
12237{
12238 breakpoint_re_set_default (b);
12239
f00aae0f
KS
12240 /* extra_string should never be non-NULL for dprintf. */
12241 gdb_assert (b->extra_string != NULL);
5c2b4418
HZ
12242
12243 /* 1 - connect to target 1, that can run breakpoint commands.
12244 2 - create a dprintf, which resolves fine.
12245 3 - disconnect from target 1
12246 4 - connect to target 2, that can NOT run breakpoint commands.
12247
12248 After steps #3/#4, you'll want the dprintf command list to
12249 be updated, because target 1 and 2 may well return different
12250 answers for target_can_run_breakpoint_commands().
12251 Given absence of finer grained resetting, we get to do
12252 it all the time. */
12253 if (b->extra_string != NULL)
12254 update_dprintf_command_list (b);
12255}
12256
2d9442cc
HZ
12257/* Implement the "print_recreate" breakpoint_ops method for dprintf. */
12258
12259static void
12260dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12261{
6cb06a8c
TT
12262 gdb_printf (fp, "dprintf %s,%s",
12263 event_location_to_string (tp->location.get ()),
12264 tp->extra_string.get ());
2d9442cc
HZ
12265 print_recreate_thread (tp, fp);
12266}
12267
9d6e6e84
HZ
12268/* Implement the "after_condition_true" breakpoint_ops method for
12269 dprintf.
12270
12271 dprintf's are implemented with regular commands in their command
12272 list, but we run the commands here instead of before presenting the
12273 stop to the user, as dprintf's don't actually cause a stop. This
12274 also makes it so that the commands of multiple dprintfs at the same
12275 address are all handled. */
12276
12277static void
313f3b21 12278dprintf_after_condition_true (struct bpstat *bs)
9d6e6e84 12279{
9d6e6e84
HZ
12280 /* dprintf's never cause a stop. This wasn't set in the
12281 check_status hook instead because that would make the dprintf's
12282 condition not be evaluated. */
12283 bs->stop = 0;
12284
12285 /* Run the command list here. Take ownership of it instead of
12286 copying. We never want these commands to run later in
12287 bpstat_do_actions, if a breakpoint that causes a stop happens to
12288 be set at same address as this dprintf, or even if running the
12289 commands here throws. */
9c95aea1
KB
12290 counted_command_line cmds = std::move (bs->commands);
12291 gdb_assert (cmds != nullptr);
12292 execute_control_commands (cmds.get (), 0);
9d6e6e84
HZ
12293}
12294
983af33b
SDJ
12295/* The breakpoint_ops structure to be used on static tracepoints with
12296 markers (`-m'). */
12297
12298static void
626d2320 12299strace_marker_create_sals_from_location (struct event_location *location,
5f700d83 12300 struct linespec_result *canonical,
f00aae0f 12301 enum bptype type_wanted)
983af33b
SDJ
12302{
12303 struct linespec_sals lsal;
f00aae0f 12304 const char *arg_start, *arg;
983af33b 12305
a20714ff 12306 arg = arg_start = get_linespec_location (location)->spec_string;
f00aae0f 12307 lsal.sals = decode_static_tracepoint_spec (&arg);
983af33b 12308
f2fc3015
TT
12309 std::string str (arg_start, arg - arg_start);
12310 const char *ptr = str.c_str ();
a20714ff
PA
12311 canonical->location
12312 = new_linespec_location (&ptr, symbol_name_match_type::FULL);
983af33b 12313
8e9e35b1
TT
12314 lsal.canonical
12315 = xstrdup (event_location_to_string (canonical->location.get ()));
6c5b2ebe 12316 canonical->lsals.push_back (std::move (lsal));
983af33b
SDJ
12317}
12318
12319static void
12320strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12321 struct linespec_result *canonical,
e1e01040
PA
12322 gdb::unique_xmalloc_ptr<char> cond_string,
12323 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
12324 enum bptype type_wanted,
12325 enum bpdisp disposition,
12326 int thread,
12327 int task, int ignore_count,
12328 const struct breakpoint_ops *ops,
12329 int from_tty, int enabled,
44f238bb 12330 int internal, unsigned flags)
983af33b 12331{
6c5b2ebe 12332 const linespec_sals &lsal = canonical->lsals[0];
983af33b
SDJ
12333
12334 /* If the user is creating a static tracepoint by marker id
12335 (strace -m MARKER_ID), then store the sals index, so that
12336 breakpoint_re_set can try to match up which of the newly
12337 found markers corresponds to this one, and, don't try to
12338 expand multiple locations for each sal, given than SALS
12339 already should contain all sals for MARKER_ID. */
12340
6c5b2ebe 12341 for (size_t i = 0; i < lsal.sals.size (); i++)
983af33b 12342 {
6c5b2ebe
PA
12343 event_location_up location
12344 = copy_event_location (canonical->location.get ());
983af33b 12345
b270e6f9 12346 std::unique_ptr<tracepoint> tp (new tracepoint ());
6c5b2ebe 12347 init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
ffc2605c 12348 std::move (location), NULL,
e1e01040
PA
12349 std::move (cond_string),
12350 std::move (extra_string),
e7e0cddf 12351 type_wanted, disposition,
983af33b 12352 thread, task, ignore_count, ops,
44f238bb 12353 from_tty, enabled, internal, flags,
983af33b
SDJ
12354 canonical->special_display);
12355 /* Given that its possible to have multiple markers with
12356 the same string id, if the user is creating a static
12357 tracepoint by marker id ("strace -m MARKER_ID"), then
12358 store the sals index, so that breakpoint_re_set can
12359 try to match up which of the newly found markers
12360 corresponds to this one */
12361 tp->static_trace_marker_id_idx = i;
12362
b270e6f9 12363 install_breakpoint (internal, std::move (tp), 0);
983af33b
SDJ
12364 }
12365}
12366
6c5b2ebe 12367static std::vector<symtab_and_line>
f00aae0f 12368strace_marker_decode_location (struct breakpoint *b,
626d2320 12369 struct event_location *location,
6c5b2ebe 12370 struct program_space *search_pspace)
983af33b
SDJ
12371{
12372 struct tracepoint *tp = (struct tracepoint *) b;
a20714ff 12373 const char *s = get_linespec_location (location)->spec_string;
983af33b 12374
6c5b2ebe
PA
12375 std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12376 if (sals.size () > tp->static_trace_marker_id_idx)
983af33b 12377 {
6c5b2ebe
PA
12378 sals[0] = sals[tp->static_trace_marker_id_idx];
12379 sals.resize (1);
12380 return sals;
983af33b
SDJ
12381 }
12382 else
5d9310c4 12383 error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
983af33b
SDJ
12384}
12385
12386static struct breakpoint_ops strace_marker_breakpoint_ops;
12387
12388static int
12389strace_marker_p (struct breakpoint *b)
12390{
12391 return b->ops == &strace_marker_breakpoint_ops;
12392}
12393
53a5351d 12394/* Delete a breakpoint and clean up all traces of it in the data
f431efe5 12395 structures. */
c906108c
SS
12396
12397void
fba45db2 12398delete_breakpoint (struct breakpoint *bpt)
c906108c 12399{
8a3fe4f8 12400 gdb_assert (bpt != NULL);
c906108c 12401
4a64f543
MS
12402 /* Has this bp already been deleted? This can happen because
12403 multiple lists can hold pointers to bp's. bpstat lists are
12404 especial culprits.
12405
12406 One example of this happening is a watchpoint's scope bp. When
12407 the scope bp triggers, we notice that the watchpoint is out of
12408 scope, and delete it. We also delete its scope bp. But the
12409 scope bp is marked "auto-deleting", and is already on a bpstat.
12410 That bpstat is then checked for auto-deleting bp's, which are
12411 deleted.
12412
12413 A real solution to this problem might involve reference counts in
12414 bp's, and/or giving them pointers back to their referencing
12415 bpstat's, and teaching delete_breakpoint to only free a bp's
12416 storage when no more references were extent. A cheaper bandaid
12417 was chosen. */
c906108c
SS
12418 if (bpt->type == bp_none)
12419 return;
12420
4a64f543
MS
12421 /* At least avoid this stale reference until the reference counting
12422 of breakpoints gets resolved. */
d0fb5eae 12423 if (bpt->related_breakpoint != bpt)
e5a0a904 12424 {
d0fb5eae 12425 struct breakpoint *related;
3a5c3e22 12426 struct watchpoint *w;
d0fb5eae
JK
12427
12428 if (bpt->type == bp_watchpoint_scope)
3a5c3e22 12429 w = (struct watchpoint *) bpt->related_breakpoint;
d0fb5eae 12430 else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
3a5c3e22
PA
12431 w = (struct watchpoint *) bpt;
12432 else
12433 w = NULL;
12434 if (w != NULL)
12435 watchpoint_del_at_next_stop (w);
d0fb5eae
JK
12436
12437 /* Unlink bpt from the bpt->related_breakpoint ring. */
12438 for (related = bpt; related->related_breakpoint != bpt;
12439 related = related->related_breakpoint);
12440 related->related_breakpoint = bpt->related_breakpoint;
12441 bpt->related_breakpoint = bpt;
e5a0a904
JK
12442 }
12443
a9634178
TJB
12444 /* watch_command_1 creates a watchpoint but only sets its number if
12445 update_watchpoint succeeds in creating its bp_locations. If there's
12446 a problem in that process, we'll be asked to delete the half-created
12447 watchpoint. In that case, don't announce the deletion. */
12448 if (bpt->number)
76727919 12449 gdb::observers::breakpoint_deleted.notify (bpt);
c906108c 12450
c906108c
SS
12451 if (breakpoint_chain == bpt)
12452 breakpoint_chain = bpt->next;
12453
43892fdf 12454 for (breakpoint *b : all_breakpoints ())
c906108c 12455 if (b->next == bpt)
01add95b
SM
12456 {
12457 b->next = bpt->next;
12458 break;
12459 }
c906108c 12460
f431efe5
PA
12461 /* Be sure no bpstat's are pointing at the breakpoint after it's
12462 been freed. */
12463 /* FIXME, how can we find all bpstat's? We just check stop_bpstat
e5dd4106 12464 in all threads for now. Note that we cannot just remove bpstats
f431efe5
PA
12465 pointing at bpt from the stop_bpstat list entirely, as breakpoint
12466 commands are associated with the bpstat; if we remove it here,
12467 then the later call to bpstat_do_actions (&stop_bpstat); in
12468 event-top.c won't do anything, and temporary breakpoints with
12469 commands won't work. */
12470
12471 iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
12472
4a64f543
MS
12473 /* Now that breakpoint is removed from breakpoint list, update the
12474 global location list. This will remove locations that used to
12475 belong to this breakpoint. Do this before freeing the breakpoint
12476 itself, since remove_breakpoint looks at location's owner. It
12477 might be better design to have location completely
12478 self-contained, but it's not the case now. */
44702360 12479 update_global_location_list (UGLL_DONT_INSERT);
74960c60 12480
4a64f543
MS
12481 /* On the chance that someone will soon try again to delete this
12482 same bp, we mark it as deleted before freeing its storage. */
c906108c 12483 bpt->type = bp_none;
4d01a485 12484 delete bpt;
c906108c
SS
12485}
12486
51be5b68
PA
12487/* Iterator function to call a user-provided callback function once
12488 for each of B and its related breakpoints. */
12489
12490static void
12491iterate_over_related_breakpoints (struct breakpoint *b,
48649e1b 12492 gdb::function_view<void (breakpoint *)> function)
51be5b68
PA
12493{
12494 struct breakpoint *related;
12495
12496 related = b;
12497 do
12498 {
12499 struct breakpoint *next;
12500
12501 /* FUNCTION may delete RELATED. */
12502 next = related->related_breakpoint;
12503
12504 if (next == related)
12505 {
12506 /* RELATED is the last ring entry. */
48649e1b 12507 function (related);
51be5b68
PA
12508
12509 /* FUNCTION may have deleted it, so we'd never reach back to
12510 B. There's nothing left to do anyway, so just break
12511 out. */
12512 break;
12513 }
12514 else
48649e1b 12515 function (related);
51be5b68
PA
12516
12517 related = next;
12518 }
12519 while (related != b);
12520}
95a42b64 12521
4495129a 12522static void
981a3fb3 12523delete_command (const char *arg, int from_tty)
c906108c 12524{
ea9365bb
TT
12525 dont_repeat ();
12526
c906108c
SS
12527 if (arg == 0)
12528 {
12529 int breaks_to_delete = 0;
12530
46c6471b 12531 /* Delete all breakpoints if no argument. Do not delete
dda83cd7
SM
12532 internal breakpoints, these have to be deleted with an
12533 explicit breakpoint number argument. */
43892fdf 12534 for (breakpoint *b : all_breakpoints ())
46c6471b 12535 if (user_breakpoint_p (b))
973d738b
DJ
12536 {
12537 breaks_to_delete = 1;
12538 break;
12539 }
c906108c
SS
12540
12541 /* Ask user only if there are some breakpoints to delete. */
12542 if (!from_tty
e2e0b3e5 12543 || (breaks_to_delete && query (_("Delete all breakpoints? "))))
1428b37a
SM
12544 for (breakpoint *b : all_breakpoints_safe ())
12545 if (user_breakpoint_p (b))
12546 delete_breakpoint (b);
c906108c
SS
12547 }
12548 else
48649e1b 12549 map_breakpoint_numbers
b926417a 12550 (arg, [&] (breakpoint *br)
48649e1b 12551 {
b926417a 12552 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 12553 });
c906108c
SS
12554}
12555
c2f4122d
PA
12556/* Return true if all locations of B bound to PSPACE are pending. If
12557 PSPACE is NULL, all locations of all program spaces are
12558 considered. */
12559
0d381245 12560static int
c2f4122d 12561all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
fe3f5fa8 12562{
40cb8ca5 12563 for (bp_location *loc : b->locations ())
c2f4122d
PA
12564 if ((pspace == NULL
12565 || loc->pspace == pspace)
12566 && !loc->shlib_disabled
8645ff69 12567 && !loc->pspace->executing_startup)
0d381245
VP
12568 return 0;
12569 return 1;
fe3f5fa8
VP
12570}
12571
776592bf
DE
12572/* Subroutine of update_breakpoint_locations to simplify it.
12573 Return non-zero if multiple fns in list LOC have the same name.
12574 Null names are ignored. */
12575
12576static int
12577ambiguous_names_p (struct bp_location *loc)
12578{
12579 struct bp_location *l;
2698f5ea 12580 htab_up htab (htab_create_alloc (13, htab_hash_string, htab_eq_string, NULL,
c1fb9836 12581 xcalloc, xfree));
776592bf
DE
12582
12583 for (l = loc; l != NULL; l = l->next)
12584 {
12585 const char **slot;
23d6ee64 12586 const char *name = l->function_name.get ();
776592bf
DE
12587
12588 /* Allow for some names to be NULL, ignore them. */
12589 if (name == NULL)
12590 continue;
12591
c1fb9836 12592 slot = (const char **) htab_find_slot (htab.get (), (const void *) name,
776592bf 12593 INSERT);
4a64f543
MS
12594 /* NOTE: We can assume slot != NULL here because xcalloc never
12595 returns NULL. */
776592bf 12596 if (*slot != NULL)
c1fb9836 12597 return 1;
776592bf
DE
12598 *slot = name;
12599 }
12600
776592bf
DE
12601 return 0;
12602}
12603
0fb4aa4b
PA
12604/* When symbols change, it probably means the sources changed as well,
12605 and it might mean the static tracepoint markers are no longer at
12606 the same address or line numbers they used to be at last we
12607 checked. Losing your static tracepoints whenever you rebuild is
12608 undesirable. This function tries to resync/rematch gdb static
12609 tracepoints with the markers on the target, for static tracepoints
12610 that have not been set by marker id. Static tracepoint that have
12611 been set by marker id are reset by marker id in breakpoint_re_set.
12612 The heuristic is:
12613
12614 1) For a tracepoint set at a specific address, look for a marker at
12615 the old PC. If one is found there, assume to be the same marker.
12616 If the name / string id of the marker found is different from the
12617 previous known name, assume that means the user renamed the marker
12618 in the sources, and output a warning.
12619
12620 2) For a tracepoint set at a given line number, look for a marker
12621 at the new address of the old line number. If one is found there,
12622 assume to be the same marker. If the name / string id of the
12623 marker found is different from the previous known name, assume that
12624 means the user renamed the marker in the sources, and output a
12625 warning.
12626
12627 3) If a marker is no longer found at the same address or line, it
12628 may mean the marker no longer exists. But it may also just mean
12629 the code changed a bit. Maybe the user added a few lines of code
12630 that made the marker move up or down (in line number terms). Ask
12631 the target for info about the marker with the string id as we knew
12632 it. If found, update line number and address in the matching
12633 static tracepoint. This will get confused if there's more than one
12634 marker with the same ID (possible in UST, although unadvised
12635 precisely because it confuses tools). */
12636
12637static struct symtab_and_line
12638update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
12639{
d9b3f62e 12640 struct tracepoint *tp = (struct tracepoint *) b;
0fb4aa4b
PA
12641 struct static_tracepoint_marker marker;
12642 CORE_ADDR pc;
0fb4aa4b
PA
12643
12644 pc = sal.pc;
12645 if (sal.line)
12646 find_line_pc (sal.symtab, sal.line, &pc);
12647
12648 if (target_static_tracepoint_marker_at (pc, &marker))
12649 {
5d9310c4 12650 if (tp->static_trace_marker_id != marker.str_id)
0fb4aa4b 12651 warning (_("static tracepoint %d changed probed marker from %s to %s"),
5d9310c4
SM
12652 b->number, tp->static_trace_marker_id.c_str (),
12653 marker.str_id.c_str ());
0fb4aa4b 12654
5d9310c4 12655 tp->static_trace_marker_id = std::move (marker.str_id);
0fb4aa4b
PA
12656
12657 return sal;
12658 }
12659
12660 /* Old marker wasn't found on target at lineno. Try looking it up
12661 by string ID. */
12662 if (!sal.explicit_pc
12663 && sal.line != 0
12664 && sal.symtab != NULL
5d9310c4 12665 && !tp->static_trace_marker_id.empty ())
0fb4aa4b 12666 {
5d9310c4
SM
12667 std::vector<static_tracepoint_marker> markers
12668 = target_static_tracepoint_markers_by_strid
12669 (tp->static_trace_marker_id.c_str ());
0fb4aa4b 12670
5d9310c4 12671 if (!markers.empty ())
0fb4aa4b 12672 {
0fb4aa4b 12673 struct symbol *sym;
80e1d417 12674 struct static_tracepoint_marker *tpmarker;
79a45e25 12675 struct ui_out *uiout = current_uiout;
67994074 12676 struct explicit_location explicit_loc;
0fb4aa4b 12677
5d9310c4 12678 tpmarker = &markers[0];
0fb4aa4b 12679
5d9310c4 12680 tp->static_trace_marker_id = std::move (tpmarker->str_id);
0fb4aa4b
PA
12681
12682 warning (_("marker for static tracepoint %d (%s) not "
12683 "found at previous line number"),
5d9310c4 12684 b->number, tp->static_trace_marker_id.c_str ());
0fb4aa4b 12685
51abb421 12686 symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
80e1d417 12687 sym = find_pc_sect_function (tpmarker->address, NULL);
112e8700 12688 uiout->text ("Now in ");
0fb4aa4b
PA
12689 if (sym)
12690 {
987012b8 12691 uiout->field_string ("func", sym->print_name (),
e43b10e1 12692 function_name_style.style ());
112e8700 12693 uiout->text (" at ");
0fb4aa4b 12694 }
112e8700 12695 uiout->field_string ("file",
cbe56571 12696 symtab_to_filename_for_display (sal2.symtab),
e43b10e1 12697 file_name_style.style ());
112e8700 12698 uiout->text (":");
0fb4aa4b 12699
112e8700 12700 if (uiout->is_mi_like_p ())
0fb4aa4b 12701 {
0b0865da 12702 const char *fullname = symtab_to_fullname (sal2.symtab);
0fb4aa4b 12703
112e8700 12704 uiout->field_string ("fullname", fullname);
0fb4aa4b
PA
12705 }
12706
381befee 12707 uiout->field_signed ("line", sal2.line);
112e8700 12708 uiout->text ("\n");
0fb4aa4b 12709
80e1d417 12710 b->loc->line_number = sal2.line;
2f202fde 12711 b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
0fb4aa4b 12712
d28cd78a 12713 b->location.reset (NULL);
67994074
KS
12714 initialize_explicit_location (&explicit_loc);
12715 explicit_loc.source_filename
00e52e53 12716 = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
67994074
KS
12717 explicit_loc.line_offset.offset = b->loc->line_number;
12718 explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
d28cd78a 12719 b->location = new_explicit_location (&explicit_loc);
0fb4aa4b
PA
12720
12721 /* Might be nice to check if function changed, and warn if
12722 so. */
0fb4aa4b
PA
12723 }
12724 }
12725 return sal;
12726}
12727
8d3788bd
VP
12728/* Returns 1 iff locations A and B are sufficiently same that
12729 we don't need to report breakpoint as changed. */
12730
12731static int
12732locations_are_equal (struct bp_location *a, struct bp_location *b)
12733{
12734 while (a && b)
12735 {
12736 if (a->address != b->address)
12737 return 0;
12738
12739 if (a->shlib_disabled != b->shlib_disabled)
12740 return 0;
12741
12742 if (a->enabled != b->enabled)
12743 return 0;
12744
b5fa468f
TBA
12745 if (a->disabled_by_cond != b->disabled_by_cond)
12746 return 0;
12747
8d3788bd
VP
12748 a = a->next;
12749 b = b->next;
12750 }
12751
12752 if ((a == NULL) != (b == NULL))
12753 return 0;
12754
12755 return 1;
12756}
12757
c2f4122d
PA
12758/* Split all locations of B that are bound to PSPACE out of B's
12759 location list to a separate list and return that list's head. If
12760 PSPACE is NULL, hoist out all locations of B. */
12761
12762static struct bp_location *
12763hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
12764{
12765 struct bp_location head;
12766 struct bp_location *i = b->loc;
12767 struct bp_location **i_link = &b->loc;
12768 struct bp_location *hoisted = &head;
12769
12770 if (pspace == NULL)
12771 {
12772 i = b->loc;
12773 b->loc = NULL;
12774 return i;
12775 }
12776
12777 head.next = NULL;
12778
12779 while (i != NULL)
12780 {
12781 if (i->pspace == pspace)
12782 {
12783 *i_link = i->next;
12784 i->next = NULL;
12785 hoisted->next = i;
12786 hoisted = i;
12787 }
12788 else
12789 i_link = &i->next;
12790 i = *i_link;
12791 }
12792
12793 return head.next;
12794}
12795
12796/* Create new breakpoint locations for B (a hardware or software
12797 breakpoint) based on SALS and SALS_END. If SALS_END.NELTS is not
12798 zero, then B is a ranged breakpoint. Only recreates locations for
12799 FILTER_PSPACE. Locations of other program spaces are left
12800 untouched. */
f1310107 12801
0e30163f 12802void
0d381245 12803update_breakpoint_locations (struct breakpoint *b,
c2f4122d 12804 struct program_space *filter_pspace,
6c5b2ebe
PA
12805 gdb::array_view<const symtab_and_line> sals,
12806 gdb::array_view<const symtab_and_line> sals_end)
fe3f5fa8 12807{
c2f4122d 12808 struct bp_location *existing_locations;
0d381245 12809
6c5b2ebe 12810 if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
f8eba3c6
TT
12811 {
12812 /* Ranged breakpoints have only one start location and one end
12813 location. */
12814 b->enable_state = bp_disabled;
6cb06a8c
TT
12815 gdb_printf (gdb_stderr,
12816 _("Could not reset ranged breakpoint %d: "
12817 "multiple locations found\n"),
12818 b->number);
f8eba3c6
TT
12819 return;
12820 }
f1310107 12821
4a64f543
MS
12822 /* If there's no new locations, and all existing locations are
12823 pending, don't do anything. This optimizes the common case where
12824 all locations are in the same shared library, that was unloaded.
12825 We'd like to retain the location, so that when the library is
12826 loaded again, we don't loose the enabled/disabled status of the
12827 individual locations. */
6c5b2ebe 12828 if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
fe3f5fa8
VP
12829 return;
12830
c2f4122d 12831 existing_locations = hoist_existing_locations (b, filter_pspace);
fe3f5fa8 12832
6c5b2ebe 12833 for (const auto &sal : sals)
fe3f5fa8 12834 {
f8eba3c6
TT
12835 struct bp_location *new_loc;
12836
6c5b2ebe 12837 switch_to_program_space_and_thread (sal.pspace);
f8eba3c6 12838
6c5b2ebe 12839 new_loc = add_location_to_breakpoint (b, &sal);
fe3f5fa8 12840
0d381245
VP
12841 /* Reparse conditions, they might contain references to the
12842 old symtab. */
12843 if (b->cond_string != NULL)
12844 {
bbc13ae3 12845 const char *s;
fe3f5fa8 12846
6f781ee3 12847 s = b->cond_string.get ();
a70b8144 12848 try
0d381245 12849 {
6c5b2ebe
PA
12850 new_loc->cond = parse_exp_1 (&s, sal.pc,
12851 block_for_pc (sal.pc),
0d381245
VP
12852 0);
12853 }
230d2906 12854 catch (const gdb_exception_error &e)
0d381245 12855 {
b5fa468f 12856 new_loc->disabled_by_cond = true;
0d381245
VP
12857 }
12858 }
fe3f5fa8 12859
6c5b2ebe 12860 if (!sals_end.empty ())
f1310107 12861 {
6c5b2ebe 12862 CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
f1310107 12863
6c5b2ebe 12864 new_loc->length = end - sals[0].pc + 1;
f1310107 12865 }
0d381245 12866 }
fe3f5fa8 12867
4a64f543
MS
12868 /* If possible, carry over 'disable' status from existing
12869 breakpoints. */
0d381245
VP
12870 {
12871 struct bp_location *e = existing_locations;
776592bf
DE
12872 /* If there are multiple breakpoints with the same function name,
12873 e.g. for inline functions, comparing function names won't work.
12874 Instead compare pc addresses; this is just a heuristic as things
12875 may have moved, but in practice it gives the correct answer
12876 often enough until a better solution is found. */
12877 int have_ambiguous_names = ambiguous_names_p (b->loc);
12878
0d381245
VP
12879 for (; e; e = e->next)
12880 {
b5fa468f 12881 if ((!e->enabled || e->disabled_by_cond) && e->function_name)
0d381245 12882 {
776592bf
DE
12883 if (have_ambiguous_names)
12884 {
40cb8ca5 12885 for (bp_location *l : b->locations ())
7f32a4d5
PA
12886 {
12887 /* Ignore software vs hardware location type at
12888 this point, because with "set breakpoint
12889 auto-hw", after a re-set, locations that were
12890 hardware can end up as software, or vice versa.
12891 As mentioned above, this is an heuristic and in
12892 practice should give the correct answer often
12893 enough. */
12894 if (breakpoint_locations_match (e, l, true))
12895 {
b5fa468f
TBA
12896 l->enabled = e->enabled;
12897 l->disabled_by_cond = e->disabled_by_cond;
7f32a4d5
PA
12898 break;
12899 }
12900 }
776592bf
DE
12901 }
12902 else
12903 {
40cb8ca5 12904 for (bp_location *l : b->locations ())
776592bf 12905 if (l->function_name
23d6ee64
TT
12906 && strcmp (e->function_name.get (),
12907 l->function_name.get ()) == 0)
776592bf 12908 {
b5fa468f
TBA
12909 l->enabled = e->enabled;
12910 l->disabled_by_cond = e->disabled_by_cond;
776592bf
DE
12911 break;
12912 }
12913 }
0d381245
VP
12914 }
12915 }
12916 }
fe3f5fa8 12917
8d3788bd 12918 if (!locations_are_equal (existing_locations, b->loc))
76727919 12919 gdb::observers::breakpoint_modified.notify (b);
fe3f5fa8
VP
12920}
12921
f00aae0f 12922/* Find the SaL locations corresponding to the given LOCATION.
ef23e705
TJB
12923 On return, FOUND will be 1 if any SaL was found, zero otherwise. */
12924
6c5b2ebe 12925static std::vector<symtab_and_line>
f00aae0f 12926location_to_sals (struct breakpoint *b, struct event_location *location,
c2f4122d 12927 struct program_space *search_pspace, int *found)
ef23e705 12928{
cc06b668 12929 struct gdb_exception exception;
ef23e705 12930
983af33b 12931 gdb_assert (b->ops != NULL);
ef23e705 12932
6c5b2ebe
PA
12933 std::vector<symtab_and_line> sals;
12934
a70b8144 12935 try
ef23e705 12936 {
6c5b2ebe 12937 sals = b->ops->decode_location (b, location, search_pspace);
ef23e705 12938 }
94aeb44b 12939 catch (gdb_exception_error &e)
ef23e705
TJB
12940 {
12941 int not_found_and_ok = 0;
492d29ea 12942
ef23e705
TJB
12943 /* For pending breakpoints, it's expected that parsing will
12944 fail until the right shared library is loaded. User has
12945 already told to create pending breakpoints and don't need
12946 extra messages. If breakpoint is in bp_shlib_disabled
12947 state, then user already saw the message about that
12948 breakpoint being disabled, and don't want to see more
12949 errors. */
58438ac1 12950 if (e.error == NOT_FOUND_ERROR
c2f4122d
PA
12951 && (b->condition_not_parsed
12952 || (b->loc != NULL
12953 && search_pspace != NULL
12954 && b->loc->pspace != search_pspace)
ef23e705 12955 || (b->loc && b->loc->shlib_disabled)
f8eba3c6 12956 || (b->loc && b->loc->pspace->executing_startup)
ef23e705
TJB
12957 || b->enable_state == bp_disabled))
12958 not_found_and_ok = 1;
12959
12960 if (!not_found_and_ok)
12961 {
12962 /* We surely don't want to warn about the same breakpoint
12963 10 times. One solution, implemented here, is disable
12964 the breakpoint on error. Another solution would be to
12965 have separate 'warning emitted' flag. Since this
12966 happens only when a binary has changed, I don't know
12967 which approach is better. */
12968 b->enable_state = bp_disabled;
eedc3f4f 12969 throw;
ef23e705 12970 }
94aeb44b
TT
12971
12972 exception = std::move (e);
ef23e705
TJB
12973 }
12974
492d29ea 12975 if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
ef23e705 12976 {
6c5b2ebe
PA
12977 for (auto &sal : sals)
12978 resolve_sal_pc (&sal);
f00aae0f 12979 if (b->condition_not_parsed && b->extra_string != NULL)
ef23e705 12980 {
6f781ee3 12981 gdb::unique_xmalloc_ptr<char> cond_string, extra_string;
ed1d1739 12982 int thread, task;
ef23e705 12983
6f781ee3 12984 find_condition_and_thread_for_sals (sals, b->extra_string.get (),
b5fa468f
TBA
12985 &cond_string, &thread,
12986 &task, &extra_string);
f00aae0f 12987 gdb_assert (b->cond_string == NULL);
ef23e705 12988 if (cond_string)
6f781ee3 12989 b->cond_string = std::move (cond_string);
ef23e705
TJB
12990 b->thread = thread;
12991 b->task = task;
e7e0cddf 12992 if (extra_string)
6f781ee3 12993 b->extra_string = std::move (extra_string);
ef23e705
TJB
12994 b->condition_not_parsed = 0;
12995 }
12996
983af33b 12997 if (b->type == bp_static_tracepoint && !strace_marker_p (b))
6c5b2ebe 12998 sals[0] = update_static_tracepoint (b, sals[0]);
ef23e705 12999
58438ac1
TT
13000 *found = 1;
13001 }
13002 else
13003 *found = 0;
ef23e705
TJB
13004
13005 return sals;
13006}
13007
348d480f
PA
13008/* The default re_set method, for typical hardware or software
13009 breakpoints. Reevaluate the breakpoint and recreate its
13010 locations. */
13011
13012static void
28010a5d 13013breakpoint_re_set_default (struct breakpoint *b)
ef23e705 13014{
c2f4122d 13015 struct program_space *filter_pspace = current_program_space;
6c5b2ebe 13016 std::vector<symtab_and_line> expanded, expanded_end;
ef23e705 13017
6c5b2ebe
PA
13018 int found;
13019 std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13020 filter_pspace, &found);
ef23e705 13021 if (found)
6c5b2ebe 13022 expanded = std::move (sals);
ef23e705 13023
f00aae0f 13024 if (b->location_range_end != NULL)
f1310107 13025 {
6c5b2ebe
PA
13026 std::vector<symtab_and_line> sals_end
13027 = location_to_sals (b, b->location_range_end.get (),
13028 filter_pspace, &found);
f1310107 13029 if (found)
6c5b2ebe 13030 expanded_end = std::move (sals_end);
f1310107
TJB
13031 }
13032
c2f4122d 13033 update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
28010a5d
PA
13034}
13035
983af33b
SDJ
13036/* Default method for creating SALs from an address string. It basically
13037 calls parse_breakpoint_sals. Return 1 for success, zero for failure. */
13038
13039static void
626d2320 13040create_sals_from_location_default (struct event_location *location,
f00aae0f
KS
13041 struct linespec_result *canonical,
13042 enum bptype type_wanted)
983af33b 13043{
f00aae0f 13044 parse_breakpoint_sals (location, canonical);
983af33b
SDJ
13045}
13046
13047/* Call create_breakpoints_sal for the given arguments. This is the default
13048 function for the `create_breakpoints_sal' method of
13049 breakpoint_ops. */
13050
13051static void
13052create_breakpoints_sal_default (struct gdbarch *gdbarch,
13053 struct linespec_result *canonical,
e1e01040
PA
13054 gdb::unique_xmalloc_ptr<char> cond_string,
13055 gdb::unique_xmalloc_ptr<char> extra_string,
983af33b
SDJ
13056 enum bptype type_wanted,
13057 enum bpdisp disposition,
13058 int thread,
13059 int task, int ignore_count,
13060 const struct breakpoint_ops *ops,
13061 int from_tty, int enabled,
44f238bb 13062 int internal, unsigned flags)
983af33b 13063{
e1e01040
PA
13064 create_breakpoints_sal (gdbarch, canonical,
13065 std::move (cond_string),
13066 std::move (extra_string),
983af33b
SDJ
13067 type_wanted, disposition,
13068 thread, task, ignore_count, ops, from_tty,
44f238bb 13069 enabled, internal, flags);
983af33b
SDJ
13070}
13071
13072/* Decode the line represented by S by calling decode_line_full. This is the
5f700d83 13073 default function for the `decode_location' method of breakpoint_ops. */
983af33b 13074
6c5b2ebe 13075static std::vector<symtab_and_line>
f00aae0f 13076decode_location_default (struct breakpoint *b,
626d2320 13077 struct event_location *location,
6c5b2ebe 13078 struct program_space *search_pspace)
983af33b
SDJ
13079{
13080 struct linespec_result canonical;
13081
c2f4122d 13082 decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
cafb3438 13083 NULL, 0, &canonical, multiple_symbols_all,
c0e8dcd8 13084 b->filter.get ());
983af33b
SDJ
13085
13086 /* We should get 0 or 1 resulting SALs. */
6c5b2ebe 13087 gdb_assert (canonical.lsals.size () < 2);
983af33b 13088
6c5b2ebe 13089 if (!canonical.lsals.empty ())
983af33b 13090 {
6c5b2ebe
PA
13091 const linespec_sals &lsal = canonical.lsals[0];
13092 return std::move (lsal.sals);
983af33b 13093 }
6c5b2ebe 13094 return {};
983af33b
SDJ
13095}
13096
bf469271 13097/* Reset a breakpoint. */
c906108c 13098
bf469271
PA
13099static void
13100breakpoint_re_set_one (breakpoint *b)
c906108c 13101{
fdf44873
TT
13102 input_radix = b->input_radix;
13103 set_language (b->language);
c906108c 13104
348d480f 13105 b->ops->re_set (b);
c906108c
SS
13106}
13107
c2f4122d
PA
13108/* Re-set breakpoint locations for the current program space.
13109 Locations bound to other program spaces are left untouched. */
13110
c906108c 13111void
69de3c6a 13112breakpoint_re_set (void)
c906108c 13113{
c5aa993b 13114 {
fdf44873
TT
13115 scoped_restore_current_language save_language;
13116 scoped_restore save_input_radix = make_scoped_restore (&input_radix);
5ed8105e 13117 scoped_restore_current_pspace_and_thread restore_pspace_thread;
e62c965a 13118
8e817061
JB
13119 /* breakpoint_re_set_one sets the current_language to the language
13120 of the breakpoint it is resetting (see prepare_re_set_context)
13121 before re-evaluating the breakpoint's location. This change can
13122 unfortunately get undone by accident if the language_mode is set
13123 to auto, and we either switch frames, or more likely in this context,
13124 we select the current frame.
13125
13126 We prevent this by temporarily turning the language_mode to
13127 language_mode_manual. We restore it once all breakpoints
13128 have been reset. */
13129 scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13130 language_mode = language_mode_manual;
13131
5ed8105e
PA
13132 /* Note: we must not try to insert locations until after all
13133 breakpoints have been re-set. Otherwise, e.g., when re-setting
13134 breakpoint 1, we'd insert the locations of breakpoint 2, which
13135 hadn't been re-set yet, and thus may have stale locations. */
4efc6507 13136
1428b37a 13137 for (breakpoint *b : all_breakpoints_safe ())
5ed8105e 13138 {
a70b8144 13139 try
bf469271
PA
13140 {
13141 breakpoint_re_set_one (b);
13142 }
230d2906 13143 catch (const gdb_exception &ex)
bf469271
PA
13144 {
13145 exception_fprintf (gdb_stderr, ex,
13146 "Error in re-setting breakpoint %d: ",
13147 b->number);
13148 }
5ed8105e 13149 }
5ed8105e
PA
13150
13151 jit_breakpoint_re_set ();
13152 }
6c95b8df 13153
af02033e
PP
13154 create_overlay_event_breakpoint ();
13155 create_longjmp_master_breakpoint ();
13156 create_std_terminate_master_breakpoint ();
186c406b 13157 create_exception_master_breakpoint ();
2a7f3dff
PA
13158
13159 /* Now we can insert. */
13160 update_global_location_list (UGLL_MAY_INSERT);
c906108c
SS
13161}
13162\f
c906108c
SS
13163/* Reset the thread number of this breakpoint:
13164
13165 - If the breakpoint is for all threads, leave it as-is.
4a64f543 13166 - Else, reset it to the current thread for inferior_ptid. */
c906108c 13167void
fba45db2 13168breakpoint_re_set_thread (struct breakpoint *b)
c906108c
SS
13169{
13170 if (b->thread != -1)
13171 {
00431a78 13172 b->thread = inferior_thread ()->global_num;
6c95b8df
PA
13173
13174 /* We're being called after following a fork. The new fork is
13175 selected as current, and unless this was a vfork will have a
13176 different program space from the original thread. Reset that
13177 as well. */
13178 b->loc->pspace = current_program_space;
c906108c
SS
13179 }
13180}
13181
03ac34d5
MS
13182/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13183 If from_tty is nonzero, it prints a message to that effect,
13184 which ends with a period (no newline). */
13185
c906108c 13186void
fba45db2 13187set_ignore_count (int bptnum, int count, int from_tty)
c906108c 13188{
c906108c
SS
13189 if (count < 0)
13190 count = 0;
13191
43892fdf 13192 for (breakpoint *b : all_breakpoints ())
c906108c 13193 if (b->number == bptnum)
01add95b
SM
13194 {
13195 if (is_tracepoint (b))
13196 {
13197 if (from_tty && count != 0)
6cb06a8c
TT
13198 gdb_printf (_("Ignore count ignored for tracepoint %d."),
13199 bptnum);
01add95b
SM
13200 return;
13201 }
13202
13203 b->ignore_count = count;
13204 if (from_tty)
13205 {
13206 if (count == 0)
6cb06a8c
TT
13207 gdb_printf (_("Will stop next time "
13208 "breakpoint %d is reached."),
13209 bptnum);
01add95b 13210 else if (count == 1)
6cb06a8c
TT
13211 gdb_printf (_("Will ignore next crossing of breakpoint %d."),
13212 bptnum);
01add95b 13213 else
6cb06a8c
TT
13214 gdb_printf (_("Will ignore next %d "
13215 "crossings of breakpoint %d."),
13216 count, bptnum);
01add95b
SM
13217 }
13218 gdb::observers::breakpoint_modified.notify (b);
13219 return;
13220 }
c906108c 13221
8a3fe4f8 13222 error (_("No breakpoint number %d."), bptnum);
c906108c
SS
13223}
13224
c906108c
SS
13225/* Command to set ignore-count of breakpoint N to COUNT. */
13226
13227static void
0b39b52e 13228ignore_command (const char *args, int from_tty)
c906108c 13229{
0b39b52e 13230 const char *p = args;
52f0bd74 13231 int num;
c906108c
SS
13232
13233 if (p == 0)
e2e0b3e5 13234 error_no_arg (_("a breakpoint number"));
c5aa993b 13235
c906108c 13236 num = get_number (&p);
5c44784c 13237 if (num == 0)
8a3fe4f8 13238 error (_("bad breakpoint number: '%s'"), args);
c906108c 13239 if (*p == 0)
8a3fe4f8 13240 error (_("Second argument (specified ignore-count) is missing."));
c906108c
SS
13241
13242 set_ignore_count (num,
13243 longest_to_int (value_as_long (parse_and_eval (p))),
13244 from_tty);
221ea385 13245 if (from_tty)
6cb06a8c 13246 gdb_printf ("\n");
c906108c
SS
13247}
13248\f
d0fe4701
XR
13249
13250/* Call FUNCTION on each of the breakpoints with numbers in the range
13251 defined by BP_NUM_RANGE (an inclusive range). */
c906108c
SS
13252
13253static void
d0fe4701
XR
13254map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13255 gdb::function_view<void (breakpoint *)> function)
c906108c 13256{
d0fe4701
XR
13257 if (bp_num_range.first == 0)
13258 {
13259 warning (_("bad breakpoint number at or near '%d'"),
13260 bp_num_range.first);
13261 }
13262 else
c906108c 13263 {
d0fe4701 13264 for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
5c44784c 13265 {
d0fe4701
XR
13266 bool match = false;
13267
1428b37a 13268 for (breakpoint *b : all_breakpoints_safe ())
d0fe4701 13269 if (b->number == i)
5c44784c 13270 {
bfd28288 13271 match = true;
48649e1b 13272 function (b);
11cf8741 13273 break;
5c44784c 13274 }
bfd28288 13275 if (!match)
6cb06a8c 13276 gdb_printf (_("No breakpoint number %d.\n"), i);
c5aa993b 13277 }
c906108c
SS
13278 }
13279}
13280
d0fe4701
XR
13281/* Call FUNCTION on each of the breakpoints whose numbers are given in
13282 ARGS. */
13283
13284static void
13285map_breakpoint_numbers (const char *args,
13286 gdb::function_view<void (breakpoint *)> function)
13287{
13288 if (args == NULL || *args == '\0')
13289 error_no_arg (_("one or more breakpoint numbers"));
13290
13291 number_or_range_parser parser (args);
13292
13293 while (!parser.finished ())
13294 {
13295 int num = parser.get_number ();
13296 map_breakpoint_number_range (std::make_pair (num, num), function);
13297 }
13298}
13299
13300/* Return the breakpoint location structure corresponding to the
13301 BP_NUM and LOC_NUM values. */
13302
0d381245 13303static struct bp_location *
d0fe4701 13304find_location_by_number (int bp_num, int loc_num)
0d381245 13305{
43892fdf 13306 breakpoint *b = get_breakpoint (bp_num);
0d381245
VP
13307
13308 if (!b || b->number != bp_num)
d0fe4701 13309 error (_("Bad breakpoint number '%d'"), bp_num);
0d381245 13310
0d381245 13311 if (loc_num == 0)
d0fe4701 13312 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245 13313
d0fe4701 13314 int n = 0;
40cb8ca5 13315 for (bp_location *loc : b->locations ())
d0fe4701
XR
13316 if (++n == loc_num)
13317 return loc;
13318
13319 error (_("Bad breakpoint location number '%d'"), loc_num);
0d381245
VP
13320}
13321
95e95a6d
PA
13322/* Modes of operation for extract_bp_num. */
13323enum class extract_bp_kind
13324{
13325 /* Extracting a breakpoint number. */
13326 bp,
13327
13328 /* Extracting a location number. */
13329 loc,
13330};
13331
13332/* Extract a breakpoint or location number (as determined by KIND)
13333 from the string starting at START. TRAILER is a character which
13334 can be found after the number. If you don't want a trailer, use
13335 '\0'. If END_OUT is not NULL, it is set to point after the parsed
13336 string. This always returns a positive integer. */
13337
13338static int
13339extract_bp_num (extract_bp_kind kind, const char *start,
13340 int trailer, const char **end_out = NULL)
13341{
13342 const char *end = start;
13343 int num = get_number_trailer (&end, trailer);
13344 if (num < 0)
13345 error (kind == extract_bp_kind::bp
13346 ? _("Negative breakpoint number '%.*s'")
13347 : _("Negative breakpoint location number '%.*s'"),
13348 int (end - start), start);
13349 if (num == 0)
13350 error (kind == extract_bp_kind::bp
13351 ? _("Bad breakpoint number '%.*s'")
13352 : _("Bad breakpoint location number '%.*s'"),
13353 int (end - start), start);
13354
13355 if (end_out != NULL)
13356 *end_out = end;
13357 return num;
13358}
13359
13360/* Extract a breakpoint or location range (as determined by KIND) in
13361 the form NUM1-NUM2 stored at &ARG[arg_offset]. Returns a std::pair
13362 representing the (inclusive) range. The returned pair's elements
13363 are always positive integers. */
13364
13365static std::pair<int, int>
13366extract_bp_or_bp_range (extract_bp_kind kind,
13367 const std::string &arg,
13368 std::string::size_type arg_offset)
13369{
13370 std::pair<int, int> range;
13371 const char *bp_loc = &arg[arg_offset];
13372 std::string::size_type dash = arg.find ('-', arg_offset);
13373 if (dash != std::string::npos)
13374 {
13375 /* bp_loc is a range (x-z). */
13376 if (arg.length () == dash + 1)
13377 error (kind == extract_bp_kind::bp
13378 ? _("Bad breakpoint number at or near: '%s'")
13379 : _("Bad breakpoint location number at or near: '%s'"),
13380 bp_loc);
13381
13382 const char *end;
13383 const char *start_first = bp_loc;
13384 const char *start_second = &arg[dash + 1];
13385 range.first = extract_bp_num (kind, start_first, '-');
13386 range.second = extract_bp_num (kind, start_second, '\0', &end);
13387
13388 if (range.first > range.second)
13389 error (kind == extract_bp_kind::bp
13390 ? _("Inverted breakpoint range at '%.*s'")
13391 : _("Inverted breakpoint location range at '%.*s'"),
13392 int (end - start_first), start_first);
13393 }
13394 else
13395 {
13396 /* bp_loc is a single value. */
13397 range.first = extract_bp_num (kind, bp_loc, '\0');
13398 range.second = range.first;
13399 }
13400 return range;
13401}
13402
d0fe4701
XR
13403/* Extract the breakpoint/location range specified by ARG. Returns
13404 the breakpoint range in BP_NUM_RANGE, and the location range in
13405 BP_LOC_RANGE.
13406
13407 ARG may be in any of the following forms:
13408
13409 x where 'x' is a breakpoint number.
13410 x-y where 'x' and 'y' specify a breakpoint numbers range.
13411 x.y where 'x' is a breakpoint number and 'y' a location number.
13412 x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
13413 location number range.
13414*/
13415
cc638e86 13416static void
d0fe4701
XR
13417extract_bp_number_and_location (const std::string &arg,
13418 std::pair<int, int> &bp_num_range,
13419 std::pair<int, int> &bp_loc_range)
13420{
13421 std::string::size_type dot = arg.find ('.');
13422
13423 if (dot != std::string::npos)
13424 {
13425 /* Handle 'x.y' and 'x.y-z' cases. */
13426
13427 if (arg.length () == dot + 1 || dot == 0)
95e95a6d 13428 error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
d0fe4701 13429
95e95a6d
PA
13430 bp_num_range.first
13431 = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
13432 bp_num_range.second = bp_num_range.first;
d0fe4701 13433
95e95a6d
PA
13434 bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
13435 arg, dot + 1);
d0fe4701
XR
13436 }
13437 else
13438 {
13439 /* Handle x and x-y cases. */
d0fe4701 13440
95e95a6d 13441 bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
d0fe4701
XR
13442 bp_loc_range.first = 0;
13443 bp_loc_range.second = 0;
13444 }
d0fe4701
XR
13445}
13446
13447/* Enable or disable a breakpoint location BP_NUM.LOC_NUM. ENABLE
13448 specifies whether to enable or disable. */
13449
13450static void
13451enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
13452{
13453 struct bp_location *loc = find_location_by_number (bp_num, loc_num);
13454 if (loc != NULL)
13455 {
b5fa468f
TBA
13456 if (loc->disabled_by_cond && enable)
13457 error (_("Breakpoint %d's condition is invalid at location %d, "
13458 "cannot enable."), bp_num, loc_num);
13459
d0fe4701
XR
13460 if (loc->enabled != enable)
13461 {
13462 loc->enabled = enable;
13463 mark_breakpoint_location_modified (loc);
13464 }
13465 if (target_supports_enable_disable_tracepoint ()
13466 && current_trace_status ()->running && loc->owner
13467 && is_tracepoint (loc->owner))
13468 target_disable_tracepoint (loc);
13469 }
13470 update_global_location_list (UGLL_DONT_INSERT);
d7154a8d
JV
13471
13472 gdb::observers::breakpoint_modified.notify (loc->owner);
d0fe4701
XR
13473}
13474
13475/* Enable or disable a range of breakpoint locations. BP_NUM is the
13476 number of the breakpoint, and BP_LOC_RANGE specifies the
13477 (inclusive) range of location numbers of that breakpoint to
13478 enable/disable. ENABLE specifies whether to enable or disable the
13479 location. */
13480
13481static void
13482enable_disable_breakpoint_location_range (int bp_num,
13483 std::pair<int, int> &bp_loc_range,
13484 bool enable)
13485{
13486 for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
13487 enable_disable_bp_num_loc (bp_num, i, enable);
13488}
0d381245 13489
1900040c
MS
13490/* Set ignore-count of breakpoint number BPTNUM to COUNT.
13491 If from_tty is nonzero, it prints a message to that effect,
13492 which ends with a period (no newline). */
13493
c906108c 13494void
fba45db2 13495disable_breakpoint (struct breakpoint *bpt)
c906108c
SS
13496{
13497 /* Never disable a watchpoint scope breakpoint; we want to
13498 hit them when we leave scope so we can delete both the
13499 watchpoint and its scope breakpoint at that time. */
13500 if (bpt->type == bp_watchpoint_scope)
13501 return;
13502
b5de0fa7 13503 bpt->enable_state = bp_disabled;
c906108c 13504
b775012e
LM
13505 /* Mark breakpoint locations modified. */
13506 mark_breakpoint_modified (bpt);
13507
d248b706
KY
13508 if (target_supports_enable_disable_tracepoint ()
13509 && current_trace_status ()->running && is_tracepoint (bpt))
13510 {
40cb8ca5 13511 for (bp_location *location : bpt->locations ())
d248b706
KY
13512 target_disable_tracepoint (location);
13513 }
13514
44702360 13515 update_global_location_list (UGLL_DONT_INSERT);
c906108c 13516
76727919 13517 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
13518}
13519
d0fe4701
XR
13520/* Enable or disable the breakpoint(s) or breakpoint location(s)
13521 specified in ARGS. ARGS may be in any of the formats handled by
13522 extract_bp_number_and_location. ENABLE specifies whether to enable
13523 or disable the breakpoints/locations. */
13524
c906108c 13525static void
d0fe4701 13526enable_disable_command (const char *args, int from_tty, bool enable)
c906108c 13527{
c906108c 13528 if (args == 0)
46c6471b 13529 {
43892fdf 13530 for (breakpoint *bpt : all_breakpoints ())
46c6471b 13531 if (user_breakpoint_p (bpt))
d0fe4701
XR
13532 {
13533 if (enable)
13534 enable_breakpoint (bpt);
13535 else
13536 disable_breakpoint (bpt);
13537 }
46c6471b 13538 }
9eaabc75 13539 else
0d381245 13540 {
cb791d59 13541 std::string num = extract_arg (&args);
9eaabc75 13542
cb791d59 13543 while (!num.empty ())
d248b706 13544 {
d0fe4701 13545 std::pair<int, int> bp_num_range, bp_loc_range;
9eaabc75 13546
cc638e86
PA
13547 extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
13548
13549 if (bp_loc_range.first == bp_loc_range.second
13550 && bp_loc_range.first == 0)
d0fe4701 13551 {
cc638e86
PA
13552 /* Handle breakpoint ids with formats 'x' or 'x-z'. */
13553 map_breakpoint_number_range (bp_num_range,
13554 enable
13555 ? enable_breakpoint
13556 : disable_breakpoint);
13557 }
13558 else
13559 {
13560 /* Handle breakpoint ids with formats 'x.y' or
13561 'x.y-z'. */
13562 enable_disable_breakpoint_location_range
13563 (bp_num_range.first, bp_loc_range, enable);
b775012e 13564 }
9eaabc75 13565 num = extract_arg (&args);
d248b706 13566 }
0d381245 13567 }
c906108c
SS
13568}
13569
d0fe4701
XR
13570/* The disable command disables the specified breakpoints/locations
13571 (or all defined breakpoints) so they're no longer effective in
13572 stopping the inferior. ARGS may be in any of the forms defined in
13573 extract_bp_number_and_location. */
13574
13575static void
13576disable_command (const char *args, int from_tty)
13577{
13578 enable_disable_command (args, from_tty, false);
13579}
13580
c906108c 13581static void
816338b5
SS
13582enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
13583 int count)
c906108c 13584{
afe38095 13585 int target_resources_ok;
c906108c
SS
13586
13587 if (bpt->type == bp_hardware_breakpoint)
13588 {
13589 int i;
c5aa993b 13590 i = hw_breakpoint_used_count ();
53a5351d 13591 target_resources_ok =
d92524f1 13592 target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
53a5351d 13593 i + 1, 0);
c906108c 13594 if (target_resources_ok == 0)
8a3fe4f8 13595 error (_("No hardware breakpoint support in the target."));
c906108c 13596 else if (target_resources_ok < 0)
8a3fe4f8 13597 error (_("Hardware breakpoints used exceeds limit."));
c906108c
SS
13598 }
13599
cc60f2e3 13600 if (is_watchpoint (bpt))
c906108c 13601 {
d07205c2 13602 /* Initialize it just to avoid a GCC false warning. */
f486487f 13603 enum enable_state orig_enable_state = bp_disabled;
dde02812 13604
a70b8144 13605 try
c906108c 13606 {
3a5c3e22
PA
13607 struct watchpoint *w = (struct watchpoint *) bpt;
13608
1e718ff1
TJB
13609 orig_enable_state = bpt->enable_state;
13610 bpt->enable_state = bp_enabled;
3a5c3e22 13611 update_watchpoint (w, 1 /* reparse */);
c906108c 13612 }
230d2906 13613 catch (const gdb_exception &e)
c5aa993b 13614 {
1e718ff1 13615 bpt->enable_state = orig_enable_state;
dde02812
ES
13616 exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
13617 bpt->number);
13618 return;
c5aa993b 13619 }
c906108c 13620 }
0101ce28 13621
b775012e
LM
13622 bpt->enable_state = bp_enabled;
13623
13624 /* Mark breakpoint locations modified. */
13625 mark_breakpoint_modified (bpt);
13626
d248b706
KY
13627 if (target_supports_enable_disable_tracepoint ()
13628 && current_trace_status ()->running && is_tracepoint (bpt))
13629 {
40cb8ca5 13630 for (bp_location *location : bpt->locations ())
d248b706
KY
13631 target_enable_tracepoint (location);
13632 }
13633
b4c291bb 13634 bpt->disposition = disposition;
816338b5 13635 bpt->enable_count = count;
44702360 13636 update_global_location_list (UGLL_MAY_INSERT);
9c97429f 13637
76727919 13638 gdb::observers::breakpoint_modified.notify (bpt);
c906108c
SS
13639}
13640
fe3f5fa8 13641
c906108c 13642void
fba45db2 13643enable_breakpoint (struct breakpoint *bpt)
c906108c 13644{
816338b5 13645 enable_breakpoint_disp (bpt, bpt->disposition, 0);
51be5b68
PA
13646}
13647
d0fe4701
XR
13648/* The enable command enables the specified breakpoints/locations (or
13649 all defined breakpoints) so they once again become (or continue to
13650 be) effective in stopping the inferior. ARGS may be in any of the
13651 forms defined in extract_bp_number_and_location. */
c906108c 13652
c906108c 13653static void
981a3fb3 13654enable_command (const char *args, int from_tty)
c906108c 13655{
d0fe4701 13656 enable_disable_command (args, from_tty, true);
c906108c
SS
13657}
13658
c906108c 13659static void
4495129a 13660enable_once_command (const char *args, int from_tty)
c906108c 13661{
48649e1b
TT
13662 map_breakpoint_numbers
13663 (args, [&] (breakpoint *b)
13664 {
13665 iterate_over_related_breakpoints
13666 (b, [&] (breakpoint *bpt)
13667 {
13668 enable_breakpoint_disp (bpt, disp_disable, 1);
13669 });
13670 });
816338b5
SS
13671}
13672
13673static void
4495129a 13674enable_count_command (const char *args, int from_tty)
816338b5 13675{
b9d61307
SM
13676 int count;
13677
13678 if (args == NULL)
13679 error_no_arg (_("hit count"));
13680
13681 count = get_number (&args);
816338b5 13682
48649e1b
TT
13683 map_breakpoint_numbers
13684 (args, [&] (breakpoint *b)
13685 {
13686 iterate_over_related_breakpoints
13687 (b, [&] (breakpoint *bpt)
13688 {
13689 enable_breakpoint_disp (bpt, disp_disable, count);
13690 });
13691 });
c906108c
SS
13692}
13693
c906108c 13694static void
4495129a 13695enable_delete_command (const char *args, int from_tty)
c906108c 13696{
48649e1b
TT
13697 map_breakpoint_numbers
13698 (args, [&] (breakpoint *b)
13699 {
13700 iterate_over_related_breakpoints
13701 (b, [&] (breakpoint *bpt)
13702 {
13703 enable_breakpoint_disp (bpt, disp_del, 1);
13704 });
13705 });
c906108c
SS
13706}
13707\f
1f3b5d1b
PP
13708/* Invalidate last known value of any hardware watchpoint if
13709 the memory which that value represents has been written to by
13710 GDB itself. */
13711
13712static void
8de0566d
YQ
13713invalidate_bp_value_on_memory_change (struct inferior *inferior,
13714 CORE_ADDR addr, ssize_t len,
1f3b5d1b
PP
13715 const bfd_byte *data)
13716{
43892fdf 13717 for (breakpoint *bp : all_breakpoints ())
1f3b5d1b 13718 if (bp->enable_state == bp_enabled
3a5c3e22 13719 && bp->type == bp_hardware_watchpoint)
1f3b5d1b 13720 {
3a5c3e22 13721 struct watchpoint *wp = (struct watchpoint *) bp;
1f3b5d1b 13722
850645cf 13723 if (wp->val_valid && wp->val != nullptr)
3a5c3e22 13724 {
40cb8ca5 13725 for (bp_location *loc : bp->locations ())
3a5c3e22
PA
13726 if (loc->loc_type == bp_loc_hardware_watchpoint
13727 && loc->address + loc->length > addr
13728 && addr + len > loc->address)
13729 {
3a5c3e22 13730 wp->val = NULL;
4c1d86d9 13731 wp->val_valid = false;
3a5c3e22
PA
13732 }
13733 }
1f3b5d1b
PP
13734 }
13735}
13736
8181d85f
DJ
13737/* Create and insert a breakpoint for software single step. */
13738
13739void
6c95b8df 13740insert_single_step_breakpoint (struct gdbarch *gdbarch,
accd0bcd 13741 const address_space *aspace,
4a64f543 13742 CORE_ADDR next_pc)
8181d85f 13743{
7c16b83e
PA
13744 struct thread_info *tp = inferior_thread ();
13745 struct symtab_and_line sal;
13746 CORE_ADDR pc = next_pc;
8181d85f 13747
34b7e8a6
PA
13748 if (tp->control.single_step_breakpoints == NULL)
13749 {
13750 tp->control.single_step_breakpoints
5d5658a1 13751 = new_single_step_breakpoint (tp->global_num, gdbarch);
34b7e8a6 13752 }
8181d85f 13753
7c16b83e
PA
13754 sal = find_pc_line (pc, 0);
13755 sal.pc = pc;
13756 sal.section = find_pc_overlay (pc);
13757 sal.explicit_pc = 1;
34b7e8a6 13758 add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
8181d85f 13759
7c16b83e 13760 update_global_location_list (UGLL_INSERT);
8181d85f
DJ
13761}
13762
93f9a11f
YQ
13763/* Insert single step breakpoints according to the current state. */
13764
13765int
13766insert_single_step_breakpoints (struct gdbarch *gdbarch)
13767{
f5ea389a 13768 struct regcache *regcache = get_current_regcache ();
a0ff9e1a 13769 std::vector<CORE_ADDR> next_pcs;
93f9a11f 13770
f5ea389a 13771 next_pcs = gdbarch_software_single_step (gdbarch, regcache);
93f9a11f 13772
a0ff9e1a 13773 if (!next_pcs.empty ())
93f9a11f 13774 {
f5ea389a 13775 struct frame_info *frame = get_current_frame ();
8b86c959 13776 const address_space *aspace = get_frame_address_space (frame);
93f9a11f 13777
a0ff9e1a 13778 for (CORE_ADDR pc : next_pcs)
93f9a11f
YQ
13779 insert_single_step_breakpoint (gdbarch, aspace, pc);
13780
93f9a11f
YQ
13781 return 1;
13782 }
13783 else
13784 return 0;
13785}
13786
34b7e8a6 13787/* See breakpoint.h. */
f02253f1
HZ
13788
13789int
7c16b83e 13790breakpoint_has_location_inserted_here (struct breakpoint *bp,
accd0bcd 13791 const address_space *aspace,
7c16b83e 13792 CORE_ADDR pc)
1aafd4da 13793{
40cb8ca5 13794 for (bp_location *loc : bp->locations ())
7c16b83e
PA
13795 if (loc->inserted
13796 && breakpoint_location_address_match (loc, aspace, pc))
13797 return 1;
1aafd4da 13798
7c16b83e 13799 return 0;
ef370185
JB
13800}
13801
13802/* Check whether a software single-step breakpoint is inserted at
13803 PC. */
13804
13805int
accd0bcd 13806single_step_breakpoint_inserted_here_p (const address_space *aspace,
ef370185
JB
13807 CORE_ADDR pc)
13808{
43892fdf 13809 for (breakpoint *bpt : all_breakpoints ())
34b7e8a6
PA
13810 {
13811 if (bpt->type == bp_single_step
13812 && breakpoint_has_location_inserted_here (bpt, aspace, pc))
13813 return 1;
13814 }
13815 return 0;
1aafd4da
UW
13816}
13817
1042e4c0
SS
13818/* Tracepoint-specific operations. */
13819
13820/* Set tracepoint count to NUM. */
13821static void
13822set_tracepoint_count (int num)
13823{
13824 tracepoint_count = num;
4fa62494 13825 set_internalvar_integer (lookup_internalvar ("tpnum"), num);
1042e4c0
SS
13826}
13827
70221824 13828static void
0b39b52e 13829trace_command (const char *arg, int from_tty)
1042e4c0 13830{
ffc2605c
TT
13831 event_location_up location = string_to_event_location (&arg,
13832 current_language);
bac7c5cf
GB
13833 const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
13834 (location.get (), true /* is_tracepoint */);
55aa24fb 13835
558a9d82 13836 create_breakpoint (get_current_arch (),
ffc2605c 13837 location.get (),
10a636cc 13838 NULL, 0, arg, false, 1 /* parse arg */,
558a9d82
YQ
13839 0 /* tempflag */,
13840 bp_tracepoint /* type_wanted */,
13841 0 /* Ignore count */,
13842 pending_break_support,
13843 ops,
13844 from_tty,
13845 1 /* enabled */,
13846 0 /* internal */, 0);
1042e4c0
SS
13847}
13848
70221824 13849static void
0b39b52e 13850ftrace_command (const char *arg, int from_tty)
7a697b8d 13851{
ffc2605c
TT
13852 event_location_up location = string_to_event_location (&arg,
13853 current_language);
558a9d82 13854 create_breakpoint (get_current_arch (),
ffc2605c 13855 location.get (),
10a636cc 13856 NULL, 0, arg, false, 1 /* parse arg */,
558a9d82
YQ
13857 0 /* tempflag */,
13858 bp_fast_tracepoint /* type_wanted */,
13859 0 /* Ignore count */,
13860 pending_break_support,
13861 &tracepoint_breakpoint_ops,
13862 from_tty,
13863 1 /* enabled */,
13864 0 /* internal */, 0);
0fb4aa4b
PA
13865}
13866
13867/* strace command implementation. Creates a static tracepoint. */
13868
70221824 13869static void
0b39b52e 13870strace_command (const char *arg, int from_tty)
0fb4aa4b 13871{
983af33b 13872 struct breakpoint_ops *ops;
ffc2605c 13873 event_location_up location;
983af33b
SDJ
13874
13875 /* Decide if we are dealing with a static tracepoint marker (`-m'),
13876 or with a normal static tracepoint. */
61012eef 13877 if (arg && startswith (arg, "-m") && isspace (arg[2]))
f00aae0f
KS
13878 {
13879 ops = &strace_marker_breakpoint_ops;
a20714ff 13880 location = new_linespec_location (&arg, symbol_name_match_type::FULL);
f00aae0f 13881 }
983af33b 13882 else
f00aae0f
KS
13883 {
13884 ops = &tracepoint_breakpoint_ops;
13885 location = string_to_event_location (&arg, current_language);
13886 }
983af33b 13887
558a9d82 13888 create_breakpoint (get_current_arch (),
ffc2605c 13889 location.get (),
10a636cc 13890 NULL, 0, arg, false, 1 /* parse arg */,
558a9d82
YQ
13891 0 /* tempflag */,
13892 bp_static_tracepoint /* type_wanted */,
13893 0 /* Ignore count */,
13894 pending_break_support,
13895 ops,
13896 from_tty,
13897 1 /* enabled */,
13898 0 /* internal */, 0);
7a697b8d
SS
13899}
13900
409873ef
SS
13901/* Set up a fake reader function that gets command lines from a linked
13902 list that was acquired during tracepoint uploading. */
13903
13904static struct uploaded_tp *this_utp;
3149d8c1 13905static int next_cmd;
409873ef
SS
13906
13907static char *
13908read_uploaded_action (void)
13909{
a18ba4e4 13910 char *rslt = nullptr;
409873ef 13911
a18ba4e4
SM
13912 if (next_cmd < this_utp->cmd_strings.size ())
13913 {
67aa1f3c 13914 rslt = this_utp->cmd_strings[next_cmd].get ();
a18ba4e4
SM
13915 next_cmd++;
13916 }
409873ef
SS
13917
13918 return rslt;
13919}
13920
00bf0b85
SS
13921/* Given information about a tracepoint as recorded on a target (which
13922 can be either a live system or a trace file), attempt to create an
13923 equivalent GDB tracepoint. This is not a reliable process, since
13924 the target does not necessarily have all the information used when
13925 the tracepoint was originally defined. */
13926
d9b3f62e 13927struct tracepoint *
00bf0b85 13928create_tracepoint_from_upload (struct uploaded_tp *utp)
d5551862 13929{
f2fc3015
TT
13930 const char *addr_str;
13931 char small_buf[100];
d9b3f62e 13932 struct tracepoint *tp;
fd9b8c24 13933
409873ef 13934 if (utp->at_string)
67aa1f3c 13935 addr_str = utp->at_string.get ();
409873ef
SS
13936 else
13937 {
13938 /* In the absence of a source location, fall back to raw
13939 address. Since there is no way to confirm that the address
13940 means the same thing as when the trace was started, warn the
13941 user. */
3e43a32a
MS
13942 warning (_("Uploaded tracepoint %d has no "
13943 "source location, using raw address"),
409873ef 13944 utp->number);
8c042590 13945 xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
409873ef
SS
13946 addr_str = small_buf;
13947 }
13948
13949 /* There's not much we can do with a sequence of bytecodes. */
13950 if (utp->cond && !utp->cond_string)
3e43a32a
MS
13951 warning (_("Uploaded tracepoint %d condition "
13952 "has no source form, ignoring it"),
409873ef 13953 utp->number);
d5551862 13954
ffc2605c
TT
13955 event_location_up location = string_to_event_location (&addr_str,
13956 current_language);
8cdf0e15 13957 if (!create_breakpoint (get_current_arch (),
ffc2605c 13958 location.get (),
67aa1f3c 13959 utp->cond_string.get (), -1, addr_str,
10a636cc 13960 false /* force_condition */,
e7e0cddf 13961 0 /* parse cond/thread */,
8cdf0e15 13962 0 /* tempflag */,
0fb4aa4b 13963 utp->type /* type_wanted */,
8cdf0e15
VP
13964 0 /* Ignore count */,
13965 pending_break_support,
348d480f 13966 &tracepoint_breakpoint_ops,
8cdf0e15 13967 0 /* from_tty */,
84f4c1fe 13968 utp->enabled /* enabled */,
44f238bb
PA
13969 0 /* internal */,
13970 CREATE_BREAKPOINT_FLAGS_INSERTED))
ffc2605c 13971 return NULL;
fd9b8c24 13972
409873ef 13973 /* Get the tracepoint we just created. */
fd9b8c24
PA
13974 tp = get_tracepoint (tracepoint_count);
13975 gdb_assert (tp != NULL);
d5551862 13976
00bf0b85
SS
13977 if (utp->pass > 0)
13978 {
8c042590 13979 xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
c1fc2657 13980 tp->number);
00bf0b85 13981
409873ef 13982 trace_pass_command (small_buf, 0);
00bf0b85
SS
13983 }
13984
409873ef
SS
13985 /* If we have uploaded versions of the original commands, set up a
13986 special-purpose "reader" function and call the usual command line
13987 reader, then pass the result to the breakpoint command-setting
13988 function. */
a18ba4e4 13989 if (!utp->cmd_strings.empty ())
00bf0b85 13990 {
12973681 13991 counted_command_line cmd_list;
00bf0b85 13992
409873ef 13993 this_utp = utp;
3149d8c1 13994 next_cmd = 0;
d5551862 13995
60b3cef2 13996 cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
409873ef 13997
c1fc2657 13998 breakpoint_set_commands (tp, std::move (cmd_list));
00bf0b85 13999 }
a18ba4e4
SM
14000 else if (!utp->actions.empty ()
14001 || !utp->step_actions.empty ())
3e43a32a
MS
14002 warning (_("Uploaded tracepoint %d actions "
14003 "have no source form, ignoring them"),
409873ef 14004 utp->number);
00bf0b85 14005
f196051f 14006 /* Copy any status information that might be available. */
c1fc2657 14007 tp->hit_count = utp->hit_count;
f196051f
SS
14008 tp->traceframe_usage = utp->traceframe_usage;
14009
00bf0b85 14010 return tp;
d9b3f62e 14011}
00bf0b85 14012
1042e4c0
SS
14013/* Print information on tracepoint number TPNUM_EXP, or all if
14014 omitted. */
14015
14016static void
1d12d88f 14017info_tracepoints_command (const char *args, int from_tty)
1042e4c0 14018{
79a45e25 14019 struct ui_out *uiout = current_uiout;
e5a67952 14020 int num_printed;
1042e4c0 14021
5c458ae8 14022 num_printed = breakpoint_1 (args, false, is_tracepoint);
d77f58be
SS
14023
14024 if (num_printed == 0)
1042e4c0 14025 {
e5a67952 14026 if (args == NULL || *args == '\0')
112e8700 14027 uiout->message ("No tracepoints.\n");
d77f58be 14028 else
112e8700 14029 uiout->message ("No tracepoint matching '%s'.\n", args);
1042e4c0 14030 }
ad443146
SS
14031
14032 default_collect_info ();
1042e4c0
SS
14033}
14034
4a64f543 14035/* The 'enable trace' command enables tracepoints.
1042e4c0
SS
14036 Not supported by all targets. */
14037static void
5fed81ff 14038enable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14039{
14040 enable_command (args, from_tty);
14041}
14042
4a64f543 14043/* The 'disable trace' command disables tracepoints.
1042e4c0
SS
14044 Not supported by all targets. */
14045static void
5fed81ff 14046disable_trace_command (const char *args, int from_tty)
1042e4c0
SS
14047{
14048 disable_command (args, from_tty);
14049}
14050
4a64f543 14051/* Remove a tracepoint (or all if no argument). */
1042e4c0 14052static void
4495129a 14053delete_trace_command (const char *arg, int from_tty)
1042e4c0 14054{
1042e4c0
SS
14055 dont_repeat ();
14056
14057 if (arg == 0)
14058 {
14059 int breaks_to_delete = 0;
14060
14061 /* Delete all breakpoints if no argument.
dda83cd7
SM
14062 Do not delete internal or call-dummy breakpoints, these
14063 have to be deleted with an explicit breakpoint number
4a64f543 14064 argument. */
f6d17b2b 14065 for (breakpoint *tp : all_tracepoints ())
1428b37a 14066 if (is_tracepoint (tp) && user_breakpoint_p (tp))
1042e4c0
SS
14067 {
14068 breaks_to_delete = 1;
14069 break;
14070 }
1042e4c0
SS
14071
14072 /* Ask user only if there are some breakpoints to delete. */
14073 if (!from_tty
14074 || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14075 {
1428b37a 14076 for (breakpoint *b : all_breakpoints_safe ())
46c6471b 14077 if (is_tracepoint (b) && user_breakpoint_p (b))
1042e4c0 14078 delete_breakpoint (b);
1042e4c0
SS
14079 }
14080 }
14081 else
48649e1b 14082 map_breakpoint_numbers
b926417a 14083 (arg, [&] (breakpoint *br)
48649e1b 14084 {
b926417a 14085 iterate_over_related_breakpoints (br, delete_breakpoint);
48649e1b 14086 });
1042e4c0
SS
14087}
14088
197f0a60
TT
14089/* Helper function for trace_pass_command. */
14090
14091static void
d9b3f62e 14092trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
197f0a60 14093{
d9b3f62e 14094 tp->pass_count = count;
76727919 14095 gdb::observers::breakpoint_modified.notify (tp);
197f0a60 14096 if (from_tty)
6cb06a8c
TT
14097 gdb_printf (_("Setting tracepoint %d's passcount to %d\n"),
14098 tp->number, count);
197f0a60
TT
14099}
14100
1042e4c0
SS
14101/* Set passcount for tracepoint.
14102
14103 First command argument is passcount, second is tracepoint number.
14104 If tracepoint number omitted, apply to most recently defined.
14105 Also accepts special argument "all". */
14106
14107static void
0b39b52e 14108trace_pass_command (const char *args, int from_tty)
1042e4c0 14109{
d9b3f62e 14110 struct tracepoint *t1;
0b39b52e 14111 ULONGEST count;
1042e4c0
SS
14112
14113 if (args == 0 || *args == 0)
3e43a32a
MS
14114 error (_("passcount command requires an "
14115 "argument (count + optional TP num)"));
1042e4c0 14116
0b39b52e 14117 count = strtoulst (args, &args, 10); /* Count comes first, then TP num. */
1042e4c0 14118
529480d0 14119 args = skip_spaces (args);
1042e4c0
SS
14120 if (*args && strncasecmp (args, "all", 3) == 0)
14121 {
14122 args += 3; /* Skip special argument "all". */
1042e4c0
SS
14123 if (*args)
14124 error (_("Junk at end of arguments."));
1042e4c0 14125
f6d17b2b 14126 for (breakpoint *b : all_tracepoints ())
01add95b
SM
14127 {
14128 t1 = (struct tracepoint *) b;
14129 trace_pass_set_count (t1, count, from_tty);
14130 }
197f0a60
TT
14131 }
14132 else if (*args == '\0')
1042e4c0 14133 {
5fa1d40e 14134 t1 = get_tracepoint_by_number (&args, NULL);
1042e4c0 14135 if (t1)
197f0a60
TT
14136 trace_pass_set_count (t1, count, from_tty);
14137 }
14138 else
14139 {
bfd28288
PA
14140 number_or_range_parser parser (args);
14141 while (!parser.finished ())
1042e4c0 14142 {
bfd28288 14143 t1 = get_tracepoint_by_number (&args, &parser);
197f0a60
TT
14144 if (t1)
14145 trace_pass_set_count (t1, count, from_tty);
1042e4c0
SS
14146 }
14147 }
1042e4c0
SS
14148}
14149
d9b3f62e 14150struct tracepoint *
1042e4c0
SS
14151get_tracepoint (int num)
14152{
f6d17b2b 14153 for (breakpoint *t : all_tracepoints ())
1042e4c0 14154 if (t->number == num)
d9b3f62e 14155 return (struct tracepoint *) t;
1042e4c0
SS
14156
14157 return NULL;
14158}
14159
d5551862
SS
14160/* Find the tracepoint with the given target-side number (which may be
14161 different from the tracepoint number after disconnecting and
14162 reconnecting). */
14163
d9b3f62e 14164struct tracepoint *
d5551862
SS
14165get_tracepoint_by_number_on_target (int num)
14166{
f6d17b2b 14167 for (breakpoint *b : all_tracepoints ())
d9b3f62e
PA
14168 {
14169 struct tracepoint *t = (struct tracepoint *) b;
14170
14171 if (t->number_on_target == num)
14172 return t;
14173 }
d5551862
SS
14174
14175 return NULL;
14176}
14177
1042e4c0 14178/* Utility: parse a tracepoint number and look it up in the list.
197f0a60 14179 If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
5fa1d40e
YQ
14180 If the argument is missing, the most recent tracepoint
14181 (tracepoint_count) is returned. */
14182
d9b3f62e 14183struct tracepoint *
0b39b52e 14184get_tracepoint_by_number (const char **arg,
bfd28288 14185 number_or_range_parser *parser)
1042e4c0 14186{
1042e4c0 14187 int tpnum;
0b39b52e 14188 const char *instring = arg == NULL ? NULL : *arg;
1042e4c0 14189
bfd28288 14190 if (parser != NULL)
197f0a60 14191 {
bfd28288
PA
14192 gdb_assert (!parser->finished ());
14193 tpnum = parser->get_number ();
197f0a60
TT
14194 }
14195 else if (arg == NULL || *arg == NULL || ! **arg)
5fa1d40e 14196 tpnum = tracepoint_count;
1042e4c0 14197 else
197f0a60 14198 tpnum = get_number (arg);
1042e4c0
SS
14199
14200 if (tpnum <= 0)
14201 {
14202 if (instring && *instring)
6cb06a8c
TT
14203 gdb_printf (_("bad tracepoint number at or near '%s'\n"),
14204 instring);
1042e4c0 14205 else
6cb06a8c 14206 gdb_printf (_("No previous tracepoint\n"));
1042e4c0
SS
14207 return NULL;
14208 }
14209
f6d17b2b 14210 for (breakpoint *t : all_tracepoints ())
1042e4c0 14211 if (t->number == tpnum)
d9b3f62e 14212 return (struct tracepoint *) t;
1042e4c0 14213
6cb06a8c 14214 gdb_printf ("No tracepoint number %d.\n", tpnum);
1042e4c0
SS
14215 return NULL;
14216}
14217
d9b3f62e
PA
14218void
14219print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14220{
14221 if (b->thread != -1)
6cb06a8c 14222 gdb_printf (fp, " thread %d", b->thread);
d9b3f62e
PA
14223
14224 if (b->task != 0)
6cb06a8c 14225 gdb_printf (fp, " task %d", b->task);
d9b3f62e 14226
6cb06a8c 14227 gdb_printf (fp, "\n");
d9b3f62e
PA
14228}
14229
6149aea9
PA
14230/* Save information on user settable breakpoints (watchpoints, etc) to
14231 a new script file named FILENAME. If FILTER is non-NULL, call it
14232 on each breakpoint and only include the ones for which it returns
f2478a7e 14233 true. */
6149aea9 14234
1042e4c0 14235static void
4495129a 14236save_breakpoints (const char *filename, int from_tty,
f2478a7e 14237 bool (*filter) (const struct breakpoint *))
1042e4c0 14238{
6149aea9 14239 int any = 0;
6149aea9 14240 int extra_trace_bits = 0;
1042e4c0 14241
6149aea9
PA
14242 if (filename == 0 || *filename == 0)
14243 error (_("Argument required (file name in which to save)"));
1042e4c0
SS
14244
14245 /* See if we have anything to save. */
43892fdf 14246 for (breakpoint *tp : all_breakpoints ())
01add95b
SM
14247 {
14248 /* Skip internal and momentary breakpoints. */
14249 if (!user_breakpoint_p (tp))
14250 continue;
6149aea9 14251
01add95b
SM
14252 /* If we have a filter, only save the breakpoints it accepts. */
14253 if (filter && !filter (tp))
14254 continue;
6149aea9 14255
01add95b 14256 any = 1;
6149aea9 14257
01add95b
SM
14258 if (is_tracepoint (tp))
14259 {
14260 extra_trace_bits = 1;
6149aea9 14261
01add95b
SM
14262 /* We can stop searching. */
14263 break;
14264 }
14265 }
6149aea9
PA
14266
14267 if (!any)
1042e4c0 14268 {
6149aea9 14269 warning (_("Nothing to save."));
1042e4c0
SS
14270 return;
14271 }
14272
ee0c3293 14273 gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
d7e74731
PA
14274
14275 stdio_file fp;
14276
ee0c3293 14277 if (!fp.open (expanded_filename.get (), "w"))
6149aea9 14278 error (_("Unable to open file '%s' for saving (%s)"),
ee0c3293 14279 expanded_filename.get (), safe_strerror (errno));
8bf6485c 14280
6149aea9 14281 if (extra_trace_bits)
d7e74731 14282 save_trace_state_variables (&fp);
8bf6485c 14283
43892fdf 14284 for (breakpoint *tp : all_breakpoints ())
01add95b
SM
14285 {
14286 /* Skip internal and momentary breakpoints. */
14287 if (!user_breakpoint_p (tp))
14288 continue;
8bf6485c 14289
01add95b
SM
14290 /* If we have a filter, only save the breakpoints it accepts. */
14291 if (filter && !filter (tp))
14292 continue;
6149aea9 14293
01add95b 14294 tp->ops->print_recreate (tp, &fp);
1042e4c0 14295
01add95b
SM
14296 /* Note, we can't rely on tp->number for anything, as we can't
14297 assume the recreated breakpoint numbers will match. Use $bpnum
14298 instead. */
6149aea9 14299
01add95b 14300 if (tp->cond_string)
6f781ee3 14301 fp.printf (" condition $bpnum %s\n", tp->cond_string.get ());
6149aea9 14302
01add95b
SM
14303 if (tp->ignore_count)
14304 fp.printf (" ignore $bpnum %d\n", tp->ignore_count);
6149aea9 14305
01add95b
SM
14306 if (tp->type != bp_dprintf && tp->commands)
14307 {
14308 fp.puts (" commands\n");
1042e4c0 14309
01add95b
SM
14310 current_uiout->redirect (&fp);
14311 try
14312 {
14313 print_command_lines (current_uiout, tp->commands.get (), 2);
14314 }
14315 catch (const gdb_exception &ex)
14316 {
14317 current_uiout->redirect (NULL);
14318 throw;
14319 }
6149aea9 14320
01add95b
SM
14321 current_uiout->redirect (NULL);
14322 fp.puts (" end\n");
14323 }
6149aea9 14324
01add95b
SM
14325 if (tp->enable_state == bp_disabled)
14326 fp.puts ("disable $bpnum\n");
6149aea9 14327
01add95b
SM
14328 /* If this is a multi-location breakpoint, check if the locations
14329 should be individually disabled. Watchpoint locations are
14330 special, and not user visible. */
14331 if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14332 {
14333 int n = 1;
40cb8ca5 14334
01add95b
SM
14335 for (bp_location *loc : tp->locations ())
14336 {
14337 if (!loc->enabled)
14338 fp.printf ("disable $bpnum.%d\n", n);
14339
14340 n++;
14341 }
14342 }
14343 }
8bf6485c 14344
e0700ba4
SM
14345 if (extra_trace_bits && !default_collect.empty ())
14346 fp.printf ("set default-collect %s\n", default_collect.c_str ());
8bf6485c 14347
1042e4c0 14348 if (from_tty)
6cb06a8c 14349 gdb_printf (_("Saved to file '%s'.\n"), expanded_filename.get ());
6149aea9
PA
14350}
14351
14352/* The `save breakpoints' command. */
14353
14354static void
4495129a 14355save_breakpoints_command (const char *args, int from_tty)
6149aea9
PA
14356{
14357 save_breakpoints (args, from_tty, NULL);
14358}
14359
14360/* The `save tracepoints' command. */
14361
14362static void
4495129a 14363save_tracepoints_command (const char *args, int from_tty)
6149aea9
PA
14364{
14365 save_breakpoints (args, from_tty, is_tracepoint);
1042e4c0
SS
14366}
14367
c906108c 14368\f
629500fa
KS
14369/* This help string is used to consolidate all the help string for specifying
14370 locations used by several commands. */
14371
14372#define LOCATION_HELP_STRING \
14373"Linespecs are colon-separated lists of location parameters, such as\n\
14374source filename, function name, label name, and line number.\n\
14375Example: To specify the start of a label named \"the_top\" in the\n\
14376function \"fact\" in the file \"factorial.c\", use\n\
14377\"factorial.c:fact:the_top\".\n\
14378\n\
14379Address locations begin with \"*\" and specify an exact address in the\n\
14380program. Example: To specify the fourth byte past the start function\n\
14381\"main\", use \"*main + 4\".\n\
14382\n\
14383Explicit locations are similar to linespecs but use an option/argument\n\
14384syntax to specify location parameters.\n\
14385Example: To specify the start of the label named \"the_top\" in the\n\
14386function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
a20714ff
PA
14387-function fact -label the_top\".\n\
14388\n\
14389By default, a specified function is matched against the program's\n\
14390functions in all scopes. For C++, this means in all namespaces and\n\
14391classes. For Ada, this means in all packages. E.g., in C++,\n\
14392\"func()\" matches \"A::func()\", \"A::B::func()\", etc. The\n\
14393\"-qualified\" flag overrides this behavior, making GDB interpret the\n\
89549d7f 14394specified name as a complete fully-qualified name instead."
629500fa 14395
4a64f543
MS
14396/* This help string is used for the break, hbreak, tbreak and thbreak
14397 commands. It is defined as a macro to prevent duplication.
14398 COMMAND should be a string constant containing the name of the
14399 command. */
629500fa 14400
31e2b00f 14401#define BREAK_ARGS_HELP(command) \
733d554a
TBA
14402command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]\n\
14403\t[-force-condition] [if CONDITION]\n\
fb7b5af4
SDJ
14404PROBE_MODIFIER shall be present if the command is to be placed in a\n\
14405probe point. Accepted values are `-probe' (for a generic, automatically\n\
d4777acb
JM
14406guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
14407`-probe-dtrace' (for a DTrace probe).\n\
629500fa
KS
14408LOCATION may be a linespec, address, or explicit location as described\n\
14409below.\n\
14410\n\
dc10affe
PA
14411With no LOCATION, uses current execution address of the selected\n\
14412stack frame. This is useful for breaking on return to a stack frame.\n\
31e2b00f
AS
14413\n\
14414THREADNUM is the number from \"info threads\".\n\
14415CONDITION is a boolean expression.\n\
733d554a
TBA
14416\n\
14417With the \"-force-condition\" flag, the condition is defined even when\n\
14418it is invalid for all current locations.\n\
89549d7f 14419\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
14420Multiple breakpoints at one place are permitted, and useful if their\n\
14421conditions are different.\n\
31e2b00f
AS
14422\n\
14423Do \"help breakpoints\" for info on other commands dealing with breakpoints."
14424
44feb3ce
TT
14425/* List of subcommands for "catch". */
14426static struct cmd_list_element *catch_cmdlist;
14427
14428/* List of subcommands for "tcatch". */
14429static struct cmd_list_element *tcatch_cmdlist;
14430
9ac4176b 14431void
a121b7c1 14432add_catch_command (const char *name, const char *docstring,
5538b03c 14433 cmd_func_ftype *func,
625e8578 14434 completer_ftype *completer,
44feb3ce
TT
14435 void *user_data_catch,
14436 void *user_data_tcatch)
14437{
14438 struct cmd_list_element *command;
14439
0450cc4c 14440 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce 14441 &catch_cmdlist);
5538b03c 14442 command->func = func;
0f8e2034 14443 command->set_context (user_data_catch);
a96d9b2e 14444 set_cmd_completer (command, completer);
44feb3ce 14445
0450cc4c 14446 command = add_cmd (name, class_breakpoint, docstring,
44feb3ce 14447 &tcatch_cmdlist);
5538b03c 14448 command->func = func;
0f8e2034 14449 command->set_context (user_data_tcatch);
a96d9b2e 14450 set_cmd_completer (command, completer);
44feb3ce
TT
14451}
14452
0574c78f
GB
14453/* Zero if any of the breakpoint's locations could be a location where
14454 functions have been inlined, nonzero otherwise. */
14455
14456static int
14457is_non_inline_function (struct breakpoint *b)
14458{
14459 /* The shared library event breakpoint is set on the address of a
14460 non-inline function. */
14461 if (b->type == bp_shlib_event)
14462 return 1;
14463
14464 return 0;
14465}
14466
14467/* Nonzero if the specified PC cannot be a location where functions
14468 have been inlined. */
14469
14470int
accd0bcd 14471pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
c272a98c 14472 const target_waitstatus &ws)
0574c78f 14473{
43892fdf 14474 for (breakpoint *b : all_breakpoints ())
0574c78f
GB
14475 {
14476 if (!is_non_inline_function (b))
14477 continue;
14478
40cb8ca5 14479 for (bp_location *bl : b->locations ())
0574c78f
GB
14480 {
14481 if (!bl->shlib_disabled
09ac7c10 14482 && bpstat_check_location (bl, aspace, pc, ws))
0574c78f
GB
14483 return 1;
14484 }
14485 }
14486
14487 return 0;
14488}
14489
2f202fde
JK
14490/* Remove any references to OBJFILE which is going to be freed. */
14491
14492void
14493breakpoint_free_objfile (struct objfile *objfile)
14494{
48d7020b 14495 for (bp_location *loc : all_bp_locations ())
3c86fae3 14496 if (loc->symtab != NULL && loc->symtab->compunit ()->objfile () == objfile)
2f202fde
JK
14497 loc->symtab = NULL;
14498}
14499
2060206e
PA
14500void
14501initialize_breakpoint_ops (void)
14502{
14503 static int initialized = 0;
14504
14505 struct breakpoint_ops *ops;
14506
14507 if (initialized)
14508 return;
14509 initialized = 1;
14510
14511 /* The breakpoint_ops structure to be inherit by all kinds of
14512 breakpoints (real breakpoints, i.e., user "break" breakpoints,
14513 internal and momentary breakpoints, etc.). */
14514 ops = &bkpt_base_breakpoint_ops;
14515 *ops = base_breakpoint_ops;
14516 ops->re_set = bkpt_re_set;
14517 ops->insert_location = bkpt_insert_location;
14518 ops->remove_location = bkpt_remove_location;
14519 ops->breakpoint_hit = bkpt_breakpoint_hit;
66895797
TT
14520 ops->create_sals_from_location = create_sals_from_location_default;
14521 ops->create_breakpoints_sal = create_breakpoints_sal_default;
5f700d83 14522 ops->decode_location = bkpt_decode_location;
2060206e
PA
14523
14524 /* The breakpoint_ops structure to be used in regular breakpoints. */
14525 ops = &bkpt_breakpoint_ops;
14526 *ops = bkpt_base_breakpoint_ops;
14527 ops->re_set = bkpt_re_set;
14528 ops->resources_needed = bkpt_resources_needed;
14529 ops->print_it = bkpt_print_it;
14530 ops->print_mention = bkpt_print_mention;
14531 ops->print_recreate = bkpt_print_recreate;
14532
14533 /* Ranged breakpoints. */
14534 ops = &ranged_breakpoint_ops;
14535 *ops = bkpt_breakpoint_ops;
14536 ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
14537 ops->resources_needed = resources_needed_ranged_breakpoint;
14538 ops->print_it = print_it_ranged_breakpoint;
14539 ops->print_one = print_one_ranged_breakpoint;
14540 ops->print_one_detail = print_one_detail_ranged_breakpoint;
14541 ops->print_mention = print_mention_ranged_breakpoint;
14542 ops->print_recreate = print_recreate_ranged_breakpoint;
14543
14544 /* Internal breakpoints. */
14545 ops = &internal_breakpoint_ops;
14546 *ops = bkpt_base_breakpoint_ops;
14547 ops->re_set = internal_bkpt_re_set;
14548 ops->check_status = internal_bkpt_check_status;
14549 ops->print_it = internal_bkpt_print_it;
14550 ops->print_mention = internal_bkpt_print_mention;
14551
14552 /* Momentary breakpoints. */
14553 ops = &momentary_breakpoint_ops;
14554 *ops = bkpt_base_breakpoint_ops;
14555 ops->re_set = momentary_bkpt_re_set;
14556 ops->check_status = momentary_bkpt_check_status;
14557 ops->print_it = momentary_bkpt_print_it;
14558 ops->print_mention = momentary_bkpt_print_mention;
14559
55aa24fb
SDJ
14560 /* Probe breakpoints. */
14561 ops = &bkpt_probe_breakpoint_ops;
14562 *ops = bkpt_breakpoint_ops;
14563 ops->insert_location = bkpt_probe_insert_location;
14564 ops->remove_location = bkpt_probe_remove_location;
5f700d83
KS
14565 ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
14566 ops->decode_location = bkpt_probe_decode_location;
55aa24fb 14567
2060206e
PA
14568 /* Tracepoints. */
14569 ops = &tracepoint_breakpoint_ops;
14570 *ops = base_breakpoint_ops;
14571 ops->re_set = tracepoint_re_set;
14572 ops->breakpoint_hit = tracepoint_breakpoint_hit;
14573 ops->print_one_detail = tracepoint_print_one_detail;
14574 ops->print_mention = tracepoint_print_mention;
14575 ops->print_recreate = tracepoint_print_recreate;
66895797
TT
14576 ops->create_sals_from_location = create_sals_from_location_default;
14577 ops->create_breakpoints_sal = create_breakpoints_sal_default;
5f700d83 14578 ops->decode_location = tracepoint_decode_location;
983af33b 14579
55aa24fb
SDJ
14580 /* Probe tracepoints. */
14581 ops = &tracepoint_probe_breakpoint_ops;
14582 *ops = tracepoint_breakpoint_ops;
5f700d83
KS
14583 ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
14584 ops->decode_location = tracepoint_probe_decode_location;
55aa24fb 14585
983af33b
SDJ
14586 /* Static tracepoints with marker (`-m'). */
14587 ops = &strace_marker_breakpoint_ops;
14588 *ops = tracepoint_breakpoint_ops;
5f700d83 14589 ops->create_sals_from_location = strace_marker_create_sals_from_location;
983af33b 14590 ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
5f700d83 14591 ops->decode_location = strace_marker_decode_location;
2060206e 14592
e7e0cddf
SS
14593 ops = &dprintf_breakpoint_ops;
14594 *ops = bkpt_base_breakpoint_ops;
5c2b4418 14595 ops->re_set = dprintf_re_set;
e7e0cddf
SS
14596 ops->resources_needed = bkpt_resources_needed;
14597 ops->print_it = bkpt_print_it;
14598 ops->print_mention = bkpt_print_mention;
2d9442cc 14599 ops->print_recreate = dprintf_print_recreate;
9d6e6e84 14600 ops->after_condition_true = dprintf_after_condition_true;
cd1608cc 14601 ops->breakpoint_hit = dprintf_breakpoint_hit;
2060206e
PA
14602}
14603
8bfd80db
YQ
14604/* Chain containing all defined "enable breakpoint" subcommands. */
14605
14606static struct cmd_list_element *enablebreaklist = NULL;
14607
8588b356
SM
14608/* See breakpoint.h. */
14609
14610cmd_list_element *commands_cmd_element = nullptr;
14611
6c265988 14612void _initialize_breakpoint ();
c906108c 14613void
6c265988 14614_initialize_breakpoint ()
c906108c
SS
14615{
14616 struct cmd_list_element *c;
14617
2060206e
PA
14618 initialize_breakpoint_ops ();
14619
c90e7d63
SM
14620 gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib,
14621 "breakpoint");
14622 gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile,
14623 "breakpoint");
14624 gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change,
14625 "breakpoint");
84acb35a 14626
c906108c
SS
14627 breakpoint_chain = 0;
14628 /* Don't bother to call set_breakpoint_count. $bpnum isn't useful
14629 before a breakpoint is set. */
14630 breakpoint_count = 0;
14631
1042e4c0
SS
14632 tracepoint_count = 0;
14633
1bedd215
AC
14634 add_com ("ignore", class_breakpoint, ignore_command, _("\
14635Set ignore-count of breakpoint number N to COUNT.\n\
14636Usage is `ignore N COUNT'."));
c906108c 14637
8588b356
SM
14638 commands_cmd_element = add_com ("commands", class_breakpoint,
14639 commands_command, _("\
18da0c51
MG
14640Set commands to be executed when the given breakpoints are hit.\n\
14641Give a space-separated breakpoint list as argument after \"commands\".\n\
14642A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
14643(e.g. `5-7').\n\
c906108c
SS
14644With no argument, the targeted breakpoint is the last one set.\n\
14645The commands themselves follow starting on the next line.\n\
14646Type a line containing \"end\" to indicate the end of them.\n\
14647Give \"silent\" as the first line to make the breakpoint silent;\n\
1bedd215 14648then no output is printed when it is hit, except what the commands print."));
c906108c 14649
b1d4d8d1
TBA
14650 const auto cc_opts = make_condition_command_options_def_group (nullptr);
14651 static std::string condition_command_help
14652 = gdb::option::build_help (_("\
1bedd215 14653Specify breakpoint number N to break only if COND is true.\n\
b1d4d8d1 14654Usage is `condition [OPTION] N COND', where N is an integer and COND\n\
733d554a 14655is an expression to be evaluated whenever breakpoint N is reached.\n\
b1d4d8d1
TBA
14656\n\
14657Options:\n\
14658%OPTIONS%"), cc_opts);
14659
14660 c = add_com ("condition", class_breakpoint, condition_command,
14661 condition_command_help.c_str ());
14662 set_cmd_completer_handle_brkchars (c, condition_completer);
c906108c 14663
1bedd215 14664 c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
31e2b00f 14665Set a temporary breakpoint.\n\
c906108c
SS
14666Like \"break\" except the breakpoint is only temporary,\n\
14667so it will be deleted when hit. Equivalent to \"break\" followed\n\
31e2b00f
AS
14668by using \"enable delete\" on the breakpoint number.\n\
14669\n"
14670BREAK_ARGS_HELP ("tbreak")));
5ba2abeb 14671 set_cmd_completer (c, location_completer);
c94fdfd0 14672
1bedd215 14673 c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
a3be7890 14674Set a hardware assisted breakpoint.\n\
c906108c 14675Like \"break\" except the breakpoint requires hardware support,\n\
31e2b00f
AS
14676some target hardware may not have this support.\n\
14677\n"
14678BREAK_ARGS_HELP ("hbreak")));
5ba2abeb 14679 set_cmd_completer (c, location_completer);
c906108c 14680
1bedd215 14681 c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
31e2b00f 14682Set a temporary hardware assisted breakpoint.\n\
c906108c 14683Like \"hbreak\" except the breakpoint is only temporary,\n\
31e2b00f
AS
14684so it will be deleted when hit.\n\
14685\n"
14686BREAK_ARGS_HELP ("thbreak")));
5ba2abeb 14687 set_cmd_completer (c, location_completer);
c906108c 14688
3947f654
SM
14689 cmd_list_element *enable_cmd
14690 = add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
590042fc
PW
14691Enable all or some breakpoints.\n\
14692Usage: enable [BREAKPOINTNUM]...\n\
c906108c
SS
14693Give breakpoint numbers (separated by spaces) as arguments.\n\
14694With no subcommand, breakpoints are enabled until you command otherwise.\n\
14695This is used to cancel the effect of the \"disable\" command.\n\
1bedd215 14696With a subcommand you can enable temporarily."),
3947f654 14697 &enablelist, 1, &cmdlist);
c906108c 14698
3947f654 14699 add_com_alias ("en", enable_cmd, class_breakpoint, 1);
c906108c 14700
84951ab5 14701 add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
590042fc
PW
14702Enable all or some breakpoints.\n\
14703Usage: enable breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
14704Give breakpoint numbers (separated by spaces) as arguments.\n\
14705This is used to cancel the effect of the \"disable\" command.\n\
89549d7f 14706May be abbreviated to simply \"enable\"."),
2f822da5 14707 &enablebreaklist, 1, &enablelist);
c906108c 14708
1a966eab 14709 add_cmd ("once", no_class, enable_once_command, _("\
590042fc
PW
14710Enable some breakpoints for one hit.\n\
14711Usage: enable breakpoints once BREAKPOINTNUM...\n\
1a966eab 14712If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
c906108c
SS
14713 &enablebreaklist);
14714
1a966eab 14715 add_cmd ("delete", no_class, enable_delete_command, _("\
590042fc
PW
14716Enable some breakpoints and delete when hit.\n\
14717Usage: enable breakpoints delete BREAKPOINTNUM...\n\
1a966eab 14718If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
14719 &enablebreaklist);
14720
816338b5 14721 add_cmd ("count", no_class, enable_count_command, _("\
590042fc
PW
14722Enable some breakpoints for COUNT hits.\n\
14723Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n\
816338b5
SS
14724If a breakpoint is hit while enabled in this fashion,\n\
14725the count is decremented; when it reaches zero, the breakpoint is disabled."),
14726 &enablebreaklist);
14727
1a966eab 14728 add_cmd ("delete", no_class, enable_delete_command, _("\
590042fc
PW
14729Enable some breakpoints and delete when hit.\n\
14730Usage: enable delete BREAKPOINTNUM...\n\
1a966eab 14731If a breakpoint is hit while enabled in this fashion, it is deleted."),
c906108c
SS
14732 &enablelist);
14733
1a966eab 14734 add_cmd ("once", no_class, enable_once_command, _("\
590042fc
PW
14735Enable some breakpoints for one hit.\n\
14736Usage: enable once BREAKPOINTNUM...\n\
1a966eab 14737If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
816338b5
SS
14738 &enablelist);
14739
14740 add_cmd ("count", no_class, enable_count_command, _("\
590042fc
PW
14741Enable some breakpoints for COUNT hits.\n\
14742Usage: enable count COUNT BREAKPOINTNUM...\n\
816338b5
SS
14743If a breakpoint is hit while enabled in this fashion,\n\
14744the count is decremented; when it reaches zero, the breakpoint is disabled."),
c906108c
SS
14745 &enablelist);
14746
3947f654
SM
14747 cmd_list_element *disable_cmd
14748 = add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
590042fc
PW
14749Disable all or some breakpoints.\n\
14750Usage: disable [BREAKPOINTNUM]...\n\
c906108c
SS
14751Arguments are breakpoint numbers with spaces in between.\n\
14752To disable all breakpoints, give no argument.\n\
64b9b334 14753A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
3947f654
SM
14754 &disablelist, 1, &cmdlist);
14755 add_com_alias ("dis", disable_cmd, class_breakpoint, 1);
14756 add_com_alias ("disa", disable_cmd, class_breakpoint, 1);
c906108c 14757
57b4f16e 14758 add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
590042fc
PW
14759Disable all or some breakpoints.\n\
14760Usage: disable breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
14761Arguments are breakpoint numbers with spaces in between.\n\
14762To disable all breakpoints, give no argument.\n\
64b9b334 14763A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
1a966eab 14764This command may be abbreviated \"disable\"."),
c906108c
SS
14765 &disablelist);
14766
3947f654
SM
14767 cmd_list_element *delete_cmd
14768 = add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
590042fc
PW
14769Delete all or some breakpoints.\n\
14770Usage: delete [BREAKPOINTNUM]...\n\
c906108c
SS
14771Arguments are breakpoint numbers with spaces in between.\n\
14772To delete all breakpoints, give no argument.\n\
14773\n\
590042fc 14774Also a prefix command for deletion of other GDB objects."),
3947f654
SM
14775 &deletelist, 1, &cmdlist);
14776 add_com_alias ("d", delete_cmd, class_breakpoint, 1);
14777 add_com_alias ("del", delete_cmd, class_breakpoint, 1);
c906108c 14778
57b4f16e 14779 add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
590042fc
PW
14780Delete all or some breakpoints or auto-display expressions.\n\
14781Usage: delete breakpoints [BREAKPOINTNUM]...\n\
c906108c
SS
14782Arguments are breakpoint numbers with spaces in between.\n\
14783To delete all breakpoints, give no argument.\n\
1a966eab 14784This command may be abbreviated \"delete\"."),
c906108c
SS
14785 &deletelist);
14786
3947f654
SM
14787 cmd_list_element *clear_cmd
14788 = add_com ("clear", class_breakpoint, clear_command, _("\
629500fa
KS
14789Clear breakpoint at specified location.\n\
14790Argument may be a linespec, explicit, or address location as described below.\n\
1bedd215
AC
14791\n\
14792With no argument, clears all breakpoints in the line that the selected frame\n\
629500fa 14793is executing in.\n"
89549d7f 14794"\n" LOCATION_HELP_STRING "\n\n\
1bedd215 14795See also the \"delete\" command which clears breakpoints by number."));
3947f654 14796 add_com_alias ("cl", clear_cmd, class_breakpoint, 1);
c906108c 14797
3947f654
SM
14798 cmd_list_element *break_cmd
14799 = add_com ("break", class_breakpoint, break_command, _("\
629500fa 14800Set breakpoint at specified location.\n"
31e2b00f 14801BREAK_ARGS_HELP ("break")));
3947f654 14802 set_cmd_completer (break_cmd, location_completer);
c94fdfd0 14803
3947f654
SM
14804 add_com_alias ("b", break_cmd, class_run, 1);
14805 add_com_alias ("br", break_cmd, class_run, 1);
14806 add_com_alias ("bre", break_cmd, class_run, 1);
14807 add_com_alias ("brea", break_cmd, class_run, 1);
c906108c 14808
e0f25bd9
SM
14809 cmd_list_element *info_breakpoints_cmd
14810 = add_info ("breakpoints", info_breakpoints_command, _("\
e5a67952 14811Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
c906108c
SS
14812The \"Type\" column indicates one of:\n\
14813\tbreakpoint - normal breakpoint\n\
14814\twatchpoint - watchpoint\n\
14815The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
14816the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
14817breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1bedd215
AC
14818address and file/line number respectively.\n\
14819\n\
14820Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
14821are set to the address of the last breakpoint listed unless the command\n\
14822is prefixed with \"server \".\n\n\
c906108c 14823Convenience variable \"$bpnum\" contains the number of the last\n\
1bedd215 14824breakpoint set."));
c906108c 14825
e0f25bd9 14826 add_info_alias ("b", info_breakpoints_cmd, 1);
6b04bdb7 14827
1a966eab
AC
14828 add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
14829Status of all breakpoints, or breakpoint number NUMBER.\n\
c906108c
SS
14830The \"Type\" column indicates one of:\n\
14831\tbreakpoint - normal breakpoint\n\
14832\twatchpoint - watchpoint\n\
14833\tlongjmp - internal breakpoint used to step through longjmp()\n\
14834\tlongjmp resume - internal breakpoint at the target of longjmp()\n\
14835\tuntil - internal breakpoint used by the \"until\" command\n\
1a966eab
AC
14836\tfinish - internal breakpoint used by the \"finish\" command\n\
14837The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
c906108c
SS
14838the disposition of the breakpoint after it gets hit. \"dis\" means that the\n\
14839breakpoint will be disabled. The \"Address\" and \"What\" columns indicate the\n\
1a966eab
AC
14840address and file/line number respectively.\n\
14841\n\
14842Convenience variable \"$_\" and default examine address for \"x\"\n\
d1aa2f50
NR
14843are set to the address of the last breakpoint listed unless the command\n\
14844is prefixed with \"server \".\n\n\
c906108c 14845Convenience variable \"$bpnum\" contains the number of the last\n\
1a966eab 14846breakpoint set."),
c906108c
SS
14847 &maintenanceinfolist);
14848
3b6acaee 14849 add_basic_prefix_cmd ("catch", class_breakpoint, _("\
44feb3ce 14850Set catchpoints to catch events."),
2f822da5 14851 &catch_cmdlist,
3b6acaee 14852 0/*allow-unknown*/, &cmdlist);
44feb3ce 14853
3b6acaee 14854 add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
44feb3ce 14855Set temporary catchpoints to catch events."),
2f822da5 14856 &tcatch_cmdlist,
3b6acaee 14857 0/*allow-unknown*/, &cmdlist);
44feb3ce 14858
a15a5258
AB
14859 const auto opts = make_watch_options_def_group (nullptr);
14860
14861 static const std::string watch_help = gdb::option::build_help (_("\
14862Set a watchpoint for EXPRESSION.\n\
14863Usage: watch [-location] EXPRESSION\n\
14864\n\
14865Options:\n\
14866%OPTIONS%\n\
14867\n\
c906108c 14868A watchpoint stops execution of your program whenever the value of\n\
a15a5258
AB
14869an expression changes."), opts);
14870 c = add_com ("watch", class_breakpoint, watch_command,
14871 watch_help.c_str ());
14872 set_cmd_completer_handle_brkchars (c, watch_command_completer);
14873
14874 static const std::string rwatch_help = gdb::option::build_help (_("\
14875Set a read watchpoint for EXPRESSION.\n\
14876Usage: rwatch [-location] EXPRESSION\n\
14877\n\
14878Options:\n\
14879%OPTIONS%\n\
14880\n\
14881A read watchpoint stops execution of your program whenever the value of\n\
14882an expression is read."), opts);
14883 c = add_com ("rwatch", class_breakpoint, rwatch_command,
14884 rwatch_help.c_str ());
14885 set_cmd_completer_handle_brkchars (c, watch_command_completer);
14886
14887 static const std::string awatch_help = gdb::option::build_help (_("\
14888Set an access watchpoint for EXPRESSION.\n\
14889Usage: awatch [-location] EXPRESSION\n\
14890\n\
14891Options:\n\
14892%OPTIONS%\n\
14893\n\
14894An access watchpoint stops execution of your program whenever the value\n\
14895of an expression is either read or written."), opts);
14896 c = add_com ("awatch", class_breakpoint, awatch_command,
14897 awatch_help.c_str ());
14898 set_cmd_completer_handle_brkchars (c, watch_command_completer);
c906108c 14899
11db9430 14900 add_info ("watchpoints", info_watchpoints_command, _("\
e5a67952 14901Status of specified watchpoints (all watchpoints if no argument)."));
c906108c 14902
920d2a44
AC
14903 /* XXX: cagney/2005-02-23: This should be a boolean, and should
14904 respond to changes - contrary to the description. */
85c07804
AC
14905 add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
14906 &can_use_hw_watchpoints, _("\
14907Set debugger's willingness to use watchpoint hardware."), _("\
14908Show debugger's willingness to use watchpoint hardware."), _("\
c906108c
SS
14909If zero, gdb will not use hardware for new watchpoints, even if\n\
14910such is available. (However, any hardware watchpoints that were\n\
14911created before setting this to nonzero, will continue to use watchpoint\n\
85c07804
AC
14912hardware.)"),
14913 NULL,
920d2a44 14914 show_can_use_hw_watchpoints,
85c07804 14915 &setlist, &showlist);
c906108c
SS
14916
14917 can_use_hw_watchpoints = 1;
fa8d40ab 14918
1042e4c0
SS
14919 /* Tracepoint manipulation commands. */
14920
3947f654
SM
14921 cmd_list_element *trace_cmd
14922 = add_com ("trace", class_breakpoint, trace_command, _("\
629500fa 14923Set a tracepoint at specified location.\n\
1042e4c0
SS
14924\n"
14925BREAK_ARGS_HELP ("trace") "\n\
14926Do \"help tracepoints\" for info on other tracepoint commands."));
3947f654 14927 set_cmd_completer (trace_cmd, location_completer);
1042e4c0 14928
3947f654
SM
14929 add_com_alias ("tp", trace_cmd, class_breakpoint, 0);
14930 add_com_alias ("tr", trace_cmd, class_breakpoint, 1);
14931 add_com_alias ("tra", trace_cmd, class_breakpoint, 1);
14932 add_com_alias ("trac", trace_cmd, class_breakpoint, 1);
1042e4c0 14933
7a697b8d 14934 c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
629500fa 14935Set a fast tracepoint at specified location.\n\
7a697b8d
SS
14936\n"
14937BREAK_ARGS_HELP ("ftrace") "\n\
14938Do \"help tracepoints\" for info on other tracepoint commands."));
14939 set_cmd_completer (c, location_completer);
14940
0fb4aa4b 14941 c = add_com ("strace", class_breakpoint, strace_command, _("\
629500fa 14942Set a static tracepoint at location or marker.\n\
0fb4aa4b
PA
14943\n\
14944strace [LOCATION] [if CONDITION]\n\
629500fa
KS
14945LOCATION may be a linespec, explicit, or address location (described below) \n\
14946or -m MARKER_ID.\n\n\
14947If a marker id is specified, probe the marker with that name. With\n\
14948no LOCATION, uses current execution address of the selected stack frame.\n\
0fb4aa4b
PA
14949Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
14950This collects arbitrary user data passed in the probe point call to the\n\
14951tracing library. You can inspect it when analyzing the trace buffer,\n\
14952by printing the $_sdata variable like any other convenience variable.\n\
14953\n\
14954CONDITION is a boolean expression.\n\
89549d7f 14955\n" LOCATION_HELP_STRING "\n\n\
d41c0fc8
PA
14956Multiple tracepoints at one place are permitted, and useful if their\n\
14957conditions are different.\n\
0fb4aa4b
PA
14958\n\
14959Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
14960Do \"help tracepoints\" for info on other tracepoint commands."));
14961 set_cmd_completer (c, location_completer);
14962
e0f25bd9
SM
14963 cmd_list_element *info_tracepoints_cmd
14964 = add_info ("tracepoints", info_tracepoints_command, _("\
e5a67952 14965Status of specified tracepoints (all tracepoints if no argument).\n\
1042e4c0
SS
14966Convenience variable \"$tpnum\" contains the number of the\n\
14967last tracepoint set."));
14968
e0f25bd9 14969 add_info_alias ("tp", info_tracepoints_cmd, 1);
1042e4c0 14970
5e84b7ee
SM
14971 cmd_list_element *delete_tracepoints_cmd
14972 = add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
1042e4c0
SS
14973Delete specified tracepoints.\n\
14974Arguments are tracepoint numbers, separated by spaces.\n\
14975No argument means delete all tracepoints."),
14976 &deletelist);
5e84b7ee 14977 add_alias_cmd ("tr", delete_tracepoints_cmd, class_trace, 1, &deletelist);
1042e4c0
SS
14978
14979 c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
14980Disable specified tracepoints.\n\
14981Arguments are tracepoint numbers, separated by spaces.\n\
14982No argument means disable all tracepoints."),
14983 &disablelist);
14984 deprecate_cmd (c, "disable");
14985
14986 c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
14987Enable specified tracepoints.\n\
14988Arguments are tracepoint numbers, separated by spaces.\n\
14989No argument means enable all tracepoints."),
14990 &enablelist);
14991 deprecate_cmd (c, "enable");
14992
14993 add_com ("passcount", class_trace, trace_pass_command, _("\
14994Set the passcount for a tracepoint.\n\
14995The trace will end when the tracepoint has been passed 'count' times.\n\
14996Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
14997if TPNUM is omitted, passcount refers to the last tracepoint defined."));
14998
0743fc83
TT
14999 add_basic_prefix_cmd ("save", class_breakpoint,
15000 _("Save breakpoint definitions as a script."),
2f822da5 15001 &save_cmdlist,
0743fc83 15002 0/*allow-unknown*/, &cmdlist);
6149aea9
PA
15003
15004 c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15005Save current breakpoint definitions as a script.\n\
cce7e648 15006This includes all types of breakpoints (breakpoints, watchpoints,\n\
6149aea9
PA
15007catchpoints, tracepoints). Use the 'source' command in another debug\n\
15008session to restore them."),
15009 &save_cmdlist);
15010 set_cmd_completer (c, filename_completer);
15011
3947f654
SM
15012 cmd_list_element *save_tracepoints_cmd
15013 = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
1042e4c0 15014Save current tracepoint definitions as a script.\n\
6149aea9
PA
15015Use the 'source' command in another debug session to restore them."),
15016 &save_cmdlist);
3947f654 15017 set_cmd_completer (save_tracepoints_cmd, filename_completer);
1042e4c0 15018
3947f654 15019 c = add_com_alias ("save-tracepoints", save_tracepoints_cmd, class_trace, 0);
6149aea9
PA
15020 deprecate_cmd (c, "save tracepoints");
15021
f54bdb6d
SM
15022 add_setshow_prefix_cmd ("breakpoint", class_maintenance,
15023 _("\
590042fc 15024Breakpoint specific settings.\n\
fa8d40ab 15025Configure various breakpoint-specific variables such as\n\
590042fc 15026pending breakpoint behavior."),
f54bdb6d 15027 _("\
590042fc 15028Breakpoint specific settings.\n\
fa8d40ab 15029Configure various breakpoint-specific variables such as\n\
590042fc 15030pending breakpoint behavior."),
f54bdb6d
SM
15031 &breakpoint_set_cmdlist, &breakpoint_show_cmdlist,
15032 &setlist, &showlist);
fa8d40ab 15033
7915a72c
AC
15034 add_setshow_auto_boolean_cmd ("pending", no_class,
15035 &pending_break_support, _("\
15036Set debugger's behavior regarding pending breakpoints."), _("\
15037Show debugger's behavior regarding pending breakpoints."), _("\
6e1d7d6c
AC
15038If on, an unrecognized breakpoint location will cause gdb to create a\n\
15039pending breakpoint. If off, an unrecognized breakpoint location results in\n\
15040an error. If auto, an unrecognized breakpoint location results in a\n\
7915a72c 15041user-query to see if a pending breakpoint should be created."),
2c5b56ce 15042 NULL,
920d2a44 15043 show_pending_break_support,
6e1d7d6c
AC
15044 &breakpoint_set_cmdlist,
15045 &breakpoint_show_cmdlist);
fa8d40ab
JJ
15046
15047 pending_break_support = AUTO_BOOLEAN_AUTO;
765dc015
VP
15048
15049 add_setshow_boolean_cmd ("auto-hw", no_class,
15050 &automatic_hardware_breakpoints, _("\
15051Set automatic usage of hardware breakpoints."), _("\
15052Show automatic usage of hardware breakpoints."), _("\
15053If set, the debugger will automatically use hardware breakpoints for\n\
15054breakpoints set with \"break\" but falling in read-only memory. If not set,\n\
15055a warning will be emitted for such breakpoints."),
15056 NULL,
15057 show_automatic_hardware_breakpoints,
15058 &breakpoint_set_cmdlist,
15059 &breakpoint_show_cmdlist);
74960c60 15060
a25a5a45
PA
15061 add_setshow_boolean_cmd ("always-inserted", class_support,
15062 &always_inserted_mode, _("\
74960c60
VP
15063Set mode for inserting breakpoints."), _("\
15064Show mode for inserting breakpoints."), _("\
a25a5a45
PA
15065When this mode is on, breakpoints are inserted immediately as soon as\n\
15066they're created, kept inserted even when execution stops, and removed\n\
15067only when the user deletes them. When this mode is off (the default),\n\
15068breakpoints are inserted only when execution continues, and removed\n\
15069when execution stops."),
72d0e2c5
YQ
15070 NULL,
15071 &show_always_inserted_mode,
15072 &breakpoint_set_cmdlist,
15073 &breakpoint_show_cmdlist);
f1310107 15074
b775012e
LM
15075 add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15076 condition_evaluation_enums,
15077 &condition_evaluation_mode_1, _("\
15078Set mode of breakpoint condition evaluation."), _("\
15079Show mode of breakpoint condition evaluation."), _("\
d1cda5d9 15080When this is set to \"host\", breakpoint conditions will be\n\
b775012e
LM
15081evaluated on the host's side by GDB. When it is set to \"target\",\n\
15082breakpoint conditions will be downloaded to the target (if the target\n\
15083supports such feature) and conditions will be evaluated on the target's side.\n\
15084If this is set to \"auto\" (default), this will be automatically set to\n\
15085\"target\" if it supports condition evaluation, otherwise it will\n\
7a4e8e7d 15086be set to \"host\"."),
b775012e
LM
15087 &set_condition_evaluation_mode,
15088 &show_condition_evaluation_mode,
15089 &breakpoint_set_cmdlist,
15090 &breakpoint_show_cmdlist);
15091
f1310107
TJB
15092 add_com ("break-range", class_breakpoint, break_range_command, _("\
15093Set a breakpoint for an address range.\n\
15094break-range START-LOCATION, END-LOCATION\n\
15095where START-LOCATION and END-LOCATION can be one of the following:\n\
15096 LINENUM, for that line in the current file,\n\
15097 FILE:LINENUM, for that line in that file,\n\
15098 +OFFSET, for that number of lines after the current line\n\
dda83cd7 15099 or the start of the range\n\
f1310107
TJB
15100 FUNCTION, for the first line in that function,\n\
15101 FILE:FUNCTION, to distinguish among like-named static functions.\n\
15102 *ADDRESS, for the instruction at that address.\n\
15103\n\
15104The breakpoint will stop execution of the inferior whenever it executes\n\
15105an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15106range (including START-LOCATION and END-LOCATION)."));
15107
e7e0cddf 15108 c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
629500fa 15109Set a dynamic printf at specified location.\n\
e7e0cddf 15110dprintf location,format string,arg1,arg2,...\n\
629500fa
KS
15111location may be a linespec, explicit, or address location.\n"
15112"\n" LOCATION_HELP_STRING));
e7e0cddf
SS
15113 set_cmd_completer (c, location_completer);
15114
15115 add_setshow_enum_cmd ("dprintf-style", class_support,
15116 dprintf_style_enums, &dprintf_style, _("\
15117Set the style of usage for dynamic printf."), _("\
15118Show the style of usage for dynamic printf."), _("\
15119This setting chooses how GDB will do a dynamic printf.\n\
15120If the value is \"gdb\", then the printing is done by GDB to its own\n\
15121console, as with the \"printf\" command.\n\
15122If the value is \"call\", the print is done by calling a function in your\n\
15123program; by default printf(), but you can choose a different function or\n\
15124output stream by setting dprintf-function and dprintf-channel."),
15125 update_dprintf_commands, NULL,
15126 &setlist, &showlist);
15127
e7e0cddf
SS
15128 add_setshow_string_cmd ("dprintf-function", class_support,
15129 &dprintf_function, _("\
590042fc
PW
15130Set the function to use for dynamic printf."), _("\
15131Show the function to use for dynamic printf."), NULL,
e7e0cddf
SS
15132 update_dprintf_commands, NULL,
15133 &setlist, &showlist);
15134
e7e0cddf
SS
15135 add_setshow_string_cmd ("dprintf-channel", class_support,
15136 &dprintf_channel, _("\
590042fc
PW
15137Set the channel to use for dynamic printf."), _("\
15138Show the channel to use for dynamic printf."), NULL,
e7e0cddf
SS
15139 update_dprintf_commands, NULL,
15140 &setlist, &showlist);
15141
d3ce09f5
SS
15142 add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15143 &disconnected_dprintf, _("\
15144Set whether dprintf continues after GDB disconnects."), _("\
15145Show whether dprintf continues after GDB disconnects."), _("\
15146Use this to let dprintf commands continue to hit and produce output\n\
15147even if GDB disconnects or detaches from the target."),
15148 NULL,
15149 NULL,
15150 &setlist, &showlist);
15151
15152 add_com ("agent-printf", class_vars, agent_printf_command, _("\
590042fc
PW
15153Target agent only formatted printing, like the C \"printf\" function.\n\
15154Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
15155This supports most C printf format specifications, like %s, %d, etc.\n\
15156This is useful for formatted output in user-defined commands."));
d3ce09f5 15157
491144b5 15158 automatic_hardware_breakpoints = true;
f3b1572e 15159
c90e7d63
SM
15160 gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed,
15161 "breakpoint");
15162 gdb::observers::thread_exit.attach (remove_threaded_breakpoints,
15163 "breakpoint");
c906108c 15164}