Update breakpoint_1's documentation
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2019 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 "continuations.h"
63 #include "stack.h"
64 #include "skip.h"
65 #include "ax-gdb.h"
66 #include "dummy-frame.h"
67 #include "interps.h"
68 #include "gdbsupport/format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71 #include "cli/cli-style.h"
72 #include "mi/mi-main.h"
73
74 /* readline include files */
75 #include "readline/readline.h"
76 #include "readline/history.h"
77
78 /* readline defines this.  */
79 #undef savestring
80
81 #include "mi/mi-common.h"
82 #include "extension.h"
83 #include <algorithm>
84 #include "progspace-and-thread.h"
85 #include "gdbsupport/array-view.h"
86 #include "gdbsupport/gdb_optional.h"
87
88 /* Prototypes for local functions.  */
89
90 static void map_breakpoint_numbers (const char *,
91                                     gdb::function_view<void (breakpoint *)>);
92
93 static void breakpoint_re_set_default (struct breakpoint *);
94
95 static void
96   create_sals_from_location_default (const struct event_location *location,
97                                      struct linespec_result *canonical,
98                                      enum bptype type_wanted);
99
100 static void create_breakpoints_sal_default (struct gdbarch *,
101                                             struct linespec_result *,
102                                             gdb::unique_xmalloc_ptr<char>,
103                                             gdb::unique_xmalloc_ptr<char>,
104                                             enum bptype,
105                                             enum bpdisp, int, int,
106                                             int,
107                                             const struct breakpoint_ops *,
108                                             int, int, int, unsigned);
109
110 static std::vector<symtab_and_line> decode_location_default
111   (struct breakpoint *b, const struct event_location *location,
112    struct program_space *search_pspace);
113
114 static int can_use_hardware_watchpoint
115     (const std::vector<value_ref_ptr> &vals);
116
117 static void mention (struct breakpoint *);
118
119 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
120                                                                enum bptype,
121                                                                const struct breakpoint_ops *);
122 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
123                                                        const struct symtab_and_line *);
124
125 /* This function is used in gdbtk sources and thus can not be made
126    static.  */
127 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
128                                        struct symtab_and_line,
129                                        enum bptype,
130                                        const struct breakpoint_ops *);
131
132 static struct breakpoint *
133   momentary_breakpoint_from_master (struct breakpoint *orig,
134                                     enum bptype type,
135                                     const struct breakpoint_ops *ops,
136                                     int loc_enabled);
137
138 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
139
140 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
141                                             CORE_ADDR bpaddr,
142                                             enum bptype bptype);
143
144 static void describe_other_breakpoints (struct gdbarch *,
145                                         struct program_space *, CORE_ADDR,
146                                         struct obj_section *, int);
147
148 static int watchpoint_locations_match (struct bp_location *loc1,
149                                        struct bp_location *loc2);
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 int is_hardware_watchpoint (const struct breakpoint *bpt);
221
222 static void insert_breakpoint_locations (void);
223
224 static void trace_pass_command (const char *, int);
225
226 static void set_tracepoint_count (int num);
227
228 static int is_masked_watchpoint (const struct breakpoint *b);
229
230 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
231
232 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
233    otherwise.  */
234
235 static int strace_marker_p (struct breakpoint *b);
236
237 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
238    that are implemented on top of software or hardware breakpoints
239    (user breakpoints, internal and momentary breakpoints, etc.).  */
240 static struct breakpoint_ops bkpt_base_breakpoint_ops;
241
242 /* Internal breakpoints class type.  */
243 static struct breakpoint_ops internal_breakpoint_ops;
244
245 /* Momentary breakpoints class type.  */
246 static struct breakpoint_ops momentary_breakpoint_ops;
247
248 /* The breakpoint_ops structure to be used in regular user created
249    breakpoints.  */
250 struct breakpoint_ops bkpt_breakpoint_ops;
251
252 /* Breakpoints set on probes.  */
253 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
254
255 /* Dynamic printf class type.  */
256 struct breakpoint_ops dprintf_breakpoint_ops;
257
258 /* The style in which to perform a dynamic printf.  This is a user
259    option because different output options have different tradeoffs;
260    if GDB does the printing, there is better error handling if there
261    is a problem with any of the arguments, but using an inferior
262    function lets you have special-purpose printers and sending of
263    output to the same place as compiled-in print functions.  */
264
265 static const char dprintf_style_gdb[] = "gdb";
266 static const char dprintf_style_call[] = "call";
267 static const char dprintf_style_agent[] = "agent";
268 static const char *const dprintf_style_enums[] = {
269   dprintf_style_gdb,
270   dprintf_style_call,
271   dprintf_style_agent,
272   NULL
273 };
274 static const char *dprintf_style = dprintf_style_gdb;
275
276 /* The function to use for dynamic printf if the preferred style is to
277    call into the inferior.  The value is simply a string that is
278    copied into the command, so it can be anything that GDB can
279    evaluate to a callable address, not necessarily a function name.  */
280
281 static char *dprintf_function;
282
283 /* The channel to use for dynamic printf if the preferred style is to
284    call into the inferior; if a nonempty string, it will be passed to
285    the call as the first argument, with the format string as the
286    second.  As with the dprintf function, this can be anything that
287    GDB knows how to evaluate, so in addition to common choices like
288    "stderr", this could be an app-specific expression like
289    "mystreams[curlogger]".  */
290
291 static char *dprintf_channel;
292
293 /* True if dprintf commands should continue to operate even if GDB
294    has disconnected.  */
295 static int disconnected_dprintf = 1;
296
297 struct command_line *
298 breakpoint_commands (struct breakpoint *b)
299 {
300   return b->commands ? b->commands.get () : NULL;
301 }
302
303 /* Flag indicating that a command has proceeded the inferior past the
304    current breakpoint.  */
305
306 static int breakpoint_proceeded;
307
308 const char *
309 bpdisp_text (enum bpdisp disp)
310 {
311   /* NOTE: the following values are a part of MI protocol and
312      represent values of 'disp' field returned when inferior stops at
313      a breakpoint.  */
314   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
315
316   return bpdisps[(int) disp];
317 }
318
319 /* Prototypes for exported functions.  */
320 /* If FALSE, gdb will not use hardware support for watchpoints, even
321    if such is available.  */
322 static int can_use_hw_watchpoints;
323
324 static void
325 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
326                              struct cmd_list_element *c,
327                              const char *value)
328 {
329   fprintf_filtered (file,
330                     _("Debugger's willingness to use "
331                       "watchpoint hardware is %s.\n"),
332                     value);
333 }
334
335 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
336    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
337    for unrecognized breakpoint locations.
338    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
339 static enum auto_boolean pending_break_support;
340 static void
341 show_pending_break_support (struct ui_file *file, int from_tty,
342                             struct cmd_list_element *c,
343                             const char *value)
344 {
345   fprintf_filtered (file,
346                     _("Debugger's behavior regarding "
347                       "pending breakpoints is %s.\n"),
348                     value);
349 }
350
351 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
352    set with "break" but falling in read-only memory.
353    If 0, gdb will warn about such breakpoints, but won't automatically
354    use hardware breakpoints.  */
355 static int automatic_hardware_breakpoints;
356 static void
357 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
358                                      struct cmd_list_element *c,
359                                      const char *value)
360 {
361   fprintf_filtered (file,
362                     _("Automatic usage of hardware breakpoints is %s.\n"),
363                     value);
364 }
365
366 /* If on, GDB keeps breakpoints inserted even if the inferior is
367    stopped, and immediately inserts any new breakpoints as soon as
368    they're created.  If off (default), GDB keeps breakpoints off of
369    the target as long as possible.  That is, it delays inserting
370    breakpoints until the next resume, and removes them again when the
371    target fully stops.  This is a bit safer in case GDB crashes while
372    processing user input.  */
373 static int always_inserted_mode = 0;
374
375 static void
376 show_always_inserted_mode (struct ui_file *file, int from_tty,
377                      struct cmd_list_element *c, const char *value)
378 {
379   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
380                     value);
381 }
382
383 /* See breakpoint.h.  */
384
385 int
386 breakpoints_should_be_inserted_now (void)
387 {
388   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
389     {
390       /* If breakpoints are global, they should be inserted even if no
391          thread under gdb's control is running, or even if there are
392          no threads under GDB's control yet.  */
393       return 1;
394     }
395   else if (target_has_execution)
396     {
397       if (always_inserted_mode)
398         {
399           /* The user wants breakpoints inserted even if all threads
400              are stopped.  */
401           return 1;
402         }
403
404       if (threads_are_executing ())
405         return 1;
406
407       /* Don't remove breakpoints yet if, even though all threads are
408          stopped, we still have events to process.  */
409       for (thread_info *tp : all_non_exited_threads ())
410         if (tp->resumed
411             && tp->suspend.waitstatus_pending_p)
412           return 1;
413     }
414   return 0;
415 }
416
417 static const char condition_evaluation_both[] = "host or target";
418
419 /* Modes for breakpoint condition evaluation.  */
420 static const char condition_evaluation_auto[] = "auto";
421 static const char condition_evaluation_host[] = "host";
422 static const char condition_evaluation_target[] = "target";
423 static const char *const condition_evaluation_enums[] = {
424   condition_evaluation_auto,
425   condition_evaluation_host,
426   condition_evaluation_target,
427   NULL
428 };
429
430 /* Global that holds the current mode for breakpoint condition evaluation.  */
431 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
432
433 /* Global that we use to display information to the user (gets its value from
434    condition_evaluation_mode_1.  */
435 static const char *condition_evaluation_mode = condition_evaluation_auto;
436
437 /* Translate a condition evaluation mode MODE into either "host"
438    or "target".  This is used mostly to translate from "auto" to the
439    real setting that is being used.  It returns the translated
440    evaluation mode.  */
441
442 static const char *
443 translate_condition_evaluation_mode (const char *mode)
444 {
445   if (mode == condition_evaluation_auto)
446     {
447       if (target_supports_evaluation_of_breakpoint_conditions ())
448         return condition_evaluation_target;
449       else
450         return condition_evaluation_host;
451     }
452   else
453     return mode;
454 }
455
456 /* Discovers what condition_evaluation_auto translates to.  */
457
458 static const char *
459 breakpoint_condition_evaluation_mode (void)
460 {
461   return translate_condition_evaluation_mode (condition_evaluation_mode);
462 }
463
464 /* Return true if GDB should evaluate breakpoint conditions or false
465    otherwise.  */
466
467 static int
468 gdb_evaluates_breakpoint_condition_p (void)
469 {
470   const char *mode = breakpoint_condition_evaluation_mode ();
471
472   return (mode == condition_evaluation_host);
473 }
474
475 /* Are we executing breakpoint commands?  */
476 static int executing_breakpoint_commands;
477
478 /* Are overlay event breakpoints enabled? */
479 static int overlay_events_enabled;
480
481 /* See description in breakpoint.h. */
482 int target_exact_watchpoints = 0;
483
484 /* Walk the following statement or block through all breakpoints.
485    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
486    current breakpoint.  */
487
488 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
489
490 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
491         for (B = breakpoint_chain;      \
492              B ? (TMP=B->next, 1): 0;   \
493              B = TMP)
494
495 /* Similar iterator for the low-level breakpoints.  SAFE variant is
496    not provided so update_global_location_list must not be called
497    while executing the block of ALL_BP_LOCATIONS.  */
498
499 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
500         for (BP_TMP = bp_locations;                                     \
501              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
502              BP_TMP++)
503
504 /* Iterates through locations with address ADDRESS for the currently selected
505    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
506    to where the loop should start from.
507    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
508    appropriate location to start with.  */
509
510 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
511         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
512              BP_LOCP_TMP = BP_LOCP_START;                               \
513              BP_LOCP_START                                              \
514              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
515              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
516              BP_LOCP_TMP++)
517
518 /* Iterator for tracepoints only.  */
519
520 #define ALL_TRACEPOINTS(B)  \
521   for (B = breakpoint_chain; B; B = B->next)  \
522     if (is_tracepoint (B))
523
524 /* Chains of all breakpoints defined.  */
525
526 struct breakpoint *breakpoint_chain;
527
528 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
529
530 static struct bp_location **bp_locations;
531
532 /* Number of elements of BP_LOCATIONS.  */
533
534 static unsigned bp_locations_count;
535
536 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
537    ADDRESS for the current elements of BP_LOCATIONS which get a valid
538    result from bp_location_has_shadow.  You can use it for roughly
539    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
540    an address you need to read.  */
541
542 static CORE_ADDR bp_locations_placed_address_before_address_max;
543
544 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
545    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
546    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
547    You can use it for roughly limiting the subrange of BP_LOCATIONS to
548    scan for shadow bytes for an address you need to read.  */
549
550 static CORE_ADDR bp_locations_shadow_len_after_address_max;
551
552 /* The locations that no longer correspond to any breakpoint, unlinked
553    from the bp_locations array, but for which a hit may still be
554    reported by a target.  */
555 static std::vector<bp_location *> moribund_locations;
556
557 /* Number of last breakpoint made.  */
558
559 static int breakpoint_count;
560
561 /* The value of `breakpoint_count' before the last command that
562    created breakpoints.  If the last (break-like) command created more
563    than one breakpoint, then the difference between BREAKPOINT_COUNT
564    and PREV_BREAKPOINT_COUNT is more than one.  */
565 static int prev_breakpoint_count;
566
567 /* Number of last tracepoint made.  */
568
569 static int tracepoint_count;
570
571 static struct cmd_list_element *breakpoint_set_cmdlist;
572 static struct cmd_list_element *breakpoint_show_cmdlist;
573 struct cmd_list_element *save_cmdlist;
574
575 /* See declaration at breakpoint.h.  */
576
577 struct breakpoint *
578 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
579                     void *user_data)
580 {
581   struct breakpoint *b = NULL;
582
583   ALL_BREAKPOINTS (b)
584     {
585       if (func (b, user_data) != 0)
586         break;
587     }
588
589   return b;
590 }
591
592 /* Return whether a breakpoint is an active enabled breakpoint.  */
593 static int
594 breakpoint_enabled (struct breakpoint *b)
595 {
596   return (b->enable_state == bp_enabled);
597 }
598
599 /* Set breakpoint count to NUM.  */
600
601 static void
602 set_breakpoint_count (int num)
603 {
604   prev_breakpoint_count = breakpoint_count;
605   breakpoint_count = num;
606   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
607 }
608
609 /* Used by `start_rbreak_breakpoints' below, to record the current
610    breakpoint count before "rbreak" creates any breakpoint.  */
611 static int rbreak_start_breakpoint_count;
612
613 /* Called at the start an "rbreak" command to record the first
614    breakpoint made.  */
615
616 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
617 {
618   rbreak_start_breakpoint_count = breakpoint_count;
619 }
620
621 /* Called at the end of an "rbreak" command to record the last
622    breakpoint made.  */
623
624 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
625 {
626   prev_breakpoint_count = rbreak_start_breakpoint_count;
627 }
628
629 /* Used in run_command to zero the hit count when a new run starts.  */
630
631 void
632 clear_breakpoint_hit_counts (void)
633 {
634   struct breakpoint *b;
635
636   ALL_BREAKPOINTS (b)
637     b->hit_count = 0;
638 }
639
640 \f
641 /* Return the breakpoint with the specified number, or NULL
642    if the number does not refer to an existing breakpoint.  */
643
644 struct breakpoint *
645 get_breakpoint (int num)
646 {
647   struct breakpoint *b;
648
649   ALL_BREAKPOINTS (b)
650     if (b->number == num)
651       return b;
652   
653   return NULL;
654 }
655
656 \f
657
658 /* Mark locations as "conditions have changed" in case the target supports
659    evaluating conditions on its side.  */
660
661 static void
662 mark_breakpoint_modified (struct breakpoint *b)
663 {
664   struct bp_location *loc;
665
666   /* This is only meaningful if the target is
667      evaluating conditions and if the user has
668      opted for condition evaluation on the target's
669      side.  */
670   if (gdb_evaluates_breakpoint_condition_p ()
671       || !target_supports_evaluation_of_breakpoint_conditions ())
672     return;
673
674   if (!is_breakpoint (b))
675     return;
676
677   for (loc = b->loc; loc; loc = loc->next)
678     loc->condition_changed = condition_modified;
679 }
680
681 /* Mark location as "conditions have changed" in case the target supports
682    evaluating conditions on its side.  */
683
684 static void
685 mark_breakpoint_location_modified (struct bp_location *loc)
686 {
687   /* This is only meaningful if the target is
688      evaluating conditions and if the user has
689      opted for condition evaluation on the target's
690      side.  */
691   if (gdb_evaluates_breakpoint_condition_p ()
692       || !target_supports_evaluation_of_breakpoint_conditions ())
693
694     return;
695
696   if (!is_breakpoint (loc->owner))
697     return;
698
699   loc->condition_changed = condition_modified;
700 }
701
702 /* Sets the condition-evaluation mode using the static global
703    condition_evaluation_mode.  */
704
705 static void
706 set_condition_evaluation_mode (const char *args, int from_tty,
707                                struct cmd_list_element *c)
708 {
709   const char *old_mode, *new_mode;
710
711   if ((condition_evaluation_mode_1 == condition_evaluation_target)
712       && !target_supports_evaluation_of_breakpoint_conditions ())
713     {
714       condition_evaluation_mode_1 = condition_evaluation_mode;
715       warning (_("Target does not support breakpoint condition evaluation.\n"
716                  "Using host evaluation mode instead."));
717       return;
718     }
719
720   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
721   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
722
723   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
724      settings was "auto".  */
725   condition_evaluation_mode = condition_evaluation_mode_1;
726
727   /* Only update the mode if the user picked a different one.  */
728   if (new_mode != old_mode)
729     {
730       struct bp_location *loc, **loc_tmp;
731       /* If the user switched to a different evaluation mode, we
732          need to synch the changes with the target as follows:
733
734          "host" -> "target": Send all (valid) conditions to the target.
735          "target" -> "host": Remove all the conditions from the target.
736       */
737
738       if (new_mode == condition_evaluation_target)
739         {
740           /* Mark everything modified and synch conditions with the
741              target.  */
742           ALL_BP_LOCATIONS (loc, loc_tmp)
743             mark_breakpoint_location_modified (loc);
744         }
745       else
746         {
747           /* Manually mark non-duplicate locations to synch conditions
748              with the target.  We do this to remove all the conditions the
749              target knows about.  */
750           ALL_BP_LOCATIONS (loc, loc_tmp)
751             if (is_breakpoint (loc->owner) && loc->inserted)
752               loc->needs_update = 1;
753         }
754
755       /* Do the update.  */
756       update_global_location_list (UGLL_MAY_INSERT);
757     }
758
759   return;
760 }
761
762 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
763    what "auto" is translating to.  */
764
765 static void
766 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
767                                 struct cmd_list_element *c, const char *value)
768 {
769   if (condition_evaluation_mode == condition_evaluation_auto)
770     fprintf_filtered (file,
771                       _("Breakpoint condition evaluation "
772                         "mode is %s (currently %s).\n"),
773                       value,
774                       breakpoint_condition_evaluation_mode ());
775   else
776     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
777                       value);
778 }
779
780 /* A comparison function for bp_location AP and BP that is used by
781    bsearch.  This comparison function only cares about addresses, unlike
782    the more general bp_locations_compare function.  */
783
784 static int
785 bp_locations_compare_addrs (const void *ap, const void *bp)
786 {
787   const struct bp_location *a = *(const struct bp_location **) ap;
788   const struct bp_location *b = *(const struct bp_location **) bp;
789
790   if (a->address == b->address)
791     return 0;
792   else
793     return ((a->address > b->address) - (a->address < b->address));
794 }
795
796 /* Helper function to skip all bp_locations with addresses
797    less than ADDRESS.  It returns the first bp_location that
798    is greater than or equal to ADDRESS.  If none is found, just
799    return NULL.  */
800
801 static struct bp_location **
802 get_first_locp_gte_addr (CORE_ADDR address)
803 {
804   struct bp_location dummy_loc;
805   struct bp_location *dummy_locp = &dummy_loc;
806   struct bp_location **locp_found = NULL;
807
808   /* Initialize the dummy location's address field.  */
809   dummy_loc.address = address;
810
811   /* Find a close match to the first location at ADDRESS.  */
812   locp_found = ((struct bp_location **)
813                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
814                          sizeof (struct bp_location **),
815                          bp_locations_compare_addrs));
816
817   /* Nothing was found, nothing left to do.  */
818   if (locp_found == NULL)
819     return NULL;
820
821   /* We may have found a location that is at ADDRESS but is not the first in the
822      location's list.  Go backwards (if possible) and locate the first one.  */
823   while ((locp_found - 1) >= bp_locations
824          && (*(locp_found - 1))->address == address)
825     locp_found--;
826
827   return locp_found;
828 }
829
830 void
831 set_breakpoint_condition (struct breakpoint *b, const char *exp,
832                           int from_tty)
833 {
834   xfree (b->cond_string);
835   b->cond_string = NULL;
836
837   if (is_watchpoint (b))
838     {
839       struct watchpoint *w = (struct watchpoint *) b;
840
841       w->cond_exp.reset ();
842     }
843   else
844     {
845       struct bp_location *loc;
846
847       for (loc = b->loc; loc; loc = loc->next)
848         {
849           loc->cond.reset ();
850
851           /* No need to free the condition agent expression
852              bytecode (if we have one).  We will handle this
853              when we go through update_global_location_list.  */
854         }
855     }
856
857   if (*exp == 0)
858     {
859       if (from_tty)
860         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
861     }
862   else
863     {
864       const char *arg = exp;
865
866       /* I don't know if it matters whether this is the string the user
867          typed in or the decompiled expression.  */
868       b->cond_string = xstrdup (arg);
869       b->condition_not_parsed = 0;
870
871       if (is_watchpoint (b))
872         {
873           struct watchpoint *w = (struct watchpoint *) b;
874
875           innermost_block_tracker tracker;
876           arg = exp;
877           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
878           if (*arg)
879             error (_("Junk at end of expression"));
880           w->cond_exp_valid_block = tracker.block ();
881         }
882       else
883         {
884           struct bp_location *loc;
885
886           for (loc = b->loc; loc; loc = loc->next)
887             {
888               arg = exp;
889               loc->cond =
890                 parse_exp_1 (&arg, loc->address,
891                              block_for_pc (loc->address), 0);
892               if (*arg)
893                 error (_("Junk at end of expression"));
894             }
895         }
896     }
897   mark_breakpoint_modified (b);
898
899   gdb::observers::breakpoint_modified.notify (b);
900 }
901
902 /* Completion for the "condition" command.  */
903
904 static void
905 condition_completer (struct cmd_list_element *cmd,
906                      completion_tracker &tracker,
907                      const char *text, const char *word)
908 {
909   const char *space;
910
911   text = skip_spaces (text);
912   space = skip_to_space (text);
913   if (*space == '\0')
914     {
915       int len;
916       struct breakpoint *b;
917
918       if (text[0] == '$')
919         {
920           /* We don't support completion of history indices.  */
921           if (!isdigit (text[1]))
922             complete_internalvar (tracker, &text[1]);
923           return;
924         }
925
926       /* We're completing the breakpoint number.  */
927       len = strlen (text);
928
929       ALL_BREAKPOINTS (b)
930         {
931           char number[50];
932
933           xsnprintf (number, sizeof (number), "%d", b->number);
934
935           if (strncmp (number, text, len) == 0)
936             tracker.add_completion (make_unique_xstrdup (number));
937         }
938
939       return;
940     }
941
942   /* We're completing the expression part.  */
943   text = skip_spaces (space);
944   expression_completer (cmd, tracker, text, word);
945 }
946
947 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
948
949 static void
950 condition_command (const char *arg, int from_tty)
951 {
952   struct breakpoint *b;
953   const char *p;
954   int bnum;
955
956   if (arg == 0)
957     error_no_arg (_("breakpoint number"));
958
959   p = arg;
960   bnum = get_number (&p);
961   if (bnum == 0)
962     error (_("Bad breakpoint argument: '%s'"), arg);
963
964   ALL_BREAKPOINTS (b)
965     if (b->number == bnum)
966       {
967         /* Check if this breakpoint has a "stop" method implemented in an
968            extension language.  This method and conditions entered into GDB
969            from the CLI are mutually exclusive.  */
970         const struct extension_language_defn *extlang
971           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
972
973         if (extlang != NULL)
974           {
975             error (_("Only one stop condition allowed.  There is currently"
976                      " a %s stop condition defined for this breakpoint."),
977                    ext_lang_capitalized_name (extlang));
978           }
979         set_breakpoint_condition (b, p, from_tty);
980
981         if (is_breakpoint (b))
982           update_global_location_list (UGLL_MAY_INSERT);
983
984         return;
985       }
986
987   error (_("No breakpoint number %d."), bnum);
988 }
989
990 /* Check that COMMAND do not contain commands that are suitable
991    only for tracepoints and not suitable for ordinary breakpoints.
992    Throw if any such commands is found.  */
993
994 static void
995 check_no_tracepoint_commands (struct command_line *commands)
996 {
997   struct command_line *c;
998
999   for (c = commands; c; c = c->next)
1000     {
1001       if (c->control_type == while_stepping_control)
1002         error (_("The 'while-stepping' command can "
1003                  "only be used for tracepoints"));
1004
1005       check_no_tracepoint_commands (c->body_list_0.get ());
1006       check_no_tracepoint_commands (c->body_list_1.get ());
1007
1008       /* Not that command parsing removes leading whitespace and comment
1009          lines and also empty lines.  So, we only need to check for
1010          command directly.  */
1011       if (strstr (c->line, "collect ") == c->line)
1012         error (_("The 'collect' command can only be used for tracepoints"));
1013
1014       if (strstr (c->line, "teval ") == c->line)
1015         error (_("The 'teval' command can only be used for tracepoints"));
1016     }
1017 }
1018
1019 struct longjmp_breakpoint : public breakpoint
1020 {
1021   ~longjmp_breakpoint () override;
1022 };
1023
1024 /* Encapsulate tests for different types of tracepoints.  */
1025
1026 static bool
1027 is_tracepoint_type (bptype type)
1028 {
1029   return (type == bp_tracepoint
1030           || type == bp_fast_tracepoint
1031           || type == bp_static_tracepoint);
1032 }
1033
1034 static bool
1035 is_longjmp_type (bptype type)
1036 {
1037   return type == bp_longjmp || type == bp_exception;
1038 }
1039
1040 int
1041 is_tracepoint (const struct breakpoint *b)
1042 {
1043   return is_tracepoint_type (b->type);
1044 }
1045
1046 /* Factory function to create an appropriate instance of breakpoint given
1047    TYPE.  */
1048
1049 static std::unique_ptr<breakpoint>
1050 new_breakpoint_from_type (bptype type)
1051 {
1052   breakpoint *b;
1053
1054   if (is_tracepoint_type (type))
1055     b = new tracepoint ();
1056   else if (is_longjmp_type (type))
1057     b = new longjmp_breakpoint ();
1058   else
1059     b = new breakpoint ();
1060
1061   return std::unique_ptr<breakpoint> (b);
1062 }
1063
1064 /* A helper function that validates that COMMANDS are valid for a
1065    breakpoint.  This function will throw an exception if a problem is
1066    found.  */
1067
1068 static void
1069 validate_commands_for_breakpoint (struct breakpoint *b,
1070                                   struct command_line *commands)
1071 {
1072   if (is_tracepoint (b))
1073     {
1074       struct tracepoint *t = (struct tracepoint *) b;
1075       struct command_line *c;
1076       struct command_line *while_stepping = 0;
1077
1078       /* Reset the while-stepping step count.  The previous commands
1079          might have included a while-stepping action, while the new
1080          ones might not.  */
1081       t->step_count = 0;
1082
1083       /* We need to verify that each top-level element of commands is
1084          valid for tracepoints, that there's at most one
1085          while-stepping element, and that the while-stepping's body
1086          has valid tracing commands excluding nested while-stepping.
1087          We also need to validate the tracepoint action line in the
1088          context of the tracepoint --- validate_actionline actually
1089          has side effects, like setting the tracepoint's
1090          while-stepping STEP_COUNT, in addition to checking if the
1091          collect/teval actions parse and make sense in the
1092          tracepoint's context.  */
1093       for (c = commands; c; c = c->next)
1094         {
1095           if (c->control_type == while_stepping_control)
1096             {
1097               if (b->type == bp_fast_tracepoint)
1098                 error (_("The 'while-stepping' command "
1099                          "cannot be used for fast tracepoint"));
1100               else if (b->type == bp_static_tracepoint)
1101                 error (_("The 'while-stepping' command "
1102                          "cannot be used for static tracepoint"));
1103
1104               if (while_stepping)
1105                 error (_("The 'while-stepping' command "
1106                          "can be used only once"));
1107               else
1108                 while_stepping = c;
1109             }
1110
1111           validate_actionline (c->line, b);
1112         }
1113       if (while_stepping)
1114         {
1115           struct command_line *c2;
1116
1117           gdb_assert (while_stepping->body_list_1 == nullptr);
1118           c2 = while_stepping->body_list_0.get ();
1119           for (; c2; c2 = c2->next)
1120             {
1121               if (c2->control_type == while_stepping_control)
1122                 error (_("The 'while-stepping' command cannot be nested"));
1123             }
1124         }
1125     }
1126   else
1127     {
1128       check_no_tracepoint_commands (commands);
1129     }
1130 }
1131
1132 /* Return a vector of all the static tracepoints set at ADDR.  The
1133    caller is responsible for releasing the vector.  */
1134
1135 std::vector<breakpoint *>
1136 static_tracepoints_here (CORE_ADDR addr)
1137 {
1138   struct breakpoint *b;
1139   std::vector<breakpoint *> found;
1140   struct bp_location *loc;
1141
1142   ALL_BREAKPOINTS (b)
1143     if (b->type == bp_static_tracepoint)
1144       {
1145         for (loc = b->loc; loc; loc = loc->next)
1146           if (loc->address == addr)
1147             found.push_back (b);
1148       }
1149
1150   return found;
1151 }
1152
1153 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1154    validate that only allowed commands are included.  */
1155
1156 void
1157 breakpoint_set_commands (struct breakpoint *b, 
1158                          counted_command_line &&commands)
1159 {
1160   validate_commands_for_breakpoint (b, commands.get ());
1161
1162   b->commands = std::move (commands);
1163   gdb::observers::breakpoint_modified.notify (b);
1164 }
1165
1166 /* Set the internal `silent' flag on the breakpoint.  Note that this
1167    is not the same as the "silent" that may appear in the breakpoint's
1168    commands.  */
1169
1170 void
1171 breakpoint_set_silent (struct breakpoint *b, int silent)
1172 {
1173   int old_silent = b->silent;
1174
1175   b->silent = silent;
1176   if (old_silent != silent)
1177     gdb::observers::breakpoint_modified.notify (b);
1178 }
1179
1180 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1181    breakpoint work for any thread.  */
1182
1183 void
1184 breakpoint_set_thread (struct breakpoint *b, int thread)
1185 {
1186   int old_thread = b->thread;
1187
1188   b->thread = thread;
1189   if (old_thread != thread)
1190     gdb::observers::breakpoint_modified.notify (b);
1191 }
1192
1193 /* Set the task for this breakpoint.  If TASK is 0, make the
1194    breakpoint work for any task.  */
1195
1196 void
1197 breakpoint_set_task (struct breakpoint *b, int task)
1198 {
1199   int old_task = b->task;
1200
1201   b->task = task;
1202   if (old_task != task)
1203     gdb::observers::breakpoint_modified.notify (b);
1204 }
1205
1206 static void
1207 commands_command_1 (const char *arg, int from_tty,
1208                     struct command_line *control)
1209 {
1210   counted_command_line cmd;
1211   /* cmd_read will be true once we have read cmd.  Note that cmd might still be
1212      NULL after the call to read_command_lines if the user provides an empty
1213      list of command by just typing "end".  */
1214   bool cmd_read = false;
1215
1216   std::string new_arg;
1217
1218   if (arg == NULL || !*arg)
1219     {
1220       if (breakpoint_count - prev_breakpoint_count > 1)
1221         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1222                                  breakpoint_count);
1223       else if (breakpoint_count > 0)
1224         new_arg = string_printf ("%d", breakpoint_count);
1225       arg = new_arg.c_str ();
1226     }
1227
1228   map_breakpoint_numbers
1229     (arg, [&] (breakpoint *b)
1230      {
1231        if (!cmd_read)
1232          {
1233            gdb_assert (cmd == NULL);
1234            if (control != NULL)
1235              cmd = control->body_list_0;
1236            else
1237              {
1238                std::string str
1239                  = string_printf (_("Type commands for breakpoint(s) "
1240                                     "%s, one per line."),
1241                                   arg);
1242
1243                auto do_validate = [=] (const char *line)
1244                                   {
1245                                     validate_actionline (line, b);
1246                                   };
1247                gdb::function_view<void (const char *)> validator;
1248                if (is_tracepoint (b))
1249                  validator = do_validate;
1250
1251                cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1252              }
1253            cmd_read = true;
1254          }
1255
1256        /* If a breakpoint was on the list more than once, we don't need to
1257           do anything.  */
1258        if (b->commands != cmd)
1259          {
1260            validate_commands_for_breakpoint (b, cmd.get ());
1261            b->commands = cmd;
1262            gdb::observers::breakpoint_modified.notify (b);
1263          }
1264      });
1265 }
1266
1267 static void
1268 commands_command (const char *arg, int from_tty)
1269 {
1270   commands_command_1 (arg, from_tty, NULL);
1271 }
1272
1273 /* Like commands_command, but instead of reading the commands from
1274    input stream, takes them from an already parsed command structure.
1275
1276    This is used by cli-script.c to DTRT with breakpoint commands
1277    that are part of if and while bodies.  */
1278 enum command_control_type
1279 commands_from_control_command (const char *arg, struct command_line *cmd)
1280 {
1281   commands_command_1 (arg, 0, cmd);
1282   return simple_control;
1283 }
1284
1285 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1286
1287 static int
1288 bp_location_has_shadow (struct bp_location *bl)
1289 {
1290   if (bl->loc_type != bp_loc_software_breakpoint)
1291     return 0;
1292   if (!bl->inserted)
1293     return 0;
1294   if (bl->target_info.shadow_len == 0)
1295     /* BL isn't valid, or doesn't shadow memory.  */
1296     return 0;
1297   return 1;
1298 }
1299
1300 /* Update BUF, which is LEN bytes read from the target address
1301    MEMADDR, by replacing a memory breakpoint with its shadowed
1302    contents.
1303
1304    If READBUF is not NULL, this buffer must not overlap with the of
1305    the breakpoint location's shadow_contents buffer.  Otherwise, a
1306    failed assertion internal error will be raised.  */
1307
1308 static void
1309 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1310                             const gdb_byte *writebuf_org,
1311                             ULONGEST memaddr, LONGEST len,
1312                             struct bp_target_info *target_info,
1313                             struct gdbarch *gdbarch)
1314 {
1315   /* Now do full processing of the found relevant range of elements.  */
1316   CORE_ADDR bp_addr = 0;
1317   int bp_size = 0;
1318   int bptoffset = 0;
1319
1320   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1321                                  current_program_space->aspace, 0))
1322     {
1323       /* The breakpoint is inserted in a different address space.  */
1324       return;
1325     }
1326
1327   /* Addresses and length of the part of the breakpoint that
1328      we need to copy.  */
1329   bp_addr = target_info->placed_address;
1330   bp_size = target_info->shadow_len;
1331
1332   if (bp_addr + bp_size <= memaddr)
1333     {
1334       /* The breakpoint is entirely before the chunk of memory we are
1335          reading.  */
1336       return;
1337     }
1338
1339   if (bp_addr >= memaddr + len)
1340     {
1341       /* The breakpoint is entirely after the chunk of memory we are
1342          reading.  */
1343       return;
1344     }
1345
1346   /* Offset within shadow_contents.  */
1347   if (bp_addr < memaddr)
1348     {
1349       /* Only copy the second part of the breakpoint.  */
1350       bp_size -= memaddr - bp_addr;
1351       bptoffset = memaddr - bp_addr;
1352       bp_addr = memaddr;
1353     }
1354
1355   if (bp_addr + bp_size > memaddr + len)
1356     {
1357       /* Only copy the first part of the breakpoint.  */
1358       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1359     }
1360
1361   if (readbuf != NULL)
1362     {
1363       /* Verify that the readbuf buffer does not overlap with the
1364          shadow_contents buffer.  */
1365       gdb_assert (target_info->shadow_contents >= readbuf + len
1366                   || readbuf >= (target_info->shadow_contents
1367                                  + target_info->shadow_len));
1368
1369       /* Update the read buffer with this inserted breakpoint's
1370          shadow.  */
1371       memcpy (readbuf + bp_addr - memaddr,
1372               target_info->shadow_contents + bptoffset, bp_size);
1373     }
1374   else
1375     {
1376       const unsigned char *bp;
1377       CORE_ADDR addr = target_info->reqstd_address;
1378       int placed_size;
1379
1380       /* Update the shadow with what we want to write to memory.  */
1381       memcpy (target_info->shadow_contents + bptoffset,
1382               writebuf_org + bp_addr - memaddr, bp_size);
1383
1384       /* Determine appropriate breakpoint contents and size for this
1385          address.  */
1386       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1387
1388       /* Update the final write buffer with this inserted
1389          breakpoint's INSN.  */
1390       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1391     }
1392 }
1393
1394 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1395    by replacing any memory breakpoints with their shadowed contents.
1396
1397    If READBUF is not NULL, this buffer must not overlap with any of
1398    the breakpoint location's shadow_contents buffers.  Otherwise,
1399    a failed assertion internal error will be raised.
1400
1401    The range of shadowed area by each bp_location is:
1402      bl->address - bp_locations_placed_address_before_address_max
1403      up to bl->address + bp_locations_shadow_len_after_address_max
1404    The range we were requested to resolve shadows for is:
1405      memaddr ... memaddr + len
1406    Thus the safe cutoff boundaries for performance optimization are
1407      memaddr + len <= (bl->address
1408                        - bp_locations_placed_address_before_address_max)
1409    and:
1410      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1411
1412 void
1413 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1414                         const gdb_byte *writebuf_org,
1415                         ULONGEST memaddr, LONGEST len)
1416 {
1417   /* Left boundary, right boundary and median element of our binary
1418      search.  */
1419   unsigned bc_l, bc_r, bc;
1420
1421   /* Find BC_L which is a leftmost element which may affect BUF
1422      content.  It is safe to report lower value but a failure to
1423      report higher one.  */
1424
1425   bc_l = 0;
1426   bc_r = bp_locations_count;
1427   while (bc_l + 1 < bc_r)
1428     {
1429       struct bp_location *bl;
1430
1431       bc = (bc_l + bc_r) / 2;
1432       bl = bp_locations[bc];
1433
1434       /* Check first BL->ADDRESS will not overflow due to the added
1435          constant.  Then advance the left boundary only if we are sure
1436          the BC element can in no way affect the BUF content (MEMADDR
1437          to MEMADDR + LEN range).
1438
1439          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1440          offset so that we cannot miss a breakpoint with its shadow
1441          range tail still reaching MEMADDR.  */
1442
1443       if ((bl->address + bp_locations_shadow_len_after_address_max
1444            >= bl->address)
1445           && (bl->address + bp_locations_shadow_len_after_address_max
1446               <= memaddr))
1447         bc_l = bc;
1448       else
1449         bc_r = bc;
1450     }
1451
1452   /* Due to the binary search above, we need to make sure we pick the
1453      first location that's at BC_L's address.  E.g., if there are
1454      multiple locations at the same address, BC_L may end up pointing
1455      at a duplicate location, and miss the "master"/"inserted"
1456      location.  Say, given locations L1, L2 and L3 at addresses A and
1457      B:
1458
1459       L1@A, L2@A, L3@B, ...
1460
1461      BC_L could end up pointing at location L2, while the "master"
1462      location could be L1.  Since the `loc->inserted' flag is only set
1463      on "master" locations, we'd forget to restore the shadow of L1
1464      and L2.  */
1465   while (bc_l > 0
1466          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1467     bc_l--;
1468
1469   /* Now do full processing of the found relevant range of elements.  */
1470
1471   for (bc = bc_l; bc < bp_locations_count; bc++)
1472   {
1473     struct bp_location *bl = bp_locations[bc];
1474
1475     /* bp_location array has BL->OWNER always non-NULL.  */
1476     if (bl->owner->type == bp_none)
1477       warning (_("reading through apparently deleted breakpoint #%d?"),
1478                bl->owner->number);
1479
1480     /* Performance optimization: any further element can no longer affect BUF
1481        content.  */
1482
1483     if (bl->address >= bp_locations_placed_address_before_address_max
1484         && memaddr + len <= (bl->address
1485                              - bp_locations_placed_address_before_address_max))
1486       break;
1487
1488     if (!bp_location_has_shadow (bl))
1489       continue;
1490
1491     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1492                                 memaddr, len, &bl->target_info, bl->gdbarch);
1493   }
1494 }
1495
1496 \f
1497
1498 /* Return true if BPT is either a software breakpoint or a hardware
1499    breakpoint.  */
1500
1501 int
1502 is_breakpoint (const struct breakpoint *bpt)
1503 {
1504   return (bpt->type == bp_breakpoint
1505           || bpt->type == bp_hardware_breakpoint
1506           || bpt->type == bp_dprintf);
1507 }
1508
1509 /* Return true if BPT is of any hardware watchpoint kind.  */
1510
1511 static int
1512 is_hardware_watchpoint (const struct breakpoint *bpt)
1513 {
1514   return (bpt->type == bp_hardware_watchpoint
1515           || bpt->type == bp_read_watchpoint
1516           || bpt->type == bp_access_watchpoint);
1517 }
1518
1519 /* Return true if BPT is of any watchpoint kind, hardware or
1520    software.  */
1521
1522 int
1523 is_watchpoint (const struct breakpoint *bpt)
1524 {
1525   return (is_hardware_watchpoint (bpt)
1526           || bpt->type == bp_watchpoint);
1527 }
1528
1529 /* Returns true if the current thread and its running state are safe
1530    to evaluate or update watchpoint B.  Watchpoints on local
1531    expressions need to be evaluated in the context of the thread that
1532    was current when the watchpoint was created, and, that thread needs
1533    to be stopped to be able to select the correct frame context.
1534    Watchpoints on global expressions can be evaluated on any thread,
1535    and in any state.  It is presently left to the target allowing
1536    memory accesses when threads are running.  */
1537
1538 static int
1539 watchpoint_in_thread_scope (struct watchpoint *b)
1540 {
1541   return (b->pspace == current_program_space
1542           && (b->watchpoint_thread == null_ptid
1543               || (inferior_ptid == b->watchpoint_thread
1544                   && !inferior_thread ()->executing)));
1545 }
1546
1547 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1548    associated bp_watchpoint_scope breakpoint.  */
1549
1550 static void
1551 watchpoint_del_at_next_stop (struct watchpoint *w)
1552 {
1553   if (w->related_breakpoint != w)
1554     {
1555       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1556       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1557       w->related_breakpoint->disposition = disp_del_at_next_stop;
1558       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1559       w->related_breakpoint = w;
1560     }
1561   w->disposition = disp_del_at_next_stop;
1562 }
1563
1564 /* Extract a bitfield value from value VAL using the bit parameters contained in
1565    watchpoint W.  */
1566
1567 static struct value *
1568 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1569 {
1570   struct value *bit_val;
1571
1572   if (val == NULL)
1573     return NULL;
1574
1575   bit_val = allocate_value (value_type (val));
1576
1577   unpack_value_bitfield (bit_val,
1578                          w->val_bitpos,
1579                          w->val_bitsize,
1580                          value_contents_for_printing (val),
1581                          value_offset (val),
1582                          val);
1583
1584   return bit_val;
1585 }
1586
1587 /* Allocate a dummy location and add it to B, which must be a software
1588    watchpoint.  This is required because even if a software watchpoint
1589    is not watching any memory, bpstat_stop_status requires a location
1590    to be able to report stops.  */
1591
1592 static void
1593 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1594                                             struct program_space *pspace)
1595 {
1596   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1597
1598   b->loc = allocate_bp_location (b);
1599   b->loc->pspace = pspace;
1600   b->loc->address = -1;
1601   b->loc->length = -1;
1602 }
1603
1604 /* Returns true if B is a software watchpoint that is not watching any
1605    memory (e.g., "watch $pc").  */
1606
1607 static int
1608 is_no_memory_software_watchpoint (struct breakpoint *b)
1609 {
1610   return (b->type == bp_watchpoint
1611           && b->loc != NULL
1612           && b->loc->next == NULL
1613           && b->loc->address == -1
1614           && b->loc->length == -1);
1615 }
1616
1617 /* Assuming that B is a watchpoint:
1618    - Reparse watchpoint expression, if REPARSE is non-zero
1619    - Evaluate expression and store the result in B->val
1620    - Evaluate the condition if there is one, and store the result
1621      in b->loc->cond.
1622    - Update the list of values that must be watched in B->loc.
1623
1624    If the watchpoint disposition is disp_del_at_next_stop, then do
1625    nothing.  If this is local watchpoint that is out of scope, delete
1626    it.
1627
1628    Even with `set breakpoint always-inserted on' the watchpoints are
1629    removed + inserted on each stop here.  Normal breakpoints must
1630    never be removed because they might be missed by a running thread
1631    when debugging in non-stop mode.  On the other hand, hardware
1632    watchpoints (is_hardware_watchpoint; processed here) are specific
1633    to each LWP since they are stored in each LWP's hardware debug
1634    registers.  Therefore, such LWP must be stopped first in order to
1635    be able to modify its hardware watchpoints.
1636
1637    Hardware watchpoints must be reset exactly once after being
1638    presented to the user.  It cannot be done sooner, because it would
1639    reset the data used to present the watchpoint hit to the user.  And
1640    it must not be done later because it could display the same single
1641    watchpoint hit during multiple GDB stops.  Note that the latter is
1642    relevant only to the hardware watchpoint types bp_read_watchpoint
1643    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1644    not user-visible - its hit is suppressed if the memory content has
1645    not changed.
1646
1647    The following constraints influence the location where we can reset
1648    hardware watchpoints:
1649
1650    * target_stopped_by_watchpoint and target_stopped_data_address are
1651      called several times when GDB stops.
1652
1653    [linux] 
1654    * Multiple hardware watchpoints can be hit at the same time,
1655      causing GDB to stop.  GDB only presents one hardware watchpoint
1656      hit at a time as the reason for stopping, and all the other hits
1657      are presented later, one after the other, each time the user
1658      requests the execution to be resumed.  Execution is not resumed
1659      for the threads still having pending hit event stored in
1660      LWP_INFO->STATUS.  While the watchpoint is already removed from
1661      the inferior on the first stop the thread hit event is kept being
1662      reported from its cached value by linux_nat_stopped_data_address
1663      until the real thread resume happens after the watchpoint gets
1664      presented and thus its LWP_INFO->STATUS gets reset.
1665
1666    Therefore the hardware watchpoint hit can get safely reset on the
1667    watchpoint removal from inferior.  */
1668
1669 static void
1670 update_watchpoint (struct watchpoint *b, int reparse)
1671 {
1672   int within_current_scope;
1673   struct frame_id saved_frame_id;
1674   int frame_saved;
1675
1676   /* If this is a local watchpoint, we only want to check if the
1677      watchpoint frame is in scope if the current thread is the thread
1678      that was used to create the watchpoint.  */
1679   if (!watchpoint_in_thread_scope (b))
1680     return;
1681
1682   if (b->disposition == disp_del_at_next_stop)
1683     return;
1684  
1685   frame_saved = 0;
1686
1687   /* Determine if the watchpoint is within scope.  */
1688   if (b->exp_valid_block == NULL)
1689     within_current_scope = 1;
1690   else
1691     {
1692       struct frame_info *fi = get_current_frame ();
1693       struct gdbarch *frame_arch = get_frame_arch (fi);
1694       CORE_ADDR frame_pc = get_frame_pc (fi);
1695
1696       /* If we're at a point where the stack has been destroyed
1697          (e.g. in a function epilogue), unwinding may not work
1698          properly. Do not attempt to recreate locations at this
1699          point.  See similar comments in watchpoint_check.  */
1700       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1701         return;
1702
1703       /* Save the current frame's ID so we can restore it after
1704          evaluating the watchpoint expression on its own frame.  */
1705       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1706          took a frame parameter, so that we didn't have to change the
1707          selected frame.  */
1708       frame_saved = 1;
1709       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1710
1711       fi = frame_find_by_id (b->watchpoint_frame);
1712       within_current_scope = (fi != NULL);
1713       if (within_current_scope)
1714         select_frame (fi);
1715     }
1716
1717   /* We don't free locations.  They are stored in the bp_location array
1718      and update_global_location_list will eventually delete them and
1719      remove breakpoints if needed.  */
1720   b->loc = NULL;
1721
1722   if (within_current_scope && reparse)
1723     {
1724       const char *s;
1725
1726       b->exp.reset ();
1727       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1728       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1729       /* If the meaning of expression itself changed, the old value is
1730          no longer relevant.  We don't want to report a watchpoint hit
1731          to the user when the old value and the new value may actually
1732          be completely different objects.  */
1733       b->val = NULL;
1734       b->val_valid = 0;
1735
1736       /* Note that unlike with breakpoints, the watchpoint's condition
1737          expression is stored in the breakpoint object, not in the
1738          locations (re)created below.  */
1739       if (b->cond_string != NULL)
1740         {
1741           b->cond_exp.reset ();
1742
1743           s = b->cond_string;
1744           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1745         }
1746     }
1747
1748   /* If we failed to parse the expression, for example because
1749      it refers to a global variable in a not-yet-loaded shared library,
1750      don't try to insert watchpoint.  We don't automatically delete
1751      such watchpoint, though, since failure to parse expression
1752      is different from out-of-scope watchpoint.  */
1753   if (!target_has_execution)
1754     {
1755       /* Without execution, memory can't change.  No use to try and
1756          set watchpoint locations.  The watchpoint will be reset when
1757          the target gains execution, through breakpoint_re_set.  */
1758       if (!can_use_hw_watchpoints)
1759         {
1760           if (b->ops->works_in_software_mode (b))
1761             b->type = bp_watchpoint;
1762           else
1763             error (_("Can't set read/access watchpoint when "
1764                      "hardware watchpoints are disabled."));
1765         }
1766     }
1767   else if (within_current_scope && b->exp)
1768     {
1769       int pc = 0;
1770       std::vector<value_ref_ptr> val_chain;
1771       struct value *v, *result;
1772       struct program_space *frame_pspace;
1773
1774       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1775
1776       /* Avoid setting b->val if it's already set.  The meaning of
1777          b->val is 'the last value' user saw, and we should update
1778          it only if we reported that last value to user.  As it
1779          happens, the code that reports it updates b->val directly.
1780          We don't keep track of the memory value for masked
1781          watchpoints.  */
1782       if (!b->val_valid && !is_masked_watchpoint (b))
1783         {
1784           if (b->val_bitsize != 0)
1785             v = extract_bitfield_from_watchpoint_value (b, v);
1786           b->val = release_value (v);
1787           b->val_valid = 1;
1788         }
1789
1790       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1791
1792       /* Look at each value on the value chain.  */
1793       gdb_assert (!val_chain.empty ());
1794       for (const value_ref_ptr &iter : val_chain)
1795         {
1796           v = iter.get ();
1797
1798           /* If it's a memory location, and GDB actually needed
1799              its contents to evaluate the expression, then we
1800              must watch it.  If the first value returned is
1801              still lazy, that means an error occurred reading it;
1802              watch it anyway in case it becomes readable.  */
1803           if (VALUE_LVAL (v) == lval_memory
1804               && (v == val_chain[0] || ! value_lazy (v)))
1805             {
1806               struct type *vtype = check_typedef (value_type (v));
1807
1808               /* We only watch structs and arrays if user asked
1809                  for it explicitly, never if they just happen to
1810                  appear in the middle of some value chain.  */
1811               if (v == result
1812                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1813                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1814                 {
1815                   CORE_ADDR addr;
1816                   enum target_hw_bp_type type;
1817                   struct bp_location *loc, **tmp;
1818                   int bitpos = 0, bitsize = 0;
1819
1820                   if (value_bitsize (v) != 0)
1821                     {
1822                       /* Extract the bit parameters out from the bitfield
1823                          sub-expression.  */
1824                       bitpos = value_bitpos (v);
1825                       bitsize = value_bitsize (v);
1826                     }
1827                   else if (v == result && b->val_bitsize != 0)
1828                     {
1829                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1830                         lvalue whose bit parameters are saved in the fields
1831                         VAL_BITPOS and VAL_BITSIZE.  */
1832                       bitpos = b->val_bitpos;
1833                       bitsize = b->val_bitsize;
1834                     }
1835
1836                   addr = value_address (v);
1837                   if (bitsize != 0)
1838                     {
1839                       /* Skip the bytes that don't contain the bitfield.  */
1840                       addr += bitpos / 8;
1841                     }
1842
1843                   type = hw_write;
1844                   if (b->type == bp_read_watchpoint)
1845                     type = hw_read;
1846                   else if (b->type == bp_access_watchpoint)
1847                     type = hw_access;
1848
1849                   loc = allocate_bp_location (b);
1850                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1851                     ;
1852                   *tmp = loc;
1853                   loc->gdbarch = get_type_arch (value_type (v));
1854
1855                   loc->pspace = frame_pspace;
1856                   loc->address = address_significant (loc->gdbarch, addr);
1857
1858                   if (bitsize != 0)
1859                     {
1860                       /* Just cover the bytes that make up the bitfield.  */
1861                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1862                     }
1863                   else
1864                     loc->length = TYPE_LENGTH (value_type (v));
1865
1866                   loc->watchpoint_type = type;
1867                 }
1868             }
1869         }
1870
1871       /* Change the type of breakpoint between hardware assisted or
1872          an ordinary watchpoint depending on the hardware support
1873          and free hardware slots.  REPARSE is set when the inferior
1874          is started.  */
1875       if (reparse)
1876         {
1877           int reg_cnt;
1878           enum bp_loc_type loc_type;
1879           struct bp_location *bl;
1880
1881           reg_cnt = can_use_hardware_watchpoint (val_chain);
1882
1883           if (reg_cnt)
1884             {
1885               int i, target_resources_ok, other_type_used;
1886               enum bptype type;
1887
1888               /* Use an exact watchpoint when there's only one memory region to be
1889                  watched, and only one debug register is needed to watch it.  */
1890               b->exact = target_exact_watchpoints && reg_cnt == 1;
1891
1892               /* We need to determine how many resources are already
1893                  used for all other hardware watchpoints plus this one
1894                  to see if we still have enough resources to also fit
1895                  this watchpoint in as well.  */
1896
1897               /* If this is a software watchpoint, we try to turn it
1898                  to a hardware one -- count resources as if B was of
1899                  hardware watchpoint type.  */
1900               type = b->type;
1901               if (type == bp_watchpoint)
1902                 type = bp_hardware_watchpoint;
1903
1904               /* This watchpoint may or may not have been placed on
1905                  the list yet at this point (it won't be in the list
1906                  if we're trying to create it for the first time,
1907                  through watch_command), so always account for it
1908                  manually.  */
1909
1910               /* Count resources used by all watchpoints except B.  */
1911               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1912
1913               /* Add in the resources needed for B.  */
1914               i += hw_watchpoint_use_count (b);
1915
1916               target_resources_ok
1917                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1918               if (target_resources_ok <= 0)
1919                 {
1920                   int sw_mode = b->ops->works_in_software_mode (b);
1921
1922                   if (target_resources_ok == 0 && !sw_mode)
1923                     error (_("Target does not support this type of "
1924                              "hardware watchpoint."));
1925                   else if (target_resources_ok < 0 && !sw_mode)
1926                     error (_("There are not enough available hardware "
1927                              "resources for this watchpoint."));
1928
1929                   /* Downgrade to software watchpoint.  */
1930                   b->type = bp_watchpoint;
1931                 }
1932               else
1933                 {
1934                   /* If this was a software watchpoint, we've just
1935                      found we have enough resources to turn it to a
1936                      hardware watchpoint.  Otherwise, this is a
1937                      nop.  */
1938                   b->type = type;
1939                 }
1940             }
1941           else if (!b->ops->works_in_software_mode (b))
1942             {
1943               if (!can_use_hw_watchpoints)
1944                 error (_("Can't set read/access watchpoint when "
1945                          "hardware watchpoints are disabled."));
1946               else
1947                 error (_("Expression cannot be implemented with "
1948                          "read/access watchpoint."));
1949             }
1950           else
1951             b->type = bp_watchpoint;
1952
1953           loc_type = (b->type == bp_watchpoint? bp_loc_other
1954                       : bp_loc_hardware_watchpoint);
1955           for (bl = b->loc; bl; bl = bl->next)
1956             bl->loc_type = loc_type;
1957         }
1958
1959       /* If a software watchpoint is not watching any memory, then the
1960          above left it without any location set up.  But,
1961          bpstat_stop_status requires a location to be able to report
1962          stops, so make sure there's at least a dummy one.  */
1963       if (b->type == bp_watchpoint && b->loc == NULL)
1964         software_watchpoint_add_no_memory_location (b, frame_pspace);
1965     }
1966   else if (!within_current_scope)
1967     {
1968       printf_filtered (_("\
1969 Watchpoint %d deleted because the program has left the block\n\
1970 in which its expression is valid.\n"),
1971                        b->number);
1972       watchpoint_del_at_next_stop (b);
1973     }
1974
1975   /* Restore the selected frame.  */
1976   if (frame_saved)
1977     select_frame (frame_find_by_id (saved_frame_id));
1978 }
1979
1980
1981 /* Returns 1 iff breakpoint location should be
1982    inserted in the inferior.  We don't differentiate the type of BL's owner
1983    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1984    breakpoint_ops is not defined, because in insert_bp_location,
1985    tracepoint's insert_location will not be called.  */
1986 static int
1987 should_be_inserted (struct bp_location *bl)
1988 {
1989   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1990     return 0;
1991
1992   if (bl->owner->disposition == disp_del_at_next_stop)
1993     return 0;
1994
1995   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1996     return 0;
1997
1998   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1999     return 0;
2000
2001   /* This is set for example, when we're attached to the parent of a
2002      vfork, and have detached from the child.  The child is running
2003      free, and we expect it to do an exec or exit, at which point the
2004      OS makes the parent schedulable again (and the target reports
2005      that the vfork is done).  Until the child is done with the shared
2006      memory region, do not insert breakpoints in the parent, otherwise
2007      the child could still trip on the parent's breakpoints.  Since
2008      the parent is blocked anyway, it won't miss any breakpoint.  */
2009   if (bl->pspace->breakpoints_not_allowed)
2010     return 0;
2011
2012   /* Don't insert a breakpoint if we're trying to step past its
2013      location, except if the breakpoint is a single-step breakpoint,
2014      and the breakpoint's thread is the thread which is stepping past
2015      a breakpoint.  */
2016   if ((bl->loc_type == bp_loc_software_breakpoint
2017        || bl->loc_type == bp_loc_hardware_breakpoint)
2018       && stepping_past_instruction_at (bl->pspace->aspace,
2019                                        bl->address)
2020       /* The single-step breakpoint may be inserted at the location
2021          we're trying to step if the instruction branches to itself.
2022          However, the instruction won't be executed at all and it may
2023          break the semantics of the instruction, for example, the
2024          instruction is a conditional branch or updates some flags.
2025          We can't fix it unless GDB is able to emulate the instruction
2026          or switch to displaced stepping.  */
2027       && !(bl->owner->type == bp_single_step
2028            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2029     {
2030       if (debug_infrun)
2031         {
2032           fprintf_unfiltered (gdb_stdlog,
2033                               "infrun: skipping breakpoint: "
2034                               "stepping past insn at: %s\n",
2035                               paddress (bl->gdbarch, bl->address));
2036         }
2037       return 0;
2038     }
2039
2040   /* Don't insert watchpoints if we're trying to step past the
2041      instruction that triggered one.  */
2042   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2043       && stepping_past_nonsteppable_watchpoint ())
2044     {
2045       if (debug_infrun)
2046         {
2047           fprintf_unfiltered (gdb_stdlog,
2048                               "infrun: stepping past non-steppable watchpoint. "
2049                               "skipping watchpoint at %s:%d\n",
2050                               paddress (bl->gdbarch, bl->address),
2051                               bl->length);
2052         }
2053       return 0;
2054     }
2055
2056   return 1;
2057 }
2058
2059 /* Same as should_be_inserted but does the check assuming
2060    that the location is not duplicated.  */
2061
2062 static int
2063 unduplicated_should_be_inserted (struct bp_location *bl)
2064 {
2065   int result;
2066   const int save_duplicate = bl->duplicate;
2067
2068   bl->duplicate = 0;
2069   result = should_be_inserted (bl);
2070   bl->duplicate = save_duplicate;
2071   return result;
2072 }
2073
2074 /* Parses a conditional described by an expression COND into an
2075    agent expression bytecode suitable for evaluation
2076    by the bytecode interpreter.  Return NULL if there was
2077    any error during parsing.  */
2078
2079 static agent_expr_up
2080 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2081 {
2082   if (cond == NULL)
2083     return NULL;
2084
2085   agent_expr_up aexpr;
2086
2087   /* We don't want to stop processing, so catch any errors
2088      that may show up.  */
2089   try
2090     {
2091       aexpr = gen_eval_for_expr (scope, cond);
2092     }
2093
2094   catch (const gdb_exception_error &ex)
2095     {
2096       /* If we got here, it means the condition could not be parsed to a valid
2097          bytecode expression and thus can't be evaluated on the target's side.
2098          It's no use iterating through the conditions.  */
2099     }
2100
2101   /* We have a valid agent expression.  */
2102   return aexpr;
2103 }
2104
2105 /* Based on location BL, create a list of breakpoint conditions to be
2106    passed on to the target.  If we have duplicated locations with different
2107    conditions, we will add such conditions to the list.  The idea is that the
2108    target will evaluate the list of conditions and will only notify GDB when
2109    one of them is true.  */
2110
2111 static void
2112 build_target_condition_list (struct bp_location *bl)
2113 {
2114   struct bp_location **locp = NULL, **loc2p;
2115   int null_condition_or_parse_error = 0;
2116   int modified = bl->needs_update;
2117   struct bp_location *loc;
2118
2119   /* Release conditions left over from a previous insert.  */
2120   bl->target_info.conditions.clear ();
2121
2122   /* This is only meaningful if the target is
2123      evaluating conditions and if the user has
2124      opted for condition evaluation on the target's
2125      side.  */
2126   if (gdb_evaluates_breakpoint_condition_p ()
2127       || !target_supports_evaluation_of_breakpoint_conditions ())
2128     return;
2129
2130   /* Do a first pass to check for locations with no assigned
2131      conditions or conditions that fail to parse to a valid agent expression
2132      bytecode.  If any of these happen, then it's no use to send conditions
2133      to the target since this location will always trigger and generate a
2134      response back to GDB.  */
2135   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2136     {
2137       loc = (*loc2p);
2138       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2139         {
2140           if (modified)
2141             {
2142               /* Re-parse the conditions since something changed.  In that
2143                  case we already freed the condition bytecodes (see
2144                  force_breakpoint_reinsertion).  We just
2145                  need to parse the condition to bytecodes again.  */
2146               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2147                                                         loc->cond.get ());
2148             }
2149
2150           /* If we have a NULL bytecode expression, it means something
2151              went wrong or we have a null condition expression.  */
2152           if (!loc->cond_bytecode)
2153             {
2154               null_condition_or_parse_error = 1;
2155               break;
2156             }
2157         }
2158     }
2159
2160   /* If any of these happened, it means we will have to evaluate the conditions
2161      for the location's address on gdb's side.  It is no use keeping bytecodes
2162      for all the other duplicate locations, thus we free all of them here.
2163
2164      This is so we have a finer control over which locations' conditions are
2165      being evaluated by GDB or the remote stub.  */
2166   if (null_condition_or_parse_error)
2167     {
2168       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2169         {
2170           loc = (*loc2p);
2171           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2172             {
2173               /* Only go as far as the first NULL bytecode is
2174                  located.  */
2175               if (!loc->cond_bytecode)
2176                 return;
2177
2178               loc->cond_bytecode.reset ();
2179             }
2180         }
2181     }
2182
2183   /* No NULL conditions or failed bytecode generation.  Build a condition list
2184      for this location's address.  */
2185   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2186     {
2187       loc = (*loc2p);
2188       if (loc->cond
2189           && is_breakpoint (loc->owner)
2190           && loc->pspace->num == bl->pspace->num
2191           && loc->owner->enable_state == bp_enabled
2192           && loc->enabled)
2193         {
2194           /* Add the condition to the vector.  This will be used later
2195              to send the conditions to the target.  */
2196           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2197         }
2198     }
2199
2200   return;
2201 }
2202
2203 /* Parses a command described by string CMD into an agent expression
2204    bytecode suitable for evaluation by the bytecode interpreter.
2205    Return NULL if there was any error during parsing.  */
2206
2207 static agent_expr_up
2208 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2209 {
2210   const char *cmdrest;
2211   const char *format_start, *format_end;
2212   struct gdbarch *gdbarch = get_current_arch ();
2213
2214   if (cmd == NULL)
2215     return NULL;
2216
2217   cmdrest = cmd;
2218
2219   if (*cmdrest == ',')
2220     ++cmdrest;
2221   cmdrest = skip_spaces (cmdrest);
2222
2223   if (*cmdrest++ != '"')
2224     error (_("No format string following the location"));
2225
2226   format_start = cmdrest;
2227
2228   format_pieces fpieces (&cmdrest);
2229
2230   format_end = cmdrest;
2231
2232   if (*cmdrest++ != '"')
2233     error (_("Bad format string, non-terminated '\"'."));
2234   
2235   cmdrest = skip_spaces (cmdrest);
2236
2237   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2238     error (_("Invalid argument syntax"));
2239
2240   if (*cmdrest == ',')
2241     cmdrest++;
2242   cmdrest = skip_spaces (cmdrest);
2243
2244   /* For each argument, make an expression.  */
2245
2246   std::vector<struct expression *> argvec;
2247   while (*cmdrest != '\0')
2248     {
2249       const char *cmd1;
2250
2251       cmd1 = cmdrest;
2252       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2253       argvec.push_back (expr.release ());
2254       cmdrest = cmd1;
2255       if (*cmdrest == ',')
2256         ++cmdrest;
2257     }
2258
2259   agent_expr_up aexpr;
2260
2261   /* We don't want to stop processing, so catch any errors
2262      that may show up.  */
2263   try
2264     {
2265       aexpr = gen_printf (scope, gdbarch, 0, 0,
2266                           format_start, format_end - format_start,
2267                           argvec.size (), argvec.data ());
2268     }
2269   catch (const gdb_exception_error &ex)
2270     {
2271       /* If we got here, it means the command could not be parsed to a valid
2272          bytecode expression and thus can't be evaluated on the target's side.
2273          It's no use iterating through the other commands.  */
2274     }
2275
2276   /* We have a valid agent expression, return it.  */
2277   return aexpr;
2278 }
2279
2280 /* Based on location BL, create a list of breakpoint commands to be
2281    passed on to the target.  If we have duplicated locations with
2282    different commands, we will add any such to the list.  */
2283
2284 static void
2285 build_target_command_list (struct bp_location *bl)
2286 {
2287   struct bp_location **locp = NULL, **loc2p;
2288   int null_command_or_parse_error = 0;
2289   int modified = bl->needs_update;
2290   struct bp_location *loc;
2291
2292   /* Clear commands left over from a previous insert.  */
2293   bl->target_info.tcommands.clear ();
2294
2295   if (!target_can_run_breakpoint_commands ())
2296     return;
2297
2298   /* For now, limit to agent-style dprintf breakpoints.  */
2299   if (dprintf_style != dprintf_style_agent)
2300     return;
2301
2302   /* For now, if we have any duplicate location that isn't a dprintf,
2303      don't install the target-side commands, as that would make the
2304      breakpoint not be reported to the core, and we'd lose
2305      control.  */
2306   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2307     {
2308       loc = (*loc2p);
2309       if (is_breakpoint (loc->owner)
2310           && loc->pspace->num == bl->pspace->num
2311           && loc->owner->type != bp_dprintf)
2312         return;
2313     }
2314
2315   /* Do a first pass to check for locations with no assigned
2316      conditions or conditions that fail to parse to a valid agent expression
2317      bytecode.  If any of these happen, then it's no use to send conditions
2318      to the target since this location will always trigger and generate a
2319      response back to GDB.  */
2320   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2321     {
2322       loc = (*loc2p);
2323       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2324         {
2325           if (modified)
2326             {
2327               /* Re-parse the commands since something changed.  In that
2328                  case we already freed the command bytecodes (see
2329                  force_breakpoint_reinsertion).  We just
2330                  need to parse the command to bytecodes again.  */
2331               loc->cmd_bytecode
2332                 = parse_cmd_to_aexpr (bl->address,
2333                                       loc->owner->extra_string);
2334             }
2335
2336           /* If we have a NULL bytecode expression, it means something
2337              went wrong or we have a null command expression.  */
2338           if (!loc->cmd_bytecode)
2339             {
2340               null_command_or_parse_error = 1;
2341               break;
2342             }
2343         }
2344     }
2345
2346   /* If anything failed, then we're not doing target-side commands,
2347      and so clean up.  */
2348   if (null_command_or_parse_error)
2349     {
2350       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2351         {
2352           loc = (*loc2p);
2353           if (is_breakpoint (loc->owner)
2354               && loc->pspace->num == bl->pspace->num)
2355             {
2356               /* Only go as far as the first NULL bytecode is
2357                  located.  */
2358               if (loc->cmd_bytecode == NULL)
2359                 return;
2360
2361               loc->cmd_bytecode.reset ();
2362             }
2363         }
2364     }
2365
2366   /* No NULL commands or failed bytecode generation.  Build a command list
2367      for this location's address.  */
2368   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2369     {
2370       loc = (*loc2p);
2371       if (loc->owner->extra_string
2372           && is_breakpoint (loc->owner)
2373           && loc->pspace->num == bl->pspace->num
2374           && loc->owner->enable_state == bp_enabled
2375           && loc->enabled)
2376         {
2377           /* Add the command to the vector.  This will be used later
2378              to send the commands to the target.  */
2379           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2380         }
2381     }
2382
2383   bl->target_info.persist = 0;
2384   /* Maybe flag this location as persistent.  */
2385   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2386     bl->target_info.persist = 1;
2387 }
2388
2389 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2390    of breakpoint according to ADDR except single-step breakpoint.
2391    Get the kind of single-step breakpoint according to the current
2392    registers state.  */
2393
2394 static int
2395 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2396 {
2397   if (bl->owner->type == bp_single_step)
2398     {
2399       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2400       struct regcache *regcache;
2401
2402       regcache = get_thread_regcache (thr);
2403
2404       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2405                                                          regcache, addr);
2406     }
2407   else
2408     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2409 }
2410
2411 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2412    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2413    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2414    Returns 0 for success, 1 if the bp_location type is not supported or
2415    -1 for failure.
2416
2417    NOTE drow/2003-09-09: This routine could be broken down to an
2418    object-style method for each breakpoint or catchpoint type.  */
2419 static int
2420 insert_bp_location (struct bp_location *bl,
2421                     struct ui_file *tmp_error_stream,
2422                     int *disabled_breaks,
2423                     int *hw_breakpoint_error,
2424                     int *hw_bp_error_explained_already)
2425 {
2426   gdb_exception bp_excpt;
2427
2428   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2429     return 0;
2430
2431   /* Note we don't initialize bl->target_info, as that wipes out
2432      the breakpoint location's shadow_contents if the breakpoint
2433      is still inserted at that location.  This in turn breaks
2434      target_read_memory which depends on these buffers when
2435      a memory read is requested at the breakpoint location:
2436      Once the target_info has been wiped, we fail to see that
2437      we have a breakpoint inserted at that address and thus
2438      read the breakpoint instead of returning the data saved in
2439      the breakpoint location's shadow contents.  */
2440   bl->target_info.reqstd_address = bl->address;
2441   bl->target_info.placed_address_space = bl->pspace->aspace;
2442   bl->target_info.length = bl->length;
2443
2444   /* When working with target-side conditions, we must pass all the conditions
2445      for the same breakpoint address down to the target since GDB will not
2446      insert those locations.  With a list of breakpoint conditions, the target
2447      can decide when to stop and notify GDB.  */
2448
2449   if (is_breakpoint (bl->owner))
2450     {
2451       build_target_condition_list (bl);
2452       build_target_command_list (bl);
2453       /* Reset the modification marker.  */
2454       bl->needs_update = 0;
2455     }
2456
2457   if (bl->loc_type == bp_loc_software_breakpoint
2458       || bl->loc_type == bp_loc_hardware_breakpoint)
2459     {
2460       if (bl->owner->type != bp_hardware_breakpoint)
2461         {
2462           /* If the explicitly specified breakpoint type
2463              is not hardware breakpoint, check the memory map to see
2464              if the breakpoint address is in read only memory or not.
2465
2466              Two important cases are:
2467              - location type is not hardware breakpoint, memory
2468              is readonly.  We change the type of the location to
2469              hardware breakpoint.
2470              - location type is hardware breakpoint, memory is
2471              read-write.  This means we've previously made the
2472              location hardware one, but then the memory map changed,
2473              so we undo.
2474              
2475              When breakpoints are removed, remove_breakpoints will use
2476              location types we've just set here, the only possible
2477              problem is that memory map has changed during running
2478              program, but it's not going to work anyway with current
2479              gdb.  */
2480           struct mem_region *mr 
2481             = lookup_mem_region (bl->target_info.reqstd_address);
2482           
2483           if (mr)
2484             {
2485               if (automatic_hardware_breakpoints)
2486                 {
2487                   enum bp_loc_type new_type;
2488                   
2489                   if (mr->attrib.mode != MEM_RW)
2490                     new_type = bp_loc_hardware_breakpoint;
2491                   else 
2492                     new_type = bp_loc_software_breakpoint;
2493                   
2494                   if (new_type != bl->loc_type)
2495                     {
2496                       static int said = 0;
2497
2498                       bl->loc_type = new_type;
2499                       if (!said)
2500                         {
2501                           fprintf_filtered (gdb_stdout,
2502                                             _("Note: automatically using "
2503                                               "hardware breakpoints for "
2504                                               "read-only addresses.\n"));
2505                           said = 1;
2506                         }
2507                     }
2508                 }
2509               else if (bl->loc_type == bp_loc_software_breakpoint
2510                        && mr->attrib.mode != MEM_RW)
2511                 {
2512                   fprintf_unfiltered (tmp_error_stream,
2513                                       _("Cannot insert breakpoint %d.\n"
2514                                         "Cannot set software breakpoint "
2515                                         "at read-only address %s\n"),
2516                                       bl->owner->number,
2517                                       paddress (bl->gdbarch, bl->address));
2518                   return 1;
2519                 }
2520             }
2521         }
2522         
2523       /* First check to see if we have to handle an overlay.  */
2524       if (overlay_debugging == ovly_off
2525           || bl->section == NULL
2526           || !(section_is_overlay (bl->section)))
2527         {
2528           /* No overlay handling: just set the breakpoint.  */
2529           try
2530             {
2531               int val;
2532
2533               val = bl->owner->ops->insert_location (bl);
2534               if (val)
2535                 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2536             }
2537           catch (gdb_exception &e)
2538             {
2539               bp_excpt = std::move (e);
2540             }
2541         }
2542       else
2543         {
2544           /* This breakpoint is in an overlay section.
2545              Shall we set a breakpoint at the LMA?  */
2546           if (!overlay_events_enabled)
2547             {
2548               /* Yes -- overlay event support is not active, 
2549                  so we must try to set a breakpoint at the LMA.
2550                  This will not work for a hardware breakpoint.  */
2551               if (bl->loc_type == bp_loc_hardware_breakpoint)
2552                 warning (_("hardware breakpoint %d not supported in overlay!"),
2553                          bl->owner->number);
2554               else
2555                 {
2556                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2557                                                              bl->section);
2558                   /* Set a software (trap) breakpoint at the LMA.  */
2559                   bl->overlay_target_info = bl->target_info;
2560                   bl->overlay_target_info.reqstd_address = addr;
2561
2562                   /* No overlay handling: just set the breakpoint.  */
2563                   try
2564                     {
2565                       int val;
2566
2567                       bl->overlay_target_info.kind
2568                         = breakpoint_kind (bl, &addr);
2569                       bl->overlay_target_info.placed_address = addr;
2570                       val = target_insert_breakpoint (bl->gdbarch,
2571                                                       &bl->overlay_target_info);
2572                       if (val)
2573                         bp_excpt
2574                           = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2575                     }
2576                   catch (gdb_exception &e)
2577                     {
2578                       bp_excpt = std::move (e);
2579                     }
2580
2581                   if (bp_excpt.reason != 0)
2582                     fprintf_unfiltered (tmp_error_stream,
2583                                         "Overlay breakpoint %d "
2584                                         "failed: in ROM?\n",
2585                                         bl->owner->number);
2586                 }
2587             }
2588           /* Shall we set a breakpoint at the VMA? */
2589           if (section_is_mapped (bl->section))
2590             {
2591               /* Yes.  This overlay section is mapped into memory.  */
2592               try
2593                 {
2594                   int val;
2595
2596                   val = bl->owner->ops->insert_location (bl);
2597                   if (val)
2598                     bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2599                 }
2600               catch (gdb_exception &e)
2601                 {
2602                   bp_excpt = std::move (e);
2603                 }
2604             }
2605           else
2606             {
2607               /* No.  This breakpoint will not be inserted.  
2608                  No error, but do not mark the bp as 'inserted'.  */
2609               return 0;
2610             }
2611         }
2612
2613       if (bp_excpt.reason != 0)
2614         {
2615           /* Can't set the breakpoint.  */
2616
2617           /* In some cases, we might not be able to insert a
2618              breakpoint in a shared library that has already been
2619              removed, but we have not yet processed the shlib unload
2620              event.  Unfortunately, some targets that implement
2621              breakpoint insertion themselves can't tell why the
2622              breakpoint insertion failed (e.g., the remote target
2623              doesn't define error codes), so we must treat generic
2624              errors as memory errors.  */
2625           if (bp_excpt.reason == RETURN_ERROR
2626               && (bp_excpt.error == GENERIC_ERROR
2627                   || bp_excpt.error == MEMORY_ERROR)
2628               && bl->loc_type == bp_loc_software_breakpoint
2629               && (solib_name_from_address (bl->pspace, bl->address)
2630                   || shared_objfile_contains_address_p (bl->pspace,
2631                                                         bl->address)))
2632             {
2633               /* See also: disable_breakpoints_in_shlibs.  */
2634               bl->shlib_disabled = 1;
2635               gdb::observers::breakpoint_modified.notify (bl->owner);
2636               if (!*disabled_breaks)
2637                 {
2638                   fprintf_unfiltered (tmp_error_stream, 
2639                                       "Cannot insert breakpoint %d.\n", 
2640                                       bl->owner->number);
2641                   fprintf_unfiltered (tmp_error_stream, 
2642                                       "Temporarily disabling shared "
2643                                       "library breakpoints:\n");
2644                 }
2645               *disabled_breaks = 1;
2646               fprintf_unfiltered (tmp_error_stream,
2647                                   "breakpoint #%d\n", bl->owner->number);
2648               return 0;
2649             }
2650           else
2651             {
2652               if (bl->loc_type == bp_loc_hardware_breakpoint)
2653                 {
2654                   *hw_breakpoint_error = 1;
2655                   *hw_bp_error_explained_already = bp_excpt.message != NULL;
2656                   fprintf_unfiltered (tmp_error_stream,
2657                                       "Cannot insert hardware breakpoint %d%s",
2658                                       bl->owner->number,
2659                                       bp_excpt.message ? ":" : ".\n");
2660                   if (bp_excpt.message != NULL)
2661                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2662                                         bp_excpt.what ());
2663                 }
2664               else
2665                 {
2666                   if (bp_excpt.message == NULL)
2667                     {
2668                       std::string message
2669                         = memory_error_message (TARGET_XFER_E_IO,
2670                                                 bl->gdbarch, bl->address);
2671
2672                       fprintf_unfiltered (tmp_error_stream,
2673                                           "Cannot insert breakpoint %d.\n"
2674                                           "%s\n",
2675                                           bl->owner->number, message.c_str ());
2676                     }
2677                   else
2678                     {
2679                       fprintf_unfiltered (tmp_error_stream,
2680                                           "Cannot insert breakpoint %d: %s\n",
2681                                           bl->owner->number,
2682                                           bp_excpt.what ());
2683                     }
2684                 }
2685               return 1;
2686
2687             }
2688         }
2689       else
2690         bl->inserted = 1;
2691
2692       return 0;
2693     }
2694
2695   else if (bl->loc_type == bp_loc_hardware_watchpoint
2696            /* NOTE drow/2003-09-08: This state only exists for removing
2697               watchpoints.  It's not clear that it's necessary...  */
2698            && bl->owner->disposition != disp_del_at_next_stop)
2699     {
2700       int val;
2701
2702       gdb_assert (bl->owner->ops != NULL
2703                   && bl->owner->ops->insert_location != NULL);
2704
2705       val = bl->owner->ops->insert_location (bl);
2706
2707       /* If trying to set a read-watchpoint, and it turns out it's not
2708          supported, try emulating one with an access watchpoint.  */
2709       if (val == 1 && bl->watchpoint_type == hw_read)
2710         {
2711           struct bp_location *loc, **loc_temp;
2712
2713           /* But don't try to insert it, if there's already another
2714              hw_access location that would be considered a duplicate
2715              of this one.  */
2716           ALL_BP_LOCATIONS (loc, loc_temp)
2717             if (loc != bl
2718                 && loc->watchpoint_type == hw_access
2719                 && watchpoint_locations_match (bl, loc))
2720               {
2721                 bl->duplicate = 1;
2722                 bl->inserted = 1;
2723                 bl->target_info = loc->target_info;
2724                 bl->watchpoint_type = hw_access;
2725                 val = 0;
2726                 break;
2727               }
2728
2729           if (val == 1)
2730             {
2731               bl->watchpoint_type = hw_access;
2732               val = bl->owner->ops->insert_location (bl);
2733
2734               if (val)
2735                 /* Back to the original value.  */
2736                 bl->watchpoint_type = hw_read;
2737             }
2738         }
2739
2740       bl->inserted = (val == 0);
2741     }
2742
2743   else if (bl->owner->type == bp_catchpoint)
2744     {
2745       int val;
2746
2747       gdb_assert (bl->owner->ops != NULL
2748                   && bl->owner->ops->insert_location != NULL);
2749
2750       val = bl->owner->ops->insert_location (bl);
2751       if (val)
2752         {
2753           bl->owner->enable_state = bp_disabled;
2754
2755           if (val == 1)
2756             warning (_("\
2757 Error inserting catchpoint %d: Your system does not support this type\n\
2758 of catchpoint."), bl->owner->number);
2759           else
2760             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2761         }
2762
2763       bl->inserted = (val == 0);
2764
2765       /* We've already printed an error message if there was a problem
2766          inserting this catchpoint, and we've disabled the catchpoint,
2767          so just return success.  */
2768       return 0;
2769     }
2770
2771   return 0;
2772 }
2773
2774 /* This function is called when program space PSPACE is about to be
2775    deleted.  It takes care of updating breakpoints to not reference
2776    PSPACE anymore.  */
2777
2778 void
2779 breakpoint_program_space_exit (struct program_space *pspace)
2780 {
2781   struct breakpoint *b, *b_temp;
2782   struct bp_location *loc, **loc_temp;
2783
2784   /* Remove any breakpoint that was set through this program space.  */
2785   ALL_BREAKPOINTS_SAFE (b, b_temp)
2786     {
2787       if (b->pspace == pspace)
2788         delete_breakpoint (b);
2789     }
2790
2791   /* Breakpoints set through other program spaces could have locations
2792      bound to PSPACE as well.  Remove those.  */
2793   ALL_BP_LOCATIONS (loc, loc_temp)
2794     {
2795       struct bp_location *tmp;
2796
2797       if (loc->pspace == pspace)
2798         {
2799           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2800           if (loc->owner->loc == loc)
2801             loc->owner->loc = loc->next;
2802           else
2803             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2804               if (tmp->next == loc)
2805                 {
2806                   tmp->next = loc->next;
2807                   break;
2808                 }
2809         }
2810     }
2811
2812   /* Now update the global location list to permanently delete the
2813      removed locations above.  */
2814   update_global_location_list (UGLL_DONT_INSERT);
2815 }
2816
2817 /* Make sure all breakpoints are inserted in inferior.
2818    Throws exception on any error.
2819    A breakpoint that is already inserted won't be inserted
2820    again, so calling this function twice is safe.  */
2821 void
2822 insert_breakpoints (void)
2823 {
2824   struct breakpoint *bpt;
2825
2826   ALL_BREAKPOINTS (bpt)
2827     if (is_hardware_watchpoint (bpt))
2828       {
2829         struct watchpoint *w = (struct watchpoint *) bpt;
2830
2831         update_watchpoint (w, 0 /* don't reparse.  */);
2832       }
2833
2834   /* Updating watchpoints creates new locations, so update the global
2835      location list.  Explicitly tell ugll to insert locations and
2836      ignore breakpoints_always_inserted_mode.  */
2837   update_global_location_list (UGLL_INSERT);
2838 }
2839
2840 /* Invoke CALLBACK for each of bp_location.  */
2841
2842 void
2843 iterate_over_bp_locations (walk_bp_location_callback callback)
2844 {
2845   struct bp_location *loc, **loc_tmp;
2846
2847   ALL_BP_LOCATIONS (loc, loc_tmp)
2848     {
2849       callback (loc, NULL);
2850     }
2851 }
2852
2853 /* This is used when we need to synch breakpoint conditions between GDB and the
2854    target.  It is the case with deleting and disabling of breakpoints when using
2855    always-inserted mode.  */
2856
2857 static void
2858 update_inserted_breakpoint_locations (void)
2859 {
2860   struct bp_location *bl, **blp_tmp;
2861   int error_flag = 0;
2862   int val = 0;
2863   int disabled_breaks = 0;
2864   int hw_breakpoint_error = 0;
2865   int hw_bp_details_reported = 0;
2866
2867   string_file tmp_error_stream;
2868
2869   /* Explicitly mark the warning -- this will only be printed if
2870      there was an error.  */
2871   tmp_error_stream.puts ("Warning:\n");
2872
2873   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2874
2875   ALL_BP_LOCATIONS (bl, blp_tmp)
2876     {
2877       /* We only want to update software breakpoints and hardware
2878          breakpoints.  */
2879       if (!is_breakpoint (bl->owner))
2880         continue;
2881
2882       /* We only want to update locations that are already inserted
2883          and need updating.  This is to avoid unwanted insertion during
2884          deletion of breakpoints.  */
2885       if (!bl->inserted || !bl->needs_update)
2886         continue;
2887
2888       switch_to_program_space_and_thread (bl->pspace);
2889
2890       /* For targets that support global breakpoints, there's no need
2891          to select an inferior to insert breakpoint to.  In fact, even
2892          if we aren't attached to any process yet, we should still
2893          insert breakpoints.  */
2894       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2895           && inferior_ptid == null_ptid)
2896         continue;
2897
2898       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2899                                     &hw_breakpoint_error, &hw_bp_details_reported);
2900       if (val)
2901         error_flag = val;
2902     }
2903
2904   if (error_flag)
2905     {
2906       target_terminal::ours_for_output ();
2907       error_stream (tmp_error_stream);
2908     }
2909 }
2910
2911 /* Used when starting or continuing the program.  */
2912
2913 static void
2914 insert_breakpoint_locations (void)
2915 {
2916   struct breakpoint *bpt;
2917   struct bp_location *bl, **blp_tmp;
2918   int error_flag = 0;
2919   int val = 0;
2920   int disabled_breaks = 0;
2921   int hw_breakpoint_error = 0;
2922   int hw_bp_error_explained_already = 0;
2923
2924   string_file tmp_error_stream;
2925
2926   /* Explicitly mark the warning -- this will only be printed if
2927      there was an error.  */
2928   tmp_error_stream.puts ("Warning:\n");
2929
2930   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2931
2932   ALL_BP_LOCATIONS (bl, blp_tmp)
2933     {
2934       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2935         continue;
2936
2937       /* There is no point inserting thread-specific breakpoints if
2938          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2939          has BL->OWNER always non-NULL.  */
2940       if (bl->owner->thread != -1
2941           && !valid_global_thread_id (bl->owner->thread))
2942         continue;
2943
2944       switch_to_program_space_and_thread (bl->pspace);
2945
2946       /* For targets that support global breakpoints, there's no need
2947          to select an inferior to insert breakpoint to.  In fact, even
2948          if we aren't attached to any process yet, we should still
2949          insert breakpoints.  */
2950       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2951           && inferior_ptid == null_ptid)
2952         continue;
2953
2954       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2955                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2956       if (val)
2957         error_flag = val;
2958     }
2959
2960   /* If we failed to insert all locations of a watchpoint, remove
2961      them, as half-inserted watchpoint is of limited use.  */
2962   ALL_BREAKPOINTS (bpt)  
2963     {
2964       int some_failed = 0;
2965       struct bp_location *loc;
2966
2967       if (!is_hardware_watchpoint (bpt))
2968         continue;
2969
2970       if (!breakpoint_enabled (bpt))
2971         continue;
2972
2973       if (bpt->disposition == disp_del_at_next_stop)
2974         continue;
2975       
2976       for (loc = bpt->loc; loc; loc = loc->next)
2977         if (!loc->inserted && should_be_inserted (loc))
2978           {
2979             some_failed = 1;
2980             break;
2981           }
2982       if (some_failed)
2983         {
2984           for (loc = bpt->loc; loc; loc = loc->next)
2985             if (loc->inserted)
2986               remove_breakpoint (loc);
2987
2988           hw_breakpoint_error = 1;
2989           tmp_error_stream.printf ("Could not insert "
2990                                    "hardware watchpoint %d.\n",
2991                                    bpt->number);
2992           error_flag = -1;
2993         }
2994     }
2995
2996   if (error_flag)
2997     {
2998       /* If a hardware breakpoint or watchpoint was inserted, add a
2999          message about possibly exhausted resources.  */
3000       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3001         {
3002           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3003 You may have requested too many hardware breakpoints/watchpoints.\n");
3004         }
3005       target_terminal::ours_for_output ();
3006       error_stream (tmp_error_stream);
3007     }
3008 }
3009
3010 /* Used when the program stops.
3011    Returns zero if successful, or non-zero if there was a problem
3012    removing a breakpoint location.  */
3013
3014 int
3015 remove_breakpoints (void)
3016 {
3017   struct bp_location *bl, **blp_tmp;
3018   int val = 0;
3019
3020   ALL_BP_LOCATIONS (bl, blp_tmp)
3021   {
3022     if (bl->inserted && !is_tracepoint (bl->owner))
3023       val |= remove_breakpoint (bl);
3024   }
3025   return val;
3026 }
3027
3028 /* When a thread exits, remove breakpoints that are related to
3029    that thread.  */
3030
3031 static void
3032 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3033 {
3034   struct breakpoint *b, *b_tmp;
3035
3036   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3037     {
3038       if (b->thread == tp->global_num && user_breakpoint_p (b))
3039         {
3040           b->disposition = disp_del_at_next_stop;
3041
3042           printf_filtered (_("\
3043 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3044                            b->number, print_thread_id (tp));
3045
3046           /* Hide it from the user.  */
3047           b->number = 0;
3048        }
3049     }
3050 }
3051
3052 /* See breakpoint.h.  */
3053
3054 void
3055 remove_breakpoints_inf (inferior *inf)
3056 {
3057   struct bp_location *bl, **blp_tmp;
3058   int val;
3059
3060   ALL_BP_LOCATIONS (bl, blp_tmp)
3061   {
3062     if (bl->pspace != inf->pspace)
3063       continue;
3064
3065     if (bl->inserted && !bl->target_info.persist)
3066       {
3067         val = remove_breakpoint (bl);
3068         if (val != 0)
3069           return;
3070       }
3071   }
3072 }
3073
3074 static int internal_breakpoint_number = -1;
3075
3076 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3077    If INTERNAL is non-zero, the breakpoint number will be populated
3078    from internal_breakpoint_number and that variable decremented.
3079    Otherwise the breakpoint number will be populated from
3080    breakpoint_count and that value incremented.  Internal breakpoints
3081    do not set the internal var bpnum.  */
3082 static void
3083 set_breakpoint_number (int internal, struct breakpoint *b)
3084 {
3085   if (internal)
3086     b->number = internal_breakpoint_number--;
3087   else
3088     {
3089       set_breakpoint_count (breakpoint_count + 1);
3090       b->number = breakpoint_count;
3091     }
3092 }
3093
3094 static struct breakpoint *
3095 create_internal_breakpoint (struct gdbarch *gdbarch,
3096                             CORE_ADDR address, enum bptype type,
3097                             const struct breakpoint_ops *ops)
3098 {
3099   symtab_and_line sal;
3100   sal.pc = address;
3101   sal.section = find_pc_overlay (sal.pc);
3102   sal.pspace = current_program_space;
3103
3104   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3105   b->number = internal_breakpoint_number--;
3106   b->disposition = disp_donttouch;
3107
3108   return b;
3109 }
3110
3111 static const char *const longjmp_names[] =
3112   {
3113     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3114   };
3115 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3116
3117 /* Per-objfile data private to breakpoint.c.  */
3118 struct breakpoint_objfile_data
3119 {
3120   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3121   struct bound_minimal_symbol overlay_msym {};
3122
3123   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3124   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3125
3126   /* True if we have looked for longjmp probes.  */
3127   int longjmp_searched = 0;
3128
3129   /* SystemTap probe points for longjmp (if any).  These are non-owning
3130      references.  */
3131   std::vector<probe *> longjmp_probes;
3132
3133   /* Minimal symbol for "std::terminate()" (if any).  */
3134   struct bound_minimal_symbol terminate_msym {};
3135
3136   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3137   struct bound_minimal_symbol exception_msym {};
3138
3139   /* True if we have looked for exception probes.  */
3140   int exception_searched = 0;
3141
3142   /* SystemTap probe points for unwinding (if any).  These are non-owning
3143      references.  */
3144   std::vector<probe *> exception_probes;
3145 };
3146
3147 static const struct objfile_key<breakpoint_objfile_data>
3148   breakpoint_objfile_key;
3149
3150 /* Minimal symbol not found sentinel.  */
3151 static struct minimal_symbol msym_not_found;
3152
3153 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3154
3155 static int
3156 msym_not_found_p (const struct minimal_symbol *msym)
3157 {
3158   return msym == &msym_not_found;
3159 }
3160
3161 /* Return per-objfile data needed by breakpoint.c.
3162    Allocate the data if necessary.  */
3163
3164 static struct breakpoint_objfile_data *
3165 get_breakpoint_objfile_data (struct objfile *objfile)
3166 {
3167   struct breakpoint_objfile_data *bp_objfile_data;
3168
3169   bp_objfile_data = breakpoint_objfile_key.get (objfile);
3170   if (bp_objfile_data == NULL)
3171     bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3172   return bp_objfile_data;
3173 }
3174
3175 static void
3176 create_overlay_event_breakpoint (void)
3177 {
3178   const char *const func_name = "_ovly_debug_event";
3179
3180   for (objfile *objfile : current_program_space->objfiles ())
3181     {
3182       struct breakpoint *b;
3183       struct breakpoint_objfile_data *bp_objfile_data;
3184       CORE_ADDR addr;
3185       struct explicit_location explicit_loc;
3186
3187       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3188
3189       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3190         continue;
3191
3192       if (bp_objfile_data->overlay_msym.minsym == NULL)
3193         {
3194           struct bound_minimal_symbol m;
3195
3196           m = lookup_minimal_symbol_text (func_name, objfile);
3197           if (m.minsym == NULL)
3198             {
3199               /* Avoid future lookups in this objfile.  */
3200               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3201               continue;
3202             }
3203           bp_objfile_data->overlay_msym = m;
3204         }
3205
3206       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3207       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3208                                       bp_overlay_event,
3209                                       &internal_breakpoint_ops);
3210       initialize_explicit_location (&explicit_loc);
3211       explicit_loc.function_name = ASTRDUP (func_name);
3212       b->location = new_explicit_location (&explicit_loc);
3213
3214       if (overlay_debugging == ovly_auto)
3215         {
3216           b->enable_state = bp_enabled;
3217           overlay_events_enabled = 1;
3218         }
3219       else
3220        {
3221          b->enable_state = bp_disabled;
3222          overlay_events_enabled = 0;
3223        }
3224     }
3225 }
3226
3227 static void
3228 create_longjmp_master_breakpoint (void)
3229 {
3230   struct program_space *pspace;
3231
3232   scoped_restore_current_program_space restore_pspace;
3233
3234   ALL_PSPACES (pspace)
3235   {
3236     set_current_program_space (pspace);
3237
3238     for (objfile *objfile : current_program_space->objfiles ())
3239       {
3240         int i;
3241         struct gdbarch *gdbarch;
3242         struct breakpoint_objfile_data *bp_objfile_data;
3243
3244         gdbarch = get_objfile_arch (objfile);
3245
3246         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3247
3248         if (!bp_objfile_data->longjmp_searched)
3249           {
3250             std::vector<probe *> ret
3251               = find_probes_in_objfile (objfile, "libc", "longjmp");
3252
3253             if (!ret.empty ())
3254               {
3255                 /* We are only interested in checking one element.  */
3256                 probe *p = ret[0];
3257
3258                 if (!p->can_evaluate_arguments ())
3259                   {
3260                     /* We cannot use the probe interface here, because it does
3261                        not know how to evaluate arguments.  */
3262                     ret.clear ();
3263                   }
3264               }
3265             bp_objfile_data->longjmp_probes = ret;
3266             bp_objfile_data->longjmp_searched = 1;
3267           }
3268
3269         if (!bp_objfile_data->longjmp_probes.empty ())
3270           {
3271             for (probe *p : bp_objfile_data->longjmp_probes)
3272               {
3273                 struct breakpoint *b;
3274
3275                 b = create_internal_breakpoint (gdbarch,
3276                                                 p->get_relocated_address (objfile),
3277                                                 bp_longjmp_master,
3278                                                 &internal_breakpoint_ops);
3279                 b->location = new_probe_location ("-probe-stap libc:longjmp");
3280                 b->enable_state = bp_disabled;
3281               }
3282
3283             continue;
3284           }
3285
3286         if (!gdbarch_get_longjmp_target_p (gdbarch))
3287           continue;
3288
3289         for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3290           {
3291             struct breakpoint *b;
3292             const char *func_name;
3293             CORE_ADDR addr;
3294             struct explicit_location explicit_loc;
3295
3296             if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3297               continue;
3298
3299             func_name = longjmp_names[i];
3300             if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3301               {
3302                 struct bound_minimal_symbol m;
3303
3304                 m = lookup_minimal_symbol_text (func_name, objfile);
3305                 if (m.minsym == NULL)
3306                   {
3307                     /* Prevent future lookups in this objfile.  */
3308                     bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3309                     continue;
3310                   }
3311                 bp_objfile_data->longjmp_msym[i] = m;
3312               }
3313
3314             addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3315             b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3316                                             &internal_breakpoint_ops);
3317             initialize_explicit_location (&explicit_loc);
3318             explicit_loc.function_name = ASTRDUP (func_name);
3319             b->location = new_explicit_location (&explicit_loc);
3320             b->enable_state = bp_disabled;
3321           }
3322       }
3323   }
3324 }
3325
3326 /* Create a master std::terminate breakpoint.  */
3327 static void
3328 create_std_terminate_master_breakpoint (void)
3329 {
3330   struct program_space *pspace;
3331   const char *const func_name = "std::terminate()";
3332
3333   scoped_restore_current_program_space restore_pspace;
3334
3335   ALL_PSPACES (pspace)
3336   {
3337     CORE_ADDR addr;
3338
3339     set_current_program_space (pspace);
3340
3341     for (objfile *objfile : current_program_space->objfiles ())
3342       {
3343         struct breakpoint *b;
3344         struct breakpoint_objfile_data *bp_objfile_data;
3345         struct explicit_location explicit_loc;
3346
3347         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3348
3349         if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3350           continue;
3351
3352         if (bp_objfile_data->terminate_msym.minsym == NULL)
3353           {
3354             struct bound_minimal_symbol m;
3355
3356             m = lookup_minimal_symbol (func_name, NULL, objfile);
3357             if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3358                                      && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3359               {
3360                 /* Prevent future lookups in this objfile.  */
3361                 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3362                 continue;
3363               }
3364             bp_objfile_data->terminate_msym = m;
3365           }
3366
3367         addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3368         b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3369                                         bp_std_terminate_master,
3370                                         &internal_breakpoint_ops);
3371         initialize_explicit_location (&explicit_loc);
3372         explicit_loc.function_name = ASTRDUP (func_name);
3373         b->location = new_explicit_location (&explicit_loc);
3374         b->enable_state = bp_disabled;
3375       }
3376   }
3377 }
3378
3379 /* Install a master breakpoint on the unwinder's debug hook.  */
3380
3381 static void
3382 create_exception_master_breakpoint (void)
3383 {
3384   const char *const func_name = "_Unwind_DebugHook";
3385
3386   for (objfile *objfile : current_program_space->objfiles ())
3387     {
3388       struct breakpoint *b;
3389       struct gdbarch *gdbarch;
3390       struct breakpoint_objfile_data *bp_objfile_data;
3391       CORE_ADDR addr;
3392       struct explicit_location explicit_loc;
3393
3394       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3395
3396       /* We prefer the SystemTap probe point if it exists.  */
3397       if (!bp_objfile_data->exception_searched)
3398         {
3399           std::vector<probe *> ret
3400             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3401
3402           if (!ret.empty ())
3403             {
3404               /* We are only interested in checking one element.  */
3405               probe *p = ret[0];
3406
3407               if (!p->can_evaluate_arguments ())
3408                 {
3409                   /* We cannot use the probe interface here, because it does
3410                      not know how to evaluate arguments.  */
3411                   ret.clear ();
3412                 }
3413             }
3414           bp_objfile_data->exception_probes = ret;
3415           bp_objfile_data->exception_searched = 1;
3416         }
3417
3418       if (!bp_objfile_data->exception_probes.empty ())
3419         {
3420           gdbarch = get_objfile_arch (objfile);
3421
3422           for (probe *p : bp_objfile_data->exception_probes)
3423             {
3424               b = create_internal_breakpoint (gdbarch,
3425                                               p->get_relocated_address (objfile),
3426                                               bp_exception_master,
3427                                               &internal_breakpoint_ops);
3428               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3429               b->enable_state = bp_disabled;
3430             }
3431
3432           continue;
3433         }
3434
3435       /* Otherwise, try the hook function.  */
3436
3437       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3438         continue;
3439
3440       gdbarch = get_objfile_arch (objfile);
3441
3442       if (bp_objfile_data->exception_msym.minsym == NULL)
3443         {
3444           struct bound_minimal_symbol debug_hook;
3445
3446           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3447           if (debug_hook.minsym == NULL)
3448             {
3449               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3450               continue;
3451             }
3452
3453           bp_objfile_data->exception_msym = debug_hook;
3454         }
3455
3456       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3457       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3458                                                  current_top_target ());
3459       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3460                                       &internal_breakpoint_ops);
3461       initialize_explicit_location (&explicit_loc);
3462       explicit_loc.function_name = ASTRDUP (func_name);
3463       b->location = new_explicit_location (&explicit_loc);
3464       b->enable_state = bp_disabled;
3465     }
3466 }
3467
3468 /* Does B have a location spec?  */
3469
3470 static int
3471 breakpoint_event_location_empty_p (const struct breakpoint *b)
3472 {
3473   return b->location != NULL && event_location_empty_p (b->location.get ());
3474 }
3475
3476 void
3477 update_breakpoints_after_exec (void)
3478 {
3479   struct breakpoint *b, *b_tmp;
3480   struct bp_location *bploc, **bplocp_tmp;
3481
3482   /* We're about to delete breakpoints from GDB's lists.  If the
3483      INSERTED flag is true, GDB will try to lift the breakpoints by
3484      writing the breakpoints' "shadow contents" back into memory.  The
3485      "shadow contents" are NOT valid after an exec, so GDB should not
3486      do that.  Instead, the target is responsible from marking
3487      breakpoints out as soon as it detects an exec.  We don't do that
3488      here instead, because there may be other attempts to delete
3489      breakpoints after detecting an exec and before reaching here.  */
3490   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3491     if (bploc->pspace == current_program_space)
3492       gdb_assert (!bploc->inserted);
3493
3494   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3495   {
3496     if (b->pspace != current_program_space)
3497       continue;
3498
3499     /* Solib breakpoints must be explicitly reset after an exec().  */
3500     if (b->type == bp_shlib_event)
3501       {
3502         delete_breakpoint (b);
3503         continue;
3504       }
3505
3506     /* JIT breakpoints must be explicitly reset after an exec().  */
3507     if (b->type == bp_jit_event)
3508       {
3509         delete_breakpoint (b);
3510         continue;
3511       }
3512
3513     /* Thread event breakpoints must be set anew after an exec(),
3514        as must overlay event and longjmp master breakpoints.  */
3515     if (b->type == bp_thread_event || b->type == bp_overlay_event
3516         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3517         || b->type == bp_exception_master)
3518       {
3519         delete_breakpoint (b);
3520         continue;
3521       }
3522
3523     /* Step-resume breakpoints are meaningless after an exec().  */
3524     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3525       {
3526         delete_breakpoint (b);
3527         continue;
3528       }
3529
3530     /* Just like single-step breakpoints.  */
3531     if (b->type == bp_single_step)
3532       {
3533         delete_breakpoint (b);
3534         continue;
3535       }
3536
3537     /* Longjmp and longjmp-resume breakpoints are also meaningless
3538        after an exec.  */
3539     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3540         || b->type == bp_longjmp_call_dummy
3541         || b->type == bp_exception || b->type == bp_exception_resume)
3542       {
3543         delete_breakpoint (b);
3544         continue;
3545       }
3546
3547     if (b->type == bp_catchpoint)
3548       {
3549         /* For now, none of the bp_catchpoint breakpoints need to
3550            do anything at this point.  In the future, if some of
3551            the catchpoints need to something, we will need to add
3552            a new method, and call this method from here.  */
3553         continue;
3554       }
3555
3556     /* bp_finish is a special case.  The only way we ought to be able
3557        to see one of these when an exec() has happened, is if the user
3558        caught a vfork, and then said "finish".  Ordinarily a finish just
3559        carries them to the call-site of the current callee, by setting
3560        a temporary bp there and resuming.  But in this case, the finish
3561        will carry them entirely through the vfork & exec.
3562
3563        We don't want to allow a bp_finish to remain inserted now.  But
3564        we can't safely delete it, 'cause finish_command has a handle to
3565        the bp on a bpstat, and will later want to delete it.  There's a
3566        chance (and I've seen it happen) that if we delete the bp_finish
3567        here, that its storage will get reused by the time finish_command
3568        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3569        We really must allow finish_command to delete a bp_finish.
3570
3571        In the absence of a general solution for the "how do we know
3572        it's safe to delete something others may have handles to?"
3573        problem, what we'll do here is just uninsert the bp_finish, and
3574        let finish_command delete it.
3575
3576        (We know the bp_finish is "doomed" in the sense that it's
3577        momentary, and will be deleted as soon as finish_command sees
3578        the inferior stopped.  So it doesn't matter that the bp's
3579        address is probably bogus in the new a.out, unlike e.g., the
3580        solib breakpoints.)  */
3581
3582     if (b->type == bp_finish)
3583       {
3584         continue;
3585       }
3586
3587     /* Without a symbolic address, we have little hope of the
3588        pre-exec() address meaning the same thing in the post-exec()
3589        a.out.  */
3590     if (breakpoint_event_location_empty_p (b))
3591       {
3592         delete_breakpoint (b);
3593         continue;
3594       }
3595   }
3596 }
3597
3598 int
3599 detach_breakpoints (ptid_t ptid)
3600 {
3601   struct bp_location *bl, **blp_tmp;
3602   int val = 0;
3603   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3604   struct inferior *inf = current_inferior ();
3605
3606   if (ptid.pid () == inferior_ptid.pid ())
3607     error (_("Cannot detach breakpoints of inferior_ptid"));
3608
3609   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3610   inferior_ptid = ptid;
3611   ALL_BP_LOCATIONS (bl, blp_tmp)
3612   {
3613     if (bl->pspace != inf->pspace)
3614       continue;
3615
3616     /* This function must physically remove breakpoints locations
3617        from the specified ptid, without modifying the breakpoint
3618        package's state.  Locations of type bp_loc_other are only
3619        maintained at GDB side.  So, there is no need to remove
3620        these bp_loc_other locations.  Moreover, removing these
3621        would modify the breakpoint package's state.  */
3622     if (bl->loc_type == bp_loc_other)
3623       continue;
3624
3625     if (bl->inserted)
3626       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3627   }
3628
3629   return val;
3630 }
3631
3632 /* Remove the breakpoint location BL from the current address space.
3633    Note that this is used to detach breakpoints from a child fork.
3634    When we get here, the child isn't in the inferior list, and neither
3635    do we have objects to represent its address space --- we should
3636    *not* look at bl->pspace->aspace here.  */
3637
3638 static int
3639 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3640 {
3641   int val;
3642
3643   /* BL is never in moribund_locations by our callers.  */
3644   gdb_assert (bl->owner != NULL);
3645
3646   /* The type of none suggests that owner is actually deleted.
3647      This should not ever happen.  */
3648   gdb_assert (bl->owner->type != bp_none);
3649
3650   if (bl->loc_type == bp_loc_software_breakpoint
3651       || bl->loc_type == bp_loc_hardware_breakpoint)
3652     {
3653       /* "Normal" instruction breakpoint: either the standard
3654          trap-instruction bp (bp_breakpoint), or a
3655          bp_hardware_breakpoint.  */
3656
3657       /* First check to see if we have to handle an overlay.  */
3658       if (overlay_debugging == ovly_off
3659           || bl->section == NULL
3660           || !(section_is_overlay (bl->section)))
3661         {
3662           /* No overlay handling: just remove the breakpoint.  */
3663
3664           /* If we're trying to uninsert a memory breakpoint that we
3665              know is set in a dynamic object that is marked
3666              shlib_disabled, then either the dynamic object was
3667              removed with "remove-symbol-file" or with
3668              "nosharedlibrary".  In the former case, we don't know
3669              whether another dynamic object might have loaded over the
3670              breakpoint's address -- the user might well let us know
3671              about it next with add-symbol-file (the whole point of
3672              add-symbol-file is letting the user manually maintain a
3673              list of dynamically loaded objects).  If we have the
3674              breakpoint's shadow memory, that is, this is a software
3675              breakpoint managed by GDB, check whether the breakpoint
3676              is still inserted in memory, to avoid overwriting wrong
3677              code with stale saved shadow contents.  Note that HW
3678              breakpoints don't have shadow memory, as they're
3679              implemented using a mechanism that is not dependent on
3680              being able to modify the target's memory, and as such
3681              they should always be removed.  */
3682           if (bl->shlib_disabled
3683               && bl->target_info.shadow_len != 0
3684               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3685             val = 0;
3686           else
3687             val = bl->owner->ops->remove_location (bl, reason);
3688         }
3689       else
3690         {
3691           /* This breakpoint is in an overlay section.
3692              Did we set a breakpoint at the LMA?  */
3693           if (!overlay_events_enabled)
3694               {
3695                 /* Yes -- overlay event support is not active, so we
3696                    should have set a breakpoint at the LMA.  Remove it.  
3697                 */
3698                 /* Ignore any failures: if the LMA is in ROM, we will
3699                    have already warned when we failed to insert it.  */
3700                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3701                   target_remove_hw_breakpoint (bl->gdbarch,
3702                                                &bl->overlay_target_info);
3703                 else
3704                   target_remove_breakpoint (bl->gdbarch,
3705                                             &bl->overlay_target_info,
3706                                             reason);
3707               }
3708           /* Did we set a breakpoint at the VMA? 
3709              If so, we will have marked the breakpoint 'inserted'.  */
3710           if (bl->inserted)
3711             {
3712               /* Yes -- remove it.  Previously we did not bother to
3713                  remove the breakpoint if the section had been
3714                  unmapped, but let's not rely on that being safe.  We
3715                  don't know what the overlay manager might do.  */
3716
3717               /* However, we should remove *software* breakpoints only
3718                  if the section is still mapped, or else we overwrite
3719                  wrong code with the saved shadow contents.  */
3720               if (bl->loc_type == bp_loc_hardware_breakpoint
3721                   || section_is_mapped (bl->section))
3722                 val = bl->owner->ops->remove_location (bl, reason);
3723               else
3724                 val = 0;
3725             }
3726           else
3727             {
3728               /* No -- not inserted, so no need to remove.  No error.  */
3729               val = 0;
3730             }
3731         }
3732
3733       /* In some cases, we might not be able to remove a breakpoint in
3734          a shared library that has already been removed, but we have
3735          not yet processed the shlib unload event.  Similarly for an
3736          unloaded add-symbol-file object - the user might not yet have
3737          had the chance to remove-symbol-file it.  shlib_disabled will
3738          be set if the library/object has already been removed, but
3739          the breakpoint hasn't been uninserted yet, e.g., after
3740          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3741          always-inserted mode.  */
3742       if (val
3743           && (bl->loc_type == bp_loc_software_breakpoint
3744               && (bl->shlib_disabled
3745                   || solib_name_from_address (bl->pspace, bl->address)
3746                   || shared_objfile_contains_address_p (bl->pspace,
3747                                                         bl->address))))
3748         val = 0;
3749
3750       if (val)
3751         return val;
3752       bl->inserted = (reason == DETACH_BREAKPOINT);
3753     }
3754   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3755     {
3756       gdb_assert (bl->owner->ops != NULL
3757                   && bl->owner->ops->remove_location != NULL);
3758
3759       bl->inserted = (reason == DETACH_BREAKPOINT);
3760       bl->owner->ops->remove_location (bl, reason);
3761
3762       /* Failure to remove any of the hardware watchpoints comes here.  */
3763       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3764         warning (_("Could not remove hardware watchpoint %d."),
3765                  bl->owner->number);
3766     }
3767   else if (bl->owner->type == bp_catchpoint
3768            && breakpoint_enabled (bl->owner)
3769            && !bl->duplicate)
3770     {
3771       gdb_assert (bl->owner->ops != NULL
3772                   && bl->owner->ops->remove_location != NULL);
3773
3774       val = bl->owner->ops->remove_location (bl, reason);
3775       if (val)
3776         return val;
3777
3778       bl->inserted = (reason == DETACH_BREAKPOINT);
3779     }
3780
3781   return 0;
3782 }
3783
3784 static int
3785 remove_breakpoint (struct bp_location *bl)
3786 {
3787   /* BL is never in moribund_locations by our callers.  */
3788   gdb_assert (bl->owner != NULL);
3789
3790   /* The type of none suggests that owner is actually deleted.
3791      This should not ever happen.  */
3792   gdb_assert (bl->owner->type != bp_none);
3793
3794   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3795
3796   switch_to_program_space_and_thread (bl->pspace);
3797
3798   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3799 }
3800
3801 /* Clear the "inserted" flag in all breakpoints.  */
3802
3803 void
3804 mark_breakpoints_out (void)
3805 {
3806   struct bp_location *bl, **blp_tmp;
3807
3808   ALL_BP_LOCATIONS (bl, blp_tmp)
3809     if (bl->pspace == current_program_space)
3810       bl->inserted = 0;
3811 }
3812
3813 /* Clear the "inserted" flag in all breakpoints and delete any
3814    breakpoints which should go away between runs of the program.
3815
3816    Plus other such housekeeping that has to be done for breakpoints
3817    between runs.
3818
3819    Note: this function gets called at the end of a run (by
3820    generic_mourn_inferior) and when a run begins (by
3821    init_wait_for_inferior).  */
3822
3823
3824
3825 void
3826 breakpoint_init_inferior (enum inf_context context)
3827 {
3828   struct breakpoint *b, *b_tmp;
3829   struct program_space *pspace = current_program_space;
3830
3831   /* If breakpoint locations are shared across processes, then there's
3832      nothing to do.  */
3833   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3834     return;
3835
3836   mark_breakpoints_out ();
3837
3838   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3839   {
3840     if (b->loc && b->loc->pspace != pspace)
3841       continue;
3842
3843     switch (b->type)
3844       {
3845       case bp_call_dummy:
3846       case bp_longjmp_call_dummy:
3847
3848         /* If the call dummy breakpoint is at the entry point it will
3849            cause problems when the inferior is rerun, so we better get
3850            rid of it.  */
3851
3852       case bp_watchpoint_scope:
3853
3854         /* Also get rid of scope breakpoints.  */
3855
3856       case bp_shlib_event:
3857
3858         /* Also remove solib event breakpoints.  Their addresses may
3859            have changed since the last time we ran the program.
3860            Actually we may now be debugging against different target;
3861            and so the solib backend that installed this breakpoint may
3862            not be used in by the target.  E.g.,
3863
3864            (gdb) file prog-linux
3865            (gdb) run               # native linux target
3866            ...
3867            (gdb) kill
3868            (gdb) file prog-win.exe
3869            (gdb) tar rem :9999     # remote Windows gdbserver.
3870         */
3871
3872       case bp_step_resume:
3873
3874         /* Also remove step-resume breakpoints.  */
3875
3876       case bp_single_step:
3877
3878         /* Also remove single-step breakpoints.  */
3879
3880         delete_breakpoint (b);
3881         break;
3882
3883       case bp_watchpoint:
3884       case bp_hardware_watchpoint:
3885       case bp_read_watchpoint:
3886       case bp_access_watchpoint:
3887         {
3888           struct watchpoint *w = (struct watchpoint *) b;
3889
3890           /* Likewise for watchpoints on local expressions.  */
3891           if (w->exp_valid_block != NULL)
3892             delete_breakpoint (b);
3893           else
3894             {
3895               /* Get rid of existing locations, which are no longer
3896                  valid.  New ones will be created in
3897                  update_watchpoint, when the inferior is restarted.
3898                  The next update_global_location_list call will
3899                  garbage collect them.  */
3900               b->loc = NULL;
3901
3902               if (context == inf_starting)
3903                 {
3904                   /* Reset val field to force reread of starting value in
3905                      insert_breakpoints.  */
3906                   w->val.reset (nullptr);
3907                   w->val_valid = 0;
3908                 }
3909             }
3910         }
3911         break;
3912       default:
3913         break;
3914       }
3915   }
3916
3917   /* Get rid of the moribund locations.  */
3918   for (bp_location *bl : moribund_locations)
3919     decref_bp_location (&bl);
3920   moribund_locations.clear ();
3921 }
3922
3923 /* These functions concern about actual breakpoints inserted in the
3924    target --- to e.g. check if we need to do decr_pc adjustment or if
3925    we need to hop over the bkpt --- so we check for address space
3926    match, not program space.  */
3927
3928 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3929    exists at PC.  It returns ordinary_breakpoint_here if it's an
3930    ordinary breakpoint, or permanent_breakpoint_here if it's a
3931    permanent breakpoint.
3932    - When continuing from a location with an ordinary breakpoint, we
3933      actually single step once before calling insert_breakpoints.
3934    - When continuing from a location with a permanent breakpoint, we
3935      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3936      the target, to advance the PC past the breakpoint.  */
3937
3938 enum breakpoint_here
3939 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3940 {
3941   struct bp_location *bl, **blp_tmp;
3942   int any_breakpoint_here = 0;
3943
3944   ALL_BP_LOCATIONS (bl, blp_tmp)
3945     {
3946       if (bl->loc_type != bp_loc_software_breakpoint
3947           && bl->loc_type != bp_loc_hardware_breakpoint)
3948         continue;
3949
3950       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3951       if ((breakpoint_enabled (bl->owner)
3952            || bl->permanent)
3953           && breakpoint_location_address_match (bl, aspace, pc))
3954         {
3955           if (overlay_debugging 
3956               && section_is_overlay (bl->section)
3957               && !section_is_mapped (bl->section))
3958             continue;           /* unmapped overlay -- can't be a match */
3959           else if (bl->permanent)
3960             return permanent_breakpoint_here;
3961           else
3962             any_breakpoint_here = 1;
3963         }
3964     }
3965
3966   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3967 }
3968
3969 /* See breakpoint.h.  */
3970
3971 int
3972 breakpoint_in_range_p (const address_space *aspace,
3973                        CORE_ADDR addr, ULONGEST len)
3974 {
3975   struct bp_location *bl, **blp_tmp;
3976
3977   ALL_BP_LOCATIONS (bl, blp_tmp)
3978     {
3979       if (bl->loc_type != bp_loc_software_breakpoint
3980           && bl->loc_type != bp_loc_hardware_breakpoint)
3981         continue;
3982
3983       if ((breakpoint_enabled (bl->owner)
3984            || bl->permanent)
3985           && breakpoint_location_address_range_overlap (bl, aspace,
3986                                                         addr, len))
3987         {
3988           if (overlay_debugging
3989               && section_is_overlay (bl->section)
3990               && !section_is_mapped (bl->section))
3991             {
3992               /* Unmapped overlay -- can't be a match.  */
3993               continue;
3994             }
3995
3996           return 1;
3997         }
3998     }
3999
4000   return 0;
4001 }
4002
4003 /* Return true if there's a moribund breakpoint at PC.  */
4004
4005 int
4006 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4007 {
4008   for (bp_location *loc : moribund_locations)
4009     if (breakpoint_location_address_match (loc, aspace, pc))
4010       return 1;
4011
4012   return 0;
4013 }
4014
4015 /* Returns non-zero iff BL is inserted at PC, in address space
4016    ASPACE.  */
4017
4018 static int
4019 bp_location_inserted_here_p (struct bp_location *bl,
4020                              const address_space *aspace, CORE_ADDR pc)
4021 {
4022   if (bl->inserted
4023       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4024                                    aspace, pc))
4025     {
4026       if (overlay_debugging
4027           && section_is_overlay (bl->section)
4028           && !section_is_mapped (bl->section))
4029         return 0;               /* unmapped overlay -- can't be a match */
4030       else
4031         return 1;
4032     }
4033   return 0;
4034 }
4035
4036 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4037
4038 int
4039 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4040 {
4041   struct bp_location **blp, **blp_tmp = NULL;
4042
4043   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4044     {
4045       struct bp_location *bl = *blp;
4046
4047       if (bl->loc_type != bp_loc_software_breakpoint
4048           && bl->loc_type != bp_loc_hardware_breakpoint)
4049         continue;
4050
4051       if (bp_location_inserted_here_p (bl, aspace, pc))
4052         return 1;
4053     }
4054   return 0;
4055 }
4056
4057 /* This function returns non-zero iff there is a software breakpoint
4058    inserted at PC.  */
4059
4060 int
4061 software_breakpoint_inserted_here_p (const address_space *aspace,
4062                                      CORE_ADDR pc)
4063 {
4064   struct bp_location **blp, **blp_tmp = NULL;
4065
4066   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4067     {
4068       struct bp_location *bl = *blp;
4069
4070       if (bl->loc_type != bp_loc_software_breakpoint)
4071         continue;
4072
4073       if (bp_location_inserted_here_p (bl, aspace, pc))
4074         return 1;
4075     }
4076
4077   return 0;
4078 }
4079
4080 /* See breakpoint.h.  */
4081
4082 int
4083 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4084                                      CORE_ADDR pc)
4085 {
4086   struct bp_location **blp, **blp_tmp = NULL;
4087
4088   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4089     {
4090       struct bp_location *bl = *blp;
4091
4092       if (bl->loc_type != bp_loc_hardware_breakpoint)
4093         continue;
4094
4095       if (bp_location_inserted_here_p (bl, aspace, pc))
4096         return 1;
4097     }
4098
4099   return 0;
4100 }
4101
4102 int
4103 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4104                                        CORE_ADDR addr, ULONGEST len)
4105 {
4106   struct breakpoint *bpt;
4107
4108   ALL_BREAKPOINTS (bpt)
4109     {
4110       struct bp_location *loc;
4111
4112       if (bpt->type != bp_hardware_watchpoint
4113           && bpt->type != bp_access_watchpoint)
4114         continue;
4115
4116       if (!breakpoint_enabled (bpt))
4117         continue;
4118
4119       for (loc = bpt->loc; loc; loc = loc->next)
4120         if (loc->pspace->aspace == aspace && loc->inserted)
4121           {
4122             CORE_ADDR l, h;
4123
4124             /* Check for intersection.  */
4125             l = std::max<CORE_ADDR> (loc->address, addr);
4126             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4127             if (l < h)
4128               return 1;
4129           }
4130     }
4131   return 0;
4132 }
4133 \f
4134
4135 /* bpstat stuff.  External routines' interfaces are documented
4136    in breakpoint.h.  */
4137
4138 int
4139 is_catchpoint (struct breakpoint *ep)
4140 {
4141   return (ep->type == bp_catchpoint);
4142 }
4143
4144 /* Frees any storage that is part of a bpstat.  Does not walk the
4145    'next' chain.  */
4146
4147 bpstats::~bpstats ()
4148 {
4149   if (bp_location_at != NULL)
4150     decref_bp_location (&bp_location_at);
4151 }
4152
4153 /* Clear a bpstat so that it says we are not at any breakpoint.
4154    Also free any storage that is part of a bpstat.  */
4155
4156 void
4157 bpstat_clear (bpstat *bsp)
4158 {
4159   bpstat p;
4160   bpstat q;
4161
4162   if (bsp == 0)
4163     return;
4164   p = *bsp;
4165   while (p != NULL)
4166     {
4167       q = p->next;
4168       delete p;
4169       p = q;
4170     }
4171   *bsp = NULL;
4172 }
4173
4174 bpstats::bpstats (const bpstats &other)
4175   : next (NULL),
4176     bp_location_at (other.bp_location_at),
4177     breakpoint_at (other.breakpoint_at),
4178     commands (other.commands),
4179     print (other.print),
4180     stop (other.stop),
4181     print_it (other.print_it)
4182 {
4183   if (other.old_val != NULL)
4184     old_val = release_value (value_copy (other.old_val.get ()));
4185   incref_bp_location (bp_location_at);
4186 }
4187
4188 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4189    is part of the bpstat is copied as well.  */
4190
4191 bpstat
4192 bpstat_copy (bpstat bs)
4193 {
4194   bpstat p = NULL;
4195   bpstat tmp;
4196   bpstat retval = NULL;
4197
4198   if (bs == NULL)
4199     return bs;
4200
4201   for (; bs != NULL; bs = bs->next)
4202     {
4203       tmp = new bpstats (*bs);
4204
4205       if (p == NULL)
4206         /* This is the first thing in the chain.  */
4207         retval = tmp;
4208       else
4209         p->next = tmp;
4210       p = tmp;
4211     }
4212   p->next = NULL;
4213   return retval;
4214 }
4215
4216 /* Find the bpstat associated with this breakpoint.  */
4217
4218 bpstat
4219 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4220 {
4221   if (bsp == NULL)
4222     return NULL;
4223
4224   for (; bsp != NULL; bsp = bsp->next)
4225     {
4226       if (bsp->breakpoint_at == breakpoint)
4227         return bsp;
4228     }
4229   return NULL;
4230 }
4231
4232 /* See breakpoint.h.  */
4233
4234 bool
4235 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4236 {
4237   for (; bsp != NULL; bsp = bsp->next)
4238     {
4239       if (bsp->breakpoint_at == NULL)
4240         {
4241           /* A moribund location can never explain a signal other than
4242              GDB_SIGNAL_TRAP.  */
4243           if (sig == GDB_SIGNAL_TRAP)
4244             return true;
4245         }
4246       else
4247         {
4248           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4249                                                         sig))
4250             return true;
4251         }
4252     }
4253
4254   return false;
4255 }
4256
4257 /* Put in *NUM the breakpoint number of the first breakpoint we are
4258    stopped at.  *BSP upon return is a bpstat which points to the
4259    remaining breakpoints stopped at (but which is not guaranteed to be
4260    good for anything but further calls to bpstat_num).
4261
4262    Return 0 if passed a bpstat which does not indicate any breakpoints.
4263    Return -1 if stopped at a breakpoint that has been deleted since
4264    we set it.
4265    Return 1 otherwise.  */
4266
4267 int
4268 bpstat_num (bpstat *bsp, int *num)
4269 {
4270   struct breakpoint *b;
4271
4272   if ((*bsp) == NULL)
4273     return 0;                   /* No more breakpoint values */
4274
4275   /* We assume we'll never have several bpstats that correspond to a
4276      single breakpoint -- otherwise, this function might return the
4277      same number more than once and this will look ugly.  */
4278   b = (*bsp)->breakpoint_at;
4279   *bsp = (*bsp)->next;
4280   if (b == NULL)
4281     return -1;                  /* breakpoint that's been deleted since */
4282
4283   *num = b->number;             /* We have its number */
4284   return 1;
4285 }
4286
4287 /* See breakpoint.h.  */
4288
4289 void
4290 bpstat_clear_actions (void)
4291 {
4292   bpstat bs;
4293
4294   if (inferior_ptid == null_ptid)
4295     return;
4296
4297   thread_info *tp = inferior_thread ();
4298   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4299     {
4300       bs->commands = NULL;
4301       bs->old_val.reset (nullptr);
4302     }
4303 }
4304
4305 /* Called when a command is about to proceed the inferior.  */
4306
4307 static void
4308 breakpoint_about_to_proceed (void)
4309 {
4310   if (inferior_ptid != null_ptid)
4311     {
4312       struct thread_info *tp = inferior_thread ();
4313
4314       /* Allow inferior function calls in breakpoint commands to not
4315          interrupt the command list.  When the call finishes
4316          successfully, the inferior will be standing at the same
4317          breakpoint as if nothing happened.  */
4318       if (tp->control.in_infcall)
4319         return;
4320     }
4321
4322   breakpoint_proceeded = 1;
4323 }
4324
4325 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4326    or its equivalent.  */
4327
4328 static int
4329 command_line_is_silent (struct command_line *cmd)
4330 {
4331   return cmd && (strcmp ("silent", cmd->line) == 0);
4332 }
4333
4334 /* Execute all the commands associated with all the breakpoints at
4335    this location.  Any of these commands could cause the process to
4336    proceed beyond this point, etc.  We look out for such changes by
4337    checking the global "breakpoint_proceeded" after each command.
4338
4339    Returns true if a breakpoint command resumed the inferior.  In that
4340    case, it is the caller's responsibility to recall it again with the
4341    bpstat of the current thread.  */
4342
4343 static int
4344 bpstat_do_actions_1 (bpstat *bsp)
4345 {
4346   bpstat bs;
4347   int again = 0;
4348
4349   /* Avoid endless recursion if a `source' command is contained
4350      in bs->commands.  */
4351   if (executing_breakpoint_commands)
4352     return 0;
4353
4354   scoped_restore save_executing
4355     = make_scoped_restore (&executing_breakpoint_commands, 1);
4356
4357   scoped_restore preventer = prevent_dont_repeat ();
4358
4359   /* This pointer will iterate over the list of bpstat's.  */
4360   bs = *bsp;
4361
4362   breakpoint_proceeded = 0;
4363   for (; bs != NULL; bs = bs->next)
4364     {
4365       struct command_line *cmd = NULL;
4366
4367       /* Take ownership of the BSP's command tree, if it has one.
4368
4369          The command tree could legitimately contain commands like
4370          'step' and 'next', which call clear_proceed_status, which
4371          frees stop_bpstat's command tree.  To make sure this doesn't
4372          free the tree we're executing out from under us, we need to
4373          take ownership of the tree ourselves.  Since a given bpstat's
4374          commands are only executed once, we don't need to copy it; we
4375          can clear the pointer in the bpstat, and make sure we free
4376          the tree when we're done.  */
4377       counted_command_line ccmd = bs->commands;
4378       bs->commands = NULL;
4379       if (ccmd != NULL)
4380         cmd = ccmd.get ();
4381       if (command_line_is_silent (cmd))
4382         {
4383           /* The action has been already done by bpstat_stop_status.  */
4384           cmd = cmd->next;
4385         }
4386
4387       while (cmd != NULL)
4388         {
4389           execute_control_command (cmd);
4390
4391           if (breakpoint_proceeded)
4392             break;
4393           else
4394             cmd = cmd->next;
4395         }
4396
4397       if (breakpoint_proceeded)
4398         {
4399           if (current_ui->async)
4400             /* If we are in async mode, then the target might be still
4401                running, not stopped at any breakpoint, so nothing for
4402                us to do here -- just return to the event loop.  */
4403             ;
4404           else
4405             /* In sync mode, when execute_control_command returns
4406                we're already standing on the next breakpoint.
4407                Breakpoint commands for that stop were not run, since
4408                execute_command does not run breakpoint commands --
4409                only command_line_handler does, but that one is not
4410                involved in execution of breakpoint commands.  So, we
4411                can now execute breakpoint commands.  It should be
4412                noted that making execute_command do bpstat actions is
4413                not an option -- in this case we'll have recursive
4414                invocation of bpstat for each breakpoint with a
4415                command, and can easily blow up GDB stack.  Instead, we
4416                return true, which will trigger the caller to recall us
4417                with the new stop_bpstat.  */
4418             again = 1;
4419           break;
4420         }
4421     }
4422   return again;
4423 }
4424
4425 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4426    one, is alive and has execution.  Return NULL otherwise.  */
4427
4428 static thread_info *
4429 get_bpstat_thread ()
4430 {
4431   if (inferior_ptid == null_ptid || !target_has_execution)
4432     return NULL;
4433
4434   thread_info *tp = inferior_thread ();
4435   if (tp->state == THREAD_EXITED || tp->executing)
4436     return NULL;
4437   return tp;
4438 }
4439
4440 void
4441 bpstat_do_actions (void)
4442 {
4443   auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4444   thread_info *tp;
4445
4446   /* Do any commands attached to breakpoint we are stopped at.  */
4447   while ((tp = get_bpstat_thread ()) != NULL)
4448     {
4449       /* Since in sync mode, bpstat_do_actions may resume the
4450          inferior, and only return when it is stopped at the next
4451          breakpoint, we keep doing breakpoint actions until it returns
4452          false to indicate the inferior was not resumed.  */
4453       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4454         break;
4455     }
4456
4457   cleanup_if_error.release ();
4458 }
4459
4460 /* Print out the (old or new) value associated with a watchpoint.  */
4461
4462 static void
4463 watchpoint_value_print (struct value *val, struct ui_file *stream)
4464 {
4465   if (val == NULL)
4466     fprintf_unfiltered (stream, _("<unreadable>"));
4467   else
4468     {
4469       struct value_print_options opts;
4470       get_user_print_options (&opts);
4471       value_print (val, stream, &opts);
4472     }
4473 }
4474
4475 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4476    debugging multiple threads.  */
4477
4478 void
4479 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4480 {
4481   if (uiout->is_mi_like_p ())
4482     return;
4483
4484   uiout->text ("\n");
4485
4486   if (show_thread_that_caused_stop ())
4487     {
4488       const char *name;
4489       struct thread_info *thr = inferior_thread ();
4490
4491       uiout->text ("Thread ");
4492       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4493
4494       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4495       if (name != NULL)
4496         {
4497           uiout->text (" \"");
4498           uiout->field_fmt ("name", "%s", name);
4499           uiout->text ("\"");
4500         }
4501
4502       uiout->text (" hit ");
4503     }
4504 }
4505
4506 /* Generic routine for printing messages indicating why we
4507    stopped.  The behavior of this function depends on the value
4508    'print_it' in the bpstat structure.  Under some circumstances we
4509    may decide not to print anything here and delegate the task to
4510    normal_stop().  */
4511
4512 static enum print_stop_action
4513 print_bp_stop_message (bpstat bs)
4514 {
4515   switch (bs->print_it)
4516     {
4517     case print_it_noop:
4518       /* Nothing should be printed for this bpstat entry.  */
4519       return PRINT_UNKNOWN;
4520       break;
4521
4522     case print_it_done:
4523       /* We still want to print the frame, but we already printed the
4524          relevant messages.  */
4525       return PRINT_SRC_AND_LOC;
4526       break;
4527
4528     case print_it_normal:
4529       {
4530         struct breakpoint *b = bs->breakpoint_at;
4531
4532         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4533            which has since been deleted.  */
4534         if (b == NULL)
4535           return PRINT_UNKNOWN;
4536
4537         /* Normal case.  Call the breakpoint's print_it method.  */
4538         return b->ops->print_it (bs);
4539       }
4540       break;
4541
4542     default:
4543       internal_error (__FILE__, __LINE__,
4544                       _("print_bp_stop_message: unrecognized enum value"));
4545       break;
4546     }
4547 }
4548
4549 /* A helper function that prints a shared library stopped event.  */
4550
4551 static void
4552 print_solib_event (int is_catchpoint)
4553 {
4554   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4555   bool any_added = !current_program_space->added_solibs.empty ();
4556
4557   if (!is_catchpoint)
4558     {
4559       if (any_added || any_deleted)
4560         current_uiout->text (_("Stopped due to shared library event:\n"));
4561       else
4562         current_uiout->text (_("Stopped due to shared library event (no "
4563                                "libraries added or removed)\n"));
4564     }
4565
4566   if (current_uiout->is_mi_like_p ())
4567     current_uiout->field_string ("reason",
4568                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4569
4570   if (any_deleted)
4571     {
4572       current_uiout->text (_("  Inferior unloaded "));
4573       ui_out_emit_list list_emitter (current_uiout, "removed");
4574       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4575         {
4576           const std::string &name = current_program_space->deleted_solibs[ix];
4577
4578           if (ix > 0)
4579             current_uiout->text ("    ");
4580           current_uiout->field_string ("library", name);
4581           current_uiout->text ("\n");
4582         }
4583     }
4584
4585   if (any_added)
4586     {
4587       current_uiout->text (_("  Inferior loaded "));
4588       ui_out_emit_list list_emitter (current_uiout, "added");
4589       bool first = true;
4590       for (so_list *iter : current_program_space->added_solibs)
4591         {
4592           if (!first)
4593             current_uiout->text ("    ");
4594           first = false;
4595           current_uiout->field_string ("library", iter->so_name);
4596           current_uiout->text ("\n");
4597         }
4598     }
4599 }
4600
4601 /* Print a message indicating what happened.  This is called from
4602    normal_stop().  The input to this routine is the head of the bpstat
4603    list - a list of the eventpoints that caused this stop.  KIND is
4604    the target_waitkind for the stopping event.  This
4605    routine calls the generic print routine for printing a message
4606    about reasons for stopping.  This will print (for example) the
4607    "Breakpoint n," part of the output.  The return value of this
4608    routine is one of:
4609
4610    PRINT_UNKNOWN: Means we printed nothing.
4611    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4612    code to print the location.  An example is 
4613    "Breakpoint 1, " which should be followed by
4614    the location.
4615    PRINT_SRC_ONLY: Means we printed something, but there is no need
4616    to also print the location part of the message.
4617    An example is the catch/throw messages, which
4618    don't require a location appended to the end.
4619    PRINT_NOTHING: We have done some printing and we don't need any 
4620    further info to be printed.  */
4621
4622 enum print_stop_action
4623 bpstat_print (bpstat bs, int kind)
4624 {
4625   enum print_stop_action val;
4626
4627   /* Maybe another breakpoint in the chain caused us to stop.
4628      (Currently all watchpoints go on the bpstat whether hit or not.
4629      That probably could (should) be changed, provided care is taken
4630      with respect to bpstat_explains_signal).  */
4631   for (; bs; bs = bs->next)
4632     {
4633       val = print_bp_stop_message (bs);
4634       if (val == PRINT_SRC_ONLY 
4635           || val == PRINT_SRC_AND_LOC 
4636           || val == PRINT_NOTHING)
4637         return val;
4638     }
4639
4640   /* If we had hit a shared library event breakpoint,
4641      print_bp_stop_message would print out this message.  If we hit an
4642      OS-level shared library event, do the same thing.  */
4643   if (kind == TARGET_WAITKIND_LOADED)
4644     {
4645       print_solib_event (0);
4646       return PRINT_NOTHING;
4647     }
4648
4649   /* We reached the end of the chain, or we got a null BS to start
4650      with and nothing was printed.  */
4651   return PRINT_UNKNOWN;
4652 }
4653
4654 /* Evaluate the boolean expression EXP and return the result.  */
4655
4656 static bool
4657 breakpoint_cond_eval (expression *exp)
4658 {
4659   struct value *mark = value_mark ();
4660   bool res = value_true (evaluate_expression (exp));
4661
4662   value_free_to_mark (mark);
4663   return res;
4664 }
4665
4666 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4667
4668 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4669   : next (NULL),
4670     bp_location_at (bl),
4671     breakpoint_at (bl->owner),
4672     commands (NULL),
4673     print (0),
4674     stop (0),
4675     print_it (print_it_normal)
4676 {
4677   incref_bp_location (bl);
4678   **bs_link_pointer = this;
4679   *bs_link_pointer = &next;
4680 }
4681
4682 bpstats::bpstats ()
4683   : next (NULL),
4684     bp_location_at (NULL),
4685     breakpoint_at (NULL),
4686     commands (NULL),
4687     print (0),
4688     stop (0),
4689     print_it (print_it_normal)
4690 {
4691 }
4692 \f
4693 /* The target has stopped with waitstatus WS.  Check if any hardware
4694    watchpoints have triggered, according to the target.  */
4695
4696 int
4697 watchpoints_triggered (struct target_waitstatus *ws)
4698 {
4699   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4700   CORE_ADDR addr;
4701   struct breakpoint *b;
4702
4703   if (!stopped_by_watchpoint)
4704     {
4705       /* We were not stopped by a watchpoint.  Mark all watchpoints
4706          as not triggered.  */
4707       ALL_BREAKPOINTS (b)
4708         if (is_hardware_watchpoint (b))
4709           {
4710             struct watchpoint *w = (struct watchpoint *) b;
4711
4712             w->watchpoint_triggered = watch_triggered_no;
4713           }
4714
4715       return 0;
4716     }
4717
4718   if (!target_stopped_data_address (current_top_target (), &addr))
4719     {
4720       /* We were stopped by a watchpoint, but we don't know where.
4721          Mark all watchpoints as unknown.  */
4722       ALL_BREAKPOINTS (b)
4723         if (is_hardware_watchpoint (b))
4724           {
4725             struct watchpoint *w = (struct watchpoint *) b;
4726
4727             w->watchpoint_triggered = watch_triggered_unknown;
4728           }
4729
4730       return 1;
4731     }
4732
4733   /* The target could report the data address.  Mark watchpoints
4734      affected by this data address as triggered, and all others as not
4735      triggered.  */
4736
4737   ALL_BREAKPOINTS (b)
4738     if (is_hardware_watchpoint (b))
4739       {
4740         struct watchpoint *w = (struct watchpoint *) b;
4741         struct bp_location *loc;
4742
4743         w->watchpoint_triggered = watch_triggered_no;
4744         for (loc = b->loc; loc; loc = loc->next)
4745           {
4746             if (is_masked_watchpoint (b))
4747               {
4748                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4749                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4750
4751                 if (newaddr == start)
4752                   {
4753                     w->watchpoint_triggered = watch_triggered_yes;
4754                     break;
4755                   }
4756               }
4757             /* Exact match not required.  Within range is sufficient.  */
4758             else if (target_watchpoint_addr_within_range (current_top_target (),
4759                                                          addr, loc->address,
4760                                                          loc->length))
4761               {
4762                 w->watchpoint_triggered = watch_triggered_yes;
4763                 break;
4764               }
4765           }
4766       }
4767
4768   return 1;
4769 }
4770
4771 /* Possible return values for watchpoint_check.  */
4772 enum wp_check_result
4773   {
4774     /* The watchpoint has been deleted.  */
4775     WP_DELETED = 1,
4776
4777     /* The value has changed.  */
4778     WP_VALUE_CHANGED = 2,
4779
4780     /* The value has not changed.  */
4781     WP_VALUE_NOT_CHANGED = 3,
4782
4783     /* Ignore this watchpoint, no matter if the value changed or not.  */
4784     WP_IGNORE = 4,
4785   };
4786
4787 #define BP_TEMPFLAG 1
4788 #define BP_HARDWAREFLAG 2
4789
4790 /* Evaluate watchpoint condition expression and check if its value
4791    changed.  */
4792
4793 static wp_check_result
4794 watchpoint_check (bpstat bs)
4795 {
4796   struct watchpoint *b;
4797   struct frame_info *fr;
4798   int within_current_scope;
4799
4800   /* BS is built from an existing struct breakpoint.  */
4801   gdb_assert (bs->breakpoint_at != NULL);
4802   b = (struct watchpoint *) bs->breakpoint_at;
4803
4804   /* If this is a local watchpoint, we only want to check if the
4805      watchpoint frame is in scope if the current thread is the thread
4806      that was used to create the watchpoint.  */
4807   if (!watchpoint_in_thread_scope (b))
4808     return WP_IGNORE;
4809
4810   if (b->exp_valid_block == NULL)
4811     within_current_scope = 1;
4812   else
4813     {
4814       struct frame_info *frame = get_current_frame ();
4815       struct gdbarch *frame_arch = get_frame_arch (frame);
4816       CORE_ADDR frame_pc = get_frame_pc (frame);
4817
4818       /* stack_frame_destroyed_p() returns a non-zero value if we're
4819          still in the function but the stack frame has already been
4820          invalidated.  Since we can't rely on the values of local
4821          variables after the stack has been destroyed, we are treating
4822          the watchpoint in that state as `not changed' without further
4823          checking.  Don't mark watchpoints as changed if the current
4824          frame is in an epilogue - even if they are in some other
4825          frame, our view of the stack is likely to be wrong and
4826          frame_find_by_id could error out.  */
4827       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4828         return WP_IGNORE;
4829
4830       fr = frame_find_by_id (b->watchpoint_frame);
4831       within_current_scope = (fr != NULL);
4832
4833       /* If we've gotten confused in the unwinder, we might have
4834          returned a frame that can't describe this variable.  */
4835       if (within_current_scope)
4836         {
4837           struct symbol *function;
4838
4839           function = get_frame_function (fr);
4840           if (function == NULL
4841               || !contained_in (b->exp_valid_block,
4842                                 SYMBOL_BLOCK_VALUE (function)))
4843             within_current_scope = 0;
4844         }
4845
4846       if (within_current_scope)
4847         /* If we end up stopping, the current frame will get selected
4848            in normal_stop.  So this call to select_frame won't affect
4849            the user.  */
4850         select_frame (fr);
4851     }
4852
4853   if (within_current_scope)
4854     {
4855       /* We use value_{,free_to_}mark because it could be a *long*
4856          time before we return to the command level and call
4857          free_all_values.  We can't call free_all_values because we
4858          might be in the middle of evaluating a function call.  */
4859
4860       int pc = 0;
4861       struct value *mark;
4862       struct value *new_val;
4863
4864       if (is_masked_watchpoint (b))
4865         /* Since we don't know the exact trigger address (from
4866            stopped_data_address), just tell the user we've triggered
4867            a mask watchpoint.  */
4868         return WP_VALUE_CHANGED;
4869
4870       mark = value_mark ();
4871       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4872
4873       if (b->val_bitsize != 0)
4874         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4875
4876       /* We use value_equal_contents instead of value_equal because
4877          the latter coerces an array to a pointer, thus comparing just
4878          the address of the array instead of its contents.  This is
4879          not what we want.  */
4880       if ((b->val != NULL) != (new_val != NULL)
4881           || (b->val != NULL && !value_equal_contents (b->val.get (),
4882                                                        new_val)))
4883         {
4884           bs->old_val = b->val;
4885           b->val = release_value (new_val);
4886           b->val_valid = 1;
4887           if (new_val != NULL)
4888             value_free_to_mark (mark);
4889           return WP_VALUE_CHANGED;
4890         }
4891       else
4892         {
4893           /* Nothing changed.  */
4894           value_free_to_mark (mark);
4895           return WP_VALUE_NOT_CHANGED;
4896         }
4897     }
4898   else
4899     {
4900       /* This seems like the only logical thing to do because
4901          if we temporarily ignored the watchpoint, then when
4902          we reenter the block in which it is valid it contains
4903          garbage (in the case of a function, it may have two
4904          garbage values, one before and one after the prologue).
4905          So we can't even detect the first assignment to it and
4906          watch after that (since the garbage may or may not equal
4907          the first value assigned).  */
4908       /* We print all the stop information in
4909          breakpoint_ops->print_it, but in this case, by the time we
4910          call breakpoint_ops->print_it this bp will be deleted
4911          already.  So we have no choice but print the information
4912          here.  */
4913
4914       SWITCH_THRU_ALL_UIS ()
4915         {
4916           struct ui_out *uiout = current_uiout;
4917
4918           if (uiout->is_mi_like_p ())
4919             uiout->field_string
4920               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4921           uiout->text ("\nWatchpoint ");
4922           uiout->field_int ("wpnum", b->number);
4923           uiout->text (" deleted because the program has left the block in\n"
4924                        "which its expression is valid.\n");
4925         }
4926
4927       /* Make sure the watchpoint's commands aren't executed.  */
4928       b->commands = NULL;
4929       watchpoint_del_at_next_stop (b);
4930
4931       return WP_DELETED;
4932     }
4933 }
4934
4935 /* Return true if it looks like target has stopped due to hitting
4936    breakpoint location BL.  This function does not check if we should
4937    stop, only if BL explains the stop.  */
4938
4939 static int
4940 bpstat_check_location (const struct bp_location *bl,
4941                        const address_space *aspace, CORE_ADDR bp_addr,
4942                        const struct target_waitstatus *ws)
4943 {
4944   struct breakpoint *b = bl->owner;
4945
4946   /* BL is from an existing breakpoint.  */
4947   gdb_assert (b != NULL);
4948
4949   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4950 }
4951
4952 /* Determine if the watched values have actually changed, and we
4953    should stop.  If not, set BS->stop to 0.  */
4954
4955 static void
4956 bpstat_check_watchpoint (bpstat bs)
4957 {
4958   const struct bp_location *bl;
4959   struct watchpoint *b;
4960
4961   /* BS is built for existing struct breakpoint.  */
4962   bl = bs->bp_location_at;
4963   gdb_assert (bl != NULL);
4964   b = (struct watchpoint *) bs->breakpoint_at;
4965   gdb_assert (b != NULL);
4966
4967     {
4968       int must_check_value = 0;
4969       
4970       if (b->type == bp_watchpoint)
4971         /* For a software watchpoint, we must always check the
4972            watched value.  */
4973         must_check_value = 1;
4974       else if (b->watchpoint_triggered == watch_triggered_yes)
4975         /* We have a hardware watchpoint (read, write, or access)
4976            and the target earlier reported an address watched by
4977            this watchpoint.  */
4978         must_check_value = 1;
4979       else if (b->watchpoint_triggered == watch_triggered_unknown
4980                && b->type == bp_hardware_watchpoint)
4981         /* We were stopped by a hardware watchpoint, but the target could
4982            not report the data address.  We must check the watchpoint's
4983            value.  Access and read watchpoints are out of luck; without
4984            a data address, we can't figure it out.  */
4985         must_check_value = 1;
4986
4987       if (must_check_value)
4988         {
4989           wp_check_result e;
4990
4991           try
4992             {
4993               e = watchpoint_check (bs);
4994             }
4995           catch (const gdb_exception &ex)
4996             {
4997               exception_fprintf (gdb_stderr, ex,
4998                                  "Error evaluating expression "
4999                                  "for watchpoint %d\n",
5000                                  b->number);
5001
5002               SWITCH_THRU_ALL_UIS ()
5003                 {
5004                   printf_filtered (_("Watchpoint %d deleted.\n"),
5005                                    b->number);
5006                 }
5007               watchpoint_del_at_next_stop (b);
5008               e = WP_DELETED;
5009             }
5010
5011           switch (e)
5012             {
5013             case WP_DELETED:
5014               /* We've already printed what needs to be printed.  */
5015               bs->print_it = print_it_done;
5016               /* Stop.  */
5017               break;
5018             case WP_IGNORE:
5019               bs->print_it = print_it_noop;
5020               bs->stop = 0;
5021               break;
5022             case WP_VALUE_CHANGED:
5023               if (b->type == bp_read_watchpoint)
5024                 {
5025                   /* There are two cases to consider here:
5026
5027                      1. We're watching the triggered memory for reads.
5028                      In that case, trust the target, and always report
5029                      the watchpoint hit to the user.  Even though
5030                      reads don't cause value changes, the value may
5031                      have changed since the last time it was read, and
5032                      since we're not trapping writes, we will not see
5033                      those, and as such we should ignore our notion of
5034                      old value.
5035
5036                      2. We're watching the triggered memory for both
5037                      reads and writes.  There are two ways this may
5038                      happen:
5039
5040                      2.1. This is a target that can't break on data
5041                      reads only, but can break on accesses (reads or
5042                      writes), such as e.g., x86.  We detect this case
5043                      at the time we try to insert read watchpoints.
5044
5045                      2.2. Otherwise, the target supports read
5046                      watchpoints, but, the user set an access or write
5047                      watchpoint watching the same memory as this read
5048                      watchpoint.
5049
5050                      If we're watching memory writes as well as reads,
5051                      ignore watchpoint hits when we find that the
5052                      value hasn't changed, as reads don't cause
5053                      changes.  This still gives false positives when
5054                      the program writes the same value to memory as
5055                      what there was already in memory (we will confuse
5056                      it for a read), but it's much better than
5057                      nothing.  */
5058
5059                   int other_write_watchpoint = 0;
5060
5061                   if (bl->watchpoint_type == hw_read)
5062                     {
5063                       struct breakpoint *other_b;
5064
5065                       ALL_BREAKPOINTS (other_b)
5066                         if (other_b->type == bp_hardware_watchpoint
5067                             || other_b->type == bp_access_watchpoint)
5068                           {
5069                             struct watchpoint *other_w =
5070                               (struct watchpoint *) other_b;
5071
5072                             if (other_w->watchpoint_triggered
5073                                 == watch_triggered_yes)
5074                               {
5075                                 other_write_watchpoint = 1;
5076                                 break;
5077                               }
5078                           }
5079                     }
5080
5081                   if (other_write_watchpoint
5082                       || bl->watchpoint_type == hw_access)
5083                     {
5084                       /* We're watching the same memory for writes,
5085                          and the value changed since the last time we
5086                          updated it, so this trap must be for a write.
5087                          Ignore it.  */
5088                       bs->print_it = print_it_noop;
5089                       bs->stop = 0;
5090                     }
5091                 }
5092               break;
5093             case WP_VALUE_NOT_CHANGED:
5094               if (b->type == bp_hardware_watchpoint
5095                   || b->type == bp_watchpoint)
5096                 {
5097                   /* Don't stop: write watchpoints shouldn't fire if
5098                      the value hasn't changed.  */
5099                   bs->print_it = print_it_noop;
5100                   bs->stop = 0;
5101                 }
5102               /* Stop.  */
5103               break;
5104             default:
5105               /* Can't happen.  */
5106               break;
5107             }
5108         }
5109       else      /* must_check_value == 0 */
5110         {
5111           /* This is a case where some watchpoint(s) triggered, but
5112              not at the address of this watchpoint, or else no
5113              watchpoint triggered after all.  So don't print
5114              anything for this watchpoint.  */
5115           bs->print_it = print_it_noop;
5116           bs->stop = 0;
5117         }
5118     }
5119 }
5120
5121 /* For breakpoints that are currently marked as telling gdb to stop,
5122    check conditions (condition proper, frame, thread and ignore count)
5123    of breakpoint referred to by BS.  If we should not stop for this
5124    breakpoint, set BS->stop to 0.  */
5125
5126 static void
5127 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5128 {
5129   const struct bp_location *bl;
5130   struct breakpoint *b;
5131   /* Assume stop.  */
5132   bool condition_result = true;
5133   struct expression *cond;
5134
5135   gdb_assert (bs->stop);
5136
5137   /* BS is built for existing struct breakpoint.  */
5138   bl = bs->bp_location_at;
5139   gdb_assert (bl != NULL);
5140   b = bs->breakpoint_at;
5141   gdb_assert (b != NULL);
5142
5143   /* Even if the target evaluated the condition on its end and notified GDB, we
5144      need to do so again since GDB does not know if we stopped due to a
5145      breakpoint or a single step breakpoint.  */
5146
5147   if (frame_id_p (b->frame_id)
5148       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5149     {
5150       bs->stop = 0;
5151       return;
5152     }
5153
5154   /* If this is a thread/task-specific breakpoint, don't waste cpu
5155      evaluating the condition if this isn't the specified
5156      thread/task.  */
5157   if ((b->thread != -1 && b->thread != thread->global_num)
5158       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5159     {
5160       bs->stop = 0;
5161       return;
5162     }
5163
5164   /* Evaluate extension language breakpoints that have a "stop" method
5165      implemented.  */
5166   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5167
5168   if (is_watchpoint (b))
5169     {
5170       struct watchpoint *w = (struct watchpoint *) b;
5171
5172       cond = w->cond_exp.get ();
5173     }
5174   else
5175     cond = bl->cond.get ();
5176
5177   if (cond && b->disposition != disp_del_at_next_stop)
5178     {
5179       int within_current_scope = 1;
5180       struct watchpoint * w;
5181
5182       /* We use value_mark and value_free_to_mark because it could
5183          be a long time before we return to the command level and
5184          call free_all_values.  We can't call free_all_values
5185          because we might be in the middle of evaluating a
5186          function call.  */
5187       struct value *mark = value_mark ();
5188
5189       if (is_watchpoint (b))
5190         w = (struct watchpoint *) b;
5191       else
5192         w = NULL;
5193
5194       /* Need to select the frame, with all that implies so that
5195          the conditions will have the right context.  Because we
5196          use the frame, we will not see an inlined function's
5197          variables when we arrive at a breakpoint at the start
5198          of the inlined function; the current frame will be the
5199          call site.  */
5200       if (w == NULL || w->cond_exp_valid_block == NULL)
5201         select_frame (get_current_frame ());
5202       else
5203         {
5204           struct frame_info *frame;
5205
5206           /* For local watchpoint expressions, which particular
5207              instance of a local is being watched matters, so we
5208              keep track of the frame to evaluate the expression
5209              in.  To evaluate the condition however, it doesn't
5210              really matter which instantiation of the function
5211              where the condition makes sense triggers the
5212              watchpoint.  This allows an expression like "watch
5213              global if q > 10" set in `func', catch writes to
5214              global on all threads that call `func', or catch
5215              writes on all recursive calls of `func' by a single
5216              thread.  We simply always evaluate the condition in
5217              the innermost frame that's executing where it makes
5218              sense to evaluate the condition.  It seems
5219              intuitive.  */
5220           frame = block_innermost_frame (w->cond_exp_valid_block);
5221           if (frame != NULL)
5222             select_frame (frame);
5223           else
5224             within_current_scope = 0;
5225         }
5226       if (within_current_scope)
5227         {
5228           try
5229             {
5230               condition_result = breakpoint_cond_eval (cond);
5231             }
5232           catch (const gdb_exception &ex)
5233             {
5234               exception_fprintf (gdb_stderr, ex,
5235                                  "Error in testing breakpoint condition:\n");
5236             }
5237         }
5238       else
5239         {
5240           warning (_("Watchpoint condition cannot be tested "
5241                      "in the current scope"));
5242           /* If we failed to set the right context for this
5243              watchpoint, unconditionally report it.  */
5244         }
5245       /* FIXME-someday, should give breakpoint #.  */
5246       value_free_to_mark (mark);
5247     }
5248
5249   if (cond && !condition_result)
5250     {
5251       bs->stop = 0;
5252     }
5253   else if (b->ignore_count > 0)
5254     {
5255       b->ignore_count--;
5256       bs->stop = 0;
5257       /* Increase the hit count even though we don't stop.  */
5258       ++(b->hit_count);
5259       gdb::observers::breakpoint_modified.notify (b);
5260     }   
5261 }
5262
5263 /* Returns true if we need to track moribund locations of LOC's type
5264    on the current target.  */
5265
5266 static int
5267 need_moribund_for_location_type (struct bp_location *loc)
5268 {
5269   return ((loc->loc_type == bp_loc_software_breakpoint
5270            && !target_supports_stopped_by_sw_breakpoint ())
5271           || (loc->loc_type == bp_loc_hardware_breakpoint
5272               && !target_supports_stopped_by_hw_breakpoint ()));
5273 }
5274
5275 /* See breakpoint.h.  */
5276
5277 bpstat
5278 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5279                     const struct target_waitstatus *ws)
5280 {
5281   struct breakpoint *b;
5282   bpstat bs_head = NULL, *bs_link = &bs_head;
5283
5284   ALL_BREAKPOINTS (b)
5285     {
5286       if (!breakpoint_enabled (b))
5287         continue;
5288
5289       for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5290         {
5291           /* For hardware watchpoints, we look only at the first
5292              location.  The watchpoint_check function will work on the
5293              entire expression, not the individual locations.  For
5294              read watchpoints, the watchpoints_triggered function has
5295              checked all locations already.  */
5296           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5297             break;
5298
5299           if (!bl->enabled || bl->shlib_disabled)
5300             continue;
5301
5302           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5303             continue;
5304
5305           /* Come here if it's a watchpoint, or if the break address
5306              matches.  */
5307
5308           bpstat bs = new bpstats (bl, &bs_link);       /* Alloc a bpstat to
5309                                                            explain stop.  */
5310
5311           /* Assume we stop.  Should we find a watchpoint that is not
5312              actually triggered, or if the condition of the breakpoint
5313              evaluates as false, we'll reset 'stop' to 0.  */
5314           bs->stop = 1;
5315           bs->print = 1;
5316
5317           /* If this is a scope breakpoint, mark the associated
5318              watchpoint as triggered so that we will handle the
5319              out-of-scope event.  We'll get to the watchpoint next
5320              iteration.  */
5321           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5322             {
5323               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5324
5325               w->watchpoint_triggered = watch_triggered_yes;
5326             }
5327         }
5328     }
5329
5330   /* Check if a moribund breakpoint explains the stop.  */
5331   if (!target_supports_stopped_by_sw_breakpoint ()
5332       || !target_supports_stopped_by_hw_breakpoint ())
5333     {
5334       for (bp_location *loc : moribund_locations)
5335         {
5336           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5337               && need_moribund_for_location_type (loc))
5338             {
5339               bpstat bs = new bpstats (loc, &bs_link);
5340               /* For hits of moribund locations, we should just proceed.  */
5341               bs->stop = 0;
5342               bs->print = 0;
5343               bs->print_it = print_it_noop;
5344             }
5345         }
5346     }
5347
5348   return bs_head;
5349 }
5350
5351 /* See breakpoint.h.  */
5352
5353 bpstat
5354 bpstat_stop_status (const address_space *aspace,
5355                     CORE_ADDR bp_addr, thread_info *thread,
5356                     const struct target_waitstatus *ws,
5357                     bpstat stop_chain)
5358 {
5359   struct breakpoint *b = NULL;
5360   /* First item of allocated bpstat's.  */
5361   bpstat bs_head = stop_chain;
5362   bpstat bs;
5363   int need_remove_insert;
5364   int removed_any;
5365
5366   /* First, build the bpstat chain with locations that explain a
5367      target stop, while being careful to not set the target running,
5368      as that may invalidate locations (in particular watchpoint
5369      locations are recreated).  Resuming will happen here with
5370      breakpoint conditions or watchpoint expressions that include
5371      inferior function calls.  */
5372   if (bs_head == NULL)
5373     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5374
5375   /* A bit of special processing for shlib breakpoints.  We need to
5376      process solib loading here, so that the lists of loaded and
5377      unloaded libraries are correct before we handle "catch load" and
5378      "catch unload".  */
5379   for (bs = bs_head; bs != NULL; bs = bs->next)
5380     {
5381       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5382         {
5383           handle_solib_event ();
5384           break;
5385         }
5386     }
5387
5388   /* Now go through the locations that caused the target to stop, and
5389      check whether we're interested in reporting this stop to higher
5390      layers, or whether we should resume the target transparently.  */
5391
5392   removed_any = 0;
5393
5394   for (bs = bs_head; bs != NULL; bs = bs->next)
5395     {
5396       if (!bs->stop)
5397         continue;
5398
5399       b = bs->breakpoint_at;
5400       b->ops->check_status (bs);
5401       if (bs->stop)
5402         {
5403           bpstat_check_breakpoint_conditions (bs, thread);
5404
5405           if (bs->stop)
5406             {
5407               ++(b->hit_count);
5408               gdb::observers::breakpoint_modified.notify (b);
5409
5410               /* We will stop here.  */
5411               if (b->disposition == disp_disable)
5412                 {
5413                   --(b->enable_count);
5414                   if (b->enable_count <= 0)
5415                     b->enable_state = bp_disabled;
5416                   removed_any = 1;
5417                 }
5418               if (b->silent)
5419                 bs->print = 0;
5420               bs->commands = b->commands;
5421               if (command_line_is_silent (bs->commands
5422                                           ? bs->commands.get () : NULL))
5423                 bs->print = 0;
5424
5425               b->ops->after_condition_true (bs);
5426             }
5427
5428         }
5429
5430       /* Print nothing for this entry if we don't stop or don't
5431          print.  */
5432       if (!bs->stop || !bs->print)
5433         bs->print_it = print_it_noop;
5434     }
5435
5436   /* If we aren't stopping, the value of some hardware watchpoint may
5437      not have changed, but the intermediate memory locations we are
5438      watching may have.  Don't bother if we're stopping; this will get
5439      done later.  */
5440   need_remove_insert = 0;
5441   if (! bpstat_causes_stop (bs_head))
5442     for (bs = bs_head; bs != NULL; bs = bs->next)
5443       if (!bs->stop
5444           && bs->breakpoint_at
5445           && is_hardware_watchpoint (bs->breakpoint_at))
5446         {
5447           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5448
5449           update_watchpoint (w, 0 /* don't reparse.  */);
5450           need_remove_insert = 1;
5451         }
5452
5453   if (need_remove_insert)
5454     update_global_location_list (UGLL_MAY_INSERT);
5455   else if (removed_any)
5456     update_global_location_list (UGLL_DONT_INSERT);
5457
5458   return bs_head;
5459 }
5460
5461 static void
5462 handle_jit_event (void)
5463 {
5464   struct frame_info *frame;
5465   struct gdbarch *gdbarch;
5466
5467   if (debug_infrun)
5468     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5469
5470   /* Switch terminal for any messages produced by
5471      breakpoint_re_set.  */
5472   target_terminal::ours_for_output ();
5473
5474   frame = get_current_frame ();
5475   gdbarch = get_frame_arch (frame);
5476
5477   jit_event_handler (gdbarch);
5478
5479   target_terminal::inferior ();
5480 }
5481
5482 /* Prepare WHAT final decision for infrun.  */
5483
5484 /* Decide what infrun needs to do with this bpstat.  */
5485
5486 struct bpstat_what
5487 bpstat_what (bpstat bs_head)
5488 {
5489   struct bpstat_what retval;
5490   bpstat bs;
5491
5492   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5493   retval.call_dummy = STOP_NONE;
5494   retval.is_longjmp = false;
5495
5496   for (bs = bs_head; bs != NULL; bs = bs->next)
5497     {
5498       /* Extract this BS's action.  After processing each BS, we check
5499          if its action overrides all we've seem so far.  */
5500       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5501       enum bptype bptype;
5502
5503       if (bs->breakpoint_at == NULL)
5504         {
5505           /* I suspect this can happen if it was a momentary
5506              breakpoint which has since been deleted.  */
5507           bptype = bp_none;
5508         }
5509       else
5510         bptype = bs->breakpoint_at->type;
5511
5512       switch (bptype)
5513         {
5514         case bp_none:
5515           break;
5516         case bp_breakpoint:
5517         case bp_hardware_breakpoint:
5518         case bp_single_step:
5519         case bp_until:
5520         case bp_finish:
5521         case bp_shlib_event:
5522           if (bs->stop)
5523             {
5524               if (bs->print)
5525                 this_action = BPSTAT_WHAT_STOP_NOISY;
5526               else
5527                 this_action = BPSTAT_WHAT_STOP_SILENT;
5528             }
5529           else
5530             this_action = BPSTAT_WHAT_SINGLE;
5531           break;
5532         case bp_watchpoint:
5533         case bp_hardware_watchpoint:
5534         case bp_read_watchpoint:
5535         case bp_access_watchpoint:
5536           if (bs->stop)
5537             {
5538               if (bs->print)
5539                 this_action = BPSTAT_WHAT_STOP_NOISY;
5540               else
5541                 this_action = BPSTAT_WHAT_STOP_SILENT;
5542             }
5543           else
5544             {
5545               /* There was a watchpoint, but we're not stopping.
5546                  This requires no further action.  */
5547             }
5548           break;
5549         case bp_longjmp:
5550         case bp_longjmp_call_dummy:
5551         case bp_exception:
5552           if (bs->stop)
5553             {
5554               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5555               retval.is_longjmp = bptype != bp_exception;
5556             }
5557           else
5558             this_action = BPSTAT_WHAT_SINGLE;
5559           break;
5560         case bp_longjmp_resume:
5561         case bp_exception_resume:
5562           if (bs->stop)
5563             {
5564               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5565               retval.is_longjmp = bptype == bp_longjmp_resume;
5566             }
5567           else
5568             this_action = BPSTAT_WHAT_SINGLE;
5569           break;
5570         case bp_step_resume:
5571           if (bs->stop)
5572             this_action = BPSTAT_WHAT_STEP_RESUME;
5573           else
5574             {
5575               /* It is for the wrong frame.  */
5576               this_action = BPSTAT_WHAT_SINGLE;
5577             }
5578           break;
5579         case bp_hp_step_resume:
5580           if (bs->stop)
5581             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5582           else
5583             {
5584               /* It is for the wrong frame.  */
5585               this_action = BPSTAT_WHAT_SINGLE;
5586             }
5587           break;
5588         case bp_watchpoint_scope:
5589         case bp_thread_event:
5590         case bp_overlay_event:
5591         case bp_longjmp_master:
5592         case bp_std_terminate_master:
5593         case bp_exception_master:
5594           this_action = BPSTAT_WHAT_SINGLE;
5595           break;
5596         case bp_catchpoint:
5597           if (bs->stop)
5598             {
5599               if (bs->print)
5600                 this_action = BPSTAT_WHAT_STOP_NOISY;
5601               else
5602                 this_action = BPSTAT_WHAT_STOP_SILENT;
5603             }
5604           else
5605             {
5606               /* Some catchpoints are implemented with breakpoints.
5607                  For those, we need to step over the breakpoint.  */
5608               if (bs->bp_location_at->loc_type != bp_loc_other)
5609                 this_action = BPSTAT_WHAT_SINGLE;
5610             }
5611           break;
5612         case bp_jit_event:
5613           this_action = BPSTAT_WHAT_SINGLE;
5614           break;
5615         case bp_call_dummy:
5616           /* Make sure the action is stop (silent or noisy),
5617              so infrun.c pops the dummy frame.  */
5618           retval.call_dummy = STOP_STACK_DUMMY;
5619           this_action = BPSTAT_WHAT_STOP_SILENT;
5620           break;
5621         case bp_std_terminate:
5622           /* Make sure the action is stop (silent or noisy),
5623              so infrun.c pops the dummy frame.  */
5624           retval.call_dummy = STOP_STD_TERMINATE;
5625           this_action = BPSTAT_WHAT_STOP_SILENT;
5626           break;
5627         case bp_tracepoint:
5628         case bp_fast_tracepoint:
5629         case bp_static_tracepoint:
5630           /* Tracepoint hits should not be reported back to GDB, and
5631              if one got through somehow, it should have been filtered
5632              out already.  */
5633           internal_error (__FILE__, __LINE__,
5634                           _("bpstat_what: tracepoint encountered"));
5635           break;
5636         case bp_gnu_ifunc_resolver:
5637           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5638           this_action = BPSTAT_WHAT_SINGLE;
5639           break;
5640         case bp_gnu_ifunc_resolver_return:
5641           /* The breakpoint will be removed, execution will restart from the
5642              PC of the former breakpoint.  */
5643           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5644           break;
5645
5646         case bp_dprintf:
5647           if (bs->stop)
5648             this_action = BPSTAT_WHAT_STOP_SILENT;
5649           else
5650             this_action = BPSTAT_WHAT_SINGLE;
5651           break;
5652
5653         default:
5654           internal_error (__FILE__, __LINE__,
5655                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5656         }
5657
5658       retval.main_action = std::max (retval.main_action, this_action);
5659     }
5660
5661   return retval;
5662 }
5663
5664 void
5665 bpstat_run_callbacks (bpstat bs_head)
5666 {
5667   bpstat bs;
5668
5669   for (bs = bs_head; bs != NULL; bs = bs->next)
5670     {
5671       struct breakpoint *b = bs->breakpoint_at;
5672
5673       if (b == NULL)
5674         continue;
5675       switch (b->type)
5676         {
5677         case bp_jit_event:
5678           handle_jit_event ();
5679           break;
5680         case bp_gnu_ifunc_resolver:
5681           gnu_ifunc_resolver_stop (b);
5682           break;
5683         case bp_gnu_ifunc_resolver_return:
5684           gnu_ifunc_resolver_return_stop (b);
5685           break;
5686         }
5687     }
5688 }
5689
5690 /* See breakpoint.h.  */
5691
5692 bool
5693 bpstat_should_step ()
5694 {
5695   struct breakpoint *b;
5696
5697   ALL_BREAKPOINTS (b)
5698     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5699       return true;
5700   return false;
5701 }
5702
5703 /* See breakpoint.h.  */
5704
5705 bool
5706 bpstat_causes_stop (bpstat bs)
5707 {
5708   for (; bs != NULL; bs = bs->next)
5709     if (bs->stop)
5710       return true;
5711
5712   return false;
5713 }
5714
5715 \f
5716
5717 /* Compute a string of spaces suitable to indent the next line
5718    so it starts at the position corresponding to the table column
5719    named COL_NAME in the currently active table of UIOUT.  */
5720
5721 static char *
5722 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5723 {
5724   static char wrap_indent[80];
5725   int i, total_width, width, align;
5726   const char *text;
5727
5728   total_width = 0;
5729   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5730     {
5731       if (strcmp (text, col_name) == 0)
5732         {
5733           gdb_assert (total_width < sizeof wrap_indent);
5734           memset (wrap_indent, ' ', total_width);
5735           wrap_indent[total_width] = 0;
5736
5737           return wrap_indent;
5738         }
5739
5740       total_width += width + 1;
5741     }
5742
5743   return NULL;
5744 }
5745
5746 /* Determine if the locations of this breakpoint will have their conditions
5747    evaluated by the target, host or a mix of both.  Returns the following:
5748
5749     "host": Host evals condition.
5750     "host or target": Host or Target evals condition.
5751     "target": Target evals condition.
5752 */
5753
5754 static const char *
5755 bp_condition_evaluator (struct breakpoint *b)
5756 {
5757   struct bp_location *bl;
5758   char host_evals = 0;
5759   char target_evals = 0;
5760
5761   if (!b)
5762     return NULL;
5763
5764   if (!is_breakpoint (b))
5765     return NULL;
5766
5767   if (gdb_evaluates_breakpoint_condition_p ()
5768       || !target_supports_evaluation_of_breakpoint_conditions ())
5769     return condition_evaluation_host;
5770
5771   for (bl = b->loc; bl; bl = bl->next)
5772     {
5773       if (bl->cond_bytecode)
5774         target_evals++;
5775       else
5776         host_evals++;
5777     }
5778
5779   if (host_evals && target_evals)
5780     return condition_evaluation_both;
5781   else if (target_evals)
5782     return condition_evaluation_target;
5783   else
5784     return condition_evaluation_host;
5785 }
5786
5787 /* Determine the breakpoint location's condition evaluator.  This is
5788    similar to bp_condition_evaluator, but for locations.  */
5789
5790 static const char *
5791 bp_location_condition_evaluator (struct bp_location *bl)
5792 {
5793   if (bl && !is_breakpoint (bl->owner))
5794     return NULL;
5795
5796   if (gdb_evaluates_breakpoint_condition_p ()
5797       || !target_supports_evaluation_of_breakpoint_conditions ())
5798     return condition_evaluation_host;
5799
5800   if (bl && bl->cond_bytecode)
5801     return condition_evaluation_target;
5802   else
5803     return condition_evaluation_host;
5804 }
5805
5806 /* Print the LOC location out of the list of B->LOC locations.  */
5807
5808 static void
5809 print_breakpoint_location (struct breakpoint *b,
5810                            struct bp_location *loc)
5811 {
5812   struct ui_out *uiout = current_uiout;
5813
5814   scoped_restore_current_program_space restore_pspace;
5815
5816   if (loc != NULL && loc->shlib_disabled)
5817     loc = NULL;
5818
5819   if (loc != NULL)
5820     set_current_program_space (loc->pspace);
5821
5822   if (b->display_canonical)
5823     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5824   else if (loc && loc->symtab)
5825     {
5826       const struct symbol *sym = loc->symbol;
5827
5828       if (sym)
5829         {
5830           uiout->text ("in ");
5831           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5832                                ui_out_style_kind::FUNCTION);
5833           uiout->text (" ");
5834           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5835           uiout->text ("at ");
5836         }
5837       uiout->field_string ("file",
5838                            symtab_to_filename_for_display (loc->symtab),
5839                            ui_out_style_kind::FILE);
5840       uiout->text (":");
5841
5842       if (uiout->is_mi_like_p ())
5843         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5844       
5845       uiout->field_int ("line", loc->line_number);
5846     }
5847   else if (loc)
5848     {
5849       string_file stb;
5850
5851       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5852                               demangle, "");
5853       uiout->field_stream ("at", stb);
5854     }
5855   else
5856     {
5857       uiout->field_string ("pending",
5858                            event_location_to_string (b->location.get ()));
5859       /* If extra_string is available, it could be holding a condition
5860          or dprintf arguments.  In either case, make sure it is printed,
5861          too, but only for non-MI streams.  */
5862       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5863         {
5864           if (b->type == bp_dprintf)
5865             uiout->text (",");
5866           else
5867             uiout->text (" ");
5868           uiout->text (b->extra_string);
5869         }
5870     }
5871
5872   if (loc && is_breakpoint (b)
5873       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5874       && bp_condition_evaluator (b) == condition_evaluation_both)
5875     {
5876       uiout->text (" (");
5877       uiout->field_string ("evaluated-by",
5878                            bp_location_condition_evaluator (loc));
5879       uiout->text (")");
5880     }
5881 }
5882
5883 static const char *
5884 bptype_string (enum bptype type)
5885 {
5886   struct ep_type_description
5887     {
5888       enum bptype type;
5889       const char *description;
5890     };
5891   static struct ep_type_description bptypes[] =
5892   {
5893     {bp_none, "?deleted?"},
5894     {bp_breakpoint, "breakpoint"},
5895     {bp_hardware_breakpoint, "hw breakpoint"},
5896     {bp_single_step, "sw single-step"},
5897     {bp_until, "until"},
5898     {bp_finish, "finish"},
5899     {bp_watchpoint, "watchpoint"},
5900     {bp_hardware_watchpoint, "hw watchpoint"},
5901     {bp_read_watchpoint, "read watchpoint"},
5902     {bp_access_watchpoint, "acc watchpoint"},
5903     {bp_longjmp, "longjmp"},
5904     {bp_longjmp_resume, "longjmp resume"},
5905     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5906     {bp_exception, "exception"},
5907     {bp_exception_resume, "exception resume"},
5908     {bp_step_resume, "step resume"},
5909     {bp_hp_step_resume, "high-priority step resume"},
5910     {bp_watchpoint_scope, "watchpoint scope"},
5911     {bp_call_dummy, "call dummy"},
5912     {bp_std_terminate, "std::terminate"},
5913     {bp_shlib_event, "shlib events"},
5914     {bp_thread_event, "thread events"},
5915     {bp_overlay_event, "overlay events"},
5916     {bp_longjmp_master, "longjmp master"},
5917     {bp_std_terminate_master, "std::terminate master"},
5918     {bp_exception_master, "exception master"},
5919     {bp_catchpoint, "catchpoint"},
5920     {bp_tracepoint, "tracepoint"},
5921     {bp_fast_tracepoint, "fast tracepoint"},
5922     {bp_static_tracepoint, "static tracepoint"},
5923     {bp_dprintf, "dprintf"},
5924     {bp_jit_event, "jit events"},
5925     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5926     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5927   };
5928
5929   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5930       || ((int) type != bptypes[(int) type].type))
5931     internal_error (__FILE__, __LINE__,
5932                     _("bptypes table does not describe type #%d."),
5933                     (int) type);
5934
5935   return bptypes[(int) type].description;
5936 }
5937
5938 /* For MI, output a field named 'thread-groups' with a list as the value.
5939    For CLI, prefix the list with the string 'inf'. */
5940
5941 static void
5942 output_thread_groups (struct ui_out *uiout,
5943                       const char *field_name,
5944                       const std::vector<int> &inf_nums,
5945                       int mi_only)
5946 {
5947   int is_mi = uiout->is_mi_like_p ();
5948
5949   /* For backward compatibility, don't display inferiors in CLI unless
5950      there are several.  Always display them for MI. */
5951   if (!is_mi && mi_only)
5952     return;
5953
5954   ui_out_emit_list list_emitter (uiout, field_name);
5955
5956   for (size_t i = 0; i < inf_nums.size (); i++)
5957     {
5958       if (is_mi)
5959         {
5960           char mi_group[10];
5961
5962           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5963           uiout->field_string (NULL, mi_group);
5964         }
5965       else
5966         {
5967           if (i == 0)
5968             uiout->text (" inf ");
5969           else
5970             uiout->text (", ");
5971         
5972           uiout->text (plongest (inf_nums[i]));
5973         }
5974     }
5975 }
5976
5977 /* Print B to gdb_stdout.  If RAW_LOC, print raw breakpoint locations
5978    instead of going via breakpoint_ops::print_one.  This makes "maint
5979    info breakpoints" show the software breakpoint locations of
5980    catchpoints, which are considered internal implementation
5981    detail.  */
5982
5983 static void
5984 print_one_breakpoint_location (struct breakpoint *b,
5985                                struct bp_location *loc,
5986                                int loc_number,
5987                                struct bp_location **last_loc,
5988                                int allflag, bool raw_loc)
5989 {
5990   struct command_line *l;
5991   static char bpenables[] = "nynny";
5992
5993   struct ui_out *uiout = current_uiout;
5994   int header_of_multiple = 0;
5995   int part_of_multiple = (loc != NULL);
5996   struct value_print_options opts;
5997
5998   get_user_print_options (&opts);
5999
6000   gdb_assert (!loc || loc_number != 0);
6001   /* See comment in print_one_breakpoint concerning treatment of
6002      breakpoints with single disabled location.  */
6003   if (loc == NULL 
6004       && (b->loc != NULL 
6005           && (b->loc->next != NULL || !b->loc->enabled)))
6006     header_of_multiple = 1;
6007   if (loc == NULL)
6008     loc = b->loc;
6009
6010   annotate_record ();
6011
6012   /* 1 */
6013   annotate_field (0);
6014   if (part_of_multiple)
6015     uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6016   else
6017     uiout->field_int ("number", b->number);
6018
6019   /* 2 */
6020   annotate_field (1);
6021   if (part_of_multiple)
6022     uiout->field_skip ("type");
6023   else
6024     uiout->field_string ("type", bptype_string (b->type));
6025
6026   /* 3 */
6027   annotate_field (2);
6028   if (part_of_multiple)
6029     uiout->field_skip ("disp");
6030   else
6031     uiout->field_string ("disp", bpdisp_text (b->disposition));
6032
6033   /* 4 */
6034   annotate_field (3);
6035   if (part_of_multiple)
6036     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6037   else
6038     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6039
6040   /* 5 and 6 */
6041   if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
6042     b->ops->print_one (b, last_loc);
6043   else
6044     {
6045       if (is_watchpoint (b))
6046         {
6047           struct watchpoint *w = (struct watchpoint *) b;
6048
6049           /* Field 4, the address, is omitted (which makes the columns
6050              not line up too nicely with the headers, but the effect
6051              is relatively readable).  */
6052           if (opts.addressprint)
6053             uiout->field_skip ("addr");
6054           annotate_field (5);
6055           uiout->field_string ("what", w->exp_string);
6056         }
6057       else if (!is_catchpoint (b) || is_exception_catchpoint (b))
6058         {
6059           if (opts.addressprint)
6060             {
6061               annotate_field (4);
6062               if (header_of_multiple)
6063                 uiout->field_string ("addr", "<MULTIPLE>");
6064               else if (b->loc == NULL || loc->shlib_disabled)
6065                 uiout->field_string ("addr", "<PENDING>");
6066               else
6067                 uiout->field_core_addr ("addr",
6068                                         loc->gdbarch, loc->address);
6069             }
6070           annotate_field (5);
6071           if (!header_of_multiple)
6072             print_breakpoint_location (b, loc);
6073           if (b->loc)
6074             *last_loc = b->loc;
6075         }
6076     }
6077
6078   if (loc != NULL && !header_of_multiple)
6079     {
6080       std::vector<int> inf_nums;
6081       int mi_only = 1;
6082
6083       for (inferior *inf : all_inferiors ())
6084         {
6085           if (inf->pspace == loc->pspace)
6086             inf_nums.push_back (inf->num);
6087         }
6088
6089         /* For backward compatibility, don't display inferiors in CLI unless
6090            there are several.  Always display for MI. */
6091         if (allflag
6092             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6093                 && (number_of_program_spaces () > 1
6094                     || number_of_inferiors () > 1)
6095                 /* LOC is for existing B, it cannot be in
6096                    moribund_locations and thus having NULL OWNER.  */
6097                 && loc->owner->type != bp_catchpoint))
6098         mi_only = 0;
6099       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6100     }
6101
6102   if (!part_of_multiple)
6103     {
6104       if (b->thread != -1)
6105         {
6106           /* FIXME: This seems to be redundant and lost here; see the
6107              "stop only in" line a little further down.  */
6108           uiout->text (" thread ");
6109           uiout->field_int ("thread", b->thread);
6110         }
6111       else if (b->task != 0)
6112         {
6113           uiout->text (" task ");
6114           uiout->field_int ("task", b->task);
6115         }
6116     }
6117
6118   uiout->text ("\n");
6119
6120   if (!part_of_multiple)
6121     b->ops->print_one_detail (b, uiout);
6122
6123   if (part_of_multiple && frame_id_p (b->frame_id))
6124     {
6125       annotate_field (6);
6126       uiout->text ("\tstop only in stack frame at ");
6127       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6128          the frame ID.  */
6129       uiout->field_core_addr ("frame",
6130                               b->gdbarch, b->frame_id.stack_addr);
6131       uiout->text ("\n");
6132     }
6133   
6134   if (!part_of_multiple && b->cond_string)
6135     {
6136       annotate_field (7);
6137       if (is_tracepoint (b))
6138         uiout->text ("\ttrace only if ");
6139       else
6140         uiout->text ("\tstop only if ");
6141       uiout->field_string ("cond", b->cond_string);
6142
6143       /* Print whether the target is doing the breakpoint's condition
6144          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6145       if (is_breakpoint (b)
6146           && breakpoint_condition_evaluation_mode ()
6147           == condition_evaluation_target)
6148         {
6149           uiout->text (" (");
6150           uiout->field_string ("evaluated-by",
6151                                bp_condition_evaluator (b));
6152           uiout->text (" evals)");
6153         }
6154       uiout->text ("\n");
6155     }
6156
6157   if (!part_of_multiple && b->thread != -1)
6158     {
6159       /* FIXME should make an annotation for this.  */
6160       uiout->text ("\tstop only in thread ");
6161       if (uiout->is_mi_like_p ())
6162         uiout->field_int ("thread", b->thread);
6163       else
6164         {
6165           struct thread_info *thr = find_thread_global_id (b->thread);
6166
6167           uiout->field_string ("thread", print_thread_id (thr));
6168         }
6169       uiout->text ("\n");
6170     }
6171   
6172   if (!part_of_multiple)
6173     {
6174       if (b->hit_count)
6175         {
6176           /* FIXME should make an annotation for this.  */
6177           if (is_catchpoint (b))
6178             uiout->text ("\tcatchpoint");
6179           else if (is_tracepoint (b))
6180             uiout->text ("\ttracepoint");
6181           else
6182             uiout->text ("\tbreakpoint");
6183           uiout->text (" already hit ");
6184           uiout->field_int ("times", b->hit_count);
6185           if (b->hit_count == 1)
6186             uiout->text (" time\n");
6187           else
6188             uiout->text (" times\n");
6189         }
6190       else
6191         {
6192           /* Output the count also if it is zero, but only if this is mi.  */
6193           if (uiout->is_mi_like_p ())
6194             uiout->field_int ("times", b->hit_count);
6195         }
6196     }
6197
6198   if (!part_of_multiple && b->ignore_count)
6199     {
6200       annotate_field (8);
6201       uiout->text ("\tignore next ");
6202       uiout->field_int ("ignore", b->ignore_count);
6203       uiout->text (" hits\n");
6204     }
6205
6206   /* Note that an enable count of 1 corresponds to "enable once"
6207      behavior, which is reported by the combination of enablement and
6208      disposition, so we don't need to mention it here.  */
6209   if (!part_of_multiple && b->enable_count > 1)
6210     {
6211       annotate_field (8);
6212       uiout->text ("\tdisable after ");
6213       /* Tweak the wording to clarify that ignore and enable counts
6214          are distinct, and have additive effect.  */
6215       if (b->ignore_count)
6216         uiout->text ("additional ");
6217       else
6218         uiout->text ("next ");
6219       uiout->field_int ("enable", b->enable_count);
6220       uiout->text (" hits\n");
6221     }
6222
6223   if (!part_of_multiple && is_tracepoint (b))
6224     {
6225       struct tracepoint *tp = (struct tracepoint *) b;
6226
6227       if (tp->traceframe_usage)
6228         {
6229           uiout->text ("\ttrace buffer usage ");
6230           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6231           uiout->text (" bytes\n");
6232         }
6233     }
6234
6235   l = b->commands ? b->commands.get () : NULL;
6236   if (!part_of_multiple && l)
6237     {
6238       annotate_field (9);
6239       ui_out_emit_tuple tuple_emitter (uiout, "script");
6240       print_command_lines (uiout, l, 4);
6241     }
6242
6243   if (is_tracepoint (b))
6244     {
6245       struct tracepoint *t = (struct tracepoint *) b;
6246
6247       if (!part_of_multiple && t->pass_count)
6248         {
6249           annotate_field (10);
6250           uiout->text ("\tpass count ");
6251           uiout->field_int ("pass", t->pass_count);
6252           uiout->text (" \n");
6253         }
6254
6255       /* Don't display it when tracepoint or tracepoint location is
6256          pending.   */
6257       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6258         {
6259           annotate_field (11);
6260
6261           if (uiout->is_mi_like_p ())
6262             uiout->field_string ("installed",
6263                                  loc->inserted ? "y" : "n");
6264           else
6265             {
6266               if (loc->inserted)
6267                 uiout->text ("\t");
6268               else
6269                 uiout->text ("\tnot ");
6270               uiout->text ("installed on target\n");
6271             }
6272         }
6273     }
6274
6275   if (uiout->is_mi_like_p () && !part_of_multiple)
6276     {
6277       if (is_watchpoint (b))
6278         {
6279           struct watchpoint *w = (struct watchpoint *) b;
6280
6281           uiout->field_string ("original-location", w->exp_string);
6282         }
6283       else if (b->location != NULL
6284                && event_location_to_string (b->location.get ()) != NULL)
6285         uiout->field_string ("original-location",
6286                              event_location_to_string (b->location.get ()));
6287     }
6288 }
6289
6290 /* See breakpoint.h. */
6291
6292 bool fix_multi_location_breakpoint_output_globally = false;
6293
6294 static void
6295 print_one_breakpoint (struct breakpoint *b,
6296                       struct bp_location **last_loc, 
6297                       int allflag)
6298 {
6299   struct ui_out *uiout = current_uiout;
6300   bool use_fixed_output
6301     = (uiout->test_flags (fix_multi_location_breakpoint_output)
6302        || fix_multi_location_breakpoint_output_globally);
6303
6304   gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6305   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
6306
6307   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6308      are outside.  */
6309   if (!use_fixed_output)
6310     bkpt_tuple_emitter.reset ();
6311
6312   /* If this breakpoint has custom print function,
6313      it's already printed.  Otherwise, print individual
6314      locations, if any.  */
6315   if (b->ops == NULL
6316       || b->ops->print_one == NULL
6317       || allflag)
6318     {
6319       /* If breakpoint has a single location that is disabled, we
6320          print it as if it had several locations, since otherwise it's
6321          hard to represent "breakpoint enabled, location disabled"
6322          situation.
6323
6324          Note that while hardware watchpoints have several locations
6325          internally, that's not a property exposed to users.
6326
6327          Likewise, while catchpoints may be implemented with
6328          breakpoints (e.g., catch throw), that's not a property
6329          exposed to users.  We do however display the internal
6330          breakpoint locations with "maint info breakpoints".  */
6331       if (!is_hardware_watchpoint (b)
6332           && (!is_catchpoint (b) || is_exception_catchpoint (b))
6333           && (allflag
6334               || (b->loc && (b->loc->next || !b->loc->enabled))))
6335         {
6336           gdb::optional<ui_out_emit_list> locations_list;
6337
6338           /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6339              MI record.  For later versions, place breakpoint locations in a
6340              list.  */
6341           if (uiout->is_mi_like_p () && use_fixed_output)
6342             locations_list.emplace (uiout, "locations");
6343
6344           int n = 1;
6345           for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6346             {
6347               ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6348               print_one_breakpoint_location (b, loc, n, last_loc,
6349                                              allflag, allflag);
6350             }
6351         }
6352     }
6353 }
6354
6355 static int
6356 breakpoint_address_bits (struct breakpoint *b)
6357 {
6358   int print_address_bits = 0;
6359   struct bp_location *loc;
6360
6361   /* Software watchpoints that aren't watching memory don't have an
6362      address to print.  */
6363   if (is_no_memory_software_watchpoint (b))
6364     return 0;
6365
6366   for (loc = b->loc; loc; loc = loc->next)
6367     {
6368       int addr_bit;
6369
6370       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6371       if (addr_bit > print_address_bits)
6372         print_address_bits = addr_bit;
6373     }
6374
6375   return print_address_bits;
6376 }
6377
6378 /* See breakpoint.h.  */
6379
6380 void
6381 print_breakpoint (breakpoint *b)
6382 {
6383   struct bp_location *dummy_loc = NULL;
6384   print_one_breakpoint (b, &dummy_loc, 0);
6385 }
6386
6387 /* Return true if this breakpoint was set by the user, false if it is
6388    internal or momentary.  */
6389
6390 int
6391 user_breakpoint_p (struct breakpoint *b)
6392 {
6393   return b->number > 0;
6394 }
6395
6396 /* See breakpoint.h.  */
6397
6398 int
6399 pending_breakpoint_p (struct breakpoint *b)
6400 {
6401   return b->loc == NULL;
6402 }
6403
6404 /* Print information on breakpoints (including watchpoints and tracepoints).
6405
6406    If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6407    understood by number_or_range_parser.  Only breakpoints included in this
6408    list are then printed.
6409
6410    If SHOW_INTERNAL is true, print internal breakpoints.
6411
6412    If FILTER is non-NULL, call it on each breakpoint and only include the
6413    ones for which it returns true.
6414
6415    Return the total number of breakpoints listed.  */
6416
6417 static int
6418 breakpoint_1 (const char *bp_num_list, bool show_internal,
6419               int (*filter) (const struct breakpoint *))
6420 {
6421   struct breakpoint *b;
6422   struct bp_location *last_loc = NULL;
6423   int nr_printable_breakpoints;
6424   struct value_print_options opts;
6425   int print_address_bits = 0;
6426   int print_type_col_width = 14;
6427   struct ui_out *uiout = current_uiout;
6428
6429   get_user_print_options (&opts);
6430
6431   /* Compute the number of rows in the table, as well as the size
6432      required for address fields.  */
6433   nr_printable_breakpoints = 0;
6434   ALL_BREAKPOINTS (b)
6435     {
6436       /* If we have a filter, only list the breakpoints it accepts.  */
6437       if (filter && !filter (b))
6438         continue;
6439
6440       /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6441          accept.  Skip the others.  */
6442       if (bp_num_list != NULL && *bp_num_list != '\0')
6443         {
6444           if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
6445             continue;
6446           if (!show_internal && !number_is_in_list (bp_num_list, b->number))
6447             continue;
6448         }
6449
6450       if (show_internal || user_breakpoint_p (b))
6451         {
6452           int addr_bit, type_len;
6453
6454           addr_bit = breakpoint_address_bits (b);
6455           if (addr_bit > print_address_bits)
6456             print_address_bits = addr_bit;
6457
6458           type_len = strlen (bptype_string (b->type));
6459           if (type_len > print_type_col_width)
6460             print_type_col_width = type_len;
6461
6462           nr_printable_breakpoints++;
6463         }
6464     }
6465
6466   {
6467     ui_out_emit_table table_emitter (uiout,
6468                                      opts.addressprint ? 6 : 5,
6469                                      nr_printable_breakpoints,
6470                                      "BreakpointTable");
6471
6472     if (nr_printable_breakpoints > 0)
6473       annotate_breakpoints_headers ();
6474     if (nr_printable_breakpoints > 0)
6475       annotate_field (0);
6476     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6477     if (nr_printable_breakpoints > 0)
6478       annotate_field (1);
6479     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6480     if (nr_printable_breakpoints > 0)
6481       annotate_field (2);
6482     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6483     if (nr_printable_breakpoints > 0)
6484       annotate_field (3);
6485     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6486     if (opts.addressprint)
6487       {
6488         if (nr_printable_breakpoints > 0)
6489           annotate_field (4);
6490         if (print_address_bits <= 32)
6491           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6492         else
6493           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6494       }
6495     if (nr_printable_breakpoints > 0)
6496       annotate_field (5);
6497     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6498     uiout->table_body ();
6499     if (nr_printable_breakpoints > 0)
6500       annotate_breakpoints_table ();
6501
6502     ALL_BREAKPOINTS (b)
6503       {
6504         QUIT;
6505         /* If we have a filter, only list the breakpoints it accepts.  */
6506         if (filter && !filter (b))
6507           continue;
6508
6509         /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6510            accept.  Skip the others.  */
6511
6512         if (bp_num_list != NULL && *bp_num_list != '\0')
6513           {
6514             if (show_internal)  /* maintenance info breakpoint */
6515               {
6516                 if (parse_and_eval_long (bp_num_list) != b->number)
6517                   continue;
6518               }
6519             else                /* all others */
6520               {
6521                 if (!number_is_in_list (bp_num_list, b->number))
6522                   continue;
6523               }
6524           }
6525         /* We only print out user settable breakpoints unless the
6526            show_internal is set.  */
6527         if (show_internal || user_breakpoint_p (b))
6528           print_one_breakpoint (b, &last_loc, show_internal);
6529       }
6530   }
6531
6532   if (nr_printable_breakpoints == 0)
6533     {
6534       /* If there's a filter, let the caller decide how to report
6535          empty list.  */
6536       if (!filter)
6537         {
6538           if (bp_num_list == NULL || *bp_num_list == '\0')
6539             uiout->message ("No breakpoints or watchpoints.\n");
6540           else
6541             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6542                             bp_num_list);
6543         }
6544     }
6545   else
6546     {
6547       if (last_loc && !server_command)
6548         set_next_address (last_loc->gdbarch, last_loc->address);
6549     }
6550
6551   /* FIXME?  Should this be moved up so that it is only called when
6552      there have been breakpoints? */
6553   annotate_breakpoints_table_end ();
6554
6555   return nr_printable_breakpoints;
6556 }
6557
6558 /* Display the value of default-collect in a way that is generally
6559    compatible with the breakpoint list.  */
6560
6561 static void
6562 default_collect_info (void)
6563 {
6564   struct ui_out *uiout = current_uiout;
6565
6566   /* If it has no value (which is frequently the case), say nothing; a
6567      message like "No default-collect." gets in user's face when it's
6568      not wanted.  */
6569   if (!*default_collect)
6570     return;
6571
6572   /* The following phrase lines up nicely with per-tracepoint collect
6573      actions.  */
6574   uiout->text ("default collect ");
6575   uiout->field_string ("default-collect", default_collect);
6576   uiout->text (" \n");
6577 }
6578   
6579 static void
6580 info_breakpoints_command (const char *args, int from_tty)
6581 {
6582   breakpoint_1 (args, false, NULL);
6583
6584   default_collect_info ();
6585 }
6586
6587 static void
6588 info_watchpoints_command (const char *args, int from_tty)
6589 {
6590   int num_printed = breakpoint_1 (args, false, is_watchpoint);
6591   struct ui_out *uiout = current_uiout;
6592
6593   if (num_printed == 0)
6594     {
6595       if (args == NULL || *args == '\0')
6596         uiout->message ("No watchpoints.\n");
6597       else
6598         uiout->message ("No watchpoint matching '%s'.\n", args);
6599     }
6600 }
6601
6602 static void
6603 maintenance_info_breakpoints (const char *args, int from_tty)
6604 {
6605   breakpoint_1 (args, true, NULL);
6606
6607   default_collect_info ();
6608 }
6609
6610 static int
6611 breakpoint_has_pc (struct breakpoint *b,
6612                    struct program_space *pspace,
6613                    CORE_ADDR pc, struct obj_section *section)
6614 {
6615   struct bp_location *bl = b->loc;
6616
6617   for (; bl; bl = bl->next)
6618     {
6619       if (bl->pspace == pspace
6620           && bl->address == pc
6621           && (!overlay_debugging || bl->section == section))
6622         return 1;         
6623     }
6624   return 0;
6625 }
6626
6627 /* Print a message describing any user-breakpoints set at PC.  This
6628    concerns with logical breakpoints, so we match program spaces, not
6629    address spaces.  */
6630
6631 static void
6632 describe_other_breakpoints (struct gdbarch *gdbarch,
6633                             struct program_space *pspace, CORE_ADDR pc,
6634                             struct obj_section *section, int thread)
6635 {
6636   int others = 0;
6637   struct breakpoint *b;
6638
6639   ALL_BREAKPOINTS (b)
6640     others += (user_breakpoint_p (b)
6641                && breakpoint_has_pc (b, pspace, pc, section));
6642   if (others > 0)
6643     {
6644       if (others == 1)
6645         printf_filtered (_("Note: breakpoint "));
6646       else /* if (others == ???) */
6647         printf_filtered (_("Note: breakpoints "));
6648       ALL_BREAKPOINTS (b)
6649         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6650           {
6651             others--;
6652             printf_filtered ("%d", b->number);
6653             if (b->thread == -1 && thread != -1)
6654               printf_filtered (" (all threads)");
6655             else if (b->thread != -1)
6656               printf_filtered (" (thread %d)", b->thread);
6657             printf_filtered ("%s%s ",
6658                              ((b->enable_state == bp_disabled
6659                                || b->enable_state == bp_call_disabled)
6660                               ? " (disabled)"
6661                               : ""),
6662                              (others > 1) ? "," 
6663                              : ((others == 1) ? " and" : ""));
6664           }
6665       printf_filtered (_("also set at pc "));
6666       fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6667       printf_filtered (".\n");
6668     }
6669 }
6670 \f
6671
6672 /* Return true iff it is meaningful to use the address member of LOC.
6673    For some breakpoint types, the locations' address members are
6674    irrelevant and it makes no sense to attempt to compare them to
6675    other addresses (or use them for any other purpose either).
6676
6677    More specifically, software watchpoints and catchpoints that are
6678    not backed by breakpoints always have a zero valued location
6679    address and we don't want to mark breakpoints of any of these types
6680    to be a duplicate of an actual breakpoint location at address
6681    zero.  */
6682
6683 static bool
6684 bl_address_is_meaningful (bp_location *loc)
6685 {
6686   return loc->loc_type != bp_loc_other;
6687 }
6688
6689 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6690    true if LOC1 and LOC2 represent the same watchpoint location.  */
6691
6692 static int
6693 watchpoint_locations_match (struct bp_location *loc1, 
6694                             struct bp_location *loc2)
6695 {
6696   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6697   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6698
6699   /* Both of them must exist.  */
6700   gdb_assert (w1 != NULL);
6701   gdb_assert (w2 != NULL);
6702
6703   /* If the target can evaluate the condition expression in hardware,
6704      then we we need to insert both watchpoints even if they are at
6705      the same place.  Otherwise the watchpoint will only trigger when
6706      the condition of whichever watchpoint was inserted evaluates to
6707      true, not giving a chance for GDB to check the condition of the
6708      other watchpoint.  */
6709   if ((w1->cond_exp
6710        && target_can_accel_watchpoint_condition (loc1->address, 
6711                                                  loc1->length,
6712                                                  loc1->watchpoint_type,
6713                                                  w1->cond_exp.get ()))
6714       || (w2->cond_exp
6715           && target_can_accel_watchpoint_condition (loc2->address, 
6716                                                     loc2->length,
6717                                                     loc2->watchpoint_type,
6718                                                     w2->cond_exp.get ())))
6719     return 0;
6720
6721   /* Note that this checks the owner's type, not the location's.  In
6722      case the target does not support read watchpoints, but does
6723      support access watchpoints, we'll have bp_read_watchpoint
6724      watchpoints with hw_access locations.  Those should be considered
6725      duplicates of hw_read locations.  The hw_read locations will
6726      become hw_access locations later.  */
6727   return (loc1->owner->type == loc2->owner->type
6728           && loc1->pspace->aspace == loc2->pspace->aspace
6729           && loc1->address == loc2->address
6730           && loc1->length == loc2->length);
6731 }
6732
6733 /* See breakpoint.h.  */
6734
6735 int
6736 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6737                           const address_space *aspace2, CORE_ADDR addr2)
6738 {
6739   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6740            || aspace1 == aspace2)
6741           && addr1 == addr2);
6742 }
6743
6744 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6745    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6746    matches ASPACE2.  On targets that have global breakpoints, the address
6747    space doesn't really matter.  */
6748
6749 static int
6750 breakpoint_address_match_range (const address_space *aspace1,
6751                                 CORE_ADDR addr1,
6752                                 int len1, const address_space *aspace2,
6753                                 CORE_ADDR addr2)
6754 {
6755   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6756            || aspace1 == aspace2)
6757           && addr2 >= addr1 && addr2 < addr1 + len1);
6758 }
6759
6760 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6761    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6762    matches the breakpoint's address space.  On targets that have global
6763    breakpoints, the address space doesn't really matter.  */
6764
6765 static int
6766 breakpoint_location_address_match (struct bp_location *bl,
6767                                    const address_space *aspace,
6768                                    CORE_ADDR addr)
6769 {
6770   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6771                                     aspace, addr)
6772           || (bl->length
6773               && breakpoint_address_match_range (bl->pspace->aspace,
6774                                                  bl->address, bl->length,
6775                                                  aspace, addr)));
6776 }
6777
6778 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6779    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6780    match happens only if ASPACE matches the breakpoint's address
6781    space.  On targets that have global breakpoints, the address space
6782    doesn't really matter.  */
6783
6784 static int
6785 breakpoint_location_address_range_overlap (struct bp_location *bl,
6786                                            const address_space *aspace,
6787                                            CORE_ADDR addr, int len)
6788 {
6789   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6790       || bl->pspace->aspace == aspace)
6791     {
6792       int bl_len = bl->length != 0 ? bl->length : 1;
6793
6794       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6795         return 1;
6796     }
6797   return 0;
6798 }
6799
6800 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6801    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6802    true, otherwise returns false.  */
6803
6804 static int
6805 tracepoint_locations_match (struct bp_location *loc1,
6806                             struct bp_location *loc2)
6807 {
6808   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6809     /* Since tracepoint locations are never duplicated with others', tracepoint
6810        locations at the same address of different tracepoints are regarded as
6811        different locations.  */
6812     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6813   else
6814     return 0;
6815 }
6816
6817 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6818    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
6819    the same location.  */
6820
6821 static int
6822 breakpoint_locations_match (struct bp_location *loc1, 
6823                             struct bp_location *loc2)
6824 {
6825   int hw_point1, hw_point2;
6826
6827   /* Both of them must not be in moribund_locations.  */
6828   gdb_assert (loc1->owner != NULL);
6829   gdb_assert (loc2->owner != NULL);
6830
6831   hw_point1 = is_hardware_watchpoint (loc1->owner);
6832   hw_point2 = is_hardware_watchpoint (loc2->owner);
6833
6834   if (hw_point1 != hw_point2)
6835     return 0;
6836   else if (hw_point1)
6837     return watchpoint_locations_match (loc1, loc2);
6838   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6839     return tracepoint_locations_match (loc1, loc2);
6840   else
6841     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6842     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6843                                      loc2->pspace->aspace, loc2->address)
6844             && loc1->length == loc2->length);
6845 }
6846
6847 static void
6848 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6849                                int bnum, int have_bnum)
6850 {
6851   /* The longest string possibly returned by hex_string_custom
6852      is 50 chars.  These must be at least that big for safety.  */
6853   char astr1[64];
6854   char astr2[64];
6855
6856   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6857   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6858   if (have_bnum)
6859     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6860              bnum, astr1, astr2);
6861   else
6862     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6863 }
6864
6865 /* Adjust a breakpoint's address to account for architectural
6866    constraints on breakpoint placement.  Return the adjusted address.
6867    Note: Very few targets require this kind of adjustment.  For most
6868    targets, this function is simply the identity function.  */
6869
6870 static CORE_ADDR
6871 adjust_breakpoint_address (struct gdbarch *gdbarch,
6872                            CORE_ADDR bpaddr, enum bptype bptype)
6873 {
6874   if (bptype == bp_watchpoint
6875       || bptype == bp_hardware_watchpoint
6876       || bptype == bp_read_watchpoint
6877       || bptype == bp_access_watchpoint
6878       || bptype == bp_catchpoint)
6879     {
6880       /* Watchpoints and the various bp_catch_* eventpoints should not
6881          have their addresses modified.  */
6882       return bpaddr;
6883     }
6884   else if (bptype == bp_single_step)
6885     {
6886       /* Single-step breakpoints should not have their addresses
6887          modified.  If there's any architectural constrain that
6888          applies to this address, then it should have already been
6889          taken into account when the breakpoint was created in the
6890          first place.  If we didn't do this, stepping through e.g.,
6891          Thumb-2 IT blocks would break.  */
6892       return bpaddr;
6893     }
6894   else
6895     {
6896       CORE_ADDR adjusted_bpaddr = bpaddr;
6897
6898       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6899         {
6900           /* Some targets have architectural constraints on the placement
6901              of breakpoint instructions.  Obtain the adjusted address.  */
6902           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6903         }
6904
6905       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6906
6907       /* An adjusted breakpoint address can significantly alter
6908          a user's expectations.  Print a warning if an adjustment
6909          is required.  */
6910       if (adjusted_bpaddr != bpaddr)
6911         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6912
6913       return adjusted_bpaddr;
6914     }
6915 }
6916
6917 static bp_loc_type
6918 bp_location_from_bp_type (bptype type)
6919 {
6920   switch (type)
6921     {
6922     case bp_breakpoint:
6923     case bp_single_step:
6924     case bp_until:
6925     case bp_finish:
6926     case bp_longjmp:
6927     case bp_longjmp_resume:
6928     case bp_longjmp_call_dummy:
6929     case bp_exception:
6930     case bp_exception_resume:
6931     case bp_step_resume:
6932     case bp_hp_step_resume:
6933     case bp_watchpoint_scope:
6934     case bp_call_dummy:
6935     case bp_std_terminate:
6936     case bp_shlib_event:
6937     case bp_thread_event:
6938     case bp_overlay_event:
6939     case bp_jit_event:
6940     case bp_longjmp_master:
6941     case bp_std_terminate_master:
6942     case bp_exception_master:
6943     case bp_gnu_ifunc_resolver:
6944     case bp_gnu_ifunc_resolver_return:
6945     case bp_dprintf:
6946       return bp_loc_software_breakpoint;
6947     case bp_hardware_breakpoint:
6948       return bp_loc_hardware_breakpoint;
6949     case bp_hardware_watchpoint:
6950     case bp_read_watchpoint:
6951     case bp_access_watchpoint:
6952       return bp_loc_hardware_watchpoint;
6953     case bp_watchpoint:
6954     case bp_catchpoint:
6955     case bp_tracepoint:
6956     case bp_fast_tracepoint:
6957     case bp_static_tracepoint:
6958       return bp_loc_other;
6959     default:
6960       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6961     }
6962 }
6963
6964 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
6965 {
6966   this->owner = owner;
6967   this->cond_bytecode = NULL;
6968   this->shlib_disabled = 0;
6969   this->enabled = 1;
6970
6971   this->loc_type = type;
6972
6973   if (this->loc_type == bp_loc_software_breakpoint
6974       || this->loc_type == bp_loc_hardware_breakpoint)
6975     mark_breakpoint_location_modified (this);
6976
6977   this->refc = 1;
6978 }
6979
6980 bp_location::bp_location (breakpoint *owner)
6981   : bp_location::bp_location (owner,
6982                               bp_location_from_bp_type (owner->type))
6983 {
6984 }
6985
6986 /* Allocate a struct bp_location.  */
6987
6988 static struct bp_location *
6989 allocate_bp_location (struct breakpoint *bpt)
6990 {
6991   return bpt->ops->allocate_location (bpt);
6992 }
6993
6994 static void
6995 free_bp_location (struct bp_location *loc)
6996 {
6997   delete loc;
6998 }
6999
7000 /* Increment reference count.  */
7001
7002 static void
7003 incref_bp_location (struct bp_location *bl)
7004 {
7005   ++bl->refc;
7006 }
7007
7008 /* Decrement reference count.  If the reference count reaches 0,
7009    destroy the bp_location.  Sets *BLP to NULL.  */
7010
7011 static void
7012 decref_bp_location (struct bp_location **blp)
7013 {
7014   gdb_assert ((*blp)->refc > 0);
7015
7016   if (--(*blp)->refc == 0)
7017     free_bp_location (*blp);
7018   *blp = NULL;
7019 }
7020
7021 /* Add breakpoint B at the end of the global breakpoint chain.  */
7022
7023 static breakpoint *
7024 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7025 {
7026   struct breakpoint *b1;
7027   struct breakpoint *result = b.get ();
7028
7029   /* Add this breakpoint to the end of the chain so that a list of
7030      breakpoints will come out in order of increasing numbers.  */
7031
7032   b1 = breakpoint_chain;
7033   if (b1 == 0)
7034     breakpoint_chain = b.release ();
7035   else
7036     {
7037       while (b1->next)
7038         b1 = b1->next;
7039       b1->next = b.release ();
7040     }
7041
7042   return result;
7043 }
7044
7045 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7046
7047 static void
7048 init_raw_breakpoint_without_location (struct breakpoint *b,
7049                                       struct gdbarch *gdbarch,
7050                                       enum bptype bptype,
7051                                       const struct breakpoint_ops *ops)
7052 {
7053   gdb_assert (ops != NULL);
7054
7055   b->ops = ops;
7056   b->type = bptype;
7057   b->gdbarch = gdbarch;
7058   b->language = current_language->la_language;
7059   b->input_radix = input_radix;
7060   b->related_breakpoint = b;
7061 }
7062
7063 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7064    that has type BPTYPE and has no locations as yet.  */
7065
7066 static struct breakpoint *
7067 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7068                                      enum bptype bptype,
7069                                      const struct breakpoint_ops *ops)
7070 {
7071   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7072
7073   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7074   return add_to_breakpoint_chain (std::move (b));
7075 }
7076
7077 /* Initialize loc->function_name.  */
7078
7079 static void
7080 set_breakpoint_location_function (struct bp_location *loc)
7081 {
7082   gdb_assert (loc->owner != NULL);
7083
7084   if (loc->owner->type == bp_breakpoint
7085       || loc->owner->type == bp_hardware_breakpoint
7086       || is_tracepoint (loc->owner))
7087     {
7088       const char *function_name;
7089
7090       if (loc->msymbol != NULL
7091           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7092               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
7093         {
7094           struct breakpoint *b = loc->owner;
7095
7096           function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7097
7098           if (b->type == bp_breakpoint && b->loc == loc
7099               && loc->next == NULL && b->related_breakpoint == b)
7100             {
7101               /* Create only the whole new breakpoint of this type but do not
7102                  mess more complicated breakpoints with multiple locations.  */
7103               b->type = bp_gnu_ifunc_resolver;
7104               /* Remember the resolver's address for use by the return
7105                  breakpoint.  */
7106               loc->related_address = loc->address;
7107             }
7108         }
7109       else
7110         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7111
7112       if (function_name)
7113         loc->function_name = xstrdup (function_name);
7114     }
7115 }
7116
7117 /* Attempt to determine architecture of location identified by SAL.  */
7118 struct gdbarch *
7119 get_sal_arch (struct symtab_and_line sal)
7120 {
7121   if (sal.section)
7122     return get_objfile_arch (sal.section->objfile);
7123   if (sal.symtab)
7124     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7125
7126   return NULL;
7127 }
7128
7129 /* Low level routine for partially initializing a breakpoint of type
7130    BPTYPE.  The newly created breakpoint's address, section, source
7131    file name, and line number are provided by SAL.
7132
7133    It is expected that the caller will complete the initialization of
7134    the newly created breakpoint struct as well as output any status
7135    information regarding the creation of a new breakpoint.  */
7136
7137 static void
7138 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7139                      struct symtab_and_line sal, enum bptype bptype,
7140                      const struct breakpoint_ops *ops)
7141 {
7142   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7143
7144   add_location_to_breakpoint (b, &sal);
7145
7146   if (bptype != bp_catchpoint)
7147     gdb_assert (sal.pspace != NULL);
7148
7149   /* Store the program space that was used to set the breakpoint,
7150      except for ordinary breakpoints, which are independent of the
7151      program space.  */
7152   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7153     b->pspace = sal.pspace;
7154 }
7155
7156 /* set_raw_breakpoint is a low level routine for allocating and
7157    partially initializing a breakpoint of type BPTYPE.  The newly
7158    created breakpoint's address, section, source file name, and line
7159    number are provided by SAL.  The newly created and partially
7160    initialized breakpoint is added to the breakpoint chain and
7161    is also returned as the value of this function.
7162
7163    It is expected that the caller will complete the initialization of
7164    the newly created breakpoint struct as well as output any status
7165    information regarding the creation of a new breakpoint.  In
7166    particular, set_raw_breakpoint does NOT set the breakpoint
7167    number!  Care should be taken to not allow an error to occur
7168    prior to completing the initialization of the breakpoint.  If this
7169    should happen, a bogus breakpoint will be left on the chain.  */
7170
7171 struct breakpoint *
7172 set_raw_breakpoint (struct gdbarch *gdbarch,
7173                     struct symtab_and_line sal, enum bptype bptype,
7174                     const struct breakpoint_ops *ops)
7175 {
7176   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7177
7178   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7179   return add_to_breakpoint_chain (std::move (b));
7180 }
7181
7182 /* Call this routine when stepping and nexting to enable a breakpoint
7183    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7184    initiated the operation.  */
7185
7186 void
7187 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7188 {
7189   struct breakpoint *b, *b_tmp;
7190   int thread = tp->global_num;
7191
7192   /* To avoid having to rescan all objfile symbols at every step,
7193      we maintain a list of continually-inserted but always disabled
7194      longjmp "master" breakpoints.  Here, we simply create momentary
7195      clones of those and enable them for the requested thread.  */
7196   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7197     if (b->pspace == current_program_space
7198         && (b->type == bp_longjmp_master
7199             || b->type == bp_exception_master))
7200       {
7201         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7202         struct breakpoint *clone;
7203
7204         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7205            after their removal.  */
7206         clone = momentary_breakpoint_from_master (b, type,
7207                                                   &momentary_breakpoint_ops, 1);
7208         clone->thread = thread;
7209       }
7210
7211   tp->initiating_frame = frame;
7212 }
7213
7214 /* Delete all longjmp breakpoints from THREAD.  */
7215 void
7216 delete_longjmp_breakpoint (int thread)
7217 {
7218   struct breakpoint *b, *b_tmp;
7219
7220   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7221     if (b->type == bp_longjmp || b->type == bp_exception)
7222       {
7223         if (b->thread == thread)
7224           delete_breakpoint (b);
7225       }
7226 }
7227
7228 void
7229 delete_longjmp_breakpoint_at_next_stop (int thread)
7230 {
7231   struct breakpoint *b, *b_tmp;
7232
7233   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7234     if (b->type == bp_longjmp || b->type == bp_exception)
7235       {
7236         if (b->thread == thread)
7237           b->disposition = disp_del_at_next_stop;
7238       }
7239 }
7240
7241 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7242    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7243    pointer to any of them.  Return NULL if this system cannot place longjmp
7244    breakpoints.  */
7245
7246 struct breakpoint *
7247 set_longjmp_breakpoint_for_call_dummy (void)
7248 {
7249   struct breakpoint *b, *retval = NULL;
7250
7251   ALL_BREAKPOINTS (b)
7252     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7253       {
7254         struct breakpoint *new_b;
7255
7256         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7257                                                   &momentary_breakpoint_ops,
7258                                                   1);
7259         new_b->thread = inferior_thread ()->global_num;
7260
7261         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7262
7263         gdb_assert (new_b->related_breakpoint == new_b);
7264         if (retval == NULL)
7265           retval = new_b;
7266         new_b->related_breakpoint = retval;
7267         while (retval->related_breakpoint != new_b->related_breakpoint)
7268           retval = retval->related_breakpoint;
7269         retval->related_breakpoint = new_b;
7270       }
7271
7272   return retval;
7273 }
7274
7275 /* Verify all existing dummy frames and their associated breakpoints for
7276    TP.  Remove those which can no longer be found in the current frame
7277    stack.
7278
7279    You should call this function only at places where it is safe to currently
7280    unwind the whole stack.  Failed stack unwind would discard live dummy
7281    frames.  */
7282
7283 void
7284 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7285 {
7286   struct breakpoint *b, *b_tmp;
7287
7288   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7289     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7290       {
7291         struct breakpoint *dummy_b = b->related_breakpoint;
7292
7293         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7294           dummy_b = dummy_b->related_breakpoint;
7295         if (dummy_b->type != bp_call_dummy
7296             || frame_find_by_id (dummy_b->frame_id) != NULL)
7297           continue;
7298         
7299         dummy_frame_discard (dummy_b->frame_id, tp);
7300
7301         while (b->related_breakpoint != b)
7302           {
7303             if (b_tmp == b->related_breakpoint)
7304               b_tmp = b->related_breakpoint->next;
7305             delete_breakpoint (b->related_breakpoint);
7306           }
7307         delete_breakpoint (b);
7308       }
7309 }
7310
7311 void
7312 enable_overlay_breakpoints (void)
7313 {
7314   struct breakpoint *b;
7315
7316   ALL_BREAKPOINTS (b)
7317     if (b->type == bp_overlay_event)
7318     {
7319       b->enable_state = bp_enabled;
7320       update_global_location_list (UGLL_MAY_INSERT);
7321       overlay_events_enabled = 1;
7322     }
7323 }
7324
7325 void
7326 disable_overlay_breakpoints (void)
7327 {
7328   struct breakpoint *b;
7329
7330   ALL_BREAKPOINTS (b)
7331     if (b->type == bp_overlay_event)
7332     {
7333       b->enable_state = bp_disabled;
7334       update_global_location_list (UGLL_DONT_INSERT);
7335       overlay_events_enabled = 0;
7336     }
7337 }
7338
7339 /* Set an active std::terminate breakpoint for each std::terminate
7340    master breakpoint.  */
7341 void
7342 set_std_terminate_breakpoint (void)
7343 {
7344   struct breakpoint *b, *b_tmp;
7345
7346   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7347     if (b->pspace == current_program_space
7348         && b->type == bp_std_terminate_master)
7349       {
7350         momentary_breakpoint_from_master (b, bp_std_terminate,
7351                                           &momentary_breakpoint_ops, 1);
7352       }
7353 }
7354
7355 /* Delete all the std::terminate breakpoints.  */
7356 void
7357 delete_std_terminate_breakpoint (void)
7358 {
7359   struct breakpoint *b, *b_tmp;
7360
7361   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7362     if (b->type == bp_std_terminate)
7363       delete_breakpoint (b);
7364 }
7365
7366 struct breakpoint *
7367 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7368 {
7369   struct breakpoint *b;
7370
7371   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7372                                   &internal_breakpoint_ops);
7373
7374   b->enable_state = bp_enabled;
7375   /* location has to be used or breakpoint_re_set will delete me.  */
7376   b->location = new_address_location (b->loc->address, NULL, 0);
7377
7378   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7379
7380   return b;
7381 }
7382
7383 struct lang_and_radix
7384   {
7385     enum language lang;
7386     int radix;
7387   };
7388
7389 /* Create a breakpoint for JIT code registration and unregistration.  */
7390
7391 struct breakpoint *
7392 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7393 {
7394   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7395                                      &internal_breakpoint_ops);
7396 }
7397
7398 /* Remove JIT code registration and unregistration breakpoint(s).  */
7399
7400 void
7401 remove_jit_event_breakpoints (void)
7402 {
7403   struct breakpoint *b, *b_tmp;
7404
7405   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7406     if (b->type == bp_jit_event
7407         && b->loc->pspace == current_program_space)
7408       delete_breakpoint (b);
7409 }
7410
7411 void
7412 remove_solib_event_breakpoints (void)
7413 {
7414   struct breakpoint *b, *b_tmp;
7415
7416   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7417     if (b->type == bp_shlib_event
7418         && b->loc->pspace == current_program_space)
7419       delete_breakpoint (b);
7420 }
7421
7422 /* See breakpoint.h.  */
7423
7424 void
7425 remove_solib_event_breakpoints_at_next_stop (void)
7426 {
7427   struct breakpoint *b, *b_tmp;
7428
7429   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7430     if (b->type == bp_shlib_event
7431         && b->loc->pspace == current_program_space)
7432       b->disposition = disp_del_at_next_stop;
7433 }
7434
7435 /* Helper for create_solib_event_breakpoint /
7436    create_and_insert_solib_event_breakpoint.  Allows specifying which
7437    INSERT_MODE to pass through to update_global_location_list.  */
7438
7439 static struct breakpoint *
7440 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7441                                  enum ugll_insert_mode insert_mode)
7442 {
7443   struct breakpoint *b;
7444
7445   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7446                                   &internal_breakpoint_ops);
7447   update_global_location_list_nothrow (insert_mode);
7448   return b;
7449 }
7450
7451 struct breakpoint *
7452 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7453 {
7454   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7455 }
7456
7457 /* See breakpoint.h.  */
7458
7459 struct breakpoint *
7460 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7461 {
7462   struct breakpoint *b;
7463
7464   /* Explicitly tell update_global_location_list to insert
7465      locations.  */
7466   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7467   if (!b->loc->inserted)
7468     {
7469       delete_breakpoint (b);
7470       return NULL;
7471     }
7472   return b;
7473 }
7474
7475 /* Disable any breakpoints that are on code in shared libraries.  Only
7476    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7477
7478 void
7479 disable_breakpoints_in_shlibs (void)
7480 {
7481   struct bp_location *loc, **locp_tmp;
7482
7483   ALL_BP_LOCATIONS (loc, locp_tmp)
7484   {
7485     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7486     struct breakpoint *b = loc->owner;
7487
7488     /* We apply the check to all breakpoints, including disabled for
7489        those with loc->duplicate set.  This is so that when breakpoint
7490        becomes enabled, or the duplicate is removed, gdb will try to
7491        insert all breakpoints.  If we don't set shlib_disabled here,
7492        we'll try to insert those breakpoints and fail.  */
7493     if (((b->type == bp_breakpoint)
7494          || (b->type == bp_jit_event)
7495          || (b->type == bp_hardware_breakpoint)
7496          || (is_tracepoint (b)))
7497         && loc->pspace == current_program_space
7498         && !loc->shlib_disabled
7499         && solib_name_from_address (loc->pspace, loc->address)
7500         )
7501       {
7502         loc->shlib_disabled = 1;
7503       }
7504   }
7505 }
7506
7507 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7508    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7509    disabled ones can just stay disabled.  */
7510
7511 static void
7512 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7513 {
7514   struct bp_location *loc, **locp_tmp;
7515   int disabled_shlib_breaks = 0;
7516
7517   ALL_BP_LOCATIONS (loc, locp_tmp)
7518   {
7519     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7520     struct breakpoint *b = loc->owner;
7521
7522     if (solib->pspace == loc->pspace
7523         && !loc->shlib_disabled
7524         && (((b->type == bp_breakpoint
7525               || b->type == bp_jit_event
7526               || b->type == bp_hardware_breakpoint)
7527              && (loc->loc_type == bp_loc_hardware_breakpoint
7528                  || loc->loc_type == bp_loc_software_breakpoint))
7529             || is_tracepoint (b))
7530         && solib_contains_address_p (solib, loc->address))
7531       {
7532         loc->shlib_disabled = 1;
7533         /* At this point, we cannot rely on remove_breakpoint
7534            succeeding so we must mark the breakpoint as not inserted
7535            to prevent future errors occurring in remove_breakpoints.  */
7536         loc->inserted = 0;
7537
7538         /* This may cause duplicate notifications for the same breakpoint.  */
7539         gdb::observers::breakpoint_modified.notify (b);
7540
7541         if (!disabled_shlib_breaks)
7542           {
7543             target_terminal::ours_for_output ();
7544             warning (_("Temporarily disabling breakpoints "
7545                        "for unloaded shared library \"%s\""),
7546                      solib->so_name);
7547           }
7548         disabled_shlib_breaks = 1;
7549       }
7550   }
7551 }
7552
7553 /* Disable any breakpoints and tracepoints in OBJFILE upon
7554    notification of free_objfile.  Only apply to enabled breakpoints,
7555    disabled ones can just stay disabled.  */
7556
7557 static void
7558 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7559 {
7560   struct breakpoint *b;
7561
7562   if (objfile == NULL)
7563     return;
7564
7565   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7566      managed by the user with add-symbol-file/remove-symbol-file.
7567      Similarly to how breakpoints in shared libraries are handled in
7568      response to "nosharedlibrary", mark breakpoints in such modules
7569      shlib_disabled so they end up uninserted on the next global
7570      location list update.  Shared libraries not loaded by the user
7571      aren't handled here -- they're already handled in
7572      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7573      solib_unloaded observer.  We skip objfiles that are not
7574      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7575      main objfile).  */
7576   if ((objfile->flags & OBJF_SHARED) == 0
7577       || (objfile->flags & OBJF_USERLOADED) == 0)
7578     return;
7579
7580   ALL_BREAKPOINTS (b)
7581     {
7582       struct bp_location *loc;
7583       int bp_modified = 0;
7584
7585       if (!is_breakpoint (b) && !is_tracepoint (b))
7586         continue;
7587
7588       for (loc = b->loc; loc != NULL; loc = loc->next)
7589         {
7590           CORE_ADDR loc_addr = loc->address;
7591
7592           if (loc->loc_type != bp_loc_hardware_breakpoint
7593               && loc->loc_type != bp_loc_software_breakpoint)
7594             continue;
7595
7596           if (loc->shlib_disabled != 0)
7597             continue;
7598
7599           if (objfile->pspace != loc->pspace)
7600             continue;
7601
7602           if (loc->loc_type != bp_loc_hardware_breakpoint
7603               && loc->loc_type != bp_loc_software_breakpoint)
7604             continue;
7605
7606           if (is_addr_in_objfile (loc_addr, objfile))
7607             {
7608               loc->shlib_disabled = 1;
7609               /* At this point, we don't know whether the object was
7610                  unmapped from the inferior or not, so leave the
7611                  inserted flag alone.  We'll handle failure to
7612                  uninsert quietly, in case the object was indeed
7613                  unmapped.  */
7614
7615               mark_breakpoint_location_modified (loc);
7616
7617               bp_modified = 1;
7618             }
7619         }
7620
7621       if (bp_modified)
7622         gdb::observers::breakpoint_modified.notify (b);
7623     }
7624 }
7625
7626 /* FORK & VFORK catchpoints.  */
7627
7628 /* An instance of this type is used to represent a fork or vfork
7629    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7630    to CATCH_FORK_BREAKPOINT_OPS.  */
7631
7632 struct fork_catchpoint : public breakpoint
7633 {
7634   /* Process id of a child process whose forking triggered this
7635      catchpoint.  This field is only valid immediately after this
7636      catchpoint has triggered.  */
7637   ptid_t forked_inferior_pid;
7638 };
7639
7640 /* Implement the "insert" breakpoint_ops method for fork
7641    catchpoints.  */
7642
7643 static int
7644 insert_catch_fork (struct bp_location *bl)
7645 {
7646   return target_insert_fork_catchpoint (inferior_ptid.pid ());
7647 }
7648
7649 /* Implement the "remove" breakpoint_ops method for fork
7650    catchpoints.  */
7651
7652 static int
7653 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7654 {
7655   return target_remove_fork_catchpoint (inferior_ptid.pid ());
7656 }
7657
7658 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7659    catchpoints.  */
7660
7661 static int
7662 breakpoint_hit_catch_fork (const struct bp_location *bl,
7663                            const address_space *aspace, CORE_ADDR bp_addr,
7664                            const struct target_waitstatus *ws)
7665 {
7666   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7667
7668   if (ws->kind != TARGET_WAITKIND_FORKED)
7669     return 0;
7670
7671   c->forked_inferior_pid = ws->value.related_pid;
7672   return 1;
7673 }
7674
7675 /* Implement the "print_it" breakpoint_ops method for fork
7676    catchpoints.  */
7677
7678 static enum print_stop_action
7679 print_it_catch_fork (bpstat bs)
7680 {
7681   struct ui_out *uiout = current_uiout;
7682   struct breakpoint *b = bs->breakpoint_at;
7683   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7684
7685   annotate_catchpoint (b->number);
7686   maybe_print_thread_hit_breakpoint (uiout);
7687   if (b->disposition == disp_del)
7688     uiout->text ("Temporary catchpoint ");
7689   else
7690     uiout->text ("Catchpoint ");
7691   if (uiout->is_mi_like_p ())
7692     {
7693       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7694       uiout->field_string ("disp", bpdisp_text (b->disposition));
7695     }
7696   uiout->field_int ("bkptno", b->number);
7697   uiout->text (" (forked process ");
7698   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7699   uiout->text ("), ");
7700   return PRINT_SRC_AND_LOC;
7701 }
7702
7703 /* Implement the "print_one" breakpoint_ops method for fork
7704    catchpoints.  */
7705
7706 static void
7707 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7708 {
7709   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7710   struct value_print_options opts;
7711   struct ui_out *uiout = current_uiout;
7712
7713   get_user_print_options (&opts);
7714
7715   /* Field 4, the address, is omitted (which makes the columns not
7716      line up too nicely with the headers, but the effect is relatively
7717      readable).  */
7718   if (opts.addressprint)
7719     uiout->field_skip ("addr");
7720   annotate_field (5);
7721   uiout->text ("fork");
7722   if (c->forked_inferior_pid != null_ptid)
7723     {
7724       uiout->text (", process ");
7725       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7726       uiout->spaces (1);
7727     }
7728
7729   if (uiout->is_mi_like_p ())
7730     uiout->field_string ("catch-type", "fork");
7731 }
7732
7733 /* Implement the "print_mention" breakpoint_ops method for fork
7734    catchpoints.  */
7735
7736 static void
7737 print_mention_catch_fork (struct breakpoint *b)
7738 {
7739   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7740 }
7741
7742 /* Implement the "print_recreate" breakpoint_ops method for fork
7743    catchpoints.  */
7744
7745 static void
7746 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7747 {
7748   fprintf_unfiltered (fp, "catch fork");
7749   print_recreate_thread (b, fp);
7750 }
7751
7752 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7753
7754 static struct breakpoint_ops catch_fork_breakpoint_ops;
7755
7756 /* Implement the "insert" breakpoint_ops method for vfork
7757    catchpoints.  */
7758
7759 static int
7760 insert_catch_vfork (struct bp_location *bl)
7761 {
7762   return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7763 }
7764
7765 /* Implement the "remove" breakpoint_ops method for vfork
7766    catchpoints.  */
7767
7768 static int
7769 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7770 {
7771   return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7772 }
7773
7774 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7775    catchpoints.  */
7776
7777 static int
7778 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7779                             const address_space *aspace, CORE_ADDR bp_addr,
7780                             const struct target_waitstatus *ws)
7781 {
7782   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7783
7784   if (ws->kind != TARGET_WAITKIND_VFORKED)
7785     return 0;
7786
7787   c->forked_inferior_pid = ws->value.related_pid;
7788   return 1;
7789 }
7790
7791 /* Implement the "print_it" breakpoint_ops method for vfork
7792    catchpoints.  */
7793
7794 static enum print_stop_action
7795 print_it_catch_vfork (bpstat bs)
7796 {
7797   struct ui_out *uiout = current_uiout;
7798   struct breakpoint *b = bs->breakpoint_at;
7799   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7800
7801   annotate_catchpoint (b->number);
7802   maybe_print_thread_hit_breakpoint (uiout);
7803   if (b->disposition == disp_del)
7804     uiout->text ("Temporary catchpoint ");
7805   else
7806     uiout->text ("Catchpoint ");
7807   if (uiout->is_mi_like_p ())
7808     {
7809       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7810       uiout->field_string ("disp", bpdisp_text (b->disposition));
7811     }
7812   uiout->field_int ("bkptno", b->number);
7813   uiout->text (" (vforked process ");
7814   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7815   uiout->text ("), ");
7816   return PRINT_SRC_AND_LOC;
7817 }
7818
7819 /* Implement the "print_one" breakpoint_ops method for vfork
7820    catchpoints.  */
7821
7822 static void
7823 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7824 {
7825   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7826   struct value_print_options opts;
7827   struct ui_out *uiout = current_uiout;
7828
7829   get_user_print_options (&opts);
7830   /* Field 4, the address, is omitted (which makes the columns not
7831      line up too nicely with the headers, but the effect is relatively
7832      readable).  */
7833   if (opts.addressprint)
7834     uiout->field_skip ("addr");
7835   annotate_field (5);
7836   uiout->text ("vfork");
7837   if (c->forked_inferior_pid != null_ptid)
7838     {
7839       uiout->text (", process ");
7840       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7841       uiout->spaces (1);
7842     }
7843
7844   if (uiout->is_mi_like_p ())
7845     uiout->field_string ("catch-type", "vfork");
7846 }
7847
7848 /* Implement the "print_mention" breakpoint_ops method for vfork
7849    catchpoints.  */
7850
7851 static void
7852 print_mention_catch_vfork (struct breakpoint *b)
7853 {
7854   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7855 }
7856
7857 /* Implement the "print_recreate" breakpoint_ops method for vfork
7858    catchpoints.  */
7859
7860 static void
7861 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7862 {
7863   fprintf_unfiltered (fp, "catch vfork");
7864   print_recreate_thread (b, fp);
7865 }
7866
7867 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7868
7869 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7870
7871 /* An instance of this type is used to represent an solib catchpoint.
7872    A breakpoint is really of this type iff its ops pointer points to
7873    CATCH_SOLIB_BREAKPOINT_OPS.  */
7874
7875 struct solib_catchpoint : public breakpoint
7876 {
7877   ~solib_catchpoint () override;
7878
7879   /* True for "catch load", false for "catch unload".  */
7880   unsigned char is_load;
7881
7882   /* Regular expression to match, if any.  COMPILED is only valid when
7883      REGEX is non-NULL.  */
7884   char *regex;
7885   std::unique_ptr<compiled_regex> compiled;
7886 };
7887
7888 solib_catchpoint::~solib_catchpoint ()
7889 {
7890   xfree (this->regex);
7891 }
7892
7893 static int
7894 insert_catch_solib (struct bp_location *ignore)
7895 {
7896   return 0;
7897 }
7898
7899 static int
7900 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7901 {
7902   return 0;
7903 }
7904
7905 static int
7906 breakpoint_hit_catch_solib (const struct bp_location *bl,
7907                             const address_space *aspace,
7908                             CORE_ADDR bp_addr,
7909                             const struct target_waitstatus *ws)
7910 {
7911   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7912   struct breakpoint *other;
7913
7914   if (ws->kind == TARGET_WAITKIND_LOADED)
7915     return 1;
7916
7917   ALL_BREAKPOINTS (other)
7918   {
7919     struct bp_location *other_bl;
7920
7921     if (other == bl->owner)
7922       continue;
7923
7924     if (other->type != bp_shlib_event)
7925       continue;
7926
7927     if (self->pspace != NULL && other->pspace != self->pspace)
7928       continue;
7929
7930     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7931       {
7932         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7933           return 1;
7934       }
7935   }
7936
7937   return 0;
7938 }
7939
7940 static void
7941 check_status_catch_solib (struct bpstats *bs)
7942 {
7943   struct solib_catchpoint *self
7944     = (struct solib_catchpoint *) bs->breakpoint_at;
7945
7946   if (self->is_load)
7947     {
7948       for (so_list *iter : current_program_space->added_solibs)
7949         {
7950           if (!self->regex
7951               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7952             return;
7953         }
7954     }
7955   else
7956     {
7957       for (const std::string &iter : current_program_space->deleted_solibs)
7958         {
7959           if (!self->regex
7960               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7961             return;
7962         }
7963     }
7964
7965   bs->stop = 0;
7966   bs->print_it = print_it_noop;
7967 }
7968
7969 static enum print_stop_action
7970 print_it_catch_solib (bpstat bs)
7971 {
7972   struct breakpoint *b = bs->breakpoint_at;
7973   struct ui_out *uiout = current_uiout;
7974
7975   annotate_catchpoint (b->number);
7976   maybe_print_thread_hit_breakpoint (uiout);
7977   if (b->disposition == disp_del)
7978     uiout->text ("Temporary catchpoint ");
7979   else
7980     uiout->text ("Catchpoint ");
7981   uiout->field_int ("bkptno", b->number);
7982   uiout->text ("\n");
7983   if (uiout->is_mi_like_p ())
7984     uiout->field_string ("disp", bpdisp_text (b->disposition));
7985   print_solib_event (1);
7986   return PRINT_SRC_AND_LOC;
7987 }
7988
7989 static void
7990 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7991 {
7992   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7993   struct value_print_options opts;
7994   struct ui_out *uiout = current_uiout;
7995
7996   get_user_print_options (&opts);
7997   /* Field 4, the address, is omitted (which makes the columns not
7998      line up too nicely with the headers, but the effect is relatively
7999      readable).  */
8000   if (opts.addressprint)
8001     {
8002       annotate_field (4);
8003       uiout->field_skip ("addr");
8004     }
8005
8006   std::string msg;
8007   annotate_field (5);
8008   if (self->is_load)
8009     {
8010       if (self->regex)
8011         msg = string_printf (_("load of library matching %s"), self->regex);
8012       else
8013         msg = _("load of library");
8014     }
8015   else
8016     {
8017       if (self->regex)
8018         msg = string_printf (_("unload of library matching %s"), self->regex);
8019       else
8020         msg = _("unload of library");
8021     }
8022   uiout->field_string ("what", msg);
8023
8024   if (uiout->is_mi_like_p ())
8025     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8026 }
8027
8028 static void
8029 print_mention_catch_solib (struct breakpoint *b)
8030 {
8031   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8032
8033   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8034                    self->is_load ? "load" : "unload");
8035 }
8036
8037 static void
8038 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8039 {
8040   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8041
8042   fprintf_unfiltered (fp, "%s %s",
8043                       b->disposition == disp_del ? "tcatch" : "catch",
8044                       self->is_load ? "load" : "unload");
8045   if (self->regex)
8046     fprintf_unfiltered (fp, " %s", self->regex);
8047   fprintf_unfiltered (fp, "\n");
8048 }
8049
8050 static struct breakpoint_ops catch_solib_breakpoint_ops;
8051
8052 /* Shared helper function (MI and CLI) for creating and installing
8053    a shared object event catchpoint.  If IS_LOAD is non-zero then
8054    the events to be caught are load events, otherwise they are
8055    unload events.  If IS_TEMP is non-zero the catchpoint is a
8056    temporary one.  If ENABLED is non-zero the catchpoint is
8057    created in an enabled state.  */
8058
8059 void
8060 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8061 {
8062   struct gdbarch *gdbarch = get_current_arch ();
8063
8064   if (!arg)
8065     arg = "";
8066   arg = skip_spaces (arg);
8067
8068   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8069
8070   if (*arg != '\0')
8071     {
8072       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8073                                              _("Invalid regexp")));
8074       c->regex = xstrdup (arg);
8075     }
8076
8077   c->is_load = is_load;
8078   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8079                    &catch_solib_breakpoint_ops);
8080
8081   c->enable_state = enabled ? bp_enabled : bp_disabled;
8082
8083   install_breakpoint (0, std::move (c), 1);
8084 }
8085
8086 /* A helper function that does all the work for "catch load" and
8087    "catch unload".  */
8088
8089 static void
8090 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8091                       struct cmd_list_element *command)
8092 {
8093   int tempflag;
8094   const int enabled = 1;
8095
8096   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8097
8098   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8099 }
8100
8101 static void
8102 catch_load_command_1 (const char *arg, int from_tty,
8103                       struct cmd_list_element *command)
8104 {
8105   catch_load_or_unload (arg, from_tty, 1, command);
8106 }
8107
8108 static void
8109 catch_unload_command_1 (const char *arg, int from_tty,
8110                         struct cmd_list_element *command)
8111 {
8112   catch_load_or_unload (arg, from_tty, 0, command);
8113 }
8114
8115 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8116    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8117    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8118    the breakpoint_ops structure associated to the catchpoint.  */
8119
8120 void
8121 init_catchpoint (struct breakpoint *b,
8122                  struct gdbarch *gdbarch, int tempflag,
8123                  const char *cond_string,
8124                  const struct breakpoint_ops *ops)
8125 {
8126   symtab_and_line sal;
8127   sal.pspace = current_program_space;
8128
8129   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8130
8131   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8132   b->disposition = tempflag ? disp_del : disp_donttouch;
8133 }
8134
8135 void
8136 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8137 {
8138   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8139   set_breakpoint_number (internal, b);
8140   if (is_tracepoint (b))
8141     set_tracepoint_count (breakpoint_count);
8142   if (!internal)
8143     mention (b);
8144   gdb::observers::breakpoint_created.notify (b);
8145
8146   if (update_gll)
8147     update_global_location_list (UGLL_MAY_INSERT);
8148 }
8149
8150 static void
8151 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8152                                     int tempflag, const char *cond_string,
8153                                     const struct breakpoint_ops *ops)
8154 {
8155   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8156
8157   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8158
8159   c->forked_inferior_pid = null_ptid;
8160
8161   install_breakpoint (0, std::move (c), 1);
8162 }
8163
8164 /* Exec catchpoints.  */
8165
8166 /* An instance of this type is used to represent an exec catchpoint.
8167    A breakpoint is really of this type iff its ops pointer points to
8168    CATCH_EXEC_BREAKPOINT_OPS.  */
8169
8170 struct exec_catchpoint : public breakpoint
8171 {
8172   ~exec_catchpoint () override;
8173
8174   /* Filename of a program whose exec triggered this catchpoint.
8175      This field is only valid immediately after this catchpoint has
8176      triggered.  */
8177   char *exec_pathname;
8178 };
8179
8180 /* Exec catchpoint destructor.  */
8181
8182 exec_catchpoint::~exec_catchpoint ()
8183 {
8184   xfree (this->exec_pathname);
8185 }
8186
8187 static int
8188 insert_catch_exec (struct bp_location *bl)
8189 {
8190   return target_insert_exec_catchpoint (inferior_ptid.pid ());
8191 }
8192
8193 static int
8194 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8195 {
8196   return target_remove_exec_catchpoint (inferior_ptid.pid ());
8197 }
8198
8199 static int
8200 breakpoint_hit_catch_exec (const struct bp_location *bl,
8201                            const address_space *aspace, CORE_ADDR bp_addr,
8202                            const struct target_waitstatus *ws)
8203 {
8204   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8205
8206   if (ws->kind != TARGET_WAITKIND_EXECD)
8207     return 0;
8208
8209   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8210   return 1;
8211 }
8212
8213 static enum print_stop_action
8214 print_it_catch_exec (bpstat bs)
8215 {
8216   struct ui_out *uiout = current_uiout;
8217   struct breakpoint *b = bs->breakpoint_at;
8218   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8219
8220   annotate_catchpoint (b->number);
8221   maybe_print_thread_hit_breakpoint (uiout);
8222   if (b->disposition == disp_del)
8223     uiout->text ("Temporary catchpoint ");
8224   else
8225     uiout->text ("Catchpoint ");
8226   if (uiout->is_mi_like_p ())
8227     {
8228       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8229       uiout->field_string ("disp", bpdisp_text (b->disposition));
8230     }
8231   uiout->field_int ("bkptno", b->number);
8232   uiout->text (" (exec'd ");
8233   uiout->field_string ("new-exec", c->exec_pathname);
8234   uiout->text ("), ");
8235
8236   return PRINT_SRC_AND_LOC;
8237 }
8238
8239 static void
8240 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8241 {
8242   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8243   struct value_print_options opts;
8244   struct ui_out *uiout = current_uiout;
8245
8246   get_user_print_options (&opts);
8247
8248   /* Field 4, the address, is omitted (which makes the columns
8249      not line up too nicely with the headers, but the effect
8250      is relatively readable).  */
8251   if (opts.addressprint)
8252     uiout->field_skip ("addr");
8253   annotate_field (5);
8254   uiout->text ("exec");
8255   if (c->exec_pathname != NULL)
8256     {
8257       uiout->text (", program \"");
8258       uiout->field_string ("what", c->exec_pathname);
8259       uiout->text ("\" ");
8260     }
8261
8262   if (uiout->is_mi_like_p ())
8263     uiout->field_string ("catch-type", "exec");
8264 }
8265
8266 static void
8267 print_mention_catch_exec (struct breakpoint *b)
8268 {
8269   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8270 }
8271
8272 /* Implement the "print_recreate" breakpoint_ops method for exec
8273    catchpoints.  */
8274
8275 static void
8276 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8277 {
8278   fprintf_unfiltered (fp, "catch exec");
8279   print_recreate_thread (b, fp);
8280 }
8281
8282 static struct breakpoint_ops catch_exec_breakpoint_ops;
8283
8284 static int
8285 hw_breakpoint_used_count (void)
8286 {
8287   int i = 0;
8288   struct breakpoint *b;
8289   struct bp_location *bl;
8290
8291   ALL_BREAKPOINTS (b)
8292   {
8293     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8294       for (bl = b->loc; bl; bl = bl->next)
8295         {
8296           /* Special types of hardware breakpoints may use more than
8297              one register.  */
8298           i += b->ops->resources_needed (bl);
8299         }
8300   }
8301
8302   return i;
8303 }
8304
8305 /* Returns the resources B would use if it were a hardware
8306    watchpoint.  */
8307
8308 static int
8309 hw_watchpoint_use_count (struct breakpoint *b)
8310 {
8311   int i = 0;
8312   struct bp_location *bl;
8313
8314   if (!breakpoint_enabled (b))
8315     return 0;
8316
8317   for (bl = b->loc; bl; bl = bl->next)
8318     {
8319       /* Special types of hardware watchpoints may use more than
8320          one register.  */
8321       i += b->ops->resources_needed (bl);
8322     }
8323
8324   return i;
8325 }
8326
8327 /* Returns the sum the used resources of all hardware watchpoints of
8328    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8329    the sum of the used resources of all hardware watchpoints of other
8330    types _not_ TYPE.  */
8331
8332 static int
8333 hw_watchpoint_used_count_others (struct breakpoint *except,
8334                                  enum bptype type, int *other_type_used)
8335 {
8336   int i = 0;
8337   struct breakpoint *b;
8338
8339   *other_type_used = 0;
8340   ALL_BREAKPOINTS (b)
8341     {
8342       if (b == except)
8343         continue;
8344       if (!breakpoint_enabled (b))
8345         continue;
8346
8347       if (b->type == type)
8348         i += hw_watchpoint_use_count (b);
8349       else if (is_hardware_watchpoint (b))
8350         *other_type_used = 1;
8351     }
8352
8353   return i;
8354 }
8355
8356 void
8357 disable_watchpoints_before_interactive_call_start (void)
8358 {
8359   struct breakpoint *b;
8360
8361   ALL_BREAKPOINTS (b)
8362   {
8363     if (is_watchpoint (b) && breakpoint_enabled (b))
8364       {
8365         b->enable_state = bp_call_disabled;
8366         update_global_location_list (UGLL_DONT_INSERT);
8367       }
8368   }
8369 }
8370
8371 void
8372 enable_watchpoints_after_interactive_call_stop (void)
8373 {
8374   struct breakpoint *b;
8375
8376   ALL_BREAKPOINTS (b)
8377   {
8378     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8379       {
8380         b->enable_state = bp_enabled;
8381         update_global_location_list (UGLL_MAY_INSERT);
8382       }
8383   }
8384 }
8385
8386 void
8387 disable_breakpoints_before_startup (void)
8388 {
8389   current_program_space->executing_startup = 1;
8390   update_global_location_list (UGLL_DONT_INSERT);
8391 }
8392
8393 void
8394 enable_breakpoints_after_startup (void)
8395 {
8396   current_program_space->executing_startup = 0;
8397   breakpoint_re_set ();
8398 }
8399
8400 /* Create a new single-step breakpoint for thread THREAD, with no
8401    locations.  */
8402
8403 static struct breakpoint *
8404 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8405 {
8406   std::unique_ptr<breakpoint> b (new breakpoint ());
8407
8408   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8409                                         &momentary_breakpoint_ops);
8410
8411   b->disposition = disp_donttouch;
8412   b->frame_id = null_frame_id;
8413
8414   b->thread = thread;
8415   gdb_assert (b->thread != 0);
8416
8417   return add_to_breakpoint_chain (std::move (b));
8418 }
8419
8420 /* Set a momentary breakpoint of type TYPE at address specified by
8421    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8422    frame.  */
8423
8424 breakpoint_up
8425 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8426                           struct frame_id frame_id, enum bptype type)
8427 {
8428   struct breakpoint *b;
8429
8430   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8431      tail-called one.  */
8432   gdb_assert (!frame_id_artificial_p (frame_id));
8433
8434   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8435   b->enable_state = bp_enabled;
8436   b->disposition = disp_donttouch;
8437   b->frame_id = frame_id;
8438
8439   b->thread = inferior_thread ()->global_num;
8440
8441   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8442
8443   return breakpoint_up (b);
8444 }
8445
8446 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8447    The new breakpoint will have type TYPE, use OPS as its
8448    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8449
8450 static struct breakpoint *
8451 momentary_breakpoint_from_master (struct breakpoint *orig,
8452                                   enum bptype type,
8453                                   const struct breakpoint_ops *ops,
8454                                   int loc_enabled)
8455 {
8456   struct breakpoint *copy;
8457
8458   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8459   copy->loc = allocate_bp_location (copy);
8460   set_breakpoint_location_function (copy->loc);
8461
8462   copy->loc->gdbarch = orig->loc->gdbarch;
8463   copy->loc->requested_address = orig->loc->requested_address;
8464   copy->loc->address = orig->loc->address;
8465   copy->loc->section = orig->loc->section;
8466   copy->loc->pspace = orig->loc->pspace;
8467   copy->loc->probe = orig->loc->probe;
8468   copy->loc->line_number = orig->loc->line_number;
8469   copy->loc->symtab = orig->loc->symtab;
8470   copy->loc->enabled = loc_enabled;
8471   copy->frame_id = orig->frame_id;
8472   copy->thread = orig->thread;
8473   copy->pspace = orig->pspace;
8474
8475   copy->enable_state = bp_enabled;
8476   copy->disposition = disp_donttouch;
8477   copy->number = internal_breakpoint_number--;
8478
8479   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8480   return copy;
8481 }
8482
8483 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8484    ORIG is NULL.  */
8485
8486 struct breakpoint *
8487 clone_momentary_breakpoint (struct breakpoint *orig)
8488 {
8489   /* If there's nothing to clone, then return nothing.  */
8490   if (orig == NULL)
8491     return NULL;
8492
8493   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8494 }
8495
8496 breakpoint_up
8497 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8498                                 enum bptype type)
8499 {
8500   struct symtab_and_line sal;
8501
8502   sal = find_pc_line (pc, 0);
8503   sal.pc = pc;
8504   sal.section = find_pc_overlay (pc);
8505   sal.explicit_pc = 1;
8506
8507   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8508 }
8509 \f
8510
8511 /* Tell the user we have just set a breakpoint B.  */
8512
8513 static void
8514 mention (struct breakpoint *b)
8515 {
8516   b->ops->print_mention (b);
8517   current_uiout->text ("\n");
8518 }
8519 \f
8520
8521 static int bp_loc_is_permanent (struct bp_location *loc);
8522
8523 static struct bp_location *
8524 add_location_to_breakpoint (struct breakpoint *b,
8525                             const struct symtab_and_line *sal)
8526 {
8527   struct bp_location *loc, **tmp;
8528   CORE_ADDR adjusted_address;
8529   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8530
8531   if (loc_gdbarch == NULL)
8532     loc_gdbarch = b->gdbarch;
8533
8534   /* Adjust the breakpoint's address prior to allocating a location.
8535      Once we call allocate_bp_location(), that mostly uninitialized
8536      location will be placed on the location chain.  Adjustment of the
8537      breakpoint may cause target_read_memory() to be called and we do
8538      not want its scan of the location chain to find a breakpoint and
8539      location that's only been partially initialized.  */
8540   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8541                                                 sal->pc, b->type);
8542
8543   /* Sort the locations by their ADDRESS.  */
8544   loc = allocate_bp_location (b);
8545   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8546        tmp = &((*tmp)->next))
8547     ;
8548   loc->next = *tmp;
8549   *tmp = loc;
8550
8551   loc->requested_address = sal->pc;
8552   loc->address = adjusted_address;
8553   loc->pspace = sal->pspace;
8554   loc->probe.prob = sal->prob;
8555   loc->probe.objfile = sal->objfile;
8556   gdb_assert (loc->pspace != NULL);
8557   loc->section = sal->section;
8558   loc->gdbarch = loc_gdbarch;
8559   loc->line_number = sal->line;
8560   loc->symtab = sal->symtab;
8561   loc->symbol = sal->symbol;
8562   loc->msymbol = sal->msymbol;
8563   loc->objfile = sal->objfile;
8564
8565   set_breakpoint_location_function (loc);
8566
8567   /* While by definition, permanent breakpoints are already present in the
8568      code, we don't mark the location as inserted.  Normally one would expect
8569      that GDB could rely on that breakpoint instruction to stop the program,
8570      thus removing the need to insert its own breakpoint, except that executing
8571      the breakpoint instruction can kill the target instead of reporting a
8572      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8573      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8574      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8575      breakpoint be inserted normally results in QEMU knowing about the GDB
8576      breakpoint, and thus trap before the breakpoint instruction is executed.
8577      (If GDB later needs to continue execution past the permanent breakpoint,
8578      it manually increments the PC, thus avoiding executing the breakpoint
8579      instruction.)  */
8580   if (bp_loc_is_permanent (loc))
8581     loc->permanent = 1;
8582
8583   return loc;
8584 }
8585 \f
8586
8587 /* See breakpoint.h.  */
8588
8589 int
8590 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8591 {
8592   int len;
8593   CORE_ADDR addr;
8594   const gdb_byte *bpoint;
8595   gdb_byte *target_mem;
8596
8597   addr = address;
8598   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8599
8600   /* Software breakpoints unsupported?  */
8601   if (bpoint == NULL)
8602     return 0;
8603
8604   target_mem = (gdb_byte *) alloca (len);
8605
8606   /* Enable the automatic memory restoration from breakpoints while
8607      we read the memory.  Otherwise we could say about our temporary
8608      breakpoints they are permanent.  */
8609   scoped_restore restore_memory
8610     = make_scoped_restore_show_memory_breakpoints (0);
8611
8612   if (target_read_memory (address, target_mem, len) == 0
8613       && memcmp (target_mem, bpoint, len) == 0)
8614     return 1;
8615
8616   return 0;
8617 }
8618
8619 /* Return 1 if LOC is pointing to a permanent breakpoint,
8620    return 0 otherwise.  */
8621
8622 static int
8623 bp_loc_is_permanent (struct bp_location *loc)
8624 {
8625   gdb_assert (loc != NULL);
8626
8627   /* If we have a non-breakpoint-backed catchpoint or a software
8628      watchpoint, just return 0.  We should not attempt to read from
8629      the addresses the locations of these breakpoint types point to.
8630      program_breakpoint_here_p, below, will attempt to read
8631      memory.  */
8632   if (!bl_address_is_meaningful (loc))
8633     return 0;
8634
8635   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8636   switch_to_program_space_and_thread (loc->pspace);
8637   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8638 }
8639
8640 /* Build a command list for the dprintf corresponding to the current
8641    settings of the dprintf style options.  */
8642
8643 static void
8644 update_dprintf_command_list (struct breakpoint *b)
8645 {
8646   char *dprintf_args = b->extra_string;
8647   char *printf_line = NULL;
8648
8649   if (!dprintf_args)
8650     return;
8651
8652   dprintf_args = skip_spaces (dprintf_args);
8653
8654   /* Allow a comma, as it may have terminated a location, but don't
8655      insist on it.  */
8656   if (*dprintf_args == ',')
8657     ++dprintf_args;
8658   dprintf_args = skip_spaces (dprintf_args);
8659
8660   if (*dprintf_args != '"')
8661     error (_("Bad format string, missing '\"'."));
8662
8663   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8664     printf_line = xstrprintf ("printf %s", dprintf_args);
8665   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8666     {
8667       if (!dprintf_function)
8668         error (_("No function supplied for dprintf call"));
8669
8670       if (dprintf_channel && strlen (dprintf_channel) > 0)
8671         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8672                                   dprintf_function,
8673                                   dprintf_channel,
8674                                   dprintf_args);
8675       else
8676         printf_line = xstrprintf ("call (void) %s (%s)",
8677                                   dprintf_function,
8678                                   dprintf_args);
8679     }
8680   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8681     {
8682       if (target_can_run_breakpoint_commands ())
8683         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8684       else
8685         {
8686           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8687           printf_line = xstrprintf ("printf %s", dprintf_args);
8688         }
8689     }
8690   else
8691     internal_error (__FILE__, __LINE__,
8692                     _("Invalid dprintf style."));
8693
8694   gdb_assert (printf_line != NULL);
8695
8696   /* Manufacture a printf sequence.  */
8697   struct command_line *printf_cmd_line
8698     = new struct command_line (simple_control, printf_line);
8699   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8700                                                     command_lines_deleter ()));
8701 }
8702
8703 /* Update all dprintf commands, making their command lists reflect
8704    current style settings.  */
8705
8706 static void
8707 update_dprintf_commands (const char *args, int from_tty,
8708                          struct cmd_list_element *c)
8709 {
8710   struct breakpoint *b;
8711
8712   ALL_BREAKPOINTS (b)
8713     {
8714       if (b->type == bp_dprintf)
8715         update_dprintf_command_list (b);
8716     }
8717 }
8718
8719 /* Create a breakpoint with SAL as location.  Use LOCATION
8720    as a description of the location, and COND_STRING
8721    as condition expression.  If LOCATION is NULL then create an
8722    "address location" from the address in the SAL.  */
8723
8724 static void
8725 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8726                      gdb::array_view<const symtab_and_line> sals,
8727                      event_location_up &&location,
8728                      gdb::unique_xmalloc_ptr<char> filter,
8729                      gdb::unique_xmalloc_ptr<char> cond_string,
8730                      gdb::unique_xmalloc_ptr<char> extra_string,
8731                      enum bptype type, enum bpdisp disposition,
8732                      int thread, int task, int ignore_count,
8733                      const struct breakpoint_ops *ops, int from_tty,
8734                      int enabled, int internal, unsigned flags,
8735                      int display_canonical)
8736 {
8737   int i;
8738
8739   if (type == bp_hardware_breakpoint)
8740     {
8741       int target_resources_ok;
8742
8743       i = hw_breakpoint_used_count ();
8744       target_resources_ok =
8745         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8746                                             i + 1, 0);
8747       if (target_resources_ok == 0)
8748         error (_("No hardware breakpoint support in the target."));
8749       else if (target_resources_ok < 0)
8750         error (_("Hardware breakpoints used exceeds limit."));
8751     }
8752
8753   gdb_assert (!sals.empty ());
8754
8755   for (const auto &sal : sals)
8756     {
8757       struct bp_location *loc;
8758
8759       if (from_tty)
8760         {
8761           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8762           if (!loc_gdbarch)
8763             loc_gdbarch = gdbarch;
8764
8765           describe_other_breakpoints (loc_gdbarch,
8766                                       sal.pspace, sal.pc, sal.section, thread);
8767         }
8768
8769       if (&sal == &sals[0])
8770         {
8771           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8772           b->thread = thread;
8773           b->task = task;
8774
8775           b->cond_string = cond_string.release ();
8776           b->extra_string = extra_string.release ();
8777           b->ignore_count = ignore_count;
8778           b->enable_state = enabled ? bp_enabled : bp_disabled;
8779           b->disposition = disposition;
8780
8781           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8782             b->loc->inserted = 1;
8783
8784           if (type == bp_static_tracepoint)
8785             {
8786               struct tracepoint *t = (struct tracepoint *) b;
8787               struct static_tracepoint_marker marker;
8788
8789               if (strace_marker_p (b))
8790                 {
8791                   /* We already know the marker exists, otherwise, we
8792                      wouldn't see a sal for it.  */
8793                   const char *p
8794                     = &event_location_to_string (b->location.get ())[3];
8795                   const char *endp;
8796
8797                   p = skip_spaces (p);
8798
8799                   endp = skip_to_space (p);
8800
8801                   t->static_trace_marker_id.assign (p, endp - p);
8802
8803                   printf_filtered (_("Probed static tracepoint "
8804                                      "marker \"%s\"\n"),
8805                                    t->static_trace_marker_id.c_str ());
8806                 }
8807               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8808                 {
8809                   t->static_trace_marker_id = std::move (marker.str_id);
8810
8811                   printf_filtered (_("Probed static tracepoint "
8812                                      "marker \"%s\"\n"),
8813                                    t->static_trace_marker_id.c_str ());
8814                 }
8815               else
8816                 warning (_("Couldn't determine the static "
8817                            "tracepoint marker to probe"));
8818             }
8819
8820           loc = b->loc;
8821         }
8822       else
8823         {
8824           loc = add_location_to_breakpoint (b, &sal);
8825           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8826             loc->inserted = 1;
8827         }
8828
8829       if (b->cond_string)
8830         {
8831           const char *arg = b->cond_string;
8832
8833           loc->cond = parse_exp_1 (&arg, loc->address,
8834                                    block_for_pc (loc->address), 0);
8835           if (*arg)
8836               error (_("Garbage '%s' follows condition"), arg);
8837         }
8838
8839       /* Dynamic printf requires and uses additional arguments on the
8840          command line, otherwise it's an error.  */
8841       if (type == bp_dprintf)
8842         {
8843           if (b->extra_string)
8844             update_dprintf_command_list (b);
8845           else
8846             error (_("Format string required"));
8847         }
8848       else if (b->extra_string)
8849         error (_("Garbage '%s' at end of command"), b->extra_string);
8850     }
8851
8852   b->display_canonical = display_canonical;
8853   if (location != NULL)
8854     b->location = std::move (location);
8855   else
8856     b->location = new_address_location (b->loc->address, NULL, 0);
8857   b->filter = filter.release ();
8858 }
8859
8860 static void
8861 create_breakpoint_sal (struct gdbarch *gdbarch,
8862                        gdb::array_view<const symtab_and_line> sals,
8863                        event_location_up &&location,
8864                        gdb::unique_xmalloc_ptr<char> filter,
8865                        gdb::unique_xmalloc_ptr<char> cond_string,
8866                        gdb::unique_xmalloc_ptr<char> extra_string,
8867                        enum bptype type, enum bpdisp disposition,
8868                        int thread, int task, int ignore_count,
8869                        const struct breakpoint_ops *ops, int from_tty,
8870                        int enabled, int internal, unsigned flags,
8871                        int display_canonical)
8872 {
8873   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8874
8875   init_breakpoint_sal (b.get (), gdbarch,
8876                        sals, std::move (location),
8877                        std::move (filter),
8878                        std::move (cond_string),
8879                        std::move (extra_string),
8880                        type, disposition,
8881                        thread, task, ignore_count,
8882                        ops, from_tty,
8883                        enabled, internal, flags,
8884                        display_canonical);
8885
8886   install_breakpoint (internal, std::move (b), 0);
8887 }
8888
8889 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8890    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8891    value.  COND_STRING, if not NULL, specified the condition to be
8892    used for all breakpoints.  Essentially the only case where
8893    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8894    function.  In that case, it's still not possible to specify
8895    separate conditions for different overloaded functions, so
8896    we take just a single condition string.
8897    
8898    NOTE: If the function succeeds, the caller is expected to cleanup
8899    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8900    array contents).  If the function fails (error() is called), the
8901    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8902    COND and SALS arrays and each of those arrays contents.  */
8903
8904 static void
8905 create_breakpoints_sal (struct gdbarch *gdbarch,
8906                         struct linespec_result *canonical,
8907                         gdb::unique_xmalloc_ptr<char> cond_string,
8908                         gdb::unique_xmalloc_ptr<char> extra_string,
8909                         enum bptype type, enum bpdisp disposition,
8910                         int thread, int task, int ignore_count,
8911                         const struct breakpoint_ops *ops, int from_tty,
8912                         int enabled, int internal, unsigned flags)
8913 {
8914   if (canonical->pre_expanded)
8915     gdb_assert (canonical->lsals.size () == 1);
8916
8917   for (const auto &lsal : canonical->lsals)
8918     {
8919       /* Note that 'location' can be NULL in the case of a plain
8920          'break', without arguments.  */
8921       event_location_up location
8922         = (canonical->location != NULL
8923            ? copy_event_location (canonical->location.get ()) : NULL);
8924       gdb::unique_xmalloc_ptr<char> filter_string
8925         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8926
8927       create_breakpoint_sal (gdbarch, lsal.sals,
8928                              std::move (location),
8929                              std::move (filter_string),
8930                              std::move (cond_string),
8931                              std::move (extra_string),
8932                              type, disposition,
8933                              thread, task, ignore_count, ops,
8934                              from_tty, enabled, internal, flags,
8935                              canonical->special_display);
8936     }
8937 }
8938
8939 /* Parse LOCATION which is assumed to be a SAL specification possibly
8940    followed by conditionals.  On return, SALS contains an array of SAL
8941    addresses found.  LOCATION points to the end of the SAL (for
8942    linespec locations).
8943
8944    The array and the line spec strings are allocated on the heap, it is
8945    the caller's responsibility to free them.  */
8946
8947 static void
8948 parse_breakpoint_sals (const struct event_location *location,
8949                        struct linespec_result *canonical)
8950 {
8951   struct symtab_and_line cursal;
8952
8953   if (event_location_type (location) == LINESPEC_LOCATION)
8954     {
8955       const char *spec = get_linespec_location (location)->spec_string;
8956
8957       if (spec == NULL)
8958         {
8959           /* The last displayed codepoint, if it's valid, is our default
8960              breakpoint address.  */
8961           if (last_displayed_sal_is_valid ())
8962             {
8963               /* Set sal's pspace, pc, symtab, and line to the values
8964                  corresponding to the last call to print_frame_info.
8965                  Be sure to reinitialize LINE with NOTCURRENT == 0
8966                  as the breakpoint line number is inappropriate otherwise.
8967                  find_pc_line would adjust PC, re-set it back.  */
8968               symtab_and_line sal = get_last_displayed_sal ();
8969               CORE_ADDR pc = sal.pc;
8970
8971               sal = find_pc_line (pc, 0);
8972
8973               /* "break" without arguments is equivalent to "break *PC"
8974                  where PC is the last displayed codepoint's address.  So
8975                  make sure to set sal.explicit_pc to prevent GDB from
8976                  trying to expand the list of sals to include all other
8977                  instances with the same symtab and line.  */
8978               sal.pc = pc;
8979               sal.explicit_pc = 1;
8980
8981               struct linespec_sals lsal;
8982               lsal.sals = {sal};
8983               lsal.canonical = NULL;
8984
8985               canonical->lsals.push_back (std::move (lsal));
8986               return;
8987             }
8988           else
8989             error (_("No default breakpoint address now."));
8990         }
8991     }
8992
8993   /* Force almost all breakpoints to be in terms of the
8994      current_source_symtab (which is decode_line_1's default).
8995      This should produce the results we want almost all of the
8996      time while leaving default_breakpoint_* alone.
8997
8998      ObjC: However, don't match an Objective-C method name which
8999      may have a '+' or '-' succeeded by a '['.  */
9000   cursal = get_current_source_symtab_and_line ();
9001   if (last_displayed_sal_is_valid ())
9002     {
9003       const char *spec = NULL;
9004
9005       if (event_location_type (location) == LINESPEC_LOCATION)
9006         spec = get_linespec_location (location)->spec_string;
9007
9008       if (!cursal.symtab
9009           || (spec != NULL
9010               && strchr ("+-", spec[0]) != NULL
9011               && spec[1] != '['))
9012         {
9013           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9014                             get_last_displayed_symtab (),
9015                             get_last_displayed_line (),
9016                             canonical, NULL, NULL);
9017           return;
9018         }
9019     }
9020
9021   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9022                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9023 }
9024
9025
9026 /* Convert each SAL into a real PC.  Verify that the PC can be
9027    inserted as a breakpoint.  If it can't throw an error.  */
9028
9029 static void
9030 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9031 {    
9032   for (auto &sal : sals)
9033     resolve_sal_pc (&sal);
9034 }
9035
9036 /* Fast tracepoints may have restrictions on valid locations.  For
9037    instance, a fast tracepoint using a jump instead of a trap will
9038    likely have to overwrite more bytes than a trap would, and so can
9039    only be placed where the instruction is longer than the jump, or a
9040    multi-instruction sequence does not have a jump into the middle of
9041    it, etc.  */
9042
9043 static void
9044 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9045                             gdb::array_view<const symtab_and_line> sals)
9046 {
9047   for (const auto &sal : sals)
9048     {
9049       struct gdbarch *sarch;
9050
9051       sarch = get_sal_arch (sal);
9052       /* We fall back to GDBARCH if there is no architecture
9053          associated with SAL.  */
9054       if (sarch == NULL)
9055         sarch = gdbarch;
9056       std::string msg;
9057       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9058         error (_("May not have a fast tracepoint at %s%s"),
9059                paddress (sarch, sal.pc), msg.c_str ());
9060     }
9061 }
9062
9063 /* Given TOK, a string specification of condition and thread, as
9064    accepted by the 'break' command, extract the condition
9065    string and thread number and set *COND_STRING and *THREAD.
9066    PC identifies the context at which the condition should be parsed.
9067    If no condition is found, *COND_STRING is set to NULL.
9068    If no thread is found, *THREAD is set to -1.  */
9069
9070 static void
9071 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9072                            char **cond_string, int *thread, int *task,
9073                            char **rest)
9074 {
9075   *cond_string = NULL;
9076   *thread = -1;
9077   *task = 0;
9078   *rest = NULL;
9079
9080   while (tok && *tok)
9081     {
9082       const char *end_tok;
9083       int toklen;
9084       const char *cond_start = NULL;
9085       const char *cond_end = NULL;
9086
9087       tok = skip_spaces (tok);
9088
9089       if ((*tok == '"' || *tok == ',') && rest)
9090         {
9091           *rest = savestring (tok, strlen (tok));
9092           return;
9093         }
9094
9095       end_tok = skip_to_space (tok);
9096
9097       toklen = end_tok - tok;
9098
9099       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9100         {
9101           tok = cond_start = end_tok + 1;
9102           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9103           cond_end = tok;
9104           *cond_string = savestring (cond_start, cond_end - cond_start);
9105         }
9106       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9107         {
9108           const char *tmptok;
9109           struct thread_info *thr;
9110
9111           tok = end_tok + 1;
9112           thr = parse_thread_id (tok, &tmptok);
9113           if (tok == tmptok)
9114             error (_("Junk after thread keyword."));
9115           *thread = thr->global_num;
9116           tok = tmptok;
9117         }
9118       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9119         {
9120           char *tmptok;
9121
9122           tok = end_tok + 1;
9123           *task = strtol (tok, &tmptok, 0);
9124           if (tok == tmptok)
9125             error (_("Junk after task keyword."));
9126           if (!valid_task_id (*task))
9127             error (_("Unknown task %d."), *task);
9128           tok = tmptok;
9129         }
9130       else if (rest)
9131         {
9132           *rest = savestring (tok, strlen (tok));
9133           return;
9134         }
9135       else
9136         error (_("Junk at end of arguments."));
9137     }
9138 }
9139
9140 /* Decode a static tracepoint marker spec.  */
9141
9142 static std::vector<symtab_and_line>
9143 decode_static_tracepoint_spec (const char **arg_p)
9144 {
9145   const char *p = &(*arg_p)[3];
9146   const char *endp;
9147
9148   p = skip_spaces (p);
9149
9150   endp = skip_to_space (p);
9151
9152   std::string marker_str (p, endp - p);
9153
9154   std::vector<static_tracepoint_marker> markers
9155     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9156   if (markers.empty ())
9157     error (_("No known static tracepoint marker named %s"),
9158            marker_str.c_str ());
9159
9160   std::vector<symtab_and_line> sals;
9161   sals.reserve (markers.size ());
9162
9163   for (const static_tracepoint_marker &marker : markers)
9164     {
9165       symtab_and_line sal = find_pc_line (marker.address, 0);
9166       sal.pc = marker.address;
9167       sals.push_back (sal);
9168    }
9169
9170   *arg_p = endp;
9171   return sals;
9172 }
9173
9174 /* See breakpoint.h.  */
9175
9176 int
9177 create_breakpoint (struct gdbarch *gdbarch,
9178                    const struct event_location *location,
9179                    const char *cond_string,
9180                    int thread, const char *extra_string,
9181                    int parse_extra,
9182                    int tempflag, enum bptype type_wanted,
9183                    int ignore_count,
9184                    enum auto_boolean pending_break_support,
9185                    const struct breakpoint_ops *ops,
9186                    int from_tty, int enabled, int internal,
9187                    unsigned flags)
9188 {
9189   struct linespec_result canonical;
9190   int pending = 0;
9191   int task = 0;
9192   int prev_bkpt_count = breakpoint_count;
9193
9194   gdb_assert (ops != NULL);
9195
9196   /* If extra_string isn't useful, set it to NULL.  */
9197   if (extra_string != NULL && *extra_string == '\0')
9198     extra_string = NULL;
9199
9200   try
9201     {
9202       ops->create_sals_from_location (location, &canonical, type_wanted);
9203     }
9204   catch (const gdb_exception_error &e)
9205     {
9206       /* If caller is interested in rc value from parse, set
9207          value.  */
9208       if (e.error == NOT_FOUND_ERROR)
9209         {
9210           /* If pending breakpoint support is turned off, throw
9211              error.  */
9212
9213           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9214             throw;
9215
9216           exception_print (gdb_stderr, e);
9217
9218           /* If pending breakpoint support is auto query and the user
9219              selects no, then simply return the error code.  */
9220           if (pending_break_support == AUTO_BOOLEAN_AUTO
9221               && !nquery (_("Make %s pending on future shared library load? "),
9222                           bptype_string (type_wanted)))
9223             return 0;
9224
9225           /* At this point, either the user was queried about setting
9226              a pending breakpoint and selected yes, or pending
9227              breakpoint behavior is on and thus a pending breakpoint
9228              is defaulted on behalf of the user.  */
9229           pending = 1;
9230         }
9231       else
9232         throw;
9233     }
9234
9235   if (!pending && canonical.lsals.empty ())
9236     return 0;
9237
9238   /* Resolve all line numbers to PC's and verify that the addresses
9239      are ok for the target.  */
9240   if (!pending)
9241     {
9242       for (auto &lsal : canonical.lsals)
9243         breakpoint_sals_to_pc (lsal.sals);
9244     }
9245
9246   /* Fast tracepoints may have additional restrictions on location.  */
9247   if (!pending && type_wanted == bp_fast_tracepoint)
9248     {
9249       for (const auto &lsal : canonical.lsals)
9250         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9251     }
9252
9253   /* Verify that condition can be parsed, before setting any
9254      breakpoints.  Allocate a separate condition expression for each
9255      breakpoint.  */
9256   if (!pending)
9257     {
9258       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9259       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9260
9261       if (parse_extra)
9262         {
9263           char *rest;
9264           char *cond;
9265
9266           const linespec_sals &lsal = canonical.lsals[0];
9267
9268           /* Here we only parse 'arg' to separate condition
9269              from thread number, so parsing in context of first
9270              sal is OK.  When setting the breakpoint we'll
9271              re-parse it in context of each sal.  */
9272
9273           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9274                                      &cond, &thread, &task, &rest);
9275           cond_string_copy.reset (cond);
9276           extra_string_copy.reset (rest);
9277         }
9278       else
9279         {
9280           if (type_wanted != bp_dprintf
9281               && extra_string != NULL && *extra_string != '\0')
9282                 error (_("Garbage '%s' at end of location"), extra_string);
9283
9284           /* Create a private copy of condition string.  */
9285           if (cond_string)
9286             cond_string_copy.reset (xstrdup (cond_string));
9287           /* Create a private copy of any extra string.  */
9288           if (extra_string)
9289             extra_string_copy.reset (xstrdup (extra_string));
9290         }
9291
9292       ops->create_breakpoints_sal (gdbarch, &canonical,
9293                                    std::move (cond_string_copy),
9294                                    std::move (extra_string_copy),
9295                                    type_wanted,
9296                                    tempflag ? disp_del : disp_donttouch,
9297                                    thread, task, ignore_count, ops,
9298                                    from_tty, enabled, internal, flags);
9299     }
9300   else
9301     {
9302       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9303
9304       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9305       b->location = copy_event_location (location);
9306
9307       if (parse_extra)
9308         b->cond_string = NULL;
9309       else
9310         {
9311           /* Create a private copy of condition string.  */
9312           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9313           b->thread = thread;
9314         }
9315
9316       /* Create a private copy of any extra string.  */
9317       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9318       b->ignore_count = ignore_count;
9319       b->disposition = tempflag ? disp_del : disp_donttouch;
9320       b->condition_not_parsed = 1;
9321       b->enable_state = enabled ? bp_enabled : bp_disabled;
9322       if ((type_wanted != bp_breakpoint
9323            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9324         b->pspace = current_program_space;
9325
9326       install_breakpoint (internal, std::move (b), 0);
9327     }
9328   
9329   if (canonical.lsals.size () > 1)
9330     {
9331       warning (_("Multiple breakpoints were set.\nUse the "
9332                  "\"delete\" command to delete unwanted breakpoints."));
9333       prev_breakpoint_count = prev_bkpt_count;
9334     }
9335
9336   update_global_location_list (UGLL_MAY_INSERT);
9337
9338   return 1;
9339 }
9340
9341 /* Set a breakpoint.
9342    ARG is a string describing breakpoint address,
9343    condition, and thread.
9344    FLAG specifies if a breakpoint is hardware on,
9345    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9346    and BP_TEMPFLAG.  */
9347
9348 static void
9349 break_command_1 (const char *arg, int flag, int from_tty)
9350 {
9351   int tempflag = flag & BP_TEMPFLAG;
9352   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9353                              ? bp_hardware_breakpoint
9354                              : bp_breakpoint);
9355   struct breakpoint_ops *ops;
9356
9357   event_location_up location = string_to_event_location (&arg, current_language);
9358
9359   /* Matching breakpoints on probes.  */
9360   if (location != NULL
9361       && event_location_type (location.get ()) == PROBE_LOCATION)
9362     ops = &bkpt_probe_breakpoint_ops;
9363   else
9364     ops = &bkpt_breakpoint_ops;
9365
9366   create_breakpoint (get_current_arch (),
9367                      location.get (),
9368                      NULL, 0, arg, 1 /* parse arg */,
9369                      tempflag, type_wanted,
9370                      0 /* Ignore count */,
9371                      pending_break_support,
9372                      ops,
9373                      from_tty,
9374                      1 /* enabled */,
9375                      0 /* internal */,
9376                      0);
9377 }
9378
9379 /* Helper function for break_command_1 and disassemble_command.  */
9380
9381 void
9382 resolve_sal_pc (struct symtab_and_line *sal)
9383 {
9384   CORE_ADDR pc;
9385
9386   if (sal->pc == 0 && sal->symtab != NULL)
9387     {
9388       if (!find_line_pc (sal->symtab, sal->line, &pc))
9389         error (_("No line %d in file \"%s\"."),
9390                sal->line, symtab_to_filename_for_display (sal->symtab));
9391       sal->pc = pc;
9392
9393       /* If this SAL corresponds to a breakpoint inserted using a line
9394          number, then skip the function prologue if necessary.  */
9395       if (sal->explicit_line)
9396         skip_prologue_sal (sal);
9397     }
9398
9399   if (sal->section == 0 && sal->symtab != NULL)
9400     {
9401       const struct blockvector *bv;
9402       const struct block *b;
9403       struct symbol *sym;
9404
9405       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9406                                     SYMTAB_COMPUNIT (sal->symtab));
9407       if (bv != NULL)
9408         {
9409           sym = block_linkage_function (b);
9410           if (sym != NULL)
9411             {
9412               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9413               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9414                                                  sym);
9415             }
9416           else
9417             {
9418               /* It really is worthwhile to have the section, so we'll
9419                  just have to look harder. This case can be executed
9420                  if we have line numbers but no functions (as can
9421                  happen in assembly source).  */
9422
9423               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9424               switch_to_program_space_and_thread (sal->pspace);
9425
9426               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9427               if (msym.minsym)
9428                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9429             }
9430         }
9431     }
9432 }
9433
9434 void
9435 break_command (const char *arg, int from_tty)
9436 {
9437   break_command_1 (arg, 0, from_tty);
9438 }
9439
9440 void
9441 tbreak_command (const char *arg, int from_tty)
9442 {
9443   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9444 }
9445
9446 static void
9447 hbreak_command (const char *arg, int from_tty)
9448 {
9449   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9450 }
9451
9452 static void
9453 thbreak_command (const char *arg, int from_tty)
9454 {
9455   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9456 }
9457
9458 static void
9459 stop_command (const char *arg, int from_tty)
9460 {
9461   printf_filtered (_("Specify the type of breakpoint to set.\n\
9462 Usage: stop in <function | address>\n\
9463        stop at <line>\n"));
9464 }
9465
9466 static void
9467 stopin_command (const char *arg, int from_tty)
9468 {
9469   int badInput = 0;
9470
9471   if (arg == NULL)
9472     badInput = 1;
9473   else if (*arg != '*')
9474     {
9475       const char *argptr = arg;
9476       int hasColon = 0;
9477
9478       /* Look for a ':'.  If this is a line number specification, then
9479          say it is bad, otherwise, it should be an address or
9480          function/method name.  */
9481       while (*argptr && !hasColon)
9482         {
9483           hasColon = (*argptr == ':');
9484           argptr++;
9485         }
9486
9487       if (hasColon)
9488         badInput = (*argptr != ':');    /* Not a class::method */
9489       else
9490         badInput = isdigit (*arg);      /* a simple line number */
9491     }
9492
9493   if (badInput)
9494     printf_filtered (_("Usage: stop in <function | address>\n"));
9495   else
9496     break_command_1 (arg, 0, from_tty);
9497 }
9498
9499 static void
9500 stopat_command (const char *arg, int from_tty)
9501 {
9502   int badInput = 0;
9503
9504   if (arg == NULL || *arg == '*')       /* no line number */
9505     badInput = 1;
9506   else
9507     {
9508       const char *argptr = arg;
9509       int hasColon = 0;
9510
9511       /* Look for a ':'.  If there is a '::' then get out, otherwise
9512          it is probably a line number.  */
9513       while (*argptr && !hasColon)
9514         {
9515           hasColon = (*argptr == ':');
9516           argptr++;
9517         }
9518
9519       if (hasColon)
9520         badInput = (*argptr == ':');    /* we have class::method */
9521       else
9522         badInput = !isdigit (*arg);     /* not a line number */
9523     }
9524
9525   if (badInput)
9526     printf_filtered (_("Usage: stop at LINE\n"));
9527   else
9528     break_command_1 (arg, 0, from_tty);
9529 }
9530
9531 /* The dynamic printf command is mostly like a regular breakpoint, but
9532    with a prewired command list consisting of a single output command,
9533    built from extra arguments supplied on the dprintf command
9534    line.  */
9535
9536 static void
9537 dprintf_command (const char *arg, int from_tty)
9538 {
9539   event_location_up location = string_to_event_location (&arg, current_language);
9540
9541   /* If non-NULL, ARG should have been advanced past the location;
9542      the next character must be ','.  */
9543   if (arg != NULL)
9544     {
9545       if (arg[0] != ',' || arg[1] == '\0')
9546         error (_("Format string required"));
9547       else
9548         {
9549           /* Skip the comma.  */
9550           ++arg;
9551         }
9552     }
9553
9554   create_breakpoint (get_current_arch (),
9555                      location.get (),
9556                      NULL, 0, arg, 1 /* parse arg */,
9557                      0, bp_dprintf,
9558                      0 /* Ignore count */,
9559                      pending_break_support,
9560                      &dprintf_breakpoint_ops,
9561                      from_tty,
9562                      1 /* enabled */,
9563                      0 /* internal */,
9564                      0);
9565 }
9566
9567 static void
9568 agent_printf_command (const char *arg, int from_tty)
9569 {
9570   error (_("May only run agent-printf on the target"));
9571 }
9572
9573 /* Implement the "breakpoint_hit" breakpoint_ops method for
9574    ranged breakpoints.  */
9575
9576 static int
9577 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9578                                   const address_space *aspace,
9579                                   CORE_ADDR bp_addr,
9580                                   const struct target_waitstatus *ws)
9581 {
9582   if (ws->kind != TARGET_WAITKIND_STOPPED
9583       || ws->value.sig != GDB_SIGNAL_TRAP)
9584     return 0;
9585
9586   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9587                                          bl->length, aspace, bp_addr);
9588 }
9589
9590 /* Implement the "resources_needed" breakpoint_ops method for
9591    ranged breakpoints.  */
9592
9593 static int
9594 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9595 {
9596   return target_ranged_break_num_registers ();
9597 }
9598
9599 /* Implement the "print_it" breakpoint_ops method for
9600    ranged breakpoints.  */
9601
9602 static enum print_stop_action
9603 print_it_ranged_breakpoint (bpstat bs)
9604 {
9605   struct breakpoint *b = bs->breakpoint_at;
9606   struct bp_location *bl = b->loc;
9607   struct ui_out *uiout = current_uiout;
9608
9609   gdb_assert (b->type == bp_hardware_breakpoint);
9610
9611   /* Ranged breakpoints have only one location.  */
9612   gdb_assert (bl && bl->next == NULL);
9613
9614   annotate_breakpoint (b->number);
9615
9616   maybe_print_thread_hit_breakpoint (uiout);
9617
9618   if (b->disposition == disp_del)
9619     uiout->text ("Temporary ranged breakpoint ");
9620   else
9621     uiout->text ("Ranged breakpoint ");
9622   if (uiout->is_mi_like_p ())
9623     {
9624       uiout->field_string ("reason",
9625                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9626       uiout->field_string ("disp", bpdisp_text (b->disposition));
9627     }
9628   uiout->field_int ("bkptno", b->number);
9629   uiout->text (", ");
9630
9631   return PRINT_SRC_AND_LOC;
9632 }
9633
9634 /* Implement the "print_one" breakpoint_ops method for
9635    ranged breakpoints.  */
9636
9637 static void
9638 print_one_ranged_breakpoint (struct breakpoint *b,
9639                              struct bp_location **last_loc)
9640 {
9641   struct bp_location *bl = b->loc;
9642   struct value_print_options opts;
9643   struct ui_out *uiout = current_uiout;
9644
9645   /* Ranged breakpoints have only one location.  */
9646   gdb_assert (bl && bl->next == NULL);
9647
9648   get_user_print_options (&opts);
9649
9650   if (opts.addressprint)
9651     /* We don't print the address range here, it will be printed later
9652        by print_one_detail_ranged_breakpoint.  */
9653     uiout->field_skip ("addr");
9654   annotate_field (5);
9655   print_breakpoint_location (b, bl);
9656   *last_loc = bl;
9657 }
9658
9659 /* Implement the "print_one_detail" breakpoint_ops method for
9660    ranged breakpoints.  */
9661
9662 static void
9663 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9664                                     struct ui_out *uiout)
9665 {
9666   CORE_ADDR address_start, address_end;
9667   struct bp_location *bl = b->loc;
9668   string_file stb;
9669
9670   gdb_assert (bl);
9671
9672   address_start = bl->address;
9673   address_end = address_start + bl->length - 1;
9674
9675   uiout->text ("\taddress range: ");
9676   stb.printf ("[%s, %s]",
9677               print_core_address (bl->gdbarch, address_start),
9678               print_core_address (bl->gdbarch, address_end));
9679   uiout->field_stream ("addr", stb);
9680   uiout->text ("\n");
9681 }
9682
9683 /* Implement the "print_mention" breakpoint_ops method for
9684    ranged breakpoints.  */
9685
9686 static void
9687 print_mention_ranged_breakpoint (struct breakpoint *b)
9688 {
9689   struct bp_location *bl = b->loc;
9690   struct ui_out *uiout = current_uiout;
9691
9692   gdb_assert (bl);
9693   gdb_assert (b->type == bp_hardware_breakpoint);
9694
9695   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9696                   b->number, paddress (bl->gdbarch, bl->address),
9697                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9698 }
9699
9700 /* Implement the "print_recreate" breakpoint_ops method for
9701    ranged breakpoints.  */
9702
9703 static void
9704 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9705 {
9706   fprintf_unfiltered (fp, "break-range %s, %s",
9707                       event_location_to_string (b->location.get ()),
9708                       event_location_to_string (b->location_range_end.get ()));
9709   print_recreate_thread (b, fp);
9710 }
9711
9712 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9713
9714 static struct breakpoint_ops ranged_breakpoint_ops;
9715
9716 /* Find the address where the end of the breakpoint range should be
9717    placed, given the SAL of the end of the range.  This is so that if
9718    the user provides a line number, the end of the range is set to the
9719    last instruction of the given line.  */
9720
9721 static CORE_ADDR
9722 find_breakpoint_range_end (struct symtab_and_line sal)
9723 {
9724   CORE_ADDR end;
9725
9726   /* If the user provided a PC value, use it.  Otherwise,
9727      find the address of the end of the given location.  */
9728   if (sal.explicit_pc)
9729     end = sal.pc;
9730   else
9731     {
9732       int ret;
9733       CORE_ADDR start;
9734
9735       ret = find_line_pc_range (sal, &start, &end);
9736       if (!ret)
9737         error (_("Could not find location of the end of the range."));
9738
9739       /* find_line_pc_range returns the start of the next line.  */
9740       end--;
9741     }
9742
9743   return end;
9744 }
9745
9746 /* Implement the "break-range" CLI command.  */
9747
9748 static void
9749 break_range_command (const char *arg, int from_tty)
9750 {
9751   const char *arg_start;
9752   struct linespec_result canonical_start, canonical_end;
9753   int bp_count, can_use_bp, length;
9754   CORE_ADDR end;
9755   struct breakpoint *b;
9756
9757   /* We don't support software ranged breakpoints.  */
9758   if (target_ranged_break_num_registers () < 0)
9759     error (_("This target does not support hardware ranged breakpoints."));
9760
9761   bp_count = hw_breakpoint_used_count ();
9762   bp_count += target_ranged_break_num_registers ();
9763   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9764                                                    bp_count, 0);
9765   if (can_use_bp < 0)
9766     error (_("Hardware breakpoints used exceeds limit."));
9767
9768   arg = skip_spaces (arg);
9769   if (arg == NULL || arg[0] == '\0')
9770     error(_("No address range specified."));
9771
9772   arg_start = arg;
9773   event_location_up start_location = string_to_event_location (&arg,
9774                                                                current_language);
9775   parse_breakpoint_sals (start_location.get (), &canonical_start);
9776
9777   if (arg[0] != ',')
9778     error (_("Too few arguments."));
9779   else if (canonical_start.lsals.empty ())
9780     error (_("Could not find location of the beginning of the range."));
9781
9782   const linespec_sals &lsal_start = canonical_start.lsals[0];
9783
9784   if (canonical_start.lsals.size () > 1
9785       || lsal_start.sals.size () != 1)
9786     error (_("Cannot create a ranged breakpoint with multiple locations."));
9787
9788   const symtab_and_line &sal_start = lsal_start.sals[0];
9789   std::string addr_string_start (arg_start, arg - arg_start);
9790
9791   arg++;        /* Skip the comma.  */
9792   arg = skip_spaces (arg);
9793
9794   /* Parse the end location.  */
9795
9796   arg_start = arg;
9797
9798   /* We call decode_line_full directly here instead of using
9799      parse_breakpoint_sals because we need to specify the start location's
9800      symtab and line as the default symtab and line for the end of the
9801      range.  This makes it possible to have ranges like "foo.c:27, +14",
9802      where +14 means 14 lines from the start location.  */
9803   event_location_up end_location = string_to_event_location (&arg,
9804                                                              current_language);
9805   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9806                     sal_start.symtab, sal_start.line,
9807                     &canonical_end, NULL, NULL);
9808
9809   if (canonical_end.lsals.empty ())
9810     error (_("Could not find location of the end of the range."));
9811
9812   const linespec_sals &lsal_end = canonical_end.lsals[0];
9813   if (canonical_end.lsals.size () > 1
9814       || lsal_end.sals.size () != 1)
9815     error (_("Cannot create a ranged breakpoint with multiple locations."));
9816
9817   const symtab_and_line &sal_end = lsal_end.sals[0];
9818
9819   end = find_breakpoint_range_end (sal_end);
9820   if (sal_start.pc > end)
9821     error (_("Invalid address range, end precedes start."));
9822
9823   length = end - sal_start.pc + 1;
9824   if (length < 0)
9825     /* Length overflowed.  */
9826     error (_("Address range too large."));
9827   else if (length == 1)
9828     {
9829       /* This range is simple enough to be handled by
9830          the `hbreak' command.  */
9831       hbreak_command (&addr_string_start[0], 1);
9832
9833       return;
9834     }
9835
9836   /* Now set up the breakpoint.  */
9837   b = set_raw_breakpoint (get_current_arch (), sal_start,
9838                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9839   set_breakpoint_count (breakpoint_count + 1);
9840   b->number = breakpoint_count;
9841   b->disposition = disp_donttouch;
9842   b->location = std::move (start_location);
9843   b->location_range_end = std::move (end_location);
9844   b->loc->length = length;
9845
9846   mention (b);
9847   gdb::observers::breakpoint_created.notify (b);
9848   update_global_location_list (UGLL_MAY_INSERT);
9849 }
9850
9851 /*  Return non-zero if EXP is verified as constant.  Returned zero
9852     means EXP is variable.  Also the constant detection may fail for
9853     some constant expressions and in such case still falsely return
9854     zero.  */
9855
9856 static int
9857 watchpoint_exp_is_const (const struct expression *exp)
9858 {
9859   int i = exp->nelts;
9860
9861   while (i > 0)
9862     {
9863       int oplenp, argsp;
9864
9865       /* We are only interested in the descriptor of each element.  */
9866       operator_length (exp, i, &oplenp, &argsp);
9867       i -= oplenp;
9868
9869       switch (exp->elts[i].opcode)
9870         {
9871         case BINOP_ADD:
9872         case BINOP_SUB:
9873         case BINOP_MUL:
9874         case BINOP_DIV:
9875         case BINOP_REM:
9876         case BINOP_MOD:
9877         case BINOP_LSH:
9878         case BINOP_RSH:
9879         case BINOP_LOGICAL_AND:
9880         case BINOP_LOGICAL_OR:
9881         case BINOP_BITWISE_AND:
9882         case BINOP_BITWISE_IOR:
9883         case BINOP_BITWISE_XOR:
9884         case BINOP_EQUAL:
9885         case BINOP_NOTEQUAL:
9886         case BINOP_LESS:
9887         case BINOP_GTR:
9888         case BINOP_LEQ:
9889         case BINOP_GEQ:
9890         case BINOP_REPEAT:
9891         case BINOP_COMMA:
9892         case BINOP_EXP:
9893         case BINOP_MIN:
9894         case BINOP_MAX:
9895         case BINOP_INTDIV:
9896         case BINOP_CONCAT:
9897         case TERNOP_COND:
9898         case TERNOP_SLICE:
9899
9900         case OP_LONG:
9901         case OP_FLOAT:
9902         case OP_LAST:
9903         case OP_COMPLEX:
9904         case OP_STRING:
9905         case OP_ARRAY:
9906         case OP_TYPE:
9907         case OP_TYPEOF:
9908         case OP_DECLTYPE:
9909         case OP_TYPEID:
9910         case OP_NAME:
9911         case OP_OBJC_NSSTRING:
9912
9913         case UNOP_NEG:
9914         case UNOP_LOGICAL_NOT:
9915         case UNOP_COMPLEMENT:
9916         case UNOP_ADDR:
9917         case UNOP_HIGH:
9918         case UNOP_CAST:
9919
9920         case UNOP_CAST_TYPE:
9921         case UNOP_REINTERPRET_CAST:
9922         case UNOP_DYNAMIC_CAST:
9923           /* Unary, binary and ternary operators: We have to check
9924              their operands.  If they are constant, then so is the
9925              result of that operation.  For instance, if A and B are
9926              determined to be constants, then so is "A + B".
9927
9928              UNOP_IND is one exception to the rule above, because the
9929              value of *ADDR is not necessarily a constant, even when
9930              ADDR is.  */
9931           break;
9932
9933         case OP_VAR_VALUE:
9934           /* Check whether the associated symbol is a constant.
9935
9936              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9937              possible that a buggy compiler could mark a variable as
9938              constant even when it is not, and TYPE_CONST would return
9939              true in this case, while SYMBOL_CLASS wouldn't.
9940
9941              We also have to check for function symbols because they
9942              are always constant.  */
9943           {
9944             struct symbol *s = exp->elts[i + 2].symbol;
9945
9946             if (SYMBOL_CLASS (s) != LOC_BLOCK
9947                 && SYMBOL_CLASS (s) != LOC_CONST
9948                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9949               return 0;
9950             break;
9951           }
9952
9953         /* The default action is to return 0 because we are using
9954            the optimistic approach here: If we don't know something,
9955            then it is not a constant.  */
9956         default:
9957           return 0;
9958         }
9959     }
9960
9961   return 1;
9962 }
9963
9964 /* Watchpoint destructor.  */
9965
9966 watchpoint::~watchpoint ()
9967 {
9968   xfree (this->exp_string);
9969   xfree (this->exp_string_reparse);
9970 }
9971
9972 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9973
9974 static void
9975 re_set_watchpoint (struct breakpoint *b)
9976 {
9977   struct watchpoint *w = (struct watchpoint *) b;
9978
9979   /* Watchpoint can be either on expression using entirely global
9980      variables, or it can be on local variables.
9981
9982      Watchpoints of the first kind are never auto-deleted, and even
9983      persist across program restarts.  Since they can use variables
9984      from shared libraries, we need to reparse expression as libraries
9985      are loaded and unloaded.
9986
9987      Watchpoints on local variables can also change meaning as result
9988      of solib event.  For example, if a watchpoint uses both a local
9989      and a global variables in expression, it's a local watchpoint,
9990      but unloading of a shared library will make the expression
9991      invalid.  This is not a very common use case, but we still
9992      re-evaluate expression, to avoid surprises to the user.
9993
9994      Note that for local watchpoints, we re-evaluate it only if
9995      watchpoints frame id is still valid.  If it's not, it means the
9996      watchpoint is out of scope and will be deleted soon.  In fact,
9997      I'm not sure we'll ever be called in this case.
9998
9999      If a local watchpoint's frame id is still valid, then
10000      w->exp_valid_block is likewise valid, and we can safely use it.
10001
10002      Don't do anything about disabled watchpoints, since they will be
10003      reevaluated again when enabled.  */
10004   update_watchpoint (w, 1 /* reparse */);
10005 }
10006
10007 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10008
10009 static int
10010 insert_watchpoint (struct bp_location *bl)
10011 {
10012   struct watchpoint *w = (struct watchpoint *) bl->owner;
10013   int length = w->exact ? 1 : bl->length;
10014
10015   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10016                                    w->cond_exp.get ());
10017 }
10018
10019 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10020
10021 static int
10022 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10023 {
10024   struct watchpoint *w = (struct watchpoint *) bl->owner;
10025   int length = w->exact ? 1 : bl->length;
10026
10027   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10028                                    w->cond_exp.get ());
10029 }
10030
10031 static int
10032 breakpoint_hit_watchpoint (const struct bp_location *bl,
10033                            const address_space *aspace, CORE_ADDR bp_addr,
10034                            const struct target_waitstatus *ws)
10035 {
10036   struct breakpoint *b = bl->owner;
10037   struct watchpoint *w = (struct watchpoint *) b;
10038
10039   /* Continuable hardware watchpoints are treated as non-existent if the
10040      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10041      some data address).  Otherwise gdb won't stop on a break instruction
10042      in the code (not from a breakpoint) when a hardware watchpoint has
10043      been defined.  Also skip watchpoints which we know did not trigger
10044      (did not match the data address).  */
10045   if (is_hardware_watchpoint (b)
10046       && w->watchpoint_triggered == watch_triggered_no)
10047     return 0;
10048
10049   return 1;
10050 }
10051
10052 static void
10053 check_status_watchpoint (bpstat bs)
10054 {
10055   gdb_assert (is_watchpoint (bs->breakpoint_at));
10056
10057   bpstat_check_watchpoint (bs);
10058 }
10059
10060 /* Implement the "resources_needed" breakpoint_ops method for
10061    hardware watchpoints.  */
10062
10063 static int
10064 resources_needed_watchpoint (const struct bp_location *bl)
10065 {
10066   struct watchpoint *w = (struct watchpoint *) bl->owner;
10067   int length = w->exact? 1 : bl->length;
10068
10069   return target_region_ok_for_hw_watchpoint (bl->address, length);
10070 }
10071
10072 /* Implement the "works_in_software_mode" breakpoint_ops method for
10073    hardware watchpoints.  */
10074
10075 static int
10076 works_in_software_mode_watchpoint (const struct breakpoint *b)
10077 {
10078   /* Read and access watchpoints only work with hardware support.  */
10079   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10080 }
10081
10082 static enum print_stop_action
10083 print_it_watchpoint (bpstat bs)
10084 {
10085   struct breakpoint *b;
10086   enum print_stop_action result;
10087   struct watchpoint *w;
10088   struct ui_out *uiout = current_uiout;
10089
10090   gdb_assert (bs->bp_location_at != NULL);
10091
10092   b = bs->breakpoint_at;
10093   w = (struct watchpoint *) b;
10094
10095   annotate_watchpoint (b->number);
10096   maybe_print_thread_hit_breakpoint (uiout);
10097
10098   string_file stb;
10099
10100   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10101   switch (b->type)
10102     {
10103     case bp_watchpoint:
10104     case bp_hardware_watchpoint:
10105       if (uiout->is_mi_like_p ())
10106         uiout->field_string
10107           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10108       mention (b);
10109       tuple_emitter.emplace (uiout, "value");
10110       uiout->text ("\nOld value = ");
10111       watchpoint_value_print (bs->old_val.get (), &stb);
10112       uiout->field_stream ("old", stb);
10113       uiout->text ("\nNew value = ");
10114       watchpoint_value_print (w->val.get (), &stb);
10115       uiout->field_stream ("new", stb);
10116       uiout->text ("\n");
10117       /* More than one watchpoint may have been triggered.  */
10118       result = PRINT_UNKNOWN;
10119       break;
10120
10121     case bp_read_watchpoint:
10122       if (uiout->is_mi_like_p ())
10123         uiout->field_string
10124           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10125       mention (b);
10126       tuple_emitter.emplace (uiout, "value");
10127       uiout->text ("\nValue = ");
10128       watchpoint_value_print (w->val.get (), &stb);
10129       uiout->field_stream ("value", stb);
10130       uiout->text ("\n");
10131       result = PRINT_UNKNOWN;
10132       break;
10133
10134     case bp_access_watchpoint:
10135       if (bs->old_val != NULL)
10136         {
10137           if (uiout->is_mi_like_p ())
10138             uiout->field_string
10139               ("reason",
10140                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10141           mention (b);
10142           tuple_emitter.emplace (uiout, "value");
10143           uiout->text ("\nOld value = ");
10144           watchpoint_value_print (bs->old_val.get (), &stb);
10145           uiout->field_stream ("old", stb);
10146           uiout->text ("\nNew value = ");
10147         }
10148       else
10149         {
10150           mention (b);
10151           if (uiout->is_mi_like_p ())
10152             uiout->field_string
10153               ("reason",
10154                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10155           tuple_emitter.emplace (uiout, "value");
10156           uiout->text ("\nValue = ");
10157         }
10158       watchpoint_value_print (w->val.get (), &stb);
10159       uiout->field_stream ("new", stb);
10160       uiout->text ("\n");
10161       result = PRINT_UNKNOWN;
10162       break;
10163     default:
10164       result = PRINT_UNKNOWN;
10165     }
10166
10167   return result;
10168 }
10169
10170 /* Implement the "print_mention" breakpoint_ops method for hardware
10171    watchpoints.  */
10172
10173 static void
10174 print_mention_watchpoint (struct breakpoint *b)
10175 {
10176   struct watchpoint *w = (struct watchpoint *) b;
10177   struct ui_out *uiout = current_uiout;
10178   const char *tuple_name;
10179
10180   switch (b->type)
10181     {
10182     case bp_watchpoint:
10183       uiout->text ("Watchpoint ");
10184       tuple_name = "wpt";
10185       break;
10186     case bp_hardware_watchpoint:
10187       uiout->text ("Hardware watchpoint ");
10188       tuple_name = "wpt";
10189       break;
10190     case bp_read_watchpoint:
10191       uiout->text ("Hardware read watchpoint ");
10192       tuple_name = "hw-rwpt";
10193       break;
10194     case bp_access_watchpoint:
10195       uiout->text ("Hardware access (read/write) watchpoint ");
10196       tuple_name = "hw-awpt";
10197       break;
10198     default:
10199       internal_error (__FILE__, __LINE__,
10200                       _("Invalid hardware watchpoint type."));
10201     }
10202
10203   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10204   uiout->field_int ("number", b->number);
10205   uiout->text (": ");
10206   uiout->field_string ("exp", w->exp_string);
10207 }
10208
10209 /* Implement the "print_recreate" breakpoint_ops method for
10210    watchpoints.  */
10211
10212 static void
10213 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10214 {
10215   struct watchpoint *w = (struct watchpoint *) b;
10216
10217   switch (b->type)
10218     {
10219     case bp_watchpoint:
10220     case bp_hardware_watchpoint:
10221       fprintf_unfiltered (fp, "watch");
10222       break;
10223     case bp_read_watchpoint:
10224       fprintf_unfiltered (fp, "rwatch");
10225       break;
10226     case bp_access_watchpoint:
10227       fprintf_unfiltered (fp, "awatch");
10228       break;
10229     default:
10230       internal_error (__FILE__, __LINE__,
10231                       _("Invalid watchpoint type."));
10232     }
10233
10234   fprintf_unfiltered (fp, " %s", w->exp_string);
10235   print_recreate_thread (b, fp);
10236 }
10237
10238 /* Implement the "explains_signal" breakpoint_ops method for
10239    watchpoints.  */
10240
10241 static int
10242 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10243 {
10244   /* A software watchpoint cannot cause a signal other than
10245      GDB_SIGNAL_TRAP.  */
10246   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10247     return 0;
10248
10249   return 1;
10250 }
10251
10252 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10253
10254 static struct breakpoint_ops watchpoint_breakpoint_ops;
10255
10256 /* Implement the "insert" breakpoint_ops method for
10257    masked hardware watchpoints.  */
10258
10259 static int
10260 insert_masked_watchpoint (struct bp_location *bl)
10261 {
10262   struct watchpoint *w = (struct watchpoint *) bl->owner;
10263
10264   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10265                                         bl->watchpoint_type);
10266 }
10267
10268 /* Implement the "remove" breakpoint_ops method for
10269    masked hardware watchpoints.  */
10270
10271 static int
10272 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10273 {
10274   struct watchpoint *w = (struct watchpoint *) bl->owner;
10275
10276   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10277                                         bl->watchpoint_type);
10278 }
10279
10280 /* Implement the "resources_needed" breakpoint_ops method for
10281    masked hardware watchpoints.  */
10282
10283 static int
10284 resources_needed_masked_watchpoint (const struct bp_location *bl)
10285 {
10286   struct watchpoint *w = (struct watchpoint *) bl->owner;
10287
10288   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10289 }
10290
10291 /* Implement the "works_in_software_mode" breakpoint_ops method for
10292    masked hardware watchpoints.  */
10293
10294 static int
10295 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10296 {
10297   return 0;
10298 }
10299
10300 /* Implement the "print_it" breakpoint_ops method for
10301    masked hardware watchpoints.  */
10302
10303 static enum print_stop_action
10304 print_it_masked_watchpoint (bpstat bs)
10305 {
10306   struct breakpoint *b = bs->breakpoint_at;
10307   struct ui_out *uiout = current_uiout;
10308
10309   /* Masked watchpoints have only one location.  */
10310   gdb_assert (b->loc && b->loc->next == NULL);
10311
10312   annotate_watchpoint (b->number);
10313   maybe_print_thread_hit_breakpoint (uiout);
10314
10315   switch (b->type)
10316     {
10317     case bp_hardware_watchpoint:
10318       if (uiout->is_mi_like_p ())
10319         uiout->field_string
10320           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10321       break;
10322
10323     case bp_read_watchpoint:
10324       if (uiout->is_mi_like_p ())
10325         uiout->field_string
10326           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10327       break;
10328
10329     case bp_access_watchpoint:
10330       if (uiout->is_mi_like_p ())
10331         uiout->field_string
10332           ("reason",
10333            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10334       break;
10335     default:
10336       internal_error (__FILE__, __LINE__,
10337                       _("Invalid hardware watchpoint type."));
10338     }
10339
10340   mention (b);
10341   uiout->text (_("\n\
10342 Check the underlying instruction at PC for the memory\n\
10343 address and value which triggered this watchpoint.\n"));
10344   uiout->text ("\n");
10345
10346   /* More than one watchpoint may have been triggered.  */
10347   return PRINT_UNKNOWN;
10348 }
10349
10350 /* Implement the "print_one_detail" breakpoint_ops method for
10351    masked hardware watchpoints.  */
10352
10353 static void
10354 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10355                                     struct ui_out *uiout)
10356 {
10357   struct watchpoint *w = (struct watchpoint *) b;
10358
10359   /* Masked watchpoints have only one location.  */
10360   gdb_assert (b->loc && b->loc->next == NULL);
10361
10362   uiout->text ("\tmask ");
10363   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10364   uiout->text ("\n");
10365 }
10366
10367 /* Implement the "print_mention" breakpoint_ops method for
10368    masked hardware watchpoints.  */
10369
10370 static void
10371 print_mention_masked_watchpoint (struct breakpoint *b)
10372 {
10373   struct watchpoint *w = (struct watchpoint *) b;
10374   struct ui_out *uiout = current_uiout;
10375   const char *tuple_name;
10376
10377   switch (b->type)
10378     {
10379     case bp_hardware_watchpoint:
10380       uiout->text ("Masked hardware watchpoint ");
10381       tuple_name = "wpt";
10382       break;
10383     case bp_read_watchpoint:
10384       uiout->text ("Masked hardware read watchpoint ");
10385       tuple_name = "hw-rwpt";
10386       break;
10387     case bp_access_watchpoint:
10388       uiout->text ("Masked hardware access (read/write) watchpoint ");
10389       tuple_name = "hw-awpt";
10390       break;
10391     default:
10392       internal_error (__FILE__, __LINE__,
10393                       _("Invalid hardware watchpoint type."));
10394     }
10395
10396   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10397   uiout->field_int ("number", b->number);
10398   uiout->text (": ");
10399   uiout->field_string ("exp", w->exp_string);
10400 }
10401
10402 /* Implement the "print_recreate" breakpoint_ops method for
10403    masked hardware watchpoints.  */
10404
10405 static void
10406 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10407 {
10408   struct watchpoint *w = (struct watchpoint *) b;
10409   char tmp[40];
10410
10411   switch (b->type)
10412     {
10413     case bp_hardware_watchpoint:
10414       fprintf_unfiltered (fp, "watch");
10415       break;
10416     case bp_read_watchpoint:
10417       fprintf_unfiltered (fp, "rwatch");
10418       break;
10419     case bp_access_watchpoint:
10420       fprintf_unfiltered (fp, "awatch");
10421       break;
10422     default:
10423       internal_error (__FILE__, __LINE__,
10424                       _("Invalid hardware watchpoint type."));
10425     }
10426
10427   sprintf_vma (tmp, w->hw_wp_mask);
10428   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10429   print_recreate_thread (b, fp);
10430 }
10431
10432 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10433
10434 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10435
10436 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10437
10438 static int
10439 is_masked_watchpoint (const struct breakpoint *b)
10440 {
10441   return b->ops == &masked_watchpoint_breakpoint_ops;
10442 }
10443
10444 /* accessflag:  hw_write:  watch write, 
10445                 hw_read:   watch read, 
10446                 hw_access: watch access (read or write) */
10447 static void
10448 watch_command_1 (const char *arg, int accessflag, int from_tty,
10449                  int just_location, int internal)
10450 {
10451   struct breakpoint *scope_breakpoint = NULL;
10452   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10453   struct value *result;
10454   int saved_bitpos = 0, saved_bitsize = 0;
10455   const char *exp_start = NULL;
10456   const char *exp_end = NULL;
10457   const char *tok, *end_tok;
10458   int toklen = -1;
10459   const char *cond_start = NULL;
10460   const char *cond_end = NULL;
10461   enum bptype bp_type;
10462   int thread = -1;
10463   int pc = 0;
10464   /* Flag to indicate whether we are going to use masks for
10465      the hardware watchpoint.  */
10466   int use_mask = 0;
10467   CORE_ADDR mask = 0;
10468
10469   /* Make sure that we actually have parameters to parse.  */
10470   if (arg != NULL && arg[0] != '\0')
10471     {
10472       const char *value_start;
10473
10474       exp_end = arg + strlen (arg);
10475
10476       /* Look for "parameter value" pairs at the end
10477          of the arguments string.  */
10478       for (tok = exp_end - 1; tok > arg; tok--)
10479         {
10480           /* Skip whitespace at the end of the argument list.  */
10481           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10482             tok--;
10483
10484           /* Find the beginning of the last token.
10485              This is the value of the parameter.  */
10486           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10487             tok--;
10488           value_start = tok + 1;
10489
10490           /* Skip whitespace.  */
10491           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10492             tok--;
10493
10494           end_tok = tok;
10495
10496           /* Find the beginning of the second to last token.
10497              This is the parameter itself.  */
10498           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10499             tok--;
10500           tok++;
10501           toklen = end_tok - tok + 1;
10502
10503           if (toklen == 6 && startswith (tok, "thread"))
10504             {
10505               struct thread_info *thr;
10506               /* At this point we've found a "thread" token, which means
10507                  the user is trying to set a watchpoint that triggers
10508                  only in a specific thread.  */
10509               const char *endp;
10510
10511               if (thread != -1)
10512                 error(_("You can specify only one thread."));
10513
10514               /* Extract the thread ID from the next token.  */
10515               thr = parse_thread_id (value_start, &endp);
10516
10517               /* Check if the user provided a valid thread ID.  */
10518               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10519                 invalid_thread_id_error (value_start);
10520
10521               thread = thr->global_num;
10522             }
10523           else if (toklen == 4 && startswith (tok, "mask"))
10524             {
10525               /* We've found a "mask" token, which means the user wants to
10526                  create a hardware watchpoint that is going to have the mask
10527                  facility.  */
10528               struct value *mask_value, *mark;
10529
10530               if (use_mask)
10531                 error(_("You can specify only one mask."));
10532
10533               use_mask = just_location = 1;
10534
10535               mark = value_mark ();
10536               mask_value = parse_to_comma_and_eval (&value_start);
10537               mask = value_as_address (mask_value);
10538               value_free_to_mark (mark);
10539             }
10540           else
10541             /* We didn't recognize what we found.  We should stop here.  */
10542             break;
10543
10544           /* Truncate the string and get rid of the "parameter value" pair before
10545              the arguments string is parsed by the parse_exp_1 function.  */
10546           exp_end = tok;
10547         }
10548     }
10549   else
10550     exp_end = arg;
10551
10552   /* Parse the rest of the arguments.  From here on out, everything
10553      is in terms of a newly allocated string instead of the original
10554      ARG.  */
10555   std::string expression (arg, exp_end - arg);
10556   exp_start = arg = expression.c_str ();
10557   innermost_block_tracker tracker;
10558   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10559   exp_end = arg;
10560   /* Remove trailing whitespace from the expression before saving it.
10561      This makes the eventual display of the expression string a bit
10562      prettier.  */
10563   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10564     --exp_end;
10565
10566   /* Checking if the expression is not constant.  */
10567   if (watchpoint_exp_is_const (exp.get ()))
10568     {
10569       int len;
10570
10571       len = exp_end - exp_start;
10572       while (len > 0 && isspace (exp_start[len - 1]))
10573         len--;
10574       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10575     }
10576
10577   exp_valid_block = tracker.block ();
10578   struct value *mark = value_mark ();
10579   struct value *val_as_value = nullptr;
10580   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10581                       just_location);
10582
10583   if (val_as_value != NULL && just_location)
10584     {
10585       saved_bitpos = value_bitpos (val_as_value);
10586       saved_bitsize = value_bitsize (val_as_value);
10587     }
10588
10589   value_ref_ptr val;
10590   if (just_location)
10591     {
10592       int ret;
10593
10594       exp_valid_block = NULL;
10595       val = release_value (value_addr (result));
10596       value_free_to_mark (mark);
10597
10598       if (use_mask)
10599         {
10600           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10601                                                    mask);
10602           if (ret == -1)
10603             error (_("This target does not support masked watchpoints."));
10604           else if (ret == -2)
10605             error (_("Invalid mask or memory region."));
10606         }
10607     }
10608   else if (val_as_value != NULL)
10609     val = release_value (val_as_value);
10610
10611   tok = skip_spaces (arg);
10612   end_tok = skip_to_space (tok);
10613
10614   toklen = end_tok - tok;
10615   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10616     {
10617       tok = cond_start = end_tok + 1;
10618       innermost_block_tracker if_tracker;
10619       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10620
10621       /* The watchpoint expression may not be local, but the condition
10622          may still be.  E.g.: `watch global if local > 0'.  */
10623       cond_exp_valid_block = if_tracker.block ();
10624
10625       cond_end = tok;
10626     }
10627   if (*tok)
10628     error (_("Junk at end of command."));
10629
10630   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10631
10632   /* Save this because create_internal_breakpoint below invalidates
10633      'wp_frame'.  */
10634   frame_id watchpoint_frame = get_frame_id (wp_frame);
10635
10636   /* If the expression is "local", then set up a "watchpoint scope"
10637      breakpoint at the point where we've left the scope of the watchpoint
10638      expression.  Create the scope breakpoint before the watchpoint, so
10639      that we will encounter it first in bpstat_stop_status.  */
10640   if (exp_valid_block != NULL && wp_frame != NULL)
10641     {
10642       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10643
10644       if (frame_id_p (caller_frame_id))
10645         {
10646           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10647           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10648
10649           scope_breakpoint
10650             = create_internal_breakpoint (caller_arch, caller_pc,
10651                                           bp_watchpoint_scope,
10652                                           &momentary_breakpoint_ops);
10653
10654           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10655           wp_frame = NULL;
10656
10657           scope_breakpoint->enable_state = bp_enabled;
10658
10659           /* Automatically delete the breakpoint when it hits.  */
10660           scope_breakpoint->disposition = disp_del;
10661
10662           /* Only break in the proper frame (help with recursion).  */
10663           scope_breakpoint->frame_id = caller_frame_id;
10664
10665           /* Set the address at which we will stop.  */
10666           scope_breakpoint->loc->gdbarch = caller_arch;
10667           scope_breakpoint->loc->requested_address = caller_pc;
10668           scope_breakpoint->loc->address
10669             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10670                                          scope_breakpoint->loc->requested_address,
10671                                          scope_breakpoint->type);
10672         }
10673     }
10674
10675   /* Now set up the breakpoint.  We create all watchpoints as hardware
10676      watchpoints here even if hardware watchpoints are turned off, a call
10677      to update_watchpoint later in this function will cause the type to
10678      drop back to bp_watchpoint (software watchpoint) if required.  */
10679
10680   if (accessflag == hw_read)
10681     bp_type = bp_read_watchpoint;
10682   else if (accessflag == hw_access)
10683     bp_type = bp_access_watchpoint;
10684   else
10685     bp_type = bp_hardware_watchpoint;
10686
10687   std::unique_ptr<watchpoint> w (new watchpoint ());
10688
10689   if (use_mask)
10690     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10691                                           &masked_watchpoint_breakpoint_ops);
10692   else
10693     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10694                                           &watchpoint_breakpoint_ops);
10695   w->thread = thread;
10696   w->disposition = disp_donttouch;
10697   w->pspace = current_program_space;
10698   w->exp = std::move (exp);
10699   w->exp_valid_block = exp_valid_block;
10700   w->cond_exp_valid_block = cond_exp_valid_block;
10701   if (just_location)
10702     {
10703       struct type *t = value_type (val.get ());
10704       CORE_ADDR addr = value_as_address (val.get ());
10705
10706       w->exp_string_reparse
10707         = current_language->la_watch_location_expression (t, addr).release ();
10708
10709       w->exp_string = xstrprintf ("-location %.*s",
10710                                   (int) (exp_end - exp_start), exp_start);
10711     }
10712   else
10713     w->exp_string = savestring (exp_start, exp_end - exp_start);
10714
10715   if (use_mask)
10716     {
10717       w->hw_wp_mask = mask;
10718     }
10719   else
10720     {
10721       w->val = val;
10722       w->val_bitpos = saved_bitpos;
10723       w->val_bitsize = saved_bitsize;
10724       w->val_valid = 1;
10725     }
10726
10727   if (cond_start)
10728     w->cond_string = savestring (cond_start, cond_end - cond_start);
10729   else
10730     w->cond_string = 0;
10731
10732   if (frame_id_p (watchpoint_frame))
10733     {
10734       w->watchpoint_frame = watchpoint_frame;
10735       w->watchpoint_thread = inferior_ptid;
10736     }
10737   else
10738     {
10739       w->watchpoint_frame = null_frame_id;
10740       w->watchpoint_thread = null_ptid;
10741     }
10742
10743   if (scope_breakpoint != NULL)
10744     {
10745       /* The scope breakpoint is related to the watchpoint.  We will
10746          need to act on them together.  */
10747       w->related_breakpoint = scope_breakpoint;
10748       scope_breakpoint->related_breakpoint = w.get ();
10749     }
10750
10751   if (!just_location)
10752     value_free_to_mark (mark);
10753
10754   /* Finally update the new watchpoint.  This creates the locations
10755      that should be inserted.  */
10756   update_watchpoint (w.get (), 1);
10757
10758   install_breakpoint (internal, std::move (w), 1);
10759 }
10760
10761 /* Return count of debug registers needed to watch the given expression.
10762    If the watchpoint cannot be handled in hardware return zero.  */
10763
10764 static int
10765 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10766 {
10767   int found_memory_cnt = 0;
10768
10769   /* Did the user specifically forbid us to use hardware watchpoints? */
10770   if (!can_use_hw_watchpoints)
10771     return 0;
10772
10773   gdb_assert (!vals.empty ());
10774   struct value *head = vals[0].get ();
10775
10776   /* Make sure that the value of the expression depends only upon
10777      memory contents, and values computed from them within GDB.  If we
10778      find any register references or function calls, we can't use a
10779      hardware watchpoint.
10780
10781      The idea here is that evaluating an expression generates a series
10782      of values, one holding the value of every subexpression.  (The
10783      expression a*b+c has five subexpressions: a, b, a*b, c, and
10784      a*b+c.)  GDB's values hold almost enough information to establish
10785      the criteria given above --- they identify memory lvalues,
10786      register lvalues, computed values, etcetera.  So we can evaluate
10787      the expression, and then scan the chain of values that leaves
10788      behind to decide whether we can detect any possible change to the
10789      expression's final value using only hardware watchpoints.
10790
10791      However, I don't think that the values returned by inferior
10792      function calls are special in any way.  So this function may not
10793      notice that an expression involving an inferior function call
10794      can't be watched with hardware watchpoints.  FIXME.  */
10795   for (const value_ref_ptr &iter : vals)
10796     {
10797       struct value *v = iter.get ();
10798
10799       if (VALUE_LVAL (v) == lval_memory)
10800         {
10801           if (v != head && value_lazy (v))
10802             /* A lazy memory lvalue in the chain is one that GDB never
10803                needed to fetch; we either just used its address (e.g.,
10804                `a' in `a.b') or we never needed it at all (e.g., `a'
10805                in `a,b').  This doesn't apply to HEAD; if that is
10806                lazy then it was not readable, but watch it anyway.  */
10807             ;
10808           else
10809             {
10810               /* Ahh, memory we actually used!  Check if we can cover
10811                  it with hardware watchpoints.  */
10812               struct type *vtype = check_typedef (value_type (v));
10813
10814               /* We only watch structs and arrays if user asked for it
10815                  explicitly, never if they just happen to appear in a
10816                  middle of some value chain.  */
10817               if (v == head
10818                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10819                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10820                 {
10821                   CORE_ADDR vaddr = value_address (v);
10822                   int len;
10823                   int num_regs;
10824
10825                   len = (target_exact_watchpoints
10826                          && is_scalar_type_recursive (vtype))?
10827                     1 : TYPE_LENGTH (value_type (v));
10828
10829                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10830                   if (!num_regs)
10831                     return 0;
10832                   else
10833                     found_memory_cnt += num_regs;
10834                 }
10835             }
10836         }
10837       else if (VALUE_LVAL (v) != not_lval
10838                && deprecated_value_modifiable (v) == 0)
10839         return 0;       /* These are values from the history (e.g., $1).  */
10840       else if (VALUE_LVAL (v) == lval_register)
10841         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10842     }
10843
10844   /* The expression itself looks suitable for using a hardware
10845      watchpoint, but give the target machine a chance to reject it.  */
10846   return found_memory_cnt;
10847 }
10848
10849 void
10850 watch_command_wrapper (const char *arg, int from_tty, int internal)
10851 {
10852   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10853 }
10854
10855 /* A helper function that looks for the "-location" argument and then
10856    calls watch_command_1.  */
10857
10858 static void
10859 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10860 {
10861   int just_location = 0;
10862
10863   if (arg
10864       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10865           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10866     just_location = 1;
10867
10868   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10869 }
10870
10871 static void
10872 watch_command (const char *arg, int from_tty)
10873 {
10874   watch_maybe_just_location (arg, hw_write, from_tty);
10875 }
10876
10877 void
10878 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10879 {
10880   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10881 }
10882
10883 static void
10884 rwatch_command (const char *arg, int from_tty)
10885 {
10886   watch_maybe_just_location (arg, hw_read, from_tty);
10887 }
10888
10889 void
10890 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10891 {
10892   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10893 }
10894
10895 static void
10896 awatch_command (const char *arg, int from_tty)
10897 {
10898   watch_maybe_just_location (arg, hw_access, from_tty);
10899 }
10900 \f
10901
10902 /* Data for the FSM that manages the until(location)/advance commands
10903    in infcmd.c.  Here because it uses the mechanisms of
10904    breakpoints.  */
10905
10906 struct until_break_fsm : public thread_fsm
10907 {
10908   /* The thread that was current when the command was executed.  */
10909   int thread;
10910
10911   /* The breakpoint set at the destination location.  */
10912   breakpoint_up location_breakpoint;
10913
10914   /* Breakpoint set at the return address in the caller frame.  May be
10915      NULL.  */
10916   breakpoint_up caller_breakpoint;
10917
10918   until_break_fsm (struct interp *cmd_interp, int thread,
10919                    breakpoint_up &&location_breakpoint,
10920                    breakpoint_up &&caller_breakpoint)
10921     : thread_fsm (cmd_interp),
10922       thread (thread),
10923       location_breakpoint (std::move (location_breakpoint)),
10924       caller_breakpoint (std::move (caller_breakpoint))
10925   {
10926   }
10927
10928   void clean_up (struct thread_info *thread) override;
10929   bool should_stop (struct thread_info *thread) override;
10930   enum async_reply_reason do_async_reply_reason () override;
10931 };
10932
10933 /* Implementation of the 'should_stop' FSM method for the
10934    until(location)/advance commands.  */
10935
10936 bool
10937 until_break_fsm::should_stop (struct thread_info *tp)
10938 {
10939   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10940                               location_breakpoint.get ()) != NULL
10941       || (caller_breakpoint != NULL
10942           && bpstat_find_breakpoint (tp->control.stop_bpstat,
10943                                      caller_breakpoint.get ()) != NULL))
10944     set_finished ();
10945
10946   return true;
10947 }
10948
10949 /* Implementation of the 'clean_up' FSM method for the
10950    until(location)/advance commands.  */
10951
10952 void
10953 until_break_fsm::clean_up (struct thread_info *)
10954 {
10955   /* Clean up our temporary breakpoints.  */
10956   location_breakpoint.reset ();
10957   caller_breakpoint.reset ();
10958   delete_longjmp_breakpoint (thread);
10959 }
10960
10961 /* Implementation of the 'async_reply_reason' FSM method for the
10962    until(location)/advance commands.  */
10963
10964 enum async_reply_reason
10965 until_break_fsm::do_async_reply_reason ()
10966 {
10967   return EXEC_ASYNC_LOCATION_REACHED;
10968 }
10969
10970 void
10971 until_break_command (const char *arg, int from_tty, int anywhere)
10972 {
10973   struct frame_info *frame;
10974   struct gdbarch *frame_gdbarch;
10975   struct frame_id stack_frame_id;
10976   struct frame_id caller_frame_id;
10977   int thread;
10978   struct thread_info *tp;
10979
10980   clear_proceed_status (0);
10981
10982   /* Set a breakpoint where the user wants it and at return from
10983      this function.  */
10984
10985   event_location_up location = string_to_event_location (&arg, current_language);
10986
10987   std::vector<symtab_and_line> sals
10988     = (last_displayed_sal_is_valid ()
10989        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10990                         get_last_displayed_symtab (),
10991                         get_last_displayed_line ())
10992        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
10993                         NULL, NULL, 0));
10994
10995   if (sals.size () != 1)
10996     error (_("Couldn't get information on specified line."));
10997
10998   symtab_and_line &sal = sals[0];
10999
11000   if (*arg)
11001     error (_("Junk at end of arguments."));
11002
11003   resolve_sal_pc (&sal);
11004
11005   tp = inferior_thread ();
11006   thread = tp->global_num;
11007
11008   /* Note linespec handling above invalidates the frame chain.
11009      Installing a breakpoint also invalidates the frame chain (as it
11010      may need to switch threads), so do any frame handling before
11011      that.  */
11012
11013   frame = get_selected_frame (NULL);
11014   frame_gdbarch = get_frame_arch (frame);
11015   stack_frame_id = get_stack_frame_id (frame);
11016   caller_frame_id = frame_unwind_caller_id (frame);
11017
11018   /* Keep within the current frame, or in frames called by the current
11019      one.  */
11020
11021   breakpoint_up caller_breakpoint;
11022
11023   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11024
11025   if (frame_id_p (caller_frame_id))
11026     {
11027       struct symtab_and_line sal2;
11028       struct gdbarch *caller_gdbarch;
11029
11030       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11031       sal2.pc = frame_unwind_caller_pc (frame);
11032       caller_gdbarch = frame_unwind_caller_arch (frame);
11033       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11034                                                     sal2,
11035                                                     caller_frame_id,
11036                                                     bp_until);
11037
11038       set_longjmp_breakpoint (tp, caller_frame_id);
11039       lj_deleter.emplace (thread);
11040     }
11041
11042   /* set_momentary_breakpoint could invalidate FRAME.  */
11043   frame = NULL;
11044
11045   breakpoint_up location_breakpoint;
11046   if (anywhere)
11047     /* If the user told us to continue until a specified location,
11048        we don't specify a frame at which we need to stop.  */
11049     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11050                                                     null_frame_id, bp_until);
11051   else
11052     /* Otherwise, specify the selected frame, because we want to stop
11053        only at the very same frame.  */
11054     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11055                                                     stack_frame_id, bp_until);
11056
11057   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11058                                         std::move (location_breakpoint),
11059                                         std::move (caller_breakpoint));
11060
11061   if (lj_deleter)
11062     lj_deleter->release ();
11063
11064   proceed (-1, GDB_SIGNAL_DEFAULT);
11065 }
11066
11067 /* This function attempts to parse an optional "if <cond>" clause
11068    from the arg string.  If one is not found, it returns NULL.
11069
11070    Else, it returns a pointer to the condition string.  (It does not
11071    attempt to evaluate the string against a particular block.)  And,
11072    it updates arg to point to the first character following the parsed
11073    if clause in the arg string.  */
11074
11075 const char *
11076 ep_parse_optional_if_clause (const char **arg)
11077 {
11078   const char *cond_string;
11079
11080   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11081     return NULL;
11082
11083   /* Skip the "if" keyword.  */
11084   (*arg) += 2;
11085
11086   /* Skip any extra leading whitespace, and record the start of the
11087      condition string.  */
11088   *arg = skip_spaces (*arg);
11089   cond_string = *arg;
11090
11091   /* Assume that the condition occupies the remainder of the arg
11092      string.  */
11093   (*arg) += strlen (cond_string);
11094
11095   return cond_string;
11096 }
11097
11098 /* Commands to deal with catching events, such as signals, exceptions,
11099    process start/exit, etc.  */
11100
11101 typedef enum
11102 {
11103   catch_fork_temporary, catch_vfork_temporary,
11104   catch_fork_permanent, catch_vfork_permanent
11105 }
11106 catch_fork_kind;
11107
11108 static void
11109 catch_fork_command_1 (const char *arg, int from_tty,
11110                       struct cmd_list_element *command)
11111 {
11112   struct gdbarch *gdbarch = get_current_arch ();
11113   const char *cond_string = NULL;
11114   catch_fork_kind fork_kind;
11115   int tempflag;
11116
11117   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11118   tempflag = (fork_kind == catch_fork_temporary
11119               || fork_kind == catch_vfork_temporary);
11120
11121   if (!arg)
11122     arg = "";
11123   arg = skip_spaces (arg);
11124
11125   /* The allowed syntax is:
11126      catch [v]fork
11127      catch [v]fork if <cond>
11128
11129      First, check if there's an if clause.  */
11130   cond_string = ep_parse_optional_if_clause (&arg);
11131
11132   if ((*arg != '\0') && !isspace (*arg))
11133     error (_("Junk at end of arguments."));
11134
11135   /* If this target supports it, create a fork or vfork catchpoint
11136      and enable reporting of such events.  */
11137   switch (fork_kind)
11138     {
11139     case catch_fork_temporary:
11140     case catch_fork_permanent:
11141       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11142                                           &catch_fork_breakpoint_ops);
11143       break;
11144     case catch_vfork_temporary:
11145     case catch_vfork_permanent:
11146       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11147                                           &catch_vfork_breakpoint_ops);
11148       break;
11149     default:
11150       error (_("unsupported or unknown fork kind; cannot catch it"));
11151       break;
11152     }
11153 }
11154
11155 static void
11156 catch_exec_command_1 (const char *arg, int from_tty,
11157                       struct cmd_list_element *command)
11158 {
11159   struct gdbarch *gdbarch = get_current_arch ();
11160   int tempflag;
11161   const char *cond_string = NULL;
11162
11163   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11164
11165   if (!arg)
11166     arg = "";
11167   arg = skip_spaces (arg);
11168
11169   /* The allowed syntax is:
11170      catch exec
11171      catch exec if <cond>
11172
11173      First, check if there's an if clause.  */
11174   cond_string = ep_parse_optional_if_clause (&arg);
11175
11176   if ((*arg != '\0') && !isspace (*arg))
11177     error (_("Junk at end of arguments."));
11178
11179   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11180   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11181                    &catch_exec_breakpoint_ops);
11182   c->exec_pathname = NULL;
11183
11184   install_breakpoint (0, std::move (c), 1);
11185 }
11186
11187 void
11188 init_ada_exception_breakpoint (struct breakpoint *b,
11189                                struct gdbarch *gdbarch,
11190                                struct symtab_and_line sal,
11191                                const char *addr_string,
11192                                const struct breakpoint_ops *ops,
11193                                int tempflag,
11194                                int enabled,
11195                                int from_tty)
11196 {
11197   if (from_tty)
11198     {
11199       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11200       if (!loc_gdbarch)
11201         loc_gdbarch = gdbarch;
11202
11203       describe_other_breakpoints (loc_gdbarch,
11204                                   sal.pspace, sal.pc, sal.section, -1);
11205       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11206          version for exception catchpoints, because two catchpoints
11207          used for different exception names will use the same address.
11208          In this case, a "breakpoint ... also set at..." warning is
11209          unproductive.  Besides, the warning phrasing is also a bit
11210          inappropriate, we should use the word catchpoint, and tell
11211          the user what type of catchpoint it is.  The above is good
11212          enough for now, though.  */
11213     }
11214
11215   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11216
11217   b->enable_state = enabled ? bp_enabled : bp_disabled;
11218   b->disposition = tempflag ? disp_del : disp_donttouch;
11219   b->location = string_to_event_location (&addr_string,
11220                                           language_def (language_ada));
11221   b->language = language_ada;
11222 }
11223
11224 static void
11225 catch_command (const char *arg, int from_tty)
11226 {
11227   error (_("Catch requires an event name."));
11228 }
11229 \f
11230
11231 static void
11232 tcatch_command (const char *arg, int from_tty)
11233 {
11234   error (_("Catch requires an event name."));
11235 }
11236
11237 /* Compare two breakpoints and return a strcmp-like result.  */
11238
11239 static int
11240 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11241 {
11242   uintptr_t ua = (uintptr_t) a;
11243   uintptr_t ub = (uintptr_t) b;
11244
11245   if (a->number < b->number)
11246     return -1;
11247   else if (a->number > b->number)
11248     return 1;
11249
11250   /* Now sort by address, in case we see, e..g, two breakpoints with
11251      the number 0.  */
11252   if (ua < ub)
11253     return -1;
11254   return ua > ub ? 1 : 0;
11255 }
11256
11257 /* Delete breakpoints by address or line.  */
11258
11259 static void
11260 clear_command (const char *arg, int from_tty)
11261 {
11262   struct breakpoint *b;
11263   int default_match;
11264
11265   std::vector<symtab_and_line> decoded_sals;
11266   symtab_and_line last_sal;
11267   gdb::array_view<symtab_and_line> sals;
11268   if (arg)
11269     {
11270       decoded_sals
11271         = decode_line_with_current_source (arg,
11272                                            (DECODE_LINE_FUNFIRSTLINE
11273                                             | DECODE_LINE_LIST_MODE));
11274       default_match = 0;
11275       sals = decoded_sals;
11276     }
11277   else
11278     {
11279       /* Set sal's line, symtab, pc, and pspace to the values
11280          corresponding to the last call to print_frame_info.  If the
11281          codepoint is not valid, this will set all the fields to 0.  */
11282       last_sal = get_last_displayed_sal ();
11283       if (last_sal.symtab == 0)
11284         error (_("No source file specified."));
11285
11286       default_match = 1;
11287       sals = last_sal;
11288     }
11289
11290   /* We don't call resolve_sal_pc here.  That's not as bad as it
11291      seems, because all existing breakpoints typically have both
11292      file/line and pc set.  So, if clear is given file/line, we can
11293      match this to existing breakpoint without obtaining pc at all.
11294
11295      We only support clearing given the address explicitly 
11296      present in breakpoint table.  Say, we've set breakpoint 
11297      at file:line.  There were several PC values for that file:line,
11298      due to optimization, all in one block.
11299
11300      We've picked one PC value.  If "clear" is issued with another
11301      PC corresponding to the same file:line, the breakpoint won't
11302      be cleared.  We probably can still clear the breakpoint, but 
11303      since the other PC value is never presented to user, user
11304      can only find it by guessing, and it does not seem important
11305      to support that.  */
11306
11307   /* For each line spec given, delete bps which correspond to it.  Do
11308      it in two passes, solely to preserve the current behavior that
11309      from_tty is forced true if we delete more than one
11310      breakpoint.  */
11311
11312   std::vector<struct breakpoint *> found;
11313   for (const auto &sal : sals)
11314     {
11315       const char *sal_fullname;
11316
11317       /* If exact pc given, clear bpts at that pc.
11318          If line given (pc == 0), clear all bpts on specified line.
11319          If defaulting, clear all bpts on default line
11320          or at default pc.
11321
11322          defaulting    sal.pc != 0    tests to do
11323
11324          0              1             pc
11325          1              1             pc _and_ line
11326          0              0             line
11327          1              0             <can't happen> */
11328
11329       sal_fullname = (sal.symtab == NULL
11330                       ? NULL : symtab_to_fullname (sal.symtab));
11331
11332       /* Find all matching breakpoints and add them to 'found'.  */
11333       ALL_BREAKPOINTS (b)
11334         {
11335           int match = 0;
11336           /* Are we going to delete b?  */
11337           if (b->type != bp_none && !is_watchpoint (b))
11338             {
11339               struct bp_location *loc = b->loc;
11340               for (; loc; loc = loc->next)
11341                 {
11342                   /* If the user specified file:line, don't allow a PC
11343                      match.  This matches historical gdb behavior.  */
11344                   int pc_match = (!sal.explicit_line
11345                                   && sal.pc
11346                                   && (loc->pspace == sal.pspace)
11347                                   && (loc->address == sal.pc)
11348                                   && (!section_is_overlay (loc->section)
11349                                       || loc->section == sal.section));
11350                   int line_match = 0;
11351
11352                   if ((default_match || sal.explicit_line)
11353                       && loc->symtab != NULL
11354                       && sal_fullname != NULL
11355                       && sal.pspace == loc->pspace
11356                       && loc->line_number == sal.line
11357                       && filename_cmp (symtab_to_fullname (loc->symtab),
11358                                        sal_fullname) == 0)
11359                     line_match = 1;
11360
11361                   if (pc_match || line_match)
11362                     {
11363                       match = 1;
11364                       break;
11365                     }
11366                 }
11367             }
11368
11369           if (match)
11370             found.push_back (b);
11371         }
11372     }
11373
11374   /* Now go thru the 'found' chain and delete them.  */
11375   if (found.empty ())
11376     {
11377       if (arg)
11378         error (_("No breakpoint at %s."), arg);
11379       else
11380         error (_("No breakpoint at this line."));
11381     }
11382
11383   /* Remove duplicates from the vec.  */
11384   std::sort (found.begin (), found.end (),
11385              [] (const breakpoint *bp_a, const breakpoint *bp_b)
11386              {
11387                return compare_breakpoints (bp_a, bp_b) < 0;
11388              });
11389   found.erase (std::unique (found.begin (), found.end (),
11390                             [] (const breakpoint *bp_a, const breakpoint *bp_b)
11391                             {
11392                               return compare_breakpoints (bp_a, bp_b) == 0;
11393                             }),
11394                found.end ());
11395
11396   if (found.size () > 1)
11397     from_tty = 1;       /* Always report if deleted more than one.  */
11398   if (from_tty)
11399     {
11400       if (found.size () == 1)
11401         printf_unfiltered (_("Deleted breakpoint "));
11402       else
11403         printf_unfiltered (_("Deleted breakpoints "));
11404     }
11405
11406   for (breakpoint *iter : found)
11407     {
11408       if (from_tty)
11409         printf_unfiltered ("%d ", iter->number);
11410       delete_breakpoint (iter);
11411     }
11412   if (from_tty)
11413     putchar_unfiltered ('\n');
11414 }
11415 \f
11416 /* Delete breakpoint in BS if they are `delete' breakpoints and
11417    all breakpoints that are marked for deletion, whether hit or not.
11418    This is called after any breakpoint is hit, or after errors.  */
11419
11420 void
11421 breakpoint_auto_delete (bpstat bs)
11422 {
11423   struct breakpoint *b, *b_tmp;
11424
11425   for (; bs; bs = bs->next)
11426     if (bs->breakpoint_at
11427         && bs->breakpoint_at->disposition == disp_del
11428         && bs->stop)
11429       delete_breakpoint (bs->breakpoint_at);
11430
11431   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11432   {
11433     if (b->disposition == disp_del_at_next_stop)
11434       delete_breakpoint (b);
11435   }
11436 }
11437
11438 /* A comparison function for bp_location AP and BP being interfaced to
11439    qsort.  Sort elements primarily by their ADDRESS (no matter what
11440    bl_address_is_meaningful says), secondarily by ordering first
11441    permanent elements and terciarily just ensuring the array is sorted
11442    stable way despite qsort being an unstable algorithm.  */
11443
11444 static int
11445 bp_locations_compare (const void *ap, const void *bp)
11446 {
11447   const struct bp_location *a = *(const struct bp_location **) ap;
11448   const struct bp_location *b = *(const struct bp_location **) bp;
11449
11450   if (a->address != b->address)
11451     return (a->address > b->address) - (a->address < b->address);
11452
11453   /* Sort locations at the same address by their pspace number, keeping
11454      locations of the same inferior (in a multi-inferior environment)
11455      grouped.  */
11456
11457   if (a->pspace->num != b->pspace->num)
11458     return ((a->pspace->num > b->pspace->num)
11459             - (a->pspace->num < b->pspace->num));
11460
11461   /* Sort permanent breakpoints first.  */
11462   if (a->permanent != b->permanent)
11463     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11464
11465   /* Make the internal GDB representation stable across GDB runs
11466      where A and B memory inside GDB can differ.  Breakpoint locations of
11467      the same type at the same address can be sorted in arbitrary order.  */
11468
11469   if (a->owner->number != b->owner->number)
11470     return ((a->owner->number > b->owner->number)
11471             - (a->owner->number < b->owner->number));
11472
11473   return (a > b) - (a < b);
11474 }
11475
11476 /* Set bp_locations_placed_address_before_address_max and
11477    bp_locations_shadow_len_after_address_max according to the current
11478    content of the bp_locations array.  */
11479
11480 static void
11481 bp_locations_target_extensions_update (void)
11482 {
11483   struct bp_location *bl, **blp_tmp;
11484
11485   bp_locations_placed_address_before_address_max = 0;
11486   bp_locations_shadow_len_after_address_max = 0;
11487
11488   ALL_BP_LOCATIONS (bl, blp_tmp)
11489     {
11490       CORE_ADDR start, end, addr;
11491
11492       if (!bp_location_has_shadow (bl))
11493         continue;
11494
11495       start = bl->target_info.placed_address;
11496       end = start + bl->target_info.shadow_len;
11497
11498       gdb_assert (bl->address >= start);
11499       addr = bl->address - start;
11500       if (addr > bp_locations_placed_address_before_address_max)
11501         bp_locations_placed_address_before_address_max = addr;
11502
11503       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11504
11505       gdb_assert (bl->address < end);
11506       addr = end - bl->address;
11507       if (addr > bp_locations_shadow_len_after_address_max)
11508         bp_locations_shadow_len_after_address_max = addr;
11509     }
11510 }
11511
11512 /* Download tracepoint locations if they haven't been.  */
11513
11514 static void
11515 download_tracepoint_locations (void)
11516 {
11517   struct breakpoint *b;
11518   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11519
11520   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11521
11522   ALL_TRACEPOINTS (b)
11523     {
11524       struct bp_location *bl;
11525       struct tracepoint *t;
11526       int bp_location_downloaded = 0;
11527
11528       if ((b->type == bp_fast_tracepoint
11529            ? !may_insert_fast_tracepoints
11530            : !may_insert_tracepoints))
11531         continue;
11532
11533       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11534         {
11535           if (target_can_download_tracepoint ())
11536             can_download_tracepoint = TRIBOOL_TRUE;
11537           else
11538             can_download_tracepoint = TRIBOOL_FALSE;
11539         }
11540
11541       if (can_download_tracepoint == TRIBOOL_FALSE)
11542         break;
11543
11544       for (bl = b->loc; bl; bl = bl->next)
11545         {
11546           /* In tracepoint, locations are _never_ duplicated, so
11547              should_be_inserted is equivalent to
11548              unduplicated_should_be_inserted.  */
11549           if (!should_be_inserted (bl) || bl->inserted)
11550             continue;
11551
11552           switch_to_program_space_and_thread (bl->pspace);
11553
11554           target_download_tracepoint (bl);
11555
11556           bl->inserted = 1;
11557           bp_location_downloaded = 1;
11558         }
11559       t = (struct tracepoint *) b;
11560       t->number_on_target = b->number;
11561       if (bp_location_downloaded)
11562         gdb::observers::breakpoint_modified.notify (b);
11563     }
11564 }
11565
11566 /* Swap the insertion/duplication state between two locations.  */
11567
11568 static void
11569 swap_insertion (struct bp_location *left, struct bp_location *right)
11570 {
11571   const int left_inserted = left->inserted;
11572   const int left_duplicate = left->duplicate;
11573   const int left_needs_update = left->needs_update;
11574   const struct bp_target_info left_target_info = left->target_info;
11575
11576   /* Locations of tracepoints can never be duplicated.  */
11577   if (is_tracepoint (left->owner))
11578     gdb_assert (!left->duplicate);
11579   if (is_tracepoint (right->owner))
11580     gdb_assert (!right->duplicate);
11581
11582   left->inserted = right->inserted;
11583   left->duplicate = right->duplicate;
11584   left->needs_update = right->needs_update;
11585   left->target_info = right->target_info;
11586   right->inserted = left_inserted;
11587   right->duplicate = left_duplicate;
11588   right->needs_update = left_needs_update;
11589   right->target_info = left_target_info;
11590 }
11591
11592 /* Force the re-insertion of the locations at ADDRESS.  This is called
11593    once a new/deleted/modified duplicate location is found and we are evaluating
11594    conditions on the target's side.  Such conditions need to be updated on
11595    the target.  */
11596
11597 static void
11598 force_breakpoint_reinsertion (struct bp_location *bl)
11599 {
11600   struct bp_location **locp = NULL, **loc2p;
11601   struct bp_location *loc;
11602   CORE_ADDR address = 0;
11603   int pspace_num;
11604
11605   address = bl->address;
11606   pspace_num = bl->pspace->num;
11607
11608   /* This is only meaningful if the target is
11609      evaluating conditions and if the user has
11610      opted for condition evaluation on the target's
11611      side.  */
11612   if (gdb_evaluates_breakpoint_condition_p ()
11613       || !target_supports_evaluation_of_breakpoint_conditions ())
11614     return;
11615
11616   /* Flag all breakpoint locations with this address and
11617      the same program space as the location
11618      as "its condition has changed".  We need to
11619      update the conditions on the target's side.  */
11620   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11621     {
11622       loc = *loc2p;
11623
11624       if (!is_breakpoint (loc->owner)
11625           || pspace_num != loc->pspace->num)
11626         continue;
11627
11628       /* Flag the location appropriately.  We use a different state to
11629          let everyone know that we already updated the set of locations
11630          with addr bl->address and program space bl->pspace.  This is so
11631          we don't have to keep calling these functions just to mark locations
11632          that have already been marked.  */
11633       loc->condition_changed = condition_updated;
11634
11635       /* Free the agent expression bytecode as well.  We will compute
11636          it later on.  */
11637       loc->cond_bytecode.reset ();
11638     }
11639 }
11640 /* Called whether new breakpoints are created, or existing breakpoints
11641    deleted, to update the global location list and recompute which
11642    locations are duplicate of which.
11643
11644    The INSERT_MODE flag determines whether locations may not, may, or
11645    shall be inserted now.  See 'enum ugll_insert_mode' for more
11646    info.  */
11647
11648 static void
11649 update_global_location_list (enum ugll_insert_mode insert_mode)
11650 {
11651   struct breakpoint *b;
11652   struct bp_location **locp, *loc;
11653   /* Last breakpoint location address that was marked for update.  */
11654   CORE_ADDR last_addr = 0;
11655   /* Last breakpoint location program space that was marked for update.  */
11656   int last_pspace_num = -1;
11657
11658   /* Used in the duplicates detection below.  When iterating over all
11659      bp_locations, points to the first bp_location of a given address.
11660      Breakpoints and watchpoints of different types are never
11661      duplicates of each other.  Keep one pointer for each type of
11662      breakpoint/watchpoint, so we only need to loop over all locations
11663      once.  */
11664   struct bp_location *bp_loc_first;  /* breakpoint */
11665   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11666   struct bp_location *awp_loc_first; /* access watchpoint */
11667   struct bp_location *rwp_loc_first; /* read watchpoint */
11668
11669   /* Saved former bp_locations array which we compare against the newly
11670      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11671   struct bp_location **old_locp;
11672   unsigned old_locations_count;
11673   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11674
11675   old_locations_count = bp_locations_count;
11676   bp_locations = NULL;
11677   bp_locations_count = 0;
11678
11679   ALL_BREAKPOINTS (b)
11680     for (loc = b->loc; loc; loc = loc->next)
11681       bp_locations_count++;
11682
11683   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11684   locp = bp_locations;
11685   ALL_BREAKPOINTS (b)
11686     for (loc = b->loc; loc; loc = loc->next)
11687       *locp++ = loc;
11688   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11689          bp_locations_compare);
11690
11691   bp_locations_target_extensions_update ();
11692
11693   /* Identify bp_location instances that are no longer present in the
11694      new list, and therefore should be freed.  Note that it's not
11695      necessary that those locations should be removed from inferior --
11696      if there's another location at the same address (previously
11697      marked as duplicate), we don't need to remove/insert the
11698      location.
11699      
11700      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11701      and former bp_location array state respectively.  */
11702
11703   locp = bp_locations;
11704   for (old_locp = old_locations.get ();
11705        old_locp < old_locations.get () + old_locations_count;
11706        old_locp++)
11707     {
11708       struct bp_location *old_loc = *old_locp;
11709       struct bp_location **loc2p;
11710
11711       /* Tells if 'old_loc' is found among the new locations.  If
11712          not, we have to free it.  */
11713       int found_object = 0;
11714       /* Tells if the location should remain inserted in the target.  */
11715       int keep_in_target = 0;
11716       int removed = 0;
11717
11718       /* Skip LOCP entries which will definitely never be needed.
11719          Stop either at or being the one matching OLD_LOC.  */
11720       while (locp < bp_locations + bp_locations_count
11721              && (*locp)->address < old_loc->address)
11722         locp++;
11723
11724       for (loc2p = locp;
11725            (loc2p < bp_locations + bp_locations_count
11726             && (*loc2p)->address == old_loc->address);
11727            loc2p++)
11728         {
11729           /* Check if this is a new/duplicated location or a duplicated
11730              location that had its condition modified.  If so, we want to send
11731              its condition to the target if evaluation of conditions is taking
11732              place there.  */
11733           if ((*loc2p)->condition_changed == condition_modified
11734               && (last_addr != old_loc->address
11735                   || last_pspace_num != old_loc->pspace->num))
11736             {
11737               force_breakpoint_reinsertion (*loc2p);
11738               last_pspace_num = old_loc->pspace->num;
11739             }
11740
11741           if (*loc2p == old_loc)
11742             found_object = 1;
11743         }
11744
11745       /* We have already handled this address, update it so that we don't
11746          have to go through updates again.  */
11747       last_addr = old_loc->address;
11748
11749       /* Target-side condition evaluation: Handle deleted locations.  */
11750       if (!found_object)
11751         force_breakpoint_reinsertion (old_loc);
11752
11753       /* If this location is no longer present, and inserted, look if
11754          there's maybe a new location at the same address.  If so,
11755          mark that one inserted, and don't remove this one.  This is
11756          needed so that we don't have a time window where a breakpoint
11757          at certain location is not inserted.  */
11758
11759       if (old_loc->inserted)
11760         {
11761           /* If the location is inserted now, we might have to remove
11762              it.  */
11763
11764           if (found_object && should_be_inserted (old_loc))
11765             {
11766               /* The location is still present in the location list,
11767                  and still should be inserted.  Don't do anything.  */
11768               keep_in_target = 1;
11769             }
11770           else
11771             {
11772               /* This location still exists, but it won't be kept in the
11773                  target since it may have been disabled.  We proceed to
11774                  remove its target-side condition.  */
11775
11776               /* The location is either no longer present, or got
11777                  disabled.  See if there's another location at the
11778                  same address, in which case we don't need to remove
11779                  this one from the target.  */
11780
11781               /* OLD_LOC comes from existing struct breakpoint.  */
11782               if (bl_address_is_meaningful (old_loc))
11783                 {
11784                   for (loc2p = locp;
11785                        (loc2p < bp_locations + bp_locations_count
11786                         && (*loc2p)->address == old_loc->address);
11787                        loc2p++)
11788                     {
11789                       struct bp_location *loc2 = *loc2p;
11790
11791                       if (breakpoint_locations_match (loc2, old_loc))
11792                         {
11793                           /* Read watchpoint locations are switched to
11794                              access watchpoints, if the former are not
11795                              supported, but the latter are.  */
11796                           if (is_hardware_watchpoint (old_loc->owner))
11797                             {
11798                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11799                               loc2->watchpoint_type = old_loc->watchpoint_type;
11800                             }
11801
11802                           /* loc2 is a duplicated location. We need to check
11803                              if it should be inserted in case it will be
11804                              unduplicated.  */
11805                           if (loc2 != old_loc
11806                               && unduplicated_should_be_inserted (loc2))
11807                             {
11808                               swap_insertion (old_loc, loc2);
11809                               keep_in_target = 1;
11810                               break;
11811                             }
11812                         }
11813                     }
11814                 }
11815             }
11816
11817           if (!keep_in_target)
11818             {
11819               if (remove_breakpoint (old_loc))
11820                 {
11821                   /* This is just about all we can do.  We could keep
11822                      this location on the global list, and try to
11823                      remove it next time, but there's no particular
11824                      reason why we will succeed next time.
11825                      
11826                      Note that at this point, old_loc->owner is still
11827                      valid, as delete_breakpoint frees the breakpoint
11828                      only after calling us.  */
11829                   printf_filtered (_("warning: Error removing "
11830                                      "breakpoint %d\n"), 
11831                                    old_loc->owner->number);
11832                 }
11833               removed = 1;
11834             }
11835         }
11836
11837       if (!found_object)
11838         {
11839           if (removed && target_is_non_stop_p ()
11840               && need_moribund_for_location_type (old_loc))
11841             {
11842               /* This location was removed from the target.  In
11843                  non-stop mode, a race condition is possible where
11844                  we've removed a breakpoint, but stop events for that
11845                  breakpoint are already queued and will arrive later.
11846                  We apply an heuristic to be able to distinguish such
11847                  SIGTRAPs from other random SIGTRAPs: we keep this
11848                  breakpoint location for a bit, and will retire it
11849                  after we see some number of events.  The theory here
11850                  is that reporting of events should, "on the average",
11851                  be fair, so after a while we'll see events from all
11852                  threads that have anything of interest, and no longer
11853                  need to keep this breakpoint location around.  We
11854                  don't hold locations forever so to reduce chances of
11855                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11856                  SIGTRAP.
11857
11858                  The heuristic failing can be disastrous on
11859                  decr_pc_after_break targets.
11860
11861                  On decr_pc_after_break targets, like e.g., x86-linux,
11862                  if we fail to recognize a late breakpoint SIGTRAP,
11863                  because events_till_retirement has reached 0 too
11864                  soon, we'll fail to do the PC adjustment, and report
11865                  a random SIGTRAP to the user.  When the user resumes
11866                  the inferior, it will most likely immediately crash
11867                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11868                  corrupted, because of being resumed e.g., in the
11869                  middle of a multi-byte instruction, or skipped a
11870                  one-byte instruction.  This was actually seen happen
11871                  on native x86-linux, and should be less rare on
11872                  targets that do not support new thread events, like
11873                  remote, due to the heuristic depending on
11874                  thread_count.
11875
11876                  Mistaking a random SIGTRAP for a breakpoint trap
11877                  causes similar symptoms (PC adjustment applied when
11878                  it shouldn't), but then again, playing with SIGTRAPs
11879                  behind the debugger's back is asking for trouble.
11880
11881                  Since hardware watchpoint traps are always
11882                  distinguishable from other traps, so we don't need to
11883                  apply keep hardware watchpoint moribund locations
11884                  around.  We simply always ignore hardware watchpoint
11885                  traps we can no longer explain.  */
11886
11887               old_loc->events_till_retirement = 3 * (thread_count () + 1);
11888               old_loc->owner = NULL;
11889
11890               moribund_locations.push_back (old_loc);
11891             }
11892           else
11893             {
11894               old_loc->owner = NULL;
11895               decref_bp_location (&old_loc);
11896             }
11897         }
11898     }
11899
11900   /* Rescan breakpoints at the same address and section, marking the
11901      first one as "first" and any others as "duplicates".  This is so
11902      that the bpt instruction is only inserted once.  If we have a
11903      permanent breakpoint at the same place as BPT, make that one the
11904      official one, and the rest as duplicates.  Permanent breakpoints
11905      are sorted first for the same address.
11906
11907      Do the same for hardware watchpoints, but also considering the
11908      watchpoint's type (regular/access/read) and length.  */
11909
11910   bp_loc_first = NULL;
11911   wp_loc_first = NULL;
11912   awp_loc_first = NULL;
11913   rwp_loc_first = NULL;
11914   ALL_BP_LOCATIONS (loc, locp)
11915     {
11916       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11917          non-NULL.  */
11918       struct bp_location **loc_first_p;
11919       b = loc->owner;
11920
11921       if (!unduplicated_should_be_inserted (loc)
11922           || !bl_address_is_meaningful (loc)
11923           /* Don't detect duplicate for tracepoint locations because they are
11924            never duplicated.  See the comments in field `duplicate' of
11925            `struct bp_location'.  */
11926           || is_tracepoint (b))
11927         {
11928           /* Clear the condition modification flag.  */
11929           loc->condition_changed = condition_unchanged;
11930           continue;
11931         }
11932
11933       if (b->type == bp_hardware_watchpoint)
11934         loc_first_p = &wp_loc_first;
11935       else if (b->type == bp_read_watchpoint)
11936         loc_first_p = &rwp_loc_first;
11937       else if (b->type == bp_access_watchpoint)
11938         loc_first_p = &awp_loc_first;
11939       else
11940         loc_first_p = &bp_loc_first;
11941
11942       if (*loc_first_p == NULL
11943           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11944           || !breakpoint_locations_match (loc, *loc_first_p))
11945         {
11946           *loc_first_p = loc;
11947           loc->duplicate = 0;
11948
11949           if (is_breakpoint (loc->owner) && loc->condition_changed)
11950             {
11951               loc->needs_update = 1;
11952               /* Clear the condition modification flag.  */
11953               loc->condition_changed = condition_unchanged;
11954             }
11955           continue;
11956         }
11957
11958
11959       /* This and the above ensure the invariant that the first location
11960          is not duplicated, and is the inserted one.
11961          All following are marked as duplicated, and are not inserted.  */
11962       if (loc->inserted)
11963         swap_insertion (loc, *loc_first_p);
11964       loc->duplicate = 1;
11965
11966       /* Clear the condition modification flag.  */
11967       loc->condition_changed = condition_unchanged;
11968     }
11969
11970   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11971     {
11972       if (insert_mode != UGLL_DONT_INSERT)
11973         insert_breakpoint_locations ();
11974       else
11975         {
11976           /* Even though the caller told us to not insert new
11977              locations, we may still need to update conditions on the
11978              target's side of breakpoints that were already inserted
11979              if the target is evaluating breakpoint conditions.  We
11980              only update conditions for locations that are marked
11981              "needs_update".  */
11982           update_inserted_breakpoint_locations ();
11983         }
11984     }
11985
11986   if (insert_mode != UGLL_DONT_INSERT)
11987     download_tracepoint_locations ();
11988 }
11989
11990 void
11991 breakpoint_retire_moribund (void)
11992 {
11993   for (int ix = 0; ix < moribund_locations.size (); ++ix)
11994     {
11995       struct bp_location *loc = moribund_locations[ix];
11996       if (--(loc->events_till_retirement) == 0)
11997         {
11998           decref_bp_location (&loc);
11999           unordered_remove (moribund_locations, ix);
12000           --ix;
12001         }
12002     }
12003 }
12004
12005 static void
12006 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12007 {
12008
12009   try
12010     {
12011       update_global_location_list (insert_mode);
12012     }
12013   catch (const gdb_exception_error &e)
12014     {
12015     }
12016 }
12017
12018 /* Clear BKP from a BPS.  */
12019
12020 static void
12021 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12022 {
12023   bpstat bs;
12024
12025   for (bs = bps; bs; bs = bs->next)
12026     if (bs->breakpoint_at == bpt)
12027       {
12028         bs->breakpoint_at = NULL;
12029         bs->old_val = NULL;
12030         /* bs->commands will be freed later.  */
12031       }
12032 }
12033
12034 /* Callback for iterate_over_threads.  */
12035 static int
12036 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12037 {
12038   struct breakpoint *bpt = (struct breakpoint *) data;
12039
12040   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12041   return 0;
12042 }
12043
12044 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12045    callbacks.  */
12046
12047 static void
12048 say_where (struct breakpoint *b)
12049 {
12050   struct value_print_options opts;
12051
12052   get_user_print_options (&opts);
12053
12054   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12055      single string.  */
12056   if (b->loc == NULL)
12057     {
12058       /* For pending locations, the output differs slightly based
12059          on b->extra_string.  If this is non-NULL, it contains either
12060          a condition or dprintf arguments.  */
12061       if (b->extra_string == NULL)
12062         {
12063           printf_filtered (_(" (%s) pending."),
12064                            event_location_to_string (b->location.get ()));
12065         }
12066       else if (b->type == bp_dprintf)
12067         {
12068           printf_filtered (_(" (%s,%s) pending."),
12069                            event_location_to_string (b->location.get ()),
12070                            b->extra_string);
12071         }
12072       else
12073         {
12074           printf_filtered (_(" (%s %s) pending."),
12075                            event_location_to_string (b->location.get ()),
12076                            b->extra_string);
12077         }
12078     }
12079   else
12080     {
12081       if (opts.addressprint || b->loc->symtab == NULL)
12082         {
12083           printf_filtered (" at ");
12084           fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12085                         address_style.style (),
12086                         gdb_stdout);
12087         }
12088       if (b->loc->symtab != NULL)
12089         {
12090           /* If there is a single location, we can print the location
12091              more nicely.  */
12092           if (b->loc->next == NULL)
12093             {
12094               puts_filtered (": file ");
12095               fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12096                             file_name_style.style (),
12097                             gdb_stdout);
12098               printf_filtered (", line %d.",
12099                                b->loc->line_number);
12100             }
12101           else
12102             /* This is not ideal, but each location may have a
12103                different file name, and this at least reflects the
12104                real situation somewhat.  */
12105             printf_filtered (": %s.",
12106                              event_location_to_string (b->location.get ()));
12107         }
12108
12109       if (b->loc->next)
12110         {
12111           struct bp_location *loc = b->loc;
12112           int n = 0;
12113           for (; loc; loc = loc->next)
12114             ++n;
12115           printf_filtered (" (%d locations)", n);
12116         }
12117     }
12118 }
12119
12120 bp_location::~bp_location ()
12121 {
12122   xfree (function_name);
12123 }
12124
12125 /* Destructor for the breakpoint base class.  */
12126
12127 breakpoint::~breakpoint ()
12128 {
12129   xfree (this->cond_string);
12130   xfree (this->extra_string);
12131   xfree (this->filter);
12132 }
12133
12134 static struct bp_location *
12135 base_breakpoint_allocate_location (struct breakpoint *self)
12136 {
12137   return new bp_location (self);
12138 }
12139
12140 static void
12141 base_breakpoint_re_set (struct breakpoint *b)
12142 {
12143   /* Nothing to re-set. */
12144 }
12145
12146 #define internal_error_pure_virtual_called() \
12147   gdb_assert_not_reached ("pure virtual function called")
12148
12149 static int
12150 base_breakpoint_insert_location (struct bp_location *bl)
12151 {
12152   internal_error_pure_virtual_called ();
12153 }
12154
12155 static int
12156 base_breakpoint_remove_location (struct bp_location *bl,
12157                                  enum remove_bp_reason reason)
12158 {
12159   internal_error_pure_virtual_called ();
12160 }
12161
12162 static int
12163 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12164                                 const address_space *aspace,
12165                                 CORE_ADDR bp_addr,
12166                                 const struct target_waitstatus *ws)
12167 {
12168   internal_error_pure_virtual_called ();
12169 }
12170
12171 static void
12172 base_breakpoint_check_status (bpstat bs)
12173 {
12174   /* Always stop.   */
12175 }
12176
12177 /* A "works_in_software_mode" breakpoint_ops method that just internal
12178    errors.  */
12179
12180 static int
12181 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12182 {
12183   internal_error_pure_virtual_called ();
12184 }
12185
12186 /* A "resources_needed" breakpoint_ops method that just internal
12187    errors.  */
12188
12189 static int
12190 base_breakpoint_resources_needed (const struct bp_location *bl)
12191 {
12192   internal_error_pure_virtual_called ();
12193 }
12194
12195 static enum print_stop_action
12196 base_breakpoint_print_it (bpstat bs)
12197 {
12198   internal_error_pure_virtual_called ();
12199 }
12200
12201 static void
12202 base_breakpoint_print_one_detail (const struct breakpoint *self,
12203                                   struct ui_out *uiout)
12204 {
12205   /* nothing */
12206 }
12207
12208 static void
12209 base_breakpoint_print_mention (struct breakpoint *b)
12210 {
12211   internal_error_pure_virtual_called ();
12212 }
12213
12214 static void
12215 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12216 {
12217   internal_error_pure_virtual_called ();
12218 }
12219
12220 static void
12221 base_breakpoint_create_sals_from_location
12222   (const struct event_location *location,
12223    struct linespec_result *canonical,
12224    enum bptype type_wanted)
12225 {
12226   internal_error_pure_virtual_called ();
12227 }
12228
12229 static void
12230 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12231                                         struct linespec_result *c,
12232                                         gdb::unique_xmalloc_ptr<char> cond_string,
12233                                         gdb::unique_xmalloc_ptr<char> extra_string,
12234                                         enum bptype type_wanted,
12235                                         enum bpdisp disposition,
12236                                         int thread,
12237                                         int task, int ignore_count,
12238                                         const struct breakpoint_ops *o,
12239                                         int from_tty, int enabled,
12240                                         int internal, unsigned flags)
12241 {
12242   internal_error_pure_virtual_called ();
12243 }
12244
12245 static std::vector<symtab_and_line>
12246 base_breakpoint_decode_location (struct breakpoint *b,
12247                                  const struct event_location *location,
12248                                  struct program_space *search_pspace)
12249 {
12250   internal_error_pure_virtual_called ();
12251 }
12252
12253 /* The default 'explains_signal' method.  */
12254
12255 static int
12256 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12257 {
12258   return 1;
12259 }
12260
12261 /* The default "after_condition_true" method.  */
12262
12263 static void
12264 base_breakpoint_after_condition_true (struct bpstats *bs)
12265 {
12266   /* Nothing to do.   */
12267 }
12268
12269 struct breakpoint_ops base_breakpoint_ops =
12270 {
12271   base_breakpoint_allocate_location,
12272   base_breakpoint_re_set,
12273   base_breakpoint_insert_location,
12274   base_breakpoint_remove_location,
12275   base_breakpoint_breakpoint_hit,
12276   base_breakpoint_check_status,
12277   base_breakpoint_resources_needed,
12278   base_breakpoint_works_in_software_mode,
12279   base_breakpoint_print_it,
12280   NULL,
12281   base_breakpoint_print_one_detail,
12282   base_breakpoint_print_mention,
12283   base_breakpoint_print_recreate,
12284   base_breakpoint_create_sals_from_location,
12285   base_breakpoint_create_breakpoints_sal,
12286   base_breakpoint_decode_location,
12287   base_breakpoint_explains_signal,
12288   base_breakpoint_after_condition_true,
12289 };
12290
12291 /* Default breakpoint_ops methods.  */
12292
12293 static void
12294 bkpt_re_set (struct breakpoint *b)
12295 {
12296   /* FIXME: is this still reachable?  */
12297   if (breakpoint_event_location_empty_p (b))
12298     {
12299       /* Anything without a location can't be re-set.  */
12300       delete_breakpoint (b);
12301       return;
12302     }
12303
12304   breakpoint_re_set_default (b);
12305 }
12306
12307 static int
12308 bkpt_insert_location (struct bp_location *bl)
12309 {
12310   CORE_ADDR addr = bl->target_info.reqstd_address;
12311
12312   bl->target_info.kind = breakpoint_kind (bl, &addr);
12313   bl->target_info.placed_address = addr;
12314
12315   if (bl->loc_type == bp_loc_hardware_breakpoint)
12316     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12317   else
12318     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12319 }
12320
12321 static int
12322 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12323 {
12324   if (bl->loc_type == bp_loc_hardware_breakpoint)
12325     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12326   else
12327     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12328 }
12329
12330 static int
12331 bkpt_breakpoint_hit (const struct bp_location *bl,
12332                      const address_space *aspace, CORE_ADDR bp_addr,
12333                      const struct target_waitstatus *ws)
12334 {
12335   if (ws->kind != TARGET_WAITKIND_STOPPED
12336       || ws->value.sig != GDB_SIGNAL_TRAP)
12337     return 0;
12338
12339   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12340                                  aspace, bp_addr))
12341     return 0;
12342
12343   if (overlay_debugging         /* unmapped overlay section */
12344       && section_is_overlay (bl->section)
12345       && !section_is_mapped (bl->section))
12346     return 0;
12347
12348   return 1;
12349 }
12350
12351 static int
12352 dprintf_breakpoint_hit (const struct bp_location *bl,
12353                         const address_space *aspace, CORE_ADDR bp_addr,
12354                         const struct target_waitstatus *ws)
12355 {
12356   if (dprintf_style == dprintf_style_agent
12357       && target_can_run_breakpoint_commands ())
12358     {
12359       /* An agent-style dprintf never causes a stop.  If we see a trap
12360          for this address it must be for a breakpoint that happens to
12361          be set at the same address.  */
12362       return 0;
12363     }
12364
12365   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12366 }
12367
12368 static int
12369 bkpt_resources_needed (const struct bp_location *bl)
12370 {
12371   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12372
12373   return 1;
12374 }
12375
12376 static enum print_stop_action
12377 bkpt_print_it (bpstat bs)
12378 {
12379   struct breakpoint *b;
12380   const struct bp_location *bl;
12381   int bp_temp;
12382   struct ui_out *uiout = current_uiout;
12383
12384   gdb_assert (bs->bp_location_at != NULL);
12385
12386   bl = bs->bp_location_at;
12387   b = bs->breakpoint_at;
12388
12389   bp_temp = b->disposition == disp_del;
12390   if (bl->address != bl->requested_address)
12391     breakpoint_adjustment_warning (bl->requested_address,
12392                                    bl->address,
12393                                    b->number, 1);
12394   annotate_breakpoint (b->number);
12395   maybe_print_thread_hit_breakpoint (uiout);
12396
12397   if (bp_temp)
12398     uiout->text ("Temporary breakpoint ");
12399   else
12400     uiout->text ("Breakpoint ");
12401   if (uiout->is_mi_like_p ())
12402     {
12403       uiout->field_string ("reason",
12404                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12405       uiout->field_string ("disp", bpdisp_text (b->disposition));
12406     }
12407   uiout->field_int ("bkptno", b->number);
12408   uiout->text (", ");
12409
12410   return PRINT_SRC_AND_LOC;
12411 }
12412
12413 static void
12414 bkpt_print_mention (struct breakpoint *b)
12415 {
12416   if (current_uiout->is_mi_like_p ())
12417     return;
12418
12419   switch (b->type)
12420     {
12421     case bp_breakpoint:
12422     case bp_gnu_ifunc_resolver:
12423       if (b->disposition == disp_del)
12424         printf_filtered (_("Temporary breakpoint"));
12425       else
12426         printf_filtered (_("Breakpoint"));
12427       printf_filtered (_(" %d"), b->number);
12428       if (b->type == bp_gnu_ifunc_resolver)
12429         printf_filtered (_(" at gnu-indirect-function resolver"));
12430       break;
12431     case bp_hardware_breakpoint:
12432       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12433       break;
12434     case bp_dprintf:
12435       printf_filtered (_("Dprintf %d"), b->number);
12436       break;
12437     }
12438
12439   say_where (b);
12440 }
12441
12442 static void
12443 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12444 {
12445   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12446     fprintf_unfiltered (fp, "tbreak");
12447   else if (tp->type == bp_breakpoint)
12448     fprintf_unfiltered (fp, "break");
12449   else if (tp->type == bp_hardware_breakpoint
12450            && tp->disposition == disp_del)
12451     fprintf_unfiltered (fp, "thbreak");
12452   else if (tp->type == bp_hardware_breakpoint)
12453     fprintf_unfiltered (fp, "hbreak");
12454   else
12455     internal_error (__FILE__, __LINE__,
12456                     _("unhandled breakpoint type %d"), (int) tp->type);
12457
12458   fprintf_unfiltered (fp, " %s",
12459                       event_location_to_string (tp->location.get ()));
12460
12461   /* Print out extra_string if this breakpoint is pending.  It might
12462      contain, for example, conditions that were set by the user.  */
12463   if (tp->loc == NULL && tp->extra_string != NULL)
12464     fprintf_unfiltered (fp, " %s", tp->extra_string);
12465
12466   print_recreate_thread (tp, fp);
12467 }
12468
12469 static void
12470 bkpt_create_sals_from_location (const struct event_location *location,
12471                                 struct linespec_result *canonical,
12472                                 enum bptype type_wanted)
12473 {
12474   create_sals_from_location_default (location, canonical, type_wanted);
12475 }
12476
12477 static void
12478 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12479                              struct linespec_result *canonical,
12480                              gdb::unique_xmalloc_ptr<char> cond_string,
12481                              gdb::unique_xmalloc_ptr<char> extra_string,
12482                              enum bptype type_wanted,
12483                              enum bpdisp disposition,
12484                              int thread,
12485                              int task, int ignore_count,
12486                              const struct breakpoint_ops *ops,
12487                              int from_tty, int enabled,
12488                              int internal, unsigned flags)
12489 {
12490   create_breakpoints_sal_default (gdbarch, canonical,
12491                                   std::move (cond_string),
12492                                   std::move (extra_string),
12493                                   type_wanted,
12494                                   disposition, thread, task,
12495                                   ignore_count, ops, from_tty,
12496                                   enabled, internal, flags);
12497 }
12498
12499 static std::vector<symtab_and_line>
12500 bkpt_decode_location (struct breakpoint *b,
12501                       const struct event_location *location,
12502                       struct program_space *search_pspace)
12503 {
12504   return decode_location_default (b, location, search_pspace);
12505 }
12506
12507 /* Virtual table for internal breakpoints.  */
12508
12509 static void
12510 internal_bkpt_re_set (struct breakpoint *b)
12511 {
12512   switch (b->type)
12513     {
12514       /* Delete overlay event and longjmp master breakpoints; they
12515          will be reset later by breakpoint_re_set.  */
12516     case bp_overlay_event:
12517     case bp_longjmp_master:
12518     case bp_std_terminate_master:
12519     case bp_exception_master:
12520       delete_breakpoint (b);
12521       break;
12522
12523       /* This breakpoint is special, it's set up when the inferior
12524          starts and we really don't want to touch it.  */
12525     case bp_shlib_event:
12526
12527       /* Like bp_shlib_event, this breakpoint type is special.  Once
12528          it is set up, we do not want to touch it.  */
12529     case bp_thread_event:
12530       break;
12531     }
12532 }
12533
12534 static void
12535 internal_bkpt_check_status (bpstat bs)
12536 {
12537   if (bs->breakpoint_at->type == bp_shlib_event)
12538     {
12539       /* If requested, stop when the dynamic linker notifies GDB of
12540          events.  This allows the user to get control and place
12541          breakpoints in initializer routines for dynamically loaded
12542          objects (among other things).  */
12543       bs->stop = stop_on_solib_events;
12544       bs->print = stop_on_solib_events;
12545     }
12546   else
12547     bs->stop = 0;
12548 }
12549
12550 static enum print_stop_action
12551 internal_bkpt_print_it (bpstat bs)
12552 {
12553   struct breakpoint *b;
12554
12555   b = bs->breakpoint_at;
12556
12557   switch (b->type)
12558     {
12559     case bp_shlib_event:
12560       /* Did we stop because the user set the stop_on_solib_events
12561          variable?  (If so, we report this as a generic, "Stopped due
12562          to shlib event" message.) */
12563       print_solib_event (0);
12564       break;
12565
12566     case bp_thread_event:
12567       /* Not sure how we will get here.
12568          GDB should not stop for these breakpoints.  */
12569       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12570       break;
12571
12572     case bp_overlay_event:
12573       /* By analogy with the thread event, GDB should not stop for these.  */
12574       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12575       break;
12576
12577     case bp_longjmp_master:
12578       /* These should never be enabled.  */
12579       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12580       break;
12581
12582     case bp_std_terminate_master:
12583       /* These should never be enabled.  */
12584       printf_filtered (_("std::terminate Master Breakpoint: "
12585                          "gdb should not stop!\n"));
12586       break;
12587
12588     case bp_exception_master:
12589       /* These should never be enabled.  */
12590       printf_filtered (_("Exception Master Breakpoint: "
12591                          "gdb should not stop!\n"));
12592       break;
12593     }
12594
12595   return PRINT_NOTHING;
12596 }
12597
12598 static void
12599 internal_bkpt_print_mention (struct breakpoint *b)
12600 {
12601   /* Nothing to mention.  These breakpoints are internal.  */
12602 }
12603
12604 /* Virtual table for momentary breakpoints  */
12605
12606 static void
12607 momentary_bkpt_re_set (struct breakpoint *b)
12608 {
12609   /* Keep temporary breakpoints, which can be encountered when we step
12610      over a dlopen call and solib_add is resetting the breakpoints.
12611      Otherwise these should have been blown away via the cleanup chain
12612      or by breakpoint_init_inferior when we rerun the executable.  */
12613 }
12614
12615 static void
12616 momentary_bkpt_check_status (bpstat bs)
12617 {
12618   /* Nothing.  The point of these breakpoints is causing a stop.  */
12619 }
12620
12621 static enum print_stop_action
12622 momentary_bkpt_print_it (bpstat bs)
12623 {
12624   return PRINT_UNKNOWN;
12625 }
12626
12627 static void
12628 momentary_bkpt_print_mention (struct breakpoint *b)
12629 {
12630   /* Nothing to mention.  These breakpoints are internal.  */
12631 }
12632
12633 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12634
12635    It gets cleared already on the removal of the first one of such placed
12636    breakpoints.  This is OK as they get all removed altogether.  */
12637
12638 longjmp_breakpoint::~longjmp_breakpoint ()
12639 {
12640   thread_info *tp = find_thread_global_id (this->thread);
12641
12642   if (tp != NULL)
12643     tp->initiating_frame = null_frame_id;
12644 }
12645
12646 /* Specific methods for probe breakpoints.  */
12647
12648 static int
12649 bkpt_probe_insert_location (struct bp_location *bl)
12650 {
12651   int v = bkpt_insert_location (bl);
12652
12653   if (v == 0)
12654     {
12655       /* The insertion was successful, now let's set the probe's semaphore
12656          if needed.  */
12657       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12658     }
12659
12660   return v;
12661 }
12662
12663 static int
12664 bkpt_probe_remove_location (struct bp_location *bl,
12665                             enum remove_bp_reason reason)
12666 {
12667   /* Let's clear the semaphore before removing the location.  */
12668   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12669
12670   return bkpt_remove_location (bl, reason);
12671 }
12672
12673 static void
12674 bkpt_probe_create_sals_from_location (const struct event_location *location,
12675                                       struct linespec_result *canonical,
12676                                       enum bptype type_wanted)
12677 {
12678   struct linespec_sals lsal;
12679
12680   lsal.sals = parse_probes (location, NULL, canonical);
12681   lsal.canonical
12682     = xstrdup (event_location_to_string (canonical->location.get ()));
12683   canonical->lsals.push_back (std::move (lsal));
12684 }
12685
12686 static std::vector<symtab_and_line>
12687 bkpt_probe_decode_location (struct breakpoint *b,
12688                             const struct event_location *location,
12689                             struct program_space *search_pspace)
12690 {
12691   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12692   if (sals.empty ())
12693     error (_("probe not found"));
12694   return sals;
12695 }
12696
12697 /* The breakpoint_ops structure to be used in tracepoints.  */
12698
12699 static void
12700 tracepoint_re_set (struct breakpoint *b)
12701 {
12702   breakpoint_re_set_default (b);
12703 }
12704
12705 static int
12706 tracepoint_breakpoint_hit (const struct bp_location *bl,
12707                            const address_space *aspace, CORE_ADDR bp_addr,
12708                            const struct target_waitstatus *ws)
12709 {
12710   /* By definition, the inferior does not report stops at
12711      tracepoints.  */
12712   return 0;
12713 }
12714
12715 static void
12716 tracepoint_print_one_detail (const struct breakpoint *self,
12717                              struct ui_out *uiout)
12718 {
12719   struct tracepoint *tp = (struct tracepoint *) self;
12720   if (!tp->static_trace_marker_id.empty ())
12721     {
12722       gdb_assert (self->type == bp_static_tracepoint);
12723
12724       uiout->text ("\tmarker id is ");
12725       uiout->field_string ("static-tracepoint-marker-string-id",
12726                            tp->static_trace_marker_id);
12727       uiout->text ("\n");
12728     }
12729 }
12730
12731 static void
12732 tracepoint_print_mention (struct breakpoint *b)
12733 {
12734   if (current_uiout->is_mi_like_p ())
12735     return;
12736
12737   switch (b->type)
12738     {
12739     case bp_tracepoint:
12740       printf_filtered (_("Tracepoint"));
12741       printf_filtered (_(" %d"), b->number);
12742       break;
12743     case bp_fast_tracepoint:
12744       printf_filtered (_("Fast tracepoint"));
12745       printf_filtered (_(" %d"), b->number);
12746       break;
12747     case bp_static_tracepoint:
12748       printf_filtered (_("Static tracepoint"));
12749       printf_filtered (_(" %d"), b->number);
12750       break;
12751     default:
12752       internal_error (__FILE__, __LINE__,
12753                       _("unhandled tracepoint type %d"), (int) b->type);
12754     }
12755
12756   say_where (b);
12757 }
12758
12759 static void
12760 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12761 {
12762   struct tracepoint *tp = (struct tracepoint *) self;
12763
12764   if (self->type == bp_fast_tracepoint)
12765     fprintf_unfiltered (fp, "ftrace");
12766   else if (self->type == bp_static_tracepoint)
12767     fprintf_unfiltered (fp, "strace");
12768   else if (self->type == bp_tracepoint)
12769     fprintf_unfiltered (fp, "trace");
12770   else
12771     internal_error (__FILE__, __LINE__,
12772                     _("unhandled tracepoint type %d"), (int) self->type);
12773
12774   fprintf_unfiltered (fp, " %s",
12775                       event_location_to_string (self->location.get ()));
12776   print_recreate_thread (self, fp);
12777
12778   if (tp->pass_count)
12779     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12780 }
12781
12782 static void
12783 tracepoint_create_sals_from_location (const struct event_location *location,
12784                                       struct linespec_result *canonical,
12785                                       enum bptype type_wanted)
12786 {
12787   create_sals_from_location_default (location, canonical, type_wanted);
12788 }
12789
12790 static void
12791 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12792                                    struct linespec_result *canonical,
12793                                    gdb::unique_xmalloc_ptr<char> cond_string,
12794                                    gdb::unique_xmalloc_ptr<char> extra_string,
12795                                    enum bptype type_wanted,
12796                                    enum bpdisp disposition,
12797                                    int thread,
12798                                    int task, int ignore_count,
12799                                    const struct breakpoint_ops *ops,
12800                                    int from_tty, int enabled,
12801                                    int internal, unsigned flags)
12802 {
12803   create_breakpoints_sal_default (gdbarch, canonical,
12804                                   std::move (cond_string),
12805                                   std::move (extra_string),
12806                                   type_wanted,
12807                                   disposition, thread, task,
12808                                   ignore_count, ops, from_tty,
12809                                   enabled, internal, flags);
12810 }
12811
12812 static std::vector<symtab_and_line>
12813 tracepoint_decode_location (struct breakpoint *b,
12814                             const struct event_location *location,
12815                             struct program_space *search_pspace)
12816 {
12817   return decode_location_default (b, location, search_pspace);
12818 }
12819
12820 struct breakpoint_ops tracepoint_breakpoint_ops;
12821
12822 /* The breakpoint_ops structure to be use on tracepoints placed in a
12823    static probe.  */
12824
12825 static void
12826 tracepoint_probe_create_sals_from_location
12827   (const struct event_location *location,
12828    struct linespec_result *canonical,
12829    enum bptype type_wanted)
12830 {
12831   /* We use the same method for breakpoint on probes.  */
12832   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12833 }
12834
12835 static std::vector<symtab_and_line>
12836 tracepoint_probe_decode_location (struct breakpoint *b,
12837                                   const struct event_location *location,
12838                                   struct program_space *search_pspace)
12839 {
12840   /* We use the same method for breakpoint on probes.  */
12841   return bkpt_probe_decode_location (b, location, search_pspace);
12842 }
12843
12844 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12845
12846 /* Dprintf breakpoint_ops methods.  */
12847
12848 static void
12849 dprintf_re_set (struct breakpoint *b)
12850 {
12851   breakpoint_re_set_default (b);
12852
12853   /* extra_string should never be non-NULL for dprintf.  */
12854   gdb_assert (b->extra_string != NULL);
12855
12856   /* 1 - connect to target 1, that can run breakpoint commands.
12857      2 - create a dprintf, which resolves fine.
12858      3 - disconnect from target 1
12859      4 - connect to target 2, that can NOT run breakpoint commands.
12860
12861      After steps #3/#4, you'll want the dprintf command list to
12862      be updated, because target 1 and 2 may well return different
12863      answers for target_can_run_breakpoint_commands().
12864      Given absence of finer grained resetting, we get to do
12865      it all the time.  */
12866   if (b->extra_string != NULL)
12867     update_dprintf_command_list (b);
12868 }
12869
12870 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12871
12872 static void
12873 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12874 {
12875   fprintf_unfiltered (fp, "dprintf %s,%s",
12876                       event_location_to_string (tp->location.get ()),
12877                       tp->extra_string);
12878   print_recreate_thread (tp, fp);
12879 }
12880
12881 /* Implement the "after_condition_true" breakpoint_ops method for
12882    dprintf.
12883
12884    dprintf's are implemented with regular commands in their command
12885    list, but we run the commands here instead of before presenting the
12886    stop to the user, as dprintf's don't actually cause a stop.  This
12887    also makes it so that the commands of multiple dprintfs at the same
12888    address are all handled.  */
12889
12890 static void
12891 dprintf_after_condition_true (struct bpstats *bs)
12892 {
12893   struct bpstats tmp_bs;
12894   struct bpstats *tmp_bs_p = &tmp_bs;
12895
12896   /* dprintf's never cause a stop.  This wasn't set in the
12897      check_status hook instead because that would make the dprintf's
12898      condition not be evaluated.  */
12899   bs->stop = 0;
12900
12901   /* Run the command list here.  Take ownership of it instead of
12902      copying.  We never want these commands to run later in
12903      bpstat_do_actions, if a breakpoint that causes a stop happens to
12904      be set at same address as this dprintf, or even if running the
12905      commands here throws.  */
12906   tmp_bs.commands = bs->commands;
12907   bs->commands = NULL;
12908
12909   bpstat_do_actions_1 (&tmp_bs_p);
12910
12911   /* 'tmp_bs.commands' will usually be NULL by now, but
12912      bpstat_do_actions_1 may return early without processing the whole
12913      list.  */
12914 }
12915
12916 /* The breakpoint_ops structure to be used on static tracepoints with
12917    markers (`-m').  */
12918
12919 static void
12920 strace_marker_create_sals_from_location (const struct event_location *location,
12921                                          struct linespec_result *canonical,
12922                                          enum bptype type_wanted)
12923 {
12924   struct linespec_sals lsal;
12925   const char *arg_start, *arg;
12926
12927   arg = arg_start = get_linespec_location (location)->spec_string;
12928   lsal.sals = decode_static_tracepoint_spec (&arg);
12929
12930   std::string str (arg_start, arg - arg_start);
12931   const char *ptr = str.c_str ();
12932   canonical->location
12933     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12934
12935   lsal.canonical
12936     = xstrdup (event_location_to_string (canonical->location.get ()));
12937   canonical->lsals.push_back (std::move (lsal));
12938 }
12939
12940 static void
12941 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12942                                       struct linespec_result *canonical,
12943                                       gdb::unique_xmalloc_ptr<char> cond_string,
12944                                       gdb::unique_xmalloc_ptr<char> extra_string,
12945                                       enum bptype type_wanted,
12946                                       enum bpdisp disposition,
12947                                       int thread,
12948                                       int task, int ignore_count,
12949                                       const struct breakpoint_ops *ops,
12950                                       int from_tty, int enabled,
12951                                       int internal, unsigned flags)
12952 {
12953   const linespec_sals &lsal = canonical->lsals[0];
12954
12955   /* If the user is creating a static tracepoint by marker id
12956      (strace -m MARKER_ID), then store the sals index, so that
12957      breakpoint_re_set can try to match up which of the newly
12958      found markers corresponds to this one, and, don't try to
12959      expand multiple locations for each sal, given than SALS
12960      already should contain all sals for MARKER_ID.  */
12961
12962   for (size_t i = 0; i < lsal.sals.size (); i++)
12963     {
12964       event_location_up location
12965         = copy_event_location (canonical->location.get ());
12966
12967       std::unique_ptr<tracepoint> tp (new tracepoint ());
12968       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
12969                            std::move (location), NULL,
12970                            std::move (cond_string),
12971                            std::move (extra_string),
12972                            type_wanted, disposition,
12973                            thread, task, ignore_count, ops,
12974                            from_tty, enabled, internal, flags,
12975                            canonical->special_display);
12976       /* Given that its possible to have multiple markers with
12977          the same string id, if the user is creating a static
12978          tracepoint by marker id ("strace -m MARKER_ID"), then
12979          store the sals index, so that breakpoint_re_set can
12980          try to match up which of the newly found markers
12981          corresponds to this one  */
12982       tp->static_trace_marker_id_idx = i;
12983
12984       install_breakpoint (internal, std::move (tp), 0);
12985     }
12986 }
12987
12988 static std::vector<symtab_and_line>
12989 strace_marker_decode_location (struct breakpoint *b,
12990                                const struct event_location *location,
12991                                struct program_space *search_pspace)
12992 {
12993   struct tracepoint *tp = (struct tracepoint *) b;
12994   const char *s = get_linespec_location (location)->spec_string;
12995
12996   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12997   if (sals.size () > tp->static_trace_marker_id_idx)
12998     {
12999       sals[0] = sals[tp->static_trace_marker_id_idx];
13000       sals.resize (1);
13001       return sals;
13002     }
13003   else
13004     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13005 }
13006
13007 static struct breakpoint_ops strace_marker_breakpoint_ops;
13008
13009 static int
13010 strace_marker_p (struct breakpoint *b)
13011 {
13012   return b->ops == &strace_marker_breakpoint_ops;
13013 }
13014
13015 /* Delete a breakpoint and clean up all traces of it in the data
13016    structures.  */
13017
13018 void
13019 delete_breakpoint (struct breakpoint *bpt)
13020 {
13021   struct breakpoint *b;
13022
13023   gdb_assert (bpt != NULL);
13024
13025   /* Has this bp already been deleted?  This can happen because
13026      multiple lists can hold pointers to bp's.  bpstat lists are
13027      especial culprits.
13028
13029      One example of this happening is a watchpoint's scope bp.  When
13030      the scope bp triggers, we notice that the watchpoint is out of
13031      scope, and delete it.  We also delete its scope bp.  But the
13032      scope bp is marked "auto-deleting", and is already on a bpstat.
13033      That bpstat is then checked for auto-deleting bp's, which are
13034      deleted.
13035
13036      A real solution to this problem might involve reference counts in
13037      bp's, and/or giving them pointers back to their referencing
13038      bpstat's, and teaching delete_breakpoint to only free a bp's
13039      storage when no more references were extent.  A cheaper bandaid
13040      was chosen.  */
13041   if (bpt->type == bp_none)
13042     return;
13043
13044   /* At least avoid this stale reference until the reference counting
13045      of breakpoints gets resolved.  */
13046   if (bpt->related_breakpoint != bpt)
13047     {
13048       struct breakpoint *related;
13049       struct watchpoint *w;
13050
13051       if (bpt->type == bp_watchpoint_scope)
13052         w = (struct watchpoint *) bpt->related_breakpoint;
13053       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13054         w = (struct watchpoint *) bpt;
13055       else
13056         w = NULL;
13057       if (w != NULL)
13058         watchpoint_del_at_next_stop (w);
13059
13060       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13061       for (related = bpt; related->related_breakpoint != bpt;
13062            related = related->related_breakpoint);
13063       related->related_breakpoint = bpt->related_breakpoint;
13064       bpt->related_breakpoint = bpt;
13065     }
13066
13067   /* watch_command_1 creates a watchpoint but only sets its number if
13068      update_watchpoint succeeds in creating its bp_locations.  If there's
13069      a problem in that process, we'll be asked to delete the half-created
13070      watchpoint.  In that case, don't announce the deletion.  */
13071   if (bpt->number)
13072     gdb::observers::breakpoint_deleted.notify (bpt);
13073
13074   if (breakpoint_chain == bpt)
13075     breakpoint_chain = bpt->next;
13076
13077   ALL_BREAKPOINTS (b)
13078     if (b->next == bpt)
13079     {
13080       b->next = bpt->next;
13081       break;
13082     }
13083
13084   /* Be sure no bpstat's are pointing at the breakpoint after it's
13085      been freed.  */
13086   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13087      in all threads for now.  Note that we cannot just remove bpstats
13088      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13089      commands are associated with the bpstat; if we remove it here,
13090      then the later call to bpstat_do_actions (&stop_bpstat); in
13091      event-top.c won't do anything, and temporary breakpoints with
13092      commands won't work.  */
13093
13094   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13095
13096   /* Now that breakpoint is removed from breakpoint list, update the
13097      global location list.  This will remove locations that used to
13098      belong to this breakpoint.  Do this before freeing the breakpoint
13099      itself, since remove_breakpoint looks at location's owner.  It
13100      might be better design to have location completely
13101      self-contained, but it's not the case now.  */
13102   update_global_location_list (UGLL_DONT_INSERT);
13103
13104   /* On the chance that someone will soon try again to delete this
13105      same bp, we mark it as deleted before freeing its storage.  */
13106   bpt->type = bp_none;
13107   delete bpt;
13108 }
13109
13110 /* Iterator function to call a user-provided callback function once
13111    for each of B and its related breakpoints.  */
13112
13113 static void
13114 iterate_over_related_breakpoints (struct breakpoint *b,
13115                                   gdb::function_view<void (breakpoint *)> function)
13116 {
13117   struct breakpoint *related;
13118
13119   related = b;
13120   do
13121     {
13122       struct breakpoint *next;
13123
13124       /* FUNCTION may delete RELATED.  */
13125       next = related->related_breakpoint;
13126
13127       if (next == related)
13128         {
13129           /* RELATED is the last ring entry.  */
13130           function (related);
13131
13132           /* FUNCTION may have deleted it, so we'd never reach back to
13133              B.  There's nothing left to do anyway, so just break
13134              out.  */
13135           break;
13136         }
13137       else
13138         function (related);
13139
13140       related = next;
13141     }
13142   while (related != b);
13143 }
13144
13145 static void
13146 delete_command (const char *arg, int from_tty)
13147 {
13148   struct breakpoint *b, *b_tmp;
13149
13150   dont_repeat ();
13151
13152   if (arg == 0)
13153     {
13154       int breaks_to_delete = 0;
13155
13156       /* Delete all breakpoints if no argument.  Do not delete
13157          internal breakpoints, these have to be deleted with an
13158          explicit breakpoint number argument.  */
13159       ALL_BREAKPOINTS (b)
13160         if (user_breakpoint_p (b))
13161           {
13162             breaks_to_delete = 1;
13163             break;
13164           }
13165
13166       /* Ask user only if there are some breakpoints to delete.  */
13167       if (!from_tty
13168           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13169         {
13170           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13171             if (user_breakpoint_p (b))
13172               delete_breakpoint (b);
13173         }
13174     }
13175   else
13176     map_breakpoint_numbers
13177       (arg, [&] (breakpoint *br)
13178        {
13179          iterate_over_related_breakpoints (br, delete_breakpoint);
13180        });
13181 }
13182
13183 /* Return true if all locations of B bound to PSPACE are pending.  If
13184    PSPACE is NULL, all locations of all program spaces are
13185    considered.  */
13186
13187 static int
13188 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13189 {
13190   struct bp_location *loc;
13191
13192   for (loc = b->loc; loc != NULL; loc = loc->next)
13193     if ((pspace == NULL
13194          || loc->pspace == pspace)
13195         && !loc->shlib_disabled
13196         && !loc->pspace->executing_startup)
13197       return 0;
13198   return 1;
13199 }
13200
13201 /* Subroutine of update_breakpoint_locations to simplify it.
13202    Return non-zero if multiple fns in list LOC have the same name.
13203    Null names are ignored.  */
13204
13205 static int
13206 ambiguous_names_p (struct bp_location *loc)
13207 {
13208   struct bp_location *l;
13209   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13210                                    xcalloc, xfree);
13211
13212   for (l = loc; l != NULL; l = l->next)
13213     {
13214       const char **slot;
13215       const char *name = l->function_name;
13216
13217       /* Allow for some names to be NULL, ignore them.  */
13218       if (name == NULL)
13219         continue;
13220
13221       slot = (const char **) htab_find_slot (htab, (const void *) name,
13222                                              INSERT);
13223       /* NOTE: We can assume slot != NULL here because xcalloc never
13224          returns NULL.  */
13225       if (*slot != NULL)
13226         {
13227           htab_delete (htab);
13228           return 1;
13229         }
13230       *slot = name;
13231     }
13232
13233   htab_delete (htab);
13234   return 0;
13235 }
13236
13237 /* When symbols change, it probably means the sources changed as well,
13238    and it might mean the static tracepoint markers are no longer at
13239    the same address or line numbers they used to be at last we
13240    checked.  Losing your static tracepoints whenever you rebuild is
13241    undesirable.  This function tries to resync/rematch gdb static
13242    tracepoints with the markers on the target, for static tracepoints
13243    that have not been set by marker id.  Static tracepoint that have
13244    been set by marker id are reset by marker id in breakpoint_re_set.
13245    The heuristic is:
13246
13247    1) For a tracepoint set at a specific address, look for a marker at
13248    the old PC.  If one is found there, assume to be the same marker.
13249    If the name / string id of the marker found is different from the
13250    previous known name, assume that means the user renamed the marker
13251    in the sources, and output a warning.
13252
13253    2) For a tracepoint set at a given line number, look for a marker
13254    at the new address of the old line number.  If one is found there,
13255    assume to be the same marker.  If the name / string id of the
13256    marker found is different from the previous known name, assume that
13257    means the user renamed the marker in the sources, and output a
13258    warning.
13259
13260    3) If a marker is no longer found at the same address or line, it
13261    may mean the marker no longer exists.  But it may also just mean
13262    the code changed a bit.  Maybe the user added a few lines of code
13263    that made the marker move up or down (in line number terms).  Ask
13264    the target for info about the marker with the string id as we knew
13265    it.  If found, update line number and address in the matching
13266    static tracepoint.  This will get confused if there's more than one
13267    marker with the same ID (possible in UST, although unadvised
13268    precisely because it confuses tools).  */
13269
13270 static struct symtab_and_line
13271 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13272 {
13273   struct tracepoint *tp = (struct tracepoint *) b;
13274   struct static_tracepoint_marker marker;
13275   CORE_ADDR pc;
13276
13277   pc = sal.pc;
13278   if (sal.line)
13279     find_line_pc (sal.symtab, sal.line, &pc);
13280
13281   if (target_static_tracepoint_marker_at (pc, &marker))
13282     {
13283       if (tp->static_trace_marker_id != marker.str_id)
13284         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13285                  b->number, tp->static_trace_marker_id.c_str (),
13286                  marker.str_id.c_str ());
13287
13288       tp->static_trace_marker_id = std::move (marker.str_id);
13289
13290       return sal;
13291     }
13292
13293   /* Old marker wasn't found on target at lineno.  Try looking it up
13294      by string ID.  */
13295   if (!sal.explicit_pc
13296       && sal.line != 0
13297       && sal.symtab != NULL
13298       && !tp->static_trace_marker_id.empty ())
13299     {
13300       std::vector<static_tracepoint_marker> markers
13301         = target_static_tracepoint_markers_by_strid
13302             (tp->static_trace_marker_id.c_str ());
13303
13304       if (!markers.empty ())
13305         {
13306           struct symbol *sym;
13307           struct static_tracepoint_marker *tpmarker;
13308           struct ui_out *uiout = current_uiout;
13309           struct explicit_location explicit_loc;
13310
13311           tpmarker = &markers[0];
13312
13313           tp->static_trace_marker_id = std::move (tpmarker->str_id);
13314
13315           warning (_("marker for static tracepoint %d (%s) not "
13316                      "found at previous line number"),
13317                    b->number, tp->static_trace_marker_id.c_str ());
13318
13319           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13320           sym = find_pc_sect_function (tpmarker->address, NULL);
13321           uiout->text ("Now in ");
13322           if (sym)
13323             {
13324               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13325                                    ui_out_style_kind::FUNCTION);
13326               uiout->text (" at ");
13327             }
13328           uiout->field_string ("file",
13329                                symtab_to_filename_for_display (sal2.symtab),
13330                                ui_out_style_kind::FILE);
13331           uiout->text (":");
13332
13333           if (uiout->is_mi_like_p ())
13334             {
13335               const char *fullname = symtab_to_fullname (sal2.symtab);
13336
13337               uiout->field_string ("fullname", fullname);
13338             }
13339
13340           uiout->field_int ("line", sal2.line);
13341           uiout->text ("\n");
13342
13343           b->loc->line_number = sal2.line;
13344           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13345
13346           b->location.reset (NULL);
13347           initialize_explicit_location (&explicit_loc);
13348           explicit_loc.source_filename
13349             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13350           explicit_loc.line_offset.offset = b->loc->line_number;
13351           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13352           b->location = new_explicit_location (&explicit_loc);
13353
13354           /* Might be nice to check if function changed, and warn if
13355              so.  */
13356         }
13357     }
13358   return sal;
13359 }
13360
13361 /* Returns 1 iff locations A and B are sufficiently same that
13362    we don't need to report breakpoint as changed.  */
13363
13364 static int
13365 locations_are_equal (struct bp_location *a, struct bp_location *b)
13366 {
13367   while (a && b)
13368     {
13369       if (a->address != b->address)
13370         return 0;
13371
13372       if (a->shlib_disabled != b->shlib_disabled)
13373         return 0;
13374
13375       if (a->enabled != b->enabled)
13376         return 0;
13377
13378       a = a->next;
13379       b = b->next;
13380     }
13381
13382   if ((a == NULL) != (b == NULL))
13383     return 0;
13384
13385   return 1;
13386 }
13387
13388 /* Split all locations of B that are bound to PSPACE out of B's
13389    location list to a separate list and return that list's head.  If
13390    PSPACE is NULL, hoist out all locations of B.  */
13391
13392 static struct bp_location *
13393 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13394 {
13395   struct bp_location head;
13396   struct bp_location *i = b->loc;
13397   struct bp_location **i_link = &b->loc;
13398   struct bp_location *hoisted = &head;
13399
13400   if (pspace == NULL)
13401     {
13402       i = b->loc;
13403       b->loc = NULL;
13404       return i;
13405     }
13406
13407   head.next = NULL;
13408
13409   while (i != NULL)
13410     {
13411       if (i->pspace == pspace)
13412         {
13413           *i_link = i->next;
13414           i->next = NULL;
13415           hoisted->next = i;
13416           hoisted = i;
13417         }
13418       else
13419         i_link = &i->next;
13420       i = *i_link;
13421     }
13422
13423   return head.next;
13424 }
13425
13426 /* Create new breakpoint locations for B (a hardware or software
13427    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13428    zero, then B is a ranged breakpoint.  Only recreates locations for
13429    FILTER_PSPACE.  Locations of other program spaces are left
13430    untouched.  */
13431
13432 void
13433 update_breakpoint_locations (struct breakpoint *b,
13434                              struct program_space *filter_pspace,
13435                              gdb::array_view<const symtab_and_line> sals,
13436                              gdb::array_view<const symtab_and_line> sals_end)
13437 {
13438   struct bp_location *existing_locations;
13439
13440   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13441     {
13442       /* Ranged breakpoints have only one start location and one end
13443          location.  */
13444       b->enable_state = bp_disabled;
13445       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13446                            "multiple locations found\n"),
13447                          b->number);
13448       return;
13449     }
13450
13451   /* If there's no new locations, and all existing locations are
13452      pending, don't do anything.  This optimizes the common case where
13453      all locations are in the same shared library, that was unloaded.
13454      We'd like to retain the location, so that when the library is
13455      loaded again, we don't loose the enabled/disabled status of the
13456      individual locations.  */
13457   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13458     return;
13459
13460   existing_locations = hoist_existing_locations (b, filter_pspace);
13461
13462   for (const auto &sal : sals)
13463     {
13464       struct bp_location *new_loc;
13465
13466       switch_to_program_space_and_thread (sal.pspace);
13467
13468       new_loc = add_location_to_breakpoint (b, &sal);
13469
13470       /* Reparse conditions, they might contain references to the
13471          old symtab.  */
13472       if (b->cond_string != NULL)
13473         {
13474           const char *s;
13475
13476           s = b->cond_string;
13477           try
13478             {
13479               new_loc->cond = parse_exp_1 (&s, sal.pc,
13480                                            block_for_pc (sal.pc),
13481                                            0);
13482             }
13483           catch (const gdb_exception_error &e)
13484             {
13485               warning (_("failed to reevaluate condition "
13486                          "for breakpoint %d: %s"), 
13487                        b->number, e.what ());
13488               new_loc->enabled = 0;
13489             }
13490         }
13491
13492       if (!sals_end.empty ())
13493         {
13494           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13495
13496           new_loc->length = end - sals[0].pc + 1;
13497         }
13498     }
13499
13500   /* If possible, carry over 'disable' status from existing
13501      breakpoints.  */
13502   {
13503     struct bp_location *e = existing_locations;
13504     /* If there are multiple breakpoints with the same function name,
13505        e.g. for inline functions, comparing function names won't work.
13506        Instead compare pc addresses; this is just a heuristic as things
13507        may have moved, but in practice it gives the correct answer
13508        often enough until a better solution is found.  */
13509     int have_ambiguous_names = ambiguous_names_p (b->loc);
13510
13511     for (; e; e = e->next)
13512       {
13513         if (!e->enabled && e->function_name)
13514           {
13515             struct bp_location *l = b->loc;
13516             if (have_ambiguous_names)
13517               {
13518                 for (; l; l = l->next)
13519                   if (breakpoint_locations_match (e, l))
13520                     {
13521                       l->enabled = 0;
13522                       break;
13523                     }
13524               }
13525             else
13526               {
13527                 for (; l; l = l->next)
13528                   if (l->function_name
13529                       && strcmp (e->function_name, l->function_name) == 0)
13530                     {
13531                       l->enabled = 0;
13532                       break;
13533                     }
13534               }
13535           }
13536       }
13537   }
13538
13539   if (!locations_are_equal (existing_locations, b->loc))
13540     gdb::observers::breakpoint_modified.notify (b);
13541 }
13542
13543 /* Find the SaL locations corresponding to the given LOCATION.
13544    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13545
13546 static std::vector<symtab_and_line>
13547 location_to_sals (struct breakpoint *b, struct event_location *location,
13548                   struct program_space *search_pspace, int *found)
13549 {
13550   struct gdb_exception exception;
13551
13552   gdb_assert (b->ops != NULL);
13553
13554   std::vector<symtab_and_line> sals;
13555
13556   try
13557     {
13558       sals = b->ops->decode_location (b, location, search_pspace);
13559     }
13560   catch (gdb_exception_error &e)
13561     {
13562       int not_found_and_ok = 0;
13563
13564       /* For pending breakpoints, it's expected that parsing will
13565          fail until the right shared library is loaded.  User has
13566          already told to create pending breakpoints and don't need
13567          extra messages.  If breakpoint is in bp_shlib_disabled
13568          state, then user already saw the message about that
13569          breakpoint being disabled, and don't want to see more
13570          errors.  */
13571       if (e.error == NOT_FOUND_ERROR
13572           && (b->condition_not_parsed
13573               || (b->loc != NULL
13574                   && search_pspace != NULL
13575                   && b->loc->pspace != search_pspace)
13576               || (b->loc && b->loc->shlib_disabled)
13577               || (b->loc && b->loc->pspace->executing_startup)
13578               || b->enable_state == bp_disabled))
13579         not_found_and_ok = 1;
13580
13581       if (!not_found_and_ok)
13582         {
13583           /* We surely don't want to warn about the same breakpoint
13584              10 times.  One solution, implemented here, is disable
13585              the breakpoint on error.  Another solution would be to
13586              have separate 'warning emitted' flag.  Since this
13587              happens only when a binary has changed, I don't know
13588              which approach is better.  */
13589           b->enable_state = bp_disabled;
13590           throw;
13591         }
13592
13593       exception = std::move (e);
13594     }
13595
13596   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13597     {
13598       for (auto &sal : sals)
13599         resolve_sal_pc (&sal);
13600       if (b->condition_not_parsed && b->extra_string != NULL)
13601         {
13602           char *cond_string, *extra_string;
13603           int thread, task;
13604
13605           find_condition_and_thread (b->extra_string, sals[0].pc,
13606                                      &cond_string, &thread, &task,
13607                                      &extra_string);
13608           gdb_assert (b->cond_string == NULL);
13609           if (cond_string)
13610             b->cond_string = cond_string;
13611           b->thread = thread;
13612           b->task = task;
13613           if (extra_string)
13614             {
13615               xfree (b->extra_string);
13616               b->extra_string = extra_string;
13617             }
13618           b->condition_not_parsed = 0;
13619         }
13620
13621       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13622         sals[0] = update_static_tracepoint (b, sals[0]);
13623
13624       *found = 1;
13625     }
13626   else
13627     *found = 0;
13628
13629   return sals;
13630 }
13631
13632 /* The default re_set method, for typical hardware or software
13633    breakpoints.  Reevaluate the breakpoint and recreate its
13634    locations.  */
13635
13636 static void
13637 breakpoint_re_set_default (struct breakpoint *b)
13638 {
13639   struct program_space *filter_pspace = current_program_space;
13640   std::vector<symtab_and_line> expanded, expanded_end;
13641
13642   int found;
13643   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13644                                                         filter_pspace, &found);
13645   if (found)
13646     expanded = std::move (sals);
13647
13648   if (b->location_range_end != NULL)
13649     {
13650       std::vector<symtab_and_line> sals_end
13651         = location_to_sals (b, b->location_range_end.get (),
13652                             filter_pspace, &found);
13653       if (found)
13654         expanded_end = std::move (sals_end);
13655     }
13656
13657   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13658 }
13659
13660 /* Default method for creating SALs from an address string.  It basically
13661    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13662
13663 static void
13664 create_sals_from_location_default (const struct event_location *location,
13665                                    struct linespec_result *canonical,
13666                                    enum bptype type_wanted)
13667 {
13668   parse_breakpoint_sals (location, canonical);
13669 }
13670
13671 /* Call create_breakpoints_sal for the given arguments.  This is the default
13672    function for the `create_breakpoints_sal' method of
13673    breakpoint_ops.  */
13674
13675 static void
13676 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13677                                 struct linespec_result *canonical,
13678                                 gdb::unique_xmalloc_ptr<char> cond_string,
13679                                 gdb::unique_xmalloc_ptr<char> extra_string,
13680                                 enum bptype type_wanted,
13681                                 enum bpdisp disposition,
13682                                 int thread,
13683                                 int task, int ignore_count,
13684                                 const struct breakpoint_ops *ops,
13685                                 int from_tty, int enabled,
13686                                 int internal, unsigned flags)
13687 {
13688   create_breakpoints_sal (gdbarch, canonical,
13689                           std::move (cond_string),
13690                           std::move (extra_string),
13691                           type_wanted, disposition,
13692                           thread, task, ignore_count, ops, from_tty,
13693                           enabled, internal, flags);
13694 }
13695
13696 /* Decode the line represented by S by calling decode_line_full.  This is the
13697    default function for the `decode_location' method of breakpoint_ops.  */
13698
13699 static std::vector<symtab_and_line>
13700 decode_location_default (struct breakpoint *b,
13701                          const struct event_location *location,
13702                          struct program_space *search_pspace)
13703 {
13704   struct linespec_result canonical;
13705
13706   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13707                     NULL, 0, &canonical, multiple_symbols_all,
13708                     b->filter);
13709
13710   /* We should get 0 or 1 resulting SALs.  */
13711   gdb_assert (canonical.lsals.size () < 2);
13712
13713   if (!canonical.lsals.empty ())
13714     {
13715       const linespec_sals &lsal = canonical.lsals[0];
13716       return std::move (lsal.sals);
13717     }
13718   return {};
13719 }
13720
13721 /* Reset a breakpoint.  */
13722
13723 static void
13724 breakpoint_re_set_one (breakpoint *b)
13725 {
13726   input_radix = b->input_radix;
13727   set_language (b->language);
13728
13729   b->ops->re_set (b);
13730 }
13731
13732 /* Re-set breakpoint locations for the current program space.
13733    Locations bound to other program spaces are left untouched.  */
13734
13735 void
13736 breakpoint_re_set (void)
13737 {
13738   struct breakpoint *b, *b_tmp;
13739
13740   {
13741     scoped_restore_current_language save_language;
13742     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13743     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13744
13745     /* breakpoint_re_set_one sets the current_language to the language
13746        of the breakpoint it is resetting (see prepare_re_set_context)
13747        before re-evaluating the breakpoint's location.  This change can
13748        unfortunately get undone by accident if the language_mode is set
13749        to auto, and we either switch frames, or more likely in this context,
13750        we select the current frame.
13751
13752        We prevent this by temporarily turning the language_mode to
13753        language_mode_manual.  We restore it once all breakpoints
13754        have been reset.  */
13755     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13756     language_mode = language_mode_manual;
13757
13758     /* Note: we must not try to insert locations until after all
13759        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13760        breakpoint 1, we'd insert the locations of breakpoint 2, which
13761        hadn't been re-set yet, and thus may have stale locations.  */
13762
13763     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13764       {
13765         try
13766           {
13767             breakpoint_re_set_one (b);
13768           }
13769         catch (const gdb_exception &ex)
13770           {
13771             exception_fprintf (gdb_stderr, ex,
13772                                "Error in re-setting breakpoint %d: ",
13773                                b->number);
13774           }
13775       }
13776
13777     jit_breakpoint_re_set ();
13778   }
13779
13780   create_overlay_event_breakpoint ();
13781   create_longjmp_master_breakpoint ();
13782   create_std_terminate_master_breakpoint ();
13783   create_exception_master_breakpoint ();
13784
13785   /* Now we can insert.  */
13786   update_global_location_list (UGLL_MAY_INSERT);
13787 }
13788 \f
13789 /* Reset the thread number of this breakpoint:
13790
13791    - If the breakpoint is for all threads, leave it as-is.
13792    - Else, reset it to the current thread for inferior_ptid.  */
13793 void
13794 breakpoint_re_set_thread (struct breakpoint *b)
13795 {
13796   if (b->thread != -1)
13797     {
13798       b->thread = inferior_thread ()->global_num;
13799
13800       /* We're being called after following a fork.  The new fork is
13801          selected as current, and unless this was a vfork will have a
13802          different program space from the original thread.  Reset that
13803          as well.  */
13804       b->loc->pspace = current_program_space;
13805     }
13806 }
13807
13808 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13809    If from_tty is nonzero, it prints a message to that effect,
13810    which ends with a period (no newline).  */
13811
13812 void
13813 set_ignore_count (int bptnum, int count, int from_tty)
13814 {
13815   struct breakpoint *b;
13816
13817   if (count < 0)
13818     count = 0;
13819
13820   ALL_BREAKPOINTS (b)
13821     if (b->number == bptnum)
13822     {
13823       if (is_tracepoint (b))
13824         {
13825           if (from_tty && count != 0)
13826             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13827                              bptnum);
13828           return;
13829         }
13830       
13831       b->ignore_count = count;
13832       if (from_tty)
13833         {
13834           if (count == 0)
13835             printf_filtered (_("Will stop next time "
13836                                "breakpoint %d is reached."),
13837                              bptnum);
13838           else if (count == 1)
13839             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13840                              bptnum);
13841           else
13842             printf_filtered (_("Will ignore next %d "
13843                                "crossings of breakpoint %d."),
13844                              count, bptnum);
13845         }
13846       gdb::observers::breakpoint_modified.notify (b);
13847       return;
13848     }
13849
13850   error (_("No breakpoint number %d."), bptnum);
13851 }
13852
13853 /* Command to set ignore-count of breakpoint N to COUNT.  */
13854
13855 static void
13856 ignore_command (const char *args, int from_tty)
13857 {
13858   const char *p = args;
13859   int num;
13860
13861   if (p == 0)
13862     error_no_arg (_("a breakpoint number"));
13863
13864   num = get_number (&p);
13865   if (num == 0)
13866     error (_("bad breakpoint number: '%s'"), args);
13867   if (*p == 0)
13868     error (_("Second argument (specified ignore-count) is missing."));
13869
13870   set_ignore_count (num,
13871                     longest_to_int (value_as_long (parse_and_eval (p))),
13872                     from_tty);
13873   if (from_tty)
13874     printf_filtered ("\n");
13875 }
13876 \f
13877
13878 /* Call FUNCTION on each of the breakpoints with numbers in the range
13879    defined by BP_NUM_RANGE (an inclusive range).  */
13880
13881 static void
13882 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13883                              gdb::function_view<void (breakpoint *)> function)
13884 {
13885   if (bp_num_range.first == 0)
13886     {
13887       warning (_("bad breakpoint number at or near '%d'"),
13888                bp_num_range.first);
13889     }
13890   else
13891     {
13892       struct breakpoint *b, *tmp;
13893
13894       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13895         {
13896           bool match = false;
13897
13898           ALL_BREAKPOINTS_SAFE (b, tmp)
13899             if (b->number == i)
13900               {
13901                 match = true;
13902                 function (b);
13903                 break;
13904               }
13905           if (!match)
13906             printf_unfiltered (_("No breakpoint number %d.\n"), i);
13907         }
13908     }
13909 }
13910
13911 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13912    ARGS.  */
13913
13914 static void
13915 map_breakpoint_numbers (const char *args,
13916                         gdb::function_view<void (breakpoint *)> function)
13917 {
13918   if (args == NULL || *args == '\0')
13919     error_no_arg (_("one or more breakpoint numbers"));
13920
13921   number_or_range_parser parser (args);
13922
13923   while (!parser.finished ())
13924     {
13925       int num = parser.get_number ();
13926       map_breakpoint_number_range (std::make_pair (num, num), function);
13927     }
13928 }
13929
13930 /* Return the breakpoint location structure corresponding to the
13931    BP_NUM and LOC_NUM values.  */
13932
13933 static struct bp_location *
13934 find_location_by_number (int bp_num, int loc_num)
13935 {
13936   struct breakpoint *b;
13937
13938   ALL_BREAKPOINTS (b)
13939     if (b->number == bp_num)
13940       {
13941         break;
13942       }
13943
13944   if (!b || b->number != bp_num)
13945     error (_("Bad breakpoint number '%d'"), bp_num);
13946   
13947   if (loc_num == 0)
13948     error (_("Bad breakpoint location number '%d'"), loc_num);
13949
13950   int n = 0;
13951   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13952     if (++n == loc_num)
13953       return loc;
13954
13955   error (_("Bad breakpoint location number '%d'"), loc_num);
13956 }
13957
13958 /* Modes of operation for extract_bp_num.  */
13959 enum class extract_bp_kind
13960 {
13961   /* Extracting a breakpoint number.  */
13962   bp,
13963
13964   /* Extracting a location number.  */
13965   loc,
13966 };
13967
13968 /* Extract a breakpoint or location number (as determined by KIND)
13969    from the string starting at START.  TRAILER is a character which
13970    can be found after the number.  If you don't want a trailer, use
13971    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
13972    string.  This always returns a positive integer.  */
13973
13974 static int
13975 extract_bp_num (extract_bp_kind kind, const char *start,
13976                 int trailer, const char **end_out = NULL)
13977 {
13978   const char *end = start;
13979   int num = get_number_trailer (&end, trailer);
13980   if (num < 0)
13981     error (kind == extract_bp_kind::bp
13982            ? _("Negative breakpoint number '%.*s'")
13983            : _("Negative breakpoint location number '%.*s'"),
13984            int (end - start), start);
13985   if (num == 0)
13986     error (kind == extract_bp_kind::bp
13987            ? _("Bad breakpoint number '%.*s'")
13988            : _("Bad breakpoint location number '%.*s'"),
13989            int (end - start), start);
13990
13991   if (end_out != NULL)
13992     *end_out = end;
13993   return num;
13994 }
13995
13996 /* Extract a breakpoint or location range (as determined by KIND) in
13997    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
13998    representing the (inclusive) range.  The returned pair's elements
13999    are always positive integers.  */
14000
14001 static std::pair<int, int>
14002 extract_bp_or_bp_range (extract_bp_kind kind,
14003                         const std::string &arg,
14004                         std::string::size_type arg_offset)
14005 {
14006   std::pair<int, int> range;
14007   const char *bp_loc = &arg[arg_offset];
14008   std::string::size_type dash = arg.find ('-', arg_offset);
14009   if (dash != std::string::npos)
14010     {
14011       /* bp_loc is a range (x-z).  */
14012       if (arg.length () == dash + 1)
14013         error (kind == extract_bp_kind::bp
14014                ? _("Bad breakpoint number at or near: '%s'")
14015                : _("Bad breakpoint location number at or near: '%s'"),
14016                bp_loc);
14017
14018       const char *end;
14019       const char *start_first = bp_loc;
14020       const char *start_second = &arg[dash + 1];
14021       range.first = extract_bp_num (kind, start_first, '-');
14022       range.second = extract_bp_num (kind, start_second, '\0', &end);
14023
14024       if (range.first > range.second)
14025         error (kind == extract_bp_kind::bp
14026                ? _("Inverted breakpoint range at '%.*s'")
14027                : _("Inverted breakpoint location range at '%.*s'"),
14028                int (end - start_first), start_first);
14029     }
14030   else
14031     {
14032       /* bp_loc is a single value.  */
14033       range.first = extract_bp_num (kind, bp_loc, '\0');
14034       range.second = range.first;
14035     }
14036   return range;
14037 }
14038
14039 /* Extract the breakpoint/location range specified by ARG.  Returns
14040    the breakpoint range in BP_NUM_RANGE, and the location range in
14041    BP_LOC_RANGE.
14042
14043    ARG may be in any of the following forms:
14044
14045    x     where 'x' is a breakpoint number.
14046    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14047    x.y   where 'x' is a breakpoint number and 'y' a location number.
14048    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14049          location number range.
14050 */
14051
14052 static void
14053 extract_bp_number_and_location (const std::string &arg,
14054                                 std::pair<int, int> &bp_num_range,
14055                                 std::pair<int, int> &bp_loc_range)
14056 {
14057   std::string::size_type dot = arg.find ('.');
14058
14059   if (dot != std::string::npos)
14060     {
14061       /* Handle 'x.y' and 'x.y-z' cases.  */
14062
14063       if (arg.length () == dot + 1 || dot == 0)
14064         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14065
14066       bp_num_range.first
14067         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14068       bp_num_range.second = bp_num_range.first;
14069
14070       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14071                                              arg, dot + 1);
14072     }
14073   else
14074     {
14075       /* Handle x and x-y cases.  */
14076
14077       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14078       bp_loc_range.first = 0;
14079       bp_loc_range.second = 0;
14080     }
14081 }
14082
14083 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14084    specifies whether to enable or disable.  */
14085
14086 static void
14087 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14088 {
14089   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14090   if (loc != NULL)
14091     {
14092       if (loc->enabled != enable)
14093         {
14094           loc->enabled = enable;
14095           mark_breakpoint_location_modified (loc);
14096         }
14097       if (target_supports_enable_disable_tracepoint ()
14098           && current_trace_status ()->running && loc->owner
14099           && is_tracepoint (loc->owner))
14100         target_disable_tracepoint (loc);
14101     }
14102   update_global_location_list (UGLL_DONT_INSERT);
14103
14104   gdb::observers::breakpoint_modified.notify (loc->owner);
14105 }
14106
14107 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14108    number of the breakpoint, and BP_LOC_RANGE specifies the
14109    (inclusive) range of location numbers of that breakpoint to
14110    enable/disable.  ENABLE specifies whether to enable or disable the
14111    location.  */
14112
14113 static void
14114 enable_disable_breakpoint_location_range (int bp_num,
14115                                           std::pair<int, int> &bp_loc_range,
14116                                           bool enable)
14117 {
14118   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14119     enable_disable_bp_num_loc (bp_num, i, enable);
14120 }
14121
14122 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14123    If from_tty is nonzero, it prints a message to that effect,
14124    which ends with a period (no newline).  */
14125
14126 void
14127 disable_breakpoint (struct breakpoint *bpt)
14128 {
14129   /* Never disable a watchpoint scope breakpoint; we want to
14130      hit them when we leave scope so we can delete both the
14131      watchpoint and its scope breakpoint at that time.  */
14132   if (bpt->type == bp_watchpoint_scope)
14133     return;
14134
14135   bpt->enable_state = bp_disabled;
14136
14137   /* Mark breakpoint locations modified.  */
14138   mark_breakpoint_modified (bpt);
14139
14140   if (target_supports_enable_disable_tracepoint ()
14141       && current_trace_status ()->running && is_tracepoint (bpt))
14142     {
14143       struct bp_location *location;
14144      
14145       for (location = bpt->loc; location; location = location->next)
14146         target_disable_tracepoint (location);
14147     }
14148
14149   update_global_location_list (UGLL_DONT_INSERT);
14150
14151   gdb::observers::breakpoint_modified.notify (bpt);
14152 }
14153
14154 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14155    specified in ARGS.  ARGS may be in any of the formats handled by
14156    extract_bp_number_and_location.  ENABLE specifies whether to enable
14157    or disable the breakpoints/locations.  */
14158
14159 static void
14160 enable_disable_command (const char *args, int from_tty, bool enable)
14161 {
14162   if (args == 0)
14163     {
14164       struct breakpoint *bpt;
14165
14166       ALL_BREAKPOINTS (bpt)
14167         if (user_breakpoint_p (bpt))
14168           {
14169             if (enable)
14170               enable_breakpoint (bpt);
14171             else
14172               disable_breakpoint (bpt);
14173           }
14174     }
14175   else
14176     {
14177       std::string num = extract_arg (&args);
14178
14179       while (!num.empty ())
14180         {
14181           std::pair<int, int> bp_num_range, bp_loc_range;
14182
14183           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14184
14185           if (bp_loc_range.first == bp_loc_range.second
14186               && bp_loc_range.first == 0)
14187             {
14188               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14189               map_breakpoint_number_range (bp_num_range,
14190                                            enable
14191                                            ? enable_breakpoint
14192                                            : disable_breakpoint);
14193             }
14194           else
14195             {
14196               /* Handle breakpoint ids with formats 'x.y' or
14197                  'x.y-z'.  */
14198               enable_disable_breakpoint_location_range
14199                 (bp_num_range.first, bp_loc_range, enable);
14200             }
14201           num = extract_arg (&args);
14202         }
14203     }
14204 }
14205
14206 /* The disable command disables the specified breakpoints/locations
14207    (or all defined breakpoints) so they're no longer effective in
14208    stopping the inferior.  ARGS may be in any of the forms defined in
14209    extract_bp_number_and_location.  */
14210
14211 static void
14212 disable_command (const char *args, int from_tty)
14213 {
14214   enable_disable_command (args, from_tty, false);
14215 }
14216
14217 static void
14218 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14219                         int count)
14220 {
14221   int target_resources_ok;
14222
14223   if (bpt->type == bp_hardware_breakpoint)
14224     {
14225       int i;
14226       i = hw_breakpoint_used_count ();
14227       target_resources_ok = 
14228         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14229                                             i + 1, 0);
14230       if (target_resources_ok == 0)
14231         error (_("No hardware breakpoint support in the target."));
14232       else if (target_resources_ok < 0)
14233         error (_("Hardware breakpoints used exceeds limit."));
14234     }
14235
14236   if (is_watchpoint (bpt))
14237     {
14238       /* Initialize it just to avoid a GCC false warning.  */
14239       enum enable_state orig_enable_state = bp_disabled;
14240
14241       try
14242         {
14243           struct watchpoint *w = (struct watchpoint *) bpt;
14244
14245           orig_enable_state = bpt->enable_state;
14246           bpt->enable_state = bp_enabled;
14247           update_watchpoint (w, 1 /* reparse */);
14248         }
14249       catch (const gdb_exception &e)
14250         {
14251           bpt->enable_state = orig_enable_state;
14252           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14253                              bpt->number);
14254           return;
14255         }
14256     }
14257
14258   bpt->enable_state = bp_enabled;
14259
14260   /* Mark breakpoint locations modified.  */
14261   mark_breakpoint_modified (bpt);
14262
14263   if (target_supports_enable_disable_tracepoint ()
14264       && current_trace_status ()->running && is_tracepoint (bpt))
14265     {
14266       struct bp_location *location;
14267
14268       for (location = bpt->loc; location; location = location->next)
14269         target_enable_tracepoint (location);
14270     }
14271
14272   bpt->disposition = disposition;
14273   bpt->enable_count = count;
14274   update_global_location_list (UGLL_MAY_INSERT);
14275
14276   gdb::observers::breakpoint_modified.notify (bpt);
14277 }
14278
14279
14280 void
14281 enable_breakpoint (struct breakpoint *bpt)
14282 {
14283   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14284 }
14285
14286 /* The enable command enables the specified breakpoints/locations (or
14287    all defined breakpoints) so they once again become (or continue to
14288    be) effective in stopping the inferior.  ARGS may be in any of the
14289    forms defined in extract_bp_number_and_location.  */
14290
14291 static void
14292 enable_command (const char *args, int from_tty)
14293 {
14294   enable_disable_command (args, from_tty, true);
14295 }
14296
14297 static void
14298 enable_once_command (const char *args, int from_tty)
14299 {
14300   map_breakpoint_numbers
14301     (args, [&] (breakpoint *b)
14302      {
14303        iterate_over_related_breakpoints
14304          (b, [&] (breakpoint *bpt)
14305           {
14306             enable_breakpoint_disp (bpt, disp_disable, 1);
14307           });
14308      });
14309 }
14310
14311 static void
14312 enable_count_command (const char *args, int from_tty)
14313 {
14314   int count;
14315
14316   if (args == NULL)
14317     error_no_arg (_("hit count"));
14318
14319   count = get_number (&args);
14320
14321   map_breakpoint_numbers
14322     (args, [&] (breakpoint *b)
14323      {
14324        iterate_over_related_breakpoints
14325          (b, [&] (breakpoint *bpt)
14326           {
14327             enable_breakpoint_disp (bpt, disp_disable, count);
14328           });
14329      });
14330 }
14331
14332 static void
14333 enable_delete_command (const char *args, int from_tty)
14334 {
14335   map_breakpoint_numbers
14336     (args, [&] (breakpoint *b)
14337      {
14338        iterate_over_related_breakpoints
14339          (b, [&] (breakpoint *bpt)
14340           {
14341             enable_breakpoint_disp (bpt, disp_del, 1);
14342           });
14343      });
14344 }
14345 \f
14346 static void
14347 set_breakpoint_cmd (const char *args, int from_tty)
14348 {
14349 }
14350
14351 static void
14352 show_breakpoint_cmd (const char *args, int from_tty)
14353 {
14354 }
14355
14356 /* Invalidate last known value of any hardware watchpoint if
14357    the memory which that value represents has been written to by
14358    GDB itself.  */
14359
14360 static void
14361 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14362                                       CORE_ADDR addr, ssize_t len,
14363                                       const bfd_byte *data)
14364 {
14365   struct breakpoint *bp;
14366
14367   ALL_BREAKPOINTS (bp)
14368     if (bp->enable_state == bp_enabled
14369         && bp->type == bp_hardware_watchpoint)
14370       {
14371         struct watchpoint *wp = (struct watchpoint *) bp;
14372
14373         if (wp->val_valid && wp->val != nullptr)
14374           {
14375             struct bp_location *loc;
14376
14377             for (loc = bp->loc; loc != NULL; loc = loc->next)
14378               if (loc->loc_type == bp_loc_hardware_watchpoint
14379                   && loc->address + loc->length > addr
14380                   && addr + len > loc->address)
14381                 {
14382                   wp->val = NULL;
14383                   wp->val_valid = 0;
14384                 }
14385           }
14386       }
14387 }
14388
14389 /* Create and insert a breakpoint for software single step.  */
14390
14391 void
14392 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14393                                const address_space *aspace,
14394                                CORE_ADDR next_pc)
14395 {
14396   struct thread_info *tp = inferior_thread ();
14397   struct symtab_and_line sal;
14398   CORE_ADDR pc = next_pc;
14399
14400   if (tp->control.single_step_breakpoints == NULL)
14401     {
14402       tp->control.single_step_breakpoints
14403         = new_single_step_breakpoint (tp->global_num, gdbarch);
14404     }
14405
14406   sal = find_pc_line (pc, 0);
14407   sal.pc = pc;
14408   sal.section = find_pc_overlay (pc);
14409   sal.explicit_pc = 1;
14410   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14411
14412   update_global_location_list (UGLL_INSERT);
14413 }
14414
14415 /* Insert single step breakpoints according to the current state.  */
14416
14417 int
14418 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14419 {
14420   struct regcache *regcache = get_current_regcache ();
14421   std::vector<CORE_ADDR> next_pcs;
14422
14423   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14424
14425   if (!next_pcs.empty ())
14426     {
14427       struct frame_info *frame = get_current_frame ();
14428       const address_space *aspace = get_frame_address_space (frame);
14429
14430       for (CORE_ADDR pc : next_pcs)
14431         insert_single_step_breakpoint (gdbarch, aspace, pc);
14432
14433       return 1;
14434     }
14435   else
14436     return 0;
14437 }
14438
14439 /* See breakpoint.h.  */
14440
14441 int
14442 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14443                                        const address_space *aspace,
14444                                        CORE_ADDR pc)
14445 {
14446   struct bp_location *loc;
14447
14448   for (loc = bp->loc; loc != NULL; loc = loc->next)
14449     if (loc->inserted
14450         && breakpoint_location_address_match (loc, aspace, pc))
14451       return 1;
14452
14453   return 0;
14454 }
14455
14456 /* Check whether a software single-step breakpoint is inserted at
14457    PC.  */
14458
14459 int
14460 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14461                                         CORE_ADDR pc)
14462 {
14463   struct breakpoint *bpt;
14464
14465   ALL_BREAKPOINTS (bpt)
14466     {
14467       if (bpt->type == bp_single_step
14468           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14469         return 1;
14470     }
14471   return 0;
14472 }
14473
14474 /* Tracepoint-specific operations.  */
14475
14476 /* Set tracepoint count to NUM.  */
14477 static void
14478 set_tracepoint_count (int num)
14479 {
14480   tracepoint_count = num;
14481   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14482 }
14483
14484 static void
14485 trace_command (const char *arg, int from_tty)
14486 {
14487   struct breakpoint_ops *ops;
14488
14489   event_location_up location = string_to_event_location (&arg,
14490                                                          current_language);
14491   if (location != NULL
14492       && event_location_type (location.get ()) == PROBE_LOCATION)
14493     ops = &tracepoint_probe_breakpoint_ops;
14494   else
14495     ops = &tracepoint_breakpoint_ops;
14496
14497   create_breakpoint (get_current_arch (),
14498                      location.get (),
14499                      NULL, 0, arg, 1 /* parse arg */,
14500                      0 /* tempflag */,
14501                      bp_tracepoint /* type_wanted */,
14502                      0 /* Ignore count */,
14503                      pending_break_support,
14504                      ops,
14505                      from_tty,
14506                      1 /* enabled */,
14507                      0 /* internal */, 0);
14508 }
14509
14510 static void
14511 ftrace_command (const char *arg, int from_tty)
14512 {
14513   event_location_up location = string_to_event_location (&arg,
14514                                                          current_language);
14515   create_breakpoint (get_current_arch (),
14516                      location.get (),
14517                      NULL, 0, arg, 1 /* parse arg */,
14518                      0 /* tempflag */,
14519                      bp_fast_tracepoint /* type_wanted */,
14520                      0 /* Ignore count */,
14521                      pending_break_support,
14522                      &tracepoint_breakpoint_ops,
14523                      from_tty,
14524                      1 /* enabled */,
14525                      0 /* internal */, 0);
14526 }
14527
14528 /* strace command implementation.  Creates a static tracepoint.  */
14529
14530 static void
14531 strace_command (const char *arg, int from_tty)
14532 {
14533   struct breakpoint_ops *ops;
14534   event_location_up location;
14535
14536   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14537      or with a normal static tracepoint.  */
14538   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14539     {
14540       ops = &strace_marker_breakpoint_ops;
14541       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14542     }
14543   else
14544     {
14545       ops = &tracepoint_breakpoint_ops;
14546       location = string_to_event_location (&arg, current_language);
14547     }
14548
14549   create_breakpoint (get_current_arch (),
14550                      location.get (),
14551                      NULL, 0, arg, 1 /* parse arg */,
14552                      0 /* tempflag */,
14553                      bp_static_tracepoint /* type_wanted */,
14554                      0 /* Ignore count */,
14555                      pending_break_support,
14556                      ops,
14557                      from_tty,
14558                      1 /* enabled */,
14559                      0 /* internal */, 0);
14560 }
14561
14562 /* Set up a fake reader function that gets command lines from a linked
14563    list that was acquired during tracepoint uploading.  */
14564
14565 static struct uploaded_tp *this_utp;
14566 static int next_cmd;
14567
14568 static char *
14569 read_uploaded_action (void)
14570 {
14571   char *rslt = nullptr;
14572
14573   if (next_cmd < this_utp->cmd_strings.size ())
14574     {
14575       rslt = this_utp->cmd_strings[next_cmd].get ();
14576       next_cmd++;
14577     }
14578
14579   return rslt;
14580 }
14581
14582 /* Given information about a tracepoint as recorded on a target (which
14583    can be either a live system or a trace file), attempt to create an
14584    equivalent GDB tracepoint.  This is not a reliable process, since
14585    the target does not necessarily have all the information used when
14586    the tracepoint was originally defined.  */
14587   
14588 struct tracepoint *
14589 create_tracepoint_from_upload (struct uploaded_tp *utp)
14590 {
14591   const char *addr_str;
14592   char small_buf[100];
14593   struct tracepoint *tp;
14594
14595   if (utp->at_string)
14596     addr_str = utp->at_string.get ();
14597   else
14598     {
14599       /* In the absence of a source location, fall back to raw
14600          address.  Since there is no way to confirm that the address
14601          means the same thing as when the trace was started, warn the
14602          user.  */
14603       warning (_("Uploaded tracepoint %d has no "
14604                  "source location, using raw address"),
14605                utp->number);
14606       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14607       addr_str = small_buf;
14608     }
14609
14610   /* There's not much we can do with a sequence of bytecodes.  */
14611   if (utp->cond && !utp->cond_string)
14612     warning (_("Uploaded tracepoint %d condition "
14613                "has no source form, ignoring it"),
14614              utp->number);
14615
14616   event_location_up location = string_to_event_location (&addr_str,
14617                                                          current_language);
14618   if (!create_breakpoint (get_current_arch (),
14619                           location.get (),
14620                           utp->cond_string.get (), -1, addr_str,
14621                           0 /* parse cond/thread */,
14622                           0 /* tempflag */,
14623                           utp->type /* type_wanted */,
14624                           0 /* Ignore count */,
14625                           pending_break_support,
14626                           &tracepoint_breakpoint_ops,
14627                           0 /* from_tty */,
14628                           utp->enabled /* enabled */,
14629                           0 /* internal */,
14630                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14631     return NULL;
14632
14633   /* Get the tracepoint we just created.  */
14634   tp = get_tracepoint (tracepoint_count);
14635   gdb_assert (tp != NULL);
14636
14637   if (utp->pass > 0)
14638     {
14639       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14640                  tp->number);
14641
14642       trace_pass_command (small_buf, 0);
14643     }
14644
14645   /* If we have uploaded versions of the original commands, set up a
14646      special-purpose "reader" function and call the usual command line
14647      reader, then pass the result to the breakpoint command-setting
14648      function.  */
14649   if (!utp->cmd_strings.empty ())
14650     {
14651       counted_command_line cmd_list;
14652
14653       this_utp = utp;
14654       next_cmd = 0;
14655
14656       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14657
14658       breakpoint_set_commands (tp, std::move (cmd_list));
14659     }
14660   else if (!utp->actions.empty ()
14661            || !utp->step_actions.empty ())
14662     warning (_("Uploaded tracepoint %d actions "
14663                "have no source form, ignoring them"),
14664              utp->number);
14665
14666   /* Copy any status information that might be available.  */
14667   tp->hit_count = utp->hit_count;
14668   tp->traceframe_usage = utp->traceframe_usage;
14669
14670   return tp;
14671 }
14672   
14673 /* Print information on tracepoint number TPNUM_EXP, or all if
14674    omitted.  */
14675
14676 static void
14677 info_tracepoints_command (const char *args, int from_tty)
14678 {
14679   struct ui_out *uiout = current_uiout;
14680   int num_printed;
14681
14682   num_printed = breakpoint_1 (args, false, is_tracepoint);
14683
14684   if (num_printed == 0)
14685     {
14686       if (args == NULL || *args == '\0')
14687         uiout->message ("No tracepoints.\n");
14688       else
14689         uiout->message ("No tracepoint matching '%s'.\n", args);
14690     }
14691
14692   default_collect_info ();
14693 }
14694
14695 /* The 'enable trace' command enables tracepoints.
14696    Not supported by all targets.  */
14697 static void
14698 enable_trace_command (const char *args, int from_tty)
14699 {
14700   enable_command (args, from_tty);
14701 }
14702
14703 /* The 'disable trace' command disables tracepoints.
14704    Not supported by all targets.  */
14705 static void
14706 disable_trace_command (const char *args, int from_tty)
14707 {
14708   disable_command (args, from_tty);
14709 }
14710
14711 /* Remove a tracepoint (or all if no argument).  */
14712 static void
14713 delete_trace_command (const char *arg, int from_tty)
14714 {
14715   struct breakpoint *b, *b_tmp;
14716
14717   dont_repeat ();
14718
14719   if (arg == 0)
14720     {
14721       int breaks_to_delete = 0;
14722
14723       /* Delete all breakpoints if no argument.
14724          Do not delete internal or call-dummy breakpoints, these
14725          have to be deleted with an explicit breakpoint number 
14726          argument.  */
14727       ALL_TRACEPOINTS (b)
14728         if (is_tracepoint (b) && user_breakpoint_p (b))
14729           {
14730             breaks_to_delete = 1;
14731             break;
14732           }
14733
14734       /* Ask user only if there are some breakpoints to delete.  */
14735       if (!from_tty
14736           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14737         {
14738           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14739             if (is_tracepoint (b) && user_breakpoint_p (b))
14740               delete_breakpoint (b);
14741         }
14742     }
14743   else
14744     map_breakpoint_numbers
14745       (arg, [&] (breakpoint *br)
14746        {
14747          iterate_over_related_breakpoints (br, delete_breakpoint);
14748        });
14749 }
14750
14751 /* Helper function for trace_pass_command.  */
14752
14753 static void
14754 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14755 {
14756   tp->pass_count = count;
14757   gdb::observers::breakpoint_modified.notify (tp);
14758   if (from_tty)
14759     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14760                      tp->number, count);
14761 }
14762
14763 /* Set passcount for tracepoint.
14764
14765    First command argument is passcount, second is tracepoint number.
14766    If tracepoint number omitted, apply to most recently defined.
14767    Also accepts special argument "all".  */
14768
14769 static void
14770 trace_pass_command (const char *args, int from_tty)
14771 {
14772   struct tracepoint *t1;
14773   ULONGEST count;
14774
14775   if (args == 0 || *args == 0)
14776     error (_("passcount command requires an "
14777              "argument (count + optional TP num)"));
14778
14779   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14780
14781   args = skip_spaces (args);
14782   if (*args && strncasecmp (args, "all", 3) == 0)
14783     {
14784       struct breakpoint *b;
14785
14786       args += 3;                        /* Skip special argument "all".  */
14787       if (*args)
14788         error (_("Junk at end of arguments."));
14789
14790       ALL_TRACEPOINTS (b)
14791       {
14792         t1 = (struct tracepoint *) b;
14793         trace_pass_set_count (t1, count, from_tty);
14794       }
14795     }
14796   else if (*args == '\0')
14797     {
14798       t1 = get_tracepoint_by_number (&args, NULL);
14799       if (t1)
14800         trace_pass_set_count (t1, count, from_tty);
14801     }
14802   else
14803     {
14804       number_or_range_parser parser (args);
14805       while (!parser.finished ())
14806         {
14807           t1 = get_tracepoint_by_number (&args, &parser);
14808           if (t1)
14809             trace_pass_set_count (t1, count, from_tty);
14810         }
14811     }
14812 }
14813
14814 struct tracepoint *
14815 get_tracepoint (int num)
14816 {
14817   struct breakpoint *t;
14818
14819   ALL_TRACEPOINTS (t)
14820     if (t->number == num)
14821       return (struct tracepoint *) t;
14822
14823   return NULL;
14824 }
14825
14826 /* Find the tracepoint with the given target-side number (which may be
14827    different from the tracepoint number after disconnecting and
14828    reconnecting).  */
14829
14830 struct tracepoint *
14831 get_tracepoint_by_number_on_target (int num)
14832 {
14833   struct breakpoint *b;
14834
14835   ALL_TRACEPOINTS (b)
14836     {
14837       struct tracepoint *t = (struct tracepoint *) b;
14838
14839       if (t->number_on_target == num)
14840         return t;
14841     }
14842
14843   return NULL;
14844 }
14845
14846 /* Utility: parse a tracepoint number and look it up in the list.
14847    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14848    If the argument is missing, the most recent tracepoint
14849    (tracepoint_count) is returned.  */
14850
14851 struct tracepoint *
14852 get_tracepoint_by_number (const char **arg,
14853                           number_or_range_parser *parser)
14854 {
14855   struct breakpoint *t;
14856   int tpnum;
14857   const char *instring = arg == NULL ? NULL : *arg;
14858
14859   if (parser != NULL)
14860     {
14861       gdb_assert (!parser->finished ());
14862       tpnum = parser->get_number ();
14863     }
14864   else if (arg == NULL || *arg == NULL || ! **arg)
14865     tpnum = tracepoint_count;
14866   else
14867     tpnum = get_number (arg);
14868
14869   if (tpnum <= 0)
14870     {
14871       if (instring && *instring)
14872         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14873                          instring);
14874       else
14875         printf_filtered (_("No previous tracepoint\n"));
14876       return NULL;
14877     }
14878
14879   ALL_TRACEPOINTS (t)
14880     if (t->number == tpnum)
14881     {
14882       return (struct tracepoint *) t;
14883     }
14884
14885   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14886   return NULL;
14887 }
14888
14889 void
14890 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14891 {
14892   if (b->thread != -1)
14893     fprintf_unfiltered (fp, " thread %d", b->thread);
14894
14895   if (b->task != 0)
14896     fprintf_unfiltered (fp, " task %d", b->task);
14897
14898   fprintf_unfiltered (fp, "\n");
14899 }
14900
14901 /* Save information on user settable breakpoints (watchpoints, etc) to
14902    a new script file named FILENAME.  If FILTER is non-NULL, call it
14903    on each breakpoint and only include the ones for which it returns
14904    non-zero.  */
14905
14906 static void
14907 save_breakpoints (const char *filename, int from_tty,
14908                   int (*filter) (const struct breakpoint *))
14909 {
14910   struct breakpoint *tp;
14911   int any = 0;
14912   int extra_trace_bits = 0;
14913
14914   if (filename == 0 || *filename == 0)
14915     error (_("Argument required (file name in which to save)"));
14916
14917   /* See if we have anything to save.  */
14918   ALL_BREAKPOINTS (tp)
14919   {
14920     /* Skip internal and momentary breakpoints.  */
14921     if (!user_breakpoint_p (tp))
14922       continue;
14923
14924     /* If we have a filter, only save the breakpoints it accepts.  */
14925     if (filter && !filter (tp))
14926       continue;
14927
14928     any = 1;
14929
14930     if (is_tracepoint (tp))
14931       {
14932         extra_trace_bits = 1;
14933
14934         /* We can stop searching.  */
14935         break;
14936       }
14937   }
14938
14939   if (!any)
14940     {
14941       warning (_("Nothing to save."));
14942       return;
14943     }
14944
14945   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14946
14947   stdio_file fp;
14948
14949   if (!fp.open (expanded_filename.get (), "w"))
14950     error (_("Unable to open file '%s' for saving (%s)"),
14951            expanded_filename.get (), safe_strerror (errno));
14952
14953   if (extra_trace_bits)
14954     save_trace_state_variables (&fp);
14955
14956   ALL_BREAKPOINTS (tp)
14957   {
14958     /* Skip internal and momentary breakpoints.  */
14959     if (!user_breakpoint_p (tp))
14960       continue;
14961
14962     /* If we have a filter, only save the breakpoints it accepts.  */
14963     if (filter && !filter (tp))
14964       continue;
14965
14966     tp->ops->print_recreate (tp, &fp);
14967
14968     /* Note, we can't rely on tp->number for anything, as we can't
14969        assume the recreated breakpoint numbers will match.  Use $bpnum
14970        instead.  */
14971
14972     if (tp->cond_string)
14973       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
14974
14975     if (tp->ignore_count)
14976       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
14977
14978     if (tp->type != bp_dprintf && tp->commands)
14979       {
14980         fp.puts ("  commands\n");
14981         
14982         current_uiout->redirect (&fp);
14983         try
14984           {
14985             print_command_lines (current_uiout, tp->commands.get (), 2);
14986           }
14987         catch (const gdb_exception &ex)
14988           {
14989           current_uiout->redirect (NULL);
14990             throw;
14991           }
14992
14993         current_uiout->redirect (NULL);
14994         fp.puts ("  end\n");
14995       }
14996
14997     if (tp->enable_state == bp_disabled)
14998       fp.puts ("disable $bpnum\n");
14999
15000     /* If this is a multi-location breakpoint, check if the locations
15001        should be individually disabled.  Watchpoint locations are
15002        special, and not user visible.  */
15003     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15004       {
15005         struct bp_location *loc;
15006         int n = 1;
15007
15008         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15009           if (!loc->enabled)
15010             fp.printf ("disable $bpnum.%d\n", n);
15011       }
15012   }
15013
15014   if (extra_trace_bits && *default_collect)
15015     fp.printf ("set default-collect %s\n", default_collect);
15016
15017   if (from_tty)
15018     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15019 }
15020
15021 /* The `save breakpoints' command.  */
15022
15023 static void
15024 save_breakpoints_command (const char *args, int from_tty)
15025 {
15026   save_breakpoints (args, from_tty, NULL);
15027 }
15028
15029 /* The `save tracepoints' command.  */
15030
15031 static void
15032 save_tracepoints_command (const char *args, int from_tty)
15033 {
15034   save_breakpoints (args, from_tty, is_tracepoint);
15035 }
15036
15037 /* Create a vector of all tracepoints.  */
15038
15039 std::vector<breakpoint *>
15040 all_tracepoints (void)
15041 {
15042   std::vector<breakpoint *> tp_vec;
15043   struct breakpoint *tp;
15044
15045   ALL_TRACEPOINTS (tp)
15046   {
15047     tp_vec.push_back (tp);
15048   }
15049
15050   return tp_vec;
15051 }
15052
15053 \f
15054 /* This help string is used to consolidate all the help string for specifying
15055    locations used by several commands.  */
15056
15057 #define LOCATION_HELP_STRING \
15058 "Linespecs are colon-separated lists of location parameters, such as\n\
15059 source filename, function name, label name, and line number.\n\
15060 Example: To specify the start of a label named \"the_top\" in the\n\
15061 function \"fact\" in the file \"factorial.c\", use\n\
15062 \"factorial.c:fact:the_top\".\n\
15063 \n\
15064 Address locations begin with \"*\" and specify an exact address in the\n\
15065 program.  Example: To specify the fourth byte past the start function\n\
15066 \"main\", use \"*main + 4\".\n\
15067 \n\
15068 Explicit locations are similar to linespecs but use an option/argument\n\
15069 syntax to specify location parameters.\n\
15070 Example: To specify the start of the label named \"the_top\" in the\n\
15071 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15072 -function fact -label the_top\".\n\
15073 \n\
15074 By default, a specified function is matched against the program's\n\
15075 functions in all scopes.  For C++, this means in all namespaces and\n\
15076 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15077 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15078 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15079 specified name as a complete fully-qualified name instead."
15080
15081 /* This help string is used for the break, hbreak, tbreak and thbreak
15082    commands.  It is defined as a macro to prevent duplication.
15083    COMMAND should be a string constant containing the name of the
15084    command.  */
15085
15086 #define BREAK_ARGS_HELP(command) \
15087 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15088 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15089 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15090 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15091 `-probe-dtrace' (for a DTrace probe).\n\
15092 LOCATION may be a linespec, address, or explicit location as described\n\
15093 below.\n\
15094 \n\
15095 With no LOCATION, uses current execution address of the selected\n\
15096 stack frame.  This is useful for breaking on return to a stack frame.\n\
15097 \n\
15098 THREADNUM is the number from \"info threads\".\n\
15099 CONDITION is a boolean expression.\n\
15100 \n" LOCATION_HELP_STRING "\n\n\
15101 Multiple breakpoints at one place are permitted, and useful if their\n\
15102 conditions are different.\n\
15103 \n\
15104 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15105
15106 /* List of subcommands for "catch".  */
15107 static struct cmd_list_element *catch_cmdlist;
15108
15109 /* List of subcommands for "tcatch".  */
15110 static struct cmd_list_element *tcatch_cmdlist;
15111
15112 void
15113 add_catch_command (const char *name, const char *docstring,
15114                    cmd_const_sfunc_ftype *sfunc,
15115                    completer_ftype *completer,
15116                    void *user_data_catch,
15117                    void *user_data_tcatch)
15118 {
15119   struct cmd_list_element *command;
15120
15121   command = add_cmd (name, class_breakpoint, docstring,
15122                      &catch_cmdlist);
15123   set_cmd_sfunc (command, sfunc);
15124   set_cmd_context (command, user_data_catch);
15125   set_cmd_completer (command, completer);
15126
15127   command = add_cmd (name, class_breakpoint, docstring,
15128                      &tcatch_cmdlist);
15129   set_cmd_sfunc (command, sfunc);
15130   set_cmd_context (command, user_data_tcatch);
15131   set_cmd_completer (command, completer);
15132 }
15133
15134 static void
15135 save_command (const char *arg, int from_tty)
15136 {
15137   printf_unfiltered (_("\"save\" must be followed by "
15138                        "the name of a save subcommand.\n"));
15139   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15140 }
15141
15142 struct breakpoint *
15143 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15144                           void *data)
15145 {
15146   struct breakpoint *b, *b_tmp;
15147
15148   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15149     {
15150       if ((*callback) (b, data))
15151         return b;
15152     }
15153
15154   return NULL;
15155 }
15156
15157 /* Zero if any of the breakpoint's locations could be a location where
15158    functions have been inlined, nonzero otherwise.  */
15159
15160 static int
15161 is_non_inline_function (struct breakpoint *b)
15162 {
15163   /* The shared library event breakpoint is set on the address of a
15164      non-inline function.  */
15165   if (b->type == bp_shlib_event)
15166     return 1;
15167
15168   return 0;
15169 }
15170
15171 /* Nonzero if the specified PC cannot be a location where functions
15172    have been inlined.  */
15173
15174 int
15175 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15176                            const struct target_waitstatus *ws)
15177 {
15178   struct breakpoint *b;
15179   struct bp_location *bl;
15180
15181   ALL_BREAKPOINTS (b)
15182     {
15183       if (!is_non_inline_function (b))
15184         continue;
15185
15186       for (bl = b->loc; bl != NULL; bl = bl->next)
15187         {
15188           if (!bl->shlib_disabled
15189               && bpstat_check_location (bl, aspace, pc, ws))
15190             return 1;
15191         }
15192     }
15193
15194   return 0;
15195 }
15196
15197 /* Remove any references to OBJFILE which is going to be freed.  */
15198
15199 void
15200 breakpoint_free_objfile (struct objfile *objfile)
15201 {
15202   struct bp_location **locp, *loc;
15203
15204   ALL_BP_LOCATIONS (loc, locp)
15205     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15206       loc->symtab = NULL;
15207 }
15208
15209 void
15210 initialize_breakpoint_ops (void)
15211 {
15212   static int initialized = 0;
15213
15214   struct breakpoint_ops *ops;
15215
15216   if (initialized)
15217     return;
15218   initialized = 1;
15219
15220   /* The breakpoint_ops structure to be inherit by all kinds of
15221      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15222      internal and momentary breakpoints, etc.).  */
15223   ops = &bkpt_base_breakpoint_ops;
15224   *ops = base_breakpoint_ops;
15225   ops->re_set = bkpt_re_set;
15226   ops->insert_location = bkpt_insert_location;
15227   ops->remove_location = bkpt_remove_location;
15228   ops->breakpoint_hit = bkpt_breakpoint_hit;
15229   ops->create_sals_from_location = bkpt_create_sals_from_location;
15230   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15231   ops->decode_location = bkpt_decode_location;
15232
15233   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15234   ops = &bkpt_breakpoint_ops;
15235   *ops = bkpt_base_breakpoint_ops;
15236   ops->re_set = bkpt_re_set;
15237   ops->resources_needed = bkpt_resources_needed;
15238   ops->print_it = bkpt_print_it;
15239   ops->print_mention = bkpt_print_mention;
15240   ops->print_recreate = bkpt_print_recreate;
15241
15242   /* Ranged breakpoints.  */
15243   ops = &ranged_breakpoint_ops;
15244   *ops = bkpt_breakpoint_ops;
15245   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15246   ops->resources_needed = resources_needed_ranged_breakpoint;
15247   ops->print_it = print_it_ranged_breakpoint;
15248   ops->print_one = print_one_ranged_breakpoint;
15249   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15250   ops->print_mention = print_mention_ranged_breakpoint;
15251   ops->print_recreate = print_recreate_ranged_breakpoint;
15252
15253   /* Internal breakpoints.  */
15254   ops = &internal_breakpoint_ops;
15255   *ops = bkpt_base_breakpoint_ops;
15256   ops->re_set = internal_bkpt_re_set;
15257   ops->check_status = internal_bkpt_check_status;
15258   ops->print_it = internal_bkpt_print_it;
15259   ops->print_mention = internal_bkpt_print_mention;
15260
15261   /* Momentary breakpoints.  */
15262   ops = &momentary_breakpoint_ops;
15263   *ops = bkpt_base_breakpoint_ops;
15264   ops->re_set = momentary_bkpt_re_set;
15265   ops->check_status = momentary_bkpt_check_status;
15266   ops->print_it = momentary_bkpt_print_it;
15267   ops->print_mention = momentary_bkpt_print_mention;
15268
15269   /* Probe breakpoints.  */
15270   ops = &bkpt_probe_breakpoint_ops;
15271   *ops = bkpt_breakpoint_ops;
15272   ops->insert_location = bkpt_probe_insert_location;
15273   ops->remove_location = bkpt_probe_remove_location;
15274   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15275   ops->decode_location = bkpt_probe_decode_location;
15276
15277   /* Watchpoints.  */
15278   ops = &watchpoint_breakpoint_ops;
15279   *ops = base_breakpoint_ops;
15280   ops->re_set = re_set_watchpoint;
15281   ops->insert_location = insert_watchpoint;
15282   ops->remove_location = remove_watchpoint;
15283   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15284   ops->check_status = check_status_watchpoint;
15285   ops->resources_needed = resources_needed_watchpoint;
15286   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15287   ops->print_it = print_it_watchpoint;
15288   ops->print_mention = print_mention_watchpoint;
15289   ops->print_recreate = print_recreate_watchpoint;
15290   ops->explains_signal = explains_signal_watchpoint;
15291
15292   /* Masked watchpoints.  */
15293   ops = &masked_watchpoint_breakpoint_ops;
15294   *ops = watchpoint_breakpoint_ops;
15295   ops->insert_location = insert_masked_watchpoint;
15296   ops->remove_location = remove_masked_watchpoint;
15297   ops->resources_needed = resources_needed_masked_watchpoint;
15298   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15299   ops->print_it = print_it_masked_watchpoint;
15300   ops->print_one_detail = print_one_detail_masked_watchpoint;
15301   ops->print_mention = print_mention_masked_watchpoint;
15302   ops->print_recreate = print_recreate_masked_watchpoint;
15303
15304   /* Tracepoints.  */
15305   ops = &tracepoint_breakpoint_ops;
15306   *ops = base_breakpoint_ops;
15307   ops->re_set = tracepoint_re_set;
15308   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15309   ops->print_one_detail = tracepoint_print_one_detail;
15310   ops->print_mention = tracepoint_print_mention;
15311   ops->print_recreate = tracepoint_print_recreate;
15312   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15313   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15314   ops->decode_location = tracepoint_decode_location;
15315
15316   /* Probe tracepoints.  */
15317   ops = &tracepoint_probe_breakpoint_ops;
15318   *ops = tracepoint_breakpoint_ops;
15319   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15320   ops->decode_location = tracepoint_probe_decode_location;
15321
15322   /* Static tracepoints with marker (`-m').  */
15323   ops = &strace_marker_breakpoint_ops;
15324   *ops = tracepoint_breakpoint_ops;
15325   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15326   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15327   ops->decode_location = strace_marker_decode_location;
15328
15329   /* Fork catchpoints.  */
15330   ops = &catch_fork_breakpoint_ops;
15331   *ops = base_breakpoint_ops;
15332   ops->insert_location = insert_catch_fork;
15333   ops->remove_location = remove_catch_fork;
15334   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15335   ops->print_it = print_it_catch_fork;
15336   ops->print_one = print_one_catch_fork;
15337   ops->print_mention = print_mention_catch_fork;
15338   ops->print_recreate = print_recreate_catch_fork;
15339
15340   /* Vfork catchpoints.  */
15341   ops = &catch_vfork_breakpoint_ops;
15342   *ops = base_breakpoint_ops;
15343   ops->insert_location = insert_catch_vfork;
15344   ops->remove_location = remove_catch_vfork;
15345   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15346   ops->print_it = print_it_catch_vfork;
15347   ops->print_one = print_one_catch_vfork;
15348   ops->print_mention = print_mention_catch_vfork;
15349   ops->print_recreate = print_recreate_catch_vfork;
15350
15351   /* Exec catchpoints.  */
15352   ops = &catch_exec_breakpoint_ops;
15353   *ops = base_breakpoint_ops;
15354   ops->insert_location = insert_catch_exec;
15355   ops->remove_location = remove_catch_exec;
15356   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15357   ops->print_it = print_it_catch_exec;
15358   ops->print_one = print_one_catch_exec;
15359   ops->print_mention = print_mention_catch_exec;
15360   ops->print_recreate = print_recreate_catch_exec;
15361
15362   /* Solib-related catchpoints.  */
15363   ops = &catch_solib_breakpoint_ops;
15364   *ops = base_breakpoint_ops;
15365   ops->insert_location = insert_catch_solib;
15366   ops->remove_location = remove_catch_solib;
15367   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15368   ops->check_status = check_status_catch_solib;
15369   ops->print_it = print_it_catch_solib;
15370   ops->print_one = print_one_catch_solib;
15371   ops->print_mention = print_mention_catch_solib;
15372   ops->print_recreate = print_recreate_catch_solib;
15373
15374   ops = &dprintf_breakpoint_ops;
15375   *ops = bkpt_base_breakpoint_ops;
15376   ops->re_set = dprintf_re_set;
15377   ops->resources_needed = bkpt_resources_needed;
15378   ops->print_it = bkpt_print_it;
15379   ops->print_mention = bkpt_print_mention;
15380   ops->print_recreate = dprintf_print_recreate;
15381   ops->after_condition_true = dprintf_after_condition_true;
15382   ops->breakpoint_hit = dprintf_breakpoint_hit;
15383 }
15384
15385 /* Chain containing all defined "enable breakpoint" subcommands.  */
15386
15387 static struct cmd_list_element *enablebreaklist = NULL;
15388
15389 /* See breakpoint.h.  */
15390
15391 cmd_list_element *commands_cmd_element = nullptr;
15392
15393 void
15394 _initialize_breakpoint (void)
15395 {
15396   struct cmd_list_element *c;
15397
15398   initialize_breakpoint_ops ();
15399
15400   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15401   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15402   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15403
15404   breakpoint_chain = 0;
15405   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15406      before a breakpoint is set.  */
15407   breakpoint_count = 0;
15408
15409   tracepoint_count = 0;
15410
15411   add_com ("ignore", class_breakpoint, ignore_command, _("\
15412 Set ignore-count of breakpoint number N to COUNT.\n\
15413 Usage is `ignore N COUNT'."));
15414
15415   commands_cmd_element = add_com ("commands", class_breakpoint,
15416                                   commands_command, _("\
15417 Set commands to be executed when the given breakpoints are hit.\n\
15418 Give a space-separated breakpoint list as argument after \"commands\".\n\
15419 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15420 (e.g. `5-7').\n\
15421 With no argument, the targeted breakpoint is the last one set.\n\
15422 The commands themselves follow starting on the next line.\n\
15423 Type a line containing \"end\" to indicate the end of them.\n\
15424 Give \"silent\" as the first line to make the breakpoint silent;\n\
15425 then no output is printed when it is hit, except what the commands print."));
15426
15427   c = add_com ("condition", class_breakpoint, condition_command, _("\
15428 Specify breakpoint number N to break only if COND is true.\n\
15429 Usage is `condition N COND', where N is an integer and COND is an\n\
15430 expression to be evaluated whenever breakpoint N is reached."));
15431   set_cmd_completer (c, condition_completer);
15432
15433   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15434 Set a temporary breakpoint.\n\
15435 Like \"break\" except the breakpoint is only temporary,\n\
15436 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15437 by using \"enable delete\" on the breakpoint number.\n\
15438 \n"
15439 BREAK_ARGS_HELP ("tbreak")));
15440   set_cmd_completer (c, location_completer);
15441
15442   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15443 Set a hardware assisted breakpoint.\n\
15444 Like \"break\" except the breakpoint requires hardware support,\n\
15445 some target hardware may not have this support.\n\
15446 \n"
15447 BREAK_ARGS_HELP ("hbreak")));
15448   set_cmd_completer (c, location_completer);
15449
15450   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15451 Set a temporary hardware assisted breakpoint.\n\
15452 Like \"hbreak\" except the breakpoint is only temporary,\n\
15453 so it will be deleted when hit.\n\
15454 \n"
15455 BREAK_ARGS_HELP ("thbreak")));
15456   set_cmd_completer (c, location_completer);
15457
15458   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15459 Enable some breakpoints.\n\
15460 Give breakpoint numbers (separated by spaces) as arguments.\n\
15461 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15462 This is used to cancel the effect of the \"disable\" command.\n\
15463 With a subcommand you can enable temporarily."),
15464                   &enablelist, "enable ", 1, &cmdlist);
15465
15466   add_com_alias ("en", "enable", class_breakpoint, 1);
15467
15468   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15469 Enable some breakpoints.\n\
15470 Give breakpoint numbers (separated by spaces) as arguments.\n\
15471 This is used to cancel the effect of the \"disable\" command.\n\
15472 May be abbreviated to simply \"enable\"."),
15473                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15474
15475   add_cmd ("once", no_class, enable_once_command, _("\
15476 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15477 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15478            &enablebreaklist);
15479
15480   add_cmd ("delete", no_class, enable_delete_command, _("\
15481 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15482 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15483            &enablebreaklist);
15484
15485   add_cmd ("count", no_class, enable_count_command, _("\
15486 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15487 If a breakpoint is hit while enabled in this fashion,\n\
15488 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15489            &enablebreaklist);
15490
15491   add_cmd ("delete", no_class, enable_delete_command, _("\
15492 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15493 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15494            &enablelist);
15495
15496   add_cmd ("once", no_class, enable_once_command, _("\
15497 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15498 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15499            &enablelist);
15500
15501   add_cmd ("count", no_class, enable_count_command, _("\
15502 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15503 If a breakpoint is hit while enabled in this fashion,\n\
15504 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15505            &enablelist);
15506
15507   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15508 Disable some breakpoints.\n\
15509 Arguments are breakpoint numbers with spaces in between.\n\
15510 To disable all breakpoints, give no argument.\n\
15511 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15512                   &disablelist, "disable ", 1, &cmdlist);
15513   add_com_alias ("dis", "disable", class_breakpoint, 1);
15514   add_com_alias ("disa", "disable", class_breakpoint, 1);
15515
15516   add_cmd ("breakpoints", class_alias, disable_command, _("\
15517 Disable some breakpoints.\n\
15518 Arguments are breakpoint numbers with spaces in between.\n\
15519 To disable all breakpoints, give no argument.\n\
15520 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15521 This command may be abbreviated \"disable\"."),
15522            &disablelist);
15523
15524   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15525 Delete some breakpoints or auto-display expressions.\n\
15526 Arguments are breakpoint numbers with spaces in between.\n\
15527 To delete all breakpoints, give no argument.\n\
15528 \n\
15529 Also a prefix command for deletion of other GDB objects.\n\
15530 The \"unset\" command is also an alias for \"delete\"."),
15531                   &deletelist, "delete ", 1, &cmdlist);
15532   add_com_alias ("d", "delete", class_breakpoint, 1);
15533   add_com_alias ("del", "delete", class_breakpoint, 1);
15534
15535   add_cmd ("breakpoints", class_alias, delete_command, _("\
15536 Delete some breakpoints or auto-display expressions.\n\
15537 Arguments are breakpoint numbers with spaces in between.\n\
15538 To delete all breakpoints, give no argument.\n\
15539 This command may be abbreviated \"delete\"."),
15540            &deletelist);
15541
15542   add_com ("clear", class_breakpoint, clear_command, _("\
15543 Clear breakpoint at specified location.\n\
15544 Argument may be a linespec, explicit, or address location as described below.\n\
15545 \n\
15546 With no argument, clears all breakpoints in the line that the selected frame\n\
15547 is executing in.\n"
15548 "\n" LOCATION_HELP_STRING "\n\n\
15549 See also the \"delete\" command which clears breakpoints by number."));
15550   add_com_alias ("cl", "clear", class_breakpoint, 1);
15551
15552   c = add_com ("break", class_breakpoint, break_command, _("\
15553 Set breakpoint at specified location.\n"
15554 BREAK_ARGS_HELP ("break")));
15555   set_cmd_completer (c, location_completer);
15556
15557   add_com_alias ("b", "break", class_run, 1);
15558   add_com_alias ("br", "break", class_run, 1);
15559   add_com_alias ("bre", "break", class_run, 1);
15560   add_com_alias ("brea", "break", class_run, 1);
15561
15562   if (dbx_commands)
15563     {
15564       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15565 Break in function/address or break at a line in the current file."),
15566                              &stoplist, "stop ", 1, &cmdlist);
15567       add_cmd ("in", class_breakpoint, stopin_command,
15568                _("Break in function or address."), &stoplist);
15569       add_cmd ("at", class_breakpoint, stopat_command,
15570                _("Break at a line in the current file."), &stoplist);
15571       add_com ("status", class_info, info_breakpoints_command, _("\
15572 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15573 The \"Type\" column indicates one of:\n\
15574 \tbreakpoint     - normal breakpoint\n\
15575 \twatchpoint     - watchpoint\n\
15576 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15577 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15578 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15579 address and file/line number respectively.\n\
15580 \n\
15581 Convenience variable \"$_\" and default examine address for \"x\"\n\
15582 are set to the address of the last breakpoint listed unless the command\n\
15583 is prefixed with \"server \".\n\n\
15584 Convenience variable \"$bpnum\" contains the number of the last\n\
15585 breakpoint set."));
15586     }
15587
15588   add_info ("breakpoints", info_breakpoints_command, _("\
15589 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15590 The \"Type\" column indicates one of:\n\
15591 \tbreakpoint     - normal breakpoint\n\
15592 \twatchpoint     - watchpoint\n\
15593 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15594 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15595 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15596 address and file/line number respectively.\n\
15597 \n\
15598 Convenience variable \"$_\" and default examine address for \"x\"\n\
15599 are set to the address of the last breakpoint listed unless the command\n\
15600 is prefixed with \"server \".\n\n\
15601 Convenience variable \"$bpnum\" contains the number of the last\n\
15602 breakpoint set."));
15603
15604   add_info_alias ("b", "breakpoints", 1);
15605
15606   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15607 Status of all breakpoints, or breakpoint number NUMBER.\n\
15608 The \"Type\" column indicates one of:\n\
15609 \tbreakpoint     - normal breakpoint\n\
15610 \twatchpoint     - watchpoint\n\
15611 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15612 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15613 \tuntil          - internal breakpoint used by the \"until\" command\n\
15614 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15615 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15616 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15617 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15618 address and file/line number respectively.\n\
15619 \n\
15620 Convenience variable \"$_\" and default examine address for \"x\"\n\
15621 are set to the address of the last breakpoint listed unless the command\n\
15622 is prefixed with \"server \".\n\n\
15623 Convenience variable \"$bpnum\" contains the number of the last\n\
15624 breakpoint set."),
15625            &maintenanceinfolist);
15626
15627   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15628 Set catchpoints to catch events."),
15629                   &catch_cmdlist, "catch ",
15630                   0/*allow-unknown*/, &cmdlist);
15631
15632   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15633 Set temporary catchpoints to catch events."),
15634                   &tcatch_cmdlist, "tcatch ",
15635                   0/*allow-unknown*/, &cmdlist);
15636
15637   add_catch_command ("fork", _("Catch calls to fork."),
15638                      catch_fork_command_1,
15639                      NULL,
15640                      (void *) (uintptr_t) catch_fork_permanent,
15641                      (void *) (uintptr_t) catch_fork_temporary);
15642   add_catch_command ("vfork", _("Catch calls to vfork."),
15643                      catch_fork_command_1,
15644                      NULL,
15645                      (void *) (uintptr_t) catch_vfork_permanent,
15646                      (void *) (uintptr_t) catch_vfork_temporary);
15647   add_catch_command ("exec", _("Catch calls to exec."),
15648                      catch_exec_command_1,
15649                      NULL,
15650                      CATCH_PERMANENT,
15651                      CATCH_TEMPORARY);
15652   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15653 Usage: catch load [REGEX]\n\
15654 If REGEX is given, only stop for libraries matching the regular expression."),
15655                      catch_load_command_1,
15656                      NULL,
15657                      CATCH_PERMANENT,
15658                      CATCH_TEMPORARY);
15659   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15660 Usage: catch unload [REGEX]\n\
15661 If REGEX is given, only stop for libraries matching the regular expression."),
15662                      catch_unload_command_1,
15663                      NULL,
15664                      CATCH_PERMANENT,
15665                      CATCH_TEMPORARY);
15666
15667   c = add_com ("watch", class_breakpoint, watch_command, _("\
15668 Set a watchpoint for an expression.\n\
15669 Usage: watch [-l|-location] EXPRESSION\n\
15670 A watchpoint stops execution of your program whenever the value of\n\
15671 an expression changes.\n\
15672 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15673 the memory to which it refers."));
15674   set_cmd_completer (c, expression_completer);
15675
15676   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15677 Set a read watchpoint for an expression.\n\
15678 Usage: rwatch [-l|-location] EXPRESSION\n\
15679 A watchpoint stops execution of your program whenever the value of\n\
15680 an expression is read.\n\
15681 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15682 the memory to which it refers."));
15683   set_cmd_completer (c, expression_completer);
15684
15685   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15686 Set a watchpoint for an expression.\n\
15687 Usage: awatch [-l|-location] EXPRESSION\n\
15688 A watchpoint stops execution of your program whenever the value of\n\
15689 an expression is either read or written.\n\
15690 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15691 the memory to which it refers."));
15692   set_cmd_completer (c, expression_completer);
15693
15694   add_info ("watchpoints", info_watchpoints_command, _("\
15695 Status of specified watchpoints (all watchpoints if no argument)."));
15696
15697   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15698      respond to changes - contrary to the description.  */
15699   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15700                             &can_use_hw_watchpoints, _("\
15701 Set debugger's willingness to use watchpoint hardware."), _("\
15702 Show debugger's willingness to use watchpoint hardware."), _("\
15703 If zero, gdb will not use hardware for new watchpoints, even if\n\
15704 such is available.  (However, any hardware watchpoints that were\n\
15705 created before setting this to nonzero, will continue to use watchpoint\n\
15706 hardware.)"),
15707                             NULL,
15708                             show_can_use_hw_watchpoints,
15709                             &setlist, &showlist);
15710
15711   can_use_hw_watchpoints = 1;
15712
15713   /* Tracepoint manipulation commands.  */
15714
15715   c = add_com ("trace", class_breakpoint, trace_command, _("\
15716 Set a tracepoint at specified location.\n\
15717 \n"
15718 BREAK_ARGS_HELP ("trace") "\n\
15719 Do \"help tracepoints\" for info on other tracepoint commands."));
15720   set_cmd_completer (c, location_completer);
15721
15722   add_com_alias ("tp", "trace", class_alias, 0);
15723   add_com_alias ("tr", "trace", class_alias, 1);
15724   add_com_alias ("tra", "trace", class_alias, 1);
15725   add_com_alias ("trac", "trace", class_alias, 1);
15726
15727   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15728 Set a fast tracepoint at specified location.\n\
15729 \n"
15730 BREAK_ARGS_HELP ("ftrace") "\n\
15731 Do \"help tracepoints\" for info on other tracepoint commands."));
15732   set_cmd_completer (c, location_completer);
15733
15734   c = add_com ("strace", class_breakpoint, strace_command, _("\
15735 Set a static tracepoint at location or marker.\n\
15736 \n\
15737 strace [LOCATION] [if CONDITION]\n\
15738 LOCATION may be a linespec, explicit, or address location (described below) \n\
15739 or -m MARKER_ID.\n\n\
15740 If a marker id is specified, probe the marker with that name.  With\n\
15741 no LOCATION, uses current execution address of the selected stack frame.\n\
15742 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15743 This collects arbitrary user data passed in the probe point call to the\n\
15744 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15745 by printing the $_sdata variable like any other convenience variable.\n\
15746 \n\
15747 CONDITION is a boolean expression.\n\
15748 \n" LOCATION_HELP_STRING "\n\n\
15749 Multiple tracepoints at one place are permitted, and useful if their\n\
15750 conditions are different.\n\
15751 \n\
15752 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15753 Do \"help tracepoints\" for info on other tracepoint commands."));
15754   set_cmd_completer (c, location_completer);
15755
15756   add_info ("tracepoints", info_tracepoints_command, _("\
15757 Status of specified tracepoints (all tracepoints if no argument).\n\
15758 Convenience variable \"$tpnum\" contains the number of the\n\
15759 last tracepoint set."));
15760
15761   add_info_alias ("tp", "tracepoints", 1);
15762
15763   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15764 Delete specified tracepoints.\n\
15765 Arguments are tracepoint numbers, separated by spaces.\n\
15766 No argument means delete all tracepoints."),
15767            &deletelist);
15768   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15769
15770   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15771 Disable specified tracepoints.\n\
15772 Arguments are tracepoint numbers, separated by spaces.\n\
15773 No argument means disable all tracepoints."),
15774            &disablelist);
15775   deprecate_cmd (c, "disable");
15776
15777   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15778 Enable specified tracepoints.\n\
15779 Arguments are tracepoint numbers, separated by spaces.\n\
15780 No argument means enable all tracepoints."),
15781            &enablelist);
15782   deprecate_cmd (c, "enable");
15783
15784   add_com ("passcount", class_trace, trace_pass_command, _("\
15785 Set the passcount for a tracepoint.\n\
15786 The trace will end when the tracepoint has been passed 'count' times.\n\
15787 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15788 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15789
15790   add_prefix_cmd ("save", class_breakpoint, save_command,
15791                   _("Save breakpoint definitions as a script."),
15792                   &save_cmdlist, "save ",
15793                   0/*allow-unknown*/, &cmdlist);
15794
15795   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15796 Save current breakpoint definitions as a script.\n\
15797 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15798 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15799 session to restore them."),
15800                &save_cmdlist);
15801   set_cmd_completer (c, filename_completer);
15802
15803   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15804 Save current tracepoint definitions as a script.\n\
15805 Use the 'source' command in another debug session to restore them."),
15806                &save_cmdlist);
15807   set_cmd_completer (c, filename_completer);
15808
15809   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15810   deprecate_cmd (c, "save tracepoints");
15811
15812   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15813 Breakpoint specific settings\n\
15814 Configure various breakpoint-specific variables such as\n\
15815 pending breakpoint behavior"),
15816                   &breakpoint_set_cmdlist, "set breakpoint ",
15817                   0/*allow-unknown*/, &setlist);
15818   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15819 Breakpoint specific settings\n\
15820 Configure various breakpoint-specific variables such as\n\
15821 pending breakpoint behavior"),
15822                   &breakpoint_show_cmdlist, "show breakpoint ",
15823                   0/*allow-unknown*/, &showlist);
15824
15825   add_setshow_auto_boolean_cmd ("pending", no_class,
15826                                 &pending_break_support, _("\
15827 Set debugger's behavior regarding pending breakpoints."), _("\
15828 Show debugger's behavior regarding pending breakpoints."), _("\
15829 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15830 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15831 an error.  If auto, an unrecognized breakpoint location results in a\n\
15832 user-query to see if a pending breakpoint should be created."),
15833                                 NULL,
15834                                 show_pending_break_support,
15835                                 &breakpoint_set_cmdlist,
15836                                 &breakpoint_show_cmdlist);
15837
15838   pending_break_support = AUTO_BOOLEAN_AUTO;
15839
15840   add_setshow_boolean_cmd ("auto-hw", no_class,
15841                            &automatic_hardware_breakpoints, _("\
15842 Set automatic usage of hardware breakpoints."), _("\
15843 Show automatic usage of hardware breakpoints."), _("\
15844 If set, the debugger will automatically use hardware breakpoints for\n\
15845 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15846 a warning will be emitted for such breakpoints."),
15847                            NULL,
15848                            show_automatic_hardware_breakpoints,
15849                            &breakpoint_set_cmdlist,
15850                            &breakpoint_show_cmdlist);
15851
15852   add_setshow_boolean_cmd ("always-inserted", class_support,
15853                            &always_inserted_mode, _("\
15854 Set mode for inserting breakpoints."), _("\
15855 Show mode for inserting breakpoints."), _("\
15856 When this mode is on, breakpoints are inserted immediately as soon as\n\
15857 they're created, kept inserted even when execution stops, and removed\n\
15858 only when the user deletes them.  When this mode is off (the default),\n\
15859 breakpoints are inserted only when execution continues, and removed\n\
15860 when execution stops."),
15861                                 NULL,
15862                                 &show_always_inserted_mode,
15863                                 &breakpoint_set_cmdlist,
15864                                 &breakpoint_show_cmdlist);
15865
15866   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15867                         condition_evaluation_enums,
15868                         &condition_evaluation_mode_1, _("\
15869 Set mode of breakpoint condition evaluation."), _("\
15870 Show mode of breakpoint condition evaluation."), _("\
15871 When this is set to \"host\", breakpoint conditions will be\n\
15872 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15873 breakpoint conditions will be downloaded to the target (if the target\n\
15874 supports such feature) and conditions will be evaluated on the target's side.\n\
15875 If this is set to \"auto\" (default), this will be automatically set to\n\
15876 \"target\" if it supports condition evaluation, otherwise it will\n\
15877 be set to \"gdb\""),
15878                            &set_condition_evaluation_mode,
15879                            &show_condition_evaluation_mode,
15880                            &breakpoint_set_cmdlist,
15881                            &breakpoint_show_cmdlist);
15882
15883   add_com ("break-range", class_breakpoint, break_range_command, _("\
15884 Set a breakpoint for an address range.\n\
15885 break-range START-LOCATION, END-LOCATION\n\
15886 where START-LOCATION and END-LOCATION can be one of the following:\n\
15887   LINENUM, for that line in the current file,\n\
15888   FILE:LINENUM, for that line in that file,\n\
15889   +OFFSET, for that number of lines after the current line\n\
15890            or the start of the range\n\
15891   FUNCTION, for the first line in that function,\n\
15892   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15893   *ADDRESS, for the instruction at that address.\n\
15894 \n\
15895 The breakpoint will stop execution of the inferior whenever it executes\n\
15896 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15897 range (including START-LOCATION and END-LOCATION)."));
15898
15899   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15900 Set a dynamic printf at specified location.\n\
15901 dprintf location,format string,arg1,arg2,...\n\
15902 location may be a linespec, explicit, or address location.\n"
15903 "\n" LOCATION_HELP_STRING));
15904   set_cmd_completer (c, location_completer);
15905
15906   add_setshow_enum_cmd ("dprintf-style", class_support,
15907                         dprintf_style_enums, &dprintf_style, _("\
15908 Set the style of usage for dynamic printf."), _("\
15909 Show the style of usage for dynamic printf."), _("\
15910 This setting chooses how GDB will do a dynamic printf.\n\
15911 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15912 console, as with the \"printf\" command.\n\
15913 If the value is \"call\", the print is done by calling a function in your\n\
15914 program; by default printf(), but you can choose a different function or\n\
15915 output stream by setting dprintf-function and dprintf-channel."),
15916                         update_dprintf_commands, NULL,
15917                         &setlist, &showlist);
15918
15919   dprintf_function = xstrdup ("printf");
15920   add_setshow_string_cmd ("dprintf-function", class_support,
15921                           &dprintf_function, _("\
15922 Set the function to use for dynamic printf"), _("\
15923 Show the function to use for dynamic printf"), NULL,
15924                           update_dprintf_commands, NULL,
15925                           &setlist, &showlist);
15926
15927   dprintf_channel = xstrdup ("");
15928   add_setshow_string_cmd ("dprintf-channel", class_support,
15929                           &dprintf_channel, _("\
15930 Set the channel to use for dynamic printf"), _("\
15931 Show the channel to use for dynamic printf"), NULL,
15932                           update_dprintf_commands, NULL,
15933                           &setlist, &showlist);
15934
15935   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15936                            &disconnected_dprintf, _("\
15937 Set whether dprintf continues after GDB disconnects."), _("\
15938 Show whether dprintf continues after GDB disconnects."), _("\
15939 Use this to let dprintf commands continue to hit and produce output\n\
15940 even if GDB disconnects or detaches from the target."),
15941                            NULL,
15942                            NULL,
15943                            &setlist, &showlist);
15944
15945   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15946 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15947 (target agent only) This is useful for formatted output in user-defined commands."));
15948
15949   automatic_hardware_breakpoints = 1;
15950
15951   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15952   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15953 }