xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/breakpoint.c (revision 924795e69c8bb3f17afd8fcbb799710cc1719dc4)
1 /* Everything about breakpoints, for GDB.
2 
3    Copyright (C) 1986-2020 Free Software Foundation, Inc.
4 
5    This file is part of GDB.
6 
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
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11 
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.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
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"
52 #include "observable.h"
53 #include "memattr.h"
54 #include "ada-lang.h"
55 #include "top.h"
56 #include "valprint.h"
57 #include "jit.h"
58 #include "parser-defs.h"
59 #include "gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "stack.h"
63 #include "ax-gdb.h"
64 #include "dummy-frame.h"
65 #include "interps.h"
66 #include "gdbsupport/format.h"
67 #include "thread-fsm.h"
68 #include "tid-parse.h"
69 #include "cli/cli-style.h"
70 
71 /* readline include files */
72 #include "readline/tilde.h"
73 
74 /* readline defines this.  */
75 #undef savestring
76 
77 #include "mi/mi-common.h"
78 #include "extension.h"
79 #include <algorithm>
80 #include "progspace-and-thread.h"
81 #include "gdbsupport/array-view.h"
82 #include "gdbsupport/gdb_optional.h"
83 
84 /* Prototypes for local functions.  */
85 
86 static void map_breakpoint_numbers (const char *,
87 				    gdb::function_view<void (breakpoint *)>);
88 
89 static void breakpoint_re_set_default (struct breakpoint *);
90 
91 static void
92   create_sals_from_location_default (struct event_location *location,
93 				     struct linespec_result *canonical,
94 				     enum bptype type_wanted);
95 
96 static void create_breakpoints_sal_default (struct gdbarch *,
97 					    struct linespec_result *,
98 					    gdb::unique_xmalloc_ptr<char>,
99 					    gdb::unique_xmalloc_ptr<char>,
100 					    enum bptype,
101 					    enum bpdisp, int, int,
102 					    int,
103 					    const struct breakpoint_ops *,
104 					    int, int, int, unsigned);
105 
106 static std::vector<symtab_and_line> decode_location_default
107   (struct breakpoint *b, struct event_location *location,
108    struct program_space *search_pspace);
109 
110 static int can_use_hardware_watchpoint
111     (const std::vector<value_ref_ptr> &vals);
112 
113 static void mention (struct breakpoint *);
114 
115 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
116 							       enum bptype,
117 							       const struct breakpoint_ops *);
118 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
119 						       const struct symtab_and_line *);
120 
121 /* This function is used in gdbtk sources and thus can not be made
122    static.  */
123 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
124 				       struct symtab_and_line,
125 				       enum bptype,
126 				       const struct breakpoint_ops *);
127 
128 static struct breakpoint *
129   momentary_breakpoint_from_master (struct breakpoint *orig,
130 				    enum bptype type,
131 				    const struct breakpoint_ops *ops,
132 				    int loc_enabled);
133 
134 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
135 
136 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
137 					    CORE_ADDR bpaddr,
138                                             enum bptype bptype);
139 
140 static void describe_other_breakpoints (struct gdbarch *,
141 					struct program_space *, CORE_ADDR,
142 					struct obj_section *, int);
143 
144 static int watchpoint_locations_match (struct bp_location *loc1,
145 				       struct bp_location *loc2);
146 
147 static int breakpoint_locations_match (struct bp_location *loc1,
148 				       struct bp_location *loc2,
149 				       bool sw_hw_bps_match = false);
150 
151 static int breakpoint_location_address_match (struct bp_location *bl,
152 					      const struct address_space *aspace,
153 					      CORE_ADDR addr);
154 
155 static int breakpoint_location_address_range_overlap (struct bp_location *,
156 						      const address_space *,
157 						      CORE_ADDR, int);
158 
159 static int remove_breakpoint (struct bp_location *);
160 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
161 
162 static enum print_stop_action print_bp_stop_message (bpstat bs);
163 
164 static int hw_breakpoint_used_count (void);
165 
166 static int hw_watchpoint_use_count (struct breakpoint *);
167 
168 static int hw_watchpoint_used_count_others (struct breakpoint *except,
169 					    enum bptype type,
170 					    int *other_type_used);
171 
172 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
173 				    int count);
174 
175 static void free_bp_location (struct bp_location *loc);
176 static void incref_bp_location (struct bp_location *loc);
177 static void decref_bp_location (struct bp_location **loc);
178 
179 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
180 
181 /* update_global_location_list's modes of operation wrt to whether to
182    insert locations now.  */
183 enum ugll_insert_mode
184 {
185   /* Don't insert any breakpoint locations into the inferior, only
186      remove already-inserted locations that no longer should be
187      inserted.  Functions that delete a breakpoint or breakpoints
188      should specify this mode, so that deleting a breakpoint doesn't
189      have the side effect of inserting the locations of other
190      breakpoints that are marked not-inserted, but should_be_inserted
191      returns true on them.
192 
193      This behavior is useful is situations close to tear-down -- e.g.,
194      after an exec, while the target still has execution, but
195      breakpoint shadows of the previous executable image should *NOT*
196      be restored to the new image; or before detaching, where the
197      target still has execution and wants to delete breakpoints from
198      GDB's lists, and all breakpoints had already been removed from
199      the inferior.  */
200   UGLL_DONT_INSERT,
201 
202   /* May insert breakpoints iff breakpoints_should_be_inserted_now
203      claims breakpoints should be inserted now.  */
204   UGLL_MAY_INSERT,
205 
206   /* Insert locations now, irrespective of
207      breakpoints_should_be_inserted_now.  E.g., say all threads are
208      stopped right now, and the user did "continue".  We need to
209      insert breakpoints _before_ resuming the target, but
210      UGLL_MAY_INSERT wouldn't insert them, because
211      breakpoints_should_be_inserted_now returns false at that point,
212      as no thread is running yet.  */
213   UGLL_INSERT
214 };
215 
216 static void update_global_location_list (enum ugll_insert_mode);
217 
218 static void update_global_location_list_nothrow (enum ugll_insert_mode);
219 
220 static void insert_breakpoint_locations (void);
221 
222 static void trace_pass_command (const char *, int);
223 
224 static void set_tracepoint_count (int num);
225 
226 static bool is_masked_watchpoint (const struct breakpoint *b);
227 
228 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
229 
230 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
231    otherwise.  */
232 
233 static int strace_marker_p (struct breakpoint *b);
234 
235 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
236    that are implemented on top of software or hardware breakpoints
237    (user breakpoints, internal and momentary breakpoints, etc.).  */
238 static struct breakpoint_ops bkpt_base_breakpoint_ops;
239 
240 /* Internal breakpoints class type.  */
241 static struct breakpoint_ops internal_breakpoint_ops;
242 
243 /* Momentary breakpoints class type.  */
244 static struct breakpoint_ops momentary_breakpoint_ops;
245 
246 /* The breakpoint_ops structure to be used in regular user created
247    breakpoints.  */
248 struct breakpoint_ops bkpt_breakpoint_ops;
249 
250 /* Breakpoints set on probes.  */
251 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
252 
253 /* Tracepoints set on probes.  */
254 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
255 
256 /* Dynamic printf class type.  */
257 struct breakpoint_ops dprintf_breakpoint_ops;
258 
259 /* The style in which to perform a dynamic printf.  This is a user
260    option because different output options have different tradeoffs;
261    if GDB does the printing, there is better error handling if there
262    is a problem with any of the arguments, but using an inferior
263    function lets you have special-purpose printers and sending of
264    output to the same place as compiled-in print functions.  */
265 
266 static const char dprintf_style_gdb[] = "gdb";
267 static const char dprintf_style_call[] = "call";
268 static const char dprintf_style_agent[] = "agent";
269 static const char *const dprintf_style_enums[] = {
270   dprintf_style_gdb,
271   dprintf_style_call,
272   dprintf_style_agent,
273   NULL
274 };
275 static const char *dprintf_style = dprintf_style_gdb;
276 
277 /* The function to use for dynamic printf if the preferred style is to
278    call into the inferior.  The value is simply a string that is
279    copied into the command, so it can be anything that GDB can
280    evaluate to a callable address, not necessarily a function name.  */
281 
282 static char *dprintf_function;
283 
284 /* The channel to use for dynamic printf if the preferred style is to
285    call into the inferior; if a nonempty string, it will be passed to
286    the call as the first argument, with the format string as the
287    second.  As with the dprintf function, this can be anything that
288    GDB knows how to evaluate, so in addition to common choices like
289    "stderr", this could be an app-specific expression like
290    "mystreams[curlogger]".  */
291 
292 static char *dprintf_channel;
293 
294 /* True if dprintf commands should continue to operate even if GDB
295    has disconnected.  */
296 static bool disconnected_dprintf = true;
297 
298 struct command_line *
299 breakpoint_commands (struct breakpoint *b)
300 {
301   return b->commands ? b->commands.get () : NULL;
302 }
303 
304 /* Flag indicating that a command has proceeded the inferior past the
305    current breakpoint.  */
306 
307 static bool breakpoint_proceeded;
308 
309 const char *
310 bpdisp_text (enum bpdisp disp)
311 {
312   /* NOTE: the following values are a part of MI protocol and
313      represent values of 'disp' field returned when inferior stops at
314      a breakpoint.  */
315   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
316 
317   return bpdisps[(int) disp];
318 }
319 
320 /* Prototypes for exported functions.  */
321 /* If FALSE, gdb will not use hardware support for watchpoints, even
322    if such is available.  */
323 static int can_use_hw_watchpoints;
324 
325 static void
326 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
327 			     struct cmd_list_element *c,
328 			     const char *value)
329 {
330   fprintf_filtered (file,
331 		    _("Debugger's willingness to use "
332 		      "watchpoint hardware is %s.\n"),
333 		    value);
334 }
335 
336 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
337    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
338    for unrecognized breakpoint locations.
339    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
340 static enum auto_boolean pending_break_support;
341 static void
342 show_pending_break_support (struct ui_file *file, int from_tty,
343 			    struct cmd_list_element *c,
344 			    const char *value)
345 {
346   fprintf_filtered (file,
347 		    _("Debugger's behavior regarding "
348 		      "pending breakpoints is %s.\n"),
349 		    value);
350 }
351 
352 /* If true, gdb will automatically use hardware breakpoints for breakpoints
353    set with "break" but falling in read-only memory.
354    If false, gdb will warn about such breakpoints, but won't automatically
355    use hardware breakpoints.  */
356 static bool automatic_hardware_breakpoints;
357 static void
358 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
359 				     struct cmd_list_element *c,
360 				     const char *value)
361 {
362   fprintf_filtered (file,
363 		    _("Automatic usage of hardware breakpoints is %s.\n"),
364 		    value);
365 }
366 
367 /* If on, GDB keeps breakpoints inserted even if the inferior is
368    stopped, and immediately inserts any new breakpoints as soon as
369    they're created.  If off (default), GDB keeps breakpoints off of
370    the target as long as possible.  That is, it delays inserting
371    breakpoints until the next resume, and removes them again when the
372    target fully stops.  This is a bit safer in case GDB crashes while
373    processing user input.  */
374 static bool always_inserted_mode = false;
375 
376 static void
377 show_always_inserted_mode (struct ui_file *file, int from_tty,
378 		     struct cmd_list_element *c, const char *value)
379 {
380   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
381 		    value);
382 }
383 
384 /* See breakpoint.h.  */
385 
386 int
387 breakpoints_should_be_inserted_now (void)
388 {
389   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
390     {
391       /* If breakpoints are global, they should be inserted even if no
392 	 thread under gdb's control is running, or even if there are
393 	 no threads under GDB's control yet.  */
394       return 1;
395     }
396   else
397     {
398       if (always_inserted_mode)
399 	{
400 	  /* The user wants breakpoints inserted even if all threads
401 	     are stopped.  */
402 	  return 1;
403 	}
404 
405       for (inferior *inf : all_inferiors ())
406 	if (inf->has_execution ()
407 	    && threads_are_executing (inf->process_target ()))
408 	  return 1;
409 
410       /* Don't remove breakpoints yet if, even though all threads are
411 	 stopped, we still have events to process.  */
412       for (thread_info *tp : all_non_exited_threads ())
413 	if (tp->resumed
414 	    && tp->suspend.waitstatus_pending_p)
415 	  return 1;
416     }
417   return 0;
418 }
419 
420 static const char condition_evaluation_both[] = "host or target";
421 
422 /* Modes for breakpoint condition evaluation.  */
423 static const char condition_evaluation_auto[] = "auto";
424 static const char condition_evaluation_host[] = "host";
425 static const char condition_evaluation_target[] = "target";
426 static const char *const condition_evaluation_enums[] = {
427   condition_evaluation_auto,
428   condition_evaluation_host,
429   condition_evaluation_target,
430   NULL
431 };
432 
433 /* Global that holds the current mode for breakpoint condition evaluation.  */
434 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
435 
436 /* Global that we use to display information to the user (gets its value from
437    condition_evaluation_mode_1.  */
438 static const char *condition_evaluation_mode = condition_evaluation_auto;
439 
440 /* Translate a condition evaluation mode MODE into either "host"
441    or "target".  This is used mostly to translate from "auto" to the
442    real setting that is being used.  It returns the translated
443    evaluation mode.  */
444 
445 static const char *
446 translate_condition_evaluation_mode (const char *mode)
447 {
448   if (mode == condition_evaluation_auto)
449     {
450       if (target_supports_evaluation_of_breakpoint_conditions ())
451 	return condition_evaluation_target;
452       else
453 	return condition_evaluation_host;
454     }
455   else
456     return mode;
457 }
458 
459 /* Discovers what condition_evaluation_auto translates to.  */
460 
461 static const char *
462 breakpoint_condition_evaluation_mode (void)
463 {
464   return translate_condition_evaluation_mode (condition_evaluation_mode);
465 }
466 
467 /* Return true if GDB should evaluate breakpoint conditions or false
468    otherwise.  */
469 
470 static int
471 gdb_evaluates_breakpoint_condition_p (void)
472 {
473   const char *mode = breakpoint_condition_evaluation_mode ();
474 
475   return (mode == condition_evaluation_host);
476 }
477 
478 /* Are we executing breakpoint commands?  */
479 static int executing_breakpoint_commands;
480 
481 /* Are overlay event breakpoints enabled? */
482 static int overlay_events_enabled;
483 
484 /* See description in breakpoint.h. */
485 bool target_exact_watchpoints = false;
486 
487 /* Walk the following statement or block through all breakpoints.
488    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
489    current breakpoint.  */
490 
491 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
492 
493 #define ALL_BREAKPOINTS_SAFE(B,TMP)	\
494 	for (B = breakpoint_chain;	\
495 	     B ? (TMP=B->next, 1): 0;	\
496 	     B = TMP)
497 
498 /* Similar iterator for the low-level breakpoints.  SAFE variant is
499    not provided so update_global_location_list must not be called
500    while executing the block of ALL_BP_LOCATIONS.  */
501 
502 #define ALL_BP_LOCATIONS(B,BP_TMP)					\
503 	for (BP_TMP = bp_locations;					\
504 	     BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
505 	     BP_TMP++)
506 
507 /* Iterates through locations with address ADDRESS for the currently selected
508    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
509    to where the loop should start from.
510    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
511    appropriate location to start with.  */
512 
513 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)	\
514 	for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
515 	     BP_LOCP_TMP = BP_LOCP_START;				\
516 	     BP_LOCP_START						\
517 	     && (BP_LOCP_TMP < bp_locations + bp_locations_count	\
518 	     && (*BP_LOCP_TMP)->address == ADDRESS);			\
519 	     BP_LOCP_TMP++)
520 
521 /* Iterator for tracepoints only.  */
522 
523 #define ALL_TRACEPOINTS(B)  \
524   for (B = breakpoint_chain; B; B = B->next)  \
525     if (is_tracepoint (B))
526 
527 /* Chains of all breakpoints defined.  */
528 
529 static struct breakpoint *breakpoint_chain;
530 
531 /* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS.  */
532 
533 static struct bp_location **bp_locations;
534 
535 /* Number of elements of BP_LOCATIONS.  */
536 
537 static unsigned bp_locations_count;
538 
539 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
540    ADDRESS for the current elements of BP_LOCATIONS which get a valid
541    result from bp_location_has_shadow.  You can use it for roughly
542    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
543    an address you need to read.  */
544 
545 static CORE_ADDR bp_locations_placed_address_before_address_max;
546 
547 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
548    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
549    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
550    You can use it for roughly limiting the subrange of BP_LOCATIONS to
551    scan for shadow bytes for an address you need to read.  */
552 
553 static CORE_ADDR bp_locations_shadow_len_after_address_max;
554 
555 /* The locations that no longer correspond to any breakpoint, unlinked
556    from the bp_locations array, but for which a hit may still be
557    reported by a target.  */
558 static std::vector<bp_location *> moribund_locations;
559 
560 /* Number of last breakpoint made.  */
561 
562 static int breakpoint_count;
563 
564 /* The value of `breakpoint_count' before the last command that
565    created breakpoints.  If the last (break-like) command created more
566    than one breakpoint, then the difference between BREAKPOINT_COUNT
567    and PREV_BREAKPOINT_COUNT is more than one.  */
568 static int prev_breakpoint_count;
569 
570 /* Number of last tracepoint made.  */
571 
572 static int tracepoint_count;
573 
574 static struct cmd_list_element *breakpoint_set_cmdlist;
575 static struct cmd_list_element *breakpoint_show_cmdlist;
576 struct cmd_list_element *save_cmdlist;
577 
578 /* See declaration at breakpoint.h.  */
579 
580 struct breakpoint *
581 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
582 		    void *user_data)
583 {
584   struct breakpoint *b = NULL;
585 
586   ALL_BREAKPOINTS (b)
587     {
588       if (func (b, user_data) != 0)
589 	break;
590     }
591 
592   return b;
593 }
594 
595 /* Return whether a breakpoint is an active enabled breakpoint.  */
596 static int
597 breakpoint_enabled (struct breakpoint *b)
598 {
599   return (b->enable_state == bp_enabled);
600 }
601 
602 /* Set breakpoint count to NUM.  */
603 
604 static void
605 set_breakpoint_count (int num)
606 {
607   prev_breakpoint_count = breakpoint_count;
608   breakpoint_count = num;
609   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
610 }
611 
612 /* Used by `start_rbreak_breakpoints' below, to record the current
613    breakpoint count before "rbreak" creates any breakpoint.  */
614 static int rbreak_start_breakpoint_count;
615 
616 /* Called at the start an "rbreak" command to record the first
617    breakpoint made.  */
618 
619 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
620 {
621   rbreak_start_breakpoint_count = breakpoint_count;
622 }
623 
624 /* Called at the end of an "rbreak" command to record the last
625    breakpoint made.  */
626 
627 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
628 {
629   prev_breakpoint_count = rbreak_start_breakpoint_count;
630 }
631 
632 /* Used in run_command to zero the hit count when a new run starts.  */
633 
634 void
635 clear_breakpoint_hit_counts (void)
636 {
637   struct breakpoint *b;
638 
639   ALL_BREAKPOINTS (b)
640     b->hit_count = 0;
641 }
642 
643 
644 /* Return the breakpoint with the specified number, or NULL
645    if the number does not refer to an existing breakpoint.  */
646 
647 struct breakpoint *
648 get_breakpoint (int num)
649 {
650   struct breakpoint *b;
651 
652   ALL_BREAKPOINTS (b)
653     if (b->number == num)
654       return b;
655 
656   return NULL;
657 }
658 
659 
660 
661 /* Mark locations as "conditions have changed" in case the target supports
662    evaluating conditions on its side.  */
663 
664 static void
665 mark_breakpoint_modified (struct breakpoint *b)
666 {
667   struct bp_location *loc;
668 
669   /* This is only meaningful if the target is
670      evaluating conditions and if the user has
671      opted for condition evaluation on the target's
672      side.  */
673   if (gdb_evaluates_breakpoint_condition_p ()
674       || !target_supports_evaluation_of_breakpoint_conditions ())
675     return;
676 
677   if (!is_breakpoint (b))
678     return;
679 
680   for (loc = b->loc; loc; loc = loc->next)
681     loc->condition_changed = condition_modified;
682 }
683 
684 /* Mark location as "conditions have changed" in case the target supports
685    evaluating conditions on its side.  */
686 
687 static void
688 mark_breakpoint_location_modified (struct bp_location *loc)
689 {
690   /* This is only meaningful if the target is
691      evaluating conditions and if the user has
692      opted for condition evaluation on the target's
693      side.  */
694   if (gdb_evaluates_breakpoint_condition_p ()
695       || !target_supports_evaluation_of_breakpoint_conditions ())
696 
697     return;
698 
699   if (!is_breakpoint (loc->owner))
700     return;
701 
702   loc->condition_changed = condition_modified;
703 }
704 
705 /* Sets the condition-evaluation mode using the static global
706    condition_evaluation_mode.  */
707 
708 static void
709 set_condition_evaluation_mode (const char *args, int from_tty,
710 			       struct cmd_list_element *c)
711 {
712   const char *old_mode, *new_mode;
713 
714   if ((condition_evaluation_mode_1 == condition_evaluation_target)
715       && !target_supports_evaluation_of_breakpoint_conditions ())
716     {
717       condition_evaluation_mode_1 = condition_evaluation_mode;
718       warning (_("Target does not support breakpoint condition evaluation.\n"
719 		 "Using host evaluation mode instead."));
720       return;
721     }
722 
723   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
724   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
725 
726   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
727      settings was "auto".  */
728   condition_evaluation_mode = condition_evaluation_mode_1;
729 
730   /* Only update the mode if the user picked a different one.  */
731   if (new_mode != old_mode)
732     {
733       struct bp_location *loc, **loc_tmp;
734       /* If the user switched to a different evaluation mode, we
735 	 need to synch the changes with the target as follows:
736 
737 	 "host" -> "target": Send all (valid) conditions to the target.
738 	 "target" -> "host": Remove all the conditions from the target.
739       */
740 
741       if (new_mode == condition_evaluation_target)
742 	{
743 	  /* Mark everything modified and synch conditions with the
744 	     target.  */
745 	  ALL_BP_LOCATIONS (loc, loc_tmp)
746 	    mark_breakpoint_location_modified (loc);
747   	}
748       else
749 	{
750 	  /* Manually mark non-duplicate locations to synch conditions
751 	     with the target.  We do this to remove all the conditions the
752 	     target knows about.  */
753 	  ALL_BP_LOCATIONS (loc, loc_tmp)
754 	    if (is_breakpoint (loc->owner) && loc->inserted)
755 	      loc->needs_update = 1;
756 	}
757 
758       /* Do the update.  */
759       update_global_location_list (UGLL_MAY_INSERT);
760     }
761 
762   return;
763 }
764 
765 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
766    what "auto" is translating to.  */
767 
768 static void
769 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
770 				struct cmd_list_element *c, const char *value)
771 {
772   if (condition_evaluation_mode == condition_evaluation_auto)
773     fprintf_filtered (file,
774 		      _("Breakpoint condition evaluation "
775 			"mode is %s (currently %s).\n"),
776 		      value,
777 		      breakpoint_condition_evaluation_mode ());
778   else
779     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
780 		      value);
781 }
782 
783 /* A comparison function for bp_location AP and BP that is used by
784    bsearch.  This comparison function only cares about addresses, unlike
785    the more general bp_location_is_less_than function.  */
786 
787 static int
788 bp_locations_compare_addrs (const void *ap, const void *bp)
789 {
790   const struct bp_location *a = *(const struct bp_location **) ap;
791   const struct bp_location *b = *(const struct bp_location **) bp;
792 
793   if (a->address == b->address)
794     return 0;
795   else
796     return ((a->address > b->address) - (a->address < b->address));
797 }
798 
799 /* Helper function to skip all bp_locations with addresses
800    less than ADDRESS.  It returns the first bp_location that
801    is greater than or equal to ADDRESS.  If none is found, just
802    return NULL.  */
803 
804 static struct bp_location **
805 get_first_locp_gte_addr (CORE_ADDR address)
806 {
807   struct bp_location dummy_loc;
808   struct bp_location *dummy_locp = &dummy_loc;
809   struct bp_location **locp_found = NULL;
810 
811   /* Initialize the dummy location's address field.  */
812   dummy_loc.address = address;
813 
814   /* Find a close match to the first location at ADDRESS.  */
815   locp_found = ((struct bp_location **)
816 		bsearch (&dummy_locp, bp_locations, bp_locations_count,
817 			 sizeof (struct bp_location **),
818 			 bp_locations_compare_addrs));
819 
820   /* Nothing was found, nothing left to do.  */
821   if (locp_found == NULL)
822     return NULL;
823 
824   /* We may have found a location that is at ADDRESS but is not the first in the
825      location's list.  Go backwards (if possible) and locate the first one.  */
826   while ((locp_found - 1) >= bp_locations
827 	 && (*(locp_found - 1))->address == address)
828     locp_found--;
829 
830   return locp_found;
831 }
832 
833 void
834 set_breakpoint_condition (struct breakpoint *b, const char *exp,
835 			  int from_tty)
836 {
837   if (*exp == 0)
838     {
839       xfree (b->cond_string);
840       b->cond_string = nullptr;
841 
842       if (is_watchpoint (b))
843 	static_cast<watchpoint *> (b)->cond_exp.reset ();
844       else
845 	{
846 	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
847 	    {
848 	      loc->cond.reset ();
849 
850 	      /* No need to free the condition agent expression
851 		 bytecode (if we have one).  We will handle this
852 		 when we go through update_global_location_list.  */
853 	    }
854 	}
855 
856       if (from_tty)
857 	printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
858     }
859   else
860     {
861       if (is_watchpoint (b))
862 	{
863 	  innermost_block_tracker tracker;
864 	  const char *arg = exp;
865 	  expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
866 	  if (*arg != 0)
867 	    error (_("Junk at end of expression"));
868 	  watchpoint *w = static_cast<watchpoint *> (b);
869 	  w->cond_exp = std::move (new_exp);
870 	  w->cond_exp_valid_block = tracker.block ();
871 	}
872       else
873 	{
874 	  /* Parse and set condition expressions.  We make two passes.
875 	     In the first, we parse the condition string to see if it
876 	     is valid in all locations.  If so, the condition would be
877 	     accepted.  So we go ahead and set the locations'
878 	     conditions.  In case a failing case is found, we throw
879 	     the error and the condition string will be rejected.
880 	     This two-pass approach is taken to avoid setting the
881 	     state of locations in case of a reject.  */
882 	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
883 	    {
884 	      const char *arg = exp;
885 	      parse_exp_1 (&arg, loc->address,
886 			   block_for_pc (loc->address), 0);
887 	      if (*arg != 0)
888 		error (_("Junk at end of expression"));
889 	    }
890 
891 	  /* If we reach here, the condition is valid at all locations.  */
892 	  for (bp_location *loc = b->loc; loc != nullptr; loc = loc->next)
893 	    {
894 	      const char *arg = exp;
895 	      loc->cond =
896 		parse_exp_1 (&arg, loc->address,
897 			     block_for_pc (loc->address), 0);
898 	    }
899 	}
900 
901       /* We know that the new condition parsed successfully.  The
902 	 condition string of the breakpoint can be safely updated.  */
903       xfree (b->cond_string);
904       b->cond_string = xstrdup (exp);
905       b->condition_not_parsed = 0;
906     }
907   mark_breakpoint_modified (b);
908 
909   gdb::observers::breakpoint_modified.notify (b);
910 }
911 
912 /* Completion for the "condition" command.  */
913 
914 static void
915 condition_completer (struct cmd_list_element *cmd,
916 		     completion_tracker &tracker,
917 		     const char *text, const char *word)
918 {
919   const char *space;
920 
921   text = skip_spaces (text);
922   space = skip_to_space (text);
923   if (*space == '\0')
924     {
925       int len;
926       struct breakpoint *b;
927 
928       if (text[0] == '$')
929 	{
930 	  /* We don't support completion of history indices.  */
931 	  if (!isdigit (text[1]))
932 	    complete_internalvar (tracker, &text[1]);
933 	  return;
934 	}
935 
936       /* We're completing the breakpoint number.  */
937       len = strlen (text);
938 
939       ALL_BREAKPOINTS (b)
940 	{
941 	  char number[50];
942 
943 	  xsnprintf (number, sizeof (number), "%d", b->number);
944 
945 	  if (strncmp (number, text, len) == 0)
946 	    tracker.add_completion (make_unique_xstrdup (number));
947 	}
948 
949       return;
950     }
951 
952   /* We're completing the expression part.  */
953   text = skip_spaces (space);
954   expression_completer (cmd, tracker, text, word);
955 }
956 
957 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
958 
959 static void
960 condition_command (const char *arg, int from_tty)
961 {
962   struct breakpoint *b;
963   const char *p;
964   int bnum;
965 
966   if (arg == 0)
967     error_no_arg (_("breakpoint number"));
968 
969   p = arg;
970   bnum = get_number (&p);
971   if (bnum == 0)
972     error (_("Bad breakpoint argument: '%s'"), arg);
973 
974   ALL_BREAKPOINTS (b)
975     if (b->number == bnum)
976       {
977 	/* Check if this breakpoint has a "stop" method implemented in an
978 	   extension language.  This method and conditions entered into GDB
979 	   from the CLI are mutually exclusive.  */
980 	const struct extension_language_defn *extlang
981 	  = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
982 
983 	if (extlang != NULL)
984 	  {
985 	    error (_("Only one stop condition allowed.  There is currently"
986 		     " a %s stop condition defined for this breakpoint."),
987 		   ext_lang_capitalized_name (extlang));
988 	  }
989 	set_breakpoint_condition (b, p, from_tty);
990 
991 	if (is_breakpoint (b))
992 	  update_global_location_list (UGLL_MAY_INSERT);
993 
994 	return;
995       }
996 
997   error (_("No breakpoint number %d."), bnum);
998 }
999 
1000 /* Check that COMMAND do not contain commands that are suitable
1001    only for tracepoints and not suitable for ordinary breakpoints.
1002    Throw if any such commands is found.  */
1003 
1004 static void
1005 check_no_tracepoint_commands (struct command_line *commands)
1006 {
1007   struct command_line *c;
1008 
1009   for (c = commands; c; c = c->next)
1010     {
1011       if (c->control_type == while_stepping_control)
1012 	error (_("The 'while-stepping' command can "
1013 		 "only be used for tracepoints"));
1014 
1015       check_no_tracepoint_commands (c->body_list_0.get ());
1016       check_no_tracepoint_commands (c->body_list_1.get ());
1017 
1018       /* Not that command parsing removes leading whitespace and comment
1019 	 lines and also empty lines.  So, we only need to check for
1020 	 command directly.  */
1021       if (strstr (c->line, "collect ") == c->line)
1022 	error (_("The 'collect' command can only be used for tracepoints"));
1023 
1024       if (strstr (c->line, "teval ") == c->line)
1025 	error (_("The 'teval' command can only be used for tracepoints"));
1026     }
1027 }
1028 
1029 struct longjmp_breakpoint : public breakpoint
1030 {
1031   ~longjmp_breakpoint () override;
1032 };
1033 
1034 /* Encapsulate tests for different types of tracepoints.  */
1035 
1036 static bool
1037 is_tracepoint_type (bptype type)
1038 {
1039   return (type == bp_tracepoint
1040 	  || type == bp_fast_tracepoint
1041 	  || type == bp_static_tracepoint);
1042 }
1043 
1044 static bool
1045 is_longjmp_type (bptype type)
1046 {
1047   return type == bp_longjmp || type == bp_exception;
1048 }
1049 
1050 /* See breakpoint.h.  */
1051 
1052 bool
1053 is_tracepoint (const struct breakpoint *b)
1054 {
1055   return is_tracepoint_type (b->type);
1056 }
1057 
1058 /* Factory function to create an appropriate instance of breakpoint given
1059    TYPE.  */
1060 
1061 static std::unique_ptr<breakpoint>
1062 new_breakpoint_from_type (bptype type)
1063 {
1064   breakpoint *b;
1065 
1066   if (is_tracepoint_type (type))
1067     b = new tracepoint ();
1068   else if (is_longjmp_type (type))
1069     b = new longjmp_breakpoint ();
1070   else
1071     b = new breakpoint ();
1072 
1073   return std::unique_ptr<breakpoint> (b);
1074 }
1075 
1076 /* A helper function that validates that COMMANDS are valid for a
1077    breakpoint.  This function will throw an exception if a problem is
1078    found.  */
1079 
1080 static void
1081 validate_commands_for_breakpoint (struct breakpoint *b,
1082 				  struct command_line *commands)
1083 {
1084   if (is_tracepoint (b))
1085     {
1086       struct tracepoint *t = (struct tracepoint *) b;
1087       struct command_line *c;
1088       struct command_line *while_stepping = 0;
1089 
1090       /* Reset the while-stepping step count.  The previous commands
1091          might have included a while-stepping action, while the new
1092          ones might not.  */
1093       t->step_count = 0;
1094 
1095       /* We need to verify that each top-level element of commands is
1096 	 valid for tracepoints, that there's at most one
1097 	 while-stepping element, and that the while-stepping's body
1098 	 has valid tracing commands excluding nested while-stepping.
1099 	 We also need to validate the tracepoint action line in the
1100 	 context of the tracepoint --- validate_actionline actually
1101 	 has side effects, like setting the tracepoint's
1102 	 while-stepping STEP_COUNT, in addition to checking if the
1103 	 collect/teval actions parse and make sense in the
1104 	 tracepoint's context.  */
1105       for (c = commands; c; c = c->next)
1106 	{
1107 	  if (c->control_type == while_stepping_control)
1108 	    {
1109 	      if (b->type == bp_fast_tracepoint)
1110 		error (_("The 'while-stepping' command "
1111 			 "cannot be used for fast tracepoint"));
1112 	      else if (b->type == bp_static_tracepoint)
1113 		error (_("The 'while-stepping' command "
1114 			 "cannot be used for static tracepoint"));
1115 
1116 	      if (while_stepping)
1117 		error (_("The 'while-stepping' command "
1118 			 "can be used only once"));
1119 	      else
1120 		while_stepping = c;
1121 	    }
1122 
1123 	  validate_actionline (c->line, b);
1124 	}
1125       if (while_stepping)
1126 	{
1127 	  struct command_line *c2;
1128 
1129 	  gdb_assert (while_stepping->body_list_1 == nullptr);
1130 	  c2 = while_stepping->body_list_0.get ();
1131 	  for (; c2; c2 = c2->next)
1132 	    {
1133 	      if (c2->control_type == while_stepping_control)
1134 		error (_("The 'while-stepping' command cannot be nested"));
1135 	    }
1136 	}
1137     }
1138   else
1139     {
1140       check_no_tracepoint_commands (commands);
1141     }
1142 }
1143 
1144 /* Return a vector of all the static tracepoints set at ADDR.  The
1145    caller is responsible for releasing the vector.  */
1146 
1147 std::vector<breakpoint *>
1148 static_tracepoints_here (CORE_ADDR addr)
1149 {
1150   struct breakpoint *b;
1151   std::vector<breakpoint *> found;
1152   struct bp_location *loc;
1153 
1154   ALL_BREAKPOINTS (b)
1155     if (b->type == bp_static_tracepoint)
1156       {
1157 	for (loc = b->loc; loc; loc = loc->next)
1158 	  if (loc->address == addr)
1159 	    found.push_back (b);
1160       }
1161 
1162   return found;
1163 }
1164 
1165 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1166    validate that only allowed commands are included.  */
1167 
1168 void
1169 breakpoint_set_commands (struct breakpoint *b,
1170 			 counted_command_line &&commands)
1171 {
1172   validate_commands_for_breakpoint (b, commands.get ());
1173 
1174   b->commands = std::move (commands);
1175   gdb::observers::breakpoint_modified.notify (b);
1176 }
1177 
1178 /* Set the internal `silent' flag on the breakpoint.  Note that this
1179    is not the same as the "silent" that may appear in the breakpoint's
1180    commands.  */
1181 
1182 void
1183 breakpoint_set_silent (struct breakpoint *b, int silent)
1184 {
1185   int old_silent = b->silent;
1186 
1187   b->silent = silent;
1188   if (old_silent != silent)
1189     gdb::observers::breakpoint_modified.notify (b);
1190 }
1191 
1192 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1193    breakpoint work for any thread.  */
1194 
1195 void
1196 breakpoint_set_thread (struct breakpoint *b, int thread)
1197 {
1198   int old_thread = b->thread;
1199 
1200   b->thread = thread;
1201   if (old_thread != thread)
1202     gdb::observers::breakpoint_modified.notify (b);
1203 }
1204 
1205 /* Set the task for this breakpoint.  If TASK is 0, make the
1206    breakpoint work for any task.  */
1207 
1208 void
1209 breakpoint_set_task (struct breakpoint *b, int task)
1210 {
1211   int old_task = b->task;
1212 
1213   b->task = task;
1214   if (old_task != task)
1215     gdb::observers::breakpoint_modified.notify (b);
1216 }
1217 
1218 static void
1219 commands_command_1 (const char *arg, int from_tty,
1220 		    struct command_line *control)
1221 {
1222   counted_command_line cmd;
1223   /* cmd_read will be true once we have read cmd.  Note that cmd might still be
1224      NULL after the call to read_command_lines if the user provides an empty
1225      list of command by just typing "end".  */
1226   bool cmd_read = false;
1227 
1228   std::string new_arg;
1229 
1230   if (arg == NULL || !*arg)
1231     {
1232       if (breakpoint_count - prev_breakpoint_count > 1)
1233 	new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1234 				 breakpoint_count);
1235       else if (breakpoint_count > 0)
1236 	new_arg = string_printf ("%d", breakpoint_count);
1237       arg = new_arg.c_str ();
1238     }
1239 
1240   map_breakpoint_numbers
1241     (arg, [&] (breakpoint *b)
1242      {
1243        if (!cmd_read)
1244 	 {
1245 	   gdb_assert (cmd == NULL);
1246 	   if (control != NULL)
1247 	     cmd = control->body_list_0;
1248 	   else
1249 	     {
1250 	       std::string str
1251 		 = string_printf (_("Type commands for breakpoint(s) "
1252 				    "%s, one per line."),
1253 				  arg);
1254 
1255 	       auto do_validate = [=] (const char *line)
1256 				  {
1257 				    validate_actionline (line, b);
1258 				  };
1259 	       gdb::function_view<void (const char *)> validator;
1260 	       if (is_tracepoint (b))
1261 		 validator = do_validate;
1262 
1263 	       cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1264 	     }
1265 	   cmd_read = true;
1266 	 }
1267 
1268        /* If a breakpoint was on the list more than once, we don't need to
1269 	  do anything.  */
1270        if (b->commands != cmd)
1271 	 {
1272 	   validate_commands_for_breakpoint (b, cmd.get ());
1273 	   b->commands = cmd;
1274 	   gdb::observers::breakpoint_modified.notify (b);
1275 	 }
1276      });
1277 }
1278 
1279 static void
1280 commands_command (const char *arg, int from_tty)
1281 {
1282   commands_command_1 (arg, from_tty, NULL);
1283 }
1284 
1285 /* Like commands_command, but instead of reading the commands from
1286    input stream, takes them from an already parsed command structure.
1287 
1288    This is used by cli-script.c to DTRT with breakpoint commands
1289    that are part of if and while bodies.  */
1290 enum command_control_type
1291 commands_from_control_command (const char *arg, struct command_line *cmd)
1292 {
1293   commands_command_1 (arg, 0, cmd);
1294   return simple_control;
1295 }
1296 
1297 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1298 
1299 static int
1300 bp_location_has_shadow (struct bp_location *bl)
1301 {
1302   if (bl->loc_type != bp_loc_software_breakpoint)
1303     return 0;
1304   if (!bl->inserted)
1305     return 0;
1306   if (bl->target_info.shadow_len == 0)
1307     /* BL isn't valid, or doesn't shadow memory.  */
1308     return 0;
1309   return 1;
1310 }
1311 
1312 /* Update BUF, which is LEN bytes read from the target address
1313    MEMADDR, by replacing a memory breakpoint with its shadowed
1314    contents.
1315 
1316    If READBUF is not NULL, this buffer must not overlap with the of
1317    the breakpoint location's shadow_contents buffer.  Otherwise, a
1318    failed assertion internal error will be raised.  */
1319 
1320 static void
1321 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1322 			    const gdb_byte *writebuf_org,
1323 			    ULONGEST memaddr, LONGEST len,
1324 			    struct bp_target_info *target_info,
1325 			    struct gdbarch *gdbarch)
1326 {
1327   /* Now do full processing of the found relevant range of elements.  */
1328   CORE_ADDR bp_addr = 0;
1329   int bp_size = 0;
1330   int bptoffset = 0;
1331 
1332   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1333 				 current_program_space->aspace, 0))
1334     {
1335       /* The breakpoint is inserted in a different address space.  */
1336       return;
1337     }
1338 
1339   /* Addresses and length of the part of the breakpoint that
1340      we need to copy.  */
1341   bp_addr = target_info->placed_address;
1342   bp_size = target_info->shadow_len;
1343 
1344   if (bp_addr + bp_size <= memaddr)
1345     {
1346       /* The breakpoint is entirely before the chunk of memory we are
1347 	 reading.  */
1348       return;
1349     }
1350 
1351   if (bp_addr >= memaddr + len)
1352     {
1353       /* The breakpoint is entirely after the chunk of memory we are
1354 	 reading.  */
1355       return;
1356     }
1357 
1358   /* Offset within shadow_contents.  */
1359   if (bp_addr < memaddr)
1360     {
1361       /* Only copy the second part of the breakpoint.  */
1362       bp_size -= memaddr - bp_addr;
1363       bptoffset = memaddr - bp_addr;
1364       bp_addr = memaddr;
1365     }
1366 
1367   if (bp_addr + bp_size > memaddr + len)
1368     {
1369       /* Only copy the first part of the breakpoint.  */
1370       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1371     }
1372 
1373   if (readbuf != NULL)
1374     {
1375       /* Verify that the readbuf buffer does not overlap with the
1376 	 shadow_contents buffer.  */
1377       gdb_assert (target_info->shadow_contents >= readbuf + len
1378 		  || readbuf >= (target_info->shadow_contents
1379 				 + target_info->shadow_len));
1380 
1381       /* Update the read buffer with this inserted breakpoint's
1382 	 shadow.  */
1383       memcpy (readbuf + bp_addr - memaddr,
1384 	      target_info->shadow_contents + bptoffset, bp_size);
1385     }
1386   else
1387     {
1388       const unsigned char *bp;
1389       CORE_ADDR addr = target_info->reqstd_address;
1390       int placed_size;
1391 
1392       /* Update the shadow with what we want to write to memory.  */
1393       memcpy (target_info->shadow_contents + bptoffset,
1394 	      writebuf_org + bp_addr - memaddr, bp_size);
1395 
1396       /* Determine appropriate breakpoint contents and size for this
1397 	 address.  */
1398       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1399 
1400       /* Update the final write buffer with this inserted
1401 	 breakpoint's INSN.  */
1402       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1403     }
1404 }
1405 
1406 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1407    by replacing any memory breakpoints with their shadowed contents.
1408 
1409    If READBUF is not NULL, this buffer must not overlap with any of
1410    the breakpoint location's shadow_contents buffers.  Otherwise,
1411    a failed assertion internal error will be raised.
1412 
1413    The range of shadowed area by each bp_location is:
1414      bl->address - bp_locations_placed_address_before_address_max
1415      up to bl->address + bp_locations_shadow_len_after_address_max
1416    The range we were requested to resolve shadows for is:
1417      memaddr ... memaddr + len
1418    Thus the safe cutoff boundaries for performance optimization are
1419      memaddr + len <= (bl->address
1420 		       - bp_locations_placed_address_before_address_max)
1421    and:
1422      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1423 
1424 void
1425 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1426 			const gdb_byte *writebuf_org,
1427 			ULONGEST memaddr, LONGEST len)
1428 {
1429   /* Left boundary, right boundary and median element of our binary
1430      search.  */
1431   unsigned bc_l, bc_r, bc;
1432 
1433   /* Find BC_L which is a leftmost element which may affect BUF
1434      content.  It is safe to report lower value but a failure to
1435      report higher one.  */
1436 
1437   bc_l = 0;
1438   bc_r = bp_locations_count;
1439   while (bc_l + 1 < bc_r)
1440     {
1441       struct bp_location *bl;
1442 
1443       bc = (bc_l + bc_r) / 2;
1444       bl = bp_locations[bc];
1445 
1446       /* Check first BL->ADDRESS will not overflow due to the added
1447 	 constant.  Then advance the left boundary only if we are sure
1448 	 the BC element can in no way affect the BUF content (MEMADDR
1449 	 to MEMADDR + LEN range).
1450 
1451 	 Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1452 	 offset so that we cannot miss a breakpoint with its shadow
1453 	 range tail still reaching MEMADDR.  */
1454 
1455       if ((bl->address + bp_locations_shadow_len_after_address_max
1456 	   >= bl->address)
1457 	  && (bl->address + bp_locations_shadow_len_after_address_max
1458 	      <= memaddr))
1459 	bc_l = bc;
1460       else
1461 	bc_r = bc;
1462     }
1463 
1464   /* Due to the binary search above, we need to make sure we pick the
1465      first location that's at BC_L's address.  E.g., if there are
1466      multiple locations at the same address, BC_L may end up pointing
1467      at a duplicate location, and miss the "master"/"inserted"
1468      location.  Say, given locations L1, L2 and L3 at addresses A and
1469      B:
1470 
1471       L1@A, L2@A, L3@B, ...
1472 
1473      BC_L could end up pointing at location L2, while the "master"
1474      location could be L1.  Since the `loc->inserted' flag is only set
1475      on "master" locations, we'd forget to restore the shadow of L1
1476      and L2.  */
1477   while (bc_l > 0
1478 	 && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1479     bc_l--;
1480 
1481   /* Now do full processing of the found relevant range of elements.  */
1482 
1483   for (bc = bc_l; bc < bp_locations_count; bc++)
1484   {
1485     struct bp_location *bl = bp_locations[bc];
1486 
1487     /* bp_location array has BL->OWNER always non-NULL.  */
1488     if (bl->owner->type == bp_none)
1489       warning (_("reading through apparently deleted breakpoint #%d?"),
1490 	       bl->owner->number);
1491 
1492     /* Performance optimization: any further element can no longer affect BUF
1493        content.  */
1494 
1495     if (bl->address >= bp_locations_placed_address_before_address_max
1496 	&& memaddr + len <= (bl->address
1497 			     - bp_locations_placed_address_before_address_max))
1498       break;
1499 
1500     if (!bp_location_has_shadow (bl))
1501       continue;
1502 
1503     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1504 				memaddr, len, &bl->target_info, bl->gdbarch);
1505   }
1506 }
1507 
1508 /* See breakpoint.h.  */
1509 
1510 bool
1511 is_breakpoint (const struct breakpoint *bpt)
1512 {
1513   return (bpt->type == bp_breakpoint
1514 	  || bpt->type == bp_hardware_breakpoint
1515 	  || bpt->type == bp_dprintf);
1516 }
1517 
1518 /* Return true if BPT is of any hardware watchpoint kind.  */
1519 
1520 static bool
1521 is_hardware_watchpoint (const struct breakpoint *bpt)
1522 {
1523   return (bpt->type == bp_hardware_watchpoint
1524 	  || bpt->type == bp_read_watchpoint
1525 	  || bpt->type == bp_access_watchpoint);
1526 }
1527 
1528 /* See breakpoint.h.  */
1529 
1530 bool
1531 is_watchpoint (const struct breakpoint *bpt)
1532 {
1533   return (is_hardware_watchpoint (bpt)
1534 	  || bpt->type == bp_watchpoint);
1535 }
1536 
1537 /* Returns true if the current thread and its running state are safe
1538    to evaluate or update watchpoint B.  Watchpoints on local
1539    expressions need to be evaluated in the context of the thread that
1540    was current when the watchpoint was created, and, that thread needs
1541    to be stopped to be able to select the correct frame context.
1542    Watchpoints on global expressions can be evaluated on any thread,
1543    and in any state.  It is presently left to the target allowing
1544    memory accesses when threads are running.  */
1545 
1546 static int
1547 watchpoint_in_thread_scope (struct watchpoint *b)
1548 {
1549   return (b->pspace == current_program_space
1550 	  && (b->watchpoint_thread == null_ptid
1551 	      || (inferior_ptid == b->watchpoint_thread
1552 		  && !inferior_thread ()->executing)));
1553 }
1554 
1555 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1556    associated bp_watchpoint_scope breakpoint.  */
1557 
1558 static void
1559 watchpoint_del_at_next_stop (struct watchpoint *w)
1560 {
1561   if (w->related_breakpoint != w)
1562     {
1563       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1564       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1565       w->related_breakpoint->disposition = disp_del_at_next_stop;
1566       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1567       w->related_breakpoint = w;
1568     }
1569   w->disposition = disp_del_at_next_stop;
1570 }
1571 
1572 /* Extract a bitfield value from value VAL using the bit parameters contained in
1573    watchpoint W.  */
1574 
1575 static struct value *
1576 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1577 {
1578   struct value *bit_val;
1579 
1580   if (val == NULL)
1581     return NULL;
1582 
1583   bit_val = allocate_value (value_type (val));
1584 
1585   unpack_value_bitfield (bit_val,
1586 			 w->val_bitpos,
1587 			 w->val_bitsize,
1588 			 value_contents_for_printing (val),
1589 			 value_offset (val),
1590 			 val);
1591 
1592   return bit_val;
1593 }
1594 
1595 /* Allocate a dummy location and add it to B, which must be a software
1596    watchpoint.  This is required because even if a software watchpoint
1597    is not watching any memory, bpstat_stop_status requires a location
1598    to be able to report stops.  */
1599 
1600 static void
1601 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1602 					    struct program_space *pspace)
1603 {
1604   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1605 
1606   b->loc = allocate_bp_location (b);
1607   b->loc->pspace = pspace;
1608   b->loc->address = -1;
1609   b->loc->length = -1;
1610 }
1611 
1612 /* Returns true if B is a software watchpoint that is not watching any
1613    memory (e.g., "watch $pc").  */
1614 
1615 static bool
1616 is_no_memory_software_watchpoint (struct breakpoint *b)
1617 {
1618   return (b->type == bp_watchpoint
1619 	  && b->loc != NULL
1620 	  && b->loc->next == NULL
1621 	  && b->loc->address == -1
1622 	  && b->loc->length == -1);
1623 }
1624 
1625 /* Assuming that B is a watchpoint:
1626    - Reparse watchpoint expression, if REPARSE is non-zero
1627    - Evaluate expression and store the result in B->val
1628    - Evaluate the condition if there is one, and store the result
1629      in b->loc->cond.
1630    - Update the list of values that must be watched in B->loc.
1631 
1632    If the watchpoint disposition is disp_del_at_next_stop, then do
1633    nothing.  If this is local watchpoint that is out of scope, delete
1634    it.
1635 
1636    Even with `set breakpoint always-inserted on' the watchpoints are
1637    removed + inserted on each stop here.  Normal breakpoints must
1638    never be removed because they might be missed by a running thread
1639    when debugging in non-stop mode.  On the other hand, hardware
1640    watchpoints (is_hardware_watchpoint; processed here) are specific
1641    to each LWP since they are stored in each LWP's hardware debug
1642    registers.  Therefore, such LWP must be stopped first in order to
1643    be able to modify its hardware watchpoints.
1644 
1645    Hardware watchpoints must be reset exactly once after being
1646    presented to the user.  It cannot be done sooner, because it would
1647    reset the data used to present the watchpoint hit to the user.  And
1648    it must not be done later because it could display the same single
1649    watchpoint hit during multiple GDB stops.  Note that the latter is
1650    relevant only to the hardware watchpoint types bp_read_watchpoint
1651    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1652    not user-visible - its hit is suppressed if the memory content has
1653    not changed.
1654 
1655    The following constraints influence the location where we can reset
1656    hardware watchpoints:
1657 
1658    * target_stopped_by_watchpoint and target_stopped_data_address are
1659      called several times when GDB stops.
1660 
1661    [linux]
1662    * Multiple hardware watchpoints can be hit at the same time,
1663      causing GDB to stop.  GDB only presents one hardware watchpoint
1664      hit at a time as the reason for stopping, and all the other hits
1665      are presented later, one after the other, each time the user
1666      requests the execution to be resumed.  Execution is not resumed
1667      for the threads still having pending hit event stored in
1668      LWP_INFO->STATUS.  While the watchpoint is already removed from
1669      the inferior on the first stop the thread hit event is kept being
1670      reported from its cached value by linux_nat_stopped_data_address
1671      until the real thread resume happens after the watchpoint gets
1672      presented and thus its LWP_INFO->STATUS gets reset.
1673 
1674    Therefore the hardware watchpoint hit can get safely reset on the
1675    watchpoint removal from inferior.  */
1676 
1677 static void
1678 update_watchpoint (struct watchpoint *b, int reparse)
1679 {
1680   int within_current_scope;
1681   struct frame_id saved_frame_id;
1682   int frame_saved;
1683 
1684   /* If this is a local watchpoint, we only want to check if the
1685      watchpoint frame is in scope if the current thread is the thread
1686      that was used to create the watchpoint.  */
1687   if (!watchpoint_in_thread_scope (b))
1688     return;
1689 
1690   if (b->disposition == disp_del_at_next_stop)
1691     return;
1692 
1693   frame_saved = 0;
1694 
1695   /* Determine if the watchpoint is within scope.  */
1696   if (b->exp_valid_block == NULL)
1697     within_current_scope = 1;
1698   else
1699     {
1700       struct frame_info *fi = get_current_frame ();
1701       struct gdbarch *frame_arch = get_frame_arch (fi);
1702       CORE_ADDR frame_pc = get_frame_pc (fi);
1703 
1704       /* If we're at a point where the stack has been destroyed
1705 	 (e.g. in a function epilogue), unwinding may not work
1706 	 properly. Do not attempt to recreate locations at this
1707 	 point.  See similar comments in watchpoint_check.  */
1708       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1709 	return;
1710 
1711       /* Save the current frame's ID so we can restore it after
1712          evaluating the watchpoint expression on its own frame.  */
1713       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1714          took a frame parameter, so that we didn't have to change the
1715          selected frame.  */
1716       frame_saved = 1;
1717       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1718 
1719       fi = frame_find_by_id (b->watchpoint_frame);
1720       within_current_scope = (fi != NULL);
1721       if (within_current_scope)
1722 	select_frame (fi);
1723     }
1724 
1725   /* We don't free locations.  They are stored in the bp_location array
1726      and update_global_location_list will eventually delete them and
1727      remove breakpoints if needed.  */
1728   b->loc = NULL;
1729 
1730   if (within_current_scope && reparse)
1731     {
1732       const char *s;
1733 
1734       b->exp.reset ();
1735       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1736       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1737       /* If the meaning of expression itself changed, the old value is
1738 	 no longer relevant.  We don't want to report a watchpoint hit
1739 	 to the user when the old value and the new value may actually
1740 	 be completely different objects.  */
1741       b->val = NULL;
1742       b->val_valid = false;
1743 
1744       /* Note that unlike with breakpoints, the watchpoint's condition
1745 	 expression is stored in the breakpoint object, not in the
1746 	 locations (re)created below.  */
1747       if (b->cond_string != NULL)
1748 	{
1749 	  b->cond_exp.reset ();
1750 
1751 	  s = b->cond_string;
1752 	  b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1753 	}
1754     }
1755 
1756   /* If we failed to parse the expression, for example because
1757      it refers to a global variable in a not-yet-loaded shared library,
1758      don't try to insert watchpoint.  We don't automatically delete
1759      such watchpoint, though, since failure to parse expression
1760      is different from out-of-scope watchpoint.  */
1761   if (!target_has_execution)
1762     {
1763       /* Without execution, memory can't change.  No use to try and
1764 	 set watchpoint locations.  The watchpoint will be reset when
1765 	 the target gains execution, through breakpoint_re_set.  */
1766       if (!can_use_hw_watchpoints)
1767 	{
1768 	  if (b->ops->works_in_software_mode (b))
1769 	    b->type = bp_watchpoint;
1770 	  else
1771 	    error (_("Can't set read/access watchpoint when "
1772 		     "hardware watchpoints are disabled."));
1773 	}
1774     }
1775   else if (within_current_scope && b->exp)
1776     {
1777       int pc = 0;
1778       std::vector<value_ref_ptr> val_chain;
1779       struct value *v, *result;
1780       struct program_space *frame_pspace;
1781 
1782       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1783 
1784       /* Avoid setting b->val if it's already set.  The meaning of
1785 	 b->val is 'the last value' user saw, and we should update
1786 	 it only if we reported that last value to user.  As it
1787 	 happens, the code that reports it updates b->val directly.
1788 	 We don't keep track of the memory value for masked
1789 	 watchpoints.  */
1790       if (!b->val_valid && !is_masked_watchpoint (b))
1791 	{
1792 	  if (b->val_bitsize != 0)
1793 	    v = extract_bitfield_from_watchpoint_value (b, v);
1794 	  b->val = release_value (v);
1795 	  b->val_valid = true;
1796 	}
1797 
1798       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1799 
1800       /* Look at each value on the value chain.  */
1801       gdb_assert (!val_chain.empty ());
1802       for (const value_ref_ptr &iter : val_chain)
1803 	{
1804 	  v = iter.get ();
1805 
1806 	  /* If it's a memory location, and GDB actually needed
1807 	     its contents to evaluate the expression, then we
1808 	     must watch it.  If the first value returned is
1809 	     still lazy, that means an error occurred reading it;
1810 	     watch it anyway in case it becomes readable.  */
1811 	  if (VALUE_LVAL (v) == lval_memory
1812 	      && (v == val_chain[0] || ! value_lazy (v)))
1813 	    {
1814 	      struct type *vtype = check_typedef (value_type (v));
1815 
1816 	      /* We only watch structs and arrays if user asked
1817 		 for it explicitly, never if they just happen to
1818 		 appear in the middle of some value chain.  */
1819 	      if (v == result
1820 		  || (vtype->code () != TYPE_CODE_STRUCT
1821 		      && vtype->code () != TYPE_CODE_ARRAY))
1822 		{
1823 		  CORE_ADDR addr;
1824 		  enum target_hw_bp_type type;
1825 		  struct bp_location *loc, **tmp;
1826 		  int bitpos = 0, bitsize = 0;
1827 
1828 		  if (value_bitsize (v) != 0)
1829 		    {
1830 		      /* Extract the bit parameters out from the bitfield
1831 			 sub-expression.  */
1832 		      bitpos = value_bitpos (v);
1833 		      bitsize = value_bitsize (v);
1834 		    }
1835 		  else if (v == result && b->val_bitsize != 0)
1836 		    {
1837 		     /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1838 			lvalue whose bit parameters are saved in the fields
1839 			VAL_BITPOS and VAL_BITSIZE.  */
1840 		      bitpos = b->val_bitpos;
1841 		      bitsize = b->val_bitsize;
1842 		    }
1843 
1844 		  addr = value_address (v);
1845 		  if (bitsize != 0)
1846 		    {
1847 		      /* Skip the bytes that don't contain the bitfield.  */
1848 		      addr += bitpos / 8;
1849 		    }
1850 
1851 		  type = hw_write;
1852 		  if (b->type == bp_read_watchpoint)
1853 		    type = hw_read;
1854 		  else if (b->type == bp_access_watchpoint)
1855 		    type = hw_access;
1856 
1857 		  loc = allocate_bp_location (b);
1858 		  for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1859 		    ;
1860 		  *tmp = loc;
1861 		  loc->gdbarch = get_type_arch (value_type (v));
1862 
1863 		  loc->pspace = frame_pspace;
1864 		  loc->address = address_significant (loc->gdbarch, addr);
1865 
1866 		  if (bitsize != 0)
1867 		    {
1868 		      /* Just cover the bytes that make up the bitfield.  */
1869 		      loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1870 		    }
1871 		  else
1872 		    loc->length = TYPE_LENGTH (value_type (v));
1873 
1874 		  loc->watchpoint_type = type;
1875 		}
1876 	    }
1877 	}
1878 
1879       /* Change the type of breakpoint between hardware assisted or
1880 	 an ordinary watchpoint depending on the hardware support
1881 	 and free hardware slots.  REPARSE is set when the inferior
1882 	 is started.  */
1883       if (reparse)
1884 	{
1885 	  int reg_cnt;
1886 	  enum bp_loc_type loc_type;
1887 	  struct bp_location *bl;
1888 
1889 	  reg_cnt = can_use_hardware_watchpoint (val_chain);
1890 
1891 	  if (reg_cnt)
1892 	    {
1893 	      int i, target_resources_ok, other_type_used;
1894 	      enum bptype type;
1895 
1896 	      /* Use an exact watchpoint when there's only one memory region to be
1897 		 watched, and only one debug register is needed to watch it.  */
1898 	      b->exact = target_exact_watchpoints && reg_cnt == 1;
1899 
1900 	      /* We need to determine how many resources are already
1901 		 used for all other hardware watchpoints plus this one
1902 		 to see if we still have enough resources to also fit
1903 		 this watchpoint in as well.  */
1904 
1905 	      /* If this is a software watchpoint, we try to turn it
1906 		 to a hardware one -- count resources as if B was of
1907 		 hardware watchpoint type.  */
1908 	      type = b->type;
1909 	      if (type == bp_watchpoint)
1910 		type = bp_hardware_watchpoint;
1911 
1912 	      /* This watchpoint may or may not have been placed on
1913 		 the list yet at this point (it won't be in the list
1914 		 if we're trying to create it for the first time,
1915 		 through watch_command), so always account for it
1916 		 manually.  */
1917 
1918 	      /* Count resources used by all watchpoints except B.  */
1919 	      i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1920 
1921 	      /* Add in the resources needed for B.  */
1922 	      i += hw_watchpoint_use_count (b);
1923 
1924 	      target_resources_ok
1925 		= target_can_use_hardware_watchpoint (type, i, other_type_used);
1926 	      if (target_resources_ok <= 0)
1927 		{
1928 		  int sw_mode = b->ops->works_in_software_mode (b);
1929 
1930 		  if (target_resources_ok == 0 && !sw_mode)
1931 		    error (_("Target does not support this type of "
1932 			     "hardware watchpoint."));
1933 		  else if (target_resources_ok < 0 && !sw_mode)
1934 		    error (_("There are not enough available hardware "
1935 			     "resources for this watchpoint."));
1936 
1937 		  /* Downgrade to software watchpoint.  */
1938 		  b->type = bp_watchpoint;
1939 		}
1940 	      else
1941 		{
1942 		  /* If this was a software watchpoint, we've just
1943 		     found we have enough resources to turn it to a
1944 		     hardware watchpoint.  Otherwise, this is a
1945 		     nop.  */
1946 		  b->type = type;
1947 		}
1948 	    }
1949 	  else if (!b->ops->works_in_software_mode (b))
1950 	    {
1951 	      if (!can_use_hw_watchpoints)
1952 		error (_("Can't set read/access watchpoint when "
1953 			 "hardware watchpoints are disabled."));
1954 	      else
1955 		error (_("Expression cannot be implemented with "
1956 			 "read/access watchpoint."));
1957 	    }
1958 	  else
1959 	    b->type = bp_watchpoint;
1960 
1961 	  loc_type = (b->type == bp_watchpoint? bp_loc_other
1962 		      : bp_loc_hardware_watchpoint);
1963 	  for (bl = b->loc; bl; bl = bl->next)
1964 	    bl->loc_type = loc_type;
1965 	}
1966 
1967       /* If a software watchpoint is not watching any memory, then the
1968 	 above left it without any location set up.  But,
1969 	 bpstat_stop_status requires a location to be able to report
1970 	 stops, so make sure there's at least a dummy one.  */
1971       if (b->type == bp_watchpoint && b->loc == NULL)
1972 	software_watchpoint_add_no_memory_location (b, frame_pspace);
1973     }
1974   else if (!within_current_scope)
1975     {
1976       printf_filtered (_("\
1977 Watchpoint %d deleted because the program has left the block\n\
1978 in which its expression is valid.\n"),
1979 		       b->number);
1980       watchpoint_del_at_next_stop (b);
1981     }
1982 
1983   /* Restore the selected frame.  */
1984   if (frame_saved)
1985     select_frame (frame_find_by_id (saved_frame_id));
1986 }
1987 
1988 
1989 /* Returns 1 iff breakpoint location should be
1990    inserted in the inferior.  We don't differentiate the type of BL's owner
1991    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1992    breakpoint_ops is not defined, because in insert_bp_location,
1993    tracepoint's insert_location will not be called.  */
1994 static int
1995 should_be_inserted (struct bp_location *bl)
1996 {
1997   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1998     return 0;
1999 
2000   if (bl->owner->disposition == disp_del_at_next_stop)
2001     return 0;
2002 
2003   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2004     return 0;
2005 
2006   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2007     return 0;
2008 
2009   /* This is set for example, when we're attached to the parent of a
2010      vfork, and have detached from the child.  The child is running
2011      free, and we expect it to do an exec or exit, at which point the
2012      OS makes the parent schedulable again (and the target reports
2013      that the vfork is done).  Until the child is done with the shared
2014      memory region, do not insert breakpoints in the parent, otherwise
2015      the child could still trip on the parent's breakpoints.  Since
2016      the parent is blocked anyway, it won't miss any breakpoint.  */
2017   if (bl->pspace->breakpoints_not_allowed)
2018     return 0;
2019 
2020   /* Don't insert a breakpoint if we're trying to step past its
2021      location, except if the breakpoint is a single-step breakpoint,
2022      and the breakpoint's thread is the thread which is stepping past
2023      a breakpoint.  */
2024   if ((bl->loc_type == bp_loc_software_breakpoint
2025        || bl->loc_type == bp_loc_hardware_breakpoint)
2026       && stepping_past_instruction_at (bl->pspace->aspace,
2027 				       bl->address)
2028       /* The single-step breakpoint may be inserted at the location
2029 	 we're trying to step if the instruction branches to itself.
2030 	 However, the instruction won't be executed at all and it may
2031 	 break the semantics of the instruction, for example, the
2032 	 instruction is a conditional branch or updates some flags.
2033 	 We can't fix it unless GDB is able to emulate the instruction
2034 	 or switch to displaced stepping.  */
2035       && !(bl->owner->type == bp_single_step
2036 	   && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2037     {
2038       infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
2039 			   paddress (bl->gdbarch, bl->address));
2040       return 0;
2041     }
2042 
2043   /* Don't insert watchpoints if we're trying to step past the
2044      instruction that triggered one.  */
2045   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2046       && stepping_past_nonsteppable_watchpoint ())
2047     {
2048       infrun_debug_printf ("stepping past non-steppable watchpoint. "
2049 			   "skipping watchpoint at %s:%d\n",
2050 			   paddress (bl->gdbarch, bl->address), bl->length);
2051       return 0;
2052     }
2053 
2054   return 1;
2055 }
2056 
2057 /* Same as should_be_inserted but does the check assuming
2058    that the location is not duplicated.  */
2059 
2060 static int
2061 unduplicated_should_be_inserted (struct bp_location *bl)
2062 {
2063   int result;
2064   const int save_duplicate = bl->duplicate;
2065 
2066   bl->duplicate = 0;
2067   result = should_be_inserted (bl);
2068   bl->duplicate = save_duplicate;
2069   return result;
2070 }
2071 
2072 /* Parses a conditional described by an expression COND into an
2073    agent expression bytecode suitable for evaluation
2074    by the bytecode interpreter.  Return NULL if there was
2075    any error during parsing.  */
2076 
2077 static agent_expr_up
2078 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2079 {
2080   if (cond == NULL)
2081     return NULL;
2082 
2083   agent_expr_up aexpr;
2084 
2085   /* We don't want to stop processing, so catch any errors
2086      that may show up.  */
2087   try
2088     {
2089       aexpr = gen_eval_for_expr (scope, cond);
2090     }
2091 
2092   catch (const gdb_exception_error &ex)
2093     {
2094       /* If we got here, it means the condition could not be parsed to a valid
2095 	 bytecode expression and thus can't be evaluated on the target's side.
2096 	 It's no use iterating through the conditions.  */
2097     }
2098 
2099   /* We have a valid agent expression.  */
2100   return aexpr;
2101 }
2102 
2103 /* Based on location BL, create a list of breakpoint conditions to be
2104    passed on to the target.  If we have duplicated locations with different
2105    conditions, we will add such conditions to the list.  The idea is that the
2106    target will evaluate the list of conditions and will only notify GDB when
2107    one of them is true.  */
2108 
2109 static void
2110 build_target_condition_list (struct bp_location *bl)
2111 {
2112   struct bp_location **locp = NULL, **loc2p;
2113   int null_condition_or_parse_error = 0;
2114   int modified = bl->needs_update;
2115   struct bp_location *loc;
2116 
2117   /* Release conditions left over from a previous insert.  */
2118   bl->target_info.conditions.clear ();
2119 
2120   /* This is only meaningful if the target is
2121      evaluating conditions and if the user has
2122      opted for condition evaluation on the target's
2123      side.  */
2124   if (gdb_evaluates_breakpoint_condition_p ()
2125       || !target_supports_evaluation_of_breakpoint_conditions ())
2126     return;
2127 
2128   /* Do a first pass to check for locations with no assigned
2129      conditions or conditions that fail to parse to a valid agent
2130      expression bytecode.  If any of these happen, then it's no use to
2131      send conditions to the target since this location will always
2132      trigger and generate a response back to GDB.  Note we consider
2133      all locations at the same address irrespective of type, i.e.,
2134      even if the locations aren't considered duplicates (e.g.,
2135      software breakpoint and hardware breakpoint at the same
2136      address).  */
2137   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2138     {
2139       loc = (*loc2p);
2140       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2141 	{
2142 	  if (modified)
2143 	    {
2144 	      /* Re-parse the conditions since something changed.  In that
2145 		 case we already freed the condition bytecodes (see
2146 		 force_breakpoint_reinsertion).  We just
2147 		 need to parse the condition to bytecodes again.  */
2148 	      loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2149 							loc->cond.get ());
2150 	    }
2151 
2152 	  /* If we have a NULL bytecode expression, it means something
2153 	     went wrong or we have a null condition expression.  */
2154 	  if (!loc->cond_bytecode)
2155 	    {
2156 	      null_condition_or_parse_error = 1;
2157 	      break;
2158 	    }
2159 	}
2160     }
2161 
2162   /* If any of these happened, it means we will have to evaluate the conditions
2163      for the location's address on gdb's side.  It is no use keeping bytecodes
2164      for all the other duplicate locations, thus we free all of them here.
2165 
2166      This is so we have a finer control over which locations' conditions are
2167      being evaluated by GDB or the remote stub.  */
2168   if (null_condition_or_parse_error)
2169     {
2170       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2171 	{
2172 	  loc = (*loc2p);
2173 	  if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2174 	    {
2175 	      /* Only go as far as the first NULL bytecode is
2176 		 located.  */
2177 	      if (!loc->cond_bytecode)
2178 		return;
2179 
2180 	      loc->cond_bytecode.reset ();
2181 	    }
2182 	}
2183     }
2184 
2185   /* No NULL conditions or failed bytecode generation.  Build a
2186      condition list for this location's address.  If we have software
2187      and hardware locations at the same address, they aren't
2188      considered duplicates, but we still marge all the conditions
2189      anyway, as it's simpler, and doesn't really make a practical
2190      difference.  */
2191   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2192     {
2193       loc = (*loc2p);
2194       if (loc->cond
2195 	  && is_breakpoint (loc->owner)
2196 	  && loc->pspace->num == bl->pspace->num
2197 	  && loc->owner->enable_state == bp_enabled
2198 	  && loc->enabled)
2199 	{
2200 	  /* Add the condition to the vector.  This will be used later
2201 	     to send the conditions to the target.  */
2202 	  bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2203 	}
2204     }
2205 
2206   return;
2207 }
2208 
2209 /* Parses a command described by string CMD into an agent expression
2210    bytecode suitable for evaluation by the bytecode interpreter.
2211    Return NULL if there was any error during parsing.  */
2212 
2213 static agent_expr_up
2214 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2215 {
2216   const char *cmdrest;
2217   const char *format_start, *format_end;
2218   struct gdbarch *gdbarch = get_current_arch ();
2219 
2220   if (cmd == NULL)
2221     return NULL;
2222 
2223   cmdrest = cmd;
2224 
2225   if (*cmdrest == ',')
2226     ++cmdrest;
2227   cmdrest = skip_spaces (cmdrest);
2228 
2229   if (*cmdrest++ != '"')
2230     error (_("No format string following the location"));
2231 
2232   format_start = cmdrest;
2233 
2234   format_pieces fpieces (&cmdrest);
2235 
2236   format_end = cmdrest;
2237 
2238   if (*cmdrest++ != '"')
2239     error (_("Bad format string, non-terminated '\"'."));
2240 
2241   cmdrest = skip_spaces (cmdrest);
2242 
2243   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2244     error (_("Invalid argument syntax"));
2245 
2246   if (*cmdrest == ',')
2247     cmdrest++;
2248   cmdrest = skip_spaces (cmdrest);
2249 
2250   /* For each argument, make an expression.  */
2251 
2252   std::vector<struct expression *> argvec;
2253   while (*cmdrest != '\0')
2254     {
2255       const char *cmd1;
2256 
2257       cmd1 = cmdrest;
2258       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2259       argvec.push_back (expr.release ());
2260       cmdrest = cmd1;
2261       if (*cmdrest == ',')
2262 	++cmdrest;
2263     }
2264 
2265   agent_expr_up aexpr;
2266 
2267   /* We don't want to stop processing, so catch any errors
2268      that may show up.  */
2269   try
2270     {
2271       aexpr = gen_printf (scope, gdbarch, 0, 0,
2272 			  format_start, format_end - format_start,
2273 			  argvec.size (), argvec.data ());
2274     }
2275   catch (const gdb_exception_error &ex)
2276     {
2277       /* If we got here, it means the command could not be parsed to a valid
2278 	 bytecode expression and thus can't be evaluated on the target's side.
2279 	 It's no use iterating through the other commands.  */
2280     }
2281 
2282   /* We have a valid agent expression, return it.  */
2283   return aexpr;
2284 }
2285 
2286 /* Based on location BL, create a list of breakpoint commands to be
2287    passed on to the target.  If we have duplicated locations with
2288    different commands, we will add any such to the list.  */
2289 
2290 static void
2291 build_target_command_list (struct bp_location *bl)
2292 {
2293   struct bp_location **locp = NULL, **loc2p;
2294   int null_command_or_parse_error = 0;
2295   int modified = bl->needs_update;
2296   struct bp_location *loc;
2297 
2298   /* Clear commands left over from a previous insert.  */
2299   bl->target_info.tcommands.clear ();
2300 
2301   if (!target_can_run_breakpoint_commands ())
2302     return;
2303 
2304   /* For now, limit to agent-style dprintf breakpoints.  */
2305   if (dprintf_style != dprintf_style_agent)
2306     return;
2307 
2308   /* For now, if we have any location at the same address that isn't a
2309      dprintf, don't install the target-side commands, as that would
2310      make the breakpoint not be reported to the core, and we'd lose
2311      control.  */
2312   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2313     {
2314       loc = (*loc2p);
2315       if (is_breakpoint (loc->owner)
2316 	  && loc->pspace->num == bl->pspace->num
2317 	  && loc->owner->type != bp_dprintf)
2318 	return;
2319     }
2320 
2321   /* Do a first pass to check for locations with no assigned
2322      conditions or conditions that fail to parse to a valid agent expression
2323      bytecode.  If any of these happen, then it's no use to send conditions
2324      to the target since this location will always trigger and generate a
2325      response back to GDB.  */
2326   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2327     {
2328       loc = (*loc2p);
2329       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2330 	{
2331 	  if (modified)
2332 	    {
2333 	      /* Re-parse the commands since something changed.  In that
2334 		 case we already freed the command bytecodes (see
2335 		 force_breakpoint_reinsertion).  We just
2336 		 need to parse the command to bytecodes again.  */
2337 	      loc->cmd_bytecode
2338 		= parse_cmd_to_aexpr (bl->address,
2339 				      loc->owner->extra_string);
2340 	    }
2341 
2342 	  /* If we have a NULL bytecode expression, it means something
2343 	     went wrong or we have a null command expression.  */
2344 	  if (!loc->cmd_bytecode)
2345 	    {
2346 	      null_command_or_parse_error = 1;
2347 	      break;
2348 	    }
2349 	}
2350     }
2351 
2352   /* If anything failed, then we're not doing target-side commands,
2353      and so clean up.  */
2354   if (null_command_or_parse_error)
2355     {
2356       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2357 	{
2358 	  loc = (*loc2p);
2359 	  if (is_breakpoint (loc->owner)
2360 	      && loc->pspace->num == bl->pspace->num)
2361 	    {
2362 	      /* Only go as far as the first NULL bytecode is
2363 		 located.  */
2364 	      if (loc->cmd_bytecode == NULL)
2365 		return;
2366 
2367 	      loc->cmd_bytecode.reset ();
2368 	    }
2369 	}
2370     }
2371 
2372   /* No NULL commands or failed bytecode generation.  Build a command
2373      list for all duplicate locations at this location's address.
2374      Note that here we must care for whether the breakpoint location
2375      types are considered duplicates, otherwise, say, if we have a
2376      software and hardware location at the same address, the target
2377      could end up running the commands twice.  For the moment, we only
2378      support targets-side commands with dprintf, but it doesn't hurt
2379      to be pedantically correct in case that changes.  */
2380   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2381     {
2382       loc = (*loc2p);
2383       if (breakpoint_locations_match (bl, loc)
2384 	  && loc->owner->extra_string
2385 	  && is_breakpoint (loc->owner)
2386 	  && loc->pspace->num == bl->pspace->num
2387 	  && loc->owner->enable_state == bp_enabled
2388 	  && loc->enabled)
2389 	{
2390 	  /* Add the command to the vector.  This will be used later
2391 	     to send the commands to the target.  */
2392 	  bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2393 	}
2394     }
2395 
2396   bl->target_info.persist = 0;
2397   /* Maybe flag this location as persistent.  */
2398   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2399     bl->target_info.persist = 1;
2400 }
2401 
2402 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2403    of breakpoint according to ADDR except single-step breakpoint.
2404    Get the kind of single-step breakpoint according to the current
2405    registers state.  */
2406 
2407 static int
2408 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2409 {
2410   if (bl->owner->type == bp_single_step)
2411     {
2412       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2413       struct regcache *regcache;
2414 
2415       regcache = get_thread_regcache (thr);
2416 
2417       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2418 							 regcache, addr);
2419     }
2420   else
2421     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2422 }
2423 
2424 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2425    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2426    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2427    Returns 0 for success, 1 if the bp_location type is not supported or
2428    -1 for failure.
2429 
2430    NOTE drow/2003-09-09: This routine could be broken down to an
2431    object-style method for each breakpoint or catchpoint type.  */
2432 static int
2433 insert_bp_location (struct bp_location *bl,
2434 		    struct ui_file *tmp_error_stream,
2435 		    int *disabled_breaks,
2436 		    int *hw_breakpoint_error,
2437 		    int *hw_bp_error_explained_already)
2438 {
2439   gdb_exception bp_excpt;
2440 
2441   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2442     return 0;
2443 
2444   /* Note we don't initialize bl->target_info, as that wipes out
2445      the breakpoint location's shadow_contents if the breakpoint
2446      is still inserted at that location.  This in turn breaks
2447      target_read_memory which depends on these buffers when
2448      a memory read is requested at the breakpoint location:
2449      Once the target_info has been wiped, we fail to see that
2450      we have a breakpoint inserted at that address and thus
2451      read the breakpoint instead of returning the data saved in
2452      the breakpoint location's shadow contents.  */
2453   bl->target_info.reqstd_address = bl->address;
2454   bl->target_info.placed_address_space = bl->pspace->aspace;
2455   bl->target_info.length = bl->length;
2456 
2457   /* When working with target-side conditions, we must pass all the conditions
2458      for the same breakpoint address down to the target since GDB will not
2459      insert those locations.  With a list of breakpoint conditions, the target
2460      can decide when to stop and notify GDB.  */
2461 
2462   if (is_breakpoint (bl->owner))
2463     {
2464       build_target_condition_list (bl);
2465       build_target_command_list (bl);
2466       /* Reset the modification marker.  */
2467       bl->needs_update = 0;
2468     }
2469 
2470   /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
2471      set at a read-only address, then a breakpoint location will have
2472      been changed to hardware breakpoint before we get here.  If it is
2473      "off" however, error out before actually trying to insert the
2474      breakpoint, with a nicer error message.  */
2475   if (bl->loc_type == bp_loc_software_breakpoint
2476       && !automatic_hardware_breakpoints)
2477     {
2478       mem_region *mr = lookup_mem_region (bl->address);
2479 
2480       if (mr != nullptr && mr->attrib.mode != MEM_RW)
2481 	{
2482 	  fprintf_unfiltered (tmp_error_stream,
2483 			      _("Cannot insert breakpoint %d.\n"
2484 				"Cannot set software breakpoint "
2485 				"at read-only address %s\n"),
2486 			      bl->owner->number,
2487 			      paddress (bl->gdbarch, bl->address));
2488 	  return 1;
2489 	}
2490     }
2491 
2492   if (bl->loc_type == bp_loc_software_breakpoint
2493       || bl->loc_type == bp_loc_hardware_breakpoint)
2494     {
2495       /* First check to see if we have to handle an overlay.  */
2496       if (overlay_debugging == ovly_off
2497 	  || bl->section == NULL
2498 	  || !(section_is_overlay (bl->section)))
2499 	{
2500 	  /* No overlay handling: just set the breakpoint.  */
2501 	  try
2502 	    {
2503 	      int val;
2504 
2505 	      val = bl->owner->ops->insert_location (bl);
2506 	      if (val)
2507 		bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2508 	    }
2509 	  catch (gdb_exception &e)
2510 	    {
2511 	      bp_excpt = std::move (e);
2512 	    }
2513 	}
2514       else
2515 	{
2516 	  /* This breakpoint is in an overlay section.
2517 	     Shall we set a breakpoint at the LMA?  */
2518 	  if (!overlay_events_enabled)
2519 	    {
2520 	      /* Yes -- overlay event support is not active,
2521 		 so we must try to set a breakpoint at the LMA.
2522 		 This will not work for a hardware breakpoint.  */
2523 	      if (bl->loc_type == bp_loc_hardware_breakpoint)
2524 		warning (_("hardware breakpoint %d not supported in overlay!"),
2525 			 bl->owner->number);
2526 	      else
2527 		{
2528 		  CORE_ADDR addr = overlay_unmapped_address (bl->address,
2529 							     bl->section);
2530 		  /* Set a software (trap) breakpoint at the LMA.  */
2531 		  bl->overlay_target_info = bl->target_info;
2532 		  bl->overlay_target_info.reqstd_address = addr;
2533 
2534 		  /* No overlay handling: just set the breakpoint.  */
2535 		  try
2536 		    {
2537 		      int val;
2538 
2539 		      bl->overlay_target_info.kind
2540 			= breakpoint_kind (bl, &addr);
2541 		      bl->overlay_target_info.placed_address = addr;
2542 		      val = target_insert_breakpoint (bl->gdbarch,
2543 						      &bl->overlay_target_info);
2544 		      if (val)
2545 			bp_excpt
2546 			  = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2547 		    }
2548 		  catch (gdb_exception &e)
2549 		    {
2550 		      bp_excpt = std::move (e);
2551 		    }
2552 
2553 		  if (bp_excpt.reason != 0)
2554 		    fprintf_unfiltered (tmp_error_stream,
2555 					"Overlay breakpoint %d "
2556 					"failed: in ROM?\n",
2557 					bl->owner->number);
2558 		}
2559 	    }
2560 	  /* Shall we set a breakpoint at the VMA? */
2561 	  if (section_is_mapped (bl->section))
2562 	    {
2563 	      /* Yes.  This overlay section is mapped into memory.  */
2564 	      try
2565 	        {
2566 		  int val;
2567 
2568 	          val = bl->owner->ops->insert_location (bl);
2569 		  if (val)
2570 		    bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2571 	        }
2572 	      catch (gdb_exception &e)
2573 	        {
2574 		  bp_excpt = std::move (e);
2575 	        }
2576 	    }
2577 	  else
2578 	    {
2579 	      /* No.  This breakpoint will not be inserted.
2580 		 No error, but do not mark the bp as 'inserted'.  */
2581 	      return 0;
2582 	    }
2583 	}
2584 
2585       if (bp_excpt.reason != 0)
2586 	{
2587 	  /* Can't set the breakpoint.  */
2588 
2589 	  /* In some cases, we might not be able to insert a
2590 	     breakpoint in a shared library that has already been
2591 	     removed, but we have not yet processed the shlib unload
2592 	     event.  Unfortunately, some targets that implement
2593 	     breakpoint insertion themselves can't tell why the
2594 	     breakpoint insertion failed (e.g., the remote target
2595 	     doesn't define error codes), so we must treat generic
2596 	     errors as memory errors.  */
2597 	  if (bp_excpt.reason == RETURN_ERROR
2598 	      && (bp_excpt.error == GENERIC_ERROR
2599 		  || bp_excpt.error == MEMORY_ERROR)
2600 	      && bl->loc_type == bp_loc_software_breakpoint
2601 	      && (solib_name_from_address (bl->pspace, bl->address)
2602 		  || shared_objfile_contains_address_p (bl->pspace,
2603 							bl->address)))
2604 	    {
2605 	      /* See also: disable_breakpoints_in_shlibs.  */
2606 	      bl->shlib_disabled = 1;
2607 	      gdb::observers::breakpoint_modified.notify (bl->owner);
2608 	      if (!*disabled_breaks)
2609 		{
2610 		  fprintf_unfiltered (tmp_error_stream,
2611 				      "Cannot insert breakpoint %d.\n",
2612 				      bl->owner->number);
2613 		  fprintf_unfiltered (tmp_error_stream,
2614 				      "Temporarily disabling shared "
2615 				      "library breakpoints:\n");
2616 		}
2617 	      *disabled_breaks = 1;
2618 	      fprintf_unfiltered (tmp_error_stream,
2619 				  "breakpoint #%d\n", bl->owner->number);
2620 	      return 0;
2621 	    }
2622 	  else
2623 	    {
2624 	      if (bl->loc_type == bp_loc_hardware_breakpoint)
2625 		{
2626 		  *hw_breakpoint_error = 1;
2627 		  *hw_bp_error_explained_already = bp_excpt.message != NULL;
2628                   fprintf_unfiltered (tmp_error_stream,
2629                                       "Cannot insert hardware breakpoint %d%s",
2630                                       bl->owner->number,
2631 				      bp_excpt.message ? ":" : ".\n");
2632                   if (bp_excpt.message != NULL)
2633                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2634 					bp_excpt.what ());
2635 		}
2636 	      else
2637 		{
2638 		  if (bp_excpt.message == NULL)
2639 		    {
2640 		      std::string message
2641 			= memory_error_message (TARGET_XFER_E_IO,
2642 						bl->gdbarch, bl->address);
2643 
2644 		      fprintf_unfiltered (tmp_error_stream,
2645 					  "Cannot insert breakpoint %d.\n"
2646 					  "%s\n",
2647 					  bl->owner->number, message.c_str ());
2648 		    }
2649 		  else
2650 		    {
2651 		      fprintf_unfiltered (tmp_error_stream,
2652 					  "Cannot insert breakpoint %d: %s\n",
2653 					  bl->owner->number,
2654 					  bp_excpt.what ());
2655 		    }
2656 		}
2657 	      return 1;
2658 
2659 	    }
2660 	}
2661       else
2662 	bl->inserted = 1;
2663 
2664       return 0;
2665     }
2666 
2667   else if (bl->loc_type == bp_loc_hardware_watchpoint
2668 	   /* NOTE drow/2003-09-08: This state only exists for removing
2669 	      watchpoints.  It's not clear that it's necessary...  */
2670 	   && bl->owner->disposition != disp_del_at_next_stop)
2671     {
2672       int val;
2673 
2674       gdb_assert (bl->owner->ops != NULL
2675 		  && bl->owner->ops->insert_location != NULL);
2676 
2677       val = bl->owner->ops->insert_location (bl);
2678 
2679       /* If trying to set a read-watchpoint, and it turns out it's not
2680 	 supported, try emulating one with an access watchpoint.  */
2681       if (val == 1 && bl->watchpoint_type == hw_read)
2682 	{
2683 	  struct bp_location *loc, **loc_temp;
2684 
2685 	  /* But don't try to insert it, if there's already another
2686 	     hw_access location that would be considered a duplicate
2687 	     of this one.  */
2688 	  ALL_BP_LOCATIONS (loc, loc_temp)
2689 	    if (loc != bl
2690 		&& loc->watchpoint_type == hw_access
2691 		&& watchpoint_locations_match (bl, loc))
2692 	      {
2693 		bl->duplicate = 1;
2694 		bl->inserted = 1;
2695 		bl->target_info = loc->target_info;
2696 		bl->watchpoint_type = hw_access;
2697 		val = 0;
2698 		break;
2699 	      }
2700 
2701 	  if (val == 1)
2702 	    {
2703 	      bl->watchpoint_type = hw_access;
2704 	      val = bl->owner->ops->insert_location (bl);
2705 
2706 	      if (val)
2707 		/* Back to the original value.  */
2708 		bl->watchpoint_type = hw_read;
2709 	    }
2710 	}
2711 
2712       bl->inserted = (val == 0);
2713     }
2714 
2715   else if (bl->owner->type == bp_catchpoint)
2716     {
2717       int val;
2718 
2719       gdb_assert (bl->owner->ops != NULL
2720 		  && bl->owner->ops->insert_location != NULL);
2721 
2722       val = bl->owner->ops->insert_location (bl);
2723       if (val)
2724 	{
2725 	  bl->owner->enable_state = bp_disabled;
2726 
2727 	  if (val == 1)
2728 	    warning (_("\
2729 Error inserting catchpoint %d: Your system does not support this type\n\
2730 of catchpoint."), bl->owner->number);
2731 	  else
2732 	    warning (_("Error inserting catchpoint %d."), bl->owner->number);
2733 	}
2734 
2735       bl->inserted = (val == 0);
2736 
2737       /* We've already printed an error message if there was a problem
2738 	 inserting this catchpoint, and we've disabled the catchpoint,
2739 	 so just return success.  */
2740       return 0;
2741     }
2742 
2743   return 0;
2744 }
2745 
2746 /* This function is called when program space PSPACE is about to be
2747    deleted.  It takes care of updating breakpoints to not reference
2748    PSPACE anymore.  */
2749 
2750 void
2751 breakpoint_program_space_exit (struct program_space *pspace)
2752 {
2753   struct breakpoint *b, *b_temp;
2754   struct bp_location *loc, **loc_temp;
2755 
2756   /* Remove any breakpoint that was set through this program space.  */
2757   ALL_BREAKPOINTS_SAFE (b, b_temp)
2758     {
2759       if (b->pspace == pspace)
2760 	delete_breakpoint (b);
2761     }
2762 
2763   /* Breakpoints set through other program spaces could have locations
2764      bound to PSPACE as well.  Remove those.  */
2765   ALL_BP_LOCATIONS (loc, loc_temp)
2766     {
2767       struct bp_location *tmp;
2768 
2769       if (loc->pspace == pspace)
2770 	{
2771 	  /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2772 	  if (loc->owner->loc == loc)
2773 	    loc->owner->loc = loc->next;
2774 	  else
2775 	    for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2776 	      if (tmp->next == loc)
2777 		{
2778 		  tmp->next = loc->next;
2779 		  break;
2780 		}
2781 	}
2782     }
2783 
2784   /* Now update the global location list to permanently delete the
2785      removed locations above.  */
2786   update_global_location_list (UGLL_DONT_INSERT);
2787 }
2788 
2789 /* Make sure all breakpoints are inserted in inferior.
2790    Throws exception on any error.
2791    A breakpoint that is already inserted won't be inserted
2792    again, so calling this function twice is safe.  */
2793 void
2794 insert_breakpoints (void)
2795 {
2796   struct breakpoint *bpt;
2797 
2798   ALL_BREAKPOINTS (bpt)
2799     if (is_hardware_watchpoint (bpt))
2800       {
2801 	struct watchpoint *w = (struct watchpoint *) bpt;
2802 
2803 	update_watchpoint (w, 0 /* don't reparse.  */);
2804       }
2805 
2806   /* Updating watchpoints creates new locations, so update the global
2807      location list.  Explicitly tell ugll to insert locations and
2808      ignore breakpoints_always_inserted_mode.  Also,
2809      update_global_location_list tries to "upgrade" software
2810      breakpoints to hardware breakpoints to handle "set breakpoint
2811      auto-hw", so we need to call it even if we don't have new
2812      locations.  */
2813   update_global_location_list (UGLL_INSERT);
2814 }
2815 
2816 /* Invoke CALLBACK for each of bp_location.  */
2817 
2818 void
2819 iterate_over_bp_locations (walk_bp_location_callback callback)
2820 {
2821   struct bp_location *loc, **loc_tmp;
2822 
2823   ALL_BP_LOCATIONS (loc, loc_tmp)
2824     {
2825       callback (loc, NULL);
2826     }
2827 }
2828 
2829 /* This is used when we need to synch breakpoint conditions between GDB and the
2830    target.  It is the case with deleting and disabling of breakpoints when using
2831    always-inserted mode.  */
2832 
2833 static void
2834 update_inserted_breakpoint_locations (void)
2835 {
2836   struct bp_location *bl, **blp_tmp;
2837   int error_flag = 0;
2838   int val = 0;
2839   int disabled_breaks = 0;
2840   int hw_breakpoint_error = 0;
2841   int hw_bp_details_reported = 0;
2842 
2843   string_file tmp_error_stream;
2844 
2845   /* Explicitly mark the warning -- this will only be printed if
2846      there was an error.  */
2847   tmp_error_stream.puts ("Warning:\n");
2848 
2849   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2850 
2851   ALL_BP_LOCATIONS (bl, blp_tmp)
2852     {
2853       /* We only want to update software breakpoints and hardware
2854 	 breakpoints.  */
2855       if (!is_breakpoint (bl->owner))
2856 	continue;
2857 
2858       /* We only want to update locations that are already inserted
2859 	 and need updating.  This is to avoid unwanted insertion during
2860 	 deletion of breakpoints.  */
2861       if (!bl->inserted || !bl->needs_update)
2862 	continue;
2863 
2864       switch_to_program_space_and_thread (bl->pspace);
2865 
2866       /* For targets that support global breakpoints, there's no need
2867 	 to select an inferior to insert breakpoint to.  In fact, even
2868 	 if we aren't attached to any process yet, we should still
2869 	 insert breakpoints.  */
2870       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2871 	  && (inferior_ptid == null_ptid || !target_has_execution))
2872 	continue;
2873 
2874       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2875 				    &hw_breakpoint_error, &hw_bp_details_reported);
2876       if (val)
2877 	error_flag = val;
2878     }
2879 
2880   if (error_flag)
2881     {
2882       target_terminal::ours_for_output ();
2883       error_stream (tmp_error_stream);
2884     }
2885 }
2886 
2887 /* Used when starting or continuing the program.  */
2888 
2889 static void
2890 insert_breakpoint_locations (void)
2891 {
2892   struct breakpoint *bpt;
2893   struct bp_location *bl, **blp_tmp;
2894   int error_flag = 0;
2895   int val = 0;
2896   int disabled_breaks = 0;
2897   int hw_breakpoint_error = 0;
2898   int hw_bp_error_explained_already = 0;
2899 
2900   string_file tmp_error_stream;
2901 
2902   /* Explicitly mark the warning -- this will only be printed if
2903      there was an error.  */
2904   tmp_error_stream.puts ("Warning:\n");
2905 
2906   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2907 
2908   ALL_BP_LOCATIONS (bl, blp_tmp)
2909     {
2910       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2911 	continue;
2912 
2913       /* There is no point inserting thread-specific breakpoints if
2914 	 the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2915 	 has BL->OWNER always non-NULL.  */
2916       if (bl->owner->thread != -1
2917 	  && !valid_global_thread_id (bl->owner->thread))
2918 	continue;
2919 
2920       switch_to_program_space_and_thread (bl->pspace);
2921 
2922       /* For targets that support global breakpoints, there's no need
2923 	 to select an inferior to insert breakpoint to.  In fact, even
2924 	 if we aren't attached to any process yet, we should still
2925 	 insert breakpoints.  */
2926       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2927 	  && (inferior_ptid == null_ptid || !target_has_execution))
2928 	continue;
2929 
2930       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2931 				    &hw_breakpoint_error, &hw_bp_error_explained_already);
2932       if (val)
2933 	error_flag = val;
2934     }
2935 
2936   /* If we failed to insert all locations of a watchpoint, remove
2937      them, as half-inserted watchpoint is of limited use.  */
2938   ALL_BREAKPOINTS (bpt)
2939     {
2940       int some_failed = 0;
2941       struct bp_location *loc;
2942 
2943       if (!is_hardware_watchpoint (bpt))
2944 	continue;
2945 
2946       if (!breakpoint_enabled (bpt))
2947 	continue;
2948 
2949       if (bpt->disposition == disp_del_at_next_stop)
2950 	continue;
2951 
2952       for (loc = bpt->loc; loc; loc = loc->next)
2953 	if (!loc->inserted && should_be_inserted (loc))
2954 	  {
2955 	    some_failed = 1;
2956 	    break;
2957 	  }
2958       if (some_failed)
2959 	{
2960 	  for (loc = bpt->loc; loc; loc = loc->next)
2961 	    if (loc->inserted)
2962 	      remove_breakpoint (loc);
2963 
2964 	  hw_breakpoint_error = 1;
2965 	  tmp_error_stream.printf ("Could not insert "
2966 				   "hardware watchpoint %d.\n",
2967 				   bpt->number);
2968 	  error_flag = -1;
2969 	}
2970     }
2971 
2972   if (error_flag)
2973     {
2974       /* If a hardware breakpoint or watchpoint was inserted, add a
2975          message about possibly exhausted resources.  */
2976       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2977 	{
2978 	  tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
2979 You may have requested too many hardware breakpoints/watchpoints.\n");
2980 	}
2981       target_terminal::ours_for_output ();
2982       error_stream (tmp_error_stream);
2983     }
2984 }
2985 
2986 /* Used when the program stops.
2987    Returns zero if successful, or non-zero if there was a problem
2988    removing a breakpoint location.  */
2989 
2990 int
2991 remove_breakpoints (void)
2992 {
2993   struct bp_location *bl, **blp_tmp;
2994   int val = 0;
2995 
2996   ALL_BP_LOCATIONS (bl, blp_tmp)
2997   {
2998     if (bl->inserted && !is_tracepoint (bl->owner))
2999       val |= remove_breakpoint (bl);
3000   }
3001   return val;
3002 }
3003 
3004 /* When a thread exits, remove breakpoints that are related to
3005    that thread.  */
3006 
3007 static void
3008 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3009 {
3010   struct breakpoint *b, *b_tmp;
3011 
3012   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3013     {
3014       if (b->thread == tp->global_num && user_breakpoint_p (b))
3015 	{
3016 	  b->disposition = disp_del_at_next_stop;
3017 
3018 	  printf_filtered (_("\
3019 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3020 			   b->number, print_thread_id (tp));
3021 
3022 	  /* Hide it from the user.  */
3023 	  b->number = 0;
3024        }
3025     }
3026 }
3027 
3028 /* See breakpoint.h.  */
3029 
3030 void
3031 remove_breakpoints_inf (inferior *inf)
3032 {
3033   struct bp_location *bl, **blp_tmp;
3034   int val;
3035 
3036   ALL_BP_LOCATIONS (bl, blp_tmp)
3037   {
3038     if (bl->pspace != inf->pspace)
3039       continue;
3040 
3041     if (bl->inserted && !bl->target_info.persist)
3042       {
3043 	val = remove_breakpoint (bl);
3044 	if (val != 0)
3045 	  return;
3046       }
3047   }
3048 }
3049 
3050 static int internal_breakpoint_number = -1;
3051 
3052 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3053    If INTERNAL is non-zero, the breakpoint number will be populated
3054    from internal_breakpoint_number and that variable decremented.
3055    Otherwise the breakpoint number will be populated from
3056    breakpoint_count and that value incremented.  Internal breakpoints
3057    do not set the internal var bpnum.  */
3058 static void
3059 set_breakpoint_number (int internal, struct breakpoint *b)
3060 {
3061   if (internal)
3062     b->number = internal_breakpoint_number--;
3063   else
3064     {
3065       set_breakpoint_count (breakpoint_count + 1);
3066       b->number = breakpoint_count;
3067     }
3068 }
3069 
3070 static struct breakpoint *
3071 create_internal_breakpoint (struct gdbarch *gdbarch,
3072 			    CORE_ADDR address, enum bptype type,
3073 			    const struct breakpoint_ops *ops)
3074 {
3075   symtab_and_line sal;
3076   sal.pc = address;
3077   sal.section = find_pc_overlay (sal.pc);
3078   sal.pspace = current_program_space;
3079 
3080   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3081   b->number = internal_breakpoint_number--;
3082   b->disposition = disp_donttouch;
3083 
3084   return b;
3085 }
3086 
3087 static const char *const longjmp_names[] =
3088   {
3089     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3090   };
3091 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3092 
3093 /* Per-objfile data private to breakpoint.c.  */
3094 struct breakpoint_objfile_data
3095 {
3096   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3097   struct bound_minimal_symbol overlay_msym {};
3098 
3099   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3100   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3101 
3102   /* True if we have looked for longjmp probes.  */
3103   int longjmp_searched = 0;
3104 
3105   /* SystemTap probe points for longjmp (if any).  These are non-owning
3106      references.  */
3107   std::vector<probe *> longjmp_probes;
3108 
3109   /* Minimal symbol for "std::terminate()" (if any).  */
3110   struct bound_minimal_symbol terminate_msym {};
3111 
3112   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3113   struct bound_minimal_symbol exception_msym {};
3114 
3115   /* True if we have looked for exception probes.  */
3116   int exception_searched = 0;
3117 
3118   /* SystemTap probe points for unwinding (if any).  These are non-owning
3119      references.  */
3120   std::vector<probe *> exception_probes;
3121 };
3122 
3123 static const struct objfile_key<breakpoint_objfile_data>
3124   breakpoint_objfile_key;
3125 
3126 /* Minimal symbol not found sentinel.  */
3127 static struct minimal_symbol msym_not_found;
3128 
3129 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3130 
3131 static int
3132 msym_not_found_p (const struct minimal_symbol *msym)
3133 {
3134   return msym == &msym_not_found;
3135 }
3136 
3137 /* Return per-objfile data needed by breakpoint.c.
3138    Allocate the data if necessary.  */
3139 
3140 static struct breakpoint_objfile_data *
3141 get_breakpoint_objfile_data (struct objfile *objfile)
3142 {
3143   struct breakpoint_objfile_data *bp_objfile_data;
3144 
3145   bp_objfile_data = breakpoint_objfile_key.get (objfile);
3146   if (bp_objfile_data == NULL)
3147     bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3148   return bp_objfile_data;
3149 }
3150 
3151 static void
3152 create_overlay_event_breakpoint (void)
3153 {
3154   const char *const func_name = "_ovly_debug_event";
3155 
3156   for (objfile *objfile : current_program_space->objfiles ())
3157     {
3158       struct breakpoint *b;
3159       struct breakpoint_objfile_data *bp_objfile_data;
3160       CORE_ADDR addr;
3161       struct explicit_location explicit_loc;
3162 
3163       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3164 
3165       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3166 	continue;
3167 
3168       if (bp_objfile_data->overlay_msym.minsym == NULL)
3169 	{
3170 	  struct bound_minimal_symbol m;
3171 
3172 	  m = lookup_minimal_symbol_text (func_name, objfile);
3173 	  if (m.minsym == NULL)
3174 	    {
3175 	      /* Avoid future lookups in this objfile.  */
3176 	      bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3177 	      continue;
3178 	    }
3179 	  bp_objfile_data->overlay_msym = m;
3180 	}
3181 
3182       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3183       b = create_internal_breakpoint (objfile->arch (), addr,
3184                                       bp_overlay_event,
3185 				      &internal_breakpoint_ops);
3186       initialize_explicit_location (&explicit_loc);
3187       explicit_loc.function_name = ASTRDUP (func_name);
3188       b->location = new_explicit_location (&explicit_loc);
3189 
3190       if (overlay_debugging == ovly_auto)
3191         {
3192           b->enable_state = bp_enabled;
3193           overlay_events_enabled = 1;
3194         }
3195       else
3196        {
3197          b->enable_state = bp_disabled;
3198          overlay_events_enabled = 0;
3199        }
3200     }
3201 }
3202 
3203 static void
3204 create_longjmp_master_breakpoint (void)
3205 {
3206   scoped_restore_current_program_space restore_pspace;
3207 
3208   for (struct program_space *pspace : program_spaces)
3209     {
3210       set_current_program_space (pspace);
3211 
3212       for (objfile *objfile : current_program_space->objfiles ())
3213 	{
3214 	  int i;
3215 	  struct gdbarch *gdbarch;
3216 	  struct breakpoint_objfile_data *bp_objfile_data;
3217 
3218 	  gdbarch = objfile->arch ();
3219 
3220 	  bp_objfile_data = get_breakpoint_objfile_data (objfile);
3221 
3222 	  if (!bp_objfile_data->longjmp_searched)
3223 	    {
3224 	      std::vector<probe *> ret
3225 		= find_probes_in_objfile (objfile, "libc", "longjmp");
3226 
3227 	      if (!ret.empty ())
3228 		{
3229 		  /* We are only interested in checking one element.  */
3230 		  probe *p = ret[0];
3231 
3232 		  if (!p->can_evaluate_arguments ())
3233 		    {
3234 		      /* We cannot use the probe interface here,
3235 			 because it does not know how to evaluate
3236 			 arguments.  */
3237 		      ret.clear ();
3238 		    }
3239 		}
3240 	      bp_objfile_data->longjmp_probes = ret;
3241 	      bp_objfile_data->longjmp_searched = 1;
3242 	    }
3243 
3244 	  if (!bp_objfile_data->longjmp_probes.empty ())
3245 	    {
3246 	      for (probe *p : bp_objfile_data->longjmp_probes)
3247 		{
3248 		  struct breakpoint *b;
3249 
3250 		  b = create_internal_breakpoint (gdbarch,
3251 						  p->get_relocated_address (objfile),
3252 						  bp_longjmp_master,
3253 						  &internal_breakpoint_ops);
3254 		  b->location = new_probe_location ("-probe-stap libc:longjmp");
3255 		  b->enable_state = bp_disabled;
3256 		}
3257 
3258 	      continue;
3259 	    }
3260 
3261 	  if (!gdbarch_get_longjmp_target_p (gdbarch))
3262 	    continue;
3263 
3264 	  for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3265 	    {
3266 	      struct breakpoint *b;
3267 	      const char *func_name;
3268 	      CORE_ADDR addr;
3269 	      struct explicit_location explicit_loc;
3270 
3271 	      if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3272 		continue;
3273 
3274 	      func_name = longjmp_names[i];
3275 	      if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3276 		{
3277 		  struct bound_minimal_symbol m;
3278 
3279 		  m = lookup_minimal_symbol_text (func_name, objfile);
3280 		  if (m.minsym == NULL)
3281 		    {
3282 		      /* Prevent future lookups in this objfile.  */
3283 		      bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3284 		      continue;
3285 		    }
3286 		  bp_objfile_data->longjmp_msym[i] = m;
3287 		}
3288 
3289 	      addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3290 	      b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3291 					      &internal_breakpoint_ops);
3292 	      initialize_explicit_location (&explicit_loc);
3293 	      explicit_loc.function_name = ASTRDUP (func_name);
3294 	      b->location = new_explicit_location (&explicit_loc);
3295 	      b->enable_state = bp_disabled;
3296 	    }
3297 	}
3298     }
3299 }
3300 
3301 /* Create a master std::terminate breakpoint.  */
3302 static void
3303 create_std_terminate_master_breakpoint (void)
3304 {
3305   const char *const func_name = "std::terminate()";
3306 
3307   scoped_restore_current_program_space restore_pspace;
3308 
3309   for (struct program_space *pspace : program_spaces)
3310     {
3311       CORE_ADDR addr;
3312 
3313       set_current_program_space (pspace);
3314 
3315       for (objfile *objfile : current_program_space->objfiles ())
3316 	{
3317 	  struct breakpoint *b;
3318 	  struct breakpoint_objfile_data *bp_objfile_data;
3319 	  struct explicit_location explicit_loc;
3320 
3321 	  bp_objfile_data = get_breakpoint_objfile_data (objfile);
3322 
3323 	  if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3324 	    continue;
3325 
3326 	  if (bp_objfile_data->terminate_msym.minsym == NULL)
3327 	    {
3328 	      struct bound_minimal_symbol m;
3329 
3330 	      m = lookup_minimal_symbol (func_name, NULL, objfile);
3331 	      if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3332 				       && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3333 		{
3334 		  /* Prevent future lookups in this objfile.  */
3335 		  bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3336 		  continue;
3337 		}
3338 	      bp_objfile_data->terminate_msym = m;
3339 	    }
3340 
3341 	  addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3342 	  b = create_internal_breakpoint (objfile->arch (), addr,
3343 					  bp_std_terminate_master,
3344 					  &internal_breakpoint_ops);
3345 	  initialize_explicit_location (&explicit_loc);
3346 	  explicit_loc.function_name = ASTRDUP (func_name);
3347 	  b->location = new_explicit_location (&explicit_loc);
3348 	  b->enable_state = bp_disabled;
3349 	}
3350     }
3351 }
3352 
3353 /* Install a master breakpoint on the unwinder's debug hook.  */
3354 
3355 static void
3356 create_exception_master_breakpoint (void)
3357 {
3358   const char *const func_name = "_Unwind_DebugHook";
3359 
3360   for (objfile *objfile : current_program_space->objfiles ())
3361     {
3362       struct breakpoint *b;
3363       struct gdbarch *gdbarch;
3364       struct breakpoint_objfile_data *bp_objfile_data;
3365       CORE_ADDR addr;
3366       struct explicit_location explicit_loc;
3367 
3368       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3369 
3370       /* We prefer the SystemTap probe point if it exists.  */
3371       if (!bp_objfile_data->exception_searched)
3372 	{
3373 	  std::vector<probe *> ret
3374 	    = find_probes_in_objfile (objfile, "libgcc", "unwind");
3375 
3376 	  if (!ret.empty ())
3377 	    {
3378 	      /* We are only interested in checking one element.  */
3379 	      probe *p = ret[0];
3380 
3381 	      if (!p->can_evaluate_arguments ())
3382 		{
3383 		  /* We cannot use the probe interface here, because it does
3384 		     not know how to evaluate arguments.  */
3385 		  ret.clear ();
3386 		}
3387 	    }
3388 	  bp_objfile_data->exception_probes = ret;
3389 	  bp_objfile_data->exception_searched = 1;
3390 	}
3391 
3392       if (!bp_objfile_data->exception_probes.empty ())
3393 	{
3394 	  gdbarch = objfile->arch ();
3395 
3396 	  for (probe *p : bp_objfile_data->exception_probes)
3397 	    {
3398 	      b = create_internal_breakpoint (gdbarch,
3399 					      p->get_relocated_address (objfile),
3400 					      bp_exception_master,
3401 					      &internal_breakpoint_ops);
3402 	      b->location = new_probe_location ("-probe-stap libgcc:unwind");
3403 	      b->enable_state = bp_disabled;
3404 	    }
3405 
3406 	  continue;
3407 	}
3408 
3409       /* Otherwise, try the hook function.  */
3410 
3411       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3412 	continue;
3413 
3414       gdbarch = objfile->arch ();
3415 
3416       if (bp_objfile_data->exception_msym.minsym == NULL)
3417 	{
3418 	  struct bound_minimal_symbol debug_hook;
3419 
3420 	  debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3421 	  if (debug_hook.minsym == NULL)
3422 	    {
3423 	      bp_objfile_data->exception_msym.minsym = &msym_not_found;
3424 	      continue;
3425 	    }
3426 
3427 	  bp_objfile_data->exception_msym = debug_hook;
3428 	}
3429 
3430       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3431       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3432 						 current_top_target ());
3433       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3434 				      &internal_breakpoint_ops);
3435       initialize_explicit_location (&explicit_loc);
3436       explicit_loc.function_name = ASTRDUP (func_name);
3437       b->location = new_explicit_location (&explicit_loc);
3438       b->enable_state = bp_disabled;
3439     }
3440 }
3441 
3442 /* Does B have a location spec?  */
3443 
3444 static int
3445 breakpoint_event_location_empty_p (const struct breakpoint *b)
3446 {
3447   return b->location != NULL && event_location_empty_p (b->location.get ());
3448 }
3449 
3450 void
3451 update_breakpoints_after_exec (void)
3452 {
3453   struct breakpoint *b, *b_tmp;
3454   struct bp_location *bploc, **bplocp_tmp;
3455 
3456   /* We're about to delete breakpoints from GDB's lists.  If the
3457      INSERTED flag is true, GDB will try to lift the breakpoints by
3458      writing the breakpoints' "shadow contents" back into memory.  The
3459      "shadow contents" are NOT valid after an exec, so GDB should not
3460      do that.  Instead, the target is responsible from marking
3461      breakpoints out as soon as it detects an exec.  We don't do that
3462      here instead, because there may be other attempts to delete
3463      breakpoints after detecting an exec and before reaching here.  */
3464   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3465     if (bploc->pspace == current_program_space)
3466       gdb_assert (!bploc->inserted);
3467 
3468   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3469   {
3470     if (b->pspace != current_program_space)
3471       continue;
3472 
3473     /* Solib breakpoints must be explicitly reset after an exec().  */
3474     if (b->type == bp_shlib_event)
3475       {
3476 	delete_breakpoint (b);
3477 	continue;
3478       }
3479 
3480     /* JIT breakpoints must be explicitly reset after an exec().  */
3481     if (b->type == bp_jit_event)
3482       {
3483 	delete_breakpoint (b);
3484 	continue;
3485       }
3486 
3487     /* Thread event breakpoints must be set anew after an exec(),
3488        as must overlay event and longjmp master breakpoints.  */
3489     if (b->type == bp_thread_event || b->type == bp_overlay_event
3490 	|| b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3491 	|| b->type == bp_exception_master)
3492       {
3493 	delete_breakpoint (b);
3494 	continue;
3495       }
3496 
3497     /* Step-resume breakpoints are meaningless after an exec().  */
3498     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3499       {
3500 	delete_breakpoint (b);
3501 	continue;
3502       }
3503 
3504     /* Just like single-step breakpoints.  */
3505     if (b->type == bp_single_step)
3506       {
3507 	delete_breakpoint (b);
3508 	continue;
3509       }
3510 
3511     /* Longjmp and longjmp-resume breakpoints are also meaningless
3512        after an exec.  */
3513     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3514 	|| b->type == bp_longjmp_call_dummy
3515 	|| b->type == bp_exception || b->type == bp_exception_resume)
3516       {
3517 	delete_breakpoint (b);
3518 	continue;
3519       }
3520 
3521     if (b->type == bp_catchpoint)
3522       {
3523         /* For now, none of the bp_catchpoint breakpoints need to
3524            do anything at this point.  In the future, if some of
3525            the catchpoints need to something, we will need to add
3526            a new method, and call this method from here.  */
3527         continue;
3528       }
3529 
3530     /* bp_finish is a special case.  The only way we ought to be able
3531        to see one of these when an exec() has happened, is if the user
3532        caught a vfork, and then said "finish".  Ordinarily a finish just
3533        carries them to the call-site of the current callee, by setting
3534        a temporary bp there and resuming.  But in this case, the finish
3535        will carry them entirely through the vfork & exec.
3536 
3537        We don't want to allow a bp_finish to remain inserted now.  But
3538        we can't safely delete it, 'cause finish_command has a handle to
3539        the bp on a bpstat, and will later want to delete it.  There's a
3540        chance (and I've seen it happen) that if we delete the bp_finish
3541        here, that its storage will get reused by the time finish_command
3542        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3543        We really must allow finish_command to delete a bp_finish.
3544 
3545        In the absence of a general solution for the "how do we know
3546        it's safe to delete something others may have handles to?"
3547        problem, what we'll do here is just uninsert the bp_finish, and
3548        let finish_command delete it.
3549 
3550        (We know the bp_finish is "doomed" in the sense that it's
3551        momentary, and will be deleted as soon as finish_command sees
3552        the inferior stopped.  So it doesn't matter that the bp's
3553        address is probably bogus in the new a.out, unlike e.g., the
3554        solib breakpoints.)  */
3555 
3556     if (b->type == bp_finish)
3557       {
3558 	continue;
3559       }
3560 
3561     /* Without a symbolic address, we have little hope of the
3562        pre-exec() address meaning the same thing in the post-exec()
3563        a.out.  */
3564     if (breakpoint_event_location_empty_p (b))
3565       {
3566 	delete_breakpoint (b);
3567 	continue;
3568       }
3569   }
3570 }
3571 
3572 int
3573 detach_breakpoints (ptid_t ptid)
3574 {
3575   struct bp_location *bl, **blp_tmp;
3576   int val = 0;
3577   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3578   struct inferior *inf = current_inferior ();
3579 
3580   if (ptid.pid () == inferior_ptid.pid ())
3581     error (_("Cannot detach breakpoints of inferior_ptid"));
3582 
3583   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3584   inferior_ptid = ptid;
3585   ALL_BP_LOCATIONS (bl, blp_tmp)
3586   {
3587     if (bl->pspace != inf->pspace)
3588       continue;
3589 
3590     /* This function must physically remove breakpoints locations
3591        from the specified ptid, without modifying the breakpoint
3592        package's state.  Locations of type bp_loc_other are only
3593        maintained at GDB side.  So, there is no need to remove
3594        these bp_loc_other locations.  Moreover, removing these
3595        would modify the breakpoint package's state.  */
3596     if (bl->loc_type == bp_loc_other)
3597       continue;
3598 
3599     if (bl->inserted)
3600       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3601   }
3602 
3603   return val;
3604 }
3605 
3606 /* Remove the breakpoint location BL from the current address space.
3607    Note that this is used to detach breakpoints from a child fork.
3608    When we get here, the child isn't in the inferior list, and neither
3609    do we have objects to represent its address space --- we should
3610    *not* look at bl->pspace->aspace here.  */
3611 
3612 static int
3613 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3614 {
3615   int val;
3616 
3617   /* BL is never in moribund_locations by our callers.  */
3618   gdb_assert (bl->owner != NULL);
3619 
3620   /* The type of none suggests that owner is actually deleted.
3621      This should not ever happen.  */
3622   gdb_assert (bl->owner->type != bp_none);
3623 
3624   if (bl->loc_type == bp_loc_software_breakpoint
3625       || bl->loc_type == bp_loc_hardware_breakpoint)
3626     {
3627       /* "Normal" instruction breakpoint: either the standard
3628 	 trap-instruction bp (bp_breakpoint), or a
3629 	 bp_hardware_breakpoint.  */
3630 
3631       /* First check to see if we have to handle an overlay.  */
3632       if (overlay_debugging == ovly_off
3633 	  || bl->section == NULL
3634 	  || !(section_is_overlay (bl->section)))
3635 	{
3636 	  /* No overlay handling: just remove the breakpoint.  */
3637 
3638 	  /* If we're trying to uninsert a memory breakpoint that we
3639 	     know is set in a dynamic object that is marked
3640 	     shlib_disabled, then either the dynamic object was
3641 	     removed with "remove-symbol-file" or with
3642 	     "nosharedlibrary".  In the former case, we don't know
3643 	     whether another dynamic object might have loaded over the
3644 	     breakpoint's address -- the user might well let us know
3645 	     about it next with add-symbol-file (the whole point of
3646 	     add-symbol-file is letting the user manually maintain a
3647 	     list of dynamically loaded objects).  If we have the
3648 	     breakpoint's shadow memory, that is, this is a software
3649 	     breakpoint managed by GDB, check whether the breakpoint
3650 	     is still inserted in memory, to avoid overwriting wrong
3651 	     code with stale saved shadow contents.  Note that HW
3652 	     breakpoints don't have shadow memory, as they're
3653 	     implemented using a mechanism that is not dependent on
3654 	     being able to modify the target's memory, and as such
3655 	     they should always be removed.  */
3656 	  if (bl->shlib_disabled
3657 	      && bl->target_info.shadow_len != 0
3658 	      && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3659 	    val = 0;
3660 	  else
3661 	    val = bl->owner->ops->remove_location (bl, reason);
3662 	}
3663       else
3664 	{
3665 	  /* This breakpoint is in an overlay section.
3666 	     Did we set a breakpoint at the LMA?  */
3667 	  if (!overlay_events_enabled)
3668 	      {
3669 		/* Yes -- overlay event support is not active, so we
3670 		   should have set a breakpoint at the LMA.  Remove it.
3671 		*/
3672 		/* Ignore any failures: if the LMA is in ROM, we will
3673 		   have already warned when we failed to insert it.  */
3674 		if (bl->loc_type == bp_loc_hardware_breakpoint)
3675 		  target_remove_hw_breakpoint (bl->gdbarch,
3676 					       &bl->overlay_target_info);
3677 		else
3678 		  target_remove_breakpoint (bl->gdbarch,
3679 					    &bl->overlay_target_info,
3680 					    reason);
3681 	      }
3682 	  /* Did we set a breakpoint at the VMA?
3683 	     If so, we will have marked the breakpoint 'inserted'.  */
3684 	  if (bl->inserted)
3685 	    {
3686 	      /* Yes -- remove it.  Previously we did not bother to
3687 		 remove the breakpoint if the section had been
3688 		 unmapped, but let's not rely on that being safe.  We
3689 		 don't know what the overlay manager might do.  */
3690 
3691 	      /* However, we should remove *software* breakpoints only
3692 		 if the section is still mapped, or else we overwrite
3693 		 wrong code with the saved shadow contents.  */
3694 	      if (bl->loc_type == bp_loc_hardware_breakpoint
3695 		  || section_is_mapped (bl->section))
3696 		val = bl->owner->ops->remove_location (bl, reason);
3697 	      else
3698 		val = 0;
3699 	    }
3700 	  else
3701 	    {
3702 	      /* No -- not inserted, so no need to remove.  No error.  */
3703 	      val = 0;
3704 	    }
3705 	}
3706 
3707       /* In some cases, we might not be able to remove a breakpoint in
3708 	 a shared library that has already been removed, but we have
3709 	 not yet processed the shlib unload event.  Similarly for an
3710 	 unloaded add-symbol-file object - the user might not yet have
3711 	 had the chance to remove-symbol-file it.  shlib_disabled will
3712 	 be set if the library/object has already been removed, but
3713 	 the breakpoint hasn't been uninserted yet, e.g., after
3714 	 "nosharedlibrary" or "remove-symbol-file" with breakpoints
3715 	 always-inserted mode.  */
3716       if (val
3717 	  && (bl->loc_type == bp_loc_software_breakpoint
3718 	      && (bl->shlib_disabled
3719 		  || solib_name_from_address (bl->pspace, bl->address)
3720 		  || shared_objfile_contains_address_p (bl->pspace,
3721 							bl->address))))
3722 	val = 0;
3723 
3724       if (val)
3725 	return val;
3726       bl->inserted = (reason == DETACH_BREAKPOINT);
3727     }
3728   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3729     {
3730       gdb_assert (bl->owner->ops != NULL
3731 		  && bl->owner->ops->remove_location != NULL);
3732 
3733       bl->inserted = (reason == DETACH_BREAKPOINT);
3734       bl->owner->ops->remove_location (bl, reason);
3735 
3736       /* Failure to remove any of the hardware watchpoints comes here.  */
3737       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3738 	warning (_("Could not remove hardware watchpoint %d."),
3739 		 bl->owner->number);
3740     }
3741   else if (bl->owner->type == bp_catchpoint
3742            && breakpoint_enabled (bl->owner)
3743            && !bl->duplicate)
3744     {
3745       gdb_assert (bl->owner->ops != NULL
3746 		  && bl->owner->ops->remove_location != NULL);
3747 
3748       val = bl->owner->ops->remove_location (bl, reason);
3749       if (val)
3750 	return val;
3751 
3752       bl->inserted = (reason == DETACH_BREAKPOINT);
3753     }
3754 
3755   return 0;
3756 }
3757 
3758 static int
3759 remove_breakpoint (struct bp_location *bl)
3760 {
3761   /* BL is never in moribund_locations by our callers.  */
3762   gdb_assert (bl->owner != NULL);
3763 
3764   /* The type of none suggests that owner is actually deleted.
3765      This should not ever happen.  */
3766   gdb_assert (bl->owner->type != bp_none);
3767 
3768   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3769 
3770   switch_to_program_space_and_thread (bl->pspace);
3771 
3772   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3773 }
3774 
3775 /* Clear the "inserted" flag in all breakpoints.  */
3776 
3777 void
3778 mark_breakpoints_out (void)
3779 {
3780   struct bp_location *bl, **blp_tmp;
3781 
3782   ALL_BP_LOCATIONS (bl, blp_tmp)
3783     if (bl->pspace == current_program_space)
3784       bl->inserted = 0;
3785 }
3786 
3787 /* Clear the "inserted" flag in all breakpoints and delete any
3788    breakpoints which should go away between runs of the program.
3789 
3790    Plus other such housekeeping that has to be done for breakpoints
3791    between runs.
3792 
3793    Note: this function gets called at the end of a run (by
3794    generic_mourn_inferior) and when a run begins (by
3795    init_wait_for_inferior).  */
3796 
3797 
3798 
3799 void
3800 breakpoint_init_inferior (enum inf_context context)
3801 {
3802   struct breakpoint *b, *b_tmp;
3803   struct program_space *pspace = current_program_space;
3804 
3805   /* If breakpoint locations are shared across processes, then there's
3806      nothing to do.  */
3807   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3808     return;
3809 
3810   mark_breakpoints_out ();
3811 
3812   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3813   {
3814     if (b->loc && b->loc->pspace != pspace)
3815       continue;
3816 
3817     switch (b->type)
3818       {
3819       case bp_call_dummy:
3820       case bp_longjmp_call_dummy:
3821 
3822 	/* If the call dummy breakpoint is at the entry point it will
3823 	   cause problems when the inferior is rerun, so we better get
3824 	   rid of it.  */
3825 
3826       case bp_watchpoint_scope:
3827 
3828 	/* Also get rid of scope breakpoints.  */
3829 
3830       case bp_shlib_event:
3831 
3832 	/* Also remove solib event breakpoints.  Their addresses may
3833 	   have changed since the last time we ran the program.
3834 	   Actually we may now be debugging against different target;
3835 	   and so the solib backend that installed this breakpoint may
3836 	   not be used in by the target.  E.g.,
3837 
3838 	   (gdb) file prog-linux
3839 	   (gdb) run               # native linux target
3840 	   ...
3841 	   (gdb) kill
3842 	   (gdb) file prog-win.exe
3843 	   (gdb) tar rem :9999     # remote Windows gdbserver.
3844 	*/
3845 
3846       case bp_step_resume:
3847 
3848 	/* Also remove step-resume breakpoints.  */
3849 
3850       case bp_single_step:
3851 
3852 	/* Also remove single-step breakpoints.  */
3853 
3854 	delete_breakpoint (b);
3855 	break;
3856 
3857       case bp_watchpoint:
3858       case bp_hardware_watchpoint:
3859       case bp_read_watchpoint:
3860       case bp_access_watchpoint:
3861 	{
3862 	  struct watchpoint *w = (struct watchpoint *) b;
3863 
3864 	  /* Likewise for watchpoints on local expressions.  */
3865 	  if (w->exp_valid_block != NULL)
3866 	    delete_breakpoint (b);
3867 	  else
3868 	    {
3869 	      /* Get rid of existing locations, which are no longer
3870 		 valid.  New ones will be created in
3871 		 update_watchpoint, when the inferior is restarted.
3872 		 The next update_global_location_list call will
3873 		 garbage collect them.  */
3874 	      b->loc = NULL;
3875 
3876 	      if (context == inf_starting)
3877 		{
3878 		  /* Reset val field to force reread of starting value in
3879 		     insert_breakpoints.  */
3880 		  w->val.reset (nullptr);
3881 		  w->val_valid = false;
3882 		}
3883 	    }
3884 	}
3885 	break;
3886       default:
3887 	break;
3888       }
3889   }
3890 
3891   /* Get rid of the moribund locations.  */
3892   for (bp_location *bl : moribund_locations)
3893     decref_bp_location (&bl);
3894   moribund_locations.clear ();
3895 }
3896 
3897 /* These functions concern about actual breakpoints inserted in the
3898    target --- to e.g. check if we need to do decr_pc adjustment or if
3899    we need to hop over the bkpt --- so we check for address space
3900    match, not program space.  */
3901 
3902 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3903    exists at PC.  It returns ordinary_breakpoint_here if it's an
3904    ordinary breakpoint, or permanent_breakpoint_here if it's a
3905    permanent breakpoint.
3906    - When continuing from a location with an ordinary breakpoint, we
3907      actually single step once before calling insert_breakpoints.
3908    - When continuing from a location with a permanent breakpoint, we
3909      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3910      the target, to advance the PC past the breakpoint.  */
3911 
3912 enum breakpoint_here
3913 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3914 {
3915   struct bp_location *bl, **blp_tmp;
3916   int any_breakpoint_here = 0;
3917 
3918   ALL_BP_LOCATIONS (bl, blp_tmp)
3919     {
3920       if (bl->loc_type != bp_loc_software_breakpoint
3921 	  && bl->loc_type != bp_loc_hardware_breakpoint)
3922 	continue;
3923 
3924       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3925       if ((breakpoint_enabled (bl->owner)
3926 	   || bl->permanent)
3927 	  && breakpoint_location_address_match (bl, aspace, pc))
3928 	{
3929 	  if (overlay_debugging
3930 	      && section_is_overlay (bl->section)
3931 	      && !section_is_mapped (bl->section))
3932 	    continue;		/* unmapped overlay -- can't be a match */
3933 	  else if (bl->permanent)
3934 	    return permanent_breakpoint_here;
3935 	  else
3936 	    any_breakpoint_here = 1;
3937 	}
3938     }
3939 
3940   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3941 }
3942 
3943 /* See breakpoint.h.  */
3944 
3945 int
3946 breakpoint_in_range_p (const address_space *aspace,
3947 		       CORE_ADDR addr, ULONGEST len)
3948 {
3949   struct bp_location *bl, **blp_tmp;
3950 
3951   ALL_BP_LOCATIONS (bl, blp_tmp)
3952     {
3953       if (bl->loc_type != bp_loc_software_breakpoint
3954 	  && bl->loc_type != bp_loc_hardware_breakpoint)
3955 	continue;
3956 
3957       if ((breakpoint_enabled (bl->owner)
3958 	   || bl->permanent)
3959 	  && breakpoint_location_address_range_overlap (bl, aspace,
3960 							addr, len))
3961 	{
3962 	  if (overlay_debugging
3963 	      && section_is_overlay (bl->section)
3964 	      && !section_is_mapped (bl->section))
3965 	    {
3966 	      /* Unmapped overlay -- can't be a match.  */
3967 	      continue;
3968 	    }
3969 
3970 	  return 1;
3971 	}
3972     }
3973 
3974   return 0;
3975 }
3976 
3977 /* Return true if there's a moribund breakpoint at PC.  */
3978 
3979 int
3980 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3981 {
3982   for (bp_location *loc : moribund_locations)
3983     if (breakpoint_location_address_match (loc, aspace, pc))
3984       return 1;
3985 
3986   return 0;
3987 }
3988 
3989 /* Returns non-zero iff BL is inserted at PC, in address space
3990    ASPACE.  */
3991 
3992 static int
3993 bp_location_inserted_here_p (struct bp_location *bl,
3994 			     const address_space *aspace, CORE_ADDR pc)
3995 {
3996   if (bl->inserted
3997       && breakpoint_address_match (bl->pspace->aspace, bl->address,
3998 				   aspace, pc))
3999     {
4000       if (overlay_debugging
4001 	  && section_is_overlay (bl->section)
4002 	  && !section_is_mapped (bl->section))
4003 	return 0;		/* unmapped overlay -- can't be a match */
4004       else
4005 	return 1;
4006     }
4007   return 0;
4008 }
4009 
4010 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4011 
4012 int
4013 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4014 {
4015   struct bp_location **blp, **blp_tmp = NULL;
4016 
4017   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4018     {
4019       struct bp_location *bl = *blp;
4020 
4021       if (bl->loc_type != bp_loc_software_breakpoint
4022 	  && bl->loc_type != bp_loc_hardware_breakpoint)
4023 	continue;
4024 
4025       if (bp_location_inserted_here_p (bl, aspace, pc))
4026 	return 1;
4027     }
4028   return 0;
4029 }
4030 
4031 /* This function returns non-zero iff there is a software breakpoint
4032    inserted at PC.  */
4033 
4034 int
4035 software_breakpoint_inserted_here_p (const address_space *aspace,
4036 				     CORE_ADDR pc)
4037 {
4038   struct bp_location **blp, **blp_tmp = NULL;
4039 
4040   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4041     {
4042       struct bp_location *bl = *blp;
4043 
4044       if (bl->loc_type != bp_loc_software_breakpoint)
4045 	continue;
4046 
4047       if (bp_location_inserted_here_p (bl, aspace, pc))
4048 	return 1;
4049     }
4050 
4051   return 0;
4052 }
4053 
4054 /* See breakpoint.h.  */
4055 
4056 int
4057 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4058 				     CORE_ADDR pc)
4059 {
4060   struct bp_location **blp, **blp_tmp = NULL;
4061 
4062   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4063     {
4064       struct bp_location *bl = *blp;
4065 
4066       if (bl->loc_type != bp_loc_hardware_breakpoint)
4067 	continue;
4068 
4069       if (bp_location_inserted_here_p (bl, aspace, pc))
4070 	return 1;
4071     }
4072 
4073   return 0;
4074 }
4075 
4076 int
4077 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4078 				       CORE_ADDR addr, ULONGEST len)
4079 {
4080   struct breakpoint *bpt;
4081 
4082   ALL_BREAKPOINTS (bpt)
4083     {
4084       struct bp_location *loc;
4085 
4086       if (bpt->type != bp_hardware_watchpoint
4087 	  && bpt->type != bp_access_watchpoint)
4088 	continue;
4089 
4090       if (!breakpoint_enabled (bpt))
4091 	continue;
4092 
4093       for (loc = bpt->loc; loc; loc = loc->next)
4094 	if (loc->pspace->aspace == aspace && loc->inserted)
4095 	  {
4096 	    CORE_ADDR l, h;
4097 
4098 	    /* Check for intersection.  */
4099 	    l = std::max<CORE_ADDR> (loc->address, addr);
4100 	    h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4101 	    if (l < h)
4102 	      return 1;
4103 	  }
4104     }
4105   return 0;
4106 }
4107 
4108 /* See breakpoint.h.  */
4109 
4110 bool
4111 is_catchpoint (struct breakpoint *b)
4112 {
4113   return (b->type == bp_catchpoint);
4114 }
4115 
4116 /* Frees any storage that is part of a bpstat.  Does not walk the
4117    'next' chain.  */
4118 
4119 bpstats::~bpstats ()
4120 {
4121   if (bp_location_at != NULL)
4122     decref_bp_location (&bp_location_at);
4123 }
4124 
4125 /* Clear a bpstat so that it says we are not at any breakpoint.
4126    Also free any storage that is part of a bpstat.  */
4127 
4128 void
4129 bpstat_clear (bpstat *bsp)
4130 {
4131   bpstat p;
4132   bpstat q;
4133 
4134   if (bsp == 0)
4135     return;
4136   p = *bsp;
4137   while (p != NULL)
4138     {
4139       q = p->next;
4140       delete p;
4141       p = q;
4142     }
4143   *bsp = NULL;
4144 }
4145 
4146 bpstats::bpstats (const bpstats &other)
4147   : next (NULL),
4148     bp_location_at (other.bp_location_at),
4149     breakpoint_at (other.breakpoint_at),
4150     commands (other.commands),
4151     print (other.print),
4152     stop (other.stop),
4153     print_it (other.print_it)
4154 {
4155   if (other.old_val != NULL)
4156     old_val = release_value (value_copy (other.old_val.get ()));
4157   incref_bp_location (bp_location_at);
4158 }
4159 
4160 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4161    is part of the bpstat is copied as well.  */
4162 
4163 bpstat
4164 bpstat_copy (bpstat bs)
4165 {
4166   bpstat p = NULL;
4167   bpstat tmp;
4168   bpstat retval = NULL;
4169 
4170   if (bs == NULL)
4171     return bs;
4172 
4173   for (; bs != NULL; bs = bs->next)
4174     {
4175       tmp = new bpstats (*bs);
4176 
4177       if (p == NULL)
4178 	/* This is the first thing in the chain.  */
4179 	retval = tmp;
4180       else
4181 	p->next = tmp;
4182       p = tmp;
4183     }
4184   p->next = NULL;
4185   return retval;
4186 }
4187 
4188 /* Find the bpstat associated with this breakpoint.  */
4189 
4190 bpstat
4191 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4192 {
4193   if (bsp == NULL)
4194     return NULL;
4195 
4196   for (; bsp != NULL; bsp = bsp->next)
4197     {
4198       if (bsp->breakpoint_at == breakpoint)
4199 	return bsp;
4200     }
4201   return NULL;
4202 }
4203 
4204 /* See breakpoint.h.  */
4205 
4206 bool
4207 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4208 {
4209   for (; bsp != NULL; bsp = bsp->next)
4210     {
4211       if (bsp->breakpoint_at == NULL)
4212 	{
4213 	  /* A moribund location can never explain a signal other than
4214 	     GDB_SIGNAL_TRAP.  */
4215 	  if (sig == GDB_SIGNAL_TRAP)
4216 	    return true;
4217 	}
4218       else
4219 	{
4220 	  if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4221 							sig))
4222 	    return true;
4223 	}
4224     }
4225 
4226   return false;
4227 }
4228 
4229 /* Put in *NUM the breakpoint number of the first breakpoint we are
4230    stopped at.  *BSP upon return is a bpstat which points to the
4231    remaining breakpoints stopped at (but which is not guaranteed to be
4232    good for anything but further calls to bpstat_num).
4233 
4234    Return 0 if passed a bpstat which does not indicate any breakpoints.
4235    Return -1 if stopped at a breakpoint that has been deleted since
4236    we set it.
4237    Return 1 otherwise.  */
4238 
4239 int
4240 bpstat_num (bpstat *bsp, int *num)
4241 {
4242   struct breakpoint *b;
4243 
4244   if ((*bsp) == NULL)
4245     return 0;			/* No more breakpoint values */
4246 
4247   /* We assume we'll never have several bpstats that correspond to a
4248      single breakpoint -- otherwise, this function might return the
4249      same number more than once and this will look ugly.  */
4250   b = (*bsp)->breakpoint_at;
4251   *bsp = (*bsp)->next;
4252   if (b == NULL)
4253     return -1;			/* breakpoint that's been deleted since */
4254 
4255   *num = b->number;		/* We have its number */
4256   return 1;
4257 }
4258 
4259 /* See breakpoint.h.  */
4260 
4261 void
4262 bpstat_clear_actions (void)
4263 {
4264   bpstat bs;
4265 
4266   if (inferior_ptid == null_ptid)
4267     return;
4268 
4269   thread_info *tp = inferior_thread ();
4270   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4271     {
4272       bs->commands = NULL;
4273       bs->old_val.reset (nullptr);
4274     }
4275 }
4276 
4277 /* Called when a command is about to proceed the inferior.  */
4278 
4279 static void
4280 breakpoint_about_to_proceed (void)
4281 {
4282   if (inferior_ptid != null_ptid)
4283     {
4284       struct thread_info *tp = inferior_thread ();
4285 
4286       /* Allow inferior function calls in breakpoint commands to not
4287 	 interrupt the command list.  When the call finishes
4288 	 successfully, the inferior will be standing at the same
4289 	 breakpoint as if nothing happened.  */
4290       if (tp->control.in_infcall)
4291 	return;
4292     }
4293 
4294   breakpoint_proceeded = 1;
4295 }
4296 
4297 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4298    or its equivalent.  */
4299 
4300 static int
4301 command_line_is_silent (struct command_line *cmd)
4302 {
4303   return cmd && (strcmp ("silent", cmd->line) == 0);
4304 }
4305 
4306 /* Execute all the commands associated with all the breakpoints at
4307    this location.  Any of these commands could cause the process to
4308    proceed beyond this point, etc.  We look out for such changes by
4309    checking the global "breakpoint_proceeded" after each command.
4310 
4311    Returns true if a breakpoint command resumed the inferior.  In that
4312    case, it is the caller's responsibility to recall it again with the
4313    bpstat of the current thread.  */
4314 
4315 static int
4316 bpstat_do_actions_1 (bpstat *bsp)
4317 {
4318   bpstat bs;
4319   int again = 0;
4320 
4321   /* Avoid endless recursion if a `source' command is contained
4322      in bs->commands.  */
4323   if (executing_breakpoint_commands)
4324     return 0;
4325 
4326   scoped_restore save_executing
4327     = make_scoped_restore (&executing_breakpoint_commands, 1);
4328 
4329   scoped_restore preventer = prevent_dont_repeat ();
4330 
4331   /* This pointer will iterate over the list of bpstat's.  */
4332   bs = *bsp;
4333 
4334   breakpoint_proceeded = 0;
4335   for (; bs != NULL; bs = bs->next)
4336     {
4337       struct command_line *cmd = NULL;
4338 
4339       /* Take ownership of the BSP's command tree, if it has one.
4340 
4341          The command tree could legitimately contain commands like
4342          'step' and 'next', which call clear_proceed_status, which
4343          frees stop_bpstat's command tree.  To make sure this doesn't
4344          free the tree we're executing out from under us, we need to
4345          take ownership of the tree ourselves.  Since a given bpstat's
4346          commands are only executed once, we don't need to copy it; we
4347          can clear the pointer in the bpstat, and make sure we free
4348          the tree when we're done.  */
4349       counted_command_line ccmd = bs->commands;
4350       bs->commands = NULL;
4351       if (ccmd != NULL)
4352 	cmd = ccmd.get ();
4353       if (command_line_is_silent (cmd))
4354 	{
4355 	  /* The action has been already done by bpstat_stop_status.  */
4356 	  cmd = cmd->next;
4357 	}
4358 
4359       while (cmd != NULL)
4360 	{
4361 	  execute_control_command (cmd);
4362 
4363 	  if (breakpoint_proceeded)
4364 	    break;
4365 	  else
4366 	    cmd = cmd->next;
4367 	}
4368 
4369       if (breakpoint_proceeded)
4370 	{
4371 	  if (current_ui->async)
4372 	    /* If we are in async mode, then the target might be still
4373 	       running, not stopped at any breakpoint, so nothing for
4374 	       us to do here -- just return to the event loop.  */
4375 	    ;
4376 	  else
4377 	    /* In sync mode, when execute_control_command returns
4378 	       we're already standing on the next breakpoint.
4379 	       Breakpoint commands for that stop were not run, since
4380 	       execute_command does not run breakpoint commands --
4381 	       only command_line_handler does, but that one is not
4382 	       involved in execution of breakpoint commands.  So, we
4383 	       can now execute breakpoint commands.  It should be
4384 	       noted that making execute_command do bpstat actions is
4385 	       not an option -- in this case we'll have recursive
4386 	       invocation of bpstat for each breakpoint with a
4387 	       command, and can easily blow up GDB stack.  Instead, we
4388 	       return true, which will trigger the caller to recall us
4389 	       with the new stop_bpstat.  */
4390 	    again = 1;
4391 	  break;
4392 	}
4393     }
4394   return again;
4395 }
4396 
4397 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4398    one, is alive and has execution.  Return NULL otherwise.  */
4399 
4400 static thread_info *
4401 get_bpstat_thread ()
4402 {
4403   if (inferior_ptid == null_ptid || !target_has_execution)
4404     return NULL;
4405 
4406   thread_info *tp = inferior_thread ();
4407   if (tp->state == THREAD_EXITED || tp->executing)
4408     return NULL;
4409   return tp;
4410 }
4411 
4412 void
4413 bpstat_do_actions (void)
4414 {
4415   auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4416   thread_info *tp;
4417 
4418   /* Do any commands attached to breakpoint we are stopped at.  */
4419   while ((tp = get_bpstat_thread ()) != NULL)
4420     {
4421       /* Since in sync mode, bpstat_do_actions may resume the
4422 	 inferior, and only return when it is stopped at the next
4423 	 breakpoint, we keep doing breakpoint actions until it returns
4424 	 false to indicate the inferior was not resumed.  */
4425       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4426 	break;
4427     }
4428 
4429   cleanup_if_error.release ();
4430 }
4431 
4432 /* Print out the (old or new) value associated with a watchpoint.  */
4433 
4434 static void
4435 watchpoint_value_print (struct value *val, struct ui_file *stream)
4436 {
4437   if (val == NULL)
4438     fprintf_styled (stream, metadata_style.style (), _("<unreadable>"));
4439   else
4440     {
4441       struct value_print_options opts;
4442       get_user_print_options (&opts);
4443       value_print (val, stream, &opts);
4444     }
4445 }
4446 
4447 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4448    debugging multiple threads.  */
4449 
4450 void
4451 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4452 {
4453   if (uiout->is_mi_like_p ())
4454     return;
4455 
4456   uiout->text ("\n");
4457 
4458   if (show_thread_that_caused_stop ())
4459     {
4460       const char *name;
4461       struct thread_info *thr = inferior_thread ();
4462 
4463       uiout->text ("Thread ");
4464       uiout->field_string ("thread-id", print_thread_id (thr));
4465 
4466       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4467       if (name != NULL)
4468 	{
4469 	  uiout->text (" \"");
4470 	  uiout->field_string ("name", name);
4471 	  uiout->text ("\"");
4472 	}
4473 
4474       uiout->text (" hit ");
4475     }
4476 }
4477 
4478 /* Generic routine for printing messages indicating why we
4479    stopped.  The behavior of this function depends on the value
4480    'print_it' in the bpstat structure.  Under some circumstances we
4481    may decide not to print anything here and delegate the task to
4482    normal_stop().  */
4483 
4484 static enum print_stop_action
4485 print_bp_stop_message (bpstat bs)
4486 {
4487   switch (bs->print_it)
4488     {
4489     case print_it_noop:
4490       /* Nothing should be printed for this bpstat entry.  */
4491       return PRINT_UNKNOWN;
4492       break;
4493 
4494     case print_it_done:
4495       /* We still want to print the frame, but we already printed the
4496          relevant messages.  */
4497       return PRINT_SRC_AND_LOC;
4498       break;
4499 
4500     case print_it_normal:
4501       {
4502 	struct breakpoint *b = bs->breakpoint_at;
4503 
4504 	/* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4505 	   which has since been deleted.  */
4506 	if (b == NULL)
4507 	  return PRINT_UNKNOWN;
4508 
4509 	/* Normal case.  Call the breakpoint's print_it method.  */
4510 	return b->ops->print_it (bs);
4511       }
4512       break;
4513 
4514     default:
4515       internal_error (__FILE__, __LINE__,
4516 		      _("print_bp_stop_message: unrecognized enum value"));
4517       break;
4518     }
4519 }
4520 
4521 /* A helper function that prints a shared library stopped event.  */
4522 
4523 static void
4524 print_solib_event (int is_catchpoint)
4525 {
4526   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4527   bool any_added = !current_program_space->added_solibs.empty ();
4528 
4529   if (!is_catchpoint)
4530     {
4531       if (any_added || any_deleted)
4532 	current_uiout->text (_("Stopped due to shared library event:\n"));
4533       else
4534 	current_uiout->text (_("Stopped due to shared library event (no "
4535 			       "libraries added or removed)\n"));
4536     }
4537 
4538   if (current_uiout->is_mi_like_p ())
4539     current_uiout->field_string ("reason",
4540 				 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4541 
4542   if (any_deleted)
4543     {
4544       current_uiout->text (_("  Inferior unloaded "));
4545       ui_out_emit_list list_emitter (current_uiout, "removed");
4546       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4547 	{
4548 	  const std::string &name = current_program_space->deleted_solibs[ix];
4549 
4550 	  if (ix > 0)
4551 	    current_uiout->text ("    ");
4552 	  current_uiout->field_string ("library", name);
4553 	  current_uiout->text ("\n");
4554 	}
4555     }
4556 
4557   if (any_added)
4558     {
4559       current_uiout->text (_("  Inferior loaded "));
4560       ui_out_emit_list list_emitter (current_uiout, "added");
4561       bool first = true;
4562       for (so_list *iter : current_program_space->added_solibs)
4563 	{
4564 	  if (!first)
4565 	    current_uiout->text ("    ");
4566 	  first = false;
4567 	  current_uiout->field_string ("library", iter->so_name);
4568 	  current_uiout->text ("\n");
4569 	}
4570     }
4571 }
4572 
4573 /* Print a message indicating what happened.  This is called from
4574    normal_stop().  The input to this routine is the head of the bpstat
4575    list - a list of the eventpoints that caused this stop.  KIND is
4576    the target_waitkind for the stopping event.  This
4577    routine calls the generic print routine for printing a message
4578    about reasons for stopping.  This will print (for example) the
4579    "Breakpoint n," part of the output.  The return value of this
4580    routine is one of:
4581 
4582    PRINT_UNKNOWN: Means we printed nothing.
4583    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4584    code to print the location.  An example is
4585    "Breakpoint 1, " which should be followed by
4586    the location.
4587    PRINT_SRC_ONLY: Means we printed something, but there is no need
4588    to also print the location part of the message.
4589    An example is the catch/throw messages, which
4590    don't require a location appended to the end.
4591    PRINT_NOTHING: We have done some printing and we don't need any
4592    further info to be printed.  */
4593 
4594 enum print_stop_action
4595 bpstat_print (bpstat bs, int kind)
4596 {
4597   enum print_stop_action val;
4598 
4599   /* Maybe another breakpoint in the chain caused us to stop.
4600      (Currently all watchpoints go on the bpstat whether hit or not.
4601      That probably could (should) be changed, provided care is taken
4602      with respect to bpstat_explains_signal).  */
4603   for (; bs; bs = bs->next)
4604     {
4605       val = print_bp_stop_message (bs);
4606       if (val == PRINT_SRC_ONLY
4607 	  || val == PRINT_SRC_AND_LOC
4608 	  || val == PRINT_NOTHING)
4609 	return val;
4610     }
4611 
4612   /* If we had hit a shared library event breakpoint,
4613      print_bp_stop_message would print out this message.  If we hit an
4614      OS-level shared library event, do the same thing.  */
4615   if (kind == TARGET_WAITKIND_LOADED)
4616     {
4617       print_solib_event (0);
4618       return PRINT_NOTHING;
4619     }
4620 
4621   /* We reached the end of the chain, or we got a null BS to start
4622      with and nothing was printed.  */
4623   return PRINT_UNKNOWN;
4624 }
4625 
4626 /* Evaluate the boolean expression EXP and return the result.  */
4627 
4628 static bool
4629 breakpoint_cond_eval (expression *exp)
4630 {
4631   struct value *mark = value_mark ();
4632   bool res = value_true (evaluate_expression (exp));
4633 
4634   value_free_to_mark (mark);
4635   return res;
4636 }
4637 
4638 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4639 
4640 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4641   : next (NULL),
4642     bp_location_at (bl),
4643     breakpoint_at (bl->owner),
4644     commands (NULL),
4645     print (0),
4646     stop (0),
4647     print_it (print_it_normal)
4648 {
4649   incref_bp_location (bl);
4650   **bs_link_pointer = this;
4651   *bs_link_pointer = &next;
4652 }
4653 
4654 bpstats::bpstats ()
4655   : next (NULL),
4656     bp_location_at (NULL),
4657     breakpoint_at (NULL),
4658     commands (NULL),
4659     print (0),
4660     stop (0),
4661     print_it (print_it_normal)
4662 {
4663 }
4664 
4665 /* The target has stopped with waitstatus WS.  Check if any hardware
4666    watchpoints have triggered, according to the target.  */
4667 
4668 int
4669 watchpoints_triggered (struct target_waitstatus *ws)
4670 {
4671   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4672   CORE_ADDR addr;
4673   struct breakpoint *b;
4674 
4675   if (!stopped_by_watchpoint)
4676     {
4677       /* We were not stopped by a watchpoint.  Mark all watchpoints
4678 	 as not triggered.  */
4679       ALL_BREAKPOINTS (b)
4680 	if (is_hardware_watchpoint (b))
4681 	  {
4682 	    struct watchpoint *w = (struct watchpoint *) b;
4683 
4684 	    w->watchpoint_triggered = watch_triggered_no;
4685 	  }
4686 
4687       return 0;
4688     }
4689 
4690   if (!target_stopped_data_address (current_top_target (), &addr))
4691     {
4692       /* We were stopped by a watchpoint, but we don't know where.
4693 	 Mark all watchpoints as unknown.  */
4694       ALL_BREAKPOINTS (b)
4695 	if (is_hardware_watchpoint (b))
4696 	  {
4697 	    struct watchpoint *w = (struct watchpoint *) b;
4698 
4699 	    w->watchpoint_triggered = watch_triggered_unknown;
4700 	  }
4701 
4702       return 1;
4703     }
4704 
4705   /* The target could report the data address.  Mark watchpoints
4706      affected by this data address as triggered, and all others as not
4707      triggered.  */
4708 
4709   ALL_BREAKPOINTS (b)
4710     if (is_hardware_watchpoint (b))
4711       {
4712 	struct watchpoint *w = (struct watchpoint *) b;
4713 	struct bp_location *loc;
4714 
4715 	w->watchpoint_triggered = watch_triggered_no;
4716 	for (loc = b->loc; loc; loc = loc->next)
4717 	  {
4718 	    if (is_masked_watchpoint (b))
4719 	      {
4720 		CORE_ADDR newaddr = addr & w->hw_wp_mask;
4721 		CORE_ADDR start = loc->address & w->hw_wp_mask;
4722 
4723 		if (newaddr == start)
4724 		  {
4725 		    w->watchpoint_triggered = watch_triggered_yes;
4726 		    break;
4727 		  }
4728 	      }
4729 	    /* Exact match not required.  Within range is sufficient.  */
4730 	    else if (target_watchpoint_addr_within_range (current_top_target (),
4731 							 addr, loc->address,
4732 							 loc->length))
4733 	      {
4734 		w->watchpoint_triggered = watch_triggered_yes;
4735 		break;
4736 	      }
4737 	  }
4738       }
4739 
4740   return 1;
4741 }
4742 
4743 /* Possible return values for watchpoint_check.  */
4744 enum wp_check_result
4745   {
4746     /* The watchpoint has been deleted.  */
4747     WP_DELETED = 1,
4748 
4749     /* The value has changed.  */
4750     WP_VALUE_CHANGED = 2,
4751 
4752     /* The value has not changed.  */
4753     WP_VALUE_NOT_CHANGED = 3,
4754 
4755     /* Ignore this watchpoint, no matter if the value changed or not.  */
4756     WP_IGNORE = 4,
4757   };
4758 
4759 #define BP_TEMPFLAG 1
4760 #define BP_HARDWAREFLAG 2
4761 
4762 /* Evaluate watchpoint condition expression and check if its value
4763    changed.  */
4764 
4765 static wp_check_result
4766 watchpoint_check (bpstat bs)
4767 {
4768   struct watchpoint *b;
4769   struct frame_info *fr;
4770   int within_current_scope;
4771 
4772   /* BS is built from an existing struct breakpoint.  */
4773   gdb_assert (bs->breakpoint_at != NULL);
4774   b = (struct watchpoint *) bs->breakpoint_at;
4775 
4776   /* If this is a local watchpoint, we only want to check if the
4777      watchpoint frame is in scope if the current thread is the thread
4778      that was used to create the watchpoint.  */
4779   if (!watchpoint_in_thread_scope (b))
4780     return WP_IGNORE;
4781 
4782   if (b->exp_valid_block == NULL)
4783     within_current_scope = 1;
4784   else
4785     {
4786       struct frame_info *frame = get_current_frame ();
4787       struct gdbarch *frame_arch = get_frame_arch (frame);
4788       CORE_ADDR frame_pc = get_frame_pc (frame);
4789 
4790       /* stack_frame_destroyed_p() returns a non-zero value if we're
4791 	 still in the function but the stack frame has already been
4792 	 invalidated.  Since we can't rely on the values of local
4793 	 variables after the stack has been destroyed, we are treating
4794 	 the watchpoint in that state as `not changed' without further
4795 	 checking.  Don't mark watchpoints as changed if the current
4796 	 frame is in an epilogue - even if they are in some other
4797 	 frame, our view of the stack is likely to be wrong and
4798 	 frame_find_by_id could error out.  */
4799       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4800 	return WP_IGNORE;
4801 
4802       fr = frame_find_by_id (b->watchpoint_frame);
4803       within_current_scope = (fr != NULL);
4804 
4805       /* If we've gotten confused in the unwinder, we might have
4806 	 returned a frame that can't describe this variable.  */
4807       if (within_current_scope)
4808 	{
4809 	  struct symbol *function;
4810 
4811 	  function = get_frame_function (fr);
4812 	  if (function == NULL
4813 	      || !contained_in (b->exp_valid_block,
4814 				SYMBOL_BLOCK_VALUE (function)))
4815 	    within_current_scope = 0;
4816 	}
4817 
4818       if (within_current_scope)
4819 	/* If we end up stopping, the current frame will get selected
4820 	   in normal_stop.  So this call to select_frame won't affect
4821 	   the user.  */
4822 	select_frame (fr);
4823     }
4824 
4825   if (within_current_scope)
4826     {
4827       /* We use value_{,free_to_}mark because it could be a *long*
4828          time before we return to the command level and call
4829          free_all_values.  We can't call free_all_values because we
4830          might be in the middle of evaluating a function call.  */
4831 
4832       int pc = 0;
4833       struct value *mark;
4834       struct value *new_val;
4835 
4836       if (is_masked_watchpoint (b))
4837 	/* Since we don't know the exact trigger address (from
4838 	   stopped_data_address), just tell the user we've triggered
4839 	   a mask watchpoint.  */
4840 	return WP_VALUE_CHANGED;
4841 
4842       mark = value_mark ();
4843       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4844 
4845       if (b->val_bitsize != 0)
4846 	new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4847 
4848       /* We use value_equal_contents instead of value_equal because
4849 	 the latter coerces an array to a pointer, thus comparing just
4850 	 the address of the array instead of its contents.  This is
4851 	 not what we want.  */
4852       if ((b->val != NULL) != (new_val != NULL)
4853 	  || (b->val != NULL && !value_equal_contents (b->val.get (),
4854 						       new_val)))
4855 	{
4856 	  bs->old_val = b->val;
4857 	  b->val = release_value (new_val);
4858 	  b->val_valid = true;
4859 	  if (new_val != NULL)
4860 	    value_free_to_mark (mark);
4861 	  return WP_VALUE_CHANGED;
4862 	}
4863       else
4864 	{
4865 	  /* Nothing changed.  */
4866 	  value_free_to_mark (mark);
4867 	  return WP_VALUE_NOT_CHANGED;
4868 	}
4869     }
4870   else
4871     {
4872       /* This seems like the only logical thing to do because
4873          if we temporarily ignored the watchpoint, then when
4874          we reenter the block in which it is valid it contains
4875          garbage (in the case of a function, it may have two
4876          garbage values, one before and one after the prologue).
4877          So we can't even detect the first assignment to it and
4878          watch after that (since the garbage may or may not equal
4879          the first value assigned).  */
4880       /* We print all the stop information in
4881 	 breakpoint_ops->print_it, but in this case, by the time we
4882 	 call breakpoint_ops->print_it this bp will be deleted
4883 	 already.  So we have no choice but print the information
4884 	 here.  */
4885 
4886       SWITCH_THRU_ALL_UIS ()
4887         {
4888 	  struct ui_out *uiout = current_uiout;
4889 
4890 	  if (uiout->is_mi_like_p ())
4891 	    uiout->field_string
4892 	      ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4893 	  uiout->message ("\nWatchpoint %pF deleted because the program has "
4894 			  "left the block in\n"
4895 			  "which its expression is valid.\n",
4896 			  signed_field ("wpnum", b->number));
4897 	}
4898 
4899       /* Make sure the watchpoint's commands aren't executed.  */
4900       b->commands = NULL;
4901       watchpoint_del_at_next_stop (b);
4902 
4903       return WP_DELETED;
4904     }
4905 }
4906 
4907 /* Return true if it looks like target has stopped due to hitting
4908    breakpoint location BL.  This function does not check if we should
4909    stop, only if BL explains the stop.  */
4910 
4911 static int
4912 bpstat_check_location (const struct bp_location *bl,
4913 		       const address_space *aspace, CORE_ADDR bp_addr,
4914 		       const struct target_waitstatus *ws)
4915 {
4916   struct breakpoint *b = bl->owner;
4917 
4918   /* BL is from an existing breakpoint.  */
4919   gdb_assert (b != NULL);
4920 
4921   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4922 }
4923 
4924 /* Determine if the watched values have actually changed, and we
4925    should stop.  If not, set BS->stop to 0.  */
4926 
4927 static void
4928 bpstat_check_watchpoint (bpstat bs)
4929 {
4930   const struct bp_location *bl;
4931   struct watchpoint *b;
4932 
4933   /* BS is built for existing struct breakpoint.  */
4934   bl = bs->bp_location_at;
4935   gdb_assert (bl != NULL);
4936   b = (struct watchpoint *) bs->breakpoint_at;
4937   gdb_assert (b != NULL);
4938 
4939     {
4940       int must_check_value = 0;
4941 
4942       if (b->type == bp_watchpoint)
4943 	/* For a software watchpoint, we must always check the
4944 	   watched value.  */
4945 	must_check_value = 1;
4946       else if (b->watchpoint_triggered == watch_triggered_yes)
4947 	/* We have a hardware watchpoint (read, write, or access)
4948 	   and the target earlier reported an address watched by
4949 	   this watchpoint.  */
4950 	must_check_value = 1;
4951       else if (b->watchpoint_triggered == watch_triggered_unknown
4952 	       && b->type == bp_hardware_watchpoint)
4953 	/* We were stopped by a hardware watchpoint, but the target could
4954 	   not report the data address.  We must check the watchpoint's
4955 	   value.  Access and read watchpoints are out of luck; without
4956 	   a data address, we can't figure it out.  */
4957 	must_check_value = 1;
4958 
4959       if (must_check_value)
4960 	{
4961 	  wp_check_result e;
4962 
4963 	  try
4964 	    {
4965 	      e = watchpoint_check (bs);
4966 	    }
4967 	  catch (const gdb_exception &ex)
4968 	    {
4969 	      exception_fprintf (gdb_stderr, ex,
4970 				 "Error evaluating expression "
4971 				 "for watchpoint %d\n",
4972 				 b->number);
4973 
4974 	      SWITCH_THRU_ALL_UIS ()
4975 		{
4976 		  printf_filtered (_("Watchpoint %d deleted.\n"),
4977 				   b->number);
4978 		}
4979 	      watchpoint_del_at_next_stop (b);
4980 	      e = WP_DELETED;
4981 	    }
4982 
4983 	  switch (e)
4984 	    {
4985 	    case WP_DELETED:
4986 	      /* We've already printed what needs to be printed.  */
4987 	      bs->print_it = print_it_done;
4988 	      /* Stop.  */
4989 	      break;
4990 	    case WP_IGNORE:
4991 	      bs->print_it = print_it_noop;
4992 	      bs->stop = 0;
4993 	      break;
4994 	    case WP_VALUE_CHANGED:
4995 	      if (b->type == bp_read_watchpoint)
4996 		{
4997 		  /* There are two cases to consider here:
4998 
4999 		     1. We're watching the triggered memory for reads.
5000 		     In that case, trust the target, and always report
5001 		     the watchpoint hit to the user.  Even though
5002 		     reads don't cause value changes, the value may
5003 		     have changed since the last time it was read, and
5004 		     since we're not trapping writes, we will not see
5005 		     those, and as such we should ignore our notion of
5006 		     old value.
5007 
5008 		     2. We're watching the triggered memory for both
5009 		     reads and writes.  There are two ways this may
5010 		     happen:
5011 
5012 		     2.1. This is a target that can't break on data
5013 		     reads only, but can break on accesses (reads or
5014 		     writes), such as e.g., x86.  We detect this case
5015 		     at the time we try to insert read watchpoints.
5016 
5017 		     2.2. Otherwise, the target supports read
5018 		     watchpoints, but, the user set an access or write
5019 		     watchpoint watching the same memory as this read
5020 		     watchpoint.
5021 
5022 		     If we're watching memory writes as well as reads,
5023 		     ignore watchpoint hits when we find that the
5024 		     value hasn't changed, as reads don't cause
5025 		     changes.  This still gives false positives when
5026 		     the program writes the same value to memory as
5027 		     what there was already in memory (we will confuse
5028 		     it for a read), but it's much better than
5029 		     nothing.  */
5030 
5031 		  int other_write_watchpoint = 0;
5032 
5033 		  if (bl->watchpoint_type == hw_read)
5034 		    {
5035 		      struct breakpoint *other_b;
5036 
5037 		      ALL_BREAKPOINTS (other_b)
5038 			if (other_b->type == bp_hardware_watchpoint
5039 			    || other_b->type == bp_access_watchpoint)
5040 			  {
5041 			    struct watchpoint *other_w =
5042 			      (struct watchpoint *) other_b;
5043 
5044 			    if (other_w->watchpoint_triggered
5045 				== watch_triggered_yes)
5046 			      {
5047 				other_write_watchpoint = 1;
5048 				break;
5049 			      }
5050 			  }
5051 		    }
5052 
5053 		  if (other_write_watchpoint
5054 		      || bl->watchpoint_type == hw_access)
5055 		    {
5056 		      /* We're watching the same memory for writes,
5057 			 and the value changed since the last time we
5058 			 updated it, so this trap must be for a write.
5059 			 Ignore it.  */
5060 		      bs->print_it = print_it_noop;
5061 		      bs->stop = 0;
5062 		    }
5063 		}
5064 	      break;
5065 	    case WP_VALUE_NOT_CHANGED:
5066 	      if (b->type == bp_hardware_watchpoint
5067 		  || b->type == bp_watchpoint)
5068 		{
5069 		  /* Don't stop: write watchpoints shouldn't fire if
5070 		     the value hasn't changed.  */
5071 		  bs->print_it = print_it_noop;
5072 		  bs->stop = 0;
5073 		}
5074 	      /* Stop.  */
5075 	      break;
5076 	    default:
5077 	      /* Can't happen.  */
5078 	      break;
5079 	    }
5080 	}
5081       else	/* must_check_value == 0 */
5082 	{
5083 	  /* This is a case where some watchpoint(s) triggered, but
5084 	     not at the address of this watchpoint, or else no
5085 	     watchpoint triggered after all.  So don't print
5086 	     anything for this watchpoint.  */
5087 	  bs->print_it = print_it_noop;
5088 	  bs->stop = 0;
5089 	}
5090     }
5091 }
5092 
5093 /* For breakpoints that are currently marked as telling gdb to stop,
5094    check conditions (condition proper, frame, thread and ignore count)
5095    of breakpoint referred to by BS.  If we should not stop for this
5096    breakpoint, set BS->stop to 0.  */
5097 
5098 static void
5099 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5100 {
5101   const struct bp_location *bl;
5102   struct breakpoint *b;
5103   /* Assume stop.  */
5104   bool condition_result = true;
5105   struct expression *cond;
5106 
5107   gdb_assert (bs->stop);
5108 
5109   /* BS is built for existing struct breakpoint.  */
5110   bl = bs->bp_location_at;
5111   gdb_assert (bl != NULL);
5112   b = bs->breakpoint_at;
5113   gdb_assert (b != NULL);
5114 
5115   /* Even if the target evaluated the condition on its end and notified GDB, we
5116      need to do so again since GDB does not know if we stopped due to a
5117      breakpoint or a single step breakpoint.  */
5118 
5119   if (frame_id_p (b->frame_id)
5120       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5121     {
5122       bs->stop = 0;
5123       return;
5124     }
5125 
5126   /* If this is a thread/task-specific breakpoint, don't waste cpu
5127      evaluating the condition if this isn't the specified
5128      thread/task.  */
5129   if ((b->thread != -1 && b->thread != thread->global_num)
5130       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5131     {
5132       bs->stop = 0;
5133       return;
5134     }
5135 
5136   /* Evaluate extension language breakpoints that have a "stop" method
5137      implemented.  */
5138   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5139 
5140   if (is_watchpoint (b))
5141     {
5142       struct watchpoint *w = (struct watchpoint *) b;
5143 
5144       cond = w->cond_exp.get ();
5145     }
5146   else
5147     cond = bl->cond.get ();
5148 
5149   if (cond && b->disposition != disp_del_at_next_stop)
5150     {
5151       int within_current_scope = 1;
5152       struct watchpoint * w;
5153 
5154       /* We use value_mark and value_free_to_mark because it could
5155 	 be a long time before we return to the command level and
5156 	 call free_all_values.  We can't call free_all_values
5157 	 because we might be in the middle of evaluating a
5158 	 function call.  */
5159       struct value *mark = value_mark ();
5160 
5161       if (is_watchpoint (b))
5162 	w = (struct watchpoint *) b;
5163       else
5164 	w = NULL;
5165 
5166       /* Need to select the frame, with all that implies so that
5167 	 the conditions will have the right context.  Because we
5168 	 use the frame, we will not see an inlined function's
5169 	 variables when we arrive at a breakpoint at the start
5170 	 of the inlined function; the current frame will be the
5171 	 call site.  */
5172       if (w == NULL || w->cond_exp_valid_block == NULL)
5173 	select_frame (get_current_frame ());
5174       else
5175 	{
5176 	  struct frame_info *frame;
5177 
5178 	  /* For local watchpoint expressions, which particular
5179 	     instance of a local is being watched matters, so we
5180 	     keep track of the frame to evaluate the expression
5181 	     in.  To evaluate the condition however, it doesn't
5182 	     really matter which instantiation of the function
5183 	     where the condition makes sense triggers the
5184 	     watchpoint.  This allows an expression like "watch
5185 	     global if q > 10" set in `func', catch writes to
5186 	     global on all threads that call `func', or catch
5187 	     writes on all recursive calls of `func' by a single
5188 	     thread.  We simply always evaluate the condition in
5189 	     the innermost frame that's executing where it makes
5190 	     sense to evaluate the condition.  It seems
5191 	     intuitive.  */
5192 	  frame = block_innermost_frame (w->cond_exp_valid_block);
5193 	  if (frame != NULL)
5194 	    select_frame (frame);
5195 	  else
5196 	    within_current_scope = 0;
5197 	}
5198       if (within_current_scope)
5199 	{
5200 	  try
5201 	    {
5202 	      condition_result = breakpoint_cond_eval (cond);
5203 	    }
5204 	  catch (const gdb_exception &ex)
5205 	    {
5206 	      exception_fprintf (gdb_stderr, ex,
5207 				 "Error in testing breakpoint condition:\n");
5208 	    }
5209 	}
5210       else
5211 	{
5212 	  warning (_("Watchpoint condition cannot be tested "
5213 		     "in the current scope"));
5214 	  /* If we failed to set the right context for this
5215 	     watchpoint, unconditionally report it.  */
5216 	}
5217       /* FIXME-someday, should give breakpoint #.  */
5218       value_free_to_mark (mark);
5219     }
5220 
5221   if (cond && !condition_result)
5222     {
5223       bs->stop = 0;
5224     }
5225   else if (b->ignore_count > 0)
5226     {
5227       b->ignore_count--;
5228       bs->stop = 0;
5229       /* Increase the hit count even though we don't stop.  */
5230       ++(b->hit_count);
5231       gdb::observers::breakpoint_modified.notify (b);
5232     }
5233 }
5234 
5235 /* Returns true if we need to track moribund locations of LOC's type
5236    on the current target.  */
5237 
5238 static int
5239 need_moribund_for_location_type (struct bp_location *loc)
5240 {
5241   return ((loc->loc_type == bp_loc_software_breakpoint
5242 	   && !target_supports_stopped_by_sw_breakpoint ())
5243 	  || (loc->loc_type == bp_loc_hardware_breakpoint
5244 	      && !target_supports_stopped_by_hw_breakpoint ()));
5245 }
5246 
5247 /* See breakpoint.h.  */
5248 
5249 bpstat
5250 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5251 		    const struct target_waitstatus *ws)
5252 {
5253   struct breakpoint *b;
5254   bpstat bs_head = NULL, *bs_link = &bs_head;
5255 
5256   ALL_BREAKPOINTS (b)
5257     {
5258       if (!breakpoint_enabled (b))
5259 	continue;
5260 
5261       for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5262 	{
5263 	  /* For hardware watchpoints, we look only at the first
5264 	     location.  The watchpoint_check function will work on the
5265 	     entire expression, not the individual locations.  For
5266 	     read watchpoints, the watchpoints_triggered function has
5267 	     checked all locations already.  */
5268 	  if (b->type == bp_hardware_watchpoint && bl != b->loc)
5269 	    break;
5270 
5271 	  if (!bl->enabled || bl->shlib_disabled)
5272 	    continue;
5273 
5274 	  if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5275 	    continue;
5276 
5277 	  /* Come here if it's a watchpoint, or if the break address
5278 	     matches.  */
5279 
5280 	  bpstat bs = new bpstats (bl, &bs_link);	/* Alloc a bpstat to
5281 							   explain stop.  */
5282 
5283 	  /* Assume we stop.  Should we find a watchpoint that is not
5284 	     actually triggered, or if the condition of the breakpoint
5285 	     evaluates as false, we'll reset 'stop' to 0.  */
5286 	  bs->stop = 1;
5287 	  bs->print = 1;
5288 
5289 	  /* If this is a scope breakpoint, mark the associated
5290 	     watchpoint as triggered so that we will handle the
5291 	     out-of-scope event.  We'll get to the watchpoint next
5292 	     iteration.  */
5293 	  if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5294 	    {
5295 	      struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5296 
5297 	      w->watchpoint_triggered = watch_triggered_yes;
5298 	    }
5299 	}
5300     }
5301 
5302   /* Check if a moribund breakpoint explains the stop.  */
5303   if (!target_supports_stopped_by_sw_breakpoint ()
5304       || !target_supports_stopped_by_hw_breakpoint ())
5305     {
5306       for (bp_location *loc : moribund_locations)
5307 	{
5308 	  if (breakpoint_location_address_match (loc, aspace, bp_addr)
5309 	      && need_moribund_for_location_type (loc))
5310 	    {
5311 	      bpstat bs = new bpstats (loc, &bs_link);
5312 	      /* For hits of moribund locations, we should just proceed.  */
5313 	      bs->stop = 0;
5314 	      bs->print = 0;
5315 	      bs->print_it = print_it_noop;
5316 	    }
5317 	}
5318     }
5319 
5320   return bs_head;
5321 }
5322 
5323 /* See breakpoint.h.  */
5324 
5325 bpstat
5326 bpstat_stop_status (const address_space *aspace,
5327 		    CORE_ADDR bp_addr, thread_info *thread,
5328 		    const struct target_waitstatus *ws,
5329 		    bpstat stop_chain)
5330 {
5331   struct breakpoint *b = NULL;
5332   /* First item of allocated bpstat's.  */
5333   bpstat bs_head = stop_chain;
5334   bpstat bs;
5335   int need_remove_insert;
5336   int removed_any;
5337 
5338   /* First, build the bpstat chain with locations that explain a
5339      target stop, while being careful to not set the target running,
5340      as that may invalidate locations (in particular watchpoint
5341      locations are recreated).  Resuming will happen here with
5342      breakpoint conditions or watchpoint expressions that include
5343      inferior function calls.  */
5344   if (bs_head == NULL)
5345     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5346 
5347   /* A bit of special processing for shlib breakpoints.  We need to
5348      process solib loading here, so that the lists of loaded and
5349      unloaded libraries are correct before we handle "catch load" and
5350      "catch unload".  */
5351   for (bs = bs_head; bs != NULL; bs = bs->next)
5352     {
5353       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5354 	{
5355 	  handle_solib_event ();
5356 	  break;
5357 	}
5358     }
5359 
5360   /* Now go through the locations that caused the target to stop, and
5361      check whether we're interested in reporting this stop to higher
5362      layers, or whether we should resume the target transparently.  */
5363 
5364   removed_any = 0;
5365 
5366   for (bs = bs_head; bs != NULL; bs = bs->next)
5367     {
5368       if (!bs->stop)
5369 	continue;
5370 
5371       b = bs->breakpoint_at;
5372       b->ops->check_status (bs);
5373       if (bs->stop)
5374 	{
5375 	  bpstat_check_breakpoint_conditions (bs, thread);
5376 
5377 	  if (bs->stop)
5378 	    {
5379 	      ++(b->hit_count);
5380 	      gdb::observers::breakpoint_modified.notify (b);
5381 
5382 	      /* We will stop here.  */
5383 	      if (b->disposition == disp_disable)
5384 		{
5385 		  --(b->enable_count);
5386 		  if (b->enable_count <= 0)
5387 		    b->enable_state = bp_disabled;
5388 		  removed_any = 1;
5389 		}
5390 	      if (b->silent)
5391 		bs->print = 0;
5392 	      bs->commands = b->commands;
5393 	      if (command_line_is_silent (bs->commands
5394 					  ? bs->commands.get () : NULL))
5395 		bs->print = 0;
5396 
5397 	      b->ops->after_condition_true (bs);
5398 	    }
5399 
5400 	}
5401 
5402       /* Print nothing for this entry if we don't stop or don't
5403 	 print.  */
5404       if (!bs->stop || !bs->print)
5405 	bs->print_it = print_it_noop;
5406     }
5407 
5408   /* If we aren't stopping, the value of some hardware watchpoint may
5409      not have changed, but the intermediate memory locations we are
5410      watching may have.  Don't bother if we're stopping; this will get
5411      done later.  */
5412   need_remove_insert = 0;
5413   if (! bpstat_causes_stop (bs_head))
5414     for (bs = bs_head; bs != NULL; bs = bs->next)
5415       if (!bs->stop
5416 	  && bs->breakpoint_at
5417 	  && is_hardware_watchpoint (bs->breakpoint_at))
5418 	{
5419 	  struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5420 
5421 	  update_watchpoint (w, 0 /* don't reparse.  */);
5422 	  need_remove_insert = 1;
5423 	}
5424 
5425   if (need_remove_insert)
5426     update_global_location_list (UGLL_MAY_INSERT);
5427   else if (removed_any)
5428     update_global_location_list (UGLL_DONT_INSERT);
5429 
5430   return bs_head;
5431 }
5432 
5433 static void
5434 handle_jit_event (void)
5435 {
5436   struct frame_info *frame;
5437   struct gdbarch *gdbarch;
5438 
5439   infrun_debug_printf ("handling bp_jit_event");
5440 
5441   /* Switch terminal for any messages produced by
5442      breakpoint_re_set.  */
5443   target_terminal::ours_for_output ();
5444 
5445   frame = get_current_frame ();
5446   gdbarch = get_frame_arch (frame);
5447   objfile *jiter = symbol_objfile (get_frame_function (frame));
5448 
5449   jit_event_handler (gdbarch, jiter);
5450 
5451   target_terminal::inferior ();
5452 }
5453 
5454 /* Prepare WHAT final decision for infrun.  */
5455 
5456 /* Decide what infrun needs to do with this bpstat.  */
5457 
5458 struct bpstat_what
5459 bpstat_what (bpstat bs_head)
5460 {
5461   struct bpstat_what retval;
5462   bpstat bs;
5463 
5464   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5465   retval.call_dummy = STOP_NONE;
5466   retval.is_longjmp = false;
5467 
5468   for (bs = bs_head; bs != NULL; bs = bs->next)
5469     {
5470       /* Extract this BS's action.  After processing each BS, we check
5471 	 if its action overrides all we've seem so far.  */
5472       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5473       enum bptype bptype;
5474 
5475       if (bs->breakpoint_at == NULL)
5476 	{
5477 	  /* I suspect this can happen if it was a momentary
5478 	     breakpoint which has since been deleted.  */
5479 	  bptype = bp_none;
5480 	}
5481       else
5482 	bptype = bs->breakpoint_at->type;
5483 
5484       switch (bptype)
5485 	{
5486 	case bp_none:
5487 	  break;
5488 	case bp_breakpoint:
5489 	case bp_hardware_breakpoint:
5490 	case bp_single_step:
5491 	case bp_until:
5492 	case bp_finish:
5493 	case bp_shlib_event:
5494 	  if (bs->stop)
5495 	    {
5496 	      if (bs->print)
5497 		this_action = BPSTAT_WHAT_STOP_NOISY;
5498 	      else
5499 		this_action = BPSTAT_WHAT_STOP_SILENT;
5500 	    }
5501 	  else
5502 	    this_action = BPSTAT_WHAT_SINGLE;
5503 	  break;
5504 	case bp_watchpoint:
5505 	case bp_hardware_watchpoint:
5506 	case bp_read_watchpoint:
5507 	case bp_access_watchpoint:
5508 	  if (bs->stop)
5509 	    {
5510 	      if (bs->print)
5511 		this_action = BPSTAT_WHAT_STOP_NOISY;
5512 	      else
5513 		this_action = BPSTAT_WHAT_STOP_SILENT;
5514 	    }
5515 	  else
5516 	    {
5517 	      /* There was a watchpoint, but we're not stopping.
5518 		 This requires no further action.  */
5519 	    }
5520 	  break;
5521 	case bp_longjmp:
5522 	case bp_longjmp_call_dummy:
5523 	case bp_exception:
5524 	  if (bs->stop)
5525 	    {
5526 	      this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5527 	      retval.is_longjmp = bptype != bp_exception;
5528 	    }
5529 	  else
5530 	    this_action = BPSTAT_WHAT_SINGLE;
5531 	  break;
5532 	case bp_longjmp_resume:
5533 	case bp_exception_resume:
5534 	  if (bs->stop)
5535 	    {
5536 	      this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5537 	      retval.is_longjmp = bptype == bp_longjmp_resume;
5538 	    }
5539 	  else
5540 	    this_action = BPSTAT_WHAT_SINGLE;
5541 	  break;
5542 	case bp_step_resume:
5543 	  if (bs->stop)
5544 	    this_action = BPSTAT_WHAT_STEP_RESUME;
5545 	  else
5546 	    {
5547 	      /* It is for the wrong frame.  */
5548 	      this_action = BPSTAT_WHAT_SINGLE;
5549 	    }
5550 	  break;
5551 	case bp_hp_step_resume:
5552 	  if (bs->stop)
5553 	    this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5554 	  else
5555 	    {
5556 	      /* It is for the wrong frame.  */
5557 	      this_action = BPSTAT_WHAT_SINGLE;
5558 	    }
5559 	  break;
5560 	case bp_watchpoint_scope:
5561 	case bp_thread_event:
5562 	case bp_overlay_event:
5563 	case bp_longjmp_master:
5564 	case bp_std_terminate_master:
5565 	case bp_exception_master:
5566 	  this_action = BPSTAT_WHAT_SINGLE;
5567 	  break;
5568 	case bp_catchpoint:
5569 	  if (bs->stop)
5570 	    {
5571 	      if (bs->print)
5572 		this_action = BPSTAT_WHAT_STOP_NOISY;
5573 	      else
5574 		this_action = BPSTAT_WHAT_STOP_SILENT;
5575 	    }
5576 	  else
5577 	    {
5578 	      /* Some catchpoints are implemented with breakpoints.
5579 		 For those, we need to step over the breakpoint.  */
5580 	      if (bs->bp_location_at->loc_type != bp_loc_other)
5581 		this_action = BPSTAT_WHAT_SINGLE;
5582 	    }
5583 	  break;
5584 	case bp_jit_event:
5585 	  this_action = BPSTAT_WHAT_SINGLE;
5586 	  break;
5587 	case bp_call_dummy:
5588 	  /* Make sure the action is stop (silent or noisy),
5589 	     so infrun.c pops the dummy frame.  */
5590 	  retval.call_dummy = STOP_STACK_DUMMY;
5591 	  this_action = BPSTAT_WHAT_STOP_SILENT;
5592 	  break;
5593 	case bp_std_terminate:
5594 	  /* Make sure the action is stop (silent or noisy),
5595 	     so infrun.c pops the dummy frame.  */
5596 	  retval.call_dummy = STOP_STD_TERMINATE;
5597 	  this_action = BPSTAT_WHAT_STOP_SILENT;
5598 	  break;
5599 	case bp_tracepoint:
5600 	case bp_fast_tracepoint:
5601 	case bp_static_tracepoint:
5602 	  /* Tracepoint hits should not be reported back to GDB, and
5603 	     if one got through somehow, it should have been filtered
5604 	     out already.  */
5605 	  internal_error (__FILE__, __LINE__,
5606 			  _("bpstat_what: tracepoint encountered"));
5607 	  break;
5608 	case bp_gnu_ifunc_resolver:
5609 	  /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5610 	  this_action = BPSTAT_WHAT_SINGLE;
5611 	  break;
5612 	case bp_gnu_ifunc_resolver_return:
5613 	  /* The breakpoint will be removed, execution will restart from the
5614 	     PC of the former breakpoint.  */
5615 	  this_action = BPSTAT_WHAT_KEEP_CHECKING;
5616 	  break;
5617 
5618 	case bp_dprintf:
5619 	  if (bs->stop)
5620 	    this_action = BPSTAT_WHAT_STOP_SILENT;
5621 	  else
5622 	    this_action = BPSTAT_WHAT_SINGLE;
5623 	  break;
5624 
5625 	default:
5626 	  internal_error (__FILE__, __LINE__,
5627 			  _("bpstat_what: unhandled bptype %d"), (int) bptype);
5628 	}
5629 
5630       retval.main_action = std::max (retval.main_action, this_action);
5631     }
5632 
5633   return retval;
5634 }
5635 
5636 void
5637 bpstat_run_callbacks (bpstat bs_head)
5638 {
5639   bpstat bs;
5640 
5641   for (bs = bs_head; bs != NULL; bs = bs->next)
5642     {
5643       struct breakpoint *b = bs->breakpoint_at;
5644 
5645       if (b == NULL)
5646 	continue;
5647       switch (b->type)
5648 	{
5649 	case bp_jit_event:
5650 	  handle_jit_event ();
5651 	  break;
5652 	case bp_gnu_ifunc_resolver:
5653 	  gnu_ifunc_resolver_stop (b);
5654 	  break;
5655 	case bp_gnu_ifunc_resolver_return:
5656 	  gnu_ifunc_resolver_return_stop (b);
5657 	  break;
5658 	}
5659     }
5660 }
5661 
5662 /* See breakpoint.h.  */
5663 
5664 bool
5665 bpstat_should_step ()
5666 {
5667   struct breakpoint *b;
5668 
5669   ALL_BREAKPOINTS (b)
5670     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5671       return true;
5672   return false;
5673 }
5674 
5675 /* See breakpoint.h.  */
5676 
5677 bool
5678 bpstat_causes_stop (bpstat bs)
5679 {
5680   for (; bs != NULL; bs = bs->next)
5681     if (bs->stop)
5682       return true;
5683 
5684   return false;
5685 }
5686 
5687 
5688 
5689 /* Compute a string of spaces suitable to indent the next line
5690    so it starts at the position corresponding to the table column
5691    named COL_NAME in the currently active table of UIOUT.  */
5692 
5693 static char *
5694 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5695 {
5696   static char wrap_indent[80];
5697   int i, total_width, width, align;
5698   const char *text;
5699 
5700   total_width = 0;
5701   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5702     {
5703       if (strcmp (text, col_name) == 0)
5704 	{
5705 	  gdb_assert (total_width < sizeof wrap_indent);
5706 	  memset (wrap_indent, ' ', total_width);
5707 	  wrap_indent[total_width] = 0;
5708 
5709 	  return wrap_indent;
5710 	}
5711 
5712       total_width += width + 1;
5713     }
5714 
5715   return NULL;
5716 }
5717 
5718 /* Determine if the locations of this breakpoint will have their conditions
5719    evaluated by the target, host or a mix of both.  Returns the following:
5720 
5721     "host": Host evals condition.
5722     "host or target": Host or Target evals condition.
5723     "target": Target evals condition.
5724 */
5725 
5726 static const char *
5727 bp_condition_evaluator (struct breakpoint *b)
5728 {
5729   struct bp_location *bl;
5730   char host_evals = 0;
5731   char target_evals = 0;
5732 
5733   if (!b)
5734     return NULL;
5735 
5736   if (!is_breakpoint (b))
5737     return NULL;
5738 
5739   if (gdb_evaluates_breakpoint_condition_p ()
5740       || !target_supports_evaluation_of_breakpoint_conditions ())
5741     return condition_evaluation_host;
5742 
5743   for (bl = b->loc; bl; bl = bl->next)
5744     {
5745       if (bl->cond_bytecode)
5746 	target_evals++;
5747       else
5748 	host_evals++;
5749     }
5750 
5751   if (host_evals && target_evals)
5752     return condition_evaluation_both;
5753   else if (target_evals)
5754     return condition_evaluation_target;
5755   else
5756     return condition_evaluation_host;
5757 }
5758 
5759 /* Determine the breakpoint location's condition evaluator.  This is
5760    similar to bp_condition_evaluator, but for locations.  */
5761 
5762 static const char *
5763 bp_location_condition_evaluator (struct bp_location *bl)
5764 {
5765   if (bl && !is_breakpoint (bl->owner))
5766     return NULL;
5767 
5768   if (gdb_evaluates_breakpoint_condition_p ()
5769       || !target_supports_evaluation_of_breakpoint_conditions ())
5770     return condition_evaluation_host;
5771 
5772   if (bl && bl->cond_bytecode)
5773     return condition_evaluation_target;
5774   else
5775     return condition_evaluation_host;
5776 }
5777 
5778 /* Print the LOC location out of the list of B->LOC locations.  */
5779 
5780 static void
5781 print_breakpoint_location (struct breakpoint *b,
5782 			   struct bp_location *loc)
5783 {
5784   struct ui_out *uiout = current_uiout;
5785 
5786   scoped_restore_current_program_space restore_pspace;
5787 
5788   if (loc != NULL && loc->shlib_disabled)
5789     loc = NULL;
5790 
5791   if (loc != NULL)
5792     set_current_program_space (loc->pspace);
5793 
5794   if (b->display_canonical)
5795     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5796   else if (loc && loc->symtab)
5797     {
5798       const struct symbol *sym = loc->symbol;
5799 
5800       if (sym)
5801 	{
5802 	  uiout->text ("in ");
5803 	  uiout->field_string ("func", sym->print_name (),
5804 			       function_name_style.style ());
5805 	  uiout->text (" ");
5806 	  uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5807 	  uiout->text ("at ");
5808 	}
5809       uiout->field_string ("file",
5810 			   symtab_to_filename_for_display (loc->symtab),
5811 			   file_name_style.style ());
5812       uiout->text (":");
5813 
5814       if (uiout->is_mi_like_p ())
5815 	uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5816 
5817       uiout->field_signed ("line", loc->line_number);
5818     }
5819   else if (loc)
5820     {
5821       string_file stb;
5822 
5823       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5824 			      demangle, "");
5825       uiout->field_stream ("at", stb);
5826     }
5827   else
5828     {
5829       uiout->field_string ("pending",
5830 			   event_location_to_string (b->location.get ()));
5831       /* If extra_string is available, it could be holding a condition
5832 	 or dprintf arguments.  In either case, make sure it is printed,
5833 	 too, but only for non-MI streams.  */
5834       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5835 	{
5836 	  if (b->type == bp_dprintf)
5837 	    uiout->text (",");
5838 	  else
5839 	    uiout->text (" ");
5840 	  uiout->text (b->extra_string);
5841 	}
5842     }
5843 
5844   if (loc && is_breakpoint (b)
5845       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5846       && bp_condition_evaluator (b) == condition_evaluation_both)
5847     {
5848       uiout->text (" (");
5849       uiout->field_string ("evaluated-by",
5850 			   bp_location_condition_evaluator (loc));
5851       uiout->text (")");
5852     }
5853 }
5854 
5855 static const char *
5856 bptype_string (enum bptype type)
5857 {
5858   struct ep_type_description
5859     {
5860       enum bptype type;
5861       const char *description;
5862     };
5863   static struct ep_type_description bptypes[] =
5864   {
5865     {bp_none, "?deleted?"},
5866     {bp_breakpoint, "breakpoint"},
5867     {bp_hardware_breakpoint, "hw breakpoint"},
5868     {bp_single_step, "sw single-step"},
5869     {bp_until, "until"},
5870     {bp_finish, "finish"},
5871     {bp_watchpoint, "watchpoint"},
5872     {bp_hardware_watchpoint, "hw watchpoint"},
5873     {bp_read_watchpoint, "read watchpoint"},
5874     {bp_access_watchpoint, "acc watchpoint"},
5875     {bp_longjmp, "longjmp"},
5876     {bp_longjmp_resume, "longjmp resume"},
5877     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5878     {bp_exception, "exception"},
5879     {bp_exception_resume, "exception resume"},
5880     {bp_step_resume, "step resume"},
5881     {bp_hp_step_resume, "high-priority step resume"},
5882     {bp_watchpoint_scope, "watchpoint scope"},
5883     {bp_call_dummy, "call dummy"},
5884     {bp_std_terminate, "std::terminate"},
5885     {bp_shlib_event, "shlib events"},
5886     {bp_thread_event, "thread events"},
5887     {bp_overlay_event, "overlay events"},
5888     {bp_longjmp_master, "longjmp master"},
5889     {bp_std_terminate_master, "std::terminate master"},
5890     {bp_exception_master, "exception master"},
5891     {bp_catchpoint, "catchpoint"},
5892     {bp_tracepoint, "tracepoint"},
5893     {bp_fast_tracepoint, "fast tracepoint"},
5894     {bp_static_tracepoint, "static tracepoint"},
5895     {bp_dprintf, "dprintf"},
5896     {bp_jit_event, "jit events"},
5897     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5898     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5899   };
5900 
5901   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5902       || ((int) type != bptypes[(int) type].type))
5903     internal_error (__FILE__, __LINE__,
5904 		    _("bptypes table does not describe type #%d."),
5905 		    (int) type);
5906 
5907   return bptypes[(int) type].description;
5908 }
5909 
5910 /* For MI, output a field named 'thread-groups' with a list as the value.
5911    For CLI, prefix the list with the string 'inf'. */
5912 
5913 static void
5914 output_thread_groups (struct ui_out *uiout,
5915 		      const char *field_name,
5916 		      const std::vector<int> &inf_nums,
5917 		      int mi_only)
5918 {
5919   int is_mi = uiout->is_mi_like_p ();
5920 
5921   /* For backward compatibility, don't display inferiors in CLI unless
5922      there are several.  Always display them for MI. */
5923   if (!is_mi && mi_only)
5924     return;
5925 
5926   ui_out_emit_list list_emitter (uiout, field_name);
5927 
5928   for (size_t i = 0; i < inf_nums.size (); i++)
5929     {
5930       if (is_mi)
5931 	{
5932 	  char mi_group[10];
5933 
5934 	  xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5935 	  uiout->field_string (NULL, mi_group);
5936 	}
5937       else
5938 	{
5939 	  if (i == 0)
5940 	    uiout->text (" inf ");
5941 	  else
5942 	    uiout->text (", ");
5943 
5944 	  uiout->text (plongest (inf_nums[i]));
5945 	}
5946     }
5947 }
5948 
5949 /* Print B to gdb_stdout.  If RAW_LOC, print raw breakpoint locations
5950    instead of going via breakpoint_ops::print_one.  This makes "maint
5951    info breakpoints" show the software breakpoint locations of
5952    catchpoints, which are considered internal implementation
5953    detail.  */
5954 
5955 static void
5956 print_one_breakpoint_location (struct breakpoint *b,
5957 			       struct bp_location *loc,
5958 			       int loc_number,
5959 			       struct bp_location **last_loc,
5960 			       int allflag, bool raw_loc)
5961 {
5962   struct command_line *l;
5963   static char bpenables[] = "nynny";
5964 
5965   struct ui_out *uiout = current_uiout;
5966   int header_of_multiple = 0;
5967   int part_of_multiple = (loc != NULL);
5968   struct value_print_options opts;
5969 
5970   get_user_print_options (&opts);
5971 
5972   gdb_assert (!loc || loc_number != 0);
5973   /* See comment in print_one_breakpoint concerning treatment of
5974      breakpoints with single disabled location.  */
5975   if (loc == NULL
5976       && (b->loc != NULL
5977 	  && (b->loc->next != NULL || !b->loc->enabled)))
5978     header_of_multiple = 1;
5979   if (loc == NULL)
5980     loc = b->loc;
5981 
5982   annotate_record ();
5983 
5984   /* 1 */
5985   annotate_field (0);
5986   if (part_of_multiple)
5987     uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
5988   else
5989     uiout->field_signed ("number", b->number);
5990 
5991   /* 2 */
5992   annotate_field (1);
5993   if (part_of_multiple)
5994     uiout->field_skip ("type");
5995   else
5996     uiout->field_string ("type", bptype_string (b->type));
5997 
5998   /* 3 */
5999   annotate_field (2);
6000   if (part_of_multiple)
6001     uiout->field_skip ("disp");
6002   else
6003     uiout->field_string ("disp", bpdisp_text (b->disposition));
6004 
6005   /* 4 */
6006   annotate_field (3);
6007   if (part_of_multiple)
6008     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6009   else
6010     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6011 
6012   /* 5 and 6 */
6013   if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
6014     b->ops->print_one (b, last_loc);
6015   else
6016     {
6017       if (is_watchpoint (b))
6018 	{
6019 	  struct watchpoint *w = (struct watchpoint *) b;
6020 
6021 	  /* Field 4, the address, is omitted (which makes the columns
6022 	     not line up too nicely with the headers, but the effect
6023 	     is relatively readable).  */
6024 	  if (opts.addressprint)
6025 	    uiout->field_skip ("addr");
6026 	  annotate_field (5);
6027 	  uiout->field_string ("what", w->exp_string);
6028 	}
6029       else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6030 	       || is_ada_exception_catchpoint (b))
6031 	{
6032 	  if (opts.addressprint)
6033 	    {
6034 	      annotate_field (4);
6035 	      if (header_of_multiple)
6036 		uiout->field_string ("addr", "<MULTIPLE>",
6037 				     metadata_style.style ());
6038 	      else if (b->loc == NULL || loc->shlib_disabled)
6039 		uiout->field_string ("addr", "<PENDING>",
6040 				     metadata_style.style ());
6041 	      else
6042 		uiout->field_core_addr ("addr",
6043 					loc->gdbarch, loc->address);
6044 	    }
6045 	  annotate_field (5);
6046 	  if (!header_of_multiple)
6047 	    print_breakpoint_location (b, loc);
6048 	  if (b->loc)
6049 	    *last_loc = b->loc;
6050 	}
6051     }
6052 
6053   if (loc != NULL && !header_of_multiple)
6054     {
6055       std::vector<int> inf_nums;
6056       int mi_only = 1;
6057 
6058       for (inferior *inf : all_inferiors ())
6059 	{
6060 	  if (inf->pspace == loc->pspace)
6061 	    inf_nums.push_back (inf->num);
6062 	}
6063 
6064         /* For backward compatibility, don't display inferiors in CLI unless
6065 	   there are several.  Always display for MI. */
6066 	if (allflag
6067 	    || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6068 		&& (program_spaces.size () > 1
6069 		    || number_of_inferiors () > 1)
6070 		/* LOC is for existing B, it cannot be in
6071 		   moribund_locations and thus having NULL OWNER.  */
6072 		&& loc->owner->type != bp_catchpoint))
6073 	mi_only = 0;
6074       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6075     }
6076 
6077   if (!part_of_multiple)
6078     {
6079       if (b->thread != -1)
6080 	{
6081 	  /* FIXME: This seems to be redundant and lost here; see the
6082 	     "stop only in" line a little further down.  */
6083 	  uiout->text (" thread ");
6084 	  uiout->field_signed ("thread", b->thread);
6085 	}
6086       else if (b->task != 0)
6087 	{
6088 	  uiout->text (" task ");
6089 	  uiout->field_signed ("task", b->task);
6090 	}
6091     }
6092 
6093   uiout->text ("\n");
6094 
6095   if (!part_of_multiple)
6096     b->ops->print_one_detail (b, uiout);
6097 
6098   if (part_of_multiple && frame_id_p (b->frame_id))
6099     {
6100       annotate_field (6);
6101       uiout->text ("\tstop only in stack frame at ");
6102       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6103          the frame ID.  */
6104       uiout->field_core_addr ("frame",
6105 			      b->gdbarch, b->frame_id.stack_addr);
6106       uiout->text ("\n");
6107     }
6108 
6109   if (!part_of_multiple && b->cond_string)
6110     {
6111       annotate_field (7);
6112       if (is_tracepoint (b))
6113 	uiout->text ("\ttrace only if ");
6114       else
6115 	uiout->text ("\tstop only if ");
6116       uiout->field_string ("cond", b->cond_string);
6117 
6118       /* Print whether the target is doing the breakpoint's condition
6119 	 evaluation.  If GDB is doing the evaluation, don't print anything.  */
6120       if (is_breakpoint (b)
6121 	  && breakpoint_condition_evaluation_mode ()
6122 	  == condition_evaluation_target)
6123 	{
6124 	  uiout->message (" (%pF evals)",
6125 			  string_field ("evaluated-by",
6126 					bp_condition_evaluator (b)));
6127 	}
6128       uiout->text ("\n");
6129     }
6130 
6131   if (!part_of_multiple && b->thread != -1)
6132     {
6133       /* FIXME should make an annotation for this.  */
6134       uiout->text ("\tstop only in thread ");
6135       if (uiout->is_mi_like_p ())
6136 	uiout->field_signed ("thread", b->thread);
6137       else
6138 	{
6139 	  struct thread_info *thr = find_thread_global_id (b->thread);
6140 
6141 	  uiout->field_string ("thread", print_thread_id (thr));
6142 	}
6143       uiout->text ("\n");
6144     }
6145 
6146   if (!part_of_multiple)
6147     {
6148       if (b->hit_count)
6149 	{
6150 	  /* FIXME should make an annotation for this.  */
6151 	  if (is_catchpoint (b))
6152 	    uiout->text ("\tcatchpoint");
6153 	  else if (is_tracepoint (b))
6154 	    uiout->text ("\ttracepoint");
6155 	  else
6156 	    uiout->text ("\tbreakpoint");
6157 	  uiout->text (" already hit ");
6158 	  uiout->field_signed ("times", b->hit_count);
6159 	  if (b->hit_count == 1)
6160 	    uiout->text (" time\n");
6161 	  else
6162 	    uiout->text (" times\n");
6163 	}
6164       else
6165 	{
6166 	  /* Output the count also if it is zero, but only if this is mi.  */
6167 	  if (uiout->is_mi_like_p ())
6168 	    uiout->field_signed ("times", b->hit_count);
6169 	}
6170     }
6171 
6172   if (!part_of_multiple && b->ignore_count)
6173     {
6174       annotate_field (8);
6175       uiout->message ("\tignore next %pF hits\n",
6176 		      signed_field ("ignore", b->ignore_count));
6177     }
6178 
6179   /* Note that an enable count of 1 corresponds to "enable once"
6180      behavior, which is reported by the combination of enablement and
6181      disposition, so we don't need to mention it here.  */
6182   if (!part_of_multiple && b->enable_count > 1)
6183     {
6184       annotate_field (8);
6185       uiout->text ("\tdisable after ");
6186       /* Tweak the wording to clarify that ignore and enable counts
6187 	 are distinct, and have additive effect.  */
6188       if (b->ignore_count)
6189 	uiout->text ("additional ");
6190       else
6191 	uiout->text ("next ");
6192       uiout->field_signed ("enable", b->enable_count);
6193       uiout->text (" hits\n");
6194     }
6195 
6196   if (!part_of_multiple && is_tracepoint (b))
6197     {
6198       struct tracepoint *tp = (struct tracepoint *) b;
6199 
6200       if (tp->traceframe_usage)
6201 	{
6202 	  uiout->text ("\ttrace buffer usage ");
6203 	  uiout->field_signed ("traceframe-usage", tp->traceframe_usage);
6204 	  uiout->text (" bytes\n");
6205 	}
6206     }
6207 
6208   l = b->commands ? b->commands.get () : NULL;
6209   if (!part_of_multiple && l)
6210     {
6211       annotate_field (9);
6212       ui_out_emit_tuple tuple_emitter (uiout, "script");
6213       print_command_lines (uiout, l, 4);
6214     }
6215 
6216   if (is_tracepoint (b))
6217     {
6218       struct tracepoint *t = (struct tracepoint *) b;
6219 
6220       if (!part_of_multiple && t->pass_count)
6221 	{
6222 	  annotate_field (10);
6223 	  uiout->text ("\tpass count ");
6224 	  uiout->field_signed ("pass", t->pass_count);
6225 	  uiout->text (" \n");
6226 	}
6227 
6228       /* Don't display it when tracepoint or tracepoint location is
6229 	 pending.   */
6230       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6231 	{
6232 	  annotate_field (11);
6233 
6234 	  if (uiout->is_mi_like_p ())
6235 	    uiout->field_string ("installed",
6236 				 loc->inserted ? "y" : "n");
6237 	  else
6238 	    {
6239 	      if (loc->inserted)
6240 		uiout->text ("\t");
6241 	      else
6242 		uiout->text ("\tnot ");
6243 	      uiout->text ("installed on target\n");
6244 	    }
6245 	}
6246     }
6247 
6248   if (uiout->is_mi_like_p () && !part_of_multiple)
6249     {
6250       if (is_watchpoint (b))
6251 	{
6252 	  struct watchpoint *w = (struct watchpoint *) b;
6253 
6254 	  uiout->field_string ("original-location", w->exp_string);
6255 	}
6256       else if (b->location != NULL
6257 	       && event_location_to_string (b->location.get ()) != NULL)
6258 	uiout->field_string ("original-location",
6259 			     event_location_to_string (b->location.get ()));
6260     }
6261 }
6262 
6263 /* See breakpoint.h. */
6264 
6265 bool fix_multi_location_breakpoint_output_globally = false;
6266 
6267 static void
6268 print_one_breakpoint (struct breakpoint *b,
6269 		      struct bp_location **last_loc,
6270 		      int allflag)
6271 {
6272   struct ui_out *uiout = current_uiout;
6273   bool use_fixed_output
6274     = (uiout->test_flags (fix_multi_location_breakpoint_output)
6275        || fix_multi_location_breakpoint_output_globally);
6276 
6277   gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6278   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
6279 
6280   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6281      are outside.  */
6282   if (!use_fixed_output)
6283     bkpt_tuple_emitter.reset ();
6284 
6285   /* If this breakpoint has custom print function,
6286      it's already printed.  Otherwise, print individual
6287      locations, if any.  */
6288   if (b->ops == NULL
6289       || b->ops->print_one == NULL
6290       || allflag)
6291     {
6292       /* If breakpoint has a single location that is disabled, we
6293 	 print it as if it had several locations, since otherwise it's
6294 	 hard to represent "breakpoint enabled, location disabled"
6295 	 situation.
6296 
6297 	 Note that while hardware watchpoints have several locations
6298 	 internally, that's not a property exposed to users.
6299 
6300 	 Likewise, while catchpoints may be implemented with
6301 	 breakpoints (e.g., catch throw), that's not a property
6302 	 exposed to users.  We do however display the internal
6303 	 breakpoint locations with "maint info breakpoints".  */
6304       if (!is_hardware_watchpoint (b)
6305 	  && (!is_catchpoint (b) || is_exception_catchpoint (b)
6306 	      || is_ada_exception_catchpoint (b))
6307 	  && (allflag
6308 	      || (b->loc && (b->loc->next || !b->loc->enabled))))
6309 	{
6310 	  gdb::optional<ui_out_emit_list> locations_list;
6311 
6312 	  /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6313 	     MI record.  For later versions, place breakpoint locations in a
6314 	     list.  */
6315 	  if (uiout->is_mi_like_p () && use_fixed_output)
6316 	    locations_list.emplace (uiout, "locations");
6317 
6318 	  int n = 1;
6319 	  for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6320 	    {
6321 	      ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6322 	      print_one_breakpoint_location (b, loc, n, last_loc,
6323 					     allflag, allflag);
6324 	    }
6325 	}
6326     }
6327 }
6328 
6329 static int
6330 breakpoint_address_bits (struct breakpoint *b)
6331 {
6332   int print_address_bits = 0;
6333   struct bp_location *loc;
6334 
6335   /* Software watchpoints that aren't watching memory don't have an
6336      address to print.  */
6337   if (is_no_memory_software_watchpoint (b))
6338     return 0;
6339 
6340   for (loc = b->loc; loc; loc = loc->next)
6341     {
6342       int addr_bit;
6343 
6344       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6345       if (addr_bit > print_address_bits)
6346 	print_address_bits = addr_bit;
6347     }
6348 
6349   return print_address_bits;
6350 }
6351 
6352 /* See breakpoint.h.  */
6353 
6354 void
6355 print_breakpoint (breakpoint *b)
6356 {
6357   struct bp_location *dummy_loc = NULL;
6358   print_one_breakpoint (b, &dummy_loc, 0);
6359 }
6360 
6361 /* Return true if this breakpoint was set by the user, false if it is
6362    internal or momentary.  */
6363 
6364 int
6365 user_breakpoint_p (struct breakpoint *b)
6366 {
6367   return b->number > 0;
6368 }
6369 
6370 /* See breakpoint.h.  */
6371 
6372 int
6373 pending_breakpoint_p (struct breakpoint *b)
6374 {
6375   return b->loc == NULL;
6376 }
6377 
6378 /* Print information on breakpoints (including watchpoints and tracepoints).
6379 
6380    If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6381    understood by number_or_range_parser.  Only breakpoints included in this
6382    list are then printed.
6383 
6384    If SHOW_INTERNAL is true, print internal breakpoints.
6385 
6386    If FILTER is non-NULL, call it on each breakpoint and only include the
6387    ones for which it returns true.
6388 
6389    Return the total number of breakpoints listed.  */
6390 
6391 static int
6392 breakpoint_1 (const char *bp_num_list, bool show_internal,
6393 	      bool (*filter) (const struct breakpoint *))
6394 {
6395   struct breakpoint *b;
6396   struct bp_location *last_loc = NULL;
6397   int nr_printable_breakpoints;
6398   struct value_print_options opts;
6399   int print_address_bits = 0;
6400   int print_type_col_width = 14;
6401   struct ui_out *uiout = current_uiout;
6402 
6403   get_user_print_options (&opts);
6404 
6405   /* Compute the number of rows in the table, as well as the size
6406      required for address fields.  */
6407   nr_printable_breakpoints = 0;
6408   ALL_BREAKPOINTS (b)
6409     {
6410       /* If we have a filter, only list the breakpoints it accepts.  */
6411       if (filter && !filter (b))
6412 	continue;
6413 
6414       /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6415 	 accept.  Skip the others.  */
6416       if (bp_num_list != NULL && *bp_num_list != '\0')
6417 	{
6418 	  if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
6419 	    continue;
6420 	  if (!show_internal && !number_is_in_list (bp_num_list, b->number))
6421 	    continue;
6422 	}
6423 
6424       if (show_internal || user_breakpoint_p (b))
6425 	{
6426 	  int addr_bit, type_len;
6427 
6428 	  addr_bit = breakpoint_address_bits (b);
6429 	  if (addr_bit > print_address_bits)
6430 	    print_address_bits = addr_bit;
6431 
6432 	  type_len = strlen (bptype_string (b->type));
6433 	  if (type_len > print_type_col_width)
6434 	    print_type_col_width = type_len;
6435 
6436 	  nr_printable_breakpoints++;
6437 	}
6438     }
6439 
6440   {
6441     ui_out_emit_table table_emitter (uiout,
6442 				     opts.addressprint ? 6 : 5,
6443 				     nr_printable_breakpoints,
6444 				     "BreakpointTable");
6445 
6446     if (nr_printable_breakpoints > 0)
6447       annotate_breakpoints_headers ();
6448     if (nr_printable_breakpoints > 0)
6449       annotate_field (0);
6450     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6451     if (nr_printable_breakpoints > 0)
6452       annotate_field (1);
6453     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6454     if (nr_printable_breakpoints > 0)
6455       annotate_field (2);
6456     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6457     if (nr_printable_breakpoints > 0)
6458       annotate_field (3);
6459     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6460     if (opts.addressprint)
6461       {
6462 	if (nr_printable_breakpoints > 0)
6463 	  annotate_field (4);
6464 	if (print_address_bits <= 32)
6465 	  uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6466 	else
6467 	  uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6468       }
6469     if (nr_printable_breakpoints > 0)
6470       annotate_field (5);
6471     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6472     uiout->table_body ();
6473     if (nr_printable_breakpoints > 0)
6474       annotate_breakpoints_table ();
6475 
6476     ALL_BREAKPOINTS (b)
6477       {
6478 	QUIT;
6479 	/* If we have a filter, only list the breakpoints it accepts.  */
6480 	if (filter && !filter (b))
6481 	  continue;
6482 
6483 	/* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6484 	   accept.  Skip the others.  */
6485 
6486 	if (bp_num_list != NULL && *bp_num_list != '\0')
6487 	  {
6488 	    if (show_internal)	/* maintenance info breakpoint */
6489 	      {
6490 		if (parse_and_eval_long (bp_num_list) != b->number)
6491 		  continue;
6492 	      }
6493 	    else		/* all others */
6494 	      {
6495 		if (!number_is_in_list (bp_num_list, b->number))
6496 		  continue;
6497 	      }
6498 	  }
6499 	/* We only print out user settable breakpoints unless the
6500 	   show_internal is set.  */
6501 	if (show_internal || user_breakpoint_p (b))
6502 	  print_one_breakpoint (b, &last_loc, show_internal);
6503       }
6504   }
6505 
6506   if (nr_printable_breakpoints == 0)
6507     {
6508       /* If there's a filter, let the caller decide how to report
6509 	 empty list.  */
6510       if (!filter)
6511 	{
6512 	  if (bp_num_list == NULL || *bp_num_list == '\0')
6513 	    uiout->message ("No breakpoints or watchpoints.\n");
6514 	  else
6515 	    uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6516 			    bp_num_list);
6517 	}
6518     }
6519   else
6520     {
6521       if (last_loc && !server_command)
6522 	set_next_address (last_loc->gdbarch, last_loc->address);
6523     }
6524 
6525   /* FIXME?  Should this be moved up so that it is only called when
6526      there have been breakpoints? */
6527   annotate_breakpoints_table_end ();
6528 
6529   return nr_printable_breakpoints;
6530 }
6531 
6532 /* Display the value of default-collect in a way that is generally
6533    compatible with the breakpoint list.  */
6534 
6535 static void
6536 default_collect_info (void)
6537 {
6538   struct ui_out *uiout = current_uiout;
6539 
6540   /* If it has no value (which is frequently the case), say nothing; a
6541      message like "No default-collect." gets in user's face when it's
6542      not wanted.  */
6543   if (!*default_collect)
6544     return;
6545 
6546   /* The following phrase lines up nicely with per-tracepoint collect
6547      actions.  */
6548   uiout->text ("default collect ");
6549   uiout->field_string ("default-collect", default_collect);
6550   uiout->text (" \n");
6551 }
6552 
6553 static void
6554 info_breakpoints_command (const char *args, int from_tty)
6555 {
6556   breakpoint_1 (args, false, NULL);
6557 
6558   default_collect_info ();
6559 }
6560 
6561 static void
6562 info_watchpoints_command (const char *args, int from_tty)
6563 {
6564   int num_printed = breakpoint_1 (args, false, is_watchpoint);
6565   struct ui_out *uiout = current_uiout;
6566 
6567   if (num_printed == 0)
6568     {
6569       if (args == NULL || *args == '\0')
6570 	uiout->message ("No watchpoints.\n");
6571       else
6572 	uiout->message ("No watchpoint matching '%s'.\n", args);
6573     }
6574 }
6575 
6576 static void
6577 maintenance_info_breakpoints (const char *args, int from_tty)
6578 {
6579   breakpoint_1 (args, true, NULL);
6580 
6581   default_collect_info ();
6582 }
6583 
6584 static int
6585 breakpoint_has_pc (struct breakpoint *b,
6586 		   struct program_space *pspace,
6587 		   CORE_ADDR pc, struct obj_section *section)
6588 {
6589   struct bp_location *bl = b->loc;
6590 
6591   for (; bl; bl = bl->next)
6592     {
6593       if (bl->pspace == pspace
6594 	  && bl->address == pc
6595 	  && (!overlay_debugging || bl->section == section))
6596 	return 1;
6597     }
6598   return 0;
6599 }
6600 
6601 /* Print a message describing any user-breakpoints set at PC.  This
6602    concerns with logical breakpoints, so we match program spaces, not
6603    address spaces.  */
6604 
6605 static void
6606 describe_other_breakpoints (struct gdbarch *gdbarch,
6607 			    struct program_space *pspace, CORE_ADDR pc,
6608 			    struct obj_section *section, int thread)
6609 {
6610   int others = 0;
6611   struct breakpoint *b;
6612 
6613   ALL_BREAKPOINTS (b)
6614     others += (user_breakpoint_p (b)
6615                && breakpoint_has_pc (b, pspace, pc, section));
6616   if (others > 0)
6617     {
6618       if (others == 1)
6619 	printf_filtered (_("Note: breakpoint "));
6620       else /* if (others == ???) */
6621 	printf_filtered (_("Note: breakpoints "));
6622       ALL_BREAKPOINTS (b)
6623 	if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6624 	  {
6625 	    others--;
6626 	    printf_filtered ("%d", b->number);
6627 	    if (b->thread == -1 && thread != -1)
6628 	      printf_filtered (" (all threads)");
6629 	    else if (b->thread != -1)
6630 	      printf_filtered (" (thread %d)", b->thread);
6631 	    printf_filtered ("%s%s ",
6632 			     ((b->enable_state == bp_disabled
6633 			       || b->enable_state == bp_call_disabled)
6634 			      ? " (disabled)"
6635 			      : ""),
6636 			     (others > 1) ? ","
6637 			     : ((others == 1) ? " and" : ""));
6638 	  }
6639       current_uiout->message (_("also set at pc %ps.\n"),
6640 			      styled_string (address_style.style (),
6641 					     paddress (gdbarch, pc)));
6642     }
6643 }
6644 
6645 
6646 /* Return true iff it is meaningful to use the address member of LOC.
6647    For some breakpoint types, the locations' address members are
6648    irrelevant and it makes no sense to attempt to compare them to
6649    other addresses (or use them for any other purpose either).
6650 
6651    More specifically, software watchpoints and catchpoints that are
6652    not backed by breakpoints always have a zero valued location
6653    address and we don't want to mark breakpoints of any of these types
6654    to be a duplicate of an actual breakpoint location at address
6655    zero.  */
6656 
6657 static bool
6658 bl_address_is_meaningful (bp_location *loc)
6659 {
6660   return loc->loc_type != bp_loc_other;
6661 }
6662 
6663 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6664    true if LOC1 and LOC2 represent the same watchpoint location.  */
6665 
6666 static int
6667 watchpoint_locations_match (struct bp_location *loc1,
6668 			    struct bp_location *loc2)
6669 {
6670   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6671   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6672 
6673   /* Both of them must exist.  */
6674   gdb_assert (w1 != NULL);
6675   gdb_assert (w2 != NULL);
6676 
6677   /* If the target can evaluate the condition expression in hardware,
6678      then we we need to insert both watchpoints even if they are at
6679      the same place.  Otherwise the watchpoint will only trigger when
6680      the condition of whichever watchpoint was inserted evaluates to
6681      true, not giving a chance for GDB to check the condition of the
6682      other watchpoint.  */
6683   if ((w1->cond_exp
6684        && target_can_accel_watchpoint_condition (loc1->address,
6685 						 loc1->length,
6686 						 loc1->watchpoint_type,
6687 						 w1->cond_exp.get ()))
6688       || (w2->cond_exp
6689 	  && target_can_accel_watchpoint_condition (loc2->address,
6690 						    loc2->length,
6691 						    loc2->watchpoint_type,
6692 						    w2->cond_exp.get ())))
6693     return 0;
6694 
6695   /* Note that this checks the owner's type, not the location's.  In
6696      case the target does not support read watchpoints, but does
6697      support access watchpoints, we'll have bp_read_watchpoint
6698      watchpoints with hw_access locations.  Those should be considered
6699      duplicates of hw_read locations.  The hw_read locations will
6700      become hw_access locations later.  */
6701   return (loc1->owner->type == loc2->owner->type
6702 	  && loc1->pspace->aspace == loc2->pspace->aspace
6703 	  && loc1->address == loc2->address
6704 	  && loc1->length == loc2->length);
6705 }
6706 
6707 /* See breakpoint.h.  */
6708 
6709 int
6710 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6711 			  const address_space *aspace2, CORE_ADDR addr2)
6712 {
6713   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6714 	   || aspace1 == aspace2)
6715 	  && addr1 == addr2);
6716 }
6717 
6718 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6719    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6720    matches ASPACE2.  On targets that have global breakpoints, the address
6721    space doesn't really matter.  */
6722 
6723 static int
6724 breakpoint_address_match_range (const address_space *aspace1,
6725 				CORE_ADDR addr1,
6726 				int len1, const address_space *aspace2,
6727 				CORE_ADDR addr2)
6728 {
6729   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6730 	   || aspace1 == aspace2)
6731 	  && addr2 >= addr1 && addr2 < addr1 + len1);
6732 }
6733 
6734 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6735    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6736    matches the breakpoint's address space.  On targets that have global
6737    breakpoints, the address space doesn't really matter.  */
6738 
6739 static int
6740 breakpoint_location_address_match (struct bp_location *bl,
6741 				   const address_space *aspace,
6742 				   CORE_ADDR addr)
6743 {
6744   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6745 				    aspace, addr)
6746 	  || (bl->length
6747 	      && breakpoint_address_match_range (bl->pspace->aspace,
6748 						 bl->address, bl->length,
6749 						 aspace, addr)));
6750 }
6751 
6752 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6753    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6754    match happens only if ASPACE matches the breakpoint's address
6755    space.  On targets that have global breakpoints, the address space
6756    doesn't really matter.  */
6757 
6758 static int
6759 breakpoint_location_address_range_overlap (struct bp_location *bl,
6760 					   const address_space *aspace,
6761 					   CORE_ADDR addr, int len)
6762 {
6763   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6764       || bl->pspace->aspace == aspace)
6765     {
6766       int bl_len = bl->length != 0 ? bl->length : 1;
6767 
6768       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6769 	return 1;
6770     }
6771   return 0;
6772 }
6773 
6774 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6775    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6776    true, otherwise returns false.  */
6777 
6778 static int
6779 tracepoint_locations_match (struct bp_location *loc1,
6780 			    struct bp_location *loc2)
6781 {
6782   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6783     /* Since tracepoint locations are never duplicated with others', tracepoint
6784        locations at the same address of different tracepoints are regarded as
6785        different locations.  */
6786     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6787   else
6788     return 0;
6789 }
6790 
6791 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6792    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
6793    the same location.  If SW_HW_BPS_MATCH is true, then software
6794    breakpoint locations and hardware breakpoint locations match,
6795    otherwise they don't.  */
6796 
6797 static int
6798 breakpoint_locations_match (struct bp_location *loc1,
6799 			    struct bp_location *loc2,
6800 			    bool sw_hw_bps_match)
6801 {
6802   int hw_point1, hw_point2;
6803 
6804   /* Both of them must not be in moribund_locations.  */
6805   gdb_assert (loc1->owner != NULL);
6806   gdb_assert (loc2->owner != NULL);
6807 
6808   hw_point1 = is_hardware_watchpoint (loc1->owner);
6809   hw_point2 = is_hardware_watchpoint (loc2->owner);
6810 
6811   if (hw_point1 != hw_point2)
6812     return 0;
6813   else if (hw_point1)
6814     return watchpoint_locations_match (loc1, loc2);
6815   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6816     return tracepoint_locations_match (loc1, loc2);
6817   else
6818     /* We compare bp_location.length in order to cover ranged
6819        breakpoints.  Keep this in sync with
6820        bp_location_is_less_than.  */
6821     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6822 				     loc2->pspace->aspace, loc2->address)
6823 	    && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
6824 	    && loc1->length == loc2->length);
6825 }
6826 
6827 static void
6828 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6829                                int bnum, int have_bnum)
6830 {
6831   /* The longest string possibly returned by hex_string_custom
6832      is 50 chars.  These must be at least that big for safety.  */
6833   char astr1[64];
6834   char astr2[64];
6835 
6836   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6837   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6838   if (have_bnum)
6839     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6840              bnum, astr1, astr2);
6841   else
6842     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6843 }
6844 
6845 /* Adjust a breakpoint's address to account for architectural
6846    constraints on breakpoint placement.  Return the adjusted address.
6847    Note: Very few targets require this kind of adjustment.  For most
6848    targets, this function is simply the identity function.  */
6849 
6850 static CORE_ADDR
6851 adjust_breakpoint_address (struct gdbarch *gdbarch,
6852 			   CORE_ADDR bpaddr, enum bptype bptype)
6853 {
6854   if (bptype == bp_watchpoint
6855       || bptype == bp_hardware_watchpoint
6856       || bptype == bp_read_watchpoint
6857       || bptype == bp_access_watchpoint
6858       || bptype == bp_catchpoint)
6859     {
6860       /* Watchpoints and the various bp_catch_* eventpoints should not
6861          have their addresses modified.  */
6862       return bpaddr;
6863     }
6864   else if (bptype == bp_single_step)
6865     {
6866       /* Single-step breakpoints should not have their addresses
6867 	 modified.  If there's any architectural constrain that
6868 	 applies to this address, then it should have already been
6869 	 taken into account when the breakpoint was created in the
6870 	 first place.  If we didn't do this, stepping through e.g.,
6871 	 Thumb-2 IT blocks would break.  */
6872       return bpaddr;
6873     }
6874   else
6875     {
6876       CORE_ADDR adjusted_bpaddr = bpaddr;
6877 
6878       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6879 	{
6880 	  /* Some targets have architectural constraints on the placement
6881 	     of breakpoint instructions.  Obtain the adjusted address.  */
6882 	  adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6883 	}
6884 
6885       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6886 
6887       /* An adjusted breakpoint address can significantly alter
6888          a user's expectations.  Print a warning if an adjustment
6889 	 is required.  */
6890       if (adjusted_bpaddr != bpaddr)
6891 	breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6892 
6893       return adjusted_bpaddr;
6894     }
6895 }
6896 
6897 static bp_loc_type
6898 bp_location_from_bp_type (bptype type)
6899 {
6900   switch (type)
6901     {
6902     case bp_breakpoint:
6903     case bp_single_step:
6904     case bp_until:
6905     case bp_finish:
6906     case bp_longjmp:
6907     case bp_longjmp_resume:
6908     case bp_longjmp_call_dummy:
6909     case bp_exception:
6910     case bp_exception_resume:
6911     case bp_step_resume:
6912     case bp_hp_step_resume:
6913     case bp_watchpoint_scope:
6914     case bp_call_dummy:
6915     case bp_std_terminate:
6916     case bp_shlib_event:
6917     case bp_thread_event:
6918     case bp_overlay_event:
6919     case bp_jit_event:
6920     case bp_longjmp_master:
6921     case bp_std_terminate_master:
6922     case bp_exception_master:
6923     case bp_gnu_ifunc_resolver:
6924     case bp_gnu_ifunc_resolver_return:
6925     case bp_dprintf:
6926       return bp_loc_software_breakpoint;
6927     case bp_hardware_breakpoint:
6928       return bp_loc_hardware_breakpoint;
6929     case bp_hardware_watchpoint:
6930     case bp_read_watchpoint:
6931     case bp_access_watchpoint:
6932       return bp_loc_hardware_watchpoint;
6933     case bp_watchpoint:
6934     case bp_catchpoint:
6935     case bp_tracepoint:
6936     case bp_fast_tracepoint:
6937     case bp_static_tracepoint:
6938       return bp_loc_other;
6939     default:
6940       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6941     }
6942 }
6943 
6944 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
6945 {
6946   this->owner = owner;
6947   this->cond_bytecode = NULL;
6948   this->shlib_disabled = 0;
6949   this->enabled = 1;
6950 
6951   this->loc_type = type;
6952 
6953   if (this->loc_type == bp_loc_software_breakpoint
6954       || this->loc_type == bp_loc_hardware_breakpoint)
6955     mark_breakpoint_location_modified (this);
6956 
6957   this->refc = 1;
6958 }
6959 
6960 bp_location::bp_location (breakpoint *owner)
6961   : bp_location::bp_location (owner,
6962 			      bp_location_from_bp_type (owner->type))
6963 {
6964 }
6965 
6966 /* Allocate a struct bp_location.  */
6967 
6968 static struct bp_location *
6969 allocate_bp_location (struct breakpoint *bpt)
6970 {
6971   return bpt->ops->allocate_location (bpt);
6972 }
6973 
6974 static void
6975 free_bp_location (struct bp_location *loc)
6976 {
6977   delete loc;
6978 }
6979 
6980 /* Increment reference count.  */
6981 
6982 static void
6983 incref_bp_location (struct bp_location *bl)
6984 {
6985   ++bl->refc;
6986 }
6987 
6988 /* Decrement reference count.  If the reference count reaches 0,
6989    destroy the bp_location.  Sets *BLP to NULL.  */
6990 
6991 static void
6992 decref_bp_location (struct bp_location **blp)
6993 {
6994   gdb_assert ((*blp)->refc > 0);
6995 
6996   if (--(*blp)->refc == 0)
6997     free_bp_location (*blp);
6998   *blp = NULL;
6999 }
7000 
7001 /* Add breakpoint B at the end of the global breakpoint chain.  */
7002 
7003 static breakpoint *
7004 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7005 {
7006   struct breakpoint *b1;
7007   struct breakpoint *result = b.get ();
7008 
7009   /* Add this breakpoint to the end of the chain so that a list of
7010      breakpoints will come out in order of increasing numbers.  */
7011 
7012   b1 = breakpoint_chain;
7013   if (b1 == 0)
7014     breakpoint_chain = b.release ();
7015   else
7016     {
7017       while (b1->next)
7018 	b1 = b1->next;
7019       b1->next = b.release ();
7020     }
7021 
7022   return result;
7023 }
7024 
7025 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7026 
7027 static void
7028 init_raw_breakpoint_without_location (struct breakpoint *b,
7029 				      struct gdbarch *gdbarch,
7030 				      enum bptype bptype,
7031 				      const struct breakpoint_ops *ops)
7032 {
7033   gdb_assert (ops != NULL);
7034 
7035   b->ops = ops;
7036   b->type = bptype;
7037   b->gdbarch = gdbarch;
7038   b->language = current_language->la_language;
7039   b->input_radix = input_radix;
7040   b->related_breakpoint = b;
7041 }
7042 
7043 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7044    that has type BPTYPE and has no locations as yet.  */
7045 
7046 static struct breakpoint *
7047 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7048 				     enum bptype bptype,
7049 				     const struct breakpoint_ops *ops)
7050 {
7051   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7052 
7053   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7054   return add_to_breakpoint_chain (std::move (b));
7055 }
7056 
7057 /* Initialize loc->function_name.  */
7058 
7059 static void
7060 set_breakpoint_location_function (struct bp_location *loc)
7061 {
7062   gdb_assert (loc->owner != NULL);
7063 
7064   if (loc->owner->type == bp_breakpoint
7065       || loc->owner->type == bp_hardware_breakpoint
7066       || is_tracepoint (loc->owner))
7067     {
7068       const char *function_name;
7069 
7070       if (loc->msymbol != NULL
7071 	  && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7072 	      || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
7073 	{
7074 	  struct breakpoint *b = loc->owner;
7075 
7076 	  function_name = loc->msymbol->linkage_name ();
7077 
7078 	  if (b->type == bp_breakpoint && b->loc == loc
7079 	      && loc->next == NULL && b->related_breakpoint == b)
7080 	    {
7081 	      /* Create only the whole new breakpoint of this type but do not
7082 		 mess more complicated breakpoints with multiple locations.  */
7083 	      b->type = bp_gnu_ifunc_resolver;
7084 	      /* Remember the resolver's address for use by the return
7085 	         breakpoint.  */
7086 	      loc->related_address = loc->address;
7087 	    }
7088 	}
7089       else
7090 	find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7091 
7092       if (function_name)
7093 	loc->function_name = xstrdup (function_name);
7094     }
7095 }
7096 
7097 /* Attempt to determine architecture of location identified by SAL.  */
7098 struct gdbarch *
7099 get_sal_arch (struct symtab_and_line sal)
7100 {
7101   if (sal.section)
7102     return sal.section->objfile->arch ();
7103   if (sal.symtab)
7104     return SYMTAB_OBJFILE (sal.symtab)->arch ();
7105 
7106   return NULL;
7107 }
7108 
7109 /* Low level routine for partially initializing a breakpoint of type
7110    BPTYPE.  The newly created breakpoint's address, section, source
7111    file name, and line number are provided by SAL.
7112 
7113    It is expected that the caller will complete the initialization of
7114    the newly created breakpoint struct as well as output any status
7115    information regarding the creation of a new breakpoint.  */
7116 
7117 static void
7118 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7119 		     struct symtab_and_line sal, enum bptype bptype,
7120 		     const struct breakpoint_ops *ops)
7121 {
7122   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7123 
7124   add_location_to_breakpoint (b, &sal);
7125 
7126   if (bptype != bp_catchpoint)
7127     gdb_assert (sal.pspace != NULL);
7128 
7129   /* Store the program space that was used to set the breakpoint,
7130      except for ordinary breakpoints, which are independent of the
7131      program space.  */
7132   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7133     b->pspace = sal.pspace;
7134 }
7135 
7136 /* set_raw_breakpoint is a low level routine for allocating and
7137    partially initializing a breakpoint of type BPTYPE.  The newly
7138    created breakpoint's address, section, source file name, and line
7139    number are provided by SAL.  The newly created and partially
7140    initialized breakpoint is added to the breakpoint chain and
7141    is also returned as the value of this function.
7142 
7143    It is expected that the caller will complete the initialization of
7144    the newly created breakpoint struct as well as output any status
7145    information regarding the creation of a new breakpoint.  In
7146    particular, set_raw_breakpoint does NOT set the breakpoint
7147    number!  Care should be taken to not allow an error to occur
7148    prior to completing the initialization of the breakpoint.  If this
7149    should happen, a bogus breakpoint will be left on the chain.  */
7150 
7151 struct breakpoint *
7152 set_raw_breakpoint (struct gdbarch *gdbarch,
7153 		    struct symtab_and_line sal, enum bptype bptype,
7154 		    const struct breakpoint_ops *ops)
7155 {
7156   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7157 
7158   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7159   return add_to_breakpoint_chain (std::move (b));
7160 }
7161 
7162 /* Call this routine when stepping and nexting to enable a breakpoint
7163    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7164    initiated the operation.  */
7165 
7166 void
7167 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7168 {
7169   struct breakpoint *b, *b_tmp;
7170   int thread = tp->global_num;
7171 
7172   /* To avoid having to rescan all objfile symbols at every step,
7173      we maintain a list of continually-inserted but always disabled
7174      longjmp "master" breakpoints.  Here, we simply create momentary
7175      clones of those and enable them for the requested thread.  */
7176   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7177     if (b->pspace == current_program_space
7178 	&& (b->type == bp_longjmp_master
7179 	    || b->type == bp_exception_master))
7180       {
7181 	enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7182 	struct breakpoint *clone;
7183 
7184 	/* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7185 	   after their removal.  */
7186 	clone = momentary_breakpoint_from_master (b, type,
7187 						  &momentary_breakpoint_ops, 1);
7188 	clone->thread = thread;
7189       }
7190 
7191   tp->initiating_frame = frame;
7192 }
7193 
7194 /* Delete all longjmp breakpoints from THREAD.  */
7195 void
7196 delete_longjmp_breakpoint (int thread)
7197 {
7198   struct breakpoint *b, *b_tmp;
7199 
7200   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7201     if (b->type == bp_longjmp || b->type == bp_exception)
7202       {
7203 	if (b->thread == thread)
7204 	  delete_breakpoint (b);
7205       }
7206 }
7207 
7208 void
7209 delete_longjmp_breakpoint_at_next_stop (int thread)
7210 {
7211   struct breakpoint *b, *b_tmp;
7212 
7213   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7214     if (b->type == bp_longjmp || b->type == bp_exception)
7215       {
7216 	if (b->thread == thread)
7217 	  b->disposition = disp_del_at_next_stop;
7218       }
7219 }
7220 
7221 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7222    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7223    pointer to any of them.  Return NULL if this system cannot place longjmp
7224    breakpoints.  */
7225 
7226 struct breakpoint *
7227 set_longjmp_breakpoint_for_call_dummy (void)
7228 {
7229   struct breakpoint *b, *retval = NULL;
7230 
7231   ALL_BREAKPOINTS (b)
7232     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7233       {
7234 	struct breakpoint *new_b;
7235 
7236 	new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7237 						  &momentary_breakpoint_ops,
7238 						  1);
7239 	new_b->thread = inferior_thread ()->global_num;
7240 
7241 	/* Link NEW_B into the chain of RETVAL breakpoints.  */
7242 
7243 	gdb_assert (new_b->related_breakpoint == new_b);
7244 	if (retval == NULL)
7245 	  retval = new_b;
7246 	new_b->related_breakpoint = retval;
7247 	while (retval->related_breakpoint != new_b->related_breakpoint)
7248 	  retval = retval->related_breakpoint;
7249 	retval->related_breakpoint = new_b;
7250       }
7251 
7252   return retval;
7253 }
7254 
7255 /* Verify all existing dummy frames and their associated breakpoints for
7256    TP.  Remove those which can no longer be found in the current frame
7257    stack.
7258 
7259    You should call this function only at places where it is safe to currently
7260    unwind the whole stack.  Failed stack unwind would discard live dummy
7261    frames.  */
7262 
7263 void
7264 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7265 {
7266   struct breakpoint *b, *b_tmp;
7267 
7268   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7269     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7270       {
7271 	struct breakpoint *dummy_b = b->related_breakpoint;
7272 
7273 	while (dummy_b != b && dummy_b->type != bp_call_dummy)
7274 	  dummy_b = dummy_b->related_breakpoint;
7275 	if (dummy_b->type != bp_call_dummy
7276 	    || frame_find_by_id (dummy_b->frame_id) != NULL)
7277 	  continue;
7278 
7279 	dummy_frame_discard (dummy_b->frame_id, tp);
7280 
7281 	while (b->related_breakpoint != b)
7282 	  {
7283 	    if (b_tmp == b->related_breakpoint)
7284 	      b_tmp = b->related_breakpoint->next;
7285 	    delete_breakpoint (b->related_breakpoint);
7286 	  }
7287 	delete_breakpoint (b);
7288       }
7289 }
7290 
7291 void
7292 enable_overlay_breakpoints (void)
7293 {
7294   struct breakpoint *b;
7295 
7296   ALL_BREAKPOINTS (b)
7297     if (b->type == bp_overlay_event)
7298     {
7299       b->enable_state = bp_enabled;
7300       update_global_location_list (UGLL_MAY_INSERT);
7301       overlay_events_enabled = 1;
7302     }
7303 }
7304 
7305 void
7306 disable_overlay_breakpoints (void)
7307 {
7308   struct breakpoint *b;
7309 
7310   ALL_BREAKPOINTS (b)
7311     if (b->type == bp_overlay_event)
7312     {
7313       b->enable_state = bp_disabled;
7314       update_global_location_list (UGLL_DONT_INSERT);
7315       overlay_events_enabled = 0;
7316     }
7317 }
7318 
7319 /* Set an active std::terminate breakpoint for each std::terminate
7320    master breakpoint.  */
7321 void
7322 set_std_terminate_breakpoint (void)
7323 {
7324   struct breakpoint *b, *b_tmp;
7325 
7326   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7327     if (b->pspace == current_program_space
7328 	&& b->type == bp_std_terminate_master)
7329       {
7330 	momentary_breakpoint_from_master (b, bp_std_terminate,
7331 					  &momentary_breakpoint_ops, 1);
7332       }
7333 }
7334 
7335 /* Delete all the std::terminate breakpoints.  */
7336 void
7337 delete_std_terminate_breakpoint (void)
7338 {
7339   struct breakpoint *b, *b_tmp;
7340 
7341   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7342     if (b->type == bp_std_terminate)
7343       delete_breakpoint (b);
7344 }
7345 
7346 struct breakpoint *
7347 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7348 {
7349   struct breakpoint *b;
7350 
7351   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7352 				  &internal_breakpoint_ops);
7353 
7354   b->enable_state = bp_enabled;
7355   /* location has to be used or breakpoint_re_set will delete me.  */
7356   b->location = new_address_location (b->loc->address, NULL, 0);
7357 
7358   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7359 
7360   return b;
7361 }
7362 
7363 struct lang_and_radix
7364   {
7365     enum language lang;
7366     int radix;
7367   };
7368 
7369 /* Create a breakpoint for JIT code registration and unregistration.  */
7370 
7371 struct breakpoint *
7372 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7373 {
7374   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7375 				     &internal_breakpoint_ops);
7376 }
7377 
7378 /* Remove JIT code registration and unregistration breakpoint(s).  */
7379 
7380 void
7381 remove_jit_event_breakpoints (void)
7382 {
7383   struct breakpoint *b, *b_tmp;
7384 
7385   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7386     if (b->type == bp_jit_event
7387 	&& b->loc->pspace == current_program_space)
7388       delete_breakpoint (b);
7389 }
7390 
7391 void
7392 remove_solib_event_breakpoints (void)
7393 {
7394   struct breakpoint *b, *b_tmp;
7395 
7396   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7397     if (b->type == bp_shlib_event
7398 	&& b->loc->pspace == current_program_space)
7399       delete_breakpoint (b);
7400 }
7401 
7402 /* See breakpoint.h.  */
7403 
7404 void
7405 remove_solib_event_breakpoints_at_next_stop (void)
7406 {
7407   struct breakpoint *b, *b_tmp;
7408 
7409   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7410     if (b->type == bp_shlib_event
7411 	&& b->loc->pspace == current_program_space)
7412       b->disposition = disp_del_at_next_stop;
7413 }
7414 
7415 /* Helper for create_solib_event_breakpoint /
7416    create_and_insert_solib_event_breakpoint.  Allows specifying which
7417    INSERT_MODE to pass through to update_global_location_list.  */
7418 
7419 static struct breakpoint *
7420 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7421 				 enum ugll_insert_mode insert_mode)
7422 {
7423   struct breakpoint *b;
7424 
7425   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7426 				  &internal_breakpoint_ops);
7427   update_global_location_list_nothrow (insert_mode);
7428   return b;
7429 }
7430 
7431 struct breakpoint *
7432 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7433 {
7434   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7435 }
7436 
7437 /* See breakpoint.h.  */
7438 
7439 struct breakpoint *
7440 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7441 {
7442   struct breakpoint *b;
7443 
7444   /* Explicitly tell update_global_location_list to insert
7445      locations.  */
7446   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7447   if (!b->loc->inserted)
7448     {
7449       delete_breakpoint (b);
7450       return NULL;
7451     }
7452   return b;
7453 }
7454 
7455 /* Disable any breakpoints that are on code in shared libraries.  Only
7456    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7457 
7458 void
7459 disable_breakpoints_in_shlibs (void)
7460 {
7461   struct bp_location *loc, **locp_tmp;
7462 
7463   ALL_BP_LOCATIONS (loc, locp_tmp)
7464   {
7465     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7466     struct breakpoint *b = loc->owner;
7467 
7468     /* We apply the check to all breakpoints, including disabled for
7469        those with loc->duplicate set.  This is so that when breakpoint
7470        becomes enabled, or the duplicate is removed, gdb will try to
7471        insert all breakpoints.  If we don't set shlib_disabled here,
7472        we'll try to insert those breakpoints and fail.  */
7473     if (((b->type == bp_breakpoint)
7474 	 || (b->type == bp_jit_event)
7475 	 || (b->type == bp_hardware_breakpoint)
7476 	 || (is_tracepoint (b)))
7477 	&& loc->pspace == current_program_space
7478 	&& !loc->shlib_disabled
7479 	&& solib_name_from_address (loc->pspace, loc->address)
7480 	)
7481       {
7482 	loc->shlib_disabled = 1;
7483       }
7484   }
7485 }
7486 
7487 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7488    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7489    disabled ones can just stay disabled.  */
7490 
7491 static void
7492 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7493 {
7494   struct bp_location *loc, **locp_tmp;
7495   int disabled_shlib_breaks = 0;
7496 
7497   ALL_BP_LOCATIONS (loc, locp_tmp)
7498   {
7499     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7500     struct breakpoint *b = loc->owner;
7501 
7502     if (solib->pspace == loc->pspace
7503 	&& !loc->shlib_disabled
7504 	&& (((b->type == bp_breakpoint
7505 	      || b->type == bp_jit_event
7506 	      || b->type == bp_hardware_breakpoint)
7507 	     && (loc->loc_type == bp_loc_hardware_breakpoint
7508 		 || loc->loc_type == bp_loc_software_breakpoint))
7509 	    || is_tracepoint (b))
7510 	&& solib_contains_address_p (solib, loc->address))
7511       {
7512 	loc->shlib_disabled = 1;
7513 	/* At this point, we cannot rely on remove_breakpoint
7514 	   succeeding so we must mark the breakpoint as not inserted
7515 	   to prevent future errors occurring in remove_breakpoints.  */
7516 	loc->inserted = 0;
7517 
7518 	/* This may cause duplicate notifications for the same breakpoint.  */
7519 	gdb::observers::breakpoint_modified.notify (b);
7520 
7521 	if (!disabled_shlib_breaks)
7522 	  {
7523 	    target_terminal::ours_for_output ();
7524 	    warning (_("Temporarily disabling breakpoints "
7525 		       "for unloaded shared library \"%s\""),
7526 		     solib->so_name);
7527 	  }
7528 	disabled_shlib_breaks = 1;
7529       }
7530   }
7531 }
7532 
7533 /* Disable any breakpoints and tracepoints in OBJFILE upon
7534    notification of free_objfile.  Only apply to enabled breakpoints,
7535    disabled ones can just stay disabled.  */
7536 
7537 static void
7538 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7539 {
7540   struct breakpoint *b;
7541 
7542   if (objfile == NULL)
7543     return;
7544 
7545   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7546      managed by the user with add-symbol-file/remove-symbol-file.
7547      Similarly to how breakpoints in shared libraries are handled in
7548      response to "nosharedlibrary", mark breakpoints in such modules
7549      shlib_disabled so they end up uninserted on the next global
7550      location list update.  Shared libraries not loaded by the user
7551      aren't handled here -- they're already handled in
7552      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7553      solib_unloaded observer.  We skip objfiles that are not
7554      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7555      main objfile).  */
7556   if ((objfile->flags & OBJF_SHARED) == 0
7557       || (objfile->flags & OBJF_USERLOADED) == 0)
7558     return;
7559 
7560   ALL_BREAKPOINTS (b)
7561     {
7562       struct bp_location *loc;
7563       int bp_modified = 0;
7564 
7565       if (!is_breakpoint (b) && !is_tracepoint (b))
7566 	continue;
7567 
7568       for (loc = b->loc; loc != NULL; loc = loc->next)
7569 	{
7570 	  CORE_ADDR loc_addr = loc->address;
7571 
7572 	  if (loc->loc_type != bp_loc_hardware_breakpoint
7573 	      && loc->loc_type != bp_loc_software_breakpoint)
7574 	    continue;
7575 
7576 	  if (loc->shlib_disabled != 0)
7577 	    continue;
7578 
7579 	  if (objfile->pspace != loc->pspace)
7580 	    continue;
7581 
7582 	  if (loc->loc_type != bp_loc_hardware_breakpoint
7583 	      && loc->loc_type != bp_loc_software_breakpoint)
7584 	    continue;
7585 
7586 	  if (is_addr_in_objfile (loc_addr, objfile))
7587 	    {
7588 	      loc->shlib_disabled = 1;
7589 	      /* At this point, we don't know whether the object was
7590 		 unmapped from the inferior or not, so leave the
7591 		 inserted flag alone.  We'll handle failure to
7592 		 uninsert quietly, in case the object was indeed
7593 		 unmapped.  */
7594 
7595 	      mark_breakpoint_location_modified (loc);
7596 
7597 	      bp_modified = 1;
7598 	    }
7599 	}
7600 
7601       if (bp_modified)
7602 	gdb::observers::breakpoint_modified.notify (b);
7603     }
7604 }
7605 
7606 /* FORK & VFORK catchpoints.  */
7607 
7608 /* An instance of this type is used to represent a fork or vfork
7609    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7610    to CATCH_FORK_BREAKPOINT_OPS.  */
7611 
7612 struct fork_catchpoint : public breakpoint
7613 {
7614   /* Process id of a child process whose forking triggered this
7615      catchpoint.  This field is only valid immediately after this
7616      catchpoint has triggered.  */
7617   ptid_t forked_inferior_pid;
7618 };
7619 
7620 /* Implement the "insert" breakpoint_ops method for fork
7621    catchpoints.  */
7622 
7623 static int
7624 insert_catch_fork (struct bp_location *bl)
7625 {
7626   return target_insert_fork_catchpoint (inferior_ptid.pid ());
7627 }
7628 
7629 /* Implement the "remove" breakpoint_ops method for fork
7630    catchpoints.  */
7631 
7632 static int
7633 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7634 {
7635   return target_remove_fork_catchpoint (inferior_ptid.pid ());
7636 }
7637 
7638 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7639    catchpoints.  */
7640 
7641 static int
7642 breakpoint_hit_catch_fork (const struct bp_location *bl,
7643 			   const address_space *aspace, CORE_ADDR bp_addr,
7644 			   const struct target_waitstatus *ws)
7645 {
7646   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7647 
7648   if (ws->kind != TARGET_WAITKIND_FORKED)
7649     return 0;
7650 
7651   c->forked_inferior_pid = ws->value.related_pid;
7652   return 1;
7653 }
7654 
7655 /* Implement the "print_it" breakpoint_ops method for fork
7656    catchpoints.  */
7657 
7658 static enum print_stop_action
7659 print_it_catch_fork (bpstat bs)
7660 {
7661   struct ui_out *uiout = current_uiout;
7662   struct breakpoint *b = bs->breakpoint_at;
7663   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7664 
7665   annotate_catchpoint (b->number);
7666   maybe_print_thread_hit_breakpoint (uiout);
7667   if (b->disposition == disp_del)
7668     uiout->text ("Temporary catchpoint ");
7669   else
7670     uiout->text ("Catchpoint ");
7671   if (uiout->is_mi_like_p ())
7672     {
7673       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7674       uiout->field_string ("disp", bpdisp_text (b->disposition));
7675     }
7676   uiout->field_signed ("bkptno", b->number);
7677   uiout->text (" (forked process ");
7678   uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
7679   uiout->text ("), ");
7680   return PRINT_SRC_AND_LOC;
7681 }
7682 
7683 /* Implement the "print_one" breakpoint_ops method for fork
7684    catchpoints.  */
7685 
7686 static void
7687 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7688 {
7689   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7690   struct value_print_options opts;
7691   struct ui_out *uiout = current_uiout;
7692 
7693   get_user_print_options (&opts);
7694 
7695   /* Field 4, the address, is omitted (which makes the columns not
7696      line up too nicely with the headers, but the effect is relatively
7697      readable).  */
7698   if (opts.addressprint)
7699     uiout->field_skip ("addr");
7700   annotate_field (5);
7701   uiout->text ("fork");
7702   if (c->forked_inferior_pid != null_ptid)
7703     {
7704       uiout->text (", process ");
7705       uiout->field_signed ("what", c->forked_inferior_pid.pid ());
7706       uiout->spaces (1);
7707     }
7708 
7709   if (uiout->is_mi_like_p ())
7710     uiout->field_string ("catch-type", "fork");
7711 }
7712 
7713 /* Implement the "print_mention" breakpoint_ops method for fork
7714    catchpoints.  */
7715 
7716 static void
7717 print_mention_catch_fork (struct breakpoint *b)
7718 {
7719   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7720 }
7721 
7722 /* Implement the "print_recreate" breakpoint_ops method for fork
7723    catchpoints.  */
7724 
7725 static void
7726 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7727 {
7728   fprintf_unfiltered (fp, "catch fork");
7729   print_recreate_thread (b, fp);
7730 }
7731 
7732 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7733 
7734 static struct breakpoint_ops catch_fork_breakpoint_ops;
7735 
7736 /* Implement the "insert" breakpoint_ops method for vfork
7737    catchpoints.  */
7738 
7739 static int
7740 insert_catch_vfork (struct bp_location *bl)
7741 {
7742   return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7743 }
7744 
7745 /* Implement the "remove" breakpoint_ops method for vfork
7746    catchpoints.  */
7747 
7748 static int
7749 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7750 {
7751   return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7752 }
7753 
7754 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7755    catchpoints.  */
7756 
7757 static int
7758 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7759 			    const address_space *aspace, CORE_ADDR bp_addr,
7760 			    const struct target_waitstatus *ws)
7761 {
7762   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7763 
7764   if (ws->kind != TARGET_WAITKIND_VFORKED)
7765     return 0;
7766 
7767   c->forked_inferior_pid = ws->value.related_pid;
7768   return 1;
7769 }
7770 
7771 /* Implement the "print_it" breakpoint_ops method for vfork
7772    catchpoints.  */
7773 
7774 static enum print_stop_action
7775 print_it_catch_vfork (bpstat bs)
7776 {
7777   struct ui_out *uiout = current_uiout;
7778   struct breakpoint *b = bs->breakpoint_at;
7779   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7780 
7781   annotate_catchpoint (b->number);
7782   maybe_print_thread_hit_breakpoint (uiout);
7783   if (b->disposition == disp_del)
7784     uiout->text ("Temporary catchpoint ");
7785   else
7786     uiout->text ("Catchpoint ");
7787   if (uiout->is_mi_like_p ())
7788     {
7789       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7790       uiout->field_string ("disp", bpdisp_text (b->disposition));
7791     }
7792   uiout->field_signed ("bkptno", b->number);
7793   uiout->text (" (vforked process ");
7794   uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
7795   uiout->text ("), ");
7796   return PRINT_SRC_AND_LOC;
7797 }
7798 
7799 /* Implement the "print_one" breakpoint_ops method for vfork
7800    catchpoints.  */
7801 
7802 static void
7803 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7804 {
7805   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7806   struct value_print_options opts;
7807   struct ui_out *uiout = current_uiout;
7808 
7809   get_user_print_options (&opts);
7810   /* Field 4, the address, is omitted (which makes the columns not
7811      line up too nicely with the headers, but the effect is relatively
7812      readable).  */
7813   if (opts.addressprint)
7814     uiout->field_skip ("addr");
7815   annotate_field (5);
7816   uiout->text ("vfork");
7817   if (c->forked_inferior_pid != null_ptid)
7818     {
7819       uiout->text (", process ");
7820       uiout->field_signed ("what", c->forked_inferior_pid.pid ());
7821       uiout->spaces (1);
7822     }
7823 
7824   if (uiout->is_mi_like_p ())
7825     uiout->field_string ("catch-type", "vfork");
7826 }
7827 
7828 /* Implement the "print_mention" breakpoint_ops method for vfork
7829    catchpoints.  */
7830 
7831 static void
7832 print_mention_catch_vfork (struct breakpoint *b)
7833 {
7834   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7835 }
7836 
7837 /* Implement the "print_recreate" breakpoint_ops method for vfork
7838    catchpoints.  */
7839 
7840 static void
7841 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7842 {
7843   fprintf_unfiltered (fp, "catch vfork");
7844   print_recreate_thread (b, fp);
7845 }
7846 
7847 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7848 
7849 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7850 
7851 /* An instance of this type is used to represent an solib catchpoint.
7852    A breakpoint is really of this type iff its ops pointer points to
7853    CATCH_SOLIB_BREAKPOINT_OPS.  */
7854 
7855 struct solib_catchpoint : public breakpoint
7856 {
7857   ~solib_catchpoint () override;
7858 
7859   /* True for "catch load", false for "catch unload".  */
7860   unsigned char is_load;
7861 
7862   /* Regular expression to match, if any.  COMPILED is only valid when
7863      REGEX is non-NULL.  */
7864   char *regex;
7865   std::unique_ptr<compiled_regex> compiled;
7866 };
7867 
7868 solib_catchpoint::~solib_catchpoint ()
7869 {
7870   xfree (this->regex);
7871 }
7872 
7873 static int
7874 insert_catch_solib (struct bp_location *ignore)
7875 {
7876   return 0;
7877 }
7878 
7879 static int
7880 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7881 {
7882   return 0;
7883 }
7884 
7885 static int
7886 breakpoint_hit_catch_solib (const struct bp_location *bl,
7887 			    const address_space *aspace,
7888 			    CORE_ADDR bp_addr,
7889 			    const struct target_waitstatus *ws)
7890 {
7891   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7892   struct breakpoint *other;
7893 
7894   if (ws->kind == TARGET_WAITKIND_LOADED)
7895     return 1;
7896 
7897   ALL_BREAKPOINTS (other)
7898   {
7899     struct bp_location *other_bl;
7900 
7901     if (other == bl->owner)
7902       continue;
7903 
7904     if (other->type != bp_shlib_event)
7905       continue;
7906 
7907     if (self->pspace != NULL && other->pspace != self->pspace)
7908       continue;
7909 
7910     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7911       {
7912 	if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7913 	  return 1;
7914       }
7915   }
7916 
7917   return 0;
7918 }
7919 
7920 static void
7921 check_status_catch_solib (struct bpstats *bs)
7922 {
7923   struct solib_catchpoint *self
7924     = (struct solib_catchpoint *) bs->breakpoint_at;
7925 
7926   if (self->is_load)
7927     {
7928       for (so_list *iter : current_program_space->added_solibs)
7929 	{
7930 	  if (!self->regex
7931 	      || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7932 	    return;
7933 	}
7934     }
7935   else
7936     {
7937       for (const std::string &iter : current_program_space->deleted_solibs)
7938 	{
7939 	  if (!self->regex
7940 	      || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7941 	    return;
7942 	}
7943     }
7944 
7945   bs->stop = 0;
7946   bs->print_it = print_it_noop;
7947 }
7948 
7949 static enum print_stop_action
7950 print_it_catch_solib (bpstat bs)
7951 {
7952   struct breakpoint *b = bs->breakpoint_at;
7953   struct ui_out *uiout = current_uiout;
7954 
7955   annotate_catchpoint (b->number);
7956   maybe_print_thread_hit_breakpoint (uiout);
7957   if (b->disposition == disp_del)
7958     uiout->text ("Temporary catchpoint ");
7959   else
7960     uiout->text ("Catchpoint ");
7961   uiout->field_signed ("bkptno", b->number);
7962   uiout->text ("\n");
7963   if (uiout->is_mi_like_p ())
7964     uiout->field_string ("disp", bpdisp_text (b->disposition));
7965   print_solib_event (1);
7966   return PRINT_SRC_AND_LOC;
7967 }
7968 
7969 static void
7970 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7971 {
7972   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7973   struct value_print_options opts;
7974   struct ui_out *uiout = current_uiout;
7975 
7976   get_user_print_options (&opts);
7977   /* Field 4, the address, is omitted (which makes the columns not
7978      line up too nicely with the headers, but the effect is relatively
7979      readable).  */
7980   if (opts.addressprint)
7981     {
7982       annotate_field (4);
7983       uiout->field_skip ("addr");
7984     }
7985 
7986   std::string msg;
7987   annotate_field (5);
7988   if (self->is_load)
7989     {
7990       if (self->regex)
7991 	msg = string_printf (_("load of library matching %s"), self->regex);
7992       else
7993 	msg = _("load of library");
7994     }
7995   else
7996     {
7997       if (self->regex)
7998 	msg = string_printf (_("unload of library matching %s"), self->regex);
7999       else
8000 	msg = _("unload of library");
8001     }
8002   uiout->field_string ("what", msg);
8003 
8004   if (uiout->is_mi_like_p ())
8005     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8006 }
8007 
8008 static void
8009 print_mention_catch_solib (struct breakpoint *b)
8010 {
8011   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8012 
8013   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8014 		   self->is_load ? "load" : "unload");
8015 }
8016 
8017 static void
8018 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8019 {
8020   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8021 
8022   fprintf_unfiltered (fp, "%s %s",
8023 		      b->disposition == disp_del ? "tcatch" : "catch",
8024 		      self->is_load ? "load" : "unload");
8025   if (self->regex)
8026     fprintf_unfiltered (fp, " %s", self->regex);
8027   fprintf_unfiltered (fp, "\n");
8028 }
8029 
8030 static struct breakpoint_ops catch_solib_breakpoint_ops;
8031 
8032 /* Shared helper function (MI and CLI) for creating and installing
8033    a shared object event catchpoint.  If IS_LOAD is non-zero then
8034    the events to be caught are load events, otherwise they are
8035    unload events.  If IS_TEMP is non-zero the catchpoint is a
8036    temporary one.  If ENABLED is non-zero the catchpoint is
8037    created in an enabled state.  */
8038 
8039 void
8040 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8041 {
8042   struct gdbarch *gdbarch = get_current_arch ();
8043 
8044   if (!arg)
8045     arg = "";
8046   arg = skip_spaces (arg);
8047 
8048   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8049 
8050   if (*arg != '\0')
8051     {
8052       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8053 					     _("Invalid regexp")));
8054       c->regex = xstrdup (arg);
8055     }
8056 
8057   c->is_load = is_load;
8058   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8059 		   &catch_solib_breakpoint_ops);
8060 
8061   c->enable_state = enabled ? bp_enabled : bp_disabled;
8062 
8063   install_breakpoint (0, std::move (c), 1);
8064 }
8065 
8066 /* A helper function that does all the work for "catch load" and
8067    "catch unload".  */
8068 
8069 static void
8070 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8071 		      struct cmd_list_element *command)
8072 {
8073   int tempflag;
8074   const int enabled = 1;
8075 
8076   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8077 
8078   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8079 }
8080 
8081 static void
8082 catch_load_command_1 (const char *arg, int from_tty,
8083 		      struct cmd_list_element *command)
8084 {
8085   catch_load_or_unload (arg, from_tty, 1, command);
8086 }
8087 
8088 static void
8089 catch_unload_command_1 (const char *arg, int from_tty,
8090 			struct cmd_list_element *command)
8091 {
8092   catch_load_or_unload (arg, from_tty, 0, command);
8093 }
8094 
8095 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8096    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8097    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8098    the breakpoint_ops structure associated to the catchpoint.  */
8099 
8100 void
8101 init_catchpoint (struct breakpoint *b,
8102 		 struct gdbarch *gdbarch, int tempflag,
8103 		 const char *cond_string,
8104 		 const struct breakpoint_ops *ops)
8105 {
8106   symtab_and_line sal;
8107   sal.pspace = current_program_space;
8108 
8109   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8110 
8111   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8112   b->disposition = tempflag ? disp_del : disp_donttouch;
8113 }
8114 
8115 void
8116 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8117 {
8118   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8119   set_breakpoint_number (internal, b);
8120   if (is_tracepoint (b))
8121     set_tracepoint_count (breakpoint_count);
8122   if (!internal)
8123     mention (b);
8124   gdb::observers::breakpoint_created.notify (b);
8125 
8126   if (update_gll)
8127     update_global_location_list (UGLL_MAY_INSERT);
8128 }
8129 
8130 static void
8131 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8132 				    int tempflag, const char *cond_string,
8133                                     const struct breakpoint_ops *ops)
8134 {
8135   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8136 
8137   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8138 
8139   c->forked_inferior_pid = null_ptid;
8140 
8141   install_breakpoint (0, std::move (c), 1);
8142 }
8143 
8144 /* Exec catchpoints.  */
8145 
8146 /* An instance of this type is used to represent an exec catchpoint.
8147    A breakpoint is really of this type iff its ops pointer points to
8148    CATCH_EXEC_BREAKPOINT_OPS.  */
8149 
8150 struct exec_catchpoint : public breakpoint
8151 {
8152   ~exec_catchpoint () override;
8153 
8154   /* Filename of a program whose exec triggered this catchpoint.
8155      This field is only valid immediately after this catchpoint has
8156      triggered.  */
8157   char *exec_pathname;
8158 };
8159 
8160 /* Exec catchpoint destructor.  */
8161 
8162 exec_catchpoint::~exec_catchpoint ()
8163 {
8164   xfree (this->exec_pathname);
8165 }
8166 
8167 static int
8168 insert_catch_exec (struct bp_location *bl)
8169 {
8170   return target_insert_exec_catchpoint (inferior_ptid.pid ());
8171 }
8172 
8173 static int
8174 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8175 {
8176   return target_remove_exec_catchpoint (inferior_ptid.pid ());
8177 }
8178 
8179 static int
8180 breakpoint_hit_catch_exec (const struct bp_location *bl,
8181 			   const address_space *aspace, CORE_ADDR bp_addr,
8182 			   const struct target_waitstatus *ws)
8183 {
8184   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8185 
8186   if (ws->kind != TARGET_WAITKIND_EXECD)
8187     return 0;
8188 
8189   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8190   return 1;
8191 }
8192 
8193 static enum print_stop_action
8194 print_it_catch_exec (bpstat bs)
8195 {
8196   struct ui_out *uiout = current_uiout;
8197   struct breakpoint *b = bs->breakpoint_at;
8198   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8199 
8200   annotate_catchpoint (b->number);
8201   maybe_print_thread_hit_breakpoint (uiout);
8202   if (b->disposition == disp_del)
8203     uiout->text ("Temporary catchpoint ");
8204   else
8205     uiout->text ("Catchpoint ");
8206   if (uiout->is_mi_like_p ())
8207     {
8208       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8209       uiout->field_string ("disp", bpdisp_text (b->disposition));
8210     }
8211   uiout->field_signed ("bkptno", b->number);
8212   uiout->text (" (exec'd ");
8213   uiout->field_string ("new-exec", c->exec_pathname);
8214   uiout->text ("), ");
8215 
8216   return PRINT_SRC_AND_LOC;
8217 }
8218 
8219 static void
8220 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8221 {
8222   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8223   struct value_print_options opts;
8224   struct ui_out *uiout = current_uiout;
8225 
8226   get_user_print_options (&opts);
8227 
8228   /* Field 4, the address, is omitted (which makes the columns
8229      not line up too nicely with the headers, but the effect
8230      is relatively readable).  */
8231   if (opts.addressprint)
8232     uiout->field_skip ("addr");
8233   annotate_field (5);
8234   uiout->text ("exec");
8235   if (c->exec_pathname != NULL)
8236     {
8237       uiout->text (", program \"");
8238       uiout->field_string ("what", c->exec_pathname);
8239       uiout->text ("\" ");
8240     }
8241 
8242   if (uiout->is_mi_like_p ())
8243     uiout->field_string ("catch-type", "exec");
8244 }
8245 
8246 static void
8247 print_mention_catch_exec (struct breakpoint *b)
8248 {
8249   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8250 }
8251 
8252 /* Implement the "print_recreate" breakpoint_ops method for exec
8253    catchpoints.  */
8254 
8255 static void
8256 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8257 {
8258   fprintf_unfiltered (fp, "catch exec");
8259   print_recreate_thread (b, fp);
8260 }
8261 
8262 static struct breakpoint_ops catch_exec_breakpoint_ops;
8263 
8264 static int
8265 hw_breakpoint_used_count (void)
8266 {
8267   int i = 0;
8268   struct breakpoint *b;
8269   struct bp_location *bl;
8270 
8271   ALL_BREAKPOINTS (b)
8272   {
8273     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8274       for (bl = b->loc; bl; bl = bl->next)
8275 	{
8276 	  /* Special types of hardware breakpoints may use more than
8277 	     one register.  */
8278 	  i += b->ops->resources_needed (bl);
8279 	}
8280   }
8281 
8282   return i;
8283 }
8284 
8285 /* Returns the resources B would use if it were a hardware
8286    watchpoint.  */
8287 
8288 static int
8289 hw_watchpoint_use_count (struct breakpoint *b)
8290 {
8291   int i = 0;
8292   struct bp_location *bl;
8293 
8294   if (!breakpoint_enabled (b))
8295     return 0;
8296 
8297   for (bl = b->loc; bl; bl = bl->next)
8298     {
8299       /* Special types of hardware watchpoints may use more than
8300 	 one register.  */
8301       i += b->ops->resources_needed (bl);
8302     }
8303 
8304   return i;
8305 }
8306 
8307 /* Returns the sum the used resources of all hardware watchpoints of
8308    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8309    the sum of the used resources of all hardware watchpoints of other
8310    types _not_ TYPE.  */
8311 
8312 static int
8313 hw_watchpoint_used_count_others (struct breakpoint *except,
8314 				 enum bptype type, int *other_type_used)
8315 {
8316   int i = 0;
8317   struct breakpoint *b;
8318 
8319   *other_type_used = 0;
8320   ALL_BREAKPOINTS (b)
8321     {
8322       if (b == except)
8323 	continue;
8324       if (!breakpoint_enabled (b))
8325 	continue;
8326 
8327       if (b->type == type)
8328 	i += hw_watchpoint_use_count (b);
8329       else if (is_hardware_watchpoint (b))
8330 	*other_type_used = 1;
8331     }
8332 
8333   return i;
8334 }
8335 
8336 void
8337 disable_watchpoints_before_interactive_call_start (void)
8338 {
8339   struct breakpoint *b;
8340 
8341   ALL_BREAKPOINTS (b)
8342   {
8343     if (is_watchpoint (b) && breakpoint_enabled (b))
8344       {
8345 	b->enable_state = bp_call_disabled;
8346 	update_global_location_list (UGLL_DONT_INSERT);
8347       }
8348   }
8349 }
8350 
8351 void
8352 enable_watchpoints_after_interactive_call_stop (void)
8353 {
8354   struct breakpoint *b;
8355 
8356   ALL_BREAKPOINTS (b)
8357   {
8358     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8359       {
8360 	b->enable_state = bp_enabled;
8361 	update_global_location_list (UGLL_MAY_INSERT);
8362       }
8363   }
8364 }
8365 
8366 void
8367 disable_breakpoints_before_startup (void)
8368 {
8369   current_program_space->executing_startup = 1;
8370   update_global_location_list (UGLL_DONT_INSERT);
8371 }
8372 
8373 void
8374 enable_breakpoints_after_startup (void)
8375 {
8376   current_program_space->executing_startup = 0;
8377   breakpoint_re_set ();
8378 }
8379 
8380 /* Create a new single-step breakpoint for thread THREAD, with no
8381    locations.  */
8382 
8383 static struct breakpoint *
8384 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8385 {
8386   std::unique_ptr<breakpoint> b (new breakpoint ());
8387 
8388   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8389 					&momentary_breakpoint_ops);
8390 
8391   b->disposition = disp_donttouch;
8392   b->frame_id = null_frame_id;
8393 
8394   b->thread = thread;
8395   gdb_assert (b->thread != 0);
8396 
8397   return add_to_breakpoint_chain (std::move (b));
8398 }
8399 
8400 /* Set a momentary breakpoint of type TYPE at address specified by
8401    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8402    frame.  */
8403 
8404 breakpoint_up
8405 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8406 			  struct frame_id frame_id, enum bptype type)
8407 {
8408   struct breakpoint *b;
8409 
8410   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8411      tail-called one.  */
8412   gdb_assert (!frame_id_artificial_p (frame_id));
8413 
8414   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8415   b->enable_state = bp_enabled;
8416   b->disposition = disp_donttouch;
8417   b->frame_id = frame_id;
8418 
8419   b->thread = inferior_thread ()->global_num;
8420 
8421   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8422 
8423   return breakpoint_up (b);
8424 }
8425 
8426 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8427    The new breakpoint will have type TYPE, use OPS as its
8428    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8429 
8430 static struct breakpoint *
8431 momentary_breakpoint_from_master (struct breakpoint *orig,
8432 				  enum bptype type,
8433 				  const struct breakpoint_ops *ops,
8434 				  int loc_enabled)
8435 {
8436   struct breakpoint *copy;
8437 
8438   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8439   copy->loc = allocate_bp_location (copy);
8440   set_breakpoint_location_function (copy->loc);
8441 
8442   copy->loc->gdbarch = orig->loc->gdbarch;
8443   copy->loc->requested_address = orig->loc->requested_address;
8444   copy->loc->address = orig->loc->address;
8445   copy->loc->section = orig->loc->section;
8446   copy->loc->pspace = orig->loc->pspace;
8447   copy->loc->probe = orig->loc->probe;
8448   copy->loc->line_number = orig->loc->line_number;
8449   copy->loc->symtab = orig->loc->symtab;
8450   copy->loc->enabled = loc_enabled;
8451   copy->frame_id = orig->frame_id;
8452   copy->thread = orig->thread;
8453   copy->pspace = orig->pspace;
8454 
8455   copy->enable_state = bp_enabled;
8456   copy->disposition = disp_donttouch;
8457   copy->number = internal_breakpoint_number--;
8458 
8459   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8460   return copy;
8461 }
8462 
8463 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8464    ORIG is NULL.  */
8465 
8466 struct breakpoint *
8467 clone_momentary_breakpoint (struct breakpoint *orig)
8468 {
8469   /* If there's nothing to clone, then return nothing.  */
8470   if (orig == NULL)
8471     return NULL;
8472 
8473   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8474 }
8475 
8476 breakpoint_up
8477 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8478 				enum bptype type)
8479 {
8480   struct symtab_and_line sal;
8481 
8482   sal = find_pc_line (pc, 0);
8483   sal.pc = pc;
8484   sal.section = find_pc_overlay (pc);
8485   sal.explicit_pc = 1;
8486 
8487   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8488 }
8489 
8490 
8491 /* Tell the user we have just set a breakpoint B.  */
8492 
8493 static void
8494 mention (struct breakpoint *b)
8495 {
8496   b->ops->print_mention (b);
8497   current_uiout->text ("\n");
8498 }
8499 
8500 
8501 static bool bp_loc_is_permanent (struct bp_location *loc);
8502 
8503 /* Handle "set breakpoint auto-hw on".
8504 
8505    If the explicitly specified breakpoint type is not hardware
8506    breakpoint, check the memory map to see whether the breakpoint
8507    address is in read-only memory.
8508 
8509    - location type is not hardware breakpoint, memory is read-only.
8510    We change the type of the location to hardware breakpoint.
8511 
8512    - location type is hardware breakpoint, memory is read-write.  This
8513    means we've previously made the location hardware one, but then the
8514    memory map changed, so we undo.
8515 */
8516 
8517 static void
8518 handle_automatic_hardware_breakpoints (bp_location *bl)
8519 {
8520   if (automatic_hardware_breakpoints
8521       && bl->owner->type != bp_hardware_breakpoint
8522       && (bl->loc_type == bp_loc_software_breakpoint
8523 	  || bl->loc_type == bp_loc_hardware_breakpoint))
8524     {
8525       /* When breakpoints are removed, remove_breakpoints will use
8526 	 location types we've just set here, the only possible problem
8527 	 is that memory map has changed during running program, but
8528 	 it's not going to work anyway with current gdb.  */
8529       mem_region *mr = lookup_mem_region (bl->address);
8530 
8531       if (mr != nullptr)
8532 	{
8533 	  enum bp_loc_type new_type;
8534 
8535 	  if (mr->attrib.mode != MEM_RW)
8536 	    new_type = bp_loc_hardware_breakpoint;
8537 	  else
8538 	    new_type = bp_loc_software_breakpoint;
8539 
8540 	  if (new_type != bl->loc_type)
8541 	    {
8542 	      static bool said = false;
8543 
8544 	      bl->loc_type = new_type;
8545 	      if (!said)
8546 		{
8547 		  fprintf_filtered (gdb_stdout,
8548 				    _("Note: automatically using "
8549 				      "hardware breakpoints for "
8550 				      "read-only addresses.\n"));
8551 		  said = true;
8552 		}
8553 	    }
8554 	}
8555     }
8556 }
8557 
8558 static struct bp_location *
8559 add_location_to_breakpoint (struct breakpoint *b,
8560 			    const struct symtab_and_line *sal)
8561 {
8562   struct bp_location *loc, **tmp;
8563   CORE_ADDR adjusted_address;
8564   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8565 
8566   if (loc_gdbarch == NULL)
8567     loc_gdbarch = b->gdbarch;
8568 
8569   /* Adjust the breakpoint's address prior to allocating a location.
8570      Once we call allocate_bp_location(), that mostly uninitialized
8571      location will be placed on the location chain.  Adjustment of the
8572      breakpoint may cause target_read_memory() to be called and we do
8573      not want its scan of the location chain to find a breakpoint and
8574      location that's only been partially initialized.  */
8575   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8576 						sal->pc, b->type);
8577 
8578   /* Sort the locations by their ADDRESS.  */
8579   loc = allocate_bp_location (b);
8580   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8581        tmp = &((*tmp)->next))
8582     ;
8583   loc->next = *tmp;
8584   *tmp = loc;
8585 
8586   loc->requested_address = sal->pc;
8587   loc->address = adjusted_address;
8588   loc->pspace = sal->pspace;
8589   loc->probe.prob = sal->prob;
8590   loc->probe.objfile = sal->objfile;
8591   gdb_assert (loc->pspace != NULL);
8592   loc->section = sal->section;
8593   loc->gdbarch = loc_gdbarch;
8594   loc->line_number = sal->line;
8595   loc->symtab = sal->symtab;
8596   loc->symbol = sal->symbol;
8597   loc->msymbol = sal->msymbol;
8598   loc->objfile = sal->objfile;
8599 
8600   set_breakpoint_location_function (loc);
8601 
8602   /* While by definition, permanent breakpoints are already present in the
8603      code, we don't mark the location as inserted.  Normally one would expect
8604      that GDB could rely on that breakpoint instruction to stop the program,
8605      thus removing the need to insert its own breakpoint, except that executing
8606      the breakpoint instruction can kill the target instead of reporting a
8607      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8608      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8609      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8610      breakpoint be inserted normally results in QEMU knowing about the GDB
8611      breakpoint, and thus trap before the breakpoint instruction is executed.
8612      (If GDB later needs to continue execution past the permanent breakpoint,
8613      it manually increments the PC, thus avoiding executing the breakpoint
8614      instruction.)  */
8615   if (bp_loc_is_permanent (loc))
8616     loc->permanent = 1;
8617 
8618   return loc;
8619 }
8620 
8621 
8622 /* Return true if LOC is pointing to a permanent breakpoint,
8623    return false otherwise.  */
8624 
8625 static bool
8626 bp_loc_is_permanent (struct bp_location *loc)
8627 {
8628   gdb_assert (loc != NULL);
8629 
8630   /* If we have a non-breakpoint-backed catchpoint or a software
8631      watchpoint, just return 0.  We should not attempt to read from
8632      the addresses the locations of these breakpoint types point to.
8633      gdbarch_program_breakpoint_here_p, below, will attempt to read
8634      memory.  */
8635   if (!bl_address_is_meaningful (loc))
8636     return false;
8637 
8638   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8639   switch_to_program_space_and_thread (loc->pspace);
8640   return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
8641 }
8642 
8643 /* Build a command list for the dprintf corresponding to the current
8644    settings of the dprintf style options.  */
8645 
8646 static void
8647 update_dprintf_command_list (struct breakpoint *b)
8648 {
8649   char *dprintf_args = b->extra_string;
8650   char *printf_line = NULL;
8651 
8652   if (!dprintf_args)
8653     return;
8654 
8655   dprintf_args = skip_spaces (dprintf_args);
8656 
8657   /* Allow a comma, as it may have terminated a location, but don't
8658      insist on it.  */
8659   if (*dprintf_args == ',')
8660     ++dprintf_args;
8661   dprintf_args = skip_spaces (dprintf_args);
8662 
8663   if (*dprintf_args != '"')
8664     error (_("Bad format string, missing '\"'."));
8665 
8666   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8667     printf_line = xstrprintf ("printf %s", dprintf_args);
8668   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8669     {
8670       if (!dprintf_function)
8671 	error (_("No function supplied for dprintf call"));
8672 
8673       if (dprintf_channel && strlen (dprintf_channel) > 0)
8674 	printf_line = xstrprintf ("call (void) %s (%s,%s)",
8675 				  dprintf_function,
8676 				  dprintf_channel,
8677 				  dprintf_args);
8678       else
8679 	printf_line = xstrprintf ("call (void) %s (%s)",
8680 				  dprintf_function,
8681 				  dprintf_args);
8682     }
8683   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8684     {
8685       if (target_can_run_breakpoint_commands ())
8686 	printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8687       else
8688 	{
8689 	  warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8690 	  printf_line = xstrprintf ("printf %s", dprintf_args);
8691 	}
8692     }
8693   else
8694     internal_error (__FILE__, __LINE__,
8695 		    _("Invalid dprintf style."));
8696 
8697   gdb_assert (printf_line != NULL);
8698 
8699   /* Manufacture a printf sequence.  */
8700   struct command_line *printf_cmd_line
8701     = new struct command_line (simple_control, printf_line);
8702   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8703 						    command_lines_deleter ()));
8704 }
8705 
8706 /* Update all dprintf commands, making their command lists reflect
8707    current style settings.  */
8708 
8709 static void
8710 update_dprintf_commands (const char *args, int from_tty,
8711 			 struct cmd_list_element *c)
8712 {
8713   struct breakpoint *b;
8714 
8715   ALL_BREAKPOINTS (b)
8716     {
8717       if (b->type == bp_dprintf)
8718 	update_dprintf_command_list (b);
8719     }
8720 }
8721 
8722 /* Create a breakpoint with SAL as location.  Use LOCATION
8723    as a description of the location, and COND_STRING
8724    as condition expression.  If LOCATION is NULL then create an
8725    "address location" from the address in the SAL.  */
8726 
8727 static void
8728 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8729 		     gdb::array_view<const symtab_and_line> sals,
8730 		     event_location_up &&location,
8731 		     gdb::unique_xmalloc_ptr<char> filter,
8732 		     gdb::unique_xmalloc_ptr<char> cond_string,
8733 		     gdb::unique_xmalloc_ptr<char> extra_string,
8734 		     enum bptype type, enum bpdisp disposition,
8735 		     int thread, int task, int ignore_count,
8736 		     const struct breakpoint_ops *ops, int from_tty,
8737 		     int enabled, int internal, unsigned flags,
8738 		     int display_canonical)
8739 {
8740   int i;
8741 
8742   if (type == bp_hardware_breakpoint)
8743     {
8744       int target_resources_ok;
8745 
8746       i = hw_breakpoint_used_count ();
8747       target_resources_ok =
8748 	target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8749 					    i + 1, 0);
8750       if (target_resources_ok == 0)
8751 	error (_("No hardware breakpoint support in the target."));
8752       else if (target_resources_ok < 0)
8753 	error (_("Hardware breakpoints used exceeds limit."));
8754     }
8755 
8756   gdb_assert (!sals.empty ());
8757 
8758   for (const auto &sal : sals)
8759     {
8760       struct bp_location *loc;
8761 
8762       if (from_tty)
8763 	{
8764 	  struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8765 	  if (!loc_gdbarch)
8766 	    loc_gdbarch = gdbarch;
8767 
8768 	  describe_other_breakpoints (loc_gdbarch,
8769 				      sal.pspace, sal.pc, sal.section, thread);
8770 	}
8771 
8772       if (&sal == &sals[0])
8773 	{
8774 	  init_raw_breakpoint (b, gdbarch, sal, type, ops);
8775 	  b->thread = thread;
8776 	  b->task = task;
8777 
8778 	  b->cond_string = cond_string.release ();
8779 	  b->extra_string = extra_string.release ();
8780 	  b->ignore_count = ignore_count;
8781 	  b->enable_state = enabled ? bp_enabled : bp_disabled;
8782 	  b->disposition = disposition;
8783 
8784 	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8785 	    b->loc->inserted = 1;
8786 
8787 	  if (type == bp_static_tracepoint)
8788 	    {
8789 	      struct tracepoint *t = (struct tracepoint *) b;
8790 	      struct static_tracepoint_marker marker;
8791 
8792 	      if (strace_marker_p (b))
8793 		{
8794 		  /* We already know the marker exists, otherwise, we
8795 		     wouldn't see a sal for it.  */
8796 		  const char *p
8797 		    = &event_location_to_string (b->location.get ())[3];
8798 		  const char *endp;
8799 
8800 		  p = skip_spaces (p);
8801 
8802 		  endp = skip_to_space (p);
8803 
8804 		  t->static_trace_marker_id.assign (p, endp - p);
8805 
8806 		  printf_filtered (_("Probed static tracepoint "
8807 				     "marker \"%s\"\n"),
8808 				   t->static_trace_marker_id.c_str ());
8809 		}
8810 	      else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8811 		{
8812 		  t->static_trace_marker_id = std::move (marker.str_id);
8813 
8814 		  printf_filtered (_("Probed static tracepoint "
8815 				     "marker \"%s\"\n"),
8816 				   t->static_trace_marker_id.c_str ());
8817 		}
8818 	      else
8819 		warning (_("Couldn't determine the static "
8820 			   "tracepoint marker to probe"));
8821 	    }
8822 
8823 	  loc = b->loc;
8824 	}
8825       else
8826 	{
8827 	  loc = add_location_to_breakpoint (b, &sal);
8828 	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8829 	    loc->inserted = 1;
8830 	}
8831 
8832       if (b->cond_string)
8833 	{
8834 	  const char *arg = b->cond_string;
8835 
8836 	  loc->cond = parse_exp_1 (&arg, loc->address,
8837 				   block_for_pc (loc->address), 0);
8838 	  if (*arg)
8839               error (_("Garbage '%s' follows condition"), arg);
8840 	}
8841 
8842       /* Dynamic printf requires and uses additional arguments on the
8843 	 command line, otherwise it's an error.  */
8844       if (type == bp_dprintf)
8845 	{
8846 	  if (b->extra_string)
8847 	    update_dprintf_command_list (b);
8848 	  else
8849 	    error (_("Format string required"));
8850 	}
8851       else if (b->extra_string)
8852 	error (_("Garbage '%s' at end of command"), b->extra_string);
8853     }
8854 
8855   b->display_canonical = display_canonical;
8856   if (location != NULL)
8857     b->location = std::move (location);
8858   else
8859     b->location = new_address_location (b->loc->address, NULL, 0);
8860   b->filter = std::move (filter);
8861 }
8862 
8863 static void
8864 create_breakpoint_sal (struct gdbarch *gdbarch,
8865 		       gdb::array_view<const symtab_and_line> sals,
8866 		       event_location_up &&location,
8867 		       gdb::unique_xmalloc_ptr<char> filter,
8868 		       gdb::unique_xmalloc_ptr<char> cond_string,
8869 		       gdb::unique_xmalloc_ptr<char> extra_string,
8870 		       enum bptype type, enum bpdisp disposition,
8871 		       int thread, int task, int ignore_count,
8872 		       const struct breakpoint_ops *ops, int from_tty,
8873 		       int enabled, int internal, unsigned flags,
8874 		       int display_canonical)
8875 {
8876   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8877 
8878   init_breakpoint_sal (b.get (), gdbarch,
8879 		       sals, std::move (location),
8880 		       std::move (filter),
8881 		       std::move (cond_string),
8882 		       std::move (extra_string),
8883 		       type, disposition,
8884 		       thread, task, ignore_count,
8885 		       ops, from_tty,
8886 		       enabled, internal, flags,
8887 		       display_canonical);
8888 
8889   install_breakpoint (internal, std::move (b), 0);
8890 }
8891 
8892 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8893    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8894    value.  COND_STRING, if not NULL, specified the condition to be
8895    used for all breakpoints.  Essentially the only case where
8896    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8897    function.  In that case, it's still not possible to specify
8898    separate conditions for different overloaded functions, so
8899    we take just a single condition string.
8900 
8901    NOTE: If the function succeeds, the caller is expected to cleanup
8902    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8903    array contents).  If the function fails (error() is called), the
8904    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8905    COND and SALS arrays and each of those arrays contents.  */
8906 
8907 static void
8908 create_breakpoints_sal (struct gdbarch *gdbarch,
8909 			struct linespec_result *canonical,
8910 			gdb::unique_xmalloc_ptr<char> cond_string,
8911 			gdb::unique_xmalloc_ptr<char> extra_string,
8912 			enum bptype type, enum bpdisp disposition,
8913 			int thread, int task, int ignore_count,
8914 			const struct breakpoint_ops *ops, int from_tty,
8915 			int enabled, int internal, unsigned flags)
8916 {
8917   if (canonical->pre_expanded)
8918     gdb_assert (canonical->lsals.size () == 1);
8919 
8920   for (const auto &lsal : canonical->lsals)
8921     {
8922       /* Note that 'location' can be NULL in the case of a plain
8923 	 'break', without arguments.  */
8924       event_location_up location
8925 	= (canonical->location != NULL
8926 	   ? copy_event_location (canonical->location.get ()) : NULL);
8927       gdb::unique_xmalloc_ptr<char> filter_string
8928 	(lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8929 
8930       create_breakpoint_sal (gdbarch, lsal.sals,
8931 			     std::move (location),
8932 			     std::move (filter_string),
8933 			     std::move (cond_string),
8934 			     std::move (extra_string),
8935 			     type, disposition,
8936 			     thread, task, ignore_count, ops,
8937 			     from_tty, enabled, internal, flags,
8938 			     canonical->special_display);
8939     }
8940 }
8941 
8942 /* Parse LOCATION which is assumed to be a SAL specification possibly
8943    followed by conditionals.  On return, SALS contains an array of SAL
8944    addresses found.  LOCATION points to the end of the SAL (for
8945    linespec locations).
8946 
8947    The array and the line spec strings are allocated on the heap, it is
8948    the caller's responsibility to free them.  */
8949 
8950 static void
8951 parse_breakpoint_sals (struct event_location *location,
8952 		       struct linespec_result *canonical)
8953 {
8954   struct symtab_and_line cursal;
8955 
8956   if (event_location_type (location) == LINESPEC_LOCATION)
8957     {
8958       const char *spec = get_linespec_location (location)->spec_string;
8959 
8960       if (spec == NULL)
8961 	{
8962 	  /* The last displayed codepoint, if it's valid, is our default
8963 	     breakpoint address.  */
8964 	  if (last_displayed_sal_is_valid ())
8965 	    {
8966 	      /* Set sal's pspace, pc, symtab, and line to the values
8967 		 corresponding to the last call to print_frame_info.
8968 		 Be sure to reinitialize LINE with NOTCURRENT == 0
8969 		 as the breakpoint line number is inappropriate otherwise.
8970 		 find_pc_line would adjust PC, re-set it back.  */
8971 	      symtab_and_line sal = get_last_displayed_sal ();
8972 	      CORE_ADDR pc = sal.pc;
8973 
8974 	      sal = find_pc_line (pc, 0);
8975 
8976 	      /* "break" without arguments is equivalent to "break *PC"
8977 		 where PC is the last displayed codepoint's address.  So
8978 		 make sure to set sal.explicit_pc to prevent GDB from
8979 		 trying to expand the list of sals to include all other
8980 		 instances with the same symtab and line.  */
8981 	      sal.pc = pc;
8982 	      sal.explicit_pc = 1;
8983 
8984 	      struct linespec_sals lsal;
8985 	      lsal.sals = {sal};
8986 	      lsal.canonical = NULL;
8987 
8988 	      canonical->lsals.push_back (std::move (lsal));
8989 	      return;
8990 	    }
8991 	  else
8992 	    error (_("No default breakpoint address now."));
8993 	}
8994     }
8995 
8996   /* Force almost all breakpoints to be in terms of the
8997      current_source_symtab (which is decode_line_1's default).
8998      This should produce the results we want almost all of the
8999      time while leaving default_breakpoint_* alone.
9000 
9001      ObjC: However, don't match an Objective-C method name which
9002      may have a '+' or '-' succeeded by a '['.  */
9003   cursal = get_current_source_symtab_and_line ();
9004   if (last_displayed_sal_is_valid ())
9005     {
9006       const char *spec = NULL;
9007 
9008       if (event_location_type (location) == LINESPEC_LOCATION)
9009 	spec = get_linespec_location (location)->spec_string;
9010 
9011       if (!cursal.symtab
9012 	  || (spec != NULL
9013 	      && strchr ("+-", spec[0]) != NULL
9014 	      && spec[1] != '['))
9015 	{
9016 	  decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9017 			    get_last_displayed_symtab (),
9018 			    get_last_displayed_line (),
9019 			    canonical, NULL, NULL);
9020 	  return;
9021 	}
9022     }
9023 
9024   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9025 		    cursal.symtab, cursal.line, canonical, NULL, NULL);
9026 }
9027 
9028 
9029 /* Convert each SAL into a real PC.  Verify that the PC can be
9030    inserted as a breakpoint.  If it can't throw an error.  */
9031 
9032 static void
9033 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9034 {
9035   for (auto &sal : sals)
9036     resolve_sal_pc (&sal);
9037 }
9038 
9039 /* Fast tracepoints may have restrictions on valid locations.  For
9040    instance, a fast tracepoint using a jump instead of a trap will
9041    likely have to overwrite more bytes than a trap would, and so can
9042    only be placed where the instruction is longer than the jump, or a
9043    multi-instruction sequence does not have a jump into the middle of
9044    it, etc.  */
9045 
9046 static void
9047 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9048 			    gdb::array_view<const symtab_and_line> sals)
9049 {
9050   for (const auto &sal : sals)
9051     {
9052       struct gdbarch *sarch;
9053 
9054       sarch = get_sal_arch (sal);
9055       /* We fall back to GDBARCH if there is no architecture
9056 	 associated with SAL.  */
9057       if (sarch == NULL)
9058 	sarch = gdbarch;
9059       std::string msg;
9060       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9061 	error (_("May not have a fast tracepoint at %s%s"),
9062 	       paddress (sarch, sal.pc), msg.c_str ());
9063     }
9064 }
9065 
9066 /* Given TOK, a string specification of condition and thread, as
9067    accepted by the 'break' command, extract the condition
9068    string and thread number and set *COND_STRING and *THREAD.
9069    PC identifies the context at which the condition should be parsed.
9070    If no condition is found, *COND_STRING is set to NULL.
9071    If no thread is found, *THREAD is set to -1.  */
9072 
9073 static void
9074 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9075 			   char **cond_string, int *thread, int *task,
9076 			   char **rest)
9077 {
9078   *cond_string = NULL;
9079   *thread = -1;
9080   *task = 0;
9081   *rest = NULL;
9082 
9083   while (tok && *tok)
9084     {
9085       const char *end_tok;
9086       int toklen;
9087       const char *cond_start = NULL;
9088       const char *cond_end = NULL;
9089 
9090       tok = skip_spaces (tok);
9091 
9092       if ((*tok == '"' || *tok == ',') && rest)
9093 	{
9094 	  *rest = savestring (tok, strlen (tok));
9095 	  return;
9096 	}
9097 
9098       end_tok = skip_to_space (tok);
9099 
9100       toklen = end_tok - tok;
9101 
9102       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9103 	{
9104 	  tok = cond_start = end_tok + 1;
9105 	  parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9106 	  cond_end = tok;
9107 	  *cond_string = savestring (cond_start, cond_end - cond_start);
9108 	}
9109       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9110 	{
9111 	  const char *tmptok;
9112 	  struct thread_info *thr;
9113 
9114 	  tok = end_tok + 1;
9115 	  thr = parse_thread_id (tok, &tmptok);
9116 	  if (tok == tmptok)
9117 	    error (_("Junk after thread keyword."));
9118 	  *thread = thr->global_num;
9119 	  tok = tmptok;
9120 	}
9121       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9122 	{
9123 	  char *tmptok;
9124 
9125 	  tok = end_tok + 1;
9126 	  *task = strtol (tok, &tmptok, 0);
9127 	  if (tok == tmptok)
9128 	    error (_("Junk after task keyword."));
9129 	  if (!valid_task_id (*task))
9130 	    error (_("Unknown task %d."), *task);
9131 	  tok = tmptok;
9132 	}
9133       else if (rest)
9134 	{
9135 	  *rest = savestring (tok, strlen (tok));
9136 	  return;
9137 	}
9138       else
9139 	error (_("Junk at end of arguments."));
9140     }
9141 }
9142 
9143 /* Decode a static tracepoint marker spec.  */
9144 
9145 static std::vector<symtab_and_line>
9146 decode_static_tracepoint_spec (const char **arg_p)
9147 {
9148   const char *p = &(*arg_p)[3];
9149   const char *endp;
9150 
9151   p = skip_spaces (p);
9152 
9153   endp = skip_to_space (p);
9154 
9155   std::string marker_str (p, endp - p);
9156 
9157   std::vector<static_tracepoint_marker> markers
9158     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9159   if (markers.empty ())
9160     error (_("No known static tracepoint marker named %s"),
9161 	   marker_str.c_str ());
9162 
9163   std::vector<symtab_and_line> sals;
9164   sals.reserve (markers.size ());
9165 
9166   for (const static_tracepoint_marker &marker : markers)
9167     {
9168       symtab_and_line sal = find_pc_line (marker.address, 0);
9169       sal.pc = marker.address;
9170       sals.push_back (sal);
9171    }
9172 
9173   *arg_p = endp;
9174   return sals;
9175 }
9176 
9177 /* Returns the breakpoint ops appropriate for use with with LOCATION_TYPE and
9178    according to IS_TRACEPOINT.  */
9179 
9180 static const struct breakpoint_ops *
9181 breakpoint_ops_for_event_location_type (enum event_location_type location_type,
9182 					bool is_tracepoint)
9183 {
9184   if (is_tracepoint)
9185     {
9186       if (location_type == PROBE_LOCATION)
9187 	return &tracepoint_probe_breakpoint_ops;
9188       else
9189 	return &tracepoint_breakpoint_ops;
9190     }
9191   else
9192     {
9193       if (location_type == PROBE_LOCATION)
9194 	return &bkpt_probe_breakpoint_ops;
9195       else
9196 	return &bkpt_breakpoint_ops;
9197     }
9198 }
9199 
9200 /* See breakpoint.h.  */
9201 
9202 const struct breakpoint_ops *
9203 breakpoint_ops_for_event_location (const struct event_location *location,
9204 				   bool is_tracepoint)
9205 {
9206   if (location != nullptr)
9207     return breakpoint_ops_for_event_location_type
9208       (event_location_type (location), is_tracepoint);
9209   return is_tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops;
9210 }
9211 
9212 /* See breakpoint.h.  */
9213 
9214 int
9215 create_breakpoint (struct gdbarch *gdbarch,
9216 		   struct event_location *location,
9217 		   const char *cond_string,
9218 		   int thread, const char *extra_string,
9219 		   int parse_extra,
9220 		   int tempflag, enum bptype type_wanted,
9221 		   int ignore_count,
9222 		   enum auto_boolean pending_break_support,
9223 		   const struct breakpoint_ops *ops,
9224 		   int from_tty, int enabled, int internal,
9225 		   unsigned flags)
9226 {
9227   struct linespec_result canonical;
9228   int pending = 0;
9229   int task = 0;
9230   int prev_bkpt_count = breakpoint_count;
9231 
9232   gdb_assert (ops != NULL);
9233 
9234   /* If extra_string isn't useful, set it to NULL.  */
9235   if (extra_string != NULL && *extra_string == '\0')
9236     extra_string = NULL;
9237 
9238   try
9239     {
9240       ops->create_sals_from_location (location, &canonical, type_wanted);
9241     }
9242   catch (const gdb_exception_error &e)
9243     {
9244       /* If caller is interested in rc value from parse, set
9245 	 value.  */
9246       if (e.error == NOT_FOUND_ERROR)
9247 	{
9248 	  /* If pending breakpoint support is turned off, throw
9249 	     error.  */
9250 
9251 	  if (pending_break_support == AUTO_BOOLEAN_FALSE)
9252 	    throw;
9253 
9254 	  exception_print (gdb_stderr, e);
9255 
9256           /* If pending breakpoint support is auto query and the user
9257 	     selects no, then simply return the error code.  */
9258 	  if (pending_break_support == AUTO_BOOLEAN_AUTO
9259 	      && !nquery (_("Make %s pending on future shared library load? "),
9260 			  bptype_string (type_wanted)))
9261 	    return 0;
9262 
9263 	  /* At this point, either the user was queried about setting
9264 	     a pending breakpoint and selected yes, or pending
9265 	     breakpoint behavior is on and thus a pending breakpoint
9266 	     is defaulted on behalf of the user.  */
9267 	  pending = 1;
9268 	}
9269       else
9270 	throw;
9271     }
9272 
9273   if (!pending && canonical.lsals.empty ())
9274     return 0;
9275 
9276   /* Resolve all line numbers to PC's and verify that the addresses
9277      are ok for the target.  */
9278   if (!pending)
9279     {
9280       for (auto &lsal : canonical.lsals)
9281 	breakpoint_sals_to_pc (lsal.sals);
9282     }
9283 
9284   /* Fast tracepoints may have additional restrictions on location.  */
9285   if (!pending && type_wanted == bp_fast_tracepoint)
9286     {
9287       for (const auto &lsal : canonical.lsals)
9288 	check_fast_tracepoint_sals (gdbarch, lsal.sals);
9289     }
9290 
9291   /* Verify that condition can be parsed, before setting any
9292      breakpoints.  Allocate a separate condition expression for each
9293      breakpoint.  */
9294   if (!pending)
9295     {
9296       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9297       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9298 
9299       if (parse_extra)
9300         {
9301 	  char *rest;
9302 	  char *cond;
9303 
9304 	  const linespec_sals &lsal = canonical.lsals[0];
9305 
9306 	  /* Here we only parse 'arg' to separate condition
9307 	     from thread number, so parsing in context of first
9308 	     sal is OK.  When setting the breakpoint we'll
9309 	     re-parse it in context of each sal.  */
9310 
9311 	  find_condition_and_thread (extra_string, lsal.sals[0].pc,
9312 				     &cond, &thread, &task, &rest);
9313 	  cond_string_copy.reset (cond);
9314 	  extra_string_copy.reset (rest);
9315         }
9316       else
9317         {
9318 	  if (type_wanted != bp_dprintf
9319 	      && extra_string != NULL && *extra_string != '\0')
9320 		error (_("Garbage '%s' at end of location"), extra_string);
9321 
9322 	  /* Create a private copy of condition string.  */
9323 	  if (cond_string)
9324 	    cond_string_copy.reset (xstrdup (cond_string));
9325 	  /* Create a private copy of any extra string.  */
9326 	  if (extra_string)
9327 	    extra_string_copy.reset (xstrdup (extra_string));
9328         }
9329 
9330       ops->create_breakpoints_sal (gdbarch, &canonical,
9331 				   std::move (cond_string_copy),
9332 				   std::move (extra_string_copy),
9333 				   type_wanted,
9334 				   tempflag ? disp_del : disp_donttouch,
9335 				   thread, task, ignore_count, ops,
9336 				   from_tty, enabled, internal, flags);
9337     }
9338   else
9339     {
9340       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9341 
9342       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9343       b->location = copy_event_location (location);
9344 
9345       if (parse_extra)
9346 	b->cond_string = NULL;
9347       else
9348 	{
9349 	  /* Create a private copy of condition string.  */
9350 	  b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9351 	  b->thread = thread;
9352 	}
9353 
9354       /* Create a private copy of any extra string.  */
9355       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9356       b->ignore_count = ignore_count;
9357       b->disposition = tempflag ? disp_del : disp_donttouch;
9358       b->condition_not_parsed = 1;
9359       b->enable_state = enabled ? bp_enabled : bp_disabled;
9360       if ((type_wanted != bp_breakpoint
9361            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9362 	b->pspace = current_program_space;
9363 
9364       install_breakpoint (internal, std::move (b), 0);
9365     }
9366 
9367   if (canonical.lsals.size () > 1)
9368     {
9369       warning (_("Multiple breakpoints were set.\nUse the "
9370 		 "\"delete\" command to delete unwanted breakpoints."));
9371       prev_breakpoint_count = prev_bkpt_count;
9372     }
9373 
9374   update_global_location_list (UGLL_MAY_INSERT);
9375 
9376   return 1;
9377 }
9378 
9379 /* Set a breakpoint.
9380    ARG is a string describing breakpoint address,
9381    condition, and thread.
9382    FLAG specifies if a breakpoint is hardware on,
9383    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9384    and BP_TEMPFLAG.  */
9385 
9386 static void
9387 break_command_1 (const char *arg, int flag, int from_tty)
9388 {
9389   int tempflag = flag & BP_TEMPFLAG;
9390   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9391 			     ? bp_hardware_breakpoint
9392 			     : bp_breakpoint);
9393 
9394   event_location_up location = string_to_event_location (&arg, current_language);
9395   const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
9396     (location.get (), false /* is_tracepoint */);
9397 
9398   create_breakpoint (get_current_arch (),
9399 		     location.get (),
9400 		     NULL, 0, arg, 1 /* parse arg */,
9401 		     tempflag, type_wanted,
9402 		     0 /* Ignore count */,
9403 		     pending_break_support,
9404 		     ops,
9405 		     from_tty,
9406 		     1 /* enabled */,
9407 		     0 /* internal */,
9408 		     0);
9409 }
9410 
9411 /* Helper function for break_command_1 and disassemble_command.  */
9412 
9413 void
9414 resolve_sal_pc (struct symtab_and_line *sal)
9415 {
9416   CORE_ADDR pc;
9417 
9418   if (sal->pc == 0 && sal->symtab != NULL)
9419     {
9420       if (!find_line_pc (sal->symtab, sal->line, &pc))
9421 	error (_("No line %d in file \"%s\"."),
9422 	       sal->line, symtab_to_filename_for_display (sal->symtab));
9423       sal->pc = pc;
9424 
9425       /* If this SAL corresponds to a breakpoint inserted using a line
9426          number, then skip the function prologue if necessary.  */
9427       if (sal->explicit_line)
9428 	skip_prologue_sal (sal);
9429     }
9430 
9431   if (sal->section == 0 && sal->symtab != NULL)
9432     {
9433       const struct blockvector *bv;
9434       const struct block *b;
9435       struct symbol *sym;
9436 
9437       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9438 				    SYMTAB_COMPUNIT (sal->symtab));
9439       if (bv != NULL)
9440 	{
9441 	  sym = block_linkage_function (b);
9442 	  if (sym != NULL)
9443 	    {
9444 	      fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9445 	      sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9446 						 sym);
9447 	    }
9448 	  else
9449 	    {
9450 	      /* It really is worthwhile to have the section, so we'll
9451 	         just have to look harder. This case can be executed
9452 	         if we have line numbers but no functions (as can
9453 	         happen in assembly source).  */
9454 
9455 	      scoped_restore_current_pspace_and_thread restore_pspace_thread;
9456 	      switch_to_program_space_and_thread (sal->pspace);
9457 
9458 	      bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9459 	      if (msym.minsym)
9460 		sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9461 	    }
9462 	}
9463     }
9464 }
9465 
9466 void
9467 break_command (const char *arg, int from_tty)
9468 {
9469   break_command_1 (arg, 0, from_tty);
9470 }
9471 
9472 void
9473 tbreak_command (const char *arg, int from_tty)
9474 {
9475   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9476 }
9477 
9478 static void
9479 hbreak_command (const char *arg, int from_tty)
9480 {
9481   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9482 }
9483 
9484 static void
9485 thbreak_command (const char *arg, int from_tty)
9486 {
9487   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9488 }
9489 
9490 static void
9491 stop_command (const char *arg, int from_tty)
9492 {
9493   printf_filtered (_("Specify the type of breakpoint to set.\n\
9494 Usage: stop in <function | address>\n\
9495        stop at <line>\n"));
9496 }
9497 
9498 static void
9499 stopin_command (const char *arg, int from_tty)
9500 {
9501   int badInput = 0;
9502 
9503   if (arg == NULL)
9504     badInput = 1;
9505   else if (*arg != '*')
9506     {
9507       const char *argptr = arg;
9508       int hasColon = 0;
9509 
9510       /* Look for a ':'.  If this is a line number specification, then
9511          say it is bad, otherwise, it should be an address or
9512          function/method name.  */
9513       while (*argptr && !hasColon)
9514 	{
9515 	  hasColon = (*argptr == ':');
9516 	  argptr++;
9517 	}
9518 
9519       if (hasColon)
9520 	badInput = (*argptr != ':');	/* Not a class::method */
9521       else
9522 	badInput = isdigit (*arg);	/* a simple line number */
9523     }
9524 
9525   if (badInput)
9526     printf_filtered (_("Usage: stop in <function | address>\n"));
9527   else
9528     break_command_1 (arg, 0, from_tty);
9529 }
9530 
9531 static void
9532 stopat_command (const char *arg, int from_tty)
9533 {
9534   int badInput = 0;
9535 
9536   if (arg == NULL || *arg == '*')	/* no line number */
9537     badInput = 1;
9538   else
9539     {
9540       const char *argptr = arg;
9541       int hasColon = 0;
9542 
9543       /* Look for a ':'.  If there is a '::' then get out, otherwise
9544          it is probably a line number.  */
9545       while (*argptr && !hasColon)
9546 	{
9547 	  hasColon = (*argptr == ':');
9548 	  argptr++;
9549 	}
9550 
9551       if (hasColon)
9552 	badInput = (*argptr == ':');	/* we have class::method */
9553       else
9554 	badInput = !isdigit (*arg);	/* not a line number */
9555     }
9556 
9557   if (badInput)
9558     printf_filtered (_("Usage: stop at LINE\n"));
9559   else
9560     break_command_1 (arg, 0, from_tty);
9561 }
9562 
9563 /* The dynamic printf command is mostly like a regular breakpoint, but
9564    with a prewired command list consisting of a single output command,
9565    built from extra arguments supplied on the dprintf command
9566    line.  */
9567 
9568 static void
9569 dprintf_command (const char *arg, int from_tty)
9570 {
9571   event_location_up location = string_to_event_location (&arg, current_language);
9572 
9573   /* If non-NULL, ARG should have been advanced past the location;
9574      the next character must be ','.  */
9575   if (arg != NULL)
9576     {
9577       if (arg[0] != ',' || arg[1] == '\0')
9578 	error (_("Format string required"));
9579       else
9580 	{
9581 	  /* Skip the comma.  */
9582 	  ++arg;
9583 	}
9584     }
9585 
9586   create_breakpoint (get_current_arch (),
9587 		     location.get (),
9588 		     NULL, 0, arg, 1 /* parse arg */,
9589 		     0, bp_dprintf,
9590 		     0 /* Ignore count */,
9591 		     pending_break_support,
9592 		     &dprintf_breakpoint_ops,
9593 		     from_tty,
9594 		     1 /* enabled */,
9595 		     0 /* internal */,
9596 		     0);
9597 }
9598 
9599 static void
9600 agent_printf_command (const char *arg, int from_tty)
9601 {
9602   error (_("May only run agent-printf on the target"));
9603 }
9604 
9605 /* Implement the "breakpoint_hit" breakpoint_ops method for
9606    ranged breakpoints.  */
9607 
9608 static int
9609 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9610 				  const address_space *aspace,
9611 				  CORE_ADDR bp_addr,
9612 				  const struct target_waitstatus *ws)
9613 {
9614   if (ws->kind != TARGET_WAITKIND_STOPPED
9615       || ws->value.sig != GDB_SIGNAL_TRAP)
9616     return 0;
9617 
9618   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9619 					 bl->length, aspace, bp_addr);
9620 }
9621 
9622 /* Implement the "resources_needed" breakpoint_ops method for
9623    ranged breakpoints.  */
9624 
9625 static int
9626 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9627 {
9628   return target_ranged_break_num_registers ();
9629 }
9630 
9631 /* Implement the "print_it" breakpoint_ops method for
9632    ranged breakpoints.  */
9633 
9634 static enum print_stop_action
9635 print_it_ranged_breakpoint (bpstat bs)
9636 {
9637   struct breakpoint *b = bs->breakpoint_at;
9638   struct bp_location *bl = b->loc;
9639   struct ui_out *uiout = current_uiout;
9640 
9641   gdb_assert (b->type == bp_hardware_breakpoint);
9642 
9643   /* Ranged breakpoints have only one location.  */
9644   gdb_assert (bl && bl->next == NULL);
9645 
9646   annotate_breakpoint (b->number);
9647 
9648   maybe_print_thread_hit_breakpoint (uiout);
9649 
9650   if (b->disposition == disp_del)
9651     uiout->text ("Temporary ranged breakpoint ");
9652   else
9653     uiout->text ("Ranged breakpoint ");
9654   if (uiout->is_mi_like_p ())
9655     {
9656       uiout->field_string ("reason",
9657 		      async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9658       uiout->field_string ("disp", bpdisp_text (b->disposition));
9659     }
9660   uiout->field_signed ("bkptno", b->number);
9661   uiout->text (", ");
9662 
9663   return PRINT_SRC_AND_LOC;
9664 }
9665 
9666 /* Implement the "print_one" breakpoint_ops method for
9667    ranged breakpoints.  */
9668 
9669 static void
9670 print_one_ranged_breakpoint (struct breakpoint *b,
9671 			     struct bp_location **last_loc)
9672 {
9673   struct bp_location *bl = b->loc;
9674   struct value_print_options opts;
9675   struct ui_out *uiout = current_uiout;
9676 
9677   /* Ranged breakpoints have only one location.  */
9678   gdb_assert (bl && bl->next == NULL);
9679 
9680   get_user_print_options (&opts);
9681 
9682   if (opts.addressprint)
9683     /* We don't print the address range here, it will be printed later
9684        by print_one_detail_ranged_breakpoint.  */
9685     uiout->field_skip ("addr");
9686   annotate_field (5);
9687   print_breakpoint_location (b, bl);
9688   *last_loc = bl;
9689 }
9690 
9691 /* Implement the "print_one_detail" breakpoint_ops method for
9692    ranged breakpoints.  */
9693 
9694 static void
9695 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9696 				    struct ui_out *uiout)
9697 {
9698   CORE_ADDR address_start, address_end;
9699   struct bp_location *bl = b->loc;
9700   string_file stb;
9701 
9702   gdb_assert (bl);
9703 
9704   address_start = bl->address;
9705   address_end = address_start + bl->length - 1;
9706 
9707   uiout->text ("\taddress range: ");
9708   stb.printf ("[%s, %s]",
9709 	      print_core_address (bl->gdbarch, address_start),
9710 	      print_core_address (bl->gdbarch, address_end));
9711   uiout->field_stream ("addr", stb);
9712   uiout->text ("\n");
9713 }
9714 
9715 /* Implement the "print_mention" breakpoint_ops method for
9716    ranged breakpoints.  */
9717 
9718 static void
9719 print_mention_ranged_breakpoint (struct breakpoint *b)
9720 {
9721   struct bp_location *bl = b->loc;
9722   struct ui_out *uiout = current_uiout;
9723 
9724   gdb_assert (bl);
9725   gdb_assert (b->type == bp_hardware_breakpoint);
9726 
9727   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9728 		  b->number, paddress (bl->gdbarch, bl->address),
9729 		  paddress (bl->gdbarch, bl->address + bl->length - 1));
9730 }
9731 
9732 /* Implement the "print_recreate" breakpoint_ops method for
9733    ranged breakpoints.  */
9734 
9735 static void
9736 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9737 {
9738   fprintf_unfiltered (fp, "break-range %s, %s",
9739 		      event_location_to_string (b->location.get ()),
9740 		      event_location_to_string (b->location_range_end.get ()));
9741   print_recreate_thread (b, fp);
9742 }
9743 
9744 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9745 
9746 static struct breakpoint_ops ranged_breakpoint_ops;
9747 
9748 /* Find the address where the end of the breakpoint range should be
9749    placed, given the SAL of the end of the range.  This is so that if
9750    the user provides a line number, the end of the range is set to the
9751    last instruction of the given line.  */
9752 
9753 static CORE_ADDR
9754 find_breakpoint_range_end (struct symtab_and_line sal)
9755 {
9756   CORE_ADDR end;
9757 
9758   /* If the user provided a PC value, use it.  Otherwise,
9759      find the address of the end of the given location.  */
9760   if (sal.explicit_pc)
9761     end = sal.pc;
9762   else
9763     {
9764       int ret;
9765       CORE_ADDR start;
9766 
9767       ret = find_line_pc_range (sal, &start, &end);
9768       if (!ret)
9769 	error (_("Could not find location of the end of the range."));
9770 
9771       /* find_line_pc_range returns the start of the next line.  */
9772       end--;
9773     }
9774 
9775   return end;
9776 }
9777 
9778 /* Implement the "break-range" CLI command.  */
9779 
9780 static void
9781 break_range_command (const char *arg, int from_tty)
9782 {
9783   const char *arg_start;
9784   struct linespec_result canonical_start, canonical_end;
9785   int bp_count, can_use_bp, length;
9786   CORE_ADDR end;
9787   struct breakpoint *b;
9788 
9789   /* We don't support software ranged breakpoints.  */
9790   if (target_ranged_break_num_registers () < 0)
9791     error (_("This target does not support hardware ranged breakpoints."));
9792 
9793   bp_count = hw_breakpoint_used_count ();
9794   bp_count += target_ranged_break_num_registers ();
9795   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9796 						   bp_count, 0);
9797   if (can_use_bp < 0)
9798     error (_("Hardware breakpoints used exceeds limit."));
9799 
9800   arg = skip_spaces (arg);
9801   if (arg == NULL || arg[0] == '\0')
9802     error(_("No address range specified."));
9803 
9804   arg_start = arg;
9805   event_location_up start_location = string_to_event_location (&arg,
9806 							       current_language);
9807   parse_breakpoint_sals (start_location.get (), &canonical_start);
9808 
9809   if (arg[0] != ',')
9810     error (_("Too few arguments."));
9811   else if (canonical_start.lsals.empty ())
9812     error (_("Could not find location of the beginning of the range."));
9813 
9814   const linespec_sals &lsal_start = canonical_start.lsals[0];
9815 
9816   if (canonical_start.lsals.size () > 1
9817       || lsal_start.sals.size () != 1)
9818     error (_("Cannot create a ranged breakpoint with multiple locations."));
9819 
9820   const symtab_and_line &sal_start = lsal_start.sals[0];
9821   std::string addr_string_start (arg_start, arg - arg_start);
9822 
9823   arg++;	/* Skip the comma.  */
9824   arg = skip_spaces (arg);
9825 
9826   /* Parse the end location.  */
9827 
9828   arg_start = arg;
9829 
9830   /* We call decode_line_full directly here instead of using
9831      parse_breakpoint_sals because we need to specify the start location's
9832      symtab and line as the default symtab and line for the end of the
9833      range.  This makes it possible to have ranges like "foo.c:27, +14",
9834      where +14 means 14 lines from the start location.  */
9835   event_location_up end_location = string_to_event_location (&arg,
9836 							     current_language);
9837   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9838 		    sal_start.symtab, sal_start.line,
9839 		    &canonical_end, NULL, NULL);
9840 
9841   if (canonical_end.lsals.empty ())
9842     error (_("Could not find location of the end of the range."));
9843 
9844   const linespec_sals &lsal_end = canonical_end.lsals[0];
9845   if (canonical_end.lsals.size () > 1
9846       || lsal_end.sals.size () != 1)
9847     error (_("Cannot create a ranged breakpoint with multiple locations."));
9848 
9849   const symtab_and_line &sal_end = lsal_end.sals[0];
9850 
9851   end = find_breakpoint_range_end (sal_end);
9852   if (sal_start.pc > end)
9853     error (_("Invalid address range, end precedes start."));
9854 
9855   length = end - sal_start.pc + 1;
9856   if (length < 0)
9857     /* Length overflowed.  */
9858     error (_("Address range too large."));
9859   else if (length == 1)
9860     {
9861       /* This range is simple enough to be handled by
9862 	 the `hbreak' command.  */
9863       hbreak_command (&addr_string_start[0], 1);
9864 
9865       return;
9866     }
9867 
9868   /* Now set up the breakpoint.  */
9869   b = set_raw_breakpoint (get_current_arch (), sal_start,
9870 			  bp_hardware_breakpoint, &ranged_breakpoint_ops);
9871   set_breakpoint_count (breakpoint_count + 1);
9872   b->number = breakpoint_count;
9873   b->disposition = disp_donttouch;
9874   b->location = std::move (start_location);
9875   b->location_range_end = std::move (end_location);
9876   b->loc->length = length;
9877 
9878   mention (b);
9879   gdb::observers::breakpoint_created.notify (b);
9880   update_global_location_list (UGLL_MAY_INSERT);
9881 }
9882 
9883 /*  Return non-zero if EXP is verified as constant.  Returned zero
9884     means EXP is variable.  Also the constant detection may fail for
9885     some constant expressions and in such case still falsely return
9886     zero.  */
9887 
9888 static int
9889 watchpoint_exp_is_const (const struct expression *exp)
9890 {
9891   int i = exp->nelts;
9892 
9893   while (i > 0)
9894     {
9895       int oplenp, argsp;
9896 
9897       /* We are only interested in the descriptor of each element.  */
9898       operator_length (exp, i, &oplenp, &argsp);
9899       i -= oplenp;
9900 
9901       switch (exp->elts[i].opcode)
9902 	{
9903 	case BINOP_ADD:
9904 	case BINOP_SUB:
9905 	case BINOP_MUL:
9906 	case BINOP_DIV:
9907 	case BINOP_REM:
9908 	case BINOP_MOD:
9909 	case BINOP_LSH:
9910 	case BINOP_RSH:
9911 	case BINOP_LOGICAL_AND:
9912 	case BINOP_LOGICAL_OR:
9913 	case BINOP_BITWISE_AND:
9914 	case BINOP_BITWISE_IOR:
9915 	case BINOP_BITWISE_XOR:
9916 	case BINOP_EQUAL:
9917 	case BINOP_NOTEQUAL:
9918 	case BINOP_LESS:
9919 	case BINOP_GTR:
9920 	case BINOP_LEQ:
9921 	case BINOP_GEQ:
9922 	case BINOP_REPEAT:
9923 	case BINOP_COMMA:
9924 	case BINOP_EXP:
9925 	case BINOP_MIN:
9926 	case BINOP_MAX:
9927 	case BINOP_INTDIV:
9928 	case BINOP_CONCAT:
9929 	case TERNOP_COND:
9930 	case TERNOP_SLICE:
9931 
9932 	case OP_LONG:
9933 	case OP_FLOAT:
9934 	case OP_LAST:
9935 	case OP_COMPLEX:
9936 	case OP_STRING:
9937 	case OP_ARRAY:
9938 	case OP_TYPE:
9939 	case OP_TYPEOF:
9940 	case OP_DECLTYPE:
9941 	case OP_TYPEID:
9942 	case OP_NAME:
9943 	case OP_OBJC_NSSTRING:
9944 
9945 	case UNOP_NEG:
9946 	case UNOP_LOGICAL_NOT:
9947 	case UNOP_COMPLEMENT:
9948 	case UNOP_ADDR:
9949 	case UNOP_HIGH:
9950 	case UNOP_CAST:
9951 
9952 	case UNOP_CAST_TYPE:
9953 	case UNOP_REINTERPRET_CAST:
9954 	case UNOP_DYNAMIC_CAST:
9955 	  /* Unary, binary and ternary operators: We have to check
9956 	     their operands.  If they are constant, then so is the
9957 	     result of that operation.  For instance, if A and B are
9958 	     determined to be constants, then so is "A + B".
9959 
9960 	     UNOP_IND is one exception to the rule above, because the
9961 	     value of *ADDR is not necessarily a constant, even when
9962 	     ADDR is.  */
9963 	  break;
9964 
9965 	case OP_VAR_VALUE:
9966 	  /* Check whether the associated symbol is a constant.
9967 
9968 	     We use SYMBOL_CLASS rather than TYPE_CONST because it's
9969 	     possible that a buggy compiler could mark a variable as
9970 	     constant even when it is not, and TYPE_CONST would return
9971 	     true in this case, while SYMBOL_CLASS wouldn't.
9972 
9973 	     We also have to check for function symbols because they
9974 	     are always constant.  */
9975 	  {
9976 	    struct symbol *s = exp->elts[i + 2].symbol;
9977 
9978 	    if (SYMBOL_CLASS (s) != LOC_BLOCK
9979 		&& SYMBOL_CLASS (s) != LOC_CONST
9980 		&& SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9981 	      return 0;
9982 	    break;
9983 	  }
9984 
9985 	/* The default action is to return 0 because we are using
9986 	   the optimistic approach here: If we don't know something,
9987 	   then it is not a constant.  */
9988 	default:
9989 	  return 0;
9990 	}
9991     }
9992 
9993   return 1;
9994 }
9995 
9996 /* Watchpoint destructor.  */
9997 
9998 watchpoint::~watchpoint ()
9999 {
10000   xfree (this->exp_string);
10001   xfree (this->exp_string_reparse);
10002 }
10003 
10004 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10005 
10006 static void
10007 re_set_watchpoint (struct breakpoint *b)
10008 {
10009   struct watchpoint *w = (struct watchpoint *) b;
10010 
10011   /* Watchpoint can be either on expression using entirely global
10012      variables, or it can be on local variables.
10013 
10014      Watchpoints of the first kind are never auto-deleted, and even
10015      persist across program restarts.  Since they can use variables
10016      from shared libraries, we need to reparse expression as libraries
10017      are loaded and unloaded.
10018 
10019      Watchpoints on local variables can also change meaning as result
10020      of solib event.  For example, if a watchpoint uses both a local
10021      and a global variables in expression, it's a local watchpoint,
10022      but unloading of a shared library will make the expression
10023      invalid.  This is not a very common use case, but we still
10024      re-evaluate expression, to avoid surprises to the user.
10025 
10026      Note that for local watchpoints, we re-evaluate it only if
10027      watchpoints frame id is still valid.  If it's not, it means the
10028      watchpoint is out of scope and will be deleted soon.  In fact,
10029      I'm not sure we'll ever be called in this case.
10030 
10031      If a local watchpoint's frame id is still valid, then
10032      w->exp_valid_block is likewise valid, and we can safely use it.
10033 
10034      Don't do anything about disabled watchpoints, since they will be
10035      reevaluated again when enabled.  */
10036   update_watchpoint (w, 1 /* reparse */);
10037 }
10038 
10039 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10040 
10041 static int
10042 insert_watchpoint (struct bp_location *bl)
10043 {
10044   struct watchpoint *w = (struct watchpoint *) bl->owner;
10045   int length = w->exact ? 1 : bl->length;
10046 
10047   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10048 				   w->cond_exp.get ());
10049 }
10050 
10051 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10052 
10053 static int
10054 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10055 {
10056   struct watchpoint *w = (struct watchpoint *) bl->owner;
10057   int length = w->exact ? 1 : bl->length;
10058 
10059   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10060 				   w->cond_exp.get ());
10061 }
10062 
10063 static int
10064 breakpoint_hit_watchpoint (const struct bp_location *bl,
10065 			   const address_space *aspace, CORE_ADDR bp_addr,
10066 			   const struct target_waitstatus *ws)
10067 {
10068   struct breakpoint *b = bl->owner;
10069   struct watchpoint *w = (struct watchpoint *) b;
10070 
10071   /* Continuable hardware watchpoints are treated as non-existent if the
10072      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10073      some data address).  Otherwise gdb won't stop on a break instruction
10074      in the code (not from a breakpoint) when a hardware watchpoint has
10075      been defined.  Also skip watchpoints which we know did not trigger
10076      (did not match the data address).  */
10077   if (is_hardware_watchpoint (b)
10078       && w->watchpoint_triggered == watch_triggered_no)
10079     return 0;
10080 
10081   return 1;
10082 }
10083 
10084 static void
10085 check_status_watchpoint (bpstat bs)
10086 {
10087   gdb_assert (is_watchpoint (bs->breakpoint_at));
10088 
10089   bpstat_check_watchpoint (bs);
10090 }
10091 
10092 /* Implement the "resources_needed" breakpoint_ops method for
10093    hardware watchpoints.  */
10094 
10095 static int
10096 resources_needed_watchpoint (const struct bp_location *bl)
10097 {
10098   struct watchpoint *w = (struct watchpoint *) bl->owner;
10099   int length = w->exact? 1 : bl->length;
10100 
10101   return target_region_ok_for_hw_watchpoint (bl->address, length);
10102 }
10103 
10104 /* Implement the "works_in_software_mode" breakpoint_ops method for
10105    hardware watchpoints.  */
10106 
10107 static int
10108 works_in_software_mode_watchpoint (const struct breakpoint *b)
10109 {
10110   /* Read and access watchpoints only work with hardware support.  */
10111   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10112 }
10113 
10114 static enum print_stop_action
10115 print_it_watchpoint (bpstat bs)
10116 {
10117   struct breakpoint *b;
10118   enum print_stop_action result;
10119   struct watchpoint *w;
10120   struct ui_out *uiout = current_uiout;
10121 
10122   gdb_assert (bs->bp_location_at != NULL);
10123 
10124   b = bs->breakpoint_at;
10125   w = (struct watchpoint *) b;
10126 
10127   annotate_watchpoint (b->number);
10128   maybe_print_thread_hit_breakpoint (uiout);
10129 
10130   string_file stb;
10131 
10132   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10133   switch (b->type)
10134     {
10135     case bp_watchpoint:
10136     case bp_hardware_watchpoint:
10137       if (uiout->is_mi_like_p ())
10138 	uiout->field_string
10139 	  ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10140       mention (b);
10141       tuple_emitter.emplace (uiout, "value");
10142       uiout->text ("\nOld value = ");
10143       watchpoint_value_print (bs->old_val.get (), &stb);
10144       uiout->field_stream ("old", stb);
10145       uiout->text ("\nNew value = ");
10146       watchpoint_value_print (w->val.get (), &stb);
10147       uiout->field_stream ("new", stb);
10148       uiout->text ("\n");
10149       /* More than one watchpoint may have been triggered.  */
10150       result = PRINT_UNKNOWN;
10151       break;
10152 
10153     case bp_read_watchpoint:
10154       if (uiout->is_mi_like_p ())
10155 	uiout->field_string
10156 	  ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10157       mention (b);
10158       tuple_emitter.emplace (uiout, "value");
10159       uiout->text ("\nValue = ");
10160       watchpoint_value_print (w->val.get (), &stb);
10161       uiout->field_stream ("value", stb);
10162       uiout->text ("\n");
10163       result = PRINT_UNKNOWN;
10164       break;
10165 
10166     case bp_access_watchpoint:
10167       if (bs->old_val != NULL)
10168 	{
10169 	  if (uiout->is_mi_like_p ())
10170 	    uiout->field_string
10171 	      ("reason",
10172 	       async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10173 	  mention (b);
10174 	  tuple_emitter.emplace (uiout, "value");
10175 	  uiout->text ("\nOld value = ");
10176 	  watchpoint_value_print (bs->old_val.get (), &stb);
10177 	  uiout->field_stream ("old", stb);
10178 	  uiout->text ("\nNew value = ");
10179 	}
10180       else
10181 	{
10182 	  mention (b);
10183 	  if (uiout->is_mi_like_p ())
10184 	    uiout->field_string
10185 	      ("reason",
10186 	       async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10187 	  tuple_emitter.emplace (uiout, "value");
10188 	  uiout->text ("\nValue = ");
10189 	}
10190       watchpoint_value_print (w->val.get (), &stb);
10191       uiout->field_stream ("new", stb);
10192       uiout->text ("\n");
10193       result = PRINT_UNKNOWN;
10194       break;
10195     default:
10196       result = PRINT_UNKNOWN;
10197     }
10198 
10199   return result;
10200 }
10201 
10202 /* Implement the "print_mention" breakpoint_ops method for hardware
10203    watchpoints.  */
10204 
10205 static void
10206 print_mention_watchpoint (struct breakpoint *b)
10207 {
10208   struct watchpoint *w = (struct watchpoint *) b;
10209   struct ui_out *uiout = current_uiout;
10210   const char *tuple_name;
10211 
10212   switch (b->type)
10213     {
10214     case bp_watchpoint:
10215       uiout->text ("Watchpoint ");
10216       tuple_name = "wpt";
10217       break;
10218     case bp_hardware_watchpoint:
10219       uiout->text ("Hardware watchpoint ");
10220       tuple_name = "wpt";
10221       break;
10222     case bp_read_watchpoint:
10223       uiout->text ("Hardware read watchpoint ");
10224       tuple_name = "hw-rwpt";
10225       break;
10226     case bp_access_watchpoint:
10227       uiout->text ("Hardware access (read/write) watchpoint ");
10228       tuple_name = "hw-awpt";
10229       break;
10230     default:
10231       internal_error (__FILE__, __LINE__,
10232 		      _("Invalid hardware watchpoint type."));
10233     }
10234 
10235   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10236   uiout->field_signed ("number", b->number);
10237   uiout->text (": ");
10238   uiout->field_string ("exp", w->exp_string);
10239 }
10240 
10241 /* Implement the "print_recreate" breakpoint_ops method for
10242    watchpoints.  */
10243 
10244 static void
10245 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10246 {
10247   struct watchpoint *w = (struct watchpoint *) b;
10248 
10249   switch (b->type)
10250     {
10251     case bp_watchpoint:
10252     case bp_hardware_watchpoint:
10253       fprintf_unfiltered (fp, "watch");
10254       break;
10255     case bp_read_watchpoint:
10256       fprintf_unfiltered (fp, "rwatch");
10257       break;
10258     case bp_access_watchpoint:
10259       fprintf_unfiltered (fp, "awatch");
10260       break;
10261     default:
10262       internal_error (__FILE__, __LINE__,
10263 		      _("Invalid watchpoint type."));
10264     }
10265 
10266   fprintf_unfiltered (fp, " %s", w->exp_string);
10267   print_recreate_thread (b, fp);
10268 }
10269 
10270 /* Implement the "explains_signal" breakpoint_ops method for
10271    watchpoints.  */
10272 
10273 static int
10274 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10275 {
10276   /* A software watchpoint cannot cause a signal other than
10277      GDB_SIGNAL_TRAP.  */
10278   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10279     return 0;
10280 
10281   return 1;
10282 }
10283 
10284 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10285 
10286 static struct breakpoint_ops watchpoint_breakpoint_ops;
10287 
10288 /* Implement the "insert" breakpoint_ops method for
10289    masked hardware watchpoints.  */
10290 
10291 static int
10292 insert_masked_watchpoint (struct bp_location *bl)
10293 {
10294   struct watchpoint *w = (struct watchpoint *) bl->owner;
10295 
10296   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10297 					bl->watchpoint_type);
10298 }
10299 
10300 /* Implement the "remove" breakpoint_ops method for
10301    masked hardware watchpoints.  */
10302 
10303 static int
10304 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10305 {
10306   struct watchpoint *w = (struct watchpoint *) bl->owner;
10307 
10308   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10309 				        bl->watchpoint_type);
10310 }
10311 
10312 /* Implement the "resources_needed" breakpoint_ops method for
10313    masked hardware watchpoints.  */
10314 
10315 static int
10316 resources_needed_masked_watchpoint (const struct bp_location *bl)
10317 {
10318   struct watchpoint *w = (struct watchpoint *) bl->owner;
10319 
10320   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10321 }
10322 
10323 /* Implement the "works_in_software_mode" breakpoint_ops method for
10324    masked hardware watchpoints.  */
10325 
10326 static int
10327 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10328 {
10329   return 0;
10330 }
10331 
10332 /* Implement the "print_it" breakpoint_ops method for
10333    masked hardware watchpoints.  */
10334 
10335 static enum print_stop_action
10336 print_it_masked_watchpoint (bpstat bs)
10337 {
10338   struct breakpoint *b = bs->breakpoint_at;
10339   struct ui_out *uiout = current_uiout;
10340 
10341   /* Masked watchpoints have only one location.  */
10342   gdb_assert (b->loc && b->loc->next == NULL);
10343 
10344   annotate_watchpoint (b->number);
10345   maybe_print_thread_hit_breakpoint (uiout);
10346 
10347   switch (b->type)
10348     {
10349     case bp_hardware_watchpoint:
10350       if (uiout->is_mi_like_p ())
10351 	uiout->field_string
10352 	  ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10353       break;
10354 
10355     case bp_read_watchpoint:
10356       if (uiout->is_mi_like_p ())
10357 	uiout->field_string
10358 	  ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10359       break;
10360 
10361     case bp_access_watchpoint:
10362       if (uiout->is_mi_like_p ())
10363 	uiout->field_string
10364 	  ("reason",
10365 	   async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10366       break;
10367     default:
10368       internal_error (__FILE__, __LINE__,
10369 		      _("Invalid hardware watchpoint type."));
10370     }
10371 
10372   mention (b);
10373   uiout->text (_("\n\
10374 Check the underlying instruction at PC for the memory\n\
10375 address and value which triggered this watchpoint.\n"));
10376   uiout->text ("\n");
10377 
10378   /* More than one watchpoint may have been triggered.  */
10379   return PRINT_UNKNOWN;
10380 }
10381 
10382 /* Implement the "print_one_detail" breakpoint_ops method for
10383    masked hardware watchpoints.  */
10384 
10385 static void
10386 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10387 				    struct ui_out *uiout)
10388 {
10389   struct watchpoint *w = (struct watchpoint *) b;
10390 
10391   /* Masked watchpoints have only one location.  */
10392   gdb_assert (b->loc && b->loc->next == NULL);
10393 
10394   uiout->text ("\tmask ");
10395   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10396   uiout->text ("\n");
10397 }
10398 
10399 /* Implement the "print_mention" breakpoint_ops method for
10400    masked hardware watchpoints.  */
10401 
10402 static void
10403 print_mention_masked_watchpoint (struct breakpoint *b)
10404 {
10405   struct watchpoint *w = (struct watchpoint *) b;
10406   struct ui_out *uiout = current_uiout;
10407   const char *tuple_name;
10408 
10409   switch (b->type)
10410     {
10411     case bp_hardware_watchpoint:
10412       uiout->text ("Masked hardware watchpoint ");
10413       tuple_name = "wpt";
10414       break;
10415     case bp_read_watchpoint:
10416       uiout->text ("Masked hardware read watchpoint ");
10417       tuple_name = "hw-rwpt";
10418       break;
10419     case bp_access_watchpoint:
10420       uiout->text ("Masked hardware access (read/write) watchpoint ");
10421       tuple_name = "hw-awpt";
10422       break;
10423     default:
10424       internal_error (__FILE__, __LINE__,
10425 		      _("Invalid hardware watchpoint type."));
10426     }
10427 
10428   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10429   uiout->field_signed ("number", b->number);
10430   uiout->text (": ");
10431   uiout->field_string ("exp", w->exp_string);
10432 }
10433 
10434 /* Implement the "print_recreate" breakpoint_ops method for
10435    masked hardware watchpoints.  */
10436 
10437 static void
10438 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10439 {
10440   struct watchpoint *w = (struct watchpoint *) b;
10441 
10442   switch (b->type)
10443     {
10444     case bp_hardware_watchpoint:
10445       fprintf_unfiltered (fp, "watch");
10446       break;
10447     case bp_read_watchpoint:
10448       fprintf_unfiltered (fp, "rwatch");
10449       break;
10450     case bp_access_watchpoint:
10451       fprintf_unfiltered (fp, "awatch");
10452       break;
10453     default:
10454       internal_error (__FILE__, __LINE__,
10455 		      _("Invalid hardware watchpoint type."));
10456     }
10457 
10458   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string,
10459 		      phex (w->hw_wp_mask, sizeof (CORE_ADDR)));
10460   print_recreate_thread (b, fp);
10461 }
10462 
10463 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10464 
10465 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10466 
10467 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10468 
10469 static bool
10470 is_masked_watchpoint (const struct breakpoint *b)
10471 {
10472   return b->ops == &masked_watchpoint_breakpoint_ops;
10473 }
10474 
10475 /* accessflag:  hw_write:  watch write,
10476                 hw_read:   watch read,
10477 		hw_access: watch access (read or write) */
10478 static void
10479 watch_command_1 (const char *arg, int accessflag, int from_tty,
10480 		 int just_location, int internal)
10481 {
10482   struct breakpoint *scope_breakpoint = NULL;
10483   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10484   struct value *result;
10485   int saved_bitpos = 0, saved_bitsize = 0;
10486   const char *exp_start = NULL;
10487   const char *exp_end = NULL;
10488   const char *tok, *end_tok;
10489   int toklen = -1;
10490   const char *cond_start = NULL;
10491   const char *cond_end = NULL;
10492   enum bptype bp_type;
10493   int thread = -1;
10494   int pc = 0;
10495   /* Flag to indicate whether we are going to use masks for
10496      the hardware watchpoint.  */
10497   int use_mask = 0;
10498   CORE_ADDR mask = 0;
10499 
10500   /* Make sure that we actually have parameters to parse.  */
10501   if (arg != NULL && arg[0] != '\0')
10502     {
10503       const char *value_start;
10504 
10505       exp_end = arg + strlen (arg);
10506 
10507       /* Look for "parameter value" pairs at the end
10508 	 of the arguments string.  */
10509       for (tok = exp_end - 1; tok > arg; tok--)
10510 	{
10511 	  /* Skip whitespace at the end of the argument list.  */
10512 	  while (tok > arg && (*tok == ' ' || *tok == '\t'))
10513 	    tok--;
10514 
10515 	  /* Find the beginning of the last token.
10516 	     This is the value of the parameter.  */
10517 	  while (tok > arg && (*tok != ' ' && *tok != '\t'))
10518 	    tok--;
10519 	  value_start = tok + 1;
10520 
10521 	  /* Skip whitespace.  */
10522 	  while (tok > arg && (*tok == ' ' || *tok == '\t'))
10523 	    tok--;
10524 
10525 	  end_tok = tok;
10526 
10527 	  /* Find the beginning of the second to last token.
10528 	     This is the parameter itself.  */
10529 	  while (tok > arg && (*tok != ' ' && *tok != '\t'))
10530 	    tok--;
10531 	  tok++;
10532 	  toklen = end_tok - tok + 1;
10533 
10534 	  if (toklen == 6 && startswith (tok, "thread"))
10535 	    {
10536 	      struct thread_info *thr;
10537 	      /* At this point we've found a "thread" token, which means
10538 		 the user is trying to set a watchpoint that triggers
10539 		 only in a specific thread.  */
10540 	      const char *endp;
10541 
10542 	      if (thread != -1)
10543 		error(_("You can specify only one thread."));
10544 
10545 	      /* Extract the thread ID from the next token.  */
10546 	      thr = parse_thread_id (value_start, &endp);
10547 
10548 	      /* Check if the user provided a valid thread ID.  */
10549 	      if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10550 		invalid_thread_id_error (value_start);
10551 
10552 	      thread = thr->global_num;
10553 	    }
10554 	  else if (toklen == 4 && startswith (tok, "mask"))
10555 	    {
10556 	      /* We've found a "mask" token, which means the user wants to
10557 		 create a hardware watchpoint that is going to have the mask
10558 		 facility.  */
10559 	      struct value *mask_value, *mark;
10560 
10561 	      if (use_mask)
10562 		error(_("You can specify only one mask."));
10563 
10564 	      use_mask = just_location = 1;
10565 
10566 	      mark = value_mark ();
10567 	      mask_value = parse_to_comma_and_eval (&value_start);
10568 	      mask = value_as_address (mask_value);
10569 	      value_free_to_mark (mark);
10570 	    }
10571 	  else
10572 	    /* We didn't recognize what we found.  We should stop here.  */
10573 	    break;
10574 
10575 	  /* Truncate the string and get rid of the "parameter value" pair before
10576 	     the arguments string is parsed by the parse_exp_1 function.  */
10577 	  exp_end = tok;
10578 	}
10579     }
10580   else
10581     exp_end = arg;
10582 
10583   /* Parse the rest of the arguments.  From here on out, everything
10584      is in terms of a newly allocated string instead of the original
10585      ARG.  */
10586   std::string expression (arg, exp_end - arg);
10587   exp_start = arg = expression.c_str ();
10588   innermost_block_tracker tracker;
10589   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10590   exp_end = arg;
10591   /* Remove trailing whitespace from the expression before saving it.
10592      This makes the eventual display of the expression string a bit
10593      prettier.  */
10594   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10595     --exp_end;
10596 
10597   /* Checking if the expression is not constant.  */
10598   if (watchpoint_exp_is_const (exp.get ()))
10599     {
10600       int len;
10601 
10602       len = exp_end - exp_start;
10603       while (len > 0 && isspace (exp_start[len - 1]))
10604 	len--;
10605       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10606     }
10607 
10608   exp_valid_block = tracker.block ();
10609   struct value *mark = value_mark ();
10610   struct value *val_as_value = nullptr;
10611   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10612 		      just_location);
10613 
10614   if (val_as_value != NULL && just_location)
10615     {
10616       saved_bitpos = value_bitpos (val_as_value);
10617       saved_bitsize = value_bitsize (val_as_value);
10618     }
10619 
10620   value_ref_ptr val;
10621   if (just_location)
10622     {
10623       int ret;
10624 
10625       exp_valid_block = NULL;
10626       val = release_value (value_addr (result));
10627       value_free_to_mark (mark);
10628 
10629       if (use_mask)
10630 	{
10631 	  ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10632 						   mask);
10633 	  if (ret == -1)
10634 	    error (_("This target does not support masked watchpoints."));
10635 	  else if (ret == -2)
10636 	    error (_("Invalid mask or memory region."));
10637 	}
10638     }
10639   else if (val_as_value != NULL)
10640     val = release_value (val_as_value);
10641 
10642   tok = skip_spaces (arg);
10643   end_tok = skip_to_space (tok);
10644 
10645   toklen = end_tok - tok;
10646   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10647     {
10648       tok = cond_start = end_tok + 1;
10649       innermost_block_tracker if_tracker;
10650       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10651 
10652       /* The watchpoint expression may not be local, but the condition
10653 	 may still be.  E.g.: `watch global if local > 0'.  */
10654       cond_exp_valid_block = if_tracker.block ();
10655 
10656       cond_end = tok;
10657     }
10658   if (*tok)
10659     error (_("Junk at end of command."));
10660 
10661   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10662 
10663   /* Save this because create_internal_breakpoint below invalidates
10664      'wp_frame'.  */
10665   frame_id watchpoint_frame = get_frame_id (wp_frame);
10666 
10667   /* If the expression is "local", then set up a "watchpoint scope"
10668      breakpoint at the point where we've left the scope of the watchpoint
10669      expression.  Create the scope breakpoint before the watchpoint, so
10670      that we will encounter it first in bpstat_stop_status.  */
10671   if (exp_valid_block != NULL && wp_frame != NULL)
10672     {
10673       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10674 
10675       if (frame_id_p (caller_frame_id))
10676 	{
10677 	  gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10678 	  CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10679 
10680  	  scope_breakpoint
10681 	    = create_internal_breakpoint (caller_arch, caller_pc,
10682 					  bp_watchpoint_scope,
10683 					  &momentary_breakpoint_ops);
10684 
10685 	  /* create_internal_breakpoint could invalidate WP_FRAME.  */
10686 	  wp_frame = NULL;
10687 
10688 	  scope_breakpoint->enable_state = bp_enabled;
10689 
10690 	  /* Automatically delete the breakpoint when it hits.  */
10691 	  scope_breakpoint->disposition = disp_del;
10692 
10693 	  /* Only break in the proper frame (help with recursion).  */
10694 	  scope_breakpoint->frame_id = caller_frame_id;
10695 
10696 	  /* Set the address at which we will stop.  */
10697 	  scope_breakpoint->loc->gdbarch = caller_arch;
10698 	  scope_breakpoint->loc->requested_address = caller_pc;
10699 	  scope_breakpoint->loc->address
10700 	    = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10701 					 scope_breakpoint->loc->requested_address,
10702 					 scope_breakpoint->type);
10703 	}
10704     }
10705 
10706   /* Now set up the breakpoint.  We create all watchpoints as hardware
10707      watchpoints here even if hardware watchpoints are turned off, a call
10708      to update_watchpoint later in this function will cause the type to
10709      drop back to bp_watchpoint (software watchpoint) if required.  */
10710 
10711   if (accessflag == hw_read)
10712     bp_type = bp_read_watchpoint;
10713   else if (accessflag == hw_access)
10714     bp_type = bp_access_watchpoint;
10715   else
10716     bp_type = bp_hardware_watchpoint;
10717 
10718   std::unique_ptr<watchpoint> w (new watchpoint ());
10719 
10720   if (use_mask)
10721     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10722 					  &masked_watchpoint_breakpoint_ops);
10723   else
10724     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10725 					  &watchpoint_breakpoint_ops);
10726   w->thread = thread;
10727   w->disposition = disp_donttouch;
10728   w->pspace = current_program_space;
10729   w->exp = std::move (exp);
10730   w->exp_valid_block = exp_valid_block;
10731   w->cond_exp_valid_block = cond_exp_valid_block;
10732   if (just_location)
10733     {
10734       struct type *t = value_type (val.get ());
10735       CORE_ADDR addr = value_as_address (val.get ());
10736 
10737       w->exp_string_reparse
10738 	= current_language->watch_location_expression (t, addr).release ();
10739 
10740       w->exp_string = xstrprintf ("-location %.*s",
10741 				  (int) (exp_end - exp_start), exp_start);
10742     }
10743   else
10744     w->exp_string = savestring (exp_start, exp_end - exp_start);
10745 
10746   if (use_mask)
10747     {
10748       w->hw_wp_mask = mask;
10749     }
10750   else
10751     {
10752       w->val = val;
10753       w->val_bitpos = saved_bitpos;
10754       w->val_bitsize = saved_bitsize;
10755       w->val_valid = true;
10756     }
10757 
10758   if (cond_start)
10759     w->cond_string = savestring (cond_start, cond_end - cond_start);
10760   else
10761     w->cond_string = 0;
10762 
10763   if (frame_id_p (watchpoint_frame))
10764     {
10765       w->watchpoint_frame = watchpoint_frame;
10766       w->watchpoint_thread = inferior_ptid;
10767     }
10768   else
10769     {
10770       w->watchpoint_frame = null_frame_id;
10771       w->watchpoint_thread = null_ptid;
10772     }
10773 
10774   if (scope_breakpoint != NULL)
10775     {
10776       /* The scope breakpoint is related to the watchpoint.  We will
10777 	 need to act on them together.  */
10778       w->related_breakpoint = scope_breakpoint;
10779       scope_breakpoint->related_breakpoint = w.get ();
10780     }
10781 
10782   if (!just_location)
10783     value_free_to_mark (mark);
10784 
10785   /* Finally update the new watchpoint.  This creates the locations
10786      that should be inserted.  */
10787   update_watchpoint (w.get (), 1);
10788 
10789   install_breakpoint (internal, std::move (w), 1);
10790 }
10791 
10792 /* Return count of debug registers needed to watch the given expression.
10793    If the watchpoint cannot be handled in hardware return zero.  */
10794 
10795 static int
10796 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10797 {
10798   int found_memory_cnt = 0;
10799 
10800   /* Did the user specifically forbid us to use hardware watchpoints? */
10801   if (!can_use_hw_watchpoints)
10802     return 0;
10803 
10804   gdb_assert (!vals.empty ());
10805   struct value *head = vals[0].get ();
10806 
10807   /* Make sure that the value of the expression depends only upon
10808      memory contents, and values computed from them within GDB.  If we
10809      find any register references or function calls, we can't use a
10810      hardware watchpoint.
10811 
10812      The idea here is that evaluating an expression generates a series
10813      of values, one holding the value of every subexpression.  (The
10814      expression a*b+c has five subexpressions: a, b, a*b, c, and
10815      a*b+c.)  GDB's values hold almost enough information to establish
10816      the criteria given above --- they identify memory lvalues,
10817      register lvalues, computed values, etcetera.  So we can evaluate
10818      the expression, and then scan the chain of values that leaves
10819      behind to decide whether we can detect any possible change to the
10820      expression's final value using only hardware watchpoints.
10821 
10822      However, I don't think that the values returned by inferior
10823      function calls are special in any way.  So this function may not
10824      notice that an expression involving an inferior function call
10825      can't be watched with hardware watchpoints.  FIXME.  */
10826   for (const value_ref_ptr &iter : vals)
10827     {
10828       struct value *v = iter.get ();
10829 
10830       if (VALUE_LVAL (v) == lval_memory)
10831 	{
10832 	  if (v != head && value_lazy (v))
10833 	    /* A lazy memory lvalue in the chain is one that GDB never
10834 	       needed to fetch; we either just used its address (e.g.,
10835 	       `a' in `a.b') or we never needed it at all (e.g., `a'
10836 	       in `a,b').  This doesn't apply to HEAD; if that is
10837 	       lazy then it was not readable, but watch it anyway.  */
10838 	    ;
10839 	  else
10840 	    {
10841 	      /* Ahh, memory we actually used!  Check if we can cover
10842                  it with hardware watchpoints.  */
10843 	      struct type *vtype = check_typedef (value_type (v));
10844 
10845 	      /* We only watch structs and arrays if user asked for it
10846 		 explicitly, never if they just happen to appear in a
10847 		 middle of some value chain.  */
10848 	      if (v == head
10849 		  || (vtype->code () != TYPE_CODE_STRUCT
10850 		      && vtype->code () != TYPE_CODE_ARRAY))
10851 		{
10852 		  CORE_ADDR vaddr = value_address (v);
10853 		  int len;
10854 		  int num_regs;
10855 
10856 		  len = (target_exact_watchpoints
10857 			 && is_scalar_type_recursive (vtype))?
10858 		    1 : TYPE_LENGTH (value_type (v));
10859 
10860 		  num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10861 		  if (!num_regs)
10862 		    return 0;
10863 		  else
10864 		    found_memory_cnt += num_regs;
10865 		}
10866 	    }
10867 	}
10868       else if (VALUE_LVAL (v) != not_lval
10869 	       && deprecated_value_modifiable (v) == 0)
10870 	return 0;	/* These are values from the history (e.g., $1).  */
10871       else if (VALUE_LVAL (v) == lval_register)
10872 	return 0;	/* Cannot watch a register with a HW watchpoint.  */
10873     }
10874 
10875   /* The expression itself looks suitable for using a hardware
10876      watchpoint, but give the target machine a chance to reject it.  */
10877   return found_memory_cnt;
10878 }
10879 
10880 void
10881 watch_command_wrapper (const char *arg, int from_tty, int internal)
10882 {
10883   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10884 }
10885 
10886 /* A helper function that looks for the "-location" argument and then
10887    calls watch_command_1.  */
10888 
10889 static void
10890 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10891 {
10892   int just_location = 0;
10893 
10894   if (arg
10895       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10896 	  || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10897     just_location = 1;
10898 
10899   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10900 }
10901 
10902 static void
10903 watch_command (const char *arg, int from_tty)
10904 {
10905   watch_maybe_just_location (arg, hw_write, from_tty);
10906 }
10907 
10908 void
10909 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10910 {
10911   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10912 }
10913 
10914 static void
10915 rwatch_command (const char *arg, int from_tty)
10916 {
10917   watch_maybe_just_location (arg, hw_read, from_tty);
10918 }
10919 
10920 void
10921 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10922 {
10923   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10924 }
10925 
10926 static void
10927 awatch_command (const char *arg, int from_tty)
10928 {
10929   watch_maybe_just_location (arg, hw_access, from_tty);
10930 }
10931 
10932 
10933 /* Data for the FSM that manages the until(location)/advance commands
10934    in infcmd.c.  Here because it uses the mechanisms of
10935    breakpoints.  */
10936 
10937 struct until_break_fsm : public thread_fsm
10938 {
10939   /* The thread that was current when the command was executed.  */
10940   int thread;
10941 
10942   /* The breakpoint set at the return address in the caller frame,
10943      plus breakpoints at all the destination locations.  */
10944   std::vector<breakpoint_up> breakpoints;
10945 
10946   until_break_fsm (struct interp *cmd_interp, int thread,
10947 		   std::vector<breakpoint_up> &&breakpoints)
10948     : thread_fsm (cmd_interp),
10949       thread (thread),
10950       breakpoints (std::move (breakpoints))
10951   {
10952   }
10953 
10954   void clean_up (struct thread_info *thread) override;
10955   bool should_stop (struct thread_info *thread) override;
10956   enum async_reply_reason do_async_reply_reason () override;
10957 };
10958 
10959 /* Implementation of the 'should_stop' FSM method for the
10960    until(location)/advance commands.  */
10961 
10962 bool
10963 until_break_fsm::should_stop (struct thread_info *tp)
10964 {
10965   for (const breakpoint_up &bp : breakpoints)
10966     if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10967 				bp.get ()) != NULL)
10968       {
10969 	set_finished ();
10970 	break;
10971       }
10972 
10973   return true;
10974 }
10975 
10976 /* Implementation of the 'clean_up' FSM method for the
10977    until(location)/advance commands.  */
10978 
10979 void
10980 until_break_fsm::clean_up (struct thread_info *)
10981 {
10982   /* Clean up our temporary breakpoints.  */
10983   breakpoints.clear ();
10984   delete_longjmp_breakpoint (thread);
10985 }
10986 
10987 /* Implementation of the 'async_reply_reason' FSM method for the
10988    until(location)/advance commands.  */
10989 
10990 enum async_reply_reason
10991 until_break_fsm::do_async_reply_reason ()
10992 {
10993   return EXEC_ASYNC_LOCATION_REACHED;
10994 }
10995 
10996 void
10997 until_break_command (const char *arg, int from_tty, int anywhere)
10998 {
10999   struct frame_info *frame;
11000   struct gdbarch *frame_gdbarch;
11001   struct frame_id stack_frame_id;
11002   struct frame_id caller_frame_id;
11003   int thread;
11004   struct thread_info *tp;
11005 
11006   clear_proceed_status (0);
11007 
11008   /* Set a breakpoint where the user wants it and at return from
11009      this function.  */
11010 
11011   event_location_up location = string_to_event_location (&arg, current_language);
11012 
11013   std::vector<symtab_and_line> sals
11014     = (last_displayed_sal_is_valid ()
11015        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11016 			get_last_displayed_symtab (),
11017 			get_last_displayed_line ())
11018        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11019 			NULL, NULL, 0));
11020 
11021   if (sals.empty ())
11022     error (_("Couldn't get information on specified line."));
11023 
11024   if (*arg)
11025     error (_("Junk at end of arguments."));
11026 
11027   tp = inferior_thread ();
11028   thread = tp->global_num;
11029 
11030   /* Note linespec handling above invalidates the frame chain.
11031      Installing a breakpoint also invalidates the frame chain (as it
11032      may need to switch threads), so do any frame handling before
11033      that.  */
11034 
11035   frame = get_selected_frame (NULL);
11036   frame_gdbarch = get_frame_arch (frame);
11037   stack_frame_id = get_stack_frame_id (frame);
11038   caller_frame_id = frame_unwind_caller_id (frame);
11039 
11040   /* Keep within the current frame, or in frames called by the current
11041      one.  */
11042 
11043   std::vector<breakpoint_up> breakpoints;
11044 
11045   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11046 
11047   if (frame_id_p (caller_frame_id))
11048     {
11049       struct symtab_and_line sal2;
11050       struct gdbarch *caller_gdbarch;
11051 
11052       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11053       sal2.pc = frame_unwind_caller_pc (frame);
11054       caller_gdbarch = frame_unwind_caller_arch (frame);
11055 
11056       breakpoint_up caller_breakpoint
11057 	= set_momentary_breakpoint (caller_gdbarch, sal2,
11058 				    caller_frame_id, bp_until);
11059       breakpoints.emplace_back (std::move (caller_breakpoint));
11060 
11061       set_longjmp_breakpoint (tp, caller_frame_id);
11062       lj_deleter.emplace (thread);
11063     }
11064 
11065   /* set_momentary_breakpoint could invalidate FRAME.  */
11066   frame = NULL;
11067 
11068   /* If the user told us to continue until a specified location, we
11069      don't specify a frame at which we need to stop.  Otherwise,
11070      specify the selected frame, because we want to stop only at the
11071      very same frame.  */
11072   frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
11073 
11074   for (symtab_and_line &sal : sals)
11075     {
11076       resolve_sal_pc (&sal);
11077 
11078       breakpoint_up location_breakpoint
11079 	= set_momentary_breakpoint (frame_gdbarch, sal,
11080 				    stop_frame_id, bp_until);
11081       breakpoints.emplace_back (std::move (location_breakpoint));
11082     }
11083 
11084   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11085 					std::move (breakpoints));
11086 
11087   if (lj_deleter)
11088     lj_deleter->release ();
11089 
11090   proceed (-1, GDB_SIGNAL_DEFAULT);
11091 }
11092 
11093 /* This function attempts to parse an optional "if <cond>" clause
11094    from the arg string.  If one is not found, it returns NULL.
11095 
11096    Else, it returns a pointer to the condition string.  (It does not
11097    attempt to evaluate the string against a particular block.)  And,
11098    it updates arg to point to the first character following the parsed
11099    if clause in the arg string.  */
11100 
11101 const char *
11102 ep_parse_optional_if_clause (const char **arg)
11103 {
11104   const char *cond_string;
11105 
11106   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11107     return NULL;
11108 
11109   /* Skip the "if" keyword.  */
11110   (*arg) += 2;
11111 
11112   /* Skip any extra leading whitespace, and record the start of the
11113      condition string.  */
11114   *arg = skip_spaces (*arg);
11115   cond_string = *arg;
11116 
11117   /* Assume that the condition occupies the remainder of the arg
11118      string.  */
11119   (*arg) += strlen (cond_string);
11120 
11121   return cond_string;
11122 }
11123 
11124 /* Commands to deal with catching events, such as signals, exceptions,
11125    process start/exit, etc.  */
11126 
11127 typedef enum
11128 {
11129   catch_fork_temporary, catch_vfork_temporary,
11130   catch_fork_permanent, catch_vfork_permanent
11131 }
11132 catch_fork_kind;
11133 
11134 static void
11135 catch_fork_command_1 (const char *arg, int from_tty,
11136 		      struct cmd_list_element *command)
11137 {
11138   struct gdbarch *gdbarch = get_current_arch ();
11139   const char *cond_string = NULL;
11140   catch_fork_kind fork_kind;
11141   int tempflag;
11142 
11143   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11144   tempflag = (fork_kind == catch_fork_temporary
11145 	      || fork_kind == catch_vfork_temporary);
11146 
11147   if (!arg)
11148     arg = "";
11149   arg = skip_spaces (arg);
11150 
11151   /* The allowed syntax is:
11152      catch [v]fork
11153      catch [v]fork if <cond>
11154 
11155      First, check if there's an if clause.  */
11156   cond_string = ep_parse_optional_if_clause (&arg);
11157 
11158   if ((*arg != '\0') && !isspace (*arg))
11159     error (_("Junk at end of arguments."));
11160 
11161   /* If this target supports it, create a fork or vfork catchpoint
11162      and enable reporting of such events.  */
11163   switch (fork_kind)
11164     {
11165     case catch_fork_temporary:
11166     case catch_fork_permanent:
11167       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11168                                           &catch_fork_breakpoint_ops);
11169       break;
11170     case catch_vfork_temporary:
11171     case catch_vfork_permanent:
11172       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11173                                           &catch_vfork_breakpoint_ops);
11174       break;
11175     default:
11176       error (_("unsupported or unknown fork kind; cannot catch it"));
11177       break;
11178     }
11179 }
11180 
11181 static void
11182 catch_exec_command_1 (const char *arg, int from_tty,
11183 		      struct cmd_list_element *command)
11184 {
11185   struct gdbarch *gdbarch = get_current_arch ();
11186   int tempflag;
11187   const char *cond_string = NULL;
11188 
11189   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11190 
11191   if (!arg)
11192     arg = "";
11193   arg = skip_spaces (arg);
11194 
11195   /* The allowed syntax is:
11196      catch exec
11197      catch exec if <cond>
11198 
11199      First, check if there's an if clause.  */
11200   cond_string = ep_parse_optional_if_clause (&arg);
11201 
11202   if ((*arg != '\0') && !isspace (*arg))
11203     error (_("Junk at end of arguments."));
11204 
11205   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11206   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11207 		   &catch_exec_breakpoint_ops);
11208   c->exec_pathname = NULL;
11209 
11210   install_breakpoint (0, std::move (c), 1);
11211 }
11212 
11213 void
11214 init_ada_exception_breakpoint (struct breakpoint *b,
11215 			       struct gdbarch *gdbarch,
11216 			       struct symtab_and_line sal,
11217 			       const char *addr_string,
11218 			       const struct breakpoint_ops *ops,
11219 			       int tempflag,
11220 			       int enabled,
11221 			       int from_tty)
11222 {
11223   if (from_tty)
11224     {
11225       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11226       if (!loc_gdbarch)
11227 	loc_gdbarch = gdbarch;
11228 
11229       describe_other_breakpoints (loc_gdbarch,
11230 				  sal.pspace, sal.pc, sal.section, -1);
11231       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11232          version for exception catchpoints, because two catchpoints
11233          used for different exception names will use the same address.
11234          In this case, a "breakpoint ... also set at..." warning is
11235          unproductive.  Besides, the warning phrasing is also a bit
11236          inappropriate, we should use the word catchpoint, and tell
11237          the user what type of catchpoint it is.  The above is good
11238          enough for now, though.  */
11239     }
11240 
11241   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
11242 
11243   b->enable_state = enabled ? bp_enabled : bp_disabled;
11244   b->disposition = tempflag ? disp_del : disp_donttouch;
11245   b->location = string_to_event_location (&addr_string,
11246 					  language_def (language_ada));
11247   b->language = language_ada;
11248 }
11249 
11250 
11251 
11252 /* Compare two breakpoints and return a strcmp-like result.  */
11253 
11254 static int
11255 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11256 {
11257   uintptr_t ua = (uintptr_t) a;
11258   uintptr_t ub = (uintptr_t) b;
11259 
11260   if (a->number < b->number)
11261     return -1;
11262   else if (a->number > b->number)
11263     return 1;
11264 
11265   /* Now sort by address, in case we see, e..g, two breakpoints with
11266      the number 0.  */
11267   if (ua < ub)
11268     return -1;
11269   return ua > ub ? 1 : 0;
11270 }
11271 
11272 /* Delete breakpoints by address or line.  */
11273 
11274 static void
11275 clear_command (const char *arg, int from_tty)
11276 {
11277   struct breakpoint *b;
11278   int default_match;
11279 
11280   std::vector<symtab_and_line> decoded_sals;
11281   symtab_and_line last_sal;
11282   gdb::array_view<symtab_and_line> sals;
11283   if (arg)
11284     {
11285       decoded_sals
11286 	= decode_line_with_current_source (arg,
11287 					   (DECODE_LINE_FUNFIRSTLINE
11288 					    | DECODE_LINE_LIST_MODE));
11289       default_match = 0;
11290       sals = decoded_sals;
11291     }
11292   else
11293     {
11294       /* Set sal's line, symtab, pc, and pspace to the values
11295 	 corresponding to the last call to print_frame_info.  If the
11296 	 codepoint is not valid, this will set all the fields to 0.  */
11297       last_sal = get_last_displayed_sal ();
11298       if (last_sal.symtab == 0)
11299 	error (_("No source file specified."));
11300 
11301       default_match = 1;
11302       sals = last_sal;
11303     }
11304 
11305   /* We don't call resolve_sal_pc here.  That's not as bad as it
11306      seems, because all existing breakpoints typically have both
11307      file/line and pc set.  So, if clear is given file/line, we can
11308      match this to existing breakpoint without obtaining pc at all.
11309 
11310      We only support clearing given the address explicitly
11311      present in breakpoint table.  Say, we've set breakpoint
11312      at file:line.  There were several PC values for that file:line,
11313      due to optimization, all in one block.
11314 
11315      We've picked one PC value.  If "clear" is issued with another
11316      PC corresponding to the same file:line, the breakpoint won't
11317      be cleared.  We probably can still clear the breakpoint, but
11318      since the other PC value is never presented to user, user
11319      can only find it by guessing, and it does not seem important
11320      to support that.  */
11321 
11322   /* For each line spec given, delete bps which correspond to it.  Do
11323      it in two passes, solely to preserve the current behavior that
11324      from_tty is forced true if we delete more than one
11325      breakpoint.  */
11326 
11327   std::vector<struct breakpoint *> found;
11328   for (const auto &sal : sals)
11329     {
11330       const char *sal_fullname;
11331 
11332       /* If exact pc given, clear bpts at that pc.
11333          If line given (pc == 0), clear all bpts on specified line.
11334          If defaulting, clear all bpts on default line
11335          or at default pc.
11336 
11337          defaulting    sal.pc != 0    tests to do
11338 
11339          0              1             pc
11340          1              1             pc _and_ line
11341          0              0             line
11342          1              0             <can't happen> */
11343 
11344       sal_fullname = (sal.symtab == NULL
11345 		      ? NULL : symtab_to_fullname (sal.symtab));
11346 
11347       /* Find all matching breakpoints and add them to 'found'.  */
11348       ALL_BREAKPOINTS (b)
11349 	{
11350 	  int match = 0;
11351 	  /* Are we going to delete b?  */
11352 	  if (b->type != bp_none && !is_watchpoint (b))
11353 	    {
11354 	      struct bp_location *loc = b->loc;
11355 	      for (; loc; loc = loc->next)
11356 		{
11357 		  /* If the user specified file:line, don't allow a PC
11358 		     match.  This matches historical gdb behavior.  */
11359 		  int pc_match = (!sal.explicit_line
11360 				  && sal.pc
11361 				  && (loc->pspace == sal.pspace)
11362 				  && (loc->address == sal.pc)
11363 				  && (!section_is_overlay (loc->section)
11364 				      || loc->section == sal.section));
11365 		  int line_match = 0;
11366 
11367 		  if ((default_match || sal.explicit_line)
11368 		      && loc->symtab != NULL
11369 		      && sal_fullname != NULL
11370 		      && sal.pspace == loc->pspace
11371 		      && loc->line_number == sal.line
11372 		      && filename_cmp (symtab_to_fullname (loc->symtab),
11373 				       sal_fullname) == 0)
11374 		    line_match = 1;
11375 
11376 		  if (pc_match || line_match)
11377 		    {
11378 		      match = 1;
11379 		      break;
11380 		    }
11381 		}
11382 	    }
11383 
11384 	  if (match)
11385 	    found.push_back (b);
11386 	}
11387     }
11388 
11389   /* Now go thru the 'found' chain and delete them.  */
11390   if (found.empty ())
11391     {
11392       if (arg)
11393 	error (_("No breakpoint at %s."), arg);
11394       else
11395 	error (_("No breakpoint at this line."));
11396     }
11397 
11398   /* Remove duplicates from the vec.  */
11399   std::sort (found.begin (), found.end (),
11400 	     [] (const breakpoint *bp_a, const breakpoint *bp_b)
11401 	     {
11402 	       return compare_breakpoints (bp_a, bp_b) < 0;
11403 	     });
11404   found.erase (std::unique (found.begin (), found.end (),
11405 			    [] (const breakpoint *bp_a, const breakpoint *bp_b)
11406 			    {
11407 			      return compare_breakpoints (bp_a, bp_b) == 0;
11408 			    }),
11409 	       found.end ());
11410 
11411   if (found.size () > 1)
11412     from_tty = 1;	/* Always report if deleted more than one.  */
11413   if (from_tty)
11414     {
11415       if (found.size () == 1)
11416 	printf_unfiltered (_("Deleted breakpoint "));
11417       else
11418 	printf_unfiltered (_("Deleted breakpoints "));
11419     }
11420 
11421   for (breakpoint *iter : found)
11422     {
11423       if (from_tty)
11424 	printf_unfiltered ("%d ", iter->number);
11425       delete_breakpoint (iter);
11426     }
11427   if (from_tty)
11428     putchar_unfiltered ('\n');
11429 }
11430 
11431 /* Delete breakpoint in BS if they are `delete' breakpoints and
11432    all breakpoints that are marked for deletion, whether hit or not.
11433    This is called after any breakpoint is hit, or after errors.  */
11434 
11435 void
11436 breakpoint_auto_delete (bpstat bs)
11437 {
11438   struct breakpoint *b, *b_tmp;
11439 
11440   for (; bs; bs = bs->next)
11441     if (bs->breakpoint_at
11442 	&& bs->breakpoint_at->disposition == disp_del
11443 	&& bs->stop)
11444       delete_breakpoint (bs->breakpoint_at);
11445 
11446   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11447   {
11448     if (b->disposition == disp_del_at_next_stop)
11449       delete_breakpoint (b);
11450   }
11451 }
11452 
11453 /* A comparison function for bp_location AP and BP being interfaced to
11454    std::sort.  Sort elements primarily by their ADDRESS (no matter what
11455    bl_address_is_meaningful says), secondarily by ordering first
11456    permanent elements and terciarily just ensuring the array is sorted
11457    stable way despite std::sort being an unstable algorithm.  */
11458 
11459 static int
11460 bp_location_is_less_than (const bp_location *a, const bp_location *b)
11461 {
11462   if (a->address != b->address)
11463     return a->address < b->address;
11464 
11465   /* Sort locations at the same address by their pspace number, keeping
11466      locations of the same inferior (in a multi-inferior environment)
11467      grouped.  */
11468 
11469   if (a->pspace->num != b->pspace->num)
11470     return a->pspace->num < b->pspace->num;
11471 
11472   /* Sort permanent breakpoints first.  */
11473   if (a->permanent != b->permanent)
11474     return a->permanent > b->permanent;
11475 
11476   /* Sort by type in order to make duplicate determination easier.
11477      See update_global_location_list.  This is kept in sync with
11478      breakpoint_locations_match.  */
11479   if (a->loc_type < b->loc_type)
11480     return true;
11481 
11482   /* Likewise, for range-breakpoints, sort by length.  */
11483   if (a->loc_type == bp_loc_hardware_breakpoint
11484       && b->loc_type == bp_loc_hardware_breakpoint
11485       && a->length < b->length)
11486     return true;
11487 
11488   /* Make the internal GDB representation stable across GDB runs
11489      where A and B memory inside GDB can differ.  Breakpoint locations of
11490      the same type at the same address can be sorted in arbitrary order.  */
11491 
11492   if (a->owner->number != b->owner->number)
11493     return a->owner->number < b->owner->number;
11494 
11495   return a < b;
11496 }
11497 
11498 /* Set bp_locations_placed_address_before_address_max and
11499    bp_locations_shadow_len_after_address_max according to the current
11500    content of the bp_locations array.  */
11501 
11502 static void
11503 bp_locations_target_extensions_update (void)
11504 {
11505   struct bp_location *bl, **blp_tmp;
11506 
11507   bp_locations_placed_address_before_address_max = 0;
11508   bp_locations_shadow_len_after_address_max = 0;
11509 
11510   ALL_BP_LOCATIONS (bl, blp_tmp)
11511     {
11512       CORE_ADDR start, end, addr;
11513 
11514       if (!bp_location_has_shadow (bl))
11515 	continue;
11516 
11517       start = bl->target_info.placed_address;
11518       end = start + bl->target_info.shadow_len;
11519 
11520       gdb_assert (bl->address >= start);
11521       addr = bl->address - start;
11522       if (addr > bp_locations_placed_address_before_address_max)
11523 	bp_locations_placed_address_before_address_max = addr;
11524 
11525       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11526 
11527       gdb_assert (bl->address < end);
11528       addr = end - bl->address;
11529       if (addr > bp_locations_shadow_len_after_address_max)
11530 	bp_locations_shadow_len_after_address_max = addr;
11531     }
11532 }
11533 
11534 /* Download tracepoint locations if they haven't been.  */
11535 
11536 static void
11537 download_tracepoint_locations (void)
11538 {
11539   struct breakpoint *b;
11540   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11541 
11542   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11543 
11544   ALL_TRACEPOINTS (b)
11545     {
11546       struct bp_location *bl;
11547       struct tracepoint *t;
11548       int bp_location_downloaded = 0;
11549 
11550       if ((b->type == bp_fast_tracepoint
11551 	   ? !may_insert_fast_tracepoints
11552 	   : !may_insert_tracepoints))
11553 	continue;
11554 
11555       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11556 	{
11557 	  if (target_can_download_tracepoint ())
11558 	    can_download_tracepoint = TRIBOOL_TRUE;
11559 	  else
11560 	    can_download_tracepoint = TRIBOOL_FALSE;
11561 	}
11562 
11563       if (can_download_tracepoint == TRIBOOL_FALSE)
11564 	break;
11565 
11566       for (bl = b->loc; bl; bl = bl->next)
11567 	{
11568 	  /* In tracepoint, locations are _never_ duplicated, so
11569 	     should_be_inserted is equivalent to
11570 	     unduplicated_should_be_inserted.  */
11571 	  if (!should_be_inserted (bl) || bl->inserted)
11572 	    continue;
11573 
11574 	  switch_to_program_space_and_thread (bl->pspace);
11575 
11576 	  target_download_tracepoint (bl);
11577 
11578 	  bl->inserted = 1;
11579 	  bp_location_downloaded = 1;
11580 	}
11581       t = (struct tracepoint *) b;
11582       t->number_on_target = b->number;
11583       if (bp_location_downloaded)
11584 	gdb::observers::breakpoint_modified.notify (b);
11585     }
11586 }
11587 
11588 /* Swap the insertion/duplication state between two locations.  */
11589 
11590 static void
11591 swap_insertion (struct bp_location *left, struct bp_location *right)
11592 {
11593   const int left_inserted = left->inserted;
11594   const int left_duplicate = left->duplicate;
11595   const int left_needs_update = left->needs_update;
11596   const struct bp_target_info left_target_info = left->target_info;
11597 
11598   /* Locations of tracepoints can never be duplicated.  */
11599   if (is_tracepoint (left->owner))
11600     gdb_assert (!left->duplicate);
11601   if (is_tracepoint (right->owner))
11602     gdb_assert (!right->duplicate);
11603 
11604   left->inserted = right->inserted;
11605   left->duplicate = right->duplicate;
11606   left->needs_update = right->needs_update;
11607   left->target_info = right->target_info;
11608   right->inserted = left_inserted;
11609   right->duplicate = left_duplicate;
11610   right->needs_update = left_needs_update;
11611   right->target_info = left_target_info;
11612 }
11613 
11614 /* Force the re-insertion of the locations at ADDRESS.  This is called
11615    once a new/deleted/modified duplicate location is found and we are evaluating
11616    conditions on the target's side.  Such conditions need to be updated on
11617    the target.  */
11618 
11619 static void
11620 force_breakpoint_reinsertion (struct bp_location *bl)
11621 {
11622   struct bp_location **locp = NULL, **loc2p;
11623   struct bp_location *loc;
11624   CORE_ADDR address = 0;
11625   int pspace_num;
11626 
11627   address = bl->address;
11628   pspace_num = bl->pspace->num;
11629 
11630   /* This is only meaningful if the target is
11631      evaluating conditions and if the user has
11632      opted for condition evaluation on the target's
11633      side.  */
11634   if (gdb_evaluates_breakpoint_condition_p ()
11635       || !target_supports_evaluation_of_breakpoint_conditions ())
11636     return;
11637 
11638   /* Flag all breakpoint locations with this address and
11639      the same program space as the location
11640      as "its condition has changed".  We need to
11641      update the conditions on the target's side.  */
11642   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11643     {
11644       loc = *loc2p;
11645 
11646       if (!is_breakpoint (loc->owner)
11647 	  || pspace_num != loc->pspace->num)
11648 	continue;
11649 
11650       /* Flag the location appropriately.  We use a different state to
11651 	 let everyone know that we already updated the set of locations
11652 	 with addr bl->address and program space bl->pspace.  This is so
11653 	 we don't have to keep calling these functions just to mark locations
11654 	 that have already been marked.  */
11655       loc->condition_changed = condition_updated;
11656 
11657       /* Free the agent expression bytecode as well.  We will compute
11658 	 it later on.  */
11659       loc->cond_bytecode.reset ();
11660     }
11661 }
11662 
11663 /* Called whether new breakpoints are created, or existing breakpoints
11664    deleted, to update the global location list and recompute which
11665    locations are duplicate of which.
11666 
11667    The INSERT_MODE flag determines whether locations may not, may, or
11668    shall be inserted now.  See 'enum ugll_insert_mode' for more
11669    info.  */
11670 
11671 static void
11672 update_global_location_list (enum ugll_insert_mode insert_mode)
11673 {
11674   struct breakpoint *b;
11675   struct bp_location **locp, *loc;
11676   /* Last breakpoint location address that was marked for update.  */
11677   CORE_ADDR last_addr = 0;
11678   /* Last breakpoint location program space that was marked for update.  */
11679   int last_pspace_num = -1;
11680 
11681   /* Used in the duplicates detection below.  When iterating over all
11682      bp_locations, points to the first bp_location of a given address.
11683      Breakpoints and watchpoints of different types are never
11684      duplicates of each other.  Keep one pointer for each type of
11685      breakpoint/watchpoint, so we only need to loop over all locations
11686      once.  */
11687   struct bp_location *bp_loc_first;  /* breakpoint */
11688   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11689   struct bp_location *awp_loc_first; /* access watchpoint */
11690   struct bp_location *rwp_loc_first; /* read watchpoint */
11691 
11692   /* Saved former bp_locations array which we compare against the newly
11693      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11694   struct bp_location **old_locp;
11695   unsigned old_locations_count;
11696   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11697 
11698   old_locations_count = bp_locations_count;
11699   bp_locations = NULL;
11700   bp_locations_count = 0;
11701 
11702   ALL_BREAKPOINTS (b)
11703     for (loc = b->loc; loc; loc = loc->next)
11704       bp_locations_count++;
11705 
11706   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11707   locp = bp_locations;
11708   ALL_BREAKPOINTS (b)
11709     for (loc = b->loc; loc; loc = loc->next)
11710       *locp++ = loc;
11711 
11712   /* See if we need to "upgrade" a software breakpoint to a hardware
11713      breakpoint.  Do this before deciding whether locations are
11714      duplicates.  Also do this before sorting because sorting order
11715      depends on location type.  */
11716   for (locp = bp_locations;
11717        locp < bp_locations + bp_locations_count;
11718        locp++)
11719     {
11720       loc = *locp;
11721       if (!loc->inserted && should_be_inserted (loc))
11722 	handle_automatic_hardware_breakpoints (loc);
11723     }
11724 
11725   std::sort (bp_locations, bp_locations + bp_locations_count,
11726 	     bp_location_is_less_than);
11727 
11728   bp_locations_target_extensions_update ();
11729 
11730   /* Identify bp_location instances that are no longer present in the
11731      new list, and therefore should be freed.  Note that it's not
11732      necessary that those locations should be removed from inferior --
11733      if there's another location at the same address (previously
11734      marked as duplicate), we don't need to remove/insert the
11735      location.
11736 
11737      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11738      and former bp_location array state respectively.  */
11739 
11740   locp = bp_locations;
11741   for (old_locp = old_locations.get ();
11742        old_locp < old_locations.get () + old_locations_count;
11743        old_locp++)
11744     {
11745       struct bp_location *old_loc = *old_locp;
11746       struct bp_location **loc2p;
11747 
11748       /* Tells if 'old_loc' is found among the new locations.  If
11749 	 not, we have to free it.  */
11750       int found_object = 0;
11751       /* Tells if the location should remain inserted in the target.  */
11752       int keep_in_target = 0;
11753       int removed = 0;
11754 
11755       /* Skip LOCP entries which will definitely never be needed.
11756 	 Stop either at or being the one matching OLD_LOC.  */
11757       while (locp < bp_locations + bp_locations_count
11758 	     && (*locp)->address < old_loc->address)
11759 	locp++;
11760 
11761       for (loc2p = locp;
11762 	   (loc2p < bp_locations + bp_locations_count
11763 	    && (*loc2p)->address == old_loc->address);
11764 	   loc2p++)
11765 	{
11766 	  /* Check if this is a new/duplicated location or a duplicated
11767 	     location that had its condition modified.  If so, we want to send
11768 	     its condition to the target if evaluation of conditions is taking
11769 	     place there.  */
11770 	  if ((*loc2p)->condition_changed == condition_modified
11771 	      && (last_addr != old_loc->address
11772 		  || last_pspace_num != old_loc->pspace->num))
11773 	    {
11774 	      force_breakpoint_reinsertion (*loc2p);
11775 	      last_pspace_num = old_loc->pspace->num;
11776 	    }
11777 
11778 	  if (*loc2p == old_loc)
11779 	    found_object = 1;
11780 	}
11781 
11782       /* We have already handled this address, update it so that we don't
11783 	 have to go through updates again.  */
11784       last_addr = old_loc->address;
11785 
11786       /* Target-side condition evaluation: Handle deleted locations.  */
11787       if (!found_object)
11788 	force_breakpoint_reinsertion (old_loc);
11789 
11790       /* If this location is no longer present, and inserted, look if
11791 	 there's maybe a new location at the same address.  If so,
11792 	 mark that one inserted, and don't remove this one.  This is
11793 	 needed so that we don't have a time window where a breakpoint
11794 	 at certain location is not inserted.  */
11795 
11796       if (old_loc->inserted)
11797 	{
11798 	  /* If the location is inserted now, we might have to remove
11799 	     it.  */
11800 
11801 	  if (found_object && should_be_inserted (old_loc))
11802 	    {
11803 	      /* The location is still present in the location list,
11804 		 and still should be inserted.  Don't do anything.  */
11805 	      keep_in_target = 1;
11806 	    }
11807 	  else
11808 	    {
11809 	      /* This location still exists, but it won't be kept in the
11810 		 target since it may have been disabled.  We proceed to
11811 		 remove its target-side condition.  */
11812 
11813 	      /* The location is either no longer present, or got
11814 		 disabled.  See if there's another location at the
11815 		 same address, in which case we don't need to remove
11816 		 this one from the target.  */
11817 
11818 	      /* OLD_LOC comes from existing struct breakpoint.  */
11819 	      if (bl_address_is_meaningful (old_loc))
11820 		{
11821 		  for (loc2p = locp;
11822 		       (loc2p < bp_locations + bp_locations_count
11823 			&& (*loc2p)->address == old_loc->address);
11824 		       loc2p++)
11825 		    {
11826 		      struct bp_location *loc2 = *loc2p;
11827 
11828 		      if (loc2 == old_loc)
11829 			continue;
11830 
11831 		      if (breakpoint_locations_match (loc2, old_loc))
11832 			{
11833 			  /* Read watchpoint locations are switched to
11834 			     access watchpoints, if the former are not
11835 			     supported, but the latter are.  */
11836 			  if (is_hardware_watchpoint (old_loc->owner))
11837 			    {
11838 			      gdb_assert (is_hardware_watchpoint (loc2->owner));
11839 			      loc2->watchpoint_type = old_loc->watchpoint_type;
11840 			    }
11841 
11842 			  /* loc2 is a duplicated location. We need to check
11843 			     if it should be inserted in case it will be
11844 			     unduplicated.  */
11845 			  if (unduplicated_should_be_inserted (loc2))
11846 			    {
11847 			      swap_insertion (old_loc, loc2);
11848 			      keep_in_target = 1;
11849 			      break;
11850 			    }
11851 			}
11852 		    }
11853 		}
11854 	    }
11855 
11856 	  if (!keep_in_target)
11857 	    {
11858 	      if (remove_breakpoint (old_loc))
11859 		{
11860 		  /* This is just about all we can do.  We could keep
11861 		     this location on the global list, and try to
11862 		     remove it next time, but there's no particular
11863 		     reason why we will succeed next time.
11864 
11865 		     Note that at this point, old_loc->owner is still
11866 		     valid, as delete_breakpoint frees the breakpoint
11867 		     only after calling us.  */
11868 		  printf_filtered (_("warning: Error removing "
11869 				     "breakpoint %d\n"),
11870 				   old_loc->owner->number);
11871 		}
11872 	      removed = 1;
11873 	    }
11874 	}
11875 
11876       if (!found_object)
11877 	{
11878 	  if (removed && target_is_non_stop_p ()
11879 	      && need_moribund_for_location_type (old_loc))
11880 	    {
11881 	      /* This location was removed from the target.  In
11882 		 non-stop mode, a race condition is possible where
11883 		 we've removed a breakpoint, but stop events for that
11884 		 breakpoint are already queued and will arrive later.
11885 		 We apply an heuristic to be able to distinguish such
11886 		 SIGTRAPs from other random SIGTRAPs: we keep this
11887 		 breakpoint location for a bit, and will retire it
11888 		 after we see some number of events.  The theory here
11889 		 is that reporting of events should, "on the average",
11890 		 be fair, so after a while we'll see events from all
11891 		 threads that have anything of interest, and no longer
11892 		 need to keep this breakpoint location around.  We
11893 		 don't hold locations forever so to reduce chances of
11894 		 mistaking a non-breakpoint SIGTRAP for a breakpoint
11895 		 SIGTRAP.
11896 
11897 		 The heuristic failing can be disastrous on
11898 		 decr_pc_after_break targets.
11899 
11900 		 On decr_pc_after_break targets, like e.g., x86-linux,
11901 		 if we fail to recognize a late breakpoint SIGTRAP,
11902 		 because events_till_retirement has reached 0 too
11903 		 soon, we'll fail to do the PC adjustment, and report
11904 		 a random SIGTRAP to the user.  When the user resumes
11905 		 the inferior, it will most likely immediately crash
11906 		 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11907 		 corrupted, because of being resumed e.g., in the
11908 		 middle of a multi-byte instruction, or skipped a
11909 		 one-byte instruction.  This was actually seen happen
11910 		 on native x86-linux, and should be less rare on
11911 		 targets that do not support new thread events, like
11912 		 remote, due to the heuristic depending on
11913 		 thread_count.
11914 
11915 		 Mistaking a random SIGTRAP for a breakpoint trap
11916 		 causes similar symptoms (PC adjustment applied when
11917 		 it shouldn't), but then again, playing with SIGTRAPs
11918 		 behind the debugger's back is asking for trouble.
11919 
11920 		 Since hardware watchpoint traps are always
11921 		 distinguishable from other traps, so we don't need to
11922 		 apply keep hardware watchpoint moribund locations
11923 		 around.  We simply always ignore hardware watchpoint
11924 		 traps we can no longer explain.  */
11925 
11926 	      process_stratum_target *proc_target = nullptr;
11927 	      for (inferior *inf : all_inferiors ())
11928 		if (inf->pspace == old_loc->pspace)
11929 		  {
11930 		    proc_target = inf->process_target ();
11931 		    break;
11932 		  }
11933 	      if (proc_target != nullptr)
11934 		old_loc->events_till_retirement
11935 		  = 3 * (thread_count (proc_target) + 1);
11936 	      else
11937 		old_loc->events_till_retirement = 1;
11938 	      old_loc->owner = NULL;
11939 
11940 	      moribund_locations.push_back (old_loc);
11941 	    }
11942 	  else
11943 	    {
11944 	      old_loc->owner = NULL;
11945 	      decref_bp_location (&old_loc);
11946 	    }
11947 	}
11948     }
11949 
11950   /* Rescan breakpoints at the same address and section, marking the
11951      first one as "first" and any others as "duplicates".  This is so
11952      that the bpt instruction is only inserted once.  If we have a
11953      permanent breakpoint at the same place as BPT, make that one the
11954      official one, and the rest as duplicates.  Permanent breakpoints
11955      are sorted first for the same address.
11956 
11957      Do the same for hardware watchpoints, but also considering the
11958      watchpoint's type (regular/access/read) and length.  */
11959 
11960   bp_loc_first = NULL;
11961   wp_loc_first = NULL;
11962   awp_loc_first = NULL;
11963   rwp_loc_first = NULL;
11964   ALL_BP_LOCATIONS (loc, locp)
11965     {
11966       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11967 	 non-NULL.  */
11968       struct bp_location **loc_first_p;
11969       b = loc->owner;
11970 
11971       if (!unduplicated_should_be_inserted (loc)
11972 	  || !bl_address_is_meaningful (loc)
11973 	  /* Don't detect duplicate for tracepoint locations because they are
11974 	   never duplicated.  See the comments in field `duplicate' of
11975 	   `struct bp_location'.  */
11976 	  || is_tracepoint (b))
11977 	{
11978 	  /* Clear the condition modification flag.  */
11979 	  loc->condition_changed = condition_unchanged;
11980 	  continue;
11981 	}
11982 
11983       if (b->type == bp_hardware_watchpoint)
11984 	loc_first_p = &wp_loc_first;
11985       else if (b->type == bp_read_watchpoint)
11986 	loc_first_p = &rwp_loc_first;
11987       else if (b->type == bp_access_watchpoint)
11988 	loc_first_p = &awp_loc_first;
11989       else
11990 	loc_first_p = &bp_loc_first;
11991 
11992       if (*loc_first_p == NULL
11993 	  || (overlay_debugging && loc->section != (*loc_first_p)->section)
11994 	  || !breakpoint_locations_match (loc, *loc_first_p))
11995 	{
11996 	  *loc_first_p = loc;
11997 	  loc->duplicate = 0;
11998 
11999 	  if (is_breakpoint (loc->owner) && loc->condition_changed)
12000 	    {
12001 	      loc->needs_update = 1;
12002 	      /* Clear the condition modification flag.  */
12003 	      loc->condition_changed = condition_unchanged;
12004 	    }
12005 	  continue;
12006 	}
12007 
12008 
12009       /* This and the above ensure the invariant that the first location
12010 	 is not duplicated, and is the inserted one.
12011 	 All following are marked as duplicated, and are not inserted.  */
12012       if (loc->inserted)
12013 	swap_insertion (loc, *loc_first_p);
12014       loc->duplicate = 1;
12015 
12016       /* Clear the condition modification flag.  */
12017       loc->condition_changed = condition_unchanged;
12018     }
12019 
12020   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12021     {
12022       if (insert_mode != UGLL_DONT_INSERT)
12023 	insert_breakpoint_locations ();
12024       else
12025 	{
12026 	  /* Even though the caller told us to not insert new
12027 	     locations, we may still need to update conditions on the
12028 	     target's side of breakpoints that were already inserted
12029 	     if the target is evaluating breakpoint conditions.  We
12030 	     only update conditions for locations that are marked
12031 	     "needs_update".  */
12032 	  update_inserted_breakpoint_locations ();
12033 	}
12034     }
12035 
12036   if (insert_mode != UGLL_DONT_INSERT)
12037     download_tracepoint_locations ();
12038 }
12039 
12040 void
12041 breakpoint_retire_moribund (void)
12042 {
12043   for (int ix = 0; ix < moribund_locations.size (); ++ix)
12044     {
12045       struct bp_location *loc = moribund_locations[ix];
12046       if (--(loc->events_till_retirement) == 0)
12047 	{
12048 	  decref_bp_location (&loc);
12049 	  unordered_remove (moribund_locations, ix);
12050 	  --ix;
12051 	}
12052     }
12053 }
12054 
12055 static void
12056 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12057 {
12058 
12059   try
12060     {
12061       update_global_location_list (insert_mode);
12062     }
12063   catch (const gdb_exception_error &e)
12064     {
12065     }
12066 }
12067 
12068 /* Clear BKP from a BPS.  */
12069 
12070 static void
12071 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12072 {
12073   bpstat bs;
12074 
12075   for (bs = bps; bs; bs = bs->next)
12076     if (bs->breakpoint_at == bpt)
12077       {
12078 	bs->breakpoint_at = NULL;
12079 	bs->old_val = NULL;
12080 	/* bs->commands will be freed later.  */
12081       }
12082 }
12083 
12084 /* Callback for iterate_over_threads.  */
12085 static int
12086 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12087 {
12088   struct breakpoint *bpt = (struct breakpoint *) data;
12089 
12090   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12091   return 0;
12092 }
12093 
12094 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12095    callbacks.  */
12096 
12097 static void
12098 say_where (struct breakpoint *b)
12099 {
12100   struct value_print_options opts;
12101 
12102   get_user_print_options (&opts);
12103 
12104   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12105      single string.  */
12106   if (b->loc == NULL)
12107     {
12108       /* For pending locations, the output differs slightly based
12109 	 on b->extra_string.  If this is non-NULL, it contains either
12110 	 a condition or dprintf arguments.  */
12111       if (b->extra_string == NULL)
12112 	{
12113 	  printf_filtered (_(" (%s) pending."),
12114 			   event_location_to_string (b->location.get ()));
12115 	}
12116       else if (b->type == bp_dprintf)
12117 	{
12118 	  printf_filtered (_(" (%s,%s) pending."),
12119 			   event_location_to_string (b->location.get ()),
12120 			   b->extra_string);
12121 	}
12122       else
12123 	{
12124 	  printf_filtered (_(" (%s %s) pending."),
12125 			   event_location_to_string (b->location.get ()),
12126 			   b->extra_string);
12127 	}
12128     }
12129   else
12130     {
12131       if (opts.addressprint || b->loc->symtab == NULL)
12132 	printf_filtered (" at %ps",
12133 			 styled_string (address_style.style (),
12134 					paddress (b->loc->gdbarch,
12135 						  b->loc->address)));
12136       if (b->loc->symtab != NULL)
12137 	{
12138 	  /* If there is a single location, we can print the location
12139 	     more nicely.  */
12140 	  if (b->loc->next == NULL)
12141 	    {
12142 	      const char *filename
12143 		= symtab_to_filename_for_display (b->loc->symtab);
12144 	      printf_filtered (": file %ps, line %d.",
12145 			       styled_string (file_name_style.style (),
12146 					      filename),
12147 			       b->loc->line_number);
12148 	    }
12149 	  else
12150 	    /* This is not ideal, but each location may have a
12151 	       different file name, and this at least reflects the
12152 	       real situation somewhat.  */
12153 	    printf_filtered (": %s.",
12154 			     event_location_to_string (b->location.get ()));
12155 	}
12156 
12157       if (b->loc->next)
12158 	{
12159 	  struct bp_location *loc = b->loc;
12160 	  int n = 0;
12161 	  for (; loc; loc = loc->next)
12162 	    ++n;
12163 	  printf_filtered (" (%d locations)", n);
12164 	}
12165     }
12166 }
12167 
12168 bp_location::~bp_location ()
12169 {
12170   xfree (function_name);
12171 }
12172 
12173 /* Destructor for the breakpoint base class.  */
12174 
12175 breakpoint::~breakpoint ()
12176 {
12177   xfree (this->cond_string);
12178   xfree (this->extra_string);
12179 }
12180 
12181 static struct bp_location *
12182 base_breakpoint_allocate_location (struct breakpoint *self)
12183 {
12184   return new bp_location (self);
12185 }
12186 
12187 static void
12188 base_breakpoint_re_set (struct breakpoint *b)
12189 {
12190   /* Nothing to re-set. */
12191 }
12192 
12193 #define internal_error_pure_virtual_called() \
12194   gdb_assert_not_reached ("pure virtual function called")
12195 
12196 static int
12197 base_breakpoint_insert_location (struct bp_location *bl)
12198 {
12199   internal_error_pure_virtual_called ();
12200 }
12201 
12202 static int
12203 base_breakpoint_remove_location (struct bp_location *bl,
12204 				 enum remove_bp_reason reason)
12205 {
12206   internal_error_pure_virtual_called ();
12207 }
12208 
12209 static int
12210 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12211 				const address_space *aspace,
12212 				CORE_ADDR bp_addr,
12213 				const struct target_waitstatus *ws)
12214 {
12215   internal_error_pure_virtual_called ();
12216 }
12217 
12218 static void
12219 base_breakpoint_check_status (bpstat bs)
12220 {
12221   /* Always stop.   */
12222 }
12223 
12224 /* A "works_in_software_mode" breakpoint_ops method that just internal
12225    errors.  */
12226 
12227 static int
12228 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12229 {
12230   internal_error_pure_virtual_called ();
12231 }
12232 
12233 /* A "resources_needed" breakpoint_ops method that just internal
12234    errors.  */
12235 
12236 static int
12237 base_breakpoint_resources_needed (const struct bp_location *bl)
12238 {
12239   internal_error_pure_virtual_called ();
12240 }
12241 
12242 static enum print_stop_action
12243 base_breakpoint_print_it (bpstat bs)
12244 {
12245   internal_error_pure_virtual_called ();
12246 }
12247 
12248 static void
12249 base_breakpoint_print_one_detail (const struct breakpoint *self,
12250 				  struct ui_out *uiout)
12251 {
12252   /* nothing */
12253 }
12254 
12255 static void
12256 base_breakpoint_print_mention (struct breakpoint *b)
12257 {
12258   internal_error_pure_virtual_called ();
12259 }
12260 
12261 static void
12262 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12263 {
12264   internal_error_pure_virtual_called ();
12265 }
12266 
12267 static void
12268 base_breakpoint_create_sals_from_location
12269   (struct event_location *location,
12270    struct linespec_result *canonical,
12271    enum bptype type_wanted)
12272 {
12273   internal_error_pure_virtual_called ();
12274 }
12275 
12276 static void
12277 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12278 					struct linespec_result *c,
12279 					gdb::unique_xmalloc_ptr<char> cond_string,
12280 					gdb::unique_xmalloc_ptr<char> extra_string,
12281 					enum bptype type_wanted,
12282 					enum bpdisp disposition,
12283 					int thread,
12284 					int task, int ignore_count,
12285 					const struct breakpoint_ops *o,
12286 					int from_tty, int enabled,
12287 					int internal, unsigned flags)
12288 {
12289   internal_error_pure_virtual_called ();
12290 }
12291 
12292 static std::vector<symtab_and_line>
12293 base_breakpoint_decode_location (struct breakpoint *b,
12294 				 struct event_location *location,
12295 				 struct program_space *search_pspace)
12296 {
12297   internal_error_pure_virtual_called ();
12298 }
12299 
12300 /* The default 'explains_signal' method.  */
12301 
12302 static int
12303 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12304 {
12305   return 1;
12306 }
12307 
12308 /* The default "after_condition_true" method.  */
12309 
12310 static void
12311 base_breakpoint_after_condition_true (struct bpstats *bs)
12312 {
12313   /* Nothing to do.   */
12314 }
12315 
12316 struct breakpoint_ops base_breakpoint_ops =
12317 {
12318   base_breakpoint_allocate_location,
12319   base_breakpoint_re_set,
12320   base_breakpoint_insert_location,
12321   base_breakpoint_remove_location,
12322   base_breakpoint_breakpoint_hit,
12323   base_breakpoint_check_status,
12324   base_breakpoint_resources_needed,
12325   base_breakpoint_works_in_software_mode,
12326   base_breakpoint_print_it,
12327   NULL,
12328   base_breakpoint_print_one_detail,
12329   base_breakpoint_print_mention,
12330   base_breakpoint_print_recreate,
12331   base_breakpoint_create_sals_from_location,
12332   base_breakpoint_create_breakpoints_sal,
12333   base_breakpoint_decode_location,
12334   base_breakpoint_explains_signal,
12335   base_breakpoint_after_condition_true,
12336 };
12337 
12338 /* Default breakpoint_ops methods.  */
12339 
12340 static void
12341 bkpt_re_set (struct breakpoint *b)
12342 {
12343   /* FIXME: is this still reachable?  */
12344   if (breakpoint_event_location_empty_p (b))
12345     {
12346       /* Anything without a location can't be re-set.  */
12347       delete_breakpoint (b);
12348       return;
12349     }
12350 
12351   breakpoint_re_set_default (b);
12352 }
12353 
12354 static int
12355 bkpt_insert_location (struct bp_location *bl)
12356 {
12357   CORE_ADDR addr = bl->target_info.reqstd_address;
12358 
12359   bl->target_info.kind = breakpoint_kind (bl, &addr);
12360   bl->target_info.placed_address = addr;
12361 
12362   if (bl->loc_type == bp_loc_hardware_breakpoint)
12363     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12364   else
12365     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12366 }
12367 
12368 static int
12369 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12370 {
12371   if (bl->loc_type == bp_loc_hardware_breakpoint)
12372     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12373   else
12374     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12375 }
12376 
12377 static int
12378 bkpt_breakpoint_hit (const struct bp_location *bl,
12379 		     const address_space *aspace, CORE_ADDR bp_addr,
12380 		     const struct target_waitstatus *ws)
12381 {
12382   if (ws->kind != TARGET_WAITKIND_STOPPED
12383       || ws->value.sig != GDB_SIGNAL_TRAP)
12384     return 0;
12385 
12386   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12387 				 aspace, bp_addr))
12388     return 0;
12389 
12390   if (overlay_debugging		/* unmapped overlay section */
12391       && section_is_overlay (bl->section)
12392       && !section_is_mapped (bl->section))
12393     return 0;
12394 
12395   return 1;
12396 }
12397 
12398 static int
12399 dprintf_breakpoint_hit (const struct bp_location *bl,
12400 			const address_space *aspace, CORE_ADDR bp_addr,
12401 			const struct target_waitstatus *ws)
12402 {
12403   if (dprintf_style == dprintf_style_agent
12404       && target_can_run_breakpoint_commands ())
12405     {
12406       /* An agent-style dprintf never causes a stop.  If we see a trap
12407 	 for this address it must be for a breakpoint that happens to
12408 	 be set at the same address.  */
12409       return 0;
12410     }
12411 
12412   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12413 }
12414 
12415 static int
12416 bkpt_resources_needed (const struct bp_location *bl)
12417 {
12418   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12419 
12420   return 1;
12421 }
12422 
12423 static enum print_stop_action
12424 bkpt_print_it (bpstat bs)
12425 {
12426   struct breakpoint *b;
12427   const struct bp_location *bl;
12428   int bp_temp;
12429   struct ui_out *uiout = current_uiout;
12430 
12431   gdb_assert (bs->bp_location_at != NULL);
12432 
12433   bl = bs->bp_location_at;
12434   b = bs->breakpoint_at;
12435 
12436   bp_temp = b->disposition == disp_del;
12437   if (bl->address != bl->requested_address)
12438     breakpoint_adjustment_warning (bl->requested_address,
12439 				   bl->address,
12440 				   b->number, 1);
12441   annotate_breakpoint (b->number);
12442   maybe_print_thread_hit_breakpoint (uiout);
12443 
12444   if (uiout->is_mi_like_p ())
12445     {
12446       uiout->field_string ("reason",
12447 			   async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12448       uiout->field_string ("disp", bpdisp_text (b->disposition));
12449     }
12450   if (bp_temp)
12451     uiout->message ("Temporary breakpoint %pF, ",
12452 		    signed_field ("bkptno", b->number));
12453   else
12454     uiout->message ("Breakpoint %pF, ",
12455 		    signed_field ("bkptno", b->number));
12456 
12457   return PRINT_SRC_AND_LOC;
12458 }
12459 
12460 static void
12461 bkpt_print_mention (struct breakpoint *b)
12462 {
12463   if (current_uiout->is_mi_like_p ())
12464     return;
12465 
12466   switch (b->type)
12467     {
12468     case bp_breakpoint:
12469     case bp_gnu_ifunc_resolver:
12470       if (b->disposition == disp_del)
12471 	printf_filtered (_("Temporary breakpoint"));
12472       else
12473 	printf_filtered (_("Breakpoint"));
12474       printf_filtered (_(" %d"), b->number);
12475       if (b->type == bp_gnu_ifunc_resolver)
12476 	printf_filtered (_(" at gnu-indirect-function resolver"));
12477       break;
12478     case bp_hardware_breakpoint:
12479       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12480       break;
12481     case bp_dprintf:
12482       printf_filtered (_("Dprintf %d"), b->number);
12483       break;
12484     }
12485 
12486   say_where (b);
12487 }
12488 
12489 static void
12490 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12491 {
12492   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12493     fprintf_unfiltered (fp, "tbreak");
12494   else if (tp->type == bp_breakpoint)
12495     fprintf_unfiltered (fp, "break");
12496   else if (tp->type == bp_hardware_breakpoint
12497 	   && tp->disposition == disp_del)
12498     fprintf_unfiltered (fp, "thbreak");
12499   else if (tp->type == bp_hardware_breakpoint)
12500     fprintf_unfiltered (fp, "hbreak");
12501   else
12502     internal_error (__FILE__, __LINE__,
12503 		    _("unhandled breakpoint type %d"), (int) tp->type);
12504 
12505   fprintf_unfiltered (fp, " %s",
12506 		      event_location_to_string (tp->location.get ()));
12507 
12508   /* Print out extra_string if this breakpoint is pending.  It might
12509      contain, for example, conditions that were set by the user.  */
12510   if (tp->loc == NULL && tp->extra_string != NULL)
12511     fprintf_unfiltered (fp, " %s", tp->extra_string);
12512 
12513   print_recreate_thread (tp, fp);
12514 }
12515 
12516 static void
12517 bkpt_create_sals_from_location (struct event_location *location,
12518 				struct linespec_result *canonical,
12519 				enum bptype type_wanted)
12520 {
12521   create_sals_from_location_default (location, canonical, type_wanted);
12522 }
12523 
12524 static void
12525 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12526 			     struct linespec_result *canonical,
12527 			     gdb::unique_xmalloc_ptr<char> cond_string,
12528 			     gdb::unique_xmalloc_ptr<char> extra_string,
12529 			     enum bptype type_wanted,
12530 			     enum bpdisp disposition,
12531 			     int thread,
12532 			     int task, int ignore_count,
12533 			     const struct breakpoint_ops *ops,
12534 			     int from_tty, int enabled,
12535 			     int internal, unsigned flags)
12536 {
12537   create_breakpoints_sal_default (gdbarch, canonical,
12538 				  std::move (cond_string),
12539 				  std::move (extra_string),
12540 				  type_wanted,
12541 				  disposition, thread, task,
12542 				  ignore_count, ops, from_tty,
12543 				  enabled, internal, flags);
12544 }
12545 
12546 static std::vector<symtab_and_line>
12547 bkpt_decode_location (struct breakpoint *b,
12548 		      struct event_location *location,
12549 		      struct program_space *search_pspace)
12550 {
12551   return decode_location_default (b, location, search_pspace);
12552 }
12553 
12554 /* Virtual table for internal breakpoints.  */
12555 
12556 static void
12557 internal_bkpt_re_set (struct breakpoint *b)
12558 {
12559   switch (b->type)
12560     {
12561       /* Delete overlay event and longjmp master breakpoints; they
12562 	 will be reset later by breakpoint_re_set.  */
12563     case bp_overlay_event:
12564     case bp_longjmp_master:
12565     case bp_std_terminate_master:
12566     case bp_exception_master:
12567       delete_breakpoint (b);
12568       break;
12569 
12570       /* This breakpoint is special, it's set up when the inferior
12571          starts and we really don't want to touch it.  */
12572     case bp_shlib_event:
12573 
12574       /* Like bp_shlib_event, this breakpoint type is special.  Once
12575 	 it is set up, we do not want to touch it.  */
12576     case bp_thread_event:
12577       break;
12578     }
12579 }
12580 
12581 static void
12582 internal_bkpt_check_status (bpstat bs)
12583 {
12584   if (bs->breakpoint_at->type == bp_shlib_event)
12585     {
12586       /* If requested, stop when the dynamic linker notifies GDB of
12587 	 events.  This allows the user to get control and place
12588 	 breakpoints in initializer routines for dynamically loaded
12589 	 objects (among other things).  */
12590       bs->stop = stop_on_solib_events;
12591       bs->print = stop_on_solib_events;
12592     }
12593   else
12594     bs->stop = 0;
12595 }
12596 
12597 static enum print_stop_action
12598 internal_bkpt_print_it (bpstat bs)
12599 {
12600   struct breakpoint *b;
12601 
12602   b = bs->breakpoint_at;
12603 
12604   switch (b->type)
12605     {
12606     case bp_shlib_event:
12607       /* Did we stop because the user set the stop_on_solib_events
12608 	 variable?  (If so, we report this as a generic, "Stopped due
12609 	 to shlib event" message.) */
12610       print_solib_event (0);
12611       break;
12612 
12613     case bp_thread_event:
12614       /* Not sure how we will get here.
12615 	 GDB should not stop for these breakpoints.  */
12616       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12617       break;
12618 
12619     case bp_overlay_event:
12620       /* By analogy with the thread event, GDB should not stop for these.  */
12621       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12622       break;
12623 
12624     case bp_longjmp_master:
12625       /* These should never be enabled.  */
12626       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12627       break;
12628 
12629     case bp_std_terminate_master:
12630       /* These should never be enabled.  */
12631       printf_filtered (_("std::terminate Master Breakpoint: "
12632 			 "gdb should not stop!\n"));
12633       break;
12634 
12635     case bp_exception_master:
12636       /* These should never be enabled.  */
12637       printf_filtered (_("Exception Master Breakpoint: "
12638 			 "gdb should not stop!\n"));
12639       break;
12640     }
12641 
12642   return PRINT_NOTHING;
12643 }
12644 
12645 static void
12646 internal_bkpt_print_mention (struct breakpoint *b)
12647 {
12648   /* Nothing to mention.  These breakpoints are internal.  */
12649 }
12650 
12651 /* Virtual table for momentary breakpoints  */
12652 
12653 static void
12654 momentary_bkpt_re_set (struct breakpoint *b)
12655 {
12656   /* Keep temporary breakpoints, which can be encountered when we step
12657      over a dlopen call and solib_add is resetting the breakpoints.
12658      Otherwise these should have been blown away via the cleanup chain
12659      or by breakpoint_init_inferior when we rerun the executable.  */
12660 }
12661 
12662 static void
12663 momentary_bkpt_check_status (bpstat bs)
12664 {
12665   /* Nothing.  The point of these breakpoints is causing a stop.  */
12666 }
12667 
12668 static enum print_stop_action
12669 momentary_bkpt_print_it (bpstat bs)
12670 {
12671   return PRINT_UNKNOWN;
12672 }
12673 
12674 static void
12675 momentary_bkpt_print_mention (struct breakpoint *b)
12676 {
12677   /* Nothing to mention.  These breakpoints are internal.  */
12678 }
12679 
12680 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12681 
12682    It gets cleared already on the removal of the first one of such placed
12683    breakpoints.  This is OK as they get all removed altogether.  */
12684 
12685 longjmp_breakpoint::~longjmp_breakpoint ()
12686 {
12687   thread_info *tp = find_thread_global_id (this->thread);
12688 
12689   if (tp != NULL)
12690     tp->initiating_frame = null_frame_id;
12691 }
12692 
12693 /* Specific methods for probe breakpoints.  */
12694 
12695 static int
12696 bkpt_probe_insert_location (struct bp_location *bl)
12697 {
12698   int v = bkpt_insert_location (bl);
12699 
12700   if (v == 0)
12701     {
12702       /* The insertion was successful, now let's set the probe's semaphore
12703 	 if needed.  */
12704       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12705     }
12706 
12707   return v;
12708 }
12709 
12710 static int
12711 bkpt_probe_remove_location (struct bp_location *bl,
12712 			    enum remove_bp_reason reason)
12713 {
12714   /* Let's clear the semaphore before removing the location.  */
12715   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12716 
12717   return bkpt_remove_location (bl, reason);
12718 }
12719 
12720 static void
12721 bkpt_probe_create_sals_from_location (struct event_location *location,
12722 				      struct linespec_result *canonical,
12723 				      enum bptype type_wanted)
12724 {
12725   struct linespec_sals lsal;
12726 
12727   lsal.sals = parse_probes (location, NULL, canonical);
12728   lsal.canonical
12729     = xstrdup (event_location_to_string (canonical->location.get ()));
12730   canonical->lsals.push_back (std::move (lsal));
12731 }
12732 
12733 static std::vector<symtab_and_line>
12734 bkpt_probe_decode_location (struct breakpoint *b,
12735 			    struct event_location *location,
12736 			    struct program_space *search_pspace)
12737 {
12738   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12739   if (sals.empty ())
12740     error (_("probe not found"));
12741   return sals;
12742 }
12743 
12744 /* The breakpoint_ops structure to be used in tracepoints.  */
12745 
12746 static void
12747 tracepoint_re_set (struct breakpoint *b)
12748 {
12749   breakpoint_re_set_default (b);
12750 }
12751 
12752 static int
12753 tracepoint_breakpoint_hit (const struct bp_location *bl,
12754 			   const address_space *aspace, CORE_ADDR bp_addr,
12755 			   const struct target_waitstatus *ws)
12756 {
12757   /* By definition, the inferior does not report stops at
12758      tracepoints.  */
12759   return 0;
12760 }
12761 
12762 static void
12763 tracepoint_print_one_detail (const struct breakpoint *self,
12764 			     struct ui_out *uiout)
12765 {
12766   struct tracepoint *tp = (struct tracepoint *) self;
12767   if (!tp->static_trace_marker_id.empty ())
12768     {
12769       gdb_assert (self->type == bp_static_tracepoint);
12770 
12771       uiout->message ("\tmarker id is %pF\n",
12772 		      string_field ("static-tracepoint-marker-string-id",
12773 				    tp->static_trace_marker_id.c_str ()));
12774     }
12775 }
12776 
12777 static void
12778 tracepoint_print_mention (struct breakpoint *b)
12779 {
12780   if (current_uiout->is_mi_like_p ())
12781     return;
12782 
12783   switch (b->type)
12784     {
12785     case bp_tracepoint:
12786       printf_filtered (_("Tracepoint"));
12787       printf_filtered (_(" %d"), b->number);
12788       break;
12789     case bp_fast_tracepoint:
12790       printf_filtered (_("Fast tracepoint"));
12791       printf_filtered (_(" %d"), b->number);
12792       break;
12793     case bp_static_tracepoint:
12794       printf_filtered (_("Static tracepoint"));
12795       printf_filtered (_(" %d"), b->number);
12796       break;
12797     default:
12798       internal_error (__FILE__, __LINE__,
12799 		      _("unhandled tracepoint type %d"), (int) b->type);
12800     }
12801 
12802   say_where (b);
12803 }
12804 
12805 static void
12806 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12807 {
12808   struct tracepoint *tp = (struct tracepoint *) self;
12809 
12810   if (self->type == bp_fast_tracepoint)
12811     fprintf_unfiltered (fp, "ftrace");
12812   else if (self->type == bp_static_tracepoint)
12813     fprintf_unfiltered (fp, "strace");
12814   else if (self->type == bp_tracepoint)
12815     fprintf_unfiltered (fp, "trace");
12816   else
12817     internal_error (__FILE__, __LINE__,
12818 		    _("unhandled tracepoint type %d"), (int) self->type);
12819 
12820   fprintf_unfiltered (fp, " %s",
12821 		      event_location_to_string (self->location.get ()));
12822   print_recreate_thread (self, fp);
12823 
12824   if (tp->pass_count)
12825     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12826 }
12827 
12828 static void
12829 tracepoint_create_sals_from_location (struct event_location *location,
12830 				      struct linespec_result *canonical,
12831 				      enum bptype type_wanted)
12832 {
12833   create_sals_from_location_default (location, canonical, type_wanted);
12834 }
12835 
12836 static void
12837 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12838 				   struct linespec_result *canonical,
12839 				   gdb::unique_xmalloc_ptr<char> cond_string,
12840 				   gdb::unique_xmalloc_ptr<char> extra_string,
12841 				   enum bptype type_wanted,
12842 				   enum bpdisp disposition,
12843 				   int thread,
12844 				   int task, int ignore_count,
12845 				   const struct breakpoint_ops *ops,
12846 				   int from_tty, int enabled,
12847 				   int internal, unsigned flags)
12848 {
12849   create_breakpoints_sal_default (gdbarch, canonical,
12850 				  std::move (cond_string),
12851 				  std::move (extra_string),
12852 				  type_wanted,
12853 				  disposition, thread, task,
12854 				  ignore_count, ops, from_tty,
12855 				  enabled, internal, flags);
12856 }
12857 
12858 static std::vector<symtab_and_line>
12859 tracepoint_decode_location (struct breakpoint *b,
12860 			    struct event_location *location,
12861 			    struct program_space *search_pspace)
12862 {
12863   return decode_location_default (b, location, search_pspace);
12864 }
12865 
12866 struct breakpoint_ops tracepoint_breakpoint_ops;
12867 
12868 /* Virtual table for tracepoints on static probes.  */
12869 
12870 static void
12871 tracepoint_probe_create_sals_from_location
12872   (struct event_location *location,
12873    struct linespec_result *canonical,
12874    enum bptype type_wanted)
12875 {
12876   /* We use the same method for breakpoint on probes.  */
12877   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12878 }
12879 
12880 static std::vector<symtab_and_line>
12881 tracepoint_probe_decode_location (struct breakpoint *b,
12882 				  struct event_location *location,
12883 				  struct program_space *search_pspace)
12884 {
12885   /* We use the same method for breakpoint on probes.  */
12886   return bkpt_probe_decode_location (b, location, search_pspace);
12887 }
12888 
12889 /* Dprintf breakpoint_ops methods.  */
12890 
12891 static void
12892 dprintf_re_set (struct breakpoint *b)
12893 {
12894   breakpoint_re_set_default (b);
12895 
12896   /* extra_string should never be non-NULL for dprintf.  */
12897   gdb_assert (b->extra_string != NULL);
12898 
12899   /* 1 - connect to target 1, that can run breakpoint commands.
12900      2 - create a dprintf, which resolves fine.
12901      3 - disconnect from target 1
12902      4 - connect to target 2, that can NOT run breakpoint commands.
12903 
12904      After steps #3/#4, you'll want the dprintf command list to
12905      be updated, because target 1 and 2 may well return different
12906      answers for target_can_run_breakpoint_commands().
12907      Given absence of finer grained resetting, we get to do
12908      it all the time.  */
12909   if (b->extra_string != NULL)
12910     update_dprintf_command_list (b);
12911 }
12912 
12913 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12914 
12915 static void
12916 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12917 {
12918   fprintf_unfiltered (fp, "dprintf %s,%s",
12919 		      event_location_to_string (tp->location.get ()),
12920 		      tp->extra_string);
12921   print_recreate_thread (tp, fp);
12922 }
12923 
12924 /* Implement the "after_condition_true" breakpoint_ops method for
12925    dprintf.
12926 
12927    dprintf's are implemented with regular commands in their command
12928    list, but we run the commands here instead of before presenting the
12929    stop to the user, as dprintf's don't actually cause a stop.  This
12930    also makes it so that the commands of multiple dprintfs at the same
12931    address are all handled.  */
12932 
12933 static void
12934 dprintf_after_condition_true (struct bpstats *bs)
12935 {
12936   struct bpstats tmp_bs;
12937   struct bpstats *tmp_bs_p = &tmp_bs;
12938 
12939   /* dprintf's never cause a stop.  This wasn't set in the
12940      check_status hook instead because that would make the dprintf's
12941      condition not be evaluated.  */
12942   bs->stop = 0;
12943 
12944   /* Run the command list here.  Take ownership of it instead of
12945      copying.  We never want these commands to run later in
12946      bpstat_do_actions, if a breakpoint that causes a stop happens to
12947      be set at same address as this dprintf, or even if running the
12948      commands here throws.  */
12949   tmp_bs.commands = bs->commands;
12950   bs->commands = NULL;
12951 
12952   bpstat_do_actions_1 (&tmp_bs_p);
12953 
12954   /* 'tmp_bs.commands' will usually be NULL by now, but
12955      bpstat_do_actions_1 may return early without processing the whole
12956      list.  */
12957 }
12958 
12959 /* The breakpoint_ops structure to be used on static tracepoints with
12960    markers (`-m').  */
12961 
12962 static void
12963 strace_marker_create_sals_from_location (struct event_location *location,
12964 					 struct linespec_result *canonical,
12965 					 enum bptype type_wanted)
12966 {
12967   struct linespec_sals lsal;
12968   const char *arg_start, *arg;
12969 
12970   arg = arg_start = get_linespec_location (location)->spec_string;
12971   lsal.sals = decode_static_tracepoint_spec (&arg);
12972 
12973   std::string str (arg_start, arg - arg_start);
12974   const char *ptr = str.c_str ();
12975   canonical->location
12976     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12977 
12978   lsal.canonical
12979     = xstrdup (event_location_to_string (canonical->location.get ()));
12980   canonical->lsals.push_back (std::move (lsal));
12981 }
12982 
12983 static void
12984 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12985 				      struct linespec_result *canonical,
12986 				      gdb::unique_xmalloc_ptr<char> cond_string,
12987 				      gdb::unique_xmalloc_ptr<char> extra_string,
12988 				      enum bptype type_wanted,
12989 				      enum bpdisp disposition,
12990 				      int thread,
12991 				      int task, int ignore_count,
12992 				      const struct breakpoint_ops *ops,
12993 				      int from_tty, int enabled,
12994 				      int internal, unsigned flags)
12995 {
12996   const linespec_sals &lsal = canonical->lsals[0];
12997 
12998   /* If the user is creating a static tracepoint by marker id
12999      (strace -m MARKER_ID), then store the sals index, so that
13000      breakpoint_re_set can try to match up which of the newly
13001      found markers corresponds to this one, and, don't try to
13002      expand multiple locations for each sal, given than SALS
13003      already should contain all sals for MARKER_ID.  */
13004 
13005   for (size_t i = 0; i < lsal.sals.size (); i++)
13006     {
13007       event_location_up location
13008 	= copy_event_location (canonical->location.get ());
13009 
13010       std::unique_ptr<tracepoint> tp (new tracepoint ());
13011       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13012 			   std::move (location), NULL,
13013 			   std::move (cond_string),
13014 			   std::move (extra_string),
13015 			   type_wanted, disposition,
13016 			   thread, task, ignore_count, ops,
13017 			   from_tty, enabled, internal, flags,
13018 			   canonical->special_display);
13019       /* Given that its possible to have multiple markers with
13020 	 the same string id, if the user is creating a static
13021 	 tracepoint by marker id ("strace -m MARKER_ID"), then
13022 	 store the sals index, so that breakpoint_re_set can
13023 	 try to match up which of the newly found markers
13024 	 corresponds to this one  */
13025       tp->static_trace_marker_id_idx = i;
13026 
13027       install_breakpoint (internal, std::move (tp), 0);
13028     }
13029 }
13030 
13031 static std::vector<symtab_and_line>
13032 strace_marker_decode_location (struct breakpoint *b,
13033 			       struct event_location *location,
13034 			       struct program_space *search_pspace)
13035 {
13036   struct tracepoint *tp = (struct tracepoint *) b;
13037   const char *s = get_linespec_location (location)->spec_string;
13038 
13039   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13040   if (sals.size () > tp->static_trace_marker_id_idx)
13041     {
13042       sals[0] = sals[tp->static_trace_marker_id_idx];
13043       sals.resize (1);
13044       return sals;
13045     }
13046   else
13047     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13048 }
13049 
13050 static struct breakpoint_ops strace_marker_breakpoint_ops;
13051 
13052 static int
13053 strace_marker_p (struct breakpoint *b)
13054 {
13055   return b->ops == &strace_marker_breakpoint_ops;
13056 }
13057 
13058 /* Delete a breakpoint and clean up all traces of it in the data
13059    structures.  */
13060 
13061 void
13062 delete_breakpoint (struct breakpoint *bpt)
13063 {
13064   struct breakpoint *b;
13065 
13066   gdb_assert (bpt != NULL);
13067 
13068   /* Has this bp already been deleted?  This can happen because
13069      multiple lists can hold pointers to bp's.  bpstat lists are
13070      especial culprits.
13071 
13072      One example of this happening is a watchpoint's scope bp.  When
13073      the scope bp triggers, we notice that the watchpoint is out of
13074      scope, and delete it.  We also delete its scope bp.  But the
13075      scope bp is marked "auto-deleting", and is already on a bpstat.
13076      That bpstat is then checked for auto-deleting bp's, which are
13077      deleted.
13078 
13079      A real solution to this problem might involve reference counts in
13080      bp's, and/or giving them pointers back to their referencing
13081      bpstat's, and teaching delete_breakpoint to only free a bp's
13082      storage when no more references were extent.  A cheaper bandaid
13083      was chosen.  */
13084   if (bpt->type == bp_none)
13085     return;
13086 
13087   /* At least avoid this stale reference until the reference counting
13088      of breakpoints gets resolved.  */
13089   if (bpt->related_breakpoint != bpt)
13090     {
13091       struct breakpoint *related;
13092       struct watchpoint *w;
13093 
13094       if (bpt->type == bp_watchpoint_scope)
13095 	w = (struct watchpoint *) bpt->related_breakpoint;
13096       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13097 	w = (struct watchpoint *) bpt;
13098       else
13099 	w = NULL;
13100       if (w != NULL)
13101 	watchpoint_del_at_next_stop (w);
13102 
13103       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13104       for (related = bpt; related->related_breakpoint != bpt;
13105 	   related = related->related_breakpoint);
13106       related->related_breakpoint = bpt->related_breakpoint;
13107       bpt->related_breakpoint = bpt;
13108     }
13109 
13110   /* watch_command_1 creates a watchpoint but only sets its number if
13111      update_watchpoint succeeds in creating its bp_locations.  If there's
13112      a problem in that process, we'll be asked to delete the half-created
13113      watchpoint.  In that case, don't announce the deletion.  */
13114   if (bpt->number)
13115     gdb::observers::breakpoint_deleted.notify (bpt);
13116 
13117   if (breakpoint_chain == bpt)
13118     breakpoint_chain = bpt->next;
13119 
13120   ALL_BREAKPOINTS (b)
13121     if (b->next == bpt)
13122     {
13123       b->next = bpt->next;
13124       break;
13125     }
13126 
13127   /* Be sure no bpstat's are pointing at the breakpoint after it's
13128      been freed.  */
13129   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13130      in all threads for now.  Note that we cannot just remove bpstats
13131      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13132      commands are associated with the bpstat; if we remove it here,
13133      then the later call to bpstat_do_actions (&stop_bpstat); in
13134      event-top.c won't do anything, and temporary breakpoints with
13135      commands won't work.  */
13136 
13137   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13138 
13139   /* Now that breakpoint is removed from breakpoint list, update the
13140      global location list.  This will remove locations that used to
13141      belong to this breakpoint.  Do this before freeing the breakpoint
13142      itself, since remove_breakpoint looks at location's owner.  It
13143      might be better design to have location completely
13144      self-contained, but it's not the case now.  */
13145   update_global_location_list (UGLL_DONT_INSERT);
13146 
13147   /* On the chance that someone will soon try again to delete this
13148      same bp, we mark it as deleted before freeing its storage.  */
13149   bpt->type = bp_none;
13150   delete bpt;
13151 }
13152 
13153 /* Iterator function to call a user-provided callback function once
13154    for each of B and its related breakpoints.  */
13155 
13156 static void
13157 iterate_over_related_breakpoints (struct breakpoint *b,
13158 				  gdb::function_view<void (breakpoint *)> function)
13159 {
13160   struct breakpoint *related;
13161 
13162   related = b;
13163   do
13164     {
13165       struct breakpoint *next;
13166 
13167       /* FUNCTION may delete RELATED.  */
13168       next = related->related_breakpoint;
13169 
13170       if (next == related)
13171 	{
13172 	  /* RELATED is the last ring entry.  */
13173 	  function (related);
13174 
13175 	  /* FUNCTION may have deleted it, so we'd never reach back to
13176 	     B.  There's nothing left to do anyway, so just break
13177 	     out.  */
13178 	  break;
13179 	}
13180       else
13181 	function (related);
13182 
13183       related = next;
13184     }
13185   while (related != b);
13186 }
13187 
13188 static void
13189 delete_command (const char *arg, int from_tty)
13190 {
13191   struct breakpoint *b, *b_tmp;
13192 
13193   dont_repeat ();
13194 
13195   if (arg == 0)
13196     {
13197       int breaks_to_delete = 0;
13198 
13199       /* Delete all breakpoints if no argument.  Do not delete
13200          internal breakpoints, these have to be deleted with an
13201          explicit breakpoint number argument.  */
13202       ALL_BREAKPOINTS (b)
13203 	if (user_breakpoint_p (b))
13204 	  {
13205 	    breaks_to_delete = 1;
13206 	    break;
13207 	  }
13208 
13209       /* Ask user only if there are some breakpoints to delete.  */
13210       if (!from_tty
13211 	  || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13212 	{
13213 	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
13214 	    if (user_breakpoint_p (b))
13215 	      delete_breakpoint (b);
13216 	}
13217     }
13218   else
13219     map_breakpoint_numbers
13220       (arg, [&] (breakpoint *br)
13221        {
13222 	 iterate_over_related_breakpoints (br, delete_breakpoint);
13223        });
13224 }
13225 
13226 /* Return true if all locations of B bound to PSPACE are pending.  If
13227    PSPACE is NULL, all locations of all program spaces are
13228    considered.  */
13229 
13230 static int
13231 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13232 {
13233   struct bp_location *loc;
13234 
13235   for (loc = b->loc; loc != NULL; loc = loc->next)
13236     if ((pspace == NULL
13237 	 || loc->pspace == pspace)
13238 	&& !loc->shlib_disabled
13239 	&& !loc->pspace->executing_startup)
13240       return 0;
13241   return 1;
13242 }
13243 
13244 /* Subroutine of update_breakpoint_locations to simplify it.
13245    Return non-zero if multiple fns in list LOC have the same name.
13246    Null names are ignored.  */
13247 
13248 static int
13249 ambiguous_names_p (struct bp_location *loc)
13250 {
13251   struct bp_location *l;
13252   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13253 				   xcalloc, xfree);
13254 
13255   for (l = loc; l != NULL; l = l->next)
13256     {
13257       const char **slot;
13258       const char *name = l->function_name;
13259 
13260       /* Allow for some names to be NULL, ignore them.  */
13261       if (name == NULL)
13262 	continue;
13263 
13264       slot = (const char **) htab_find_slot (htab, (const void *) name,
13265 					     INSERT);
13266       /* NOTE: We can assume slot != NULL here because xcalloc never
13267 	 returns NULL.  */
13268       if (*slot != NULL)
13269 	{
13270 	  htab_delete (htab);
13271 	  return 1;
13272 	}
13273       *slot = name;
13274     }
13275 
13276   htab_delete (htab);
13277   return 0;
13278 }
13279 
13280 /* When symbols change, it probably means the sources changed as well,
13281    and it might mean the static tracepoint markers are no longer at
13282    the same address or line numbers they used to be at last we
13283    checked.  Losing your static tracepoints whenever you rebuild is
13284    undesirable.  This function tries to resync/rematch gdb static
13285    tracepoints with the markers on the target, for static tracepoints
13286    that have not been set by marker id.  Static tracepoint that have
13287    been set by marker id are reset by marker id in breakpoint_re_set.
13288    The heuristic is:
13289 
13290    1) For a tracepoint set at a specific address, look for a marker at
13291    the old PC.  If one is found there, assume to be the same marker.
13292    If the name / string id of the marker found is different from the
13293    previous known name, assume that means the user renamed the marker
13294    in the sources, and output a warning.
13295 
13296    2) For a tracepoint set at a given line number, look for a marker
13297    at the new address of the old line number.  If one is found there,
13298    assume to be the same marker.  If the name / string id of the
13299    marker found is different from the previous known name, assume that
13300    means the user renamed the marker in the sources, and output a
13301    warning.
13302 
13303    3) If a marker is no longer found at the same address or line, it
13304    may mean the marker no longer exists.  But it may also just mean
13305    the code changed a bit.  Maybe the user added a few lines of code
13306    that made the marker move up or down (in line number terms).  Ask
13307    the target for info about the marker with the string id as we knew
13308    it.  If found, update line number and address in the matching
13309    static tracepoint.  This will get confused if there's more than one
13310    marker with the same ID (possible in UST, although unadvised
13311    precisely because it confuses tools).  */
13312 
13313 static struct symtab_and_line
13314 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13315 {
13316   struct tracepoint *tp = (struct tracepoint *) b;
13317   struct static_tracepoint_marker marker;
13318   CORE_ADDR pc;
13319 
13320   pc = sal.pc;
13321   if (sal.line)
13322     find_line_pc (sal.symtab, sal.line, &pc);
13323 
13324   if (target_static_tracepoint_marker_at (pc, &marker))
13325     {
13326       if (tp->static_trace_marker_id != marker.str_id)
13327 	warning (_("static tracepoint %d changed probed marker from %s to %s"),
13328 		 b->number, tp->static_trace_marker_id.c_str (),
13329 		 marker.str_id.c_str ());
13330 
13331       tp->static_trace_marker_id = std::move (marker.str_id);
13332 
13333       return sal;
13334     }
13335 
13336   /* Old marker wasn't found on target at lineno.  Try looking it up
13337      by string ID.  */
13338   if (!sal.explicit_pc
13339       && sal.line != 0
13340       && sal.symtab != NULL
13341       && !tp->static_trace_marker_id.empty ())
13342     {
13343       std::vector<static_tracepoint_marker> markers
13344 	= target_static_tracepoint_markers_by_strid
13345 	    (tp->static_trace_marker_id.c_str ());
13346 
13347       if (!markers.empty ())
13348 	{
13349 	  struct symbol *sym;
13350 	  struct static_tracepoint_marker *tpmarker;
13351 	  struct ui_out *uiout = current_uiout;
13352 	  struct explicit_location explicit_loc;
13353 
13354 	  tpmarker = &markers[0];
13355 
13356 	  tp->static_trace_marker_id = std::move (tpmarker->str_id);
13357 
13358 	  warning (_("marker for static tracepoint %d (%s) not "
13359 		     "found at previous line number"),
13360 		   b->number, tp->static_trace_marker_id.c_str ());
13361 
13362 	  symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13363 	  sym = find_pc_sect_function (tpmarker->address, NULL);
13364 	  uiout->text ("Now in ");
13365 	  if (sym)
13366 	    {
13367 	      uiout->field_string ("func", sym->print_name (),
13368 				   function_name_style.style ());
13369 	      uiout->text (" at ");
13370 	    }
13371 	  uiout->field_string ("file",
13372 			       symtab_to_filename_for_display (sal2.symtab),
13373 			       file_name_style.style ());
13374 	  uiout->text (":");
13375 
13376 	  if (uiout->is_mi_like_p ())
13377 	    {
13378 	      const char *fullname = symtab_to_fullname (sal2.symtab);
13379 
13380 	      uiout->field_string ("fullname", fullname);
13381 	    }
13382 
13383 	  uiout->field_signed ("line", sal2.line);
13384 	  uiout->text ("\n");
13385 
13386 	  b->loc->line_number = sal2.line;
13387 	  b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13388 
13389 	  b->location.reset (NULL);
13390 	  initialize_explicit_location (&explicit_loc);
13391 	  explicit_loc.source_filename
13392 	    = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13393 	  explicit_loc.line_offset.offset = b->loc->line_number;
13394 	  explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13395 	  b->location = new_explicit_location (&explicit_loc);
13396 
13397 	  /* Might be nice to check if function changed, and warn if
13398 	     so.  */
13399 	}
13400     }
13401   return sal;
13402 }
13403 
13404 /* Returns 1 iff locations A and B are sufficiently same that
13405    we don't need to report breakpoint as changed.  */
13406 
13407 static int
13408 locations_are_equal (struct bp_location *a, struct bp_location *b)
13409 {
13410   while (a && b)
13411     {
13412       if (a->address != b->address)
13413 	return 0;
13414 
13415       if (a->shlib_disabled != b->shlib_disabled)
13416 	return 0;
13417 
13418       if (a->enabled != b->enabled)
13419 	return 0;
13420 
13421       a = a->next;
13422       b = b->next;
13423     }
13424 
13425   if ((a == NULL) != (b == NULL))
13426     return 0;
13427 
13428   return 1;
13429 }
13430 
13431 /* Split all locations of B that are bound to PSPACE out of B's
13432    location list to a separate list and return that list's head.  If
13433    PSPACE is NULL, hoist out all locations of B.  */
13434 
13435 static struct bp_location *
13436 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13437 {
13438   struct bp_location head;
13439   struct bp_location *i = b->loc;
13440   struct bp_location **i_link = &b->loc;
13441   struct bp_location *hoisted = &head;
13442 
13443   if (pspace == NULL)
13444     {
13445       i = b->loc;
13446       b->loc = NULL;
13447       return i;
13448     }
13449 
13450   head.next = NULL;
13451 
13452   while (i != NULL)
13453     {
13454       if (i->pspace == pspace)
13455 	{
13456 	  *i_link = i->next;
13457 	  i->next = NULL;
13458 	  hoisted->next = i;
13459 	  hoisted = i;
13460 	}
13461       else
13462 	i_link = &i->next;
13463       i = *i_link;
13464     }
13465 
13466   return head.next;
13467 }
13468 
13469 /* Create new breakpoint locations for B (a hardware or software
13470    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13471    zero, then B is a ranged breakpoint.  Only recreates locations for
13472    FILTER_PSPACE.  Locations of other program spaces are left
13473    untouched.  */
13474 
13475 void
13476 update_breakpoint_locations (struct breakpoint *b,
13477 			     struct program_space *filter_pspace,
13478 			     gdb::array_view<const symtab_and_line> sals,
13479 			     gdb::array_view<const symtab_and_line> sals_end)
13480 {
13481   struct bp_location *existing_locations;
13482 
13483   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13484     {
13485       /* Ranged breakpoints have only one start location and one end
13486 	 location.  */
13487       b->enable_state = bp_disabled;
13488       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13489 			   "multiple locations found\n"),
13490 			 b->number);
13491       return;
13492     }
13493 
13494   /* If there's no new locations, and all existing locations are
13495      pending, don't do anything.  This optimizes the common case where
13496      all locations are in the same shared library, that was unloaded.
13497      We'd like to retain the location, so that when the library is
13498      loaded again, we don't loose the enabled/disabled status of the
13499      individual locations.  */
13500   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13501     return;
13502 
13503   existing_locations = hoist_existing_locations (b, filter_pspace);
13504 
13505   for (const auto &sal : sals)
13506     {
13507       struct bp_location *new_loc;
13508 
13509       switch_to_program_space_and_thread (sal.pspace);
13510 
13511       new_loc = add_location_to_breakpoint (b, &sal);
13512 
13513       /* Reparse conditions, they might contain references to the
13514 	 old symtab.  */
13515       if (b->cond_string != NULL)
13516 	{
13517 	  const char *s;
13518 
13519 	  s = b->cond_string;
13520 	  try
13521 	    {
13522 	      new_loc->cond = parse_exp_1 (&s, sal.pc,
13523 					   block_for_pc (sal.pc),
13524 					   0);
13525 	    }
13526 	  catch (const gdb_exception_error &e)
13527 	    {
13528 	      warning (_("failed to reevaluate condition "
13529 			 "for breakpoint %d: %s"),
13530 		       b->number, e.what ());
13531 	      new_loc->enabled = 0;
13532 	    }
13533 	}
13534 
13535       if (!sals_end.empty ())
13536 	{
13537 	  CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13538 
13539 	  new_loc->length = end - sals[0].pc + 1;
13540 	}
13541     }
13542 
13543   /* If possible, carry over 'disable' status from existing
13544      breakpoints.  */
13545   {
13546     struct bp_location *e = existing_locations;
13547     /* If there are multiple breakpoints with the same function name,
13548        e.g. for inline functions, comparing function names won't work.
13549        Instead compare pc addresses; this is just a heuristic as things
13550        may have moved, but in practice it gives the correct answer
13551        often enough until a better solution is found.  */
13552     int have_ambiguous_names = ambiguous_names_p (b->loc);
13553 
13554     for (; e; e = e->next)
13555       {
13556 	if (!e->enabled && e->function_name)
13557 	  {
13558 	    struct bp_location *l = b->loc;
13559 	    if (have_ambiguous_names)
13560 	      {
13561 		for (; l; l = l->next)
13562 		  {
13563 		    /* Ignore software vs hardware location type at
13564 		       this point, because with "set breakpoint
13565 		       auto-hw", after a re-set, locations that were
13566 		       hardware can end up as software, or vice versa.
13567 		       As mentioned above, this is an heuristic and in
13568 		       practice should give the correct answer often
13569 		       enough.  */
13570 		    if (breakpoint_locations_match (e, l, true))
13571 		      {
13572 			l->enabled = 0;
13573 			break;
13574 		      }
13575 		  }
13576 	      }
13577 	    else
13578 	      {
13579 		for (; l; l = l->next)
13580 		  if (l->function_name
13581 		      && strcmp (e->function_name, l->function_name) == 0)
13582 		    {
13583 		      l->enabled = 0;
13584 		      break;
13585 		    }
13586 	      }
13587 	  }
13588       }
13589   }
13590 
13591   if (!locations_are_equal (existing_locations, b->loc))
13592     gdb::observers::breakpoint_modified.notify (b);
13593 }
13594 
13595 /* Find the SaL locations corresponding to the given LOCATION.
13596    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13597 
13598 static std::vector<symtab_and_line>
13599 location_to_sals (struct breakpoint *b, struct event_location *location,
13600 		  struct program_space *search_pspace, int *found)
13601 {
13602   struct gdb_exception exception;
13603 
13604   gdb_assert (b->ops != NULL);
13605 
13606   std::vector<symtab_and_line> sals;
13607 
13608   try
13609     {
13610       sals = b->ops->decode_location (b, location, search_pspace);
13611     }
13612   catch (gdb_exception_error &e)
13613     {
13614       int not_found_and_ok = 0;
13615 
13616       /* For pending breakpoints, it's expected that parsing will
13617 	 fail until the right shared library is loaded.  User has
13618 	 already told to create pending breakpoints and don't need
13619 	 extra messages.  If breakpoint is in bp_shlib_disabled
13620 	 state, then user already saw the message about that
13621 	 breakpoint being disabled, and don't want to see more
13622 	 errors.  */
13623       if (e.error == NOT_FOUND_ERROR
13624 	  && (b->condition_not_parsed
13625 	      || (b->loc != NULL
13626 		  && search_pspace != NULL
13627 		  && b->loc->pspace != search_pspace)
13628 	      || (b->loc && b->loc->shlib_disabled)
13629 	      || (b->loc && b->loc->pspace->executing_startup)
13630 	      || b->enable_state == bp_disabled))
13631 	not_found_and_ok = 1;
13632 
13633       if (!not_found_and_ok)
13634 	{
13635 	  /* We surely don't want to warn about the same breakpoint
13636 	     10 times.  One solution, implemented here, is disable
13637 	     the breakpoint on error.  Another solution would be to
13638 	     have separate 'warning emitted' flag.  Since this
13639 	     happens only when a binary has changed, I don't know
13640 	     which approach is better.  */
13641 	  b->enable_state = bp_disabled;
13642 	  throw;
13643 	}
13644 
13645       exception = std::move (e);
13646     }
13647 
13648   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13649     {
13650       for (auto &sal : sals)
13651 	resolve_sal_pc (&sal);
13652       if (b->condition_not_parsed && b->extra_string != NULL)
13653 	{
13654 	  char *cond_string, *extra_string;
13655 	  int thread, task;
13656 
13657 	  find_condition_and_thread (b->extra_string, sals[0].pc,
13658 				     &cond_string, &thread, &task,
13659 				     &extra_string);
13660 	  gdb_assert (b->cond_string == NULL);
13661 	  if (cond_string)
13662 	    b->cond_string = cond_string;
13663 	  b->thread = thread;
13664 	  b->task = task;
13665 	  if (extra_string)
13666 	    {
13667 	      xfree (b->extra_string);
13668 	      b->extra_string = extra_string;
13669 	    }
13670 	  b->condition_not_parsed = 0;
13671 	}
13672 
13673       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13674 	sals[0] = update_static_tracepoint (b, sals[0]);
13675 
13676       *found = 1;
13677     }
13678   else
13679     *found = 0;
13680 
13681   return sals;
13682 }
13683 
13684 /* The default re_set method, for typical hardware or software
13685    breakpoints.  Reevaluate the breakpoint and recreate its
13686    locations.  */
13687 
13688 static void
13689 breakpoint_re_set_default (struct breakpoint *b)
13690 {
13691   struct program_space *filter_pspace = current_program_space;
13692   std::vector<symtab_and_line> expanded, expanded_end;
13693 
13694   int found;
13695   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13696 							filter_pspace, &found);
13697   if (found)
13698     expanded = std::move (sals);
13699 
13700   if (b->location_range_end != NULL)
13701     {
13702       std::vector<symtab_and_line> sals_end
13703 	= location_to_sals (b, b->location_range_end.get (),
13704 			    filter_pspace, &found);
13705       if (found)
13706 	expanded_end = std::move (sals_end);
13707     }
13708 
13709   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13710 }
13711 
13712 /* Default method for creating SALs from an address string.  It basically
13713    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13714 
13715 static void
13716 create_sals_from_location_default (struct event_location *location,
13717 				   struct linespec_result *canonical,
13718 				   enum bptype type_wanted)
13719 {
13720   parse_breakpoint_sals (location, canonical);
13721 }
13722 
13723 /* Call create_breakpoints_sal for the given arguments.  This is the default
13724    function for the `create_breakpoints_sal' method of
13725    breakpoint_ops.  */
13726 
13727 static void
13728 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13729 				struct linespec_result *canonical,
13730 				gdb::unique_xmalloc_ptr<char> cond_string,
13731 				gdb::unique_xmalloc_ptr<char> extra_string,
13732 				enum bptype type_wanted,
13733 				enum bpdisp disposition,
13734 				int thread,
13735 				int task, int ignore_count,
13736 				const struct breakpoint_ops *ops,
13737 				int from_tty, int enabled,
13738 				int internal, unsigned flags)
13739 {
13740   create_breakpoints_sal (gdbarch, canonical,
13741 			  std::move (cond_string),
13742 			  std::move (extra_string),
13743 			  type_wanted, disposition,
13744 			  thread, task, ignore_count, ops, from_tty,
13745 			  enabled, internal, flags);
13746 }
13747 
13748 /* Decode the line represented by S by calling decode_line_full.  This is the
13749    default function for the `decode_location' method of breakpoint_ops.  */
13750 
13751 static std::vector<symtab_and_line>
13752 decode_location_default (struct breakpoint *b,
13753 			 struct event_location *location,
13754 			 struct program_space *search_pspace)
13755 {
13756   struct linespec_result canonical;
13757 
13758   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13759 		    NULL, 0, &canonical, multiple_symbols_all,
13760 		    b->filter.get ());
13761 
13762   /* We should get 0 or 1 resulting SALs.  */
13763   gdb_assert (canonical.lsals.size () < 2);
13764 
13765   if (!canonical.lsals.empty ())
13766     {
13767       const linespec_sals &lsal = canonical.lsals[0];
13768       return std::move (lsal.sals);
13769     }
13770   return {};
13771 }
13772 
13773 /* Reset a breakpoint.  */
13774 
13775 static void
13776 breakpoint_re_set_one (breakpoint *b)
13777 {
13778   input_radix = b->input_radix;
13779   set_language (b->language);
13780 
13781   b->ops->re_set (b);
13782 }
13783 
13784 /* Re-set breakpoint locations for the current program space.
13785    Locations bound to other program spaces are left untouched.  */
13786 
13787 void
13788 breakpoint_re_set (void)
13789 {
13790   struct breakpoint *b, *b_tmp;
13791 
13792   {
13793     scoped_restore_current_language save_language;
13794     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13795     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13796 
13797     /* breakpoint_re_set_one sets the current_language to the language
13798        of the breakpoint it is resetting (see prepare_re_set_context)
13799        before re-evaluating the breakpoint's location.  This change can
13800        unfortunately get undone by accident if the language_mode is set
13801        to auto, and we either switch frames, or more likely in this context,
13802        we select the current frame.
13803 
13804        We prevent this by temporarily turning the language_mode to
13805        language_mode_manual.  We restore it once all breakpoints
13806        have been reset.  */
13807     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13808     language_mode = language_mode_manual;
13809 
13810     /* Note: we must not try to insert locations until after all
13811        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13812        breakpoint 1, we'd insert the locations of breakpoint 2, which
13813        hadn't been re-set yet, and thus may have stale locations.  */
13814 
13815     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13816       {
13817 	try
13818 	  {
13819 	    breakpoint_re_set_one (b);
13820 	  }
13821 	catch (const gdb_exception &ex)
13822 	  {
13823 	    exception_fprintf (gdb_stderr, ex,
13824 			       "Error in re-setting breakpoint %d: ",
13825 			       b->number);
13826 	  }
13827       }
13828 
13829     jit_breakpoint_re_set ();
13830   }
13831 
13832   create_overlay_event_breakpoint ();
13833   create_longjmp_master_breakpoint ();
13834   create_std_terminate_master_breakpoint ();
13835   create_exception_master_breakpoint ();
13836 
13837   /* Now we can insert.  */
13838   update_global_location_list (UGLL_MAY_INSERT);
13839 }
13840 
13841 /* Reset the thread number of this breakpoint:
13842 
13843    - If the breakpoint is for all threads, leave it as-is.
13844    - Else, reset it to the current thread for inferior_ptid.  */
13845 void
13846 breakpoint_re_set_thread (struct breakpoint *b)
13847 {
13848   if (b->thread != -1)
13849     {
13850       b->thread = inferior_thread ()->global_num;
13851 
13852       /* We're being called after following a fork.  The new fork is
13853 	 selected as current, and unless this was a vfork will have a
13854 	 different program space from the original thread.  Reset that
13855 	 as well.  */
13856       b->loc->pspace = current_program_space;
13857     }
13858 }
13859 
13860 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13861    If from_tty is nonzero, it prints a message to that effect,
13862    which ends with a period (no newline).  */
13863 
13864 void
13865 set_ignore_count (int bptnum, int count, int from_tty)
13866 {
13867   struct breakpoint *b;
13868 
13869   if (count < 0)
13870     count = 0;
13871 
13872   ALL_BREAKPOINTS (b)
13873     if (b->number == bptnum)
13874     {
13875       if (is_tracepoint (b))
13876 	{
13877 	  if (from_tty && count != 0)
13878 	    printf_filtered (_("Ignore count ignored for tracepoint %d."),
13879 			     bptnum);
13880 	  return;
13881 	}
13882 
13883       b->ignore_count = count;
13884       if (from_tty)
13885 	{
13886 	  if (count == 0)
13887 	    printf_filtered (_("Will stop next time "
13888 			       "breakpoint %d is reached."),
13889 			     bptnum);
13890 	  else if (count == 1)
13891 	    printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13892 			     bptnum);
13893 	  else
13894 	    printf_filtered (_("Will ignore next %d "
13895 			       "crossings of breakpoint %d."),
13896 			     count, bptnum);
13897 	}
13898       gdb::observers::breakpoint_modified.notify (b);
13899       return;
13900     }
13901 
13902   error (_("No breakpoint number %d."), bptnum);
13903 }
13904 
13905 /* Command to set ignore-count of breakpoint N to COUNT.  */
13906 
13907 static void
13908 ignore_command (const char *args, int from_tty)
13909 {
13910   const char *p = args;
13911   int num;
13912 
13913   if (p == 0)
13914     error_no_arg (_("a breakpoint number"));
13915 
13916   num = get_number (&p);
13917   if (num == 0)
13918     error (_("bad breakpoint number: '%s'"), args);
13919   if (*p == 0)
13920     error (_("Second argument (specified ignore-count) is missing."));
13921 
13922   set_ignore_count (num,
13923 		    longest_to_int (value_as_long (parse_and_eval (p))),
13924 		    from_tty);
13925   if (from_tty)
13926     printf_filtered ("\n");
13927 }
13928 
13929 
13930 /* Call FUNCTION on each of the breakpoints with numbers in the range
13931    defined by BP_NUM_RANGE (an inclusive range).  */
13932 
13933 static void
13934 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13935 			     gdb::function_view<void (breakpoint *)> function)
13936 {
13937   if (bp_num_range.first == 0)
13938     {
13939       warning (_("bad breakpoint number at or near '%d'"),
13940 	       bp_num_range.first);
13941     }
13942   else
13943     {
13944       struct breakpoint *b, *tmp;
13945 
13946       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13947 	{
13948 	  bool match = false;
13949 
13950 	  ALL_BREAKPOINTS_SAFE (b, tmp)
13951 	    if (b->number == i)
13952 	      {
13953 		match = true;
13954 		function (b);
13955 		break;
13956 	      }
13957 	  if (!match)
13958 	    printf_unfiltered (_("No breakpoint number %d.\n"), i);
13959 	}
13960     }
13961 }
13962 
13963 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13964    ARGS.  */
13965 
13966 static void
13967 map_breakpoint_numbers (const char *args,
13968 			gdb::function_view<void (breakpoint *)> function)
13969 {
13970   if (args == NULL || *args == '\0')
13971     error_no_arg (_("one or more breakpoint numbers"));
13972 
13973   number_or_range_parser parser (args);
13974 
13975   while (!parser.finished ())
13976     {
13977       int num = parser.get_number ();
13978       map_breakpoint_number_range (std::make_pair (num, num), function);
13979     }
13980 }
13981 
13982 /* Return the breakpoint location structure corresponding to the
13983    BP_NUM and LOC_NUM values.  */
13984 
13985 static struct bp_location *
13986 find_location_by_number (int bp_num, int loc_num)
13987 {
13988   struct breakpoint *b;
13989 
13990   ALL_BREAKPOINTS (b)
13991     if (b->number == bp_num)
13992       {
13993 	break;
13994       }
13995 
13996   if (!b || b->number != bp_num)
13997     error (_("Bad breakpoint number '%d'"), bp_num);
13998 
13999   if (loc_num == 0)
14000     error (_("Bad breakpoint location number '%d'"), loc_num);
14001 
14002   int n = 0;
14003   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14004     if (++n == loc_num)
14005       return loc;
14006 
14007   error (_("Bad breakpoint location number '%d'"), loc_num);
14008 }
14009 
14010 /* Modes of operation for extract_bp_num.  */
14011 enum class extract_bp_kind
14012 {
14013   /* Extracting a breakpoint number.  */
14014   bp,
14015 
14016   /* Extracting a location number.  */
14017   loc,
14018 };
14019 
14020 /* Extract a breakpoint or location number (as determined by KIND)
14021    from the string starting at START.  TRAILER is a character which
14022    can be found after the number.  If you don't want a trailer, use
14023    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
14024    string.  This always returns a positive integer.  */
14025 
14026 static int
14027 extract_bp_num (extract_bp_kind kind, const char *start,
14028 		int trailer, const char **end_out = NULL)
14029 {
14030   const char *end = start;
14031   int num = get_number_trailer (&end, trailer);
14032   if (num < 0)
14033     error (kind == extract_bp_kind::bp
14034 	   ? _("Negative breakpoint number '%.*s'")
14035 	   : _("Negative breakpoint location number '%.*s'"),
14036 	   int (end - start), start);
14037   if (num == 0)
14038     error (kind == extract_bp_kind::bp
14039 	   ? _("Bad breakpoint number '%.*s'")
14040 	   : _("Bad breakpoint location number '%.*s'"),
14041 	   int (end - start), start);
14042 
14043   if (end_out != NULL)
14044     *end_out = end;
14045   return num;
14046 }
14047 
14048 /* Extract a breakpoint or location range (as determined by KIND) in
14049    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
14050    representing the (inclusive) range.  The returned pair's elements
14051    are always positive integers.  */
14052 
14053 static std::pair<int, int>
14054 extract_bp_or_bp_range (extract_bp_kind kind,
14055 			const std::string &arg,
14056 			std::string::size_type arg_offset)
14057 {
14058   std::pair<int, int> range;
14059   const char *bp_loc = &arg[arg_offset];
14060   std::string::size_type dash = arg.find ('-', arg_offset);
14061   if (dash != std::string::npos)
14062     {
14063       /* bp_loc is a range (x-z).  */
14064       if (arg.length () == dash + 1)
14065 	error (kind == extract_bp_kind::bp
14066 	       ? _("Bad breakpoint number at or near: '%s'")
14067 	       : _("Bad breakpoint location number at or near: '%s'"),
14068 	       bp_loc);
14069 
14070       const char *end;
14071       const char *start_first = bp_loc;
14072       const char *start_second = &arg[dash + 1];
14073       range.first = extract_bp_num (kind, start_first, '-');
14074       range.second = extract_bp_num (kind, start_second, '\0', &end);
14075 
14076       if (range.first > range.second)
14077 	error (kind == extract_bp_kind::bp
14078 	       ? _("Inverted breakpoint range at '%.*s'")
14079 	       : _("Inverted breakpoint location range at '%.*s'"),
14080 	       int (end - start_first), start_first);
14081     }
14082   else
14083     {
14084       /* bp_loc is a single value.  */
14085       range.first = extract_bp_num (kind, bp_loc, '\0');
14086       range.second = range.first;
14087     }
14088   return range;
14089 }
14090 
14091 /* Extract the breakpoint/location range specified by ARG.  Returns
14092    the breakpoint range in BP_NUM_RANGE, and the location range in
14093    BP_LOC_RANGE.
14094 
14095    ARG may be in any of the following forms:
14096 
14097    x     where 'x' is a breakpoint number.
14098    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14099    x.y   where 'x' is a breakpoint number and 'y' a location number.
14100    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14101 	 location number range.
14102 */
14103 
14104 static void
14105 extract_bp_number_and_location (const std::string &arg,
14106 				std::pair<int, int> &bp_num_range,
14107 				std::pair<int, int> &bp_loc_range)
14108 {
14109   std::string::size_type dot = arg.find ('.');
14110 
14111   if (dot != std::string::npos)
14112     {
14113       /* Handle 'x.y' and 'x.y-z' cases.  */
14114 
14115       if (arg.length () == dot + 1 || dot == 0)
14116 	error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14117 
14118       bp_num_range.first
14119 	= extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14120       bp_num_range.second = bp_num_range.first;
14121 
14122       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14123 					     arg, dot + 1);
14124     }
14125   else
14126     {
14127       /* Handle x and x-y cases.  */
14128 
14129       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14130       bp_loc_range.first = 0;
14131       bp_loc_range.second = 0;
14132     }
14133 }
14134 
14135 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14136    specifies whether to enable or disable.  */
14137 
14138 static void
14139 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14140 {
14141   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14142   if (loc != NULL)
14143     {
14144       if (loc->enabled != enable)
14145 	{
14146 	  loc->enabled = enable;
14147 	  mark_breakpoint_location_modified (loc);
14148 	}
14149       if (target_supports_enable_disable_tracepoint ()
14150 	  && current_trace_status ()->running && loc->owner
14151 	  && is_tracepoint (loc->owner))
14152 	target_disable_tracepoint (loc);
14153     }
14154   update_global_location_list (UGLL_DONT_INSERT);
14155 
14156   gdb::observers::breakpoint_modified.notify (loc->owner);
14157 }
14158 
14159 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14160    number of the breakpoint, and BP_LOC_RANGE specifies the
14161    (inclusive) range of location numbers of that breakpoint to
14162    enable/disable.  ENABLE specifies whether to enable or disable the
14163    location.  */
14164 
14165 static void
14166 enable_disable_breakpoint_location_range (int bp_num,
14167 					  std::pair<int, int> &bp_loc_range,
14168 					  bool enable)
14169 {
14170   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14171     enable_disable_bp_num_loc (bp_num, i, enable);
14172 }
14173 
14174 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14175    If from_tty is nonzero, it prints a message to that effect,
14176    which ends with a period (no newline).  */
14177 
14178 void
14179 disable_breakpoint (struct breakpoint *bpt)
14180 {
14181   /* Never disable a watchpoint scope breakpoint; we want to
14182      hit them when we leave scope so we can delete both the
14183      watchpoint and its scope breakpoint at that time.  */
14184   if (bpt->type == bp_watchpoint_scope)
14185     return;
14186 
14187   bpt->enable_state = bp_disabled;
14188 
14189   /* Mark breakpoint locations modified.  */
14190   mark_breakpoint_modified (bpt);
14191 
14192   if (target_supports_enable_disable_tracepoint ()
14193       && current_trace_status ()->running && is_tracepoint (bpt))
14194     {
14195       struct bp_location *location;
14196 
14197       for (location = bpt->loc; location; location = location->next)
14198 	target_disable_tracepoint (location);
14199     }
14200 
14201   update_global_location_list (UGLL_DONT_INSERT);
14202 
14203   gdb::observers::breakpoint_modified.notify (bpt);
14204 }
14205 
14206 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14207    specified in ARGS.  ARGS may be in any of the formats handled by
14208    extract_bp_number_and_location.  ENABLE specifies whether to enable
14209    or disable the breakpoints/locations.  */
14210 
14211 static void
14212 enable_disable_command (const char *args, int from_tty, bool enable)
14213 {
14214   if (args == 0)
14215     {
14216       struct breakpoint *bpt;
14217 
14218       ALL_BREAKPOINTS (bpt)
14219 	if (user_breakpoint_p (bpt))
14220 	  {
14221 	    if (enable)
14222 	      enable_breakpoint (bpt);
14223 	    else
14224 	      disable_breakpoint (bpt);
14225 	  }
14226     }
14227   else
14228     {
14229       std::string num = extract_arg (&args);
14230 
14231       while (!num.empty ())
14232 	{
14233 	  std::pair<int, int> bp_num_range, bp_loc_range;
14234 
14235 	  extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14236 
14237 	  if (bp_loc_range.first == bp_loc_range.second
14238 	      && bp_loc_range.first == 0)
14239 	    {
14240 	      /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14241 	      map_breakpoint_number_range (bp_num_range,
14242 					   enable
14243 					   ? enable_breakpoint
14244 					   : disable_breakpoint);
14245 	    }
14246 	  else
14247 	    {
14248 	      /* Handle breakpoint ids with formats 'x.y' or
14249 		 'x.y-z'.  */
14250 	      enable_disable_breakpoint_location_range
14251 		(bp_num_range.first, bp_loc_range, enable);
14252 	    }
14253 	  num = extract_arg (&args);
14254 	}
14255     }
14256 }
14257 
14258 /* The disable command disables the specified breakpoints/locations
14259    (or all defined breakpoints) so they're no longer effective in
14260    stopping the inferior.  ARGS may be in any of the forms defined in
14261    extract_bp_number_and_location.  */
14262 
14263 static void
14264 disable_command (const char *args, int from_tty)
14265 {
14266   enable_disable_command (args, from_tty, false);
14267 }
14268 
14269 static void
14270 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14271 			int count)
14272 {
14273   int target_resources_ok;
14274 
14275   if (bpt->type == bp_hardware_breakpoint)
14276     {
14277       int i;
14278       i = hw_breakpoint_used_count ();
14279       target_resources_ok =
14280 	target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14281 					    i + 1, 0);
14282       if (target_resources_ok == 0)
14283 	error (_("No hardware breakpoint support in the target."));
14284       else if (target_resources_ok < 0)
14285 	error (_("Hardware breakpoints used exceeds limit."));
14286     }
14287 
14288   if (is_watchpoint (bpt))
14289     {
14290       /* Initialize it just to avoid a GCC false warning.  */
14291       enum enable_state orig_enable_state = bp_disabled;
14292 
14293       try
14294 	{
14295 	  struct watchpoint *w = (struct watchpoint *) bpt;
14296 
14297 	  orig_enable_state = bpt->enable_state;
14298 	  bpt->enable_state = bp_enabled;
14299 	  update_watchpoint (w, 1 /* reparse */);
14300 	}
14301       catch (const gdb_exception &e)
14302 	{
14303 	  bpt->enable_state = orig_enable_state;
14304 	  exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14305 			     bpt->number);
14306 	  return;
14307 	}
14308     }
14309 
14310   bpt->enable_state = bp_enabled;
14311 
14312   /* Mark breakpoint locations modified.  */
14313   mark_breakpoint_modified (bpt);
14314 
14315   if (target_supports_enable_disable_tracepoint ()
14316       && current_trace_status ()->running && is_tracepoint (bpt))
14317     {
14318       struct bp_location *location;
14319 
14320       for (location = bpt->loc; location; location = location->next)
14321 	target_enable_tracepoint (location);
14322     }
14323 
14324   bpt->disposition = disposition;
14325   bpt->enable_count = count;
14326   update_global_location_list (UGLL_MAY_INSERT);
14327 
14328   gdb::observers::breakpoint_modified.notify (bpt);
14329 }
14330 
14331 
14332 void
14333 enable_breakpoint (struct breakpoint *bpt)
14334 {
14335   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14336 }
14337 
14338 /* The enable command enables the specified breakpoints/locations (or
14339    all defined breakpoints) so they once again become (or continue to
14340    be) effective in stopping the inferior.  ARGS may be in any of the
14341    forms defined in extract_bp_number_and_location.  */
14342 
14343 static void
14344 enable_command (const char *args, int from_tty)
14345 {
14346   enable_disable_command (args, from_tty, true);
14347 }
14348 
14349 static void
14350 enable_once_command (const char *args, int from_tty)
14351 {
14352   map_breakpoint_numbers
14353     (args, [&] (breakpoint *b)
14354      {
14355        iterate_over_related_breakpoints
14356 	 (b, [&] (breakpoint *bpt)
14357 	  {
14358 	    enable_breakpoint_disp (bpt, disp_disable, 1);
14359 	  });
14360      });
14361 }
14362 
14363 static void
14364 enable_count_command (const char *args, int from_tty)
14365 {
14366   int count;
14367 
14368   if (args == NULL)
14369     error_no_arg (_("hit count"));
14370 
14371   count = get_number (&args);
14372 
14373   map_breakpoint_numbers
14374     (args, [&] (breakpoint *b)
14375      {
14376        iterate_over_related_breakpoints
14377 	 (b, [&] (breakpoint *bpt)
14378 	  {
14379 	    enable_breakpoint_disp (bpt, disp_disable, count);
14380 	  });
14381      });
14382 }
14383 
14384 static void
14385 enable_delete_command (const char *args, int from_tty)
14386 {
14387   map_breakpoint_numbers
14388     (args, [&] (breakpoint *b)
14389      {
14390        iterate_over_related_breakpoints
14391 	 (b, [&] (breakpoint *bpt)
14392 	  {
14393 	    enable_breakpoint_disp (bpt, disp_del, 1);
14394 	  });
14395      });
14396 }
14397 
14398 /* Invalidate last known value of any hardware watchpoint if
14399    the memory which that value represents has been written to by
14400    GDB itself.  */
14401 
14402 static void
14403 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14404 				      CORE_ADDR addr, ssize_t len,
14405 				      const bfd_byte *data)
14406 {
14407   struct breakpoint *bp;
14408 
14409   ALL_BREAKPOINTS (bp)
14410     if (bp->enable_state == bp_enabled
14411 	&& bp->type == bp_hardware_watchpoint)
14412       {
14413 	struct watchpoint *wp = (struct watchpoint *) bp;
14414 
14415 	if (wp->val_valid && wp->val != nullptr)
14416 	  {
14417 	    struct bp_location *loc;
14418 
14419 	    for (loc = bp->loc; loc != NULL; loc = loc->next)
14420 	      if (loc->loc_type == bp_loc_hardware_watchpoint
14421 		  && loc->address + loc->length > addr
14422 		  && addr + len > loc->address)
14423 		{
14424 		  wp->val = NULL;
14425 		  wp->val_valid = false;
14426 		}
14427 	  }
14428       }
14429 }
14430 
14431 /* Create and insert a breakpoint for software single step.  */
14432 
14433 void
14434 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14435 			       const address_space *aspace,
14436 			       CORE_ADDR next_pc)
14437 {
14438   struct thread_info *tp = inferior_thread ();
14439   struct symtab_and_line sal;
14440   CORE_ADDR pc = next_pc;
14441 
14442   if (tp->control.single_step_breakpoints == NULL)
14443     {
14444       tp->control.single_step_breakpoints
14445 	= new_single_step_breakpoint (tp->global_num, gdbarch);
14446     }
14447 
14448   sal = find_pc_line (pc, 0);
14449   sal.pc = pc;
14450   sal.section = find_pc_overlay (pc);
14451   sal.explicit_pc = 1;
14452   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14453 
14454   update_global_location_list (UGLL_INSERT);
14455 }
14456 
14457 /* Insert single step breakpoints according to the current state.  */
14458 
14459 int
14460 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14461 {
14462   struct regcache *regcache = get_current_regcache ();
14463   std::vector<CORE_ADDR> next_pcs;
14464 
14465   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14466 
14467   if (!next_pcs.empty ())
14468     {
14469       struct frame_info *frame = get_current_frame ();
14470       const address_space *aspace = get_frame_address_space (frame);
14471 
14472       for (CORE_ADDR pc : next_pcs)
14473 	insert_single_step_breakpoint (gdbarch, aspace, pc);
14474 
14475       return 1;
14476     }
14477   else
14478     return 0;
14479 }
14480 
14481 /* See breakpoint.h.  */
14482 
14483 int
14484 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14485 				       const address_space *aspace,
14486 				       CORE_ADDR pc)
14487 {
14488   struct bp_location *loc;
14489 
14490   for (loc = bp->loc; loc != NULL; loc = loc->next)
14491     if (loc->inserted
14492 	&& breakpoint_location_address_match (loc, aspace, pc))
14493       return 1;
14494 
14495   return 0;
14496 }
14497 
14498 /* Check whether a software single-step breakpoint is inserted at
14499    PC.  */
14500 
14501 int
14502 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14503 					CORE_ADDR pc)
14504 {
14505   struct breakpoint *bpt;
14506 
14507   ALL_BREAKPOINTS (bpt)
14508     {
14509       if (bpt->type == bp_single_step
14510 	  && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14511 	return 1;
14512     }
14513   return 0;
14514 }
14515 
14516 /* Tracepoint-specific operations.  */
14517 
14518 /* Set tracepoint count to NUM.  */
14519 static void
14520 set_tracepoint_count (int num)
14521 {
14522   tracepoint_count = num;
14523   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14524 }
14525 
14526 static void
14527 trace_command (const char *arg, int from_tty)
14528 {
14529   event_location_up location = string_to_event_location (&arg,
14530 							 current_language);
14531   const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
14532     (location.get (), true /* is_tracepoint */);
14533 
14534   create_breakpoint (get_current_arch (),
14535 		     location.get (),
14536 		     NULL, 0, arg, 1 /* parse arg */,
14537 		     0 /* tempflag */,
14538 		     bp_tracepoint /* type_wanted */,
14539 		     0 /* Ignore count */,
14540 		     pending_break_support,
14541 		     ops,
14542 		     from_tty,
14543 		     1 /* enabled */,
14544 		     0 /* internal */, 0);
14545 }
14546 
14547 static void
14548 ftrace_command (const char *arg, int from_tty)
14549 {
14550   event_location_up location = string_to_event_location (&arg,
14551 							 current_language);
14552   create_breakpoint (get_current_arch (),
14553 		     location.get (),
14554 		     NULL, 0, arg, 1 /* parse arg */,
14555 		     0 /* tempflag */,
14556 		     bp_fast_tracepoint /* type_wanted */,
14557 		     0 /* Ignore count */,
14558 		     pending_break_support,
14559 		     &tracepoint_breakpoint_ops,
14560 		     from_tty,
14561 		     1 /* enabled */,
14562 		     0 /* internal */, 0);
14563 }
14564 
14565 /* strace command implementation.  Creates a static tracepoint.  */
14566 
14567 static void
14568 strace_command (const char *arg, int from_tty)
14569 {
14570   struct breakpoint_ops *ops;
14571   event_location_up location;
14572 
14573   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14574      or with a normal static tracepoint.  */
14575   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14576     {
14577       ops = &strace_marker_breakpoint_ops;
14578       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14579     }
14580   else
14581     {
14582       ops = &tracepoint_breakpoint_ops;
14583       location = string_to_event_location (&arg, current_language);
14584     }
14585 
14586   create_breakpoint (get_current_arch (),
14587 		     location.get (),
14588 		     NULL, 0, arg, 1 /* parse arg */,
14589 		     0 /* tempflag */,
14590 		     bp_static_tracepoint /* type_wanted */,
14591 		     0 /* Ignore count */,
14592 		     pending_break_support,
14593 		     ops,
14594 		     from_tty,
14595 		     1 /* enabled */,
14596 		     0 /* internal */, 0);
14597 }
14598 
14599 /* Set up a fake reader function that gets command lines from a linked
14600    list that was acquired during tracepoint uploading.  */
14601 
14602 static struct uploaded_tp *this_utp;
14603 static int next_cmd;
14604 
14605 static char *
14606 read_uploaded_action (void)
14607 {
14608   char *rslt = nullptr;
14609 
14610   if (next_cmd < this_utp->cmd_strings.size ())
14611     {
14612       rslt = this_utp->cmd_strings[next_cmd].get ();
14613       next_cmd++;
14614     }
14615 
14616   return rslt;
14617 }
14618 
14619 /* Given information about a tracepoint as recorded on a target (which
14620    can be either a live system or a trace file), attempt to create an
14621    equivalent GDB tracepoint.  This is not a reliable process, since
14622    the target does not necessarily have all the information used when
14623    the tracepoint was originally defined.  */
14624 
14625 struct tracepoint *
14626 create_tracepoint_from_upload (struct uploaded_tp *utp)
14627 {
14628   const char *addr_str;
14629   char small_buf[100];
14630   struct tracepoint *tp;
14631 
14632   if (utp->at_string)
14633     addr_str = utp->at_string.get ();
14634   else
14635     {
14636       /* In the absence of a source location, fall back to raw
14637 	 address.  Since there is no way to confirm that the address
14638 	 means the same thing as when the trace was started, warn the
14639 	 user.  */
14640       warning (_("Uploaded tracepoint %d has no "
14641 		 "source location, using raw address"),
14642 	       utp->number);
14643       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14644       addr_str = small_buf;
14645     }
14646 
14647   /* There's not much we can do with a sequence of bytecodes.  */
14648   if (utp->cond && !utp->cond_string)
14649     warning (_("Uploaded tracepoint %d condition "
14650 	       "has no source form, ignoring it"),
14651 	     utp->number);
14652 
14653   event_location_up location = string_to_event_location (&addr_str,
14654 							 current_language);
14655   if (!create_breakpoint (get_current_arch (),
14656 			  location.get (),
14657 			  utp->cond_string.get (), -1, addr_str,
14658 			  0 /* parse cond/thread */,
14659 			  0 /* tempflag */,
14660 			  utp->type /* type_wanted */,
14661 			  0 /* Ignore count */,
14662 			  pending_break_support,
14663 			  &tracepoint_breakpoint_ops,
14664 			  0 /* from_tty */,
14665 			  utp->enabled /* enabled */,
14666 			  0 /* internal */,
14667 			  CREATE_BREAKPOINT_FLAGS_INSERTED))
14668     return NULL;
14669 
14670   /* Get the tracepoint we just created.  */
14671   tp = get_tracepoint (tracepoint_count);
14672   gdb_assert (tp != NULL);
14673 
14674   if (utp->pass > 0)
14675     {
14676       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14677 		 tp->number);
14678 
14679       trace_pass_command (small_buf, 0);
14680     }
14681 
14682   /* If we have uploaded versions of the original commands, set up a
14683      special-purpose "reader" function and call the usual command line
14684      reader, then pass the result to the breakpoint command-setting
14685      function.  */
14686   if (!utp->cmd_strings.empty ())
14687     {
14688       counted_command_line cmd_list;
14689 
14690       this_utp = utp;
14691       next_cmd = 0;
14692 
14693       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14694 
14695       breakpoint_set_commands (tp, std::move (cmd_list));
14696     }
14697   else if (!utp->actions.empty ()
14698 	   || !utp->step_actions.empty ())
14699     warning (_("Uploaded tracepoint %d actions "
14700 	       "have no source form, ignoring them"),
14701 	     utp->number);
14702 
14703   /* Copy any status information that might be available.  */
14704   tp->hit_count = utp->hit_count;
14705   tp->traceframe_usage = utp->traceframe_usage;
14706 
14707   return tp;
14708 }
14709 
14710 /* Print information on tracepoint number TPNUM_EXP, or all if
14711    omitted.  */
14712 
14713 static void
14714 info_tracepoints_command (const char *args, int from_tty)
14715 {
14716   struct ui_out *uiout = current_uiout;
14717   int num_printed;
14718 
14719   num_printed = breakpoint_1 (args, false, is_tracepoint);
14720 
14721   if (num_printed == 0)
14722     {
14723       if (args == NULL || *args == '\0')
14724 	uiout->message ("No tracepoints.\n");
14725       else
14726 	uiout->message ("No tracepoint matching '%s'.\n", args);
14727     }
14728 
14729   default_collect_info ();
14730 }
14731 
14732 /* The 'enable trace' command enables tracepoints.
14733    Not supported by all targets.  */
14734 static void
14735 enable_trace_command (const char *args, int from_tty)
14736 {
14737   enable_command (args, from_tty);
14738 }
14739 
14740 /* The 'disable trace' command disables tracepoints.
14741    Not supported by all targets.  */
14742 static void
14743 disable_trace_command (const char *args, int from_tty)
14744 {
14745   disable_command (args, from_tty);
14746 }
14747 
14748 /* Remove a tracepoint (or all if no argument).  */
14749 static void
14750 delete_trace_command (const char *arg, int from_tty)
14751 {
14752   struct breakpoint *b, *b_tmp;
14753 
14754   dont_repeat ();
14755 
14756   if (arg == 0)
14757     {
14758       int breaks_to_delete = 0;
14759 
14760       /* Delete all breakpoints if no argument.
14761          Do not delete internal or call-dummy breakpoints, these
14762          have to be deleted with an explicit breakpoint number
14763 	 argument.  */
14764       ALL_TRACEPOINTS (b)
14765 	if (is_tracepoint (b) && user_breakpoint_p (b))
14766 	  {
14767 	    breaks_to_delete = 1;
14768 	    break;
14769 	  }
14770 
14771       /* Ask user only if there are some breakpoints to delete.  */
14772       if (!from_tty
14773 	  || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14774 	{
14775 	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
14776 	    if (is_tracepoint (b) && user_breakpoint_p (b))
14777 	      delete_breakpoint (b);
14778 	}
14779     }
14780   else
14781     map_breakpoint_numbers
14782       (arg, [&] (breakpoint *br)
14783        {
14784 	 iterate_over_related_breakpoints (br, delete_breakpoint);
14785        });
14786 }
14787 
14788 /* Helper function for trace_pass_command.  */
14789 
14790 static void
14791 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14792 {
14793   tp->pass_count = count;
14794   gdb::observers::breakpoint_modified.notify (tp);
14795   if (from_tty)
14796     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14797 		     tp->number, count);
14798 }
14799 
14800 /* Set passcount for tracepoint.
14801 
14802    First command argument is passcount, second is tracepoint number.
14803    If tracepoint number omitted, apply to most recently defined.
14804    Also accepts special argument "all".  */
14805 
14806 static void
14807 trace_pass_command (const char *args, int from_tty)
14808 {
14809   struct tracepoint *t1;
14810   ULONGEST count;
14811 
14812   if (args == 0 || *args == 0)
14813     error (_("passcount command requires an "
14814 	     "argument (count + optional TP num)"));
14815 
14816   count = strtoulst (args, &args, 10);	/* Count comes first, then TP num.  */
14817 
14818   args = skip_spaces (args);
14819   if (*args && strncasecmp (args, "all", 3) == 0)
14820     {
14821       struct breakpoint *b;
14822 
14823       args += 3;			/* Skip special argument "all".  */
14824       if (*args)
14825 	error (_("Junk at end of arguments."));
14826 
14827       ALL_TRACEPOINTS (b)
14828       {
14829 	t1 = (struct tracepoint *) b;
14830 	trace_pass_set_count (t1, count, from_tty);
14831       }
14832     }
14833   else if (*args == '\0')
14834     {
14835       t1 = get_tracepoint_by_number (&args, NULL);
14836       if (t1)
14837 	trace_pass_set_count (t1, count, from_tty);
14838     }
14839   else
14840     {
14841       number_or_range_parser parser (args);
14842       while (!parser.finished ())
14843 	{
14844 	  t1 = get_tracepoint_by_number (&args, &parser);
14845 	  if (t1)
14846 	    trace_pass_set_count (t1, count, from_tty);
14847 	}
14848     }
14849 }
14850 
14851 struct tracepoint *
14852 get_tracepoint (int num)
14853 {
14854   struct breakpoint *t;
14855 
14856   ALL_TRACEPOINTS (t)
14857     if (t->number == num)
14858       return (struct tracepoint *) t;
14859 
14860   return NULL;
14861 }
14862 
14863 /* Find the tracepoint with the given target-side number (which may be
14864    different from the tracepoint number after disconnecting and
14865    reconnecting).  */
14866 
14867 struct tracepoint *
14868 get_tracepoint_by_number_on_target (int num)
14869 {
14870   struct breakpoint *b;
14871 
14872   ALL_TRACEPOINTS (b)
14873     {
14874       struct tracepoint *t = (struct tracepoint *) b;
14875 
14876       if (t->number_on_target == num)
14877 	return t;
14878     }
14879 
14880   return NULL;
14881 }
14882 
14883 /* Utility: parse a tracepoint number and look it up in the list.
14884    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14885    If the argument is missing, the most recent tracepoint
14886    (tracepoint_count) is returned.  */
14887 
14888 struct tracepoint *
14889 get_tracepoint_by_number (const char **arg,
14890 			  number_or_range_parser *parser)
14891 {
14892   struct breakpoint *t;
14893   int tpnum;
14894   const char *instring = arg == NULL ? NULL : *arg;
14895 
14896   if (parser != NULL)
14897     {
14898       gdb_assert (!parser->finished ());
14899       tpnum = parser->get_number ();
14900     }
14901   else if (arg == NULL || *arg == NULL || ! **arg)
14902     tpnum = tracepoint_count;
14903   else
14904     tpnum = get_number (arg);
14905 
14906   if (tpnum <= 0)
14907     {
14908       if (instring && *instring)
14909 	printf_filtered (_("bad tracepoint number at or near '%s'\n"),
14910 			 instring);
14911       else
14912 	printf_filtered (_("No previous tracepoint\n"));
14913       return NULL;
14914     }
14915 
14916   ALL_TRACEPOINTS (t)
14917     if (t->number == tpnum)
14918     {
14919       return (struct tracepoint *) t;
14920     }
14921 
14922   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14923   return NULL;
14924 }
14925 
14926 void
14927 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14928 {
14929   if (b->thread != -1)
14930     fprintf_unfiltered (fp, " thread %d", b->thread);
14931 
14932   if (b->task != 0)
14933     fprintf_unfiltered (fp, " task %d", b->task);
14934 
14935   fprintf_unfiltered (fp, "\n");
14936 }
14937 
14938 /* Save information on user settable breakpoints (watchpoints, etc) to
14939    a new script file named FILENAME.  If FILTER is non-NULL, call it
14940    on each breakpoint and only include the ones for which it returns
14941    true.  */
14942 
14943 static void
14944 save_breakpoints (const char *filename, int from_tty,
14945 		  bool (*filter) (const struct breakpoint *))
14946 {
14947   struct breakpoint *tp;
14948   int any = 0;
14949   int extra_trace_bits = 0;
14950 
14951   if (filename == 0 || *filename == 0)
14952     error (_("Argument required (file name in which to save)"));
14953 
14954   /* See if we have anything to save.  */
14955   ALL_BREAKPOINTS (tp)
14956   {
14957     /* Skip internal and momentary breakpoints.  */
14958     if (!user_breakpoint_p (tp))
14959       continue;
14960 
14961     /* If we have a filter, only save the breakpoints it accepts.  */
14962     if (filter && !filter (tp))
14963       continue;
14964 
14965     any = 1;
14966 
14967     if (is_tracepoint (tp))
14968       {
14969 	extra_trace_bits = 1;
14970 
14971 	/* We can stop searching.  */
14972 	break;
14973       }
14974   }
14975 
14976   if (!any)
14977     {
14978       warning (_("Nothing to save."));
14979       return;
14980     }
14981 
14982   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14983 
14984   stdio_file fp;
14985 
14986   if (!fp.open (expanded_filename.get (), "w"))
14987     error (_("Unable to open file '%s' for saving (%s)"),
14988 	   expanded_filename.get (), safe_strerror (errno));
14989 
14990   if (extra_trace_bits)
14991     save_trace_state_variables (&fp);
14992 
14993   ALL_BREAKPOINTS (tp)
14994   {
14995     /* Skip internal and momentary breakpoints.  */
14996     if (!user_breakpoint_p (tp))
14997       continue;
14998 
14999     /* If we have a filter, only save the breakpoints it accepts.  */
15000     if (filter && !filter (tp))
15001       continue;
15002 
15003     tp->ops->print_recreate (tp, &fp);
15004 
15005     /* Note, we can't rely on tp->number for anything, as we can't
15006        assume the recreated breakpoint numbers will match.  Use $bpnum
15007        instead.  */
15008 
15009     if (tp->cond_string)
15010       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15011 
15012     if (tp->ignore_count)
15013       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15014 
15015     if (tp->type != bp_dprintf && tp->commands)
15016       {
15017 	fp.puts ("  commands\n");
15018 
15019 	current_uiout->redirect (&fp);
15020 	try
15021 	  {
15022 	    print_command_lines (current_uiout, tp->commands.get (), 2);
15023 	  }
15024 	catch (const gdb_exception &ex)
15025 	  {
15026 	  current_uiout->redirect (NULL);
15027 	    throw;
15028 	  }
15029 
15030 	current_uiout->redirect (NULL);
15031 	fp.puts ("  end\n");
15032       }
15033 
15034     if (tp->enable_state == bp_disabled)
15035       fp.puts ("disable $bpnum\n");
15036 
15037     /* If this is a multi-location breakpoint, check if the locations
15038        should be individually disabled.  Watchpoint locations are
15039        special, and not user visible.  */
15040     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15041       {
15042 	struct bp_location *loc;
15043 	int n = 1;
15044 
15045 	for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15046 	  if (!loc->enabled)
15047 	    fp.printf ("disable $bpnum.%d\n", n);
15048       }
15049   }
15050 
15051   if (extra_trace_bits && *default_collect)
15052     fp.printf ("set default-collect %s\n", default_collect);
15053 
15054   if (from_tty)
15055     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15056 }
15057 
15058 /* The `save breakpoints' command.  */
15059 
15060 static void
15061 save_breakpoints_command (const char *args, int from_tty)
15062 {
15063   save_breakpoints (args, from_tty, NULL);
15064 }
15065 
15066 /* The `save tracepoints' command.  */
15067 
15068 static void
15069 save_tracepoints_command (const char *args, int from_tty)
15070 {
15071   save_breakpoints (args, from_tty, is_tracepoint);
15072 }
15073 
15074 /* Create a vector of all tracepoints.  */
15075 
15076 std::vector<breakpoint *>
15077 all_tracepoints (void)
15078 {
15079   std::vector<breakpoint *> tp_vec;
15080   struct breakpoint *tp;
15081 
15082   ALL_TRACEPOINTS (tp)
15083   {
15084     tp_vec.push_back (tp);
15085   }
15086 
15087   return tp_vec;
15088 }
15089 
15090 
15091 /* This help string is used to consolidate all the help string for specifying
15092    locations used by several commands.  */
15093 
15094 #define LOCATION_HELP_STRING \
15095 "Linespecs are colon-separated lists of location parameters, such as\n\
15096 source filename, function name, label name, and line number.\n\
15097 Example: To specify the start of a label named \"the_top\" in the\n\
15098 function \"fact\" in the file \"factorial.c\", use\n\
15099 \"factorial.c:fact:the_top\".\n\
15100 \n\
15101 Address locations begin with \"*\" and specify an exact address in the\n\
15102 program.  Example: To specify the fourth byte past the start function\n\
15103 \"main\", use \"*main + 4\".\n\
15104 \n\
15105 Explicit locations are similar to linespecs but use an option/argument\n\
15106 syntax to specify location parameters.\n\
15107 Example: To specify the start of the label named \"the_top\" in the\n\
15108 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15109 -function fact -label the_top\".\n\
15110 \n\
15111 By default, a specified function is matched against the program's\n\
15112 functions in all scopes.  For C++, this means in all namespaces and\n\
15113 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15114 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15115 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15116 specified name as a complete fully-qualified name instead."
15117 
15118 /* This help string is used for the break, hbreak, tbreak and thbreak
15119    commands.  It is defined as a macro to prevent duplication.
15120    COMMAND should be a string constant containing the name of the
15121    command.  */
15122 
15123 #define BREAK_ARGS_HELP(command) \
15124 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15125 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15126 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15127 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15128 `-probe-dtrace' (for a DTrace probe).\n\
15129 LOCATION may be a linespec, address, or explicit location as described\n\
15130 below.\n\
15131 \n\
15132 With no LOCATION, uses current execution address of the selected\n\
15133 stack frame.  This is useful for breaking on return to a stack frame.\n\
15134 \n\
15135 THREADNUM is the number from \"info threads\".\n\
15136 CONDITION is a boolean expression.\n\
15137 \n" LOCATION_HELP_STRING "\n\n\
15138 Multiple breakpoints at one place are permitted, and useful if their\n\
15139 conditions are different.\n\
15140 \n\
15141 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15142 
15143 /* List of subcommands for "catch".  */
15144 static struct cmd_list_element *catch_cmdlist;
15145 
15146 /* List of subcommands for "tcatch".  */
15147 static struct cmd_list_element *tcatch_cmdlist;
15148 
15149 void
15150 add_catch_command (const char *name, const char *docstring,
15151 		   cmd_const_sfunc_ftype *sfunc,
15152 		   completer_ftype *completer,
15153 		   void *user_data_catch,
15154 		   void *user_data_tcatch)
15155 {
15156   struct cmd_list_element *command;
15157 
15158   command = add_cmd (name, class_breakpoint, docstring,
15159 		     &catch_cmdlist);
15160   set_cmd_sfunc (command, sfunc);
15161   set_cmd_context (command, user_data_catch);
15162   set_cmd_completer (command, completer);
15163 
15164   command = add_cmd (name, class_breakpoint, docstring,
15165 		     &tcatch_cmdlist);
15166   set_cmd_sfunc (command, sfunc);
15167   set_cmd_context (command, user_data_tcatch);
15168   set_cmd_completer (command, completer);
15169 }
15170 
15171 struct breakpoint *
15172 iterate_over_breakpoints (gdb::function_view<bool (breakpoint *)> callback)
15173 {
15174   struct breakpoint *b, *b_tmp;
15175 
15176   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15177     {
15178       if (callback (b))
15179 	return b;
15180     }
15181 
15182   return NULL;
15183 }
15184 
15185 /* Zero if any of the breakpoint's locations could be a location where
15186    functions have been inlined, nonzero otherwise.  */
15187 
15188 static int
15189 is_non_inline_function (struct breakpoint *b)
15190 {
15191   /* The shared library event breakpoint is set on the address of a
15192      non-inline function.  */
15193   if (b->type == bp_shlib_event)
15194     return 1;
15195 
15196   return 0;
15197 }
15198 
15199 /* Nonzero if the specified PC cannot be a location where functions
15200    have been inlined.  */
15201 
15202 int
15203 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15204 			   const struct target_waitstatus *ws)
15205 {
15206   struct breakpoint *b;
15207   struct bp_location *bl;
15208 
15209   ALL_BREAKPOINTS (b)
15210     {
15211       if (!is_non_inline_function (b))
15212 	continue;
15213 
15214       for (bl = b->loc; bl != NULL; bl = bl->next)
15215 	{
15216 	  if (!bl->shlib_disabled
15217 	      && bpstat_check_location (bl, aspace, pc, ws))
15218 	    return 1;
15219 	}
15220     }
15221 
15222   return 0;
15223 }
15224 
15225 /* Remove any references to OBJFILE which is going to be freed.  */
15226 
15227 void
15228 breakpoint_free_objfile (struct objfile *objfile)
15229 {
15230   struct bp_location **locp, *loc;
15231 
15232   ALL_BP_LOCATIONS (loc, locp)
15233     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15234       loc->symtab = NULL;
15235 }
15236 
15237 void
15238 initialize_breakpoint_ops (void)
15239 {
15240   static int initialized = 0;
15241 
15242   struct breakpoint_ops *ops;
15243 
15244   if (initialized)
15245     return;
15246   initialized = 1;
15247 
15248   /* The breakpoint_ops structure to be inherit by all kinds of
15249      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15250      internal and momentary breakpoints, etc.).  */
15251   ops = &bkpt_base_breakpoint_ops;
15252   *ops = base_breakpoint_ops;
15253   ops->re_set = bkpt_re_set;
15254   ops->insert_location = bkpt_insert_location;
15255   ops->remove_location = bkpt_remove_location;
15256   ops->breakpoint_hit = bkpt_breakpoint_hit;
15257   ops->create_sals_from_location = bkpt_create_sals_from_location;
15258   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15259   ops->decode_location = bkpt_decode_location;
15260 
15261   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15262   ops = &bkpt_breakpoint_ops;
15263   *ops = bkpt_base_breakpoint_ops;
15264   ops->re_set = bkpt_re_set;
15265   ops->resources_needed = bkpt_resources_needed;
15266   ops->print_it = bkpt_print_it;
15267   ops->print_mention = bkpt_print_mention;
15268   ops->print_recreate = bkpt_print_recreate;
15269 
15270   /* Ranged breakpoints.  */
15271   ops = &ranged_breakpoint_ops;
15272   *ops = bkpt_breakpoint_ops;
15273   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15274   ops->resources_needed = resources_needed_ranged_breakpoint;
15275   ops->print_it = print_it_ranged_breakpoint;
15276   ops->print_one = print_one_ranged_breakpoint;
15277   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15278   ops->print_mention = print_mention_ranged_breakpoint;
15279   ops->print_recreate = print_recreate_ranged_breakpoint;
15280 
15281   /* Internal breakpoints.  */
15282   ops = &internal_breakpoint_ops;
15283   *ops = bkpt_base_breakpoint_ops;
15284   ops->re_set = internal_bkpt_re_set;
15285   ops->check_status = internal_bkpt_check_status;
15286   ops->print_it = internal_bkpt_print_it;
15287   ops->print_mention = internal_bkpt_print_mention;
15288 
15289   /* Momentary breakpoints.  */
15290   ops = &momentary_breakpoint_ops;
15291   *ops = bkpt_base_breakpoint_ops;
15292   ops->re_set = momentary_bkpt_re_set;
15293   ops->check_status = momentary_bkpt_check_status;
15294   ops->print_it = momentary_bkpt_print_it;
15295   ops->print_mention = momentary_bkpt_print_mention;
15296 
15297   /* Probe breakpoints.  */
15298   ops = &bkpt_probe_breakpoint_ops;
15299   *ops = bkpt_breakpoint_ops;
15300   ops->insert_location = bkpt_probe_insert_location;
15301   ops->remove_location = bkpt_probe_remove_location;
15302   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15303   ops->decode_location = bkpt_probe_decode_location;
15304 
15305   /* Watchpoints.  */
15306   ops = &watchpoint_breakpoint_ops;
15307   *ops = base_breakpoint_ops;
15308   ops->re_set = re_set_watchpoint;
15309   ops->insert_location = insert_watchpoint;
15310   ops->remove_location = remove_watchpoint;
15311   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15312   ops->check_status = check_status_watchpoint;
15313   ops->resources_needed = resources_needed_watchpoint;
15314   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15315   ops->print_it = print_it_watchpoint;
15316   ops->print_mention = print_mention_watchpoint;
15317   ops->print_recreate = print_recreate_watchpoint;
15318   ops->explains_signal = explains_signal_watchpoint;
15319 
15320   /* Masked watchpoints.  */
15321   ops = &masked_watchpoint_breakpoint_ops;
15322   *ops = watchpoint_breakpoint_ops;
15323   ops->insert_location = insert_masked_watchpoint;
15324   ops->remove_location = remove_masked_watchpoint;
15325   ops->resources_needed = resources_needed_masked_watchpoint;
15326   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15327   ops->print_it = print_it_masked_watchpoint;
15328   ops->print_one_detail = print_one_detail_masked_watchpoint;
15329   ops->print_mention = print_mention_masked_watchpoint;
15330   ops->print_recreate = print_recreate_masked_watchpoint;
15331 
15332   /* Tracepoints.  */
15333   ops = &tracepoint_breakpoint_ops;
15334   *ops = base_breakpoint_ops;
15335   ops->re_set = tracepoint_re_set;
15336   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15337   ops->print_one_detail = tracepoint_print_one_detail;
15338   ops->print_mention = tracepoint_print_mention;
15339   ops->print_recreate = tracepoint_print_recreate;
15340   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15341   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15342   ops->decode_location = tracepoint_decode_location;
15343 
15344   /* Probe tracepoints.  */
15345   ops = &tracepoint_probe_breakpoint_ops;
15346   *ops = tracepoint_breakpoint_ops;
15347   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15348   ops->decode_location = tracepoint_probe_decode_location;
15349 
15350   /* Static tracepoints with marker (`-m').  */
15351   ops = &strace_marker_breakpoint_ops;
15352   *ops = tracepoint_breakpoint_ops;
15353   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15354   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15355   ops->decode_location = strace_marker_decode_location;
15356 
15357   /* Fork catchpoints.  */
15358   ops = &catch_fork_breakpoint_ops;
15359   *ops = base_breakpoint_ops;
15360   ops->insert_location = insert_catch_fork;
15361   ops->remove_location = remove_catch_fork;
15362   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15363   ops->print_it = print_it_catch_fork;
15364   ops->print_one = print_one_catch_fork;
15365   ops->print_mention = print_mention_catch_fork;
15366   ops->print_recreate = print_recreate_catch_fork;
15367 
15368   /* Vfork catchpoints.  */
15369   ops = &catch_vfork_breakpoint_ops;
15370   *ops = base_breakpoint_ops;
15371   ops->insert_location = insert_catch_vfork;
15372   ops->remove_location = remove_catch_vfork;
15373   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15374   ops->print_it = print_it_catch_vfork;
15375   ops->print_one = print_one_catch_vfork;
15376   ops->print_mention = print_mention_catch_vfork;
15377   ops->print_recreate = print_recreate_catch_vfork;
15378 
15379   /* Exec catchpoints.  */
15380   ops = &catch_exec_breakpoint_ops;
15381   *ops = base_breakpoint_ops;
15382   ops->insert_location = insert_catch_exec;
15383   ops->remove_location = remove_catch_exec;
15384   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15385   ops->print_it = print_it_catch_exec;
15386   ops->print_one = print_one_catch_exec;
15387   ops->print_mention = print_mention_catch_exec;
15388   ops->print_recreate = print_recreate_catch_exec;
15389 
15390   /* Solib-related catchpoints.  */
15391   ops = &catch_solib_breakpoint_ops;
15392   *ops = base_breakpoint_ops;
15393   ops->insert_location = insert_catch_solib;
15394   ops->remove_location = remove_catch_solib;
15395   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15396   ops->check_status = check_status_catch_solib;
15397   ops->print_it = print_it_catch_solib;
15398   ops->print_one = print_one_catch_solib;
15399   ops->print_mention = print_mention_catch_solib;
15400   ops->print_recreate = print_recreate_catch_solib;
15401 
15402   ops = &dprintf_breakpoint_ops;
15403   *ops = bkpt_base_breakpoint_ops;
15404   ops->re_set = dprintf_re_set;
15405   ops->resources_needed = bkpt_resources_needed;
15406   ops->print_it = bkpt_print_it;
15407   ops->print_mention = bkpt_print_mention;
15408   ops->print_recreate = dprintf_print_recreate;
15409   ops->after_condition_true = dprintf_after_condition_true;
15410   ops->breakpoint_hit = dprintf_breakpoint_hit;
15411 }
15412 
15413 /* Chain containing all defined "enable breakpoint" subcommands.  */
15414 
15415 static struct cmd_list_element *enablebreaklist = NULL;
15416 
15417 /* See breakpoint.h.  */
15418 
15419 cmd_list_element *commands_cmd_element = nullptr;
15420 
15421 void _initialize_breakpoint ();
15422 void
15423 _initialize_breakpoint ()
15424 {
15425   struct cmd_list_element *c;
15426 
15427   initialize_breakpoint_ops ();
15428 
15429   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15430   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15431   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15432 
15433   breakpoint_chain = 0;
15434   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15435      before a breakpoint is set.  */
15436   breakpoint_count = 0;
15437 
15438   tracepoint_count = 0;
15439 
15440   add_com ("ignore", class_breakpoint, ignore_command, _("\
15441 Set ignore-count of breakpoint number N to COUNT.\n\
15442 Usage is `ignore N COUNT'."));
15443 
15444   commands_cmd_element = add_com ("commands", class_breakpoint,
15445 				  commands_command, _("\
15446 Set commands to be executed when the given breakpoints are hit.\n\
15447 Give a space-separated breakpoint list as argument after \"commands\".\n\
15448 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15449 (e.g. `5-7').\n\
15450 With no argument, the targeted breakpoint is the last one set.\n\
15451 The commands themselves follow starting on the next line.\n\
15452 Type a line containing \"end\" to indicate the end of them.\n\
15453 Give \"silent\" as the first line to make the breakpoint silent;\n\
15454 then no output is printed when it is hit, except what the commands print."));
15455 
15456   c = add_com ("condition", class_breakpoint, condition_command, _("\
15457 Specify breakpoint number N to break only if COND is true.\n\
15458 Usage is `condition N COND', where N is an integer and COND is an\n\
15459 expression to be evaluated whenever breakpoint N is reached."));
15460   set_cmd_completer (c, condition_completer);
15461 
15462   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15463 Set a temporary breakpoint.\n\
15464 Like \"break\" except the breakpoint is only temporary,\n\
15465 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15466 by using \"enable delete\" on the breakpoint number.\n\
15467 \n"
15468 BREAK_ARGS_HELP ("tbreak")));
15469   set_cmd_completer (c, location_completer);
15470 
15471   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15472 Set a hardware assisted breakpoint.\n\
15473 Like \"break\" except the breakpoint requires hardware support,\n\
15474 some target hardware may not have this support.\n\
15475 \n"
15476 BREAK_ARGS_HELP ("hbreak")));
15477   set_cmd_completer (c, location_completer);
15478 
15479   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15480 Set a temporary hardware assisted breakpoint.\n\
15481 Like \"hbreak\" except the breakpoint is only temporary,\n\
15482 so it will be deleted when hit.\n\
15483 \n"
15484 BREAK_ARGS_HELP ("thbreak")));
15485   set_cmd_completer (c, location_completer);
15486 
15487   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15488 Enable all or some breakpoints.\n\
15489 Usage: enable [BREAKPOINTNUM]...\n\
15490 Give breakpoint numbers (separated by spaces) as arguments.\n\
15491 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15492 This is used to cancel the effect of the \"disable\" command.\n\
15493 With a subcommand you can enable temporarily."),
15494 		  &enablelist, "enable ", 1, &cmdlist);
15495 
15496   add_com_alias ("en", "enable", class_breakpoint, 1);
15497 
15498   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15499 Enable all or some breakpoints.\n\
15500 Usage: enable breakpoints [BREAKPOINTNUM]...\n\
15501 Give breakpoint numbers (separated by spaces) as arguments.\n\
15502 This is used to cancel the effect of the \"disable\" command.\n\
15503 May be abbreviated to simply \"enable\"."),
15504 		   &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15505 
15506   add_cmd ("once", no_class, enable_once_command, _("\
15507 Enable some breakpoints for one hit.\n\
15508 Usage: enable breakpoints once BREAKPOINTNUM...\n\
15509 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15510 	   &enablebreaklist);
15511 
15512   add_cmd ("delete", no_class, enable_delete_command, _("\
15513 Enable some breakpoints and delete when hit.\n\
15514 Usage: enable breakpoints delete BREAKPOINTNUM...\n\
15515 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15516 	   &enablebreaklist);
15517 
15518   add_cmd ("count", no_class, enable_count_command, _("\
15519 Enable some breakpoints for COUNT hits.\n\
15520 Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n\
15521 If a breakpoint is hit while enabled in this fashion,\n\
15522 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15523 	   &enablebreaklist);
15524 
15525   add_cmd ("delete", no_class, enable_delete_command, _("\
15526 Enable some breakpoints and delete when hit.\n\
15527 Usage: enable delete BREAKPOINTNUM...\n\
15528 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15529 	   &enablelist);
15530 
15531   add_cmd ("once", no_class, enable_once_command, _("\
15532 Enable some breakpoints for one hit.\n\
15533 Usage: enable once BREAKPOINTNUM...\n\
15534 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15535 	   &enablelist);
15536 
15537   add_cmd ("count", no_class, enable_count_command, _("\
15538 Enable some breakpoints for COUNT hits.\n\
15539 Usage: enable count COUNT BREAKPOINTNUM...\n\
15540 If a breakpoint is hit while enabled in this fashion,\n\
15541 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15542 	   &enablelist);
15543 
15544   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15545 Disable all or some breakpoints.\n\
15546 Usage: disable [BREAKPOINTNUM]...\n\
15547 Arguments are breakpoint numbers with spaces in between.\n\
15548 To disable all breakpoints, give no argument.\n\
15549 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15550 		  &disablelist, "disable ", 1, &cmdlist);
15551   add_com_alias ("dis", "disable", class_breakpoint, 1);
15552   add_com_alias ("disa", "disable", class_breakpoint, 1);
15553 
15554   add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
15555 Disable all or some breakpoints.\n\
15556 Usage: disable breakpoints [BREAKPOINTNUM]...\n\
15557 Arguments are breakpoint numbers with spaces in between.\n\
15558 To disable all breakpoints, give no argument.\n\
15559 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15560 This command may be abbreviated \"disable\"."),
15561 	   &disablelist);
15562 
15563   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15564 Delete all or some breakpoints.\n\
15565 Usage: delete [BREAKPOINTNUM]...\n\
15566 Arguments are breakpoint numbers with spaces in between.\n\
15567 To delete all breakpoints, give no argument.\n\
15568 \n\
15569 Also a prefix command for deletion of other GDB objects."),
15570 		  &deletelist, "delete ", 1, &cmdlist);
15571   add_com_alias ("d", "delete", class_breakpoint, 1);
15572   add_com_alias ("del", "delete", class_breakpoint, 1);
15573 
15574   add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
15575 Delete all or some breakpoints or auto-display expressions.\n\
15576 Usage: delete breakpoints [BREAKPOINTNUM]...\n\
15577 Arguments are breakpoint numbers with spaces in between.\n\
15578 To delete all breakpoints, give no argument.\n\
15579 This command may be abbreviated \"delete\"."),
15580 	   &deletelist);
15581 
15582   add_com ("clear", class_breakpoint, clear_command, _("\
15583 Clear breakpoint at specified location.\n\
15584 Argument may be a linespec, explicit, or address location as described below.\n\
15585 \n\
15586 With no argument, clears all breakpoints in the line that the selected frame\n\
15587 is executing in.\n"
15588 "\n" LOCATION_HELP_STRING "\n\n\
15589 See also the \"delete\" command which clears breakpoints by number."));
15590   add_com_alias ("cl", "clear", class_breakpoint, 1);
15591 
15592   c = add_com ("break", class_breakpoint, break_command, _("\
15593 Set breakpoint at specified location.\n"
15594 BREAK_ARGS_HELP ("break")));
15595   set_cmd_completer (c, location_completer);
15596 
15597   add_com_alias ("b", "break", class_run, 1);
15598   add_com_alias ("br", "break", class_run, 1);
15599   add_com_alias ("bre", "break", class_run, 1);
15600   add_com_alias ("brea", "break", class_run, 1);
15601 
15602   if (dbx_commands)
15603     {
15604       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15605 Break in function/address or break at a line in the current file."),
15606 			     &stoplist, "stop ", 1, &cmdlist);
15607       add_cmd ("in", class_breakpoint, stopin_command,
15608 	       _("Break in function or address."), &stoplist);
15609       add_cmd ("at", class_breakpoint, stopat_command,
15610 	       _("Break at a line in the current file."), &stoplist);
15611       add_com ("status", class_info, info_breakpoints_command, _("\
15612 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15613 The \"Type\" column indicates one of:\n\
15614 \tbreakpoint     - normal breakpoint\n\
15615 \twatchpoint     - watchpoint\n\
15616 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15617 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15618 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15619 address and file/line number respectively.\n\
15620 \n\
15621 Convenience variable \"$_\" and default examine address for \"x\"\n\
15622 are set to the address of the last breakpoint listed unless the command\n\
15623 is prefixed with \"server \".\n\n\
15624 Convenience variable \"$bpnum\" contains the number of the last\n\
15625 breakpoint set."));
15626     }
15627 
15628   add_info ("breakpoints", info_breakpoints_command, _("\
15629 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15630 The \"Type\" column indicates one of:\n\
15631 \tbreakpoint     - normal breakpoint\n\
15632 \twatchpoint     - watchpoint\n\
15633 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15634 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15635 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15636 address and file/line number respectively.\n\
15637 \n\
15638 Convenience variable \"$_\" and default examine address for \"x\"\n\
15639 are set to the address of the last breakpoint listed unless the command\n\
15640 is prefixed with \"server \".\n\n\
15641 Convenience variable \"$bpnum\" contains the number of the last\n\
15642 breakpoint set."));
15643 
15644   add_info_alias ("b", "breakpoints", 1);
15645 
15646   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15647 Status of all breakpoints, or breakpoint number NUMBER.\n\
15648 The \"Type\" column indicates one of:\n\
15649 \tbreakpoint     - normal breakpoint\n\
15650 \twatchpoint     - watchpoint\n\
15651 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15652 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15653 \tuntil          - internal breakpoint used by the \"until\" command\n\
15654 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15655 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15656 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15657 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15658 address and file/line number respectively.\n\
15659 \n\
15660 Convenience variable \"$_\" and default examine address for \"x\"\n\
15661 are set to the address of the last breakpoint listed unless the command\n\
15662 is prefixed with \"server \".\n\n\
15663 Convenience variable \"$bpnum\" contains the number of the last\n\
15664 breakpoint set."),
15665 	   &maintenanceinfolist);
15666 
15667   add_basic_prefix_cmd ("catch", class_breakpoint, _("\
15668 Set catchpoints to catch events."),
15669 			&catch_cmdlist, "catch ",
15670 			0/*allow-unknown*/, &cmdlist);
15671 
15672   add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
15673 Set temporary catchpoints to catch events."),
15674 			&tcatch_cmdlist, "tcatch ",
15675 			0/*allow-unknown*/, &cmdlist);
15676 
15677   add_catch_command ("fork", _("Catch calls to fork."),
15678 		     catch_fork_command_1,
15679                      NULL,
15680 		     (void *) (uintptr_t) catch_fork_permanent,
15681 		     (void *) (uintptr_t) catch_fork_temporary);
15682   add_catch_command ("vfork", _("Catch calls to vfork."),
15683 		     catch_fork_command_1,
15684                      NULL,
15685 		     (void *) (uintptr_t) catch_vfork_permanent,
15686 		     (void *) (uintptr_t) catch_vfork_temporary);
15687   add_catch_command ("exec", _("Catch calls to exec."),
15688 		     catch_exec_command_1,
15689                      NULL,
15690 		     CATCH_PERMANENT,
15691 		     CATCH_TEMPORARY);
15692   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15693 Usage: catch load [REGEX]\n\
15694 If REGEX is given, only stop for libraries matching the regular expression."),
15695 		     catch_load_command_1,
15696 		     NULL,
15697 		     CATCH_PERMANENT,
15698 		     CATCH_TEMPORARY);
15699   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15700 Usage: catch unload [REGEX]\n\
15701 If REGEX is given, only stop for libraries matching the regular expression."),
15702 		     catch_unload_command_1,
15703 		     NULL,
15704 		     CATCH_PERMANENT,
15705 		     CATCH_TEMPORARY);
15706 
15707   c = add_com ("watch", class_breakpoint, watch_command, _("\
15708 Set a watchpoint for an expression.\n\
15709 Usage: watch [-l|-location] EXPRESSION\n\
15710 A watchpoint stops execution of your program whenever the value of\n\
15711 an expression changes.\n\
15712 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15713 the memory to which it refers."));
15714   set_cmd_completer (c, expression_completer);
15715 
15716   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15717 Set a read watchpoint for an expression.\n\
15718 Usage: rwatch [-l|-location] EXPRESSION\n\
15719 A watchpoint stops execution of your program whenever the value of\n\
15720 an expression is read.\n\
15721 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15722 the memory to which it refers."));
15723   set_cmd_completer (c, expression_completer);
15724 
15725   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15726 Set a watchpoint for an expression.\n\
15727 Usage: awatch [-l|-location] EXPRESSION\n\
15728 A watchpoint stops execution of your program whenever the value of\n\
15729 an expression is either read or written.\n\
15730 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15731 the memory to which it refers."));
15732   set_cmd_completer (c, expression_completer);
15733 
15734   add_info ("watchpoints", info_watchpoints_command, _("\
15735 Status of specified watchpoints (all watchpoints if no argument)."));
15736 
15737   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15738      respond to changes - contrary to the description.  */
15739   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15740 			    &can_use_hw_watchpoints, _("\
15741 Set debugger's willingness to use watchpoint hardware."), _("\
15742 Show debugger's willingness to use watchpoint hardware."), _("\
15743 If zero, gdb will not use hardware for new watchpoints, even if\n\
15744 such is available.  (However, any hardware watchpoints that were\n\
15745 created before setting this to nonzero, will continue to use watchpoint\n\
15746 hardware.)"),
15747 			    NULL,
15748 			    show_can_use_hw_watchpoints,
15749 			    &setlist, &showlist);
15750 
15751   can_use_hw_watchpoints = 1;
15752 
15753   /* Tracepoint manipulation commands.  */
15754 
15755   c = add_com ("trace", class_breakpoint, trace_command, _("\
15756 Set a tracepoint at specified location.\n\
15757 \n"
15758 BREAK_ARGS_HELP ("trace") "\n\
15759 Do \"help tracepoints\" for info on other tracepoint commands."));
15760   set_cmd_completer (c, location_completer);
15761 
15762   add_com_alias ("tp", "trace", class_breakpoint, 0);
15763   add_com_alias ("tr", "trace", class_breakpoint, 1);
15764   add_com_alias ("tra", "trace", class_breakpoint, 1);
15765   add_com_alias ("trac", "trace", class_breakpoint, 1);
15766 
15767   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15768 Set a fast tracepoint at specified location.\n\
15769 \n"
15770 BREAK_ARGS_HELP ("ftrace") "\n\
15771 Do \"help tracepoints\" for info on other tracepoint commands."));
15772   set_cmd_completer (c, location_completer);
15773 
15774   c = add_com ("strace", class_breakpoint, strace_command, _("\
15775 Set a static tracepoint at location or marker.\n\
15776 \n\
15777 strace [LOCATION] [if CONDITION]\n\
15778 LOCATION may be a linespec, explicit, or address location (described below) \n\
15779 or -m MARKER_ID.\n\n\
15780 If a marker id is specified, probe the marker with that name.  With\n\
15781 no LOCATION, uses current execution address of the selected stack frame.\n\
15782 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15783 This collects arbitrary user data passed in the probe point call to the\n\
15784 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15785 by printing the $_sdata variable like any other convenience variable.\n\
15786 \n\
15787 CONDITION is a boolean expression.\n\
15788 \n" LOCATION_HELP_STRING "\n\n\
15789 Multiple tracepoints at one place are permitted, and useful if their\n\
15790 conditions are different.\n\
15791 \n\
15792 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15793 Do \"help tracepoints\" for info on other tracepoint commands."));
15794   set_cmd_completer (c, location_completer);
15795 
15796   add_info ("tracepoints", info_tracepoints_command, _("\
15797 Status of specified tracepoints (all tracepoints if no argument).\n\
15798 Convenience variable \"$tpnum\" contains the number of the\n\
15799 last tracepoint set."));
15800 
15801   add_info_alias ("tp", "tracepoints", 1);
15802 
15803   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15804 Delete specified tracepoints.\n\
15805 Arguments are tracepoint numbers, separated by spaces.\n\
15806 No argument means delete all tracepoints."),
15807 	   &deletelist);
15808   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15809 
15810   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15811 Disable specified tracepoints.\n\
15812 Arguments are tracepoint numbers, separated by spaces.\n\
15813 No argument means disable all tracepoints."),
15814 	   &disablelist);
15815   deprecate_cmd (c, "disable");
15816 
15817   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15818 Enable specified tracepoints.\n\
15819 Arguments are tracepoint numbers, separated by spaces.\n\
15820 No argument means enable all tracepoints."),
15821 	   &enablelist);
15822   deprecate_cmd (c, "enable");
15823 
15824   add_com ("passcount", class_trace, trace_pass_command, _("\
15825 Set the passcount for a tracepoint.\n\
15826 The trace will end when the tracepoint has been passed 'count' times.\n\
15827 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15828 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15829 
15830   add_basic_prefix_cmd ("save", class_breakpoint,
15831 			_("Save breakpoint definitions as a script."),
15832 			&save_cmdlist, "save ",
15833 			0/*allow-unknown*/, &cmdlist);
15834 
15835   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15836 Save current breakpoint definitions as a script.\n\
15837 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15838 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15839 session to restore them."),
15840 	       &save_cmdlist);
15841   set_cmd_completer (c, filename_completer);
15842 
15843   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15844 Save current tracepoint definitions as a script.\n\
15845 Use the 'source' command in another debug session to restore them."),
15846 	       &save_cmdlist);
15847   set_cmd_completer (c, filename_completer);
15848 
15849   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15850   deprecate_cmd (c, "save tracepoints");
15851 
15852   add_basic_prefix_cmd ("breakpoint", class_maintenance, _("\
15853 Breakpoint specific settings.\n\
15854 Configure various breakpoint-specific variables such as\n\
15855 pending breakpoint behavior."),
15856 			&breakpoint_set_cmdlist, "set breakpoint ",
15857 			0/*allow-unknown*/, &setlist);
15858   add_show_prefix_cmd ("breakpoint", class_maintenance, _("\
15859 Breakpoint specific settings.\n\
15860 Configure various breakpoint-specific variables such as\n\
15861 pending breakpoint behavior."),
15862 		       &breakpoint_show_cmdlist, "show breakpoint ",
15863 		       0/*allow-unknown*/, &showlist);
15864 
15865   add_setshow_auto_boolean_cmd ("pending", no_class,
15866 				&pending_break_support, _("\
15867 Set debugger's behavior regarding pending breakpoints."), _("\
15868 Show debugger's behavior regarding pending breakpoints."), _("\
15869 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15870 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15871 an error.  If auto, an unrecognized breakpoint location results in a\n\
15872 user-query to see if a pending breakpoint should be created."),
15873 				NULL,
15874 				show_pending_break_support,
15875 				&breakpoint_set_cmdlist,
15876 				&breakpoint_show_cmdlist);
15877 
15878   pending_break_support = AUTO_BOOLEAN_AUTO;
15879 
15880   add_setshow_boolean_cmd ("auto-hw", no_class,
15881 			   &automatic_hardware_breakpoints, _("\
15882 Set automatic usage of hardware breakpoints."), _("\
15883 Show automatic usage of hardware breakpoints."), _("\
15884 If set, the debugger will automatically use hardware breakpoints for\n\
15885 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15886 a warning will be emitted for such breakpoints."),
15887 			   NULL,
15888 			   show_automatic_hardware_breakpoints,
15889 			   &breakpoint_set_cmdlist,
15890 			   &breakpoint_show_cmdlist);
15891 
15892   add_setshow_boolean_cmd ("always-inserted", class_support,
15893 			   &always_inserted_mode, _("\
15894 Set mode for inserting breakpoints."), _("\
15895 Show mode for inserting breakpoints."), _("\
15896 When this mode is on, breakpoints are inserted immediately as soon as\n\
15897 they're created, kept inserted even when execution stops, and removed\n\
15898 only when the user deletes them.  When this mode is off (the default),\n\
15899 breakpoints are inserted only when execution continues, and removed\n\
15900 when execution stops."),
15901 				NULL,
15902 				&show_always_inserted_mode,
15903 				&breakpoint_set_cmdlist,
15904 				&breakpoint_show_cmdlist);
15905 
15906   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15907 			condition_evaluation_enums,
15908 			&condition_evaluation_mode_1, _("\
15909 Set mode of breakpoint condition evaluation."), _("\
15910 Show mode of breakpoint condition evaluation."), _("\
15911 When this is set to \"host\", breakpoint conditions will be\n\
15912 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15913 breakpoint conditions will be downloaded to the target (if the target\n\
15914 supports such feature) and conditions will be evaluated on the target's side.\n\
15915 If this is set to \"auto\" (default), this will be automatically set to\n\
15916 \"target\" if it supports condition evaluation, otherwise it will\n\
15917 be set to \"host\"."),
15918 			   &set_condition_evaluation_mode,
15919 			   &show_condition_evaluation_mode,
15920 			   &breakpoint_set_cmdlist,
15921 			   &breakpoint_show_cmdlist);
15922 
15923   add_com ("break-range", class_breakpoint, break_range_command, _("\
15924 Set a breakpoint for an address range.\n\
15925 break-range START-LOCATION, END-LOCATION\n\
15926 where START-LOCATION and END-LOCATION can be one of the following:\n\
15927   LINENUM, for that line in the current file,\n\
15928   FILE:LINENUM, for that line in that file,\n\
15929   +OFFSET, for that number of lines after the current line\n\
15930            or the start of the range\n\
15931   FUNCTION, for the first line in that function,\n\
15932   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15933   *ADDRESS, for the instruction at that address.\n\
15934 \n\
15935 The breakpoint will stop execution of the inferior whenever it executes\n\
15936 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15937 range (including START-LOCATION and END-LOCATION)."));
15938 
15939   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15940 Set a dynamic printf at specified location.\n\
15941 dprintf location,format string,arg1,arg2,...\n\
15942 location may be a linespec, explicit, or address location.\n"
15943 "\n" LOCATION_HELP_STRING));
15944   set_cmd_completer (c, location_completer);
15945 
15946   add_setshow_enum_cmd ("dprintf-style", class_support,
15947 			dprintf_style_enums, &dprintf_style, _("\
15948 Set the style of usage for dynamic printf."), _("\
15949 Show the style of usage for dynamic printf."), _("\
15950 This setting chooses how GDB will do a dynamic printf.\n\
15951 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15952 console, as with the \"printf\" command.\n\
15953 If the value is \"call\", the print is done by calling a function in your\n\
15954 program; by default printf(), but you can choose a different function or\n\
15955 output stream by setting dprintf-function and dprintf-channel."),
15956 			update_dprintf_commands, NULL,
15957 			&setlist, &showlist);
15958 
15959   dprintf_function = xstrdup ("printf");
15960   add_setshow_string_cmd ("dprintf-function", class_support,
15961 			  &dprintf_function, _("\
15962 Set the function to use for dynamic printf."), _("\
15963 Show the function to use for dynamic printf."), NULL,
15964 			  update_dprintf_commands, NULL,
15965 			  &setlist, &showlist);
15966 
15967   dprintf_channel = xstrdup ("");
15968   add_setshow_string_cmd ("dprintf-channel", class_support,
15969 			  &dprintf_channel, _("\
15970 Set the channel to use for dynamic printf."), _("\
15971 Show the channel to use for dynamic printf."), NULL,
15972 			  update_dprintf_commands, NULL,
15973 			  &setlist, &showlist);
15974 
15975   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15976 			   &disconnected_dprintf, _("\
15977 Set whether dprintf continues after GDB disconnects."), _("\
15978 Show whether dprintf continues after GDB disconnects."), _("\
15979 Use this to let dprintf commands continue to hit and produce output\n\
15980 even if GDB disconnects or detaches from the target."),
15981 			   NULL,
15982 			   NULL,
15983 			   &setlist, &showlist);
15984 
15985   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15986 Target agent only formatted printing, like the C \"printf\" function.\n\
15987 Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
15988 This supports most C printf format specifications, like %s, %d, etc.\n\
15989 This is useful for formatted output in user-defined commands."));
15990 
15991   automatic_hardware_breakpoints = true;
15992 
15993   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15994   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15995 }
15996