Make bpstat_what::is_longjmp a bool
[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 int
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 1;
4245         }
4246       else
4247         {
4248           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4249                                                         sig))
4250             return 1;
4251         }
4252     }
4253
4254   return 0;
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 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5691    without hardware support).  This isn't related to a specific bpstat,
5692    just to things like whether watchpoints are set.  */
5693
5694 int
5695 bpstat_should_step (void)
5696 {
5697   struct breakpoint *b;
5698
5699   ALL_BREAKPOINTS (b)
5700     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5701       return 1;
5702   return 0;
5703 }
5704
5705 int
5706 bpstat_causes_stop (bpstat bs)
5707 {
5708   for (; bs != NULL; bs = bs->next)
5709     if (bs->stop)
5710       return 1;
5711
5712   return 0;
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 user settable breakpoint (watchpoint, etc)
6405    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6406    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6407    FILTER is non-NULL, call it on each breakpoint and only include the
6408    ones for which it returns non-zero.  Return the total number of
6409    breakpoints listed.  */
6410
6411 static int
6412 breakpoint_1 (const char *args, int allflag, 
6413               int (*filter) (const struct breakpoint *))
6414 {
6415   struct breakpoint *b;
6416   struct bp_location *last_loc = NULL;
6417   int nr_printable_breakpoints;
6418   struct value_print_options opts;
6419   int print_address_bits = 0;
6420   int print_type_col_width = 14;
6421   struct ui_out *uiout = current_uiout;
6422
6423   get_user_print_options (&opts);
6424
6425   /* Compute the number of rows in the table, as well as the size
6426      required for address fields.  */
6427   nr_printable_breakpoints = 0;
6428   ALL_BREAKPOINTS (b)
6429     {
6430       /* If we have a filter, only list the breakpoints it accepts.  */
6431       if (filter && !filter (b))
6432         continue;
6433
6434       /* If we have an "args" string, it is a list of breakpoints to 
6435          accept.  Skip the others.  */
6436       if (args != NULL && *args != '\0')
6437         {
6438           if (allflag && parse_and_eval_long (args) != b->number)
6439             continue;
6440           if (!allflag && !number_is_in_list (args, b->number))
6441             continue;
6442         }
6443
6444       if (allflag || user_breakpoint_p (b))
6445         {
6446           int addr_bit, type_len;
6447
6448           addr_bit = breakpoint_address_bits (b);
6449           if (addr_bit > print_address_bits)
6450             print_address_bits = addr_bit;
6451
6452           type_len = strlen (bptype_string (b->type));
6453           if (type_len > print_type_col_width)
6454             print_type_col_width = type_len;
6455
6456           nr_printable_breakpoints++;
6457         }
6458     }
6459
6460   {
6461     ui_out_emit_table table_emitter (uiout,
6462                                      opts.addressprint ? 6 : 5,
6463                                      nr_printable_breakpoints,
6464                                      "BreakpointTable");
6465
6466     if (nr_printable_breakpoints > 0)
6467       annotate_breakpoints_headers ();
6468     if (nr_printable_breakpoints > 0)
6469       annotate_field (0);
6470     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6471     if (nr_printable_breakpoints > 0)
6472       annotate_field (1);
6473     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6474     if (nr_printable_breakpoints > 0)
6475       annotate_field (2);
6476     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6477     if (nr_printable_breakpoints > 0)
6478       annotate_field (3);
6479     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6480     if (opts.addressprint)
6481       {
6482         if (nr_printable_breakpoints > 0)
6483           annotate_field (4);
6484         if (print_address_bits <= 32)
6485           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6486         else
6487           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6488       }
6489     if (nr_printable_breakpoints > 0)
6490       annotate_field (5);
6491     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6492     uiout->table_body ();
6493     if (nr_printable_breakpoints > 0)
6494       annotate_breakpoints_table ();
6495
6496     ALL_BREAKPOINTS (b)
6497       {
6498         QUIT;
6499         /* If we have a filter, only list the breakpoints it accepts.  */
6500         if (filter && !filter (b))
6501           continue;
6502
6503         /* If we have an "args" string, it is a list of breakpoints to 
6504            accept.  Skip the others.  */
6505
6506         if (args != NULL && *args != '\0')
6507           {
6508             if (allflag)        /* maintenance info breakpoint */
6509               {
6510                 if (parse_and_eval_long (args) != b->number)
6511                   continue;
6512               }
6513             else                /* all others */
6514               {
6515                 if (!number_is_in_list (args, b->number))
6516                   continue;
6517               }
6518           }
6519         /* We only print out user settable breakpoints unless the
6520            allflag is set.  */
6521         if (allflag || user_breakpoint_p (b))
6522           print_one_breakpoint (b, &last_loc, allflag);
6523       }
6524   }
6525
6526   if (nr_printable_breakpoints == 0)
6527     {
6528       /* If there's a filter, let the caller decide how to report
6529          empty list.  */
6530       if (!filter)
6531         {
6532           if (args == NULL || *args == '\0')
6533             uiout->message ("No breakpoints or watchpoints.\n");
6534           else
6535             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6536                             args);
6537         }
6538     }
6539   else
6540     {
6541       if (last_loc && !server_command)
6542         set_next_address (last_loc->gdbarch, last_loc->address);
6543     }
6544
6545   /* FIXME?  Should this be moved up so that it is only called when
6546      there have been breakpoints? */
6547   annotate_breakpoints_table_end ();
6548
6549   return nr_printable_breakpoints;
6550 }
6551
6552 /* Display the value of default-collect in a way that is generally
6553    compatible with the breakpoint list.  */
6554
6555 static void
6556 default_collect_info (void)
6557 {
6558   struct ui_out *uiout = current_uiout;
6559
6560   /* If it has no value (which is frequently the case), say nothing; a
6561      message like "No default-collect." gets in user's face when it's
6562      not wanted.  */
6563   if (!*default_collect)
6564     return;
6565
6566   /* The following phrase lines up nicely with per-tracepoint collect
6567      actions.  */
6568   uiout->text ("default collect ");
6569   uiout->field_string ("default-collect", default_collect);
6570   uiout->text (" \n");
6571 }
6572   
6573 static void
6574 info_breakpoints_command (const char *args, int from_tty)
6575 {
6576   breakpoint_1 (args, 0, NULL);
6577
6578   default_collect_info ();
6579 }
6580
6581 static void
6582 info_watchpoints_command (const char *args, int from_tty)
6583 {
6584   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6585   struct ui_out *uiout = current_uiout;
6586
6587   if (num_printed == 0)
6588     {
6589       if (args == NULL || *args == '\0')
6590         uiout->message ("No watchpoints.\n");
6591       else
6592         uiout->message ("No watchpoint matching '%s'.\n", args);
6593     }
6594 }
6595
6596 static void
6597 maintenance_info_breakpoints (const char *args, int from_tty)
6598 {
6599   breakpoint_1 (args, 1, NULL);
6600
6601   default_collect_info ();
6602 }
6603
6604 static int
6605 breakpoint_has_pc (struct breakpoint *b,
6606                    struct program_space *pspace,
6607                    CORE_ADDR pc, struct obj_section *section)
6608 {
6609   struct bp_location *bl = b->loc;
6610
6611   for (; bl; bl = bl->next)
6612     {
6613       if (bl->pspace == pspace
6614           && bl->address == pc
6615           && (!overlay_debugging || bl->section == section))
6616         return 1;         
6617     }
6618   return 0;
6619 }
6620
6621 /* Print a message describing any user-breakpoints set at PC.  This
6622    concerns with logical breakpoints, so we match program spaces, not
6623    address spaces.  */
6624
6625 static void
6626 describe_other_breakpoints (struct gdbarch *gdbarch,
6627                             struct program_space *pspace, CORE_ADDR pc,
6628                             struct obj_section *section, int thread)
6629 {
6630   int others = 0;
6631   struct breakpoint *b;
6632
6633   ALL_BREAKPOINTS (b)
6634     others += (user_breakpoint_p (b)
6635                && breakpoint_has_pc (b, pspace, pc, section));
6636   if (others > 0)
6637     {
6638       if (others == 1)
6639         printf_filtered (_("Note: breakpoint "));
6640       else /* if (others == ???) */
6641         printf_filtered (_("Note: breakpoints "));
6642       ALL_BREAKPOINTS (b)
6643         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6644           {
6645             others--;
6646             printf_filtered ("%d", b->number);
6647             if (b->thread == -1 && thread != -1)
6648               printf_filtered (" (all threads)");
6649             else if (b->thread != -1)
6650               printf_filtered (" (thread %d)", b->thread);
6651             printf_filtered ("%s%s ",
6652                              ((b->enable_state == bp_disabled
6653                                || b->enable_state == bp_call_disabled)
6654                               ? " (disabled)"
6655                               : ""),
6656                              (others > 1) ? "," 
6657                              : ((others == 1) ? " and" : ""));
6658           }
6659       printf_filtered (_("also set at pc "));
6660       fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6661       printf_filtered (".\n");
6662     }
6663 }
6664 \f
6665
6666 /* Return true iff it is meaningful to use the address member of LOC.
6667    For some breakpoint types, the locations' address members are
6668    irrelevant and it makes no sense to attempt to compare them to
6669    other addresses (or use them for any other purpose either).
6670
6671    More specifically, software watchpoints and catchpoints that are
6672    not backed by breakpoints always have a zero valued location
6673    address and we don't want to mark breakpoints of any of these types
6674    to be a duplicate of an actual breakpoint location at address
6675    zero.  */
6676
6677 static bool
6678 bl_address_is_meaningful (bp_location *loc)
6679 {
6680   return loc->loc_type != bp_loc_other;
6681 }
6682
6683 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6684    true if LOC1 and LOC2 represent the same watchpoint location.  */
6685
6686 static int
6687 watchpoint_locations_match (struct bp_location *loc1, 
6688                             struct bp_location *loc2)
6689 {
6690   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6691   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6692
6693   /* Both of them must exist.  */
6694   gdb_assert (w1 != NULL);
6695   gdb_assert (w2 != NULL);
6696
6697   /* If the target can evaluate the condition expression in hardware,
6698      then we we need to insert both watchpoints even if they are at
6699      the same place.  Otherwise the watchpoint will only trigger when
6700      the condition of whichever watchpoint was inserted evaluates to
6701      true, not giving a chance for GDB to check the condition of the
6702      other watchpoint.  */
6703   if ((w1->cond_exp
6704        && target_can_accel_watchpoint_condition (loc1->address, 
6705                                                  loc1->length,
6706                                                  loc1->watchpoint_type,
6707                                                  w1->cond_exp.get ()))
6708       || (w2->cond_exp
6709           && target_can_accel_watchpoint_condition (loc2->address, 
6710                                                     loc2->length,
6711                                                     loc2->watchpoint_type,
6712                                                     w2->cond_exp.get ())))
6713     return 0;
6714
6715   /* Note that this checks the owner's type, not the location's.  In
6716      case the target does not support read watchpoints, but does
6717      support access watchpoints, we'll have bp_read_watchpoint
6718      watchpoints with hw_access locations.  Those should be considered
6719      duplicates of hw_read locations.  The hw_read locations will
6720      become hw_access locations later.  */
6721   return (loc1->owner->type == loc2->owner->type
6722           && loc1->pspace->aspace == loc2->pspace->aspace
6723           && loc1->address == loc2->address
6724           && loc1->length == loc2->length);
6725 }
6726
6727 /* See breakpoint.h.  */
6728
6729 int
6730 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6731                           const address_space *aspace2, CORE_ADDR addr2)
6732 {
6733   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6734            || aspace1 == aspace2)
6735           && addr1 == addr2);
6736 }
6737
6738 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6739    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6740    matches ASPACE2.  On targets that have global breakpoints, the address
6741    space doesn't really matter.  */
6742
6743 static int
6744 breakpoint_address_match_range (const address_space *aspace1,
6745                                 CORE_ADDR addr1,
6746                                 int len1, const address_space *aspace2,
6747                                 CORE_ADDR addr2)
6748 {
6749   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6750            || aspace1 == aspace2)
6751           && addr2 >= addr1 && addr2 < addr1 + len1);
6752 }
6753
6754 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6755    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6756    matches the breakpoint's address space.  On targets that have global
6757    breakpoints, the address space doesn't really matter.  */
6758
6759 static int
6760 breakpoint_location_address_match (struct bp_location *bl,
6761                                    const address_space *aspace,
6762                                    CORE_ADDR addr)
6763 {
6764   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6765                                     aspace, addr)
6766           || (bl->length
6767               && breakpoint_address_match_range (bl->pspace->aspace,
6768                                                  bl->address, bl->length,
6769                                                  aspace, addr)));
6770 }
6771
6772 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6773    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6774    match happens only if ASPACE matches the breakpoint's address
6775    space.  On targets that have global breakpoints, the address space
6776    doesn't really matter.  */
6777
6778 static int
6779 breakpoint_location_address_range_overlap (struct bp_location *bl,
6780                                            const address_space *aspace,
6781                                            CORE_ADDR addr, int len)
6782 {
6783   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6784       || bl->pspace->aspace == aspace)
6785     {
6786       int bl_len = bl->length != 0 ? bl->length : 1;
6787
6788       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6789         return 1;
6790     }
6791   return 0;
6792 }
6793
6794 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6795    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6796    true, otherwise returns false.  */
6797
6798 static int
6799 tracepoint_locations_match (struct bp_location *loc1,
6800                             struct bp_location *loc2)
6801 {
6802   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6803     /* Since tracepoint locations are never duplicated with others', tracepoint
6804        locations at the same address of different tracepoints are regarded as
6805        different locations.  */
6806     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6807   else
6808     return 0;
6809 }
6810
6811 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6812    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
6813    the same location.  */
6814
6815 static int
6816 breakpoint_locations_match (struct bp_location *loc1, 
6817                             struct bp_location *loc2)
6818 {
6819   int hw_point1, hw_point2;
6820
6821   /* Both of them must not be in moribund_locations.  */
6822   gdb_assert (loc1->owner != NULL);
6823   gdb_assert (loc2->owner != NULL);
6824
6825   hw_point1 = is_hardware_watchpoint (loc1->owner);
6826   hw_point2 = is_hardware_watchpoint (loc2->owner);
6827
6828   if (hw_point1 != hw_point2)
6829     return 0;
6830   else if (hw_point1)
6831     return watchpoint_locations_match (loc1, loc2);
6832   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6833     return tracepoint_locations_match (loc1, loc2);
6834   else
6835     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6836     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6837                                      loc2->pspace->aspace, loc2->address)
6838             && loc1->length == loc2->length);
6839 }
6840
6841 static void
6842 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6843                                int bnum, int have_bnum)
6844 {
6845   /* The longest string possibly returned by hex_string_custom
6846      is 50 chars.  These must be at least that big for safety.  */
6847   char astr1[64];
6848   char astr2[64];
6849
6850   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6851   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6852   if (have_bnum)
6853     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6854              bnum, astr1, astr2);
6855   else
6856     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6857 }
6858
6859 /* Adjust a breakpoint's address to account for architectural
6860    constraints on breakpoint placement.  Return the adjusted address.
6861    Note: Very few targets require this kind of adjustment.  For most
6862    targets, this function is simply the identity function.  */
6863
6864 static CORE_ADDR
6865 adjust_breakpoint_address (struct gdbarch *gdbarch,
6866                            CORE_ADDR bpaddr, enum bptype bptype)
6867 {
6868   if (bptype == bp_watchpoint
6869       || bptype == bp_hardware_watchpoint
6870       || bptype == bp_read_watchpoint
6871       || bptype == bp_access_watchpoint
6872       || bptype == bp_catchpoint)
6873     {
6874       /* Watchpoints and the various bp_catch_* eventpoints should not
6875          have their addresses modified.  */
6876       return bpaddr;
6877     }
6878   else if (bptype == bp_single_step)
6879     {
6880       /* Single-step breakpoints should not have their addresses
6881          modified.  If there's any architectural constrain that
6882          applies to this address, then it should have already been
6883          taken into account when the breakpoint was created in the
6884          first place.  If we didn't do this, stepping through e.g.,
6885          Thumb-2 IT blocks would break.  */
6886       return bpaddr;
6887     }
6888   else
6889     {
6890       CORE_ADDR adjusted_bpaddr = bpaddr;
6891
6892       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6893         {
6894           /* Some targets have architectural constraints on the placement
6895              of breakpoint instructions.  Obtain the adjusted address.  */
6896           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6897         }
6898
6899       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6900
6901       /* An adjusted breakpoint address can significantly alter
6902          a user's expectations.  Print a warning if an adjustment
6903          is required.  */
6904       if (adjusted_bpaddr != bpaddr)
6905         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6906
6907       return adjusted_bpaddr;
6908     }
6909 }
6910
6911 static bp_loc_type
6912 bp_location_from_bp_type (bptype type)
6913 {
6914   switch (type)
6915     {
6916     case bp_breakpoint:
6917     case bp_single_step:
6918     case bp_until:
6919     case bp_finish:
6920     case bp_longjmp:
6921     case bp_longjmp_resume:
6922     case bp_longjmp_call_dummy:
6923     case bp_exception:
6924     case bp_exception_resume:
6925     case bp_step_resume:
6926     case bp_hp_step_resume:
6927     case bp_watchpoint_scope:
6928     case bp_call_dummy:
6929     case bp_std_terminate:
6930     case bp_shlib_event:
6931     case bp_thread_event:
6932     case bp_overlay_event:
6933     case bp_jit_event:
6934     case bp_longjmp_master:
6935     case bp_std_terminate_master:
6936     case bp_exception_master:
6937     case bp_gnu_ifunc_resolver:
6938     case bp_gnu_ifunc_resolver_return:
6939     case bp_dprintf:
6940       return bp_loc_software_breakpoint;
6941     case bp_hardware_breakpoint:
6942       return bp_loc_hardware_breakpoint;
6943     case bp_hardware_watchpoint:
6944     case bp_read_watchpoint:
6945     case bp_access_watchpoint:
6946       return bp_loc_hardware_watchpoint;
6947     case bp_watchpoint:
6948     case bp_catchpoint:
6949     case bp_tracepoint:
6950     case bp_fast_tracepoint:
6951     case bp_static_tracepoint:
6952       return bp_loc_other;
6953     default:
6954       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6955     }
6956 }
6957
6958 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
6959 {
6960   this->owner = owner;
6961   this->cond_bytecode = NULL;
6962   this->shlib_disabled = 0;
6963   this->enabled = 1;
6964
6965   this->loc_type = type;
6966
6967   if (this->loc_type == bp_loc_software_breakpoint
6968       || this->loc_type == bp_loc_hardware_breakpoint)
6969     mark_breakpoint_location_modified (this);
6970
6971   this->refc = 1;
6972 }
6973
6974 bp_location::bp_location (breakpoint *owner)
6975   : bp_location::bp_location (owner,
6976                               bp_location_from_bp_type (owner->type))
6977 {
6978 }
6979
6980 /* Allocate a struct bp_location.  */
6981
6982 static struct bp_location *
6983 allocate_bp_location (struct breakpoint *bpt)
6984 {
6985   return bpt->ops->allocate_location (bpt);
6986 }
6987
6988 static void
6989 free_bp_location (struct bp_location *loc)
6990 {
6991   delete loc;
6992 }
6993
6994 /* Increment reference count.  */
6995
6996 static void
6997 incref_bp_location (struct bp_location *bl)
6998 {
6999   ++bl->refc;
7000 }
7001
7002 /* Decrement reference count.  If the reference count reaches 0,
7003    destroy the bp_location.  Sets *BLP to NULL.  */
7004
7005 static void
7006 decref_bp_location (struct bp_location **blp)
7007 {
7008   gdb_assert ((*blp)->refc > 0);
7009
7010   if (--(*blp)->refc == 0)
7011     free_bp_location (*blp);
7012   *blp = NULL;
7013 }
7014
7015 /* Add breakpoint B at the end of the global breakpoint chain.  */
7016
7017 static breakpoint *
7018 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7019 {
7020   struct breakpoint *b1;
7021   struct breakpoint *result = b.get ();
7022
7023   /* Add this breakpoint to the end of the chain so that a list of
7024      breakpoints will come out in order of increasing numbers.  */
7025
7026   b1 = breakpoint_chain;
7027   if (b1 == 0)
7028     breakpoint_chain = b.release ();
7029   else
7030     {
7031       while (b1->next)
7032         b1 = b1->next;
7033       b1->next = b.release ();
7034     }
7035
7036   return result;
7037 }
7038
7039 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7040
7041 static void
7042 init_raw_breakpoint_without_location (struct breakpoint *b,
7043                                       struct gdbarch *gdbarch,
7044                                       enum bptype bptype,
7045                                       const struct breakpoint_ops *ops)
7046 {
7047   gdb_assert (ops != NULL);
7048
7049   b->ops = ops;
7050   b->type = bptype;
7051   b->gdbarch = gdbarch;
7052   b->language = current_language->la_language;
7053   b->input_radix = input_radix;
7054   b->related_breakpoint = b;
7055 }
7056
7057 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7058    that has type BPTYPE and has no locations as yet.  */
7059
7060 static struct breakpoint *
7061 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7062                                      enum bptype bptype,
7063                                      const struct breakpoint_ops *ops)
7064 {
7065   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7066
7067   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7068   return add_to_breakpoint_chain (std::move (b));
7069 }
7070
7071 /* Initialize loc->function_name.  */
7072
7073 static void
7074 set_breakpoint_location_function (struct bp_location *loc)
7075 {
7076   gdb_assert (loc->owner != NULL);
7077
7078   if (loc->owner->type == bp_breakpoint
7079       || loc->owner->type == bp_hardware_breakpoint
7080       || is_tracepoint (loc->owner))
7081     {
7082       const char *function_name;
7083
7084       if (loc->msymbol != NULL
7085           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7086               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
7087         {
7088           struct breakpoint *b = loc->owner;
7089
7090           function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7091
7092           if (b->type == bp_breakpoint && b->loc == loc
7093               && loc->next == NULL && b->related_breakpoint == b)
7094             {
7095               /* Create only the whole new breakpoint of this type but do not
7096                  mess more complicated breakpoints with multiple locations.  */
7097               b->type = bp_gnu_ifunc_resolver;
7098               /* Remember the resolver's address for use by the return
7099                  breakpoint.  */
7100               loc->related_address = loc->address;
7101             }
7102         }
7103       else
7104         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7105
7106       if (function_name)
7107         loc->function_name = xstrdup (function_name);
7108     }
7109 }
7110
7111 /* Attempt to determine architecture of location identified by SAL.  */
7112 struct gdbarch *
7113 get_sal_arch (struct symtab_and_line sal)
7114 {
7115   if (sal.section)
7116     return get_objfile_arch (sal.section->objfile);
7117   if (sal.symtab)
7118     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7119
7120   return NULL;
7121 }
7122
7123 /* Low level routine for partially initializing a breakpoint of type
7124    BPTYPE.  The newly created breakpoint's address, section, source
7125    file name, and line number are provided by SAL.
7126
7127    It is expected that the caller will complete the initialization of
7128    the newly created breakpoint struct as well as output any status
7129    information regarding the creation of a new breakpoint.  */
7130
7131 static void
7132 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7133                      struct symtab_and_line sal, enum bptype bptype,
7134                      const struct breakpoint_ops *ops)
7135 {
7136   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7137
7138   add_location_to_breakpoint (b, &sal);
7139
7140   if (bptype != bp_catchpoint)
7141     gdb_assert (sal.pspace != NULL);
7142
7143   /* Store the program space that was used to set the breakpoint,
7144      except for ordinary breakpoints, which are independent of the
7145      program space.  */
7146   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7147     b->pspace = sal.pspace;
7148 }
7149
7150 /* set_raw_breakpoint is a low level routine for allocating and
7151    partially initializing a breakpoint of type BPTYPE.  The newly
7152    created breakpoint's address, section, source file name, and line
7153    number are provided by SAL.  The newly created and partially
7154    initialized breakpoint is added to the breakpoint chain and
7155    is also returned as the value of this function.
7156
7157    It is expected that the caller will complete the initialization of
7158    the newly created breakpoint struct as well as output any status
7159    information regarding the creation of a new breakpoint.  In
7160    particular, set_raw_breakpoint does NOT set the breakpoint
7161    number!  Care should be taken to not allow an error to occur
7162    prior to completing the initialization of the breakpoint.  If this
7163    should happen, a bogus breakpoint will be left on the chain.  */
7164
7165 struct breakpoint *
7166 set_raw_breakpoint (struct gdbarch *gdbarch,
7167                     struct symtab_and_line sal, enum bptype bptype,
7168                     const struct breakpoint_ops *ops)
7169 {
7170   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7171
7172   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7173   return add_to_breakpoint_chain (std::move (b));
7174 }
7175
7176 /* Call this routine when stepping and nexting to enable a breakpoint
7177    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7178    initiated the operation.  */
7179
7180 void
7181 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7182 {
7183   struct breakpoint *b, *b_tmp;
7184   int thread = tp->global_num;
7185
7186   /* To avoid having to rescan all objfile symbols at every step,
7187      we maintain a list of continually-inserted but always disabled
7188      longjmp "master" breakpoints.  Here, we simply create momentary
7189      clones of those and enable them for the requested thread.  */
7190   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7191     if (b->pspace == current_program_space
7192         && (b->type == bp_longjmp_master
7193             || b->type == bp_exception_master))
7194       {
7195         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7196         struct breakpoint *clone;
7197
7198         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7199            after their removal.  */
7200         clone = momentary_breakpoint_from_master (b, type,
7201                                                   &momentary_breakpoint_ops, 1);
7202         clone->thread = thread;
7203       }
7204
7205   tp->initiating_frame = frame;
7206 }
7207
7208 /* Delete all longjmp breakpoints from THREAD.  */
7209 void
7210 delete_longjmp_breakpoint (int thread)
7211 {
7212   struct breakpoint *b, *b_tmp;
7213
7214   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7215     if (b->type == bp_longjmp || b->type == bp_exception)
7216       {
7217         if (b->thread == thread)
7218           delete_breakpoint (b);
7219       }
7220 }
7221
7222 void
7223 delete_longjmp_breakpoint_at_next_stop (int thread)
7224 {
7225   struct breakpoint *b, *b_tmp;
7226
7227   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7228     if (b->type == bp_longjmp || b->type == bp_exception)
7229       {
7230         if (b->thread == thread)
7231           b->disposition = disp_del_at_next_stop;
7232       }
7233 }
7234
7235 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7236    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7237    pointer to any of them.  Return NULL if this system cannot place longjmp
7238    breakpoints.  */
7239
7240 struct breakpoint *
7241 set_longjmp_breakpoint_for_call_dummy (void)
7242 {
7243   struct breakpoint *b, *retval = NULL;
7244
7245   ALL_BREAKPOINTS (b)
7246     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7247       {
7248         struct breakpoint *new_b;
7249
7250         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7251                                                   &momentary_breakpoint_ops,
7252                                                   1);
7253         new_b->thread = inferior_thread ()->global_num;
7254
7255         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7256
7257         gdb_assert (new_b->related_breakpoint == new_b);
7258         if (retval == NULL)
7259           retval = new_b;
7260         new_b->related_breakpoint = retval;
7261         while (retval->related_breakpoint != new_b->related_breakpoint)
7262           retval = retval->related_breakpoint;
7263         retval->related_breakpoint = new_b;
7264       }
7265
7266   return retval;
7267 }
7268
7269 /* Verify all existing dummy frames and their associated breakpoints for
7270    TP.  Remove those which can no longer be found in the current frame
7271    stack.
7272
7273    You should call this function only at places where it is safe to currently
7274    unwind the whole stack.  Failed stack unwind would discard live dummy
7275    frames.  */
7276
7277 void
7278 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7279 {
7280   struct breakpoint *b, *b_tmp;
7281
7282   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7283     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7284       {
7285         struct breakpoint *dummy_b = b->related_breakpoint;
7286
7287         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7288           dummy_b = dummy_b->related_breakpoint;
7289         if (dummy_b->type != bp_call_dummy
7290             || frame_find_by_id (dummy_b->frame_id) != NULL)
7291           continue;
7292         
7293         dummy_frame_discard (dummy_b->frame_id, tp);
7294
7295         while (b->related_breakpoint != b)
7296           {
7297             if (b_tmp == b->related_breakpoint)
7298               b_tmp = b->related_breakpoint->next;
7299             delete_breakpoint (b->related_breakpoint);
7300           }
7301         delete_breakpoint (b);
7302       }
7303 }
7304
7305 void
7306 enable_overlay_breakpoints (void)
7307 {
7308   struct breakpoint *b;
7309
7310   ALL_BREAKPOINTS (b)
7311     if (b->type == bp_overlay_event)
7312     {
7313       b->enable_state = bp_enabled;
7314       update_global_location_list (UGLL_MAY_INSERT);
7315       overlay_events_enabled = 1;
7316     }
7317 }
7318
7319 void
7320 disable_overlay_breakpoints (void)
7321 {
7322   struct breakpoint *b;
7323
7324   ALL_BREAKPOINTS (b)
7325     if (b->type == bp_overlay_event)
7326     {
7327       b->enable_state = bp_disabled;
7328       update_global_location_list (UGLL_DONT_INSERT);
7329       overlay_events_enabled = 0;
7330     }
7331 }
7332
7333 /* Set an active std::terminate breakpoint for each std::terminate
7334    master breakpoint.  */
7335 void
7336 set_std_terminate_breakpoint (void)
7337 {
7338   struct breakpoint *b, *b_tmp;
7339
7340   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7341     if (b->pspace == current_program_space
7342         && b->type == bp_std_terminate_master)
7343       {
7344         momentary_breakpoint_from_master (b, bp_std_terminate,
7345                                           &momentary_breakpoint_ops, 1);
7346       }
7347 }
7348
7349 /* Delete all the std::terminate breakpoints.  */
7350 void
7351 delete_std_terminate_breakpoint (void)
7352 {
7353   struct breakpoint *b, *b_tmp;
7354
7355   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7356     if (b->type == bp_std_terminate)
7357       delete_breakpoint (b);
7358 }
7359
7360 struct breakpoint *
7361 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7362 {
7363   struct breakpoint *b;
7364
7365   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7366                                   &internal_breakpoint_ops);
7367
7368   b->enable_state = bp_enabled;
7369   /* location has to be used or breakpoint_re_set will delete me.  */
7370   b->location = new_address_location (b->loc->address, NULL, 0);
7371
7372   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7373
7374   return b;
7375 }
7376
7377 struct lang_and_radix
7378   {
7379     enum language lang;
7380     int radix;
7381   };
7382
7383 /* Create a breakpoint for JIT code registration and unregistration.  */
7384
7385 struct breakpoint *
7386 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7387 {
7388   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7389                                      &internal_breakpoint_ops);
7390 }
7391
7392 /* Remove JIT code registration and unregistration breakpoint(s).  */
7393
7394 void
7395 remove_jit_event_breakpoints (void)
7396 {
7397   struct breakpoint *b, *b_tmp;
7398
7399   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7400     if (b->type == bp_jit_event
7401         && b->loc->pspace == current_program_space)
7402       delete_breakpoint (b);
7403 }
7404
7405 void
7406 remove_solib_event_breakpoints (void)
7407 {
7408   struct breakpoint *b, *b_tmp;
7409
7410   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7411     if (b->type == bp_shlib_event
7412         && b->loc->pspace == current_program_space)
7413       delete_breakpoint (b);
7414 }
7415
7416 /* See breakpoint.h.  */
7417
7418 void
7419 remove_solib_event_breakpoints_at_next_stop (void)
7420 {
7421   struct breakpoint *b, *b_tmp;
7422
7423   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7424     if (b->type == bp_shlib_event
7425         && b->loc->pspace == current_program_space)
7426       b->disposition = disp_del_at_next_stop;
7427 }
7428
7429 /* Helper for create_solib_event_breakpoint /
7430    create_and_insert_solib_event_breakpoint.  Allows specifying which
7431    INSERT_MODE to pass through to update_global_location_list.  */
7432
7433 static struct breakpoint *
7434 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7435                                  enum ugll_insert_mode insert_mode)
7436 {
7437   struct breakpoint *b;
7438
7439   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7440                                   &internal_breakpoint_ops);
7441   update_global_location_list_nothrow (insert_mode);
7442   return b;
7443 }
7444
7445 struct breakpoint *
7446 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7447 {
7448   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7449 }
7450
7451 /* See breakpoint.h.  */
7452
7453 struct breakpoint *
7454 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7455 {
7456   struct breakpoint *b;
7457
7458   /* Explicitly tell update_global_location_list to insert
7459      locations.  */
7460   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7461   if (!b->loc->inserted)
7462     {
7463       delete_breakpoint (b);
7464       return NULL;
7465     }
7466   return b;
7467 }
7468
7469 /* Disable any breakpoints that are on code in shared libraries.  Only
7470    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7471
7472 void
7473 disable_breakpoints_in_shlibs (void)
7474 {
7475   struct bp_location *loc, **locp_tmp;
7476
7477   ALL_BP_LOCATIONS (loc, locp_tmp)
7478   {
7479     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7480     struct breakpoint *b = loc->owner;
7481
7482     /* We apply the check to all breakpoints, including disabled for
7483        those with loc->duplicate set.  This is so that when breakpoint
7484        becomes enabled, or the duplicate is removed, gdb will try to
7485        insert all breakpoints.  If we don't set shlib_disabled here,
7486        we'll try to insert those breakpoints and fail.  */
7487     if (((b->type == bp_breakpoint)
7488          || (b->type == bp_jit_event)
7489          || (b->type == bp_hardware_breakpoint)
7490          || (is_tracepoint (b)))
7491         && loc->pspace == current_program_space
7492         && !loc->shlib_disabled
7493         && solib_name_from_address (loc->pspace, loc->address)
7494         )
7495       {
7496         loc->shlib_disabled = 1;
7497       }
7498   }
7499 }
7500
7501 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7502    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7503    disabled ones can just stay disabled.  */
7504
7505 static void
7506 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7507 {
7508   struct bp_location *loc, **locp_tmp;
7509   int disabled_shlib_breaks = 0;
7510
7511   ALL_BP_LOCATIONS (loc, locp_tmp)
7512   {
7513     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7514     struct breakpoint *b = loc->owner;
7515
7516     if (solib->pspace == loc->pspace
7517         && !loc->shlib_disabled
7518         && (((b->type == bp_breakpoint
7519               || b->type == bp_jit_event
7520               || b->type == bp_hardware_breakpoint)
7521              && (loc->loc_type == bp_loc_hardware_breakpoint
7522                  || loc->loc_type == bp_loc_software_breakpoint))
7523             || is_tracepoint (b))
7524         && solib_contains_address_p (solib, loc->address))
7525       {
7526         loc->shlib_disabled = 1;
7527         /* At this point, we cannot rely on remove_breakpoint
7528            succeeding so we must mark the breakpoint as not inserted
7529            to prevent future errors occurring in remove_breakpoints.  */
7530         loc->inserted = 0;
7531
7532         /* This may cause duplicate notifications for the same breakpoint.  */
7533         gdb::observers::breakpoint_modified.notify (b);
7534
7535         if (!disabled_shlib_breaks)
7536           {
7537             target_terminal::ours_for_output ();
7538             warning (_("Temporarily disabling breakpoints "
7539                        "for unloaded shared library \"%s\""),
7540                      solib->so_name);
7541           }
7542         disabled_shlib_breaks = 1;
7543       }
7544   }
7545 }
7546
7547 /* Disable any breakpoints and tracepoints in OBJFILE upon
7548    notification of free_objfile.  Only apply to enabled breakpoints,
7549    disabled ones can just stay disabled.  */
7550
7551 static void
7552 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7553 {
7554   struct breakpoint *b;
7555
7556   if (objfile == NULL)
7557     return;
7558
7559   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7560      managed by the user with add-symbol-file/remove-symbol-file.
7561      Similarly to how breakpoints in shared libraries are handled in
7562      response to "nosharedlibrary", mark breakpoints in such modules
7563      shlib_disabled so they end up uninserted on the next global
7564      location list update.  Shared libraries not loaded by the user
7565      aren't handled here -- they're already handled in
7566      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7567      solib_unloaded observer.  We skip objfiles that are not
7568      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7569      main objfile).  */
7570   if ((objfile->flags & OBJF_SHARED) == 0
7571       || (objfile->flags & OBJF_USERLOADED) == 0)
7572     return;
7573
7574   ALL_BREAKPOINTS (b)
7575     {
7576       struct bp_location *loc;
7577       int bp_modified = 0;
7578
7579       if (!is_breakpoint (b) && !is_tracepoint (b))
7580         continue;
7581
7582       for (loc = b->loc; loc != NULL; loc = loc->next)
7583         {
7584           CORE_ADDR loc_addr = loc->address;
7585
7586           if (loc->loc_type != bp_loc_hardware_breakpoint
7587               && loc->loc_type != bp_loc_software_breakpoint)
7588             continue;
7589
7590           if (loc->shlib_disabled != 0)
7591             continue;
7592
7593           if (objfile->pspace != loc->pspace)
7594             continue;
7595
7596           if (loc->loc_type != bp_loc_hardware_breakpoint
7597               && loc->loc_type != bp_loc_software_breakpoint)
7598             continue;
7599
7600           if (is_addr_in_objfile (loc_addr, objfile))
7601             {
7602               loc->shlib_disabled = 1;
7603               /* At this point, we don't know whether the object was
7604                  unmapped from the inferior or not, so leave the
7605                  inserted flag alone.  We'll handle failure to
7606                  uninsert quietly, in case the object was indeed
7607                  unmapped.  */
7608
7609               mark_breakpoint_location_modified (loc);
7610
7611               bp_modified = 1;
7612             }
7613         }
7614
7615       if (bp_modified)
7616         gdb::observers::breakpoint_modified.notify (b);
7617     }
7618 }
7619
7620 /* FORK & VFORK catchpoints.  */
7621
7622 /* An instance of this type is used to represent a fork or vfork
7623    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7624    to CATCH_FORK_BREAKPOINT_OPS.  */
7625
7626 struct fork_catchpoint : public breakpoint
7627 {
7628   /* Process id of a child process whose forking triggered this
7629      catchpoint.  This field is only valid immediately after this
7630      catchpoint has triggered.  */
7631   ptid_t forked_inferior_pid;
7632 };
7633
7634 /* Implement the "insert" breakpoint_ops method for fork
7635    catchpoints.  */
7636
7637 static int
7638 insert_catch_fork (struct bp_location *bl)
7639 {
7640   return target_insert_fork_catchpoint (inferior_ptid.pid ());
7641 }
7642
7643 /* Implement the "remove" breakpoint_ops method for fork
7644    catchpoints.  */
7645
7646 static int
7647 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7648 {
7649   return target_remove_fork_catchpoint (inferior_ptid.pid ());
7650 }
7651
7652 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7653    catchpoints.  */
7654
7655 static int
7656 breakpoint_hit_catch_fork (const struct bp_location *bl,
7657                            const address_space *aspace, CORE_ADDR bp_addr,
7658                            const struct target_waitstatus *ws)
7659 {
7660   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7661
7662   if (ws->kind != TARGET_WAITKIND_FORKED)
7663     return 0;
7664
7665   c->forked_inferior_pid = ws->value.related_pid;
7666   return 1;
7667 }
7668
7669 /* Implement the "print_it" breakpoint_ops method for fork
7670    catchpoints.  */
7671
7672 static enum print_stop_action
7673 print_it_catch_fork (bpstat bs)
7674 {
7675   struct ui_out *uiout = current_uiout;
7676   struct breakpoint *b = bs->breakpoint_at;
7677   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7678
7679   annotate_catchpoint (b->number);
7680   maybe_print_thread_hit_breakpoint (uiout);
7681   if (b->disposition == disp_del)
7682     uiout->text ("Temporary catchpoint ");
7683   else
7684     uiout->text ("Catchpoint ");
7685   if (uiout->is_mi_like_p ())
7686     {
7687       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7688       uiout->field_string ("disp", bpdisp_text (b->disposition));
7689     }
7690   uiout->field_int ("bkptno", b->number);
7691   uiout->text (" (forked process ");
7692   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7693   uiout->text ("), ");
7694   return PRINT_SRC_AND_LOC;
7695 }
7696
7697 /* Implement the "print_one" breakpoint_ops method for fork
7698    catchpoints.  */
7699
7700 static void
7701 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7702 {
7703   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7704   struct value_print_options opts;
7705   struct ui_out *uiout = current_uiout;
7706
7707   get_user_print_options (&opts);
7708
7709   /* Field 4, the address, is omitted (which makes the columns not
7710      line up too nicely with the headers, but the effect is relatively
7711      readable).  */
7712   if (opts.addressprint)
7713     uiout->field_skip ("addr");
7714   annotate_field (5);
7715   uiout->text ("fork");
7716   if (c->forked_inferior_pid != null_ptid)
7717     {
7718       uiout->text (", process ");
7719       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7720       uiout->spaces (1);
7721     }
7722
7723   if (uiout->is_mi_like_p ())
7724     uiout->field_string ("catch-type", "fork");
7725 }
7726
7727 /* Implement the "print_mention" breakpoint_ops method for fork
7728    catchpoints.  */
7729
7730 static void
7731 print_mention_catch_fork (struct breakpoint *b)
7732 {
7733   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7734 }
7735
7736 /* Implement the "print_recreate" breakpoint_ops method for fork
7737    catchpoints.  */
7738
7739 static void
7740 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7741 {
7742   fprintf_unfiltered (fp, "catch fork");
7743   print_recreate_thread (b, fp);
7744 }
7745
7746 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7747
7748 static struct breakpoint_ops catch_fork_breakpoint_ops;
7749
7750 /* Implement the "insert" breakpoint_ops method for vfork
7751    catchpoints.  */
7752
7753 static int
7754 insert_catch_vfork (struct bp_location *bl)
7755 {
7756   return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7757 }
7758
7759 /* Implement the "remove" breakpoint_ops method for vfork
7760    catchpoints.  */
7761
7762 static int
7763 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7764 {
7765   return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7766 }
7767
7768 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7769    catchpoints.  */
7770
7771 static int
7772 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7773                             const address_space *aspace, CORE_ADDR bp_addr,
7774                             const struct target_waitstatus *ws)
7775 {
7776   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7777
7778   if (ws->kind != TARGET_WAITKIND_VFORKED)
7779     return 0;
7780
7781   c->forked_inferior_pid = ws->value.related_pid;
7782   return 1;
7783 }
7784
7785 /* Implement the "print_it" breakpoint_ops method for vfork
7786    catchpoints.  */
7787
7788 static enum print_stop_action
7789 print_it_catch_vfork (bpstat bs)
7790 {
7791   struct ui_out *uiout = current_uiout;
7792   struct breakpoint *b = bs->breakpoint_at;
7793   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7794
7795   annotate_catchpoint (b->number);
7796   maybe_print_thread_hit_breakpoint (uiout);
7797   if (b->disposition == disp_del)
7798     uiout->text ("Temporary catchpoint ");
7799   else
7800     uiout->text ("Catchpoint ");
7801   if (uiout->is_mi_like_p ())
7802     {
7803       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7804       uiout->field_string ("disp", bpdisp_text (b->disposition));
7805     }
7806   uiout->field_int ("bkptno", b->number);
7807   uiout->text (" (vforked process ");
7808   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7809   uiout->text ("), ");
7810   return PRINT_SRC_AND_LOC;
7811 }
7812
7813 /* Implement the "print_one" breakpoint_ops method for vfork
7814    catchpoints.  */
7815
7816 static void
7817 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7818 {
7819   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7820   struct value_print_options opts;
7821   struct ui_out *uiout = current_uiout;
7822
7823   get_user_print_options (&opts);
7824   /* Field 4, the address, is omitted (which makes the columns not
7825      line up too nicely with the headers, but the effect is relatively
7826      readable).  */
7827   if (opts.addressprint)
7828     uiout->field_skip ("addr");
7829   annotate_field (5);
7830   uiout->text ("vfork");
7831   if (c->forked_inferior_pid != null_ptid)
7832     {
7833       uiout->text (", process ");
7834       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7835       uiout->spaces (1);
7836     }
7837
7838   if (uiout->is_mi_like_p ())
7839     uiout->field_string ("catch-type", "vfork");
7840 }
7841
7842 /* Implement the "print_mention" breakpoint_ops method for vfork
7843    catchpoints.  */
7844
7845 static void
7846 print_mention_catch_vfork (struct breakpoint *b)
7847 {
7848   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7849 }
7850
7851 /* Implement the "print_recreate" breakpoint_ops method for vfork
7852    catchpoints.  */
7853
7854 static void
7855 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7856 {
7857   fprintf_unfiltered (fp, "catch vfork");
7858   print_recreate_thread (b, fp);
7859 }
7860
7861 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7862
7863 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7864
7865 /* An instance of this type is used to represent an solib catchpoint.
7866    A breakpoint is really of this type iff its ops pointer points to
7867    CATCH_SOLIB_BREAKPOINT_OPS.  */
7868
7869 struct solib_catchpoint : public breakpoint
7870 {
7871   ~solib_catchpoint () override;
7872
7873   /* True for "catch load", false for "catch unload".  */
7874   unsigned char is_load;
7875
7876   /* Regular expression to match, if any.  COMPILED is only valid when
7877      REGEX is non-NULL.  */
7878   char *regex;
7879   std::unique_ptr<compiled_regex> compiled;
7880 };
7881
7882 solib_catchpoint::~solib_catchpoint ()
7883 {
7884   xfree (this->regex);
7885 }
7886
7887 static int
7888 insert_catch_solib (struct bp_location *ignore)
7889 {
7890   return 0;
7891 }
7892
7893 static int
7894 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7895 {
7896   return 0;
7897 }
7898
7899 static int
7900 breakpoint_hit_catch_solib (const struct bp_location *bl,
7901                             const address_space *aspace,
7902                             CORE_ADDR bp_addr,
7903                             const struct target_waitstatus *ws)
7904 {
7905   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7906   struct breakpoint *other;
7907
7908   if (ws->kind == TARGET_WAITKIND_LOADED)
7909     return 1;
7910
7911   ALL_BREAKPOINTS (other)
7912   {
7913     struct bp_location *other_bl;
7914
7915     if (other == bl->owner)
7916       continue;
7917
7918     if (other->type != bp_shlib_event)
7919       continue;
7920
7921     if (self->pspace != NULL && other->pspace != self->pspace)
7922       continue;
7923
7924     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7925       {
7926         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7927           return 1;
7928       }
7929   }
7930
7931   return 0;
7932 }
7933
7934 static void
7935 check_status_catch_solib (struct bpstats *bs)
7936 {
7937   struct solib_catchpoint *self
7938     = (struct solib_catchpoint *) bs->breakpoint_at;
7939
7940   if (self->is_load)
7941     {
7942       for (so_list *iter : current_program_space->added_solibs)
7943         {
7944           if (!self->regex
7945               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7946             return;
7947         }
7948     }
7949   else
7950     {
7951       for (const std::string &iter : current_program_space->deleted_solibs)
7952         {
7953           if (!self->regex
7954               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7955             return;
7956         }
7957     }
7958
7959   bs->stop = 0;
7960   bs->print_it = print_it_noop;
7961 }
7962
7963 static enum print_stop_action
7964 print_it_catch_solib (bpstat bs)
7965 {
7966   struct breakpoint *b = bs->breakpoint_at;
7967   struct ui_out *uiout = current_uiout;
7968
7969   annotate_catchpoint (b->number);
7970   maybe_print_thread_hit_breakpoint (uiout);
7971   if (b->disposition == disp_del)
7972     uiout->text ("Temporary catchpoint ");
7973   else
7974     uiout->text ("Catchpoint ");
7975   uiout->field_int ("bkptno", b->number);
7976   uiout->text ("\n");
7977   if (uiout->is_mi_like_p ())
7978     uiout->field_string ("disp", bpdisp_text (b->disposition));
7979   print_solib_event (1);
7980   return PRINT_SRC_AND_LOC;
7981 }
7982
7983 static void
7984 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7985 {
7986   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7987   struct value_print_options opts;
7988   struct ui_out *uiout = current_uiout;
7989
7990   get_user_print_options (&opts);
7991   /* Field 4, the address, is omitted (which makes the columns not
7992      line up too nicely with the headers, but the effect is relatively
7993      readable).  */
7994   if (opts.addressprint)
7995     {
7996       annotate_field (4);
7997       uiout->field_skip ("addr");
7998     }
7999
8000   std::string msg;
8001   annotate_field (5);
8002   if (self->is_load)
8003     {
8004       if (self->regex)
8005         msg = string_printf (_("load of library matching %s"), self->regex);
8006       else
8007         msg = _("load of library");
8008     }
8009   else
8010     {
8011       if (self->regex)
8012         msg = string_printf (_("unload of library matching %s"), self->regex);
8013       else
8014         msg = _("unload of library");
8015     }
8016   uiout->field_string ("what", msg);
8017
8018   if (uiout->is_mi_like_p ())
8019     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8020 }
8021
8022 static void
8023 print_mention_catch_solib (struct breakpoint *b)
8024 {
8025   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8026
8027   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8028                    self->is_load ? "load" : "unload");
8029 }
8030
8031 static void
8032 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8033 {
8034   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8035
8036   fprintf_unfiltered (fp, "%s %s",
8037                       b->disposition == disp_del ? "tcatch" : "catch",
8038                       self->is_load ? "load" : "unload");
8039   if (self->regex)
8040     fprintf_unfiltered (fp, " %s", self->regex);
8041   fprintf_unfiltered (fp, "\n");
8042 }
8043
8044 static struct breakpoint_ops catch_solib_breakpoint_ops;
8045
8046 /* Shared helper function (MI and CLI) for creating and installing
8047    a shared object event catchpoint.  If IS_LOAD is non-zero then
8048    the events to be caught are load events, otherwise they are
8049    unload events.  If IS_TEMP is non-zero the catchpoint is a
8050    temporary one.  If ENABLED is non-zero the catchpoint is
8051    created in an enabled state.  */
8052
8053 void
8054 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8055 {
8056   struct gdbarch *gdbarch = get_current_arch ();
8057
8058   if (!arg)
8059     arg = "";
8060   arg = skip_spaces (arg);
8061
8062   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8063
8064   if (*arg != '\0')
8065     {
8066       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8067                                              _("Invalid regexp")));
8068       c->regex = xstrdup (arg);
8069     }
8070
8071   c->is_load = is_load;
8072   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8073                    &catch_solib_breakpoint_ops);
8074
8075   c->enable_state = enabled ? bp_enabled : bp_disabled;
8076
8077   install_breakpoint (0, std::move (c), 1);
8078 }
8079
8080 /* A helper function that does all the work for "catch load" and
8081    "catch unload".  */
8082
8083 static void
8084 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8085                       struct cmd_list_element *command)
8086 {
8087   int tempflag;
8088   const int enabled = 1;
8089
8090   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8091
8092   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8093 }
8094
8095 static void
8096 catch_load_command_1 (const char *arg, int from_tty,
8097                       struct cmd_list_element *command)
8098 {
8099   catch_load_or_unload (arg, from_tty, 1, command);
8100 }
8101
8102 static void
8103 catch_unload_command_1 (const char *arg, int from_tty,
8104                         struct cmd_list_element *command)
8105 {
8106   catch_load_or_unload (arg, from_tty, 0, command);
8107 }
8108
8109 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8110    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8111    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8112    the breakpoint_ops structure associated to the catchpoint.  */
8113
8114 void
8115 init_catchpoint (struct breakpoint *b,
8116                  struct gdbarch *gdbarch, int tempflag,
8117                  const char *cond_string,
8118                  const struct breakpoint_ops *ops)
8119 {
8120   symtab_and_line sal;
8121   sal.pspace = current_program_space;
8122
8123   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8124
8125   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8126   b->disposition = tempflag ? disp_del : disp_donttouch;
8127 }
8128
8129 void
8130 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8131 {
8132   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8133   set_breakpoint_number (internal, b);
8134   if (is_tracepoint (b))
8135     set_tracepoint_count (breakpoint_count);
8136   if (!internal)
8137     mention (b);
8138   gdb::observers::breakpoint_created.notify (b);
8139
8140   if (update_gll)
8141     update_global_location_list (UGLL_MAY_INSERT);
8142 }
8143
8144 static void
8145 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8146                                     int tempflag, const char *cond_string,
8147                                     const struct breakpoint_ops *ops)
8148 {
8149   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8150
8151   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8152
8153   c->forked_inferior_pid = null_ptid;
8154
8155   install_breakpoint (0, std::move (c), 1);
8156 }
8157
8158 /* Exec catchpoints.  */
8159
8160 /* An instance of this type is used to represent an exec catchpoint.
8161    A breakpoint is really of this type iff its ops pointer points to
8162    CATCH_EXEC_BREAKPOINT_OPS.  */
8163
8164 struct exec_catchpoint : public breakpoint
8165 {
8166   ~exec_catchpoint () override;
8167
8168   /* Filename of a program whose exec triggered this catchpoint.
8169      This field is only valid immediately after this catchpoint has
8170      triggered.  */
8171   char *exec_pathname;
8172 };
8173
8174 /* Exec catchpoint destructor.  */
8175
8176 exec_catchpoint::~exec_catchpoint ()
8177 {
8178   xfree (this->exec_pathname);
8179 }
8180
8181 static int
8182 insert_catch_exec (struct bp_location *bl)
8183 {
8184   return target_insert_exec_catchpoint (inferior_ptid.pid ());
8185 }
8186
8187 static int
8188 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8189 {
8190   return target_remove_exec_catchpoint (inferior_ptid.pid ());
8191 }
8192
8193 static int
8194 breakpoint_hit_catch_exec (const struct bp_location *bl,
8195                            const address_space *aspace, CORE_ADDR bp_addr,
8196                            const struct target_waitstatus *ws)
8197 {
8198   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8199
8200   if (ws->kind != TARGET_WAITKIND_EXECD)
8201     return 0;
8202
8203   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8204   return 1;
8205 }
8206
8207 static enum print_stop_action
8208 print_it_catch_exec (bpstat bs)
8209 {
8210   struct ui_out *uiout = current_uiout;
8211   struct breakpoint *b = bs->breakpoint_at;
8212   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8213
8214   annotate_catchpoint (b->number);
8215   maybe_print_thread_hit_breakpoint (uiout);
8216   if (b->disposition == disp_del)
8217     uiout->text ("Temporary catchpoint ");
8218   else
8219     uiout->text ("Catchpoint ");
8220   if (uiout->is_mi_like_p ())
8221     {
8222       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8223       uiout->field_string ("disp", bpdisp_text (b->disposition));
8224     }
8225   uiout->field_int ("bkptno", b->number);
8226   uiout->text (" (exec'd ");
8227   uiout->field_string ("new-exec", c->exec_pathname);
8228   uiout->text ("), ");
8229
8230   return PRINT_SRC_AND_LOC;
8231 }
8232
8233 static void
8234 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8235 {
8236   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8237   struct value_print_options opts;
8238   struct ui_out *uiout = current_uiout;
8239
8240   get_user_print_options (&opts);
8241
8242   /* Field 4, the address, is omitted (which makes the columns
8243      not line up too nicely with the headers, but the effect
8244      is relatively readable).  */
8245   if (opts.addressprint)
8246     uiout->field_skip ("addr");
8247   annotate_field (5);
8248   uiout->text ("exec");
8249   if (c->exec_pathname != NULL)
8250     {
8251       uiout->text (", program \"");
8252       uiout->field_string ("what", c->exec_pathname);
8253       uiout->text ("\" ");
8254     }
8255
8256   if (uiout->is_mi_like_p ())
8257     uiout->field_string ("catch-type", "exec");
8258 }
8259
8260 static void
8261 print_mention_catch_exec (struct breakpoint *b)
8262 {
8263   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8264 }
8265
8266 /* Implement the "print_recreate" breakpoint_ops method for exec
8267    catchpoints.  */
8268
8269 static void
8270 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8271 {
8272   fprintf_unfiltered (fp, "catch exec");
8273   print_recreate_thread (b, fp);
8274 }
8275
8276 static struct breakpoint_ops catch_exec_breakpoint_ops;
8277
8278 static int
8279 hw_breakpoint_used_count (void)
8280 {
8281   int i = 0;
8282   struct breakpoint *b;
8283   struct bp_location *bl;
8284
8285   ALL_BREAKPOINTS (b)
8286   {
8287     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8288       for (bl = b->loc; bl; bl = bl->next)
8289         {
8290           /* Special types of hardware breakpoints may use more than
8291              one register.  */
8292           i += b->ops->resources_needed (bl);
8293         }
8294   }
8295
8296   return i;
8297 }
8298
8299 /* Returns the resources B would use if it were a hardware
8300    watchpoint.  */
8301
8302 static int
8303 hw_watchpoint_use_count (struct breakpoint *b)
8304 {
8305   int i = 0;
8306   struct bp_location *bl;
8307
8308   if (!breakpoint_enabled (b))
8309     return 0;
8310
8311   for (bl = b->loc; bl; bl = bl->next)
8312     {
8313       /* Special types of hardware watchpoints may use more than
8314          one register.  */
8315       i += b->ops->resources_needed (bl);
8316     }
8317
8318   return i;
8319 }
8320
8321 /* Returns the sum the used resources of all hardware watchpoints of
8322    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8323    the sum of the used resources of all hardware watchpoints of other
8324    types _not_ TYPE.  */
8325
8326 static int
8327 hw_watchpoint_used_count_others (struct breakpoint *except,
8328                                  enum bptype type, int *other_type_used)
8329 {
8330   int i = 0;
8331   struct breakpoint *b;
8332
8333   *other_type_used = 0;
8334   ALL_BREAKPOINTS (b)
8335     {
8336       if (b == except)
8337         continue;
8338       if (!breakpoint_enabled (b))
8339         continue;
8340
8341       if (b->type == type)
8342         i += hw_watchpoint_use_count (b);
8343       else if (is_hardware_watchpoint (b))
8344         *other_type_used = 1;
8345     }
8346
8347   return i;
8348 }
8349
8350 void
8351 disable_watchpoints_before_interactive_call_start (void)
8352 {
8353   struct breakpoint *b;
8354
8355   ALL_BREAKPOINTS (b)
8356   {
8357     if (is_watchpoint (b) && breakpoint_enabled (b))
8358       {
8359         b->enable_state = bp_call_disabled;
8360         update_global_location_list (UGLL_DONT_INSERT);
8361       }
8362   }
8363 }
8364
8365 void
8366 enable_watchpoints_after_interactive_call_stop (void)
8367 {
8368   struct breakpoint *b;
8369
8370   ALL_BREAKPOINTS (b)
8371   {
8372     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8373       {
8374         b->enable_state = bp_enabled;
8375         update_global_location_list (UGLL_MAY_INSERT);
8376       }
8377   }
8378 }
8379
8380 void
8381 disable_breakpoints_before_startup (void)
8382 {
8383   current_program_space->executing_startup = 1;
8384   update_global_location_list (UGLL_DONT_INSERT);
8385 }
8386
8387 void
8388 enable_breakpoints_after_startup (void)
8389 {
8390   current_program_space->executing_startup = 0;
8391   breakpoint_re_set ();
8392 }
8393
8394 /* Create a new single-step breakpoint for thread THREAD, with no
8395    locations.  */
8396
8397 static struct breakpoint *
8398 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8399 {
8400   std::unique_ptr<breakpoint> b (new breakpoint ());
8401
8402   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8403                                         &momentary_breakpoint_ops);
8404
8405   b->disposition = disp_donttouch;
8406   b->frame_id = null_frame_id;
8407
8408   b->thread = thread;
8409   gdb_assert (b->thread != 0);
8410
8411   return add_to_breakpoint_chain (std::move (b));
8412 }
8413
8414 /* Set a momentary breakpoint of type TYPE at address specified by
8415    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8416    frame.  */
8417
8418 breakpoint_up
8419 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8420                           struct frame_id frame_id, enum bptype type)
8421 {
8422   struct breakpoint *b;
8423
8424   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8425      tail-called one.  */
8426   gdb_assert (!frame_id_artificial_p (frame_id));
8427
8428   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8429   b->enable_state = bp_enabled;
8430   b->disposition = disp_donttouch;
8431   b->frame_id = frame_id;
8432
8433   b->thread = inferior_thread ()->global_num;
8434
8435   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8436
8437   return breakpoint_up (b);
8438 }
8439
8440 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8441    The new breakpoint will have type TYPE, use OPS as its
8442    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8443
8444 static struct breakpoint *
8445 momentary_breakpoint_from_master (struct breakpoint *orig,
8446                                   enum bptype type,
8447                                   const struct breakpoint_ops *ops,
8448                                   int loc_enabled)
8449 {
8450   struct breakpoint *copy;
8451
8452   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8453   copy->loc = allocate_bp_location (copy);
8454   set_breakpoint_location_function (copy->loc);
8455
8456   copy->loc->gdbarch = orig->loc->gdbarch;
8457   copy->loc->requested_address = orig->loc->requested_address;
8458   copy->loc->address = orig->loc->address;
8459   copy->loc->section = orig->loc->section;
8460   copy->loc->pspace = orig->loc->pspace;
8461   copy->loc->probe = orig->loc->probe;
8462   copy->loc->line_number = orig->loc->line_number;
8463   copy->loc->symtab = orig->loc->symtab;
8464   copy->loc->enabled = loc_enabled;
8465   copy->frame_id = orig->frame_id;
8466   copy->thread = orig->thread;
8467   copy->pspace = orig->pspace;
8468
8469   copy->enable_state = bp_enabled;
8470   copy->disposition = disp_donttouch;
8471   copy->number = internal_breakpoint_number--;
8472
8473   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8474   return copy;
8475 }
8476
8477 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8478    ORIG is NULL.  */
8479
8480 struct breakpoint *
8481 clone_momentary_breakpoint (struct breakpoint *orig)
8482 {
8483   /* If there's nothing to clone, then return nothing.  */
8484   if (orig == NULL)
8485     return NULL;
8486
8487   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8488 }
8489
8490 breakpoint_up
8491 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8492                                 enum bptype type)
8493 {
8494   struct symtab_and_line sal;
8495
8496   sal = find_pc_line (pc, 0);
8497   sal.pc = pc;
8498   sal.section = find_pc_overlay (pc);
8499   sal.explicit_pc = 1;
8500
8501   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8502 }
8503 \f
8504
8505 /* Tell the user we have just set a breakpoint B.  */
8506
8507 static void
8508 mention (struct breakpoint *b)
8509 {
8510   b->ops->print_mention (b);
8511   current_uiout->text ("\n");
8512 }
8513 \f
8514
8515 static int bp_loc_is_permanent (struct bp_location *loc);
8516
8517 static struct bp_location *
8518 add_location_to_breakpoint (struct breakpoint *b,
8519                             const struct symtab_and_line *sal)
8520 {
8521   struct bp_location *loc, **tmp;
8522   CORE_ADDR adjusted_address;
8523   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8524
8525   if (loc_gdbarch == NULL)
8526     loc_gdbarch = b->gdbarch;
8527
8528   /* Adjust the breakpoint's address prior to allocating a location.
8529      Once we call allocate_bp_location(), that mostly uninitialized
8530      location will be placed on the location chain.  Adjustment of the
8531      breakpoint may cause target_read_memory() to be called and we do
8532      not want its scan of the location chain to find a breakpoint and
8533      location that's only been partially initialized.  */
8534   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8535                                                 sal->pc, b->type);
8536
8537   /* Sort the locations by their ADDRESS.  */
8538   loc = allocate_bp_location (b);
8539   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8540        tmp = &((*tmp)->next))
8541     ;
8542   loc->next = *tmp;
8543   *tmp = loc;
8544
8545   loc->requested_address = sal->pc;
8546   loc->address = adjusted_address;
8547   loc->pspace = sal->pspace;
8548   loc->probe.prob = sal->prob;
8549   loc->probe.objfile = sal->objfile;
8550   gdb_assert (loc->pspace != NULL);
8551   loc->section = sal->section;
8552   loc->gdbarch = loc_gdbarch;
8553   loc->line_number = sal->line;
8554   loc->symtab = sal->symtab;
8555   loc->symbol = sal->symbol;
8556   loc->msymbol = sal->msymbol;
8557   loc->objfile = sal->objfile;
8558
8559   set_breakpoint_location_function (loc);
8560
8561   /* While by definition, permanent breakpoints are already present in the
8562      code, we don't mark the location as inserted.  Normally one would expect
8563      that GDB could rely on that breakpoint instruction to stop the program,
8564      thus removing the need to insert its own breakpoint, except that executing
8565      the breakpoint instruction can kill the target instead of reporting a
8566      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8567      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8568      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8569      breakpoint be inserted normally results in QEMU knowing about the GDB
8570      breakpoint, and thus trap before the breakpoint instruction is executed.
8571      (If GDB later needs to continue execution past the permanent breakpoint,
8572      it manually increments the PC, thus avoiding executing the breakpoint
8573      instruction.)  */
8574   if (bp_loc_is_permanent (loc))
8575     loc->permanent = 1;
8576
8577   return loc;
8578 }
8579 \f
8580
8581 /* See breakpoint.h.  */
8582
8583 int
8584 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8585 {
8586   int len;
8587   CORE_ADDR addr;
8588   const gdb_byte *bpoint;
8589   gdb_byte *target_mem;
8590
8591   addr = address;
8592   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8593
8594   /* Software breakpoints unsupported?  */
8595   if (bpoint == NULL)
8596     return 0;
8597
8598   target_mem = (gdb_byte *) alloca (len);
8599
8600   /* Enable the automatic memory restoration from breakpoints while
8601      we read the memory.  Otherwise we could say about our temporary
8602      breakpoints they are permanent.  */
8603   scoped_restore restore_memory
8604     = make_scoped_restore_show_memory_breakpoints (0);
8605
8606   if (target_read_memory (address, target_mem, len) == 0
8607       && memcmp (target_mem, bpoint, len) == 0)
8608     return 1;
8609
8610   return 0;
8611 }
8612
8613 /* Return 1 if LOC is pointing to a permanent breakpoint,
8614    return 0 otherwise.  */
8615
8616 static int
8617 bp_loc_is_permanent (struct bp_location *loc)
8618 {
8619   gdb_assert (loc != NULL);
8620
8621   /* If we have a non-breakpoint-backed catchpoint or a software
8622      watchpoint, just return 0.  We should not attempt to read from
8623      the addresses the locations of these breakpoint types point to.
8624      program_breakpoint_here_p, below, will attempt to read
8625      memory.  */
8626   if (!bl_address_is_meaningful (loc))
8627     return 0;
8628
8629   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8630   switch_to_program_space_and_thread (loc->pspace);
8631   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8632 }
8633
8634 /* Build a command list for the dprintf corresponding to the current
8635    settings of the dprintf style options.  */
8636
8637 static void
8638 update_dprintf_command_list (struct breakpoint *b)
8639 {
8640   char *dprintf_args = b->extra_string;
8641   char *printf_line = NULL;
8642
8643   if (!dprintf_args)
8644     return;
8645
8646   dprintf_args = skip_spaces (dprintf_args);
8647
8648   /* Allow a comma, as it may have terminated a location, but don't
8649      insist on it.  */
8650   if (*dprintf_args == ',')
8651     ++dprintf_args;
8652   dprintf_args = skip_spaces (dprintf_args);
8653
8654   if (*dprintf_args != '"')
8655     error (_("Bad format string, missing '\"'."));
8656
8657   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8658     printf_line = xstrprintf ("printf %s", dprintf_args);
8659   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8660     {
8661       if (!dprintf_function)
8662         error (_("No function supplied for dprintf call"));
8663
8664       if (dprintf_channel && strlen (dprintf_channel) > 0)
8665         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8666                                   dprintf_function,
8667                                   dprintf_channel,
8668                                   dprintf_args);
8669       else
8670         printf_line = xstrprintf ("call (void) %s (%s)",
8671                                   dprintf_function,
8672                                   dprintf_args);
8673     }
8674   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8675     {
8676       if (target_can_run_breakpoint_commands ())
8677         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8678       else
8679         {
8680           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8681           printf_line = xstrprintf ("printf %s", dprintf_args);
8682         }
8683     }
8684   else
8685     internal_error (__FILE__, __LINE__,
8686                     _("Invalid dprintf style."));
8687
8688   gdb_assert (printf_line != NULL);
8689
8690   /* Manufacture a printf sequence.  */
8691   struct command_line *printf_cmd_line
8692     = new struct command_line (simple_control, printf_line);
8693   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8694                                                     command_lines_deleter ()));
8695 }
8696
8697 /* Update all dprintf commands, making their command lists reflect
8698    current style settings.  */
8699
8700 static void
8701 update_dprintf_commands (const char *args, int from_tty,
8702                          struct cmd_list_element *c)
8703 {
8704   struct breakpoint *b;
8705
8706   ALL_BREAKPOINTS (b)
8707     {
8708       if (b->type == bp_dprintf)
8709         update_dprintf_command_list (b);
8710     }
8711 }
8712
8713 /* Create a breakpoint with SAL as location.  Use LOCATION
8714    as a description of the location, and COND_STRING
8715    as condition expression.  If LOCATION is NULL then create an
8716    "address location" from the address in the SAL.  */
8717
8718 static void
8719 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8720                      gdb::array_view<const symtab_and_line> sals,
8721                      event_location_up &&location,
8722                      gdb::unique_xmalloc_ptr<char> filter,
8723                      gdb::unique_xmalloc_ptr<char> cond_string,
8724                      gdb::unique_xmalloc_ptr<char> extra_string,
8725                      enum bptype type, enum bpdisp disposition,
8726                      int thread, int task, int ignore_count,
8727                      const struct breakpoint_ops *ops, int from_tty,
8728                      int enabled, int internal, unsigned flags,
8729                      int display_canonical)
8730 {
8731   int i;
8732
8733   if (type == bp_hardware_breakpoint)
8734     {
8735       int target_resources_ok;
8736
8737       i = hw_breakpoint_used_count ();
8738       target_resources_ok =
8739         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8740                                             i + 1, 0);
8741       if (target_resources_ok == 0)
8742         error (_("No hardware breakpoint support in the target."));
8743       else if (target_resources_ok < 0)
8744         error (_("Hardware breakpoints used exceeds limit."));
8745     }
8746
8747   gdb_assert (!sals.empty ());
8748
8749   for (const auto &sal : sals)
8750     {
8751       struct bp_location *loc;
8752
8753       if (from_tty)
8754         {
8755           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8756           if (!loc_gdbarch)
8757             loc_gdbarch = gdbarch;
8758
8759           describe_other_breakpoints (loc_gdbarch,
8760                                       sal.pspace, sal.pc, sal.section, thread);
8761         }
8762
8763       if (&sal == &sals[0])
8764         {
8765           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8766           b->thread = thread;
8767           b->task = task;
8768
8769           b->cond_string = cond_string.release ();
8770           b->extra_string = extra_string.release ();
8771           b->ignore_count = ignore_count;
8772           b->enable_state = enabled ? bp_enabled : bp_disabled;
8773           b->disposition = disposition;
8774
8775           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8776             b->loc->inserted = 1;
8777
8778           if (type == bp_static_tracepoint)
8779             {
8780               struct tracepoint *t = (struct tracepoint *) b;
8781               struct static_tracepoint_marker marker;
8782
8783               if (strace_marker_p (b))
8784                 {
8785                   /* We already know the marker exists, otherwise, we
8786                      wouldn't see a sal for it.  */
8787                   const char *p
8788                     = &event_location_to_string (b->location.get ())[3];
8789                   const char *endp;
8790
8791                   p = skip_spaces (p);
8792
8793                   endp = skip_to_space (p);
8794
8795                   t->static_trace_marker_id.assign (p, endp - p);
8796
8797                   printf_filtered (_("Probed static tracepoint "
8798                                      "marker \"%s\"\n"),
8799                                    t->static_trace_marker_id.c_str ());
8800                 }
8801               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8802                 {
8803                   t->static_trace_marker_id = std::move (marker.str_id);
8804
8805                   printf_filtered (_("Probed static tracepoint "
8806                                      "marker \"%s\"\n"),
8807                                    t->static_trace_marker_id.c_str ());
8808                 }
8809               else
8810                 warning (_("Couldn't determine the static "
8811                            "tracepoint marker to probe"));
8812             }
8813
8814           loc = b->loc;
8815         }
8816       else
8817         {
8818           loc = add_location_to_breakpoint (b, &sal);
8819           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8820             loc->inserted = 1;
8821         }
8822
8823       if (b->cond_string)
8824         {
8825           const char *arg = b->cond_string;
8826
8827           loc->cond = parse_exp_1 (&arg, loc->address,
8828                                    block_for_pc (loc->address), 0);
8829           if (*arg)
8830               error (_("Garbage '%s' follows condition"), arg);
8831         }
8832
8833       /* Dynamic printf requires and uses additional arguments on the
8834          command line, otherwise it's an error.  */
8835       if (type == bp_dprintf)
8836         {
8837           if (b->extra_string)
8838             update_dprintf_command_list (b);
8839           else
8840             error (_("Format string required"));
8841         }
8842       else if (b->extra_string)
8843         error (_("Garbage '%s' at end of command"), b->extra_string);
8844     }
8845
8846   b->display_canonical = display_canonical;
8847   if (location != NULL)
8848     b->location = std::move (location);
8849   else
8850     b->location = new_address_location (b->loc->address, NULL, 0);
8851   b->filter = filter.release ();
8852 }
8853
8854 static void
8855 create_breakpoint_sal (struct gdbarch *gdbarch,
8856                        gdb::array_view<const symtab_and_line> sals,
8857                        event_location_up &&location,
8858                        gdb::unique_xmalloc_ptr<char> filter,
8859                        gdb::unique_xmalloc_ptr<char> cond_string,
8860                        gdb::unique_xmalloc_ptr<char> extra_string,
8861                        enum bptype type, enum bpdisp disposition,
8862                        int thread, int task, int ignore_count,
8863                        const struct breakpoint_ops *ops, int from_tty,
8864                        int enabled, int internal, unsigned flags,
8865                        int display_canonical)
8866 {
8867   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8868
8869   init_breakpoint_sal (b.get (), gdbarch,
8870                        sals, std::move (location),
8871                        std::move (filter),
8872                        std::move (cond_string),
8873                        std::move (extra_string),
8874                        type, disposition,
8875                        thread, task, ignore_count,
8876                        ops, from_tty,
8877                        enabled, internal, flags,
8878                        display_canonical);
8879
8880   install_breakpoint (internal, std::move (b), 0);
8881 }
8882
8883 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8884    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8885    value.  COND_STRING, if not NULL, specified the condition to be
8886    used for all breakpoints.  Essentially the only case where
8887    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8888    function.  In that case, it's still not possible to specify
8889    separate conditions for different overloaded functions, so
8890    we take just a single condition string.
8891    
8892    NOTE: If the function succeeds, the caller is expected to cleanup
8893    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8894    array contents).  If the function fails (error() is called), the
8895    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8896    COND and SALS arrays and each of those arrays contents.  */
8897
8898 static void
8899 create_breakpoints_sal (struct gdbarch *gdbarch,
8900                         struct linespec_result *canonical,
8901                         gdb::unique_xmalloc_ptr<char> cond_string,
8902                         gdb::unique_xmalloc_ptr<char> extra_string,
8903                         enum bptype type, enum bpdisp disposition,
8904                         int thread, int task, int ignore_count,
8905                         const struct breakpoint_ops *ops, int from_tty,
8906                         int enabled, int internal, unsigned flags)
8907 {
8908   if (canonical->pre_expanded)
8909     gdb_assert (canonical->lsals.size () == 1);
8910
8911   for (const auto &lsal : canonical->lsals)
8912     {
8913       /* Note that 'location' can be NULL in the case of a plain
8914          'break', without arguments.  */
8915       event_location_up location
8916         = (canonical->location != NULL
8917            ? copy_event_location (canonical->location.get ()) : NULL);
8918       gdb::unique_xmalloc_ptr<char> filter_string
8919         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8920
8921       create_breakpoint_sal (gdbarch, lsal.sals,
8922                              std::move (location),
8923                              std::move (filter_string),
8924                              std::move (cond_string),
8925                              std::move (extra_string),
8926                              type, disposition,
8927                              thread, task, ignore_count, ops,
8928                              from_tty, enabled, internal, flags,
8929                              canonical->special_display);
8930     }
8931 }
8932
8933 /* Parse LOCATION which is assumed to be a SAL specification possibly
8934    followed by conditionals.  On return, SALS contains an array of SAL
8935    addresses found.  LOCATION points to the end of the SAL (for
8936    linespec locations).
8937
8938    The array and the line spec strings are allocated on the heap, it is
8939    the caller's responsibility to free them.  */
8940
8941 static void
8942 parse_breakpoint_sals (const struct event_location *location,
8943                        struct linespec_result *canonical)
8944 {
8945   struct symtab_and_line cursal;
8946
8947   if (event_location_type (location) == LINESPEC_LOCATION)
8948     {
8949       const char *spec = get_linespec_location (location)->spec_string;
8950
8951       if (spec == NULL)
8952         {
8953           /* The last displayed codepoint, if it's valid, is our default
8954              breakpoint address.  */
8955           if (last_displayed_sal_is_valid ())
8956             {
8957               /* Set sal's pspace, pc, symtab, and line to the values
8958                  corresponding to the last call to print_frame_info.
8959                  Be sure to reinitialize LINE with NOTCURRENT == 0
8960                  as the breakpoint line number is inappropriate otherwise.
8961                  find_pc_line would adjust PC, re-set it back.  */
8962               symtab_and_line sal = get_last_displayed_sal ();
8963               CORE_ADDR pc = sal.pc;
8964
8965               sal = find_pc_line (pc, 0);
8966
8967               /* "break" without arguments is equivalent to "break *PC"
8968                  where PC is the last displayed codepoint's address.  So
8969                  make sure to set sal.explicit_pc to prevent GDB from
8970                  trying to expand the list of sals to include all other
8971                  instances with the same symtab and line.  */
8972               sal.pc = pc;
8973               sal.explicit_pc = 1;
8974
8975               struct linespec_sals lsal;
8976               lsal.sals = {sal};
8977               lsal.canonical = NULL;
8978
8979               canonical->lsals.push_back (std::move (lsal));
8980               return;
8981             }
8982           else
8983             error (_("No default breakpoint address now."));
8984         }
8985     }
8986
8987   /* Force almost all breakpoints to be in terms of the
8988      current_source_symtab (which is decode_line_1's default).
8989      This should produce the results we want almost all of the
8990      time while leaving default_breakpoint_* alone.
8991
8992      ObjC: However, don't match an Objective-C method name which
8993      may have a '+' or '-' succeeded by a '['.  */
8994   cursal = get_current_source_symtab_and_line ();
8995   if (last_displayed_sal_is_valid ())
8996     {
8997       const char *spec = NULL;
8998
8999       if (event_location_type (location) == LINESPEC_LOCATION)
9000         spec = get_linespec_location (location)->spec_string;
9001
9002       if (!cursal.symtab
9003           || (spec != NULL
9004               && strchr ("+-", spec[0]) != NULL
9005               && spec[1] != '['))
9006         {
9007           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9008                             get_last_displayed_symtab (),
9009                             get_last_displayed_line (),
9010                             canonical, NULL, NULL);
9011           return;
9012         }
9013     }
9014
9015   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9016                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9017 }
9018
9019
9020 /* Convert each SAL into a real PC.  Verify that the PC can be
9021    inserted as a breakpoint.  If it can't throw an error.  */
9022
9023 static void
9024 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9025 {    
9026   for (auto &sal : sals)
9027     resolve_sal_pc (&sal);
9028 }
9029
9030 /* Fast tracepoints may have restrictions on valid locations.  For
9031    instance, a fast tracepoint using a jump instead of a trap will
9032    likely have to overwrite more bytes than a trap would, and so can
9033    only be placed where the instruction is longer than the jump, or a
9034    multi-instruction sequence does not have a jump into the middle of
9035    it, etc.  */
9036
9037 static void
9038 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9039                             gdb::array_view<const symtab_and_line> sals)
9040 {
9041   for (const auto &sal : sals)
9042     {
9043       struct gdbarch *sarch;
9044
9045       sarch = get_sal_arch (sal);
9046       /* We fall back to GDBARCH if there is no architecture
9047          associated with SAL.  */
9048       if (sarch == NULL)
9049         sarch = gdbarch;
9050       std::string msg;
9051       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9052         error (_("May not have a fast tracepoint at %s%s"),
9053                paddress (sarch, sal.pc), msg.c_str ());
9054     }
9055 }
9056
9057 /* Given TOK, a string specification of condition and thread, as
9058    accepted by the 'break' command, extract the condition
9059    string and thread number and set *COND_STRING and *THREAD.
9060    PC identifies the context at which the condition should be parsed.
9061    If no condition is found, *COND_STRING is set to NULL.
9062    If no thread is found, *THREAD is set to -1.  */
9063
9064 static void
9065 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9066                            char **cond_string, int *thread, int *task,
9067                            char **rest)
9068 {
9069   *cond_string = NULL;
9070   *thread = -1;
9071   *task = 0;
9072   *rest = NULL;
9073
9074   while (tok && *tok)
9075     {
9076       const char *end_tok;
9077       int toklen;
9078       const char *cond_start = NULL;
9079       const char *cond_end = NULL;
9080
9081       tok = skip_spaces (tok);
9082
9083       if ((*tok == '"' || *tok == ',') && rest)
9084         {
9085           *rest = savestring (tok, strlen (tok));
9086           return;
9087         }
9088
9089       end_tok = skip_to_space (tok);
9090
9091       toklen = end_tok - tok;
9092
9093       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9094         {
9095           tok = cond_start = end_tok + 1;
9096           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9097           cond_end = tok;
9098           *cond_string = savestring (cond_start, cond_end - cond_start);
9099         }
9100       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9101         {
9102           const char *tmptok;
9103           struct thread_info *thr;
9104
9105           tok = end_tok + 1;
9106           thr = parse_thread_id (tok, &tmptok);
9107           if (tok == tmptok)
9108             error (_("Junk after thread keyword."));
9109           *thread = thr->global_num;
9110           tok = tmptok;
9111         }
9112       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9113         {
9114           char *tmptok;
9115
9116           tok = end_tok + 1;
9117           *task = strtol (tok, &tmptok, 0);
9118           if (tok == tmptok)
9119             error (_("Junk after task keyword."));
9120           if (!valid_task_id (*task))
9121             error (_("Unknown task %d."), *task);
9122           tok = tmptok;
9123         }
9124       else if (rest)
9125         {
9126           *rest = savestring (tok, strlen (tok));
9127           return;
9128         }
9129       else
9130         error (_("Junk at end of arguments."));
9131     }
9132 }
9133
9134 /* Decode a static tracepoint marker spec.  */
9135
9136 static std::vector<symtab_and_line>
9137 decode_static_tracepoint_spec (const char **arg_p)
9138 {
9139   const char *p = &(*arg_p)[3];
9140   const char *endp;
9141
9142   p = skip_spaces (p);
9143
9144   endp = skip_to_space (p);
9145
9146   std::string marker_str (p, endp - p);
9147
9148   std::vector<static_tracepoint_marker> markers
9149     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9150   if (markers.empty ())
9151     error (_("No known static tracepoint marker named %s"),
9152            marker_str.c_str ());
9153
9154   std::vector<symtab_and_line> sals;
9155   sals.reserve (markers.size ());
9156
9157   for (const static_tracepoint_marker &marker : markers)
9158     {
9159       symtab_and_line sal = find_pc_line (marker.address, 0);
9160       sal.pc = marker.address;
9161       sals.push_back (sal);
9162    }
9163
9164   *arg_p = endp;
9165   return sals;
9166 }
9167
9168 /* See breakpoint.h.  */
9169
9170 int
9171 create_breakpoint (struct gdbarch *gdbarch,
9172                    const struct event_location *location,
9173                    const char *cond_string,
9174                    int thread, const char *extra_string,
9175                    int parse_extra,
9176                    int tempflag, enum bptype type_wanted,
9177                    int ignore_count,
9178                    enum auto_boolean pending_break_support,
9179                    const struct breakpoint_ops *ops,
9180                    int from_tty, int enabled, int internal,
9181                    unsigned flags)
9182 {
9183   struct linespec_result canonical;
9184   int pending = 0;
9185   int task = 0;
9186   int prev_bkpt_count = breakpoint_count;
9187
9188   gdb_assert (ops != NULL);
9189
9190   /* If extra_string isn't useful, set it to NULL.  */
9191   if (extra_string != NULL && *extra_string == '\0')
9192     extra_string = NULL;
9193
9194   try
9195     {
9196       ops->create_sals_from_location (location, &canonical, type_wanted);
9197     }
9198   catch (const gdb_exception_error &e)
9199     {
9200       /* If caller is interested in rc value from parse, set
9201          value.  */
9202       if (e.error == NOT_FOUND_ERROR)
9203         {
9204           /* If pending breakpoint support is turned off, throw
9205              error.  */
9206
9207           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9208             throw;
9209
9210           exception_print (gdb_stderr, e);
9211
9212           /* If pending breakpoint support is auto query and the user
9213              selects no, then simply return the error code.  */
9214           if (pending_break_support == AUTO_BOOLEAN_AUTO
9215               && !nquery (_("Make %s pending on future shared library load? "),
9216                           bptype_string (type_wanted)))
9217             return 0;
9218
9219           /* At this point, either the user was queried about setting
9220              a pending breakpoint and selected yes, or pending
9221              breakpoint behavior is on and thus a pending breakpoint
9222              is defaulted on behalf of the user.  */
9223           pending = 1;
9224         }
9225       else
9226         throw;
9227     }
9228
9229   if (!pending && canonical.lsals.empty ())
9230     return 0;
9231
9232   /* Resolve all line numbers to PC's and verify that the addresses
9233      are ok for the target.  */
9234   if (!pending)
9235     {
9236       for (auto &lsal : canonical.lsals)
9237         breakpoint_sals_to_pc (lsal.sals);
9238     }
9239
9240   /* Fast tracepoints may have additional restrictions on location.  */
9241   if (!pending && type_wanted == bp_fast_tracepoint)
9242     {
9243       for (const auto &lsal : canonical.lsals)
9244         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9245     }
9246
9247   /* Verify that condition can be parsed, before setting any
9248      breakpoints.  Allocate a separate condition expression for each
9249      breakpoint.  */
9250   if (!pending)
9251     {
9252       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9253       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9254
9255       if (parse_extra)
9256         {
9257           char *rest;
9258           char *cond;
9259
9260           const linespec_sals &lsal = canonical.lsals[0];
9261
9262           /* Here we only parse 'arg' to separate condition
9263              from thread number, so parsing in context of first
9264              sal is OK.  When setting the breakpoint we'll
9265              re-parse it in context of each sal.  */
9266
9267           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9268                                      &cond, &thread, &task, &rest);
9269           cond_string_copy.reset (cond);
9270           extra_string_copy.reset (rest);
9271         }
9272       else
9273         {
9274           if (type_wanted != bp_dprintf
9275               && extra_string != NULL && *extra_string != '\0')
9276                 error (_("Garbage '%s' at end of location"), extra_string);
9277
9278           /* Create a private copy of condition string.  */
9279           if (cond_string)
9280             cond_string_copy.reset (xstrdup (cond_string));
9281           /* Create a private copy of any extra string.  */
9282           if (extra_string)
9283             extra_string_copy.reset (xstrdup (extra_string));
9284         }
9285
9286       ops->create_breakpoints_sal (gdbarch, &canonical,
9287                                    std::move (cond_string_copy),
9288                                    std::move (extra_string_copy),
9289                                    type_wanted,
9290                                    tempflag ? disp_del : disp_donttouch,
9291                                    thread, task, ignore_count, ops,
9292                                    from_tty, enabled, internal, flags);
9293     }
9294   else
9295     {
9296       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9297
9298       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9299       b->location = copy_event_location (location);
9300
9301       if (parse_extra)
9302         b->cond_string = NULL;
9303       else
9304         {
9305           /* Create a private copy of condition string.  */
9306           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9307           b->thread = thread;
9308         }
9309
9310       /* Create a private copy of any extra string.  */
9311       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9312       b->ignore_count = ignore_count;
9313       b->disposition = tempflag ? disp_del : disp_donttouch;
9314       b->condition_not_parsed = 1;
9315       b->enable_state = enabled ? bp_enabled : bp_disabled;
9316       if ((type_wanted != bp_breakpoint
9317            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9318         b->pspace = current_program_space;
9319
9320       install_breakpoint (internal, std::move (b), 0);
9321     }
9322   
9323   if (canonical.lsals.size () > 1)
9324     {
9325       warning (_("Multiple breakpoints were set.\nUse the "
9326                  "\"delete\" command to delete unwanted breakpoints."));
9327       prev_breakpoint_count = prev_bkpt_count;
9328     }
9329
9330   update_global_location_list (UGLL_MAY_INSERT);
9331
9332   return 1;
9333 }
9334
9335 /* Set a breakpoint.
9336    ARG is a string describing breakpoint address,
9337    condition, and thread.
9338    FLAG specifies if a breakpoint is hardware on,
9339    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9340    and BP_TEMPFLAG.  */
9341
9342 static void
9343 break_command_1 (const char *arg, int flag, int from_tty)
9344 {
9345   int tempflag = flag & BP_TEMPFLAG;
9346   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9347                              ? bp_hardware_breakpoint
9348                              : bp_breakpoint);
9349   struct breakpoint_ops *ops;
9350
9351   event_location_up location = string_to_event_location (&arg, current_language);
9352
9353   /* Matching breakpoints on probes.  */
9354   if (location != NULL
9355       && event_location_type (location.get ()) == PROBE_LOCATION)
9356     ops = &bkpt_probe_breakpoint_ops;
9357   else
9358     ops = &bkpt_breakpoint_ops;
9359
9360   create_breakpoint (get_current_arch (),
9361                      location.get (),
9362                      NULL, 0, arg, 1 /* parse arg */,
9363                      tempflag, type_wanted,
9364                      0 /* Ignore count */,
9365                      pending_break_support,
9366                      ops,
9367                      from_tty,
9368                      1 /* enabled */,
9369                      0 /* internal */,
9370                      0);
9371 }
9372
9373 /* Helper function for break_command_1 and disassemble_command.  */
9374
9375 void
9376 resolve_sal_pc (struct symtab_and_line *sal)
9377 {
9378   CORE_ADDR pc;
9379
9380   if (sal->pc == 0 && sal->symtab != NULL)
9381     {
9382       if (!find_line_pc (sal->symtab, sal->line, &pc))
9383         error (_("No line %d in file \"%s\"."),
9384                sal->line, symtab_to_filename_for_display (sal->symtab));
9385       sal->pc = pc;
9386
9387       /* If this SAL corresponds to a breakpoint inserted using a line
9388          number, then skip the function prologue if necessary.  */
9389       if (sal->explicit_line)
9390         skip_prologue_sal (sal);
9391     }
9392
9393   if (sal->section == 0 && sal->symtab != NULL)
9394     {
9395       const struct blockvector *bv;
9396       const struct block *b;
9397       struct symbol *sym;
9398
9399       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9400                                     SYMTAB_COMPUNIT (sal->symtab));
9401       if (bv != NULL)
9402         {
9403           sym = block_linkage_function (b);
9404           if (sym != NULL)
9405             {
9406               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9407               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9408                                                  sym);
9409             }
9410           else
9411             {
9412               /* It really is worthwhile to have the section, so we'll
9413                  just have to look harder. This case can be executed
9414                  if we have line numbers but no functions (as can
9415                  happen in assembly source).  */
9416
9417               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9418               switch_to_program_space_and_thread (sal->pspace);
9419
9420               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9421               if (msym.minsym)
9422                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9423             }
9424         }
9425     }
9426 }
9427
9428 void
9429 break_command (const char *arg, int from_tty)
9430 {
9431   break_command_1 (arg, 0, from_tty);
9432 }
9433
9434 void
9435 tbreak_command (const char *arg, int from_tty)
9436 {
9437   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9438 }
9439
9440 static void
9441 hbreak_command (const char *arg, int from_tty)
9442 {
9443   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9444 }
9445
9446 static void
9447 thbreak_command (const char *arg, int from_tty)
9448 {
9449   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9450 }
9451
9452 static void
9453 stop_command (const char *arg, int from_tty)
9454 {
9455   printf_filtered (_("Specify the type of breakpoint to set.\n\
9456 Usage: stop in <function | address>\n\
9457        stop at <line>\n"));
9458 }
9459
9460 static void
9461 stopin_command (const char *arg, int from_tty)
9462 {
9463   int badInput = 0;
9464
9465   if (arg == NULL)
9466     badInput = 1;
9467   else if (*arg != '*')
9468     {
9469       const char *argptr = arg;
9470       int hasColon = 0;
9471
9472       /* Look for a ':'.  If this is a line number specification, then
9473          say it is bad, otherwise, it should be an address or
9474          function/method name.  */
9475       while (*argptr && !hasColon)
9476         {
9477           hasColon = (*argptr == ':');
9478           argptr++;
9479         }
9480
9481       if (hasColon)
9482         badInput = (*argptr != ':');    /* Not a class::method */
9483       else
9484         badInput = isdigit (*arg);      /* a simple line number */
9485     }
9486
9487   if (badInput)
9488     printf_filtered (_("Usage: stop in <function | address>\n"));
9489   else
9490     break_command_1 (arg, 0, from_tty);
9491 }
9492
9493 static void
9494 stopat_command (const char *arg, int from_tty)
9495 {
9496   int badInput = 0;
9497
9498   if (arg == NULL || *arg == '*')       /* no line number */
9499     badInput = 1;
9500   else
9501     {
9502       const char *argptr = arg;
9503       int hasColon = 0;
9504
9505       /* Look for a ':'.  If there is a '::' then get out, otherwise
9506          it is probably a line number.  */
9507       while (*argptr && !hasColon)
9508         {
9509           hasColon = (*argptr == ':');
9510           argptr++;
9511         }
9512
9513       if (hasColon)
9514         badInput = (*argptr == ':');    /* we have class::method */
9515       else
9516         badInput = !isdigit (*arg);     /* not a line number */
9517     }
9518
9519   if (badInput)
9520     printf_filtered (_("Usage: stop at LINE\n"));
9521   else
9522     break_command_1 (arg, 0, from_tty);
9523 }
9524
9525 /* The dynamic printf command is mostly like a regular breakpoint, but
9526    with a prewired command list consisting of a single output command,
9527    built from extra arguments supplied on the dprintf command
9528    line.  */
9529
9530 static void
9531 dprintf_command (const char *arg, int from_tty)
9532 {
9533   event_location_up location = string_to_event_location (&arg, current_language);
9534
9535   /* If non-NULL, ARG should have been advanced past the location;
9536      the next character must be ','.  */
9537   if (arg != NULL)
9538     {
9539       if (arg[0] != ',' || arg[1] == '\0')
9540         error (_("Format string required"));
9541       else
9542         {
9543           /* Skip the comma.  */
9544           ++arg;
9545         }
9546     }
9547
9548   create_breakpoint (get_current_arch (),
9549                      location.get (),
9550                      NULL, 0, arg, 1 /* parse arg */,
9551                      0, bp_dprintf,
9552                      0 /* Ignore count */,
9553                      pending_break_support,
9554                      &dprintf_breakpoint_ops,
9555                      from_tty,
9556                      1 /* enabled */,
9557                      0 /* internal */,
9558                      0);
9559 }
9560
9561 static void
9562 agent_printf_command (const char *arg, int from_tty)
9563 {
9564   error (_("May only run agent-printf on the target"));
9565 }
9566
9567 /* Implement the "breakpoint_hit" breakpoint_ops method for
9568    ranged breakpoints.  */
9569
9570 static int
9571 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9572                                   const address_space *aspace,
9573                                   CORE_ADDR bp_addr,
9574                                   const struct target_waitstatus *ws)
9575 {
9576   if (ws->kind != TARGET_WAITKIND_STOPPED
9577       || ws->value.sig != GDB_SIGNAL_TRAP)
9578     return 0;
9579
9580   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9581                                          bl->length, aspace, bp_addr);
9582 }
9583
9584 /* Implement the "resources_needed" breakpoint_ops method for
9585    ranged breakpoints.  */
9586
9587 static int
9588 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9589 {
9590   return target_ranged_break_num_registers ();
9591 }
9592
9593 /* Implement the "print_it" breakpoint_ops method for
9594    ranged breakpoints.  */
9595
9596 static enum print_stop_action
9597 print_it_ranged_breakpoint (bpstat bs)
9598 {
9599   struct breakpoint *b = bs->breakpoint_at;
9600   struct bp_location *bl = b->loc;
9601   struct ui_out *uiout = current_uiout;
9602
9603   gdb_assert (b->type == bp_hardware_breakpoint);
9604
9605   /* Ranged breakpoints have only one location.  */
9606   gdb_assert (bl && bl->next == NULL);
9607
9608   annotate_breakpoint (b->number);
9609
9610   maybe_print_thread_hit_breakpoint (uiout);
9611
9612   if (b->disposition == disp_del)
9613     uiout->text ("Temporary ranged breakpoint ");
9614   else
9615     uiout->text ("Ranged breakpoint ");
9616   if (uiout->is_mi_like_p ())
9617     {
9618       uiout->field_string ("reason",
9619                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9620       uiout->field_string ("disp", bpdisp_text (b->disposition));
9621     }
9622   uiout->field_int ("bkptno", b->number);
9623   uiout->text (", ");
9624
9625   return PRINT_SRC_AND_LOC;
9626 }
9627
9628 /* Implement the "print_one" breakpoint_ops method for
9629    ranged breakpoints.  */
9630
9631 static void
9632 print_one_ranged_breakpoint (struct breakpoint *b,
9633                              struct bp_location **last_loc)
9634 {
9635   struct bp_location *bl = b->loc;
9636   struct value_print_options opts;
9637   struct ui_out *uiout = current_uiout;
9638
9639   /* Ranged breakpoints have only one location.  */
9640   gdb_assert (bl && bl->next == NULL);
9641
9642   get_user_print_options (&opts);
9643
9644   if (opts.addressprint)
9645     /* We don't print the address range here, it will be printed later
9646        by print_one_detail_ranged_breakpoint.  */
9647     uiout->field_skip ("addr");
9648   annotate_field (5);
9649   print_breakpoint_location (b, bl);
9650   *last_loc = bl;
9651 }
9652
9653 /* Implement the "print_one_detail" breakpoint_ops method for
9654    ranged breakpoints.  */
9655
9656 static void
9657 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9658                                     struct ui_out *uiout)
9659 {
9660   CORE_ADDR address_start, address_end;
9661   struct bp_location *bl = b->loc;
9662   string_file stb;
9663
9664   gdb_assert (bl);
9665
9666   address_start = bl->address;
9667   address_end = address_start + bl->length - 1;
9668
9669   uiout->text ("\taddress range: ");
9670   stb.printf ("[%s, %s]",
9671               print_core_address (bl->gdbarch, address_start),
9672               print_core_address (bl->gdbarch, address_end));
9673   uiout->field_stream ("addr", stb);
9674   uiout->text ("\n");
9675 }
9676
9677 /* Implement the "print_mention" breakpoint_ops method for
9678    ranged breakpoints.  */
9679
9680 static void
9681 print_mention_ranged_breakpoint (struct breakpoint *b)
9682 {
9683   struct bp_location *bl = b->loc;
9684   struct ui_out *uiout = current_uiout;
9685
9686   gdb_assert (bl);
9687   gdb_assert (b->type == bp_hardware_breakpoint);
9688
9689   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9690                   b->number, paddress (bl->gdbarch, bl->address),
9691                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9692 }
9693
9694 /* Implement the "print_recreate" breakpoint_ops method for
9695    ranged breakpoints.  */
9696
9697 static void
9698 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9699 {
9700   fprintf_unfiltered (fp, "break-range %s, %s",
9701                       event_location_to_string (b->location.get ()),
9702                       event_location_to_string (b->location_range_end.get ()));
9703   print_recreate_thread (b, fp);
9704 }
9705
9706 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9707
9708 static struct breakpoint_ops ranged_breakpoint_ops;
9709
9710 /* Find the address where the end of the breakpoint range should be
9711    placed, given the SAL of the end of the range.  This is so that if
9712    the user provides a line number, the end of the range is set to the
9713    last instruction of the given line.  */
9714
9715 static CORE_ADDR
9716 find_breakpoint_range_end (struct symtab_and_line sal)
9717 {
9718   CORE_ADDR end;
9719
9720   /* If the user provided a PC value, use it.  Otherwise,
9721      find the address of the end of the given location.  */
9722   if (sal.explicit_pc)
9723     end = sal.pc;
9724   else
9725     {
9726       int ret;
9727       CORE_ADDR start;
9728
9729       ret = find_line_pc_range (sal, &start, &end);
9730       if (!ret)
9731         error (_("Could not find location of the end of the range."));
9732
9733       /* find_line_pc_range returns the start of the next line.  */
9734       end--;
9735     }
9736
9737   return end;
9738 }
9739
9740 /* Implement the "break-range" CLI command.  */
9741
9742 static void
9743 break_range_command (const char *arg, int from_tty)
9744 {
9745   const char *arg_start;
9746   struct linespec_result canonical_start, canonical_end;
9747   int bp_count, can_use_bp, length;
9748   CORE_ADDR end;
9749   struct breakpoint *b;
9750
9751   /* We don't support software ranged breakpoints.  */
9752   if (target_ranged_break_num_registers () < 0)
9753     error (_("This target does not support hardware ranged breakpoints."));
9754
9755   bp_count = hw_breakpoint_used_count ();
9756   bp_count += target_ranged_break_num_registers ();
9757   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9758                                                    bp_count, 0);
9759   if (can_use_bp < 0)
9760     error (_("Hardware breakpoints used exceeds limit."));
9761
9762   arg = skip_spaces (arg);
9763   if (arg == NULL || arg[0] == '\0')
9764     error(_("No address range specified."));
9765
9766   arg_start = arg;
9767   event_location_up start_location = string_to_event_location (&arg,
9768                                                                current_language);
9769   parse_breakpoint_sals (start_location.get (), &canonical_start);
9770
9771   if (arg[0] != ',')
9772     error (_("Too few arguments."));
9773   else if (canonical_start.lsals.empty ())
9774     error (_("Could not find location of the beginning of the range."));
9775
9776   const linespec_sals &lsal_start = canonical_start.lsals[0];
9777
9778   if (canonical_start.lsals.size () > 1
9779       || lsal_start.sals.size () != 1)
9780     error (_("Cannot create a ranged breakpoint with multiple locations."));
9781
9782   const symtab_and_line &sal_start = lsal_start.sals[0];
9783   std::string addr_string_start (arg_start, arg - arg_start);
9784
9785   arg++;        /* Skip the comma.  */
9786   arg = skip_spaces (arg);
9787
9788   /* Parse the end location.  */
9789
9790   arg_start = arg;
9791
9792   /* We call decode_line_full directly here instead of using
9793      parse_breakpoint_sals because we need to specify the start location's
9794      symtab and line as the default symtab and line for the end of the
9795      range.  This makes it possible to have ranges like "foo.c:27, +14",
9796      where +14 means 14 lines from the start location.  */
9797   event_location_up end_location = string_to_event_location (&arg,
9798                                                              current_language);
9799   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9800                     sal_start.symtab, sal_start.line,
9801                     &canonical_end, NULL, NULL);
9802
9803   if (canonical_end.lsals.empty ())
9804     error (_("Could not find location of the end of the range."));
9805
9806   const linespec_sals &lsal_end = canonical_end.lsals[0];
9807   if (canonical_end.lsals.size () > 1
9808       || lsal_end.sals.size () != 1)
9809     error (_("Cannot create a ranged breakpoint with multiple locations."));
9810
9811   const symtab_and_line &sal_end = lsal_end.sals[0];
9812
9813   end = find_breakpoint_range_end (sal_end);
9814   if (sal_start.pc > end)
9815     error (_("Invalid address range, end precedes start."));
9816
9817   length = end - sal_start.pc + 1;
9818   if (length < 0)
9819     /* Length overflowed.  */
9820     error (_("Address range too large."));
9821   else if (length == 1)
9822     {
9823       /* This range is simple enough to be handled by
9824          the `hbreak' command.  */
9825       hbreak_command (&addr_string_start[0], 1);
9826
9827       return;
9828     }
9829
9830   /* Now set up the breakpoint.  */
9831   b = set_raw_breakpoint (get_current_arch (), sal_start,
9832                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9833   set_breakpoint_count (breakpoint_count + 1);
9834   b->number = breakpoint_count;
9835   b->disposition = disp_donttouch;
9836   b->location = std::move (start_location);
9837   b->location_range_end = std::move (end_location);
9838   b->loc->length = length;
9839
9840   mention (b);
9841   gdb::observers::breakpoint_created.notify (b);
9842   update_global_location_list (UGLL_MAY_INSERT);
9843 }
9844
9845 /*  Return non-zero if EXP is verified as constant.  Returned zero
9846     means EXP is variable.  Also the constant detection may fail for
9847     some constant expressions and in such case still falsely return
9848     zero.  */
9849
9850 static int
9851 watchpoint_exp_is_const (const struct expression *exp)
9852 {
9853   int i = exp->nelts;
9854
9855   while (i > 0)
9856     {
9857       int oplenp, argsp;
9858
9859       /* We are only interested in the descriptor of each element.  */
9860       operator_length (exp, i, &oplenp, &argsp);
9861       i -= oplenp;
9862
9863       switch (exp->elts[i].opcode)
9864         {
9865         case BINOP_ADD:
9866         case BINOP_SUB:
9867         case BINOP_MUL:
9868         case BINOP_DIV:
9869         case BINOP_REM:
9870         case BINOP_MOD:
9871         case BINOP_LSH:
9872         case BINOP_RSH:
9873         case BINOP_LOGICAL_AND:
9874         case BINOP_LOGICAL_OR:
9875         case BINOP_BITWISE_AND:
9876         case BINOP_BITWISE_IOR:
9877         case BINOP_BITWISE_XOR:
9878         case BINOP_EQUAL:
9879         case BINOP_NOTEQUAL:
9880         case BINOP_LESS:
9881         case BINOP_GTR:
9882         case BINOP_LEQ:
9883         case BINOP_GEQ:
9884         case BINOP_REPEAT:
9885         case BINOP_COMMA:
9886         case BINOP_EXP:
9887         case BINOP_MIN:
9888         case BINOP_MAX:
9889         case BINOP_INTDIV:
9890         case BINOP_CONCAT:
9891         case TERNOP_COND:
9892         case TERNOP_SLICE:
9893
9894         case OP_LONG:
9895         case OP_FLOAT:
9896         case OP_LAST:
9897         case OP_COMPLEX:
9898         case OP_STRING:
9899         case OP_ARRAY:
9900         case OP_TYPE:
9901         case OP_TYPEOF:
9902         case OP_DECLTYPE:
9903         case OP_TYPEID:
9904         case OP_NAME:
9905         case OP_OBJC_NSSTRING:
9906
9907         case UNOP_NEG:
9908         case UNOP_LOGICAL_NOT:
9909         case UNOP_COMPLEMENT:
9910         case UNOP_ADDR:
9911         case UNOP_HIGH:
9912         case UNOP_CAST:
9913
9914         case UNOP_CAST_TYPE:
9915         case UNOP_REINTERPRET_CAST:
9916         case UNOP_DYNAMIC_CAST:
9917           /* Unary, binary and ternary operators: We have to check
9918              their operands.  If they are constant, then so is the
9919              result of that operation.  For instance, if A and B are
9920              determined to be constants, then so is "A + B".
9921
9922              UNOP_IND is one exception to the rule above, because the
9923              value of *ADDR is not necessarily a constant, even when
9924              ADDR is.  */
9925           break;
9926
9927         case OP_VAR_VALUE:
9928           /* Check whether the associated symbol is a constant.
9929
9930              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9931              possible that a buggy compiler could mark a variable as
9932              constant even when it is not, and TYPE_CONST would return
9933              true in this case, while SYMBOL_CLASS wouldn't.
9934
9935              We also have to check for function symbols because they
9936              are always constant.  */
9937           {
9938             struct symbol *s = exp->elts[i + 2].symbol;
9939
9940             if (SYMBOL_CLASS (s) != LOC_BLOCK
9941                 && SYMBOL_CLASS (s) != LOC_CONST
9942                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9943               return 0;
9944             break;
9945           }
9946
9947         /* The default action is to return 0 because we are using
9948            the optimistic approach here: If we don't know something,
9949            then it is not a constant.  */
9950         default:
9951           return 0;
9952         }
9953     }
9954
9955   return 1;
9956 }
9957
9958 /* Watchpoint destructor.  */
9959
9960 watchpoint::~watchpoint ()
9961 {
9962   xfree (this->exp_string);
9963   xfree (this->exp_string_reparse);
9964 }
9965
9966 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9967
9968 static void
9969 re_set_watchpoint (struct breakpoint *b)
9970 {
9971   struct watchpoint *w = (struct watchpoint *) b;
9972
9973   /* Watchpoint can be either on expression using entirely global
9974      variables, or it can be on local variables.
9975
9976      Watchpoints of the first kind are never auto-deleted, and even
9977      persist across program restarts.  Since they can use variables
9978      from shared libraries, we need to reparse expression as libraries
9979      are loaded and unloaded.
9980
9981      Watchpoints on local variables can also change meaning as result
9982      of solib event.  For example, if a watchpoint uses both a local
9983      and a global variables in expression, it's a local watchpoint,
9984      but unloading of a shared library will make the expression
9985      invalid.  This is not a very common use case, but we still
9986      re-evaluate expression, to avoid surprises to the user.
9987
9988      Note that for local watchpoints, we re-evaluate it only if
9989      watchpoints frame id is still valid.  If it's not, it means the
9990      watchpoint is out of scope and will be deleted soon.  In fact,
9991      I'm not sure we'll ever be called in this case.
9992
9993      If a local watchpoint's frame id is still valid, then
9994      w->exp_valid_block is likewise valid, and we can safely use it.
9995
9996      Don't do anything about disabled watchpoints, since they will be
9997      reevaluated again when enabled.  */
9998   update_watchpoint (w, 1 /* reparse */);
9999 }
10000
10001 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10002
10003 static int
10004 insert_watchpoint (struct bp_location *bl)
10005 {
10006   struct watchpoint *w = (struct watchpoint *) bl->owner;
10007   int length = w->exact ? 1 : bl->length;
10008
10009   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10010                                    w->cond_exp.get ());
10011 }
10012
10013 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10014
10015 static int
10016 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10017 {
10018   struct watchpoint *w = (struct watchpoint *) bl->owner;
10019   int length = w->exact ? 1 : bl->length;
10020
10021   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10022                                    w->cond_exp.get ());
10023 }
10024
10025 static int
10026 breakpoint_hit_watchpoint (const struct bp_location *bl,
10027                            const address_space *aspace, CORE_ADDR bp_addr,
10028                            const struct target_waitstatus *ws)
10029 {
10030   struct breakpoint *b = bl->owner;
10031   struct watchpoint *w = (struct watchpoint *) b;
10032
10033   /* Continuable hardware watchpoints are treated as non-existent if the
10034      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10035      some data address).  Otherwise gdb won't stop on a break instruction
10036      in the code (not from a breakpoint) when a hardware watchpoint has
10037      been defined.  Also skip watchpoints which we know did not trigger
10038      (did not match the data address).  */
10039   if (is_hardware_watchpoint (b)
10040       && w->watchpoint_triggered == watch_triggered_no)
10041     return 0;
10042
10043   return 1;
10044 }
10045
10046 static void
10047 check_status_watchpoint (bpstat bs)
10048 {
10049   gdb_assert (is_watchpoint (bs->breakpoint_at));
10050
10051   bpstat_check_watchpoint (bs);
10052 }
10053
10054 /* Implement the "resources_needed" breakpoint_ops method for
10055    hardware watchpoints.  */
10056
10057 static int
10058 resources_needed_watchpoint (const struct bp_location *bl)
10059 {
10060   struct watchpoint *w = (struct watchpoint *) bl->owner;
10061   int length = w->exact? 1 : bl->length;
10062
10063   return target_region_ok_for_hw_watchpoint (bl->address, length);
10064 }
10065
10066 /* Implement the "works_in_software_mode" breakpoint_ops method for
10067    hardware watchpoints.  */
10068
10069 static int
10070 works_in_software_mode_watchpoint (const struct breakpoint *b)
10071 {
10072   /* Read and access watchpoints only work with hardware support.  */
10073   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10074 }
10075
10076 static enum print_stop_action
10077 print_it_watchpoint (bpstat bs)
10078 {
10079   struct breakpoint *b;
10080   enum print_stop_action result;
10081   struct watchpoint *w;
10082   struct ui_out *uiout = current_uiout;
10083
10084   gdb_assert (bs->bp_location_at != NULL);
10085
10086   b = bs->breakpoint_at;
10087   w = (struct watchpoint *) b;
10088
10089   annotate_watchpoint (b->number);
10090   maybe_print_thread_hit_breakpoint (uiout);
10091
10092   string_file stb;
10093
10094   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10095   switch (b->type)
10096     {
10097     case bp_watchpoint:
10098     case bp_hardware_watchpoint:
10099       if (uiout->is_mi_like_p ())
10100         uiout->field_string
10101           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10102       mention (b);
10103       tuple_emitter.emplace (uiout, "value");
10104       uiout->text ("\nOld value = ");
10105       watchpoint_value_print (bs->old_val.get (), &stb);
10106       uiout->field_stream ("old", stb);
10107       uiout->text ("\nNew value = ");
10108       watchpoint_value_print (w->val.get (), &stb);
10109       uiout->field_stream ("new", stb);
10110       uiout->text ("\n");
10111       /* More than one watchpoint may have been triggered.  */
10112       result = PRINT_UNKNOWN;
10113       break;
10114
10115     case bp_read_watchpoint:
10116       if (uiout->is_mi_like_p ())
10117         uiout->field_string
10118           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10119       mention (b);
10120       tuple_emitter.emplace (uiout, "value");
10121       uiout->text ("\nValue = ");
10122       watchpoint_value_print (w->val.get (), &stb);
10123       uiout->field_stream ("value", stb);
10124       uiout->text ("\n");
10125       result = PRINT_UNKNOWN;
10126       break;
10127
10128     case bp_access_watchpoint:
10129       if (bs->old_val != NULL)
10130         {
10131           if (uiout->is_mi_like_p ())
10132             uiout->field_string
10133               ("reason",
10134                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10135           mention (b);
10136           tuple_emitter.emplace (uiout, "value");
10137           uiout->text ("\nOld value = ");
10138           watchpoint_value_print (bs->old_val.get (), &stb);
10139           uiout->field_stream ("old", stb);
10140           uiout->text ("\nNew value = ");
10141         }
10142       else
10143         {
10144           mention (b);
10145           if (uiout->is_mi_like_p ())
10146             uiout->field_string
10147               ("reason",
10148                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10149           tuple_emitter.emplace (uiout, "value");
10150           uiout->text ("\nValue = ");
10151         }
10152       watchpoint_value_print (w->val.get (), &stb);
10153       uiout->field_stream ("new", stb);
10154       uiout->text ("\n");
10155       result = PRINT_UNKNOWN;
10156       break;
10157     default:
10158       result = PRINT_UNKNOWN;
10159     }
10160
10161   return result;
10162 }
10163
10164 /* Implement the "print_mention" breakpoint_ops method for hardware
10165    watchpoints.  */
10166
10167 static void
10168 print_mention_watchpoint (struct breakpoint *b)
10169 {
10170   struct watchpoint *w = (struct watchpoint *) b;
10171   struct ui_out *uiout = current_uiout;
10172   const char *tuple_name;
10173
10174   switch (b->type)
10175     {
10176     case bp_watchpoint:
10177       uiout->text ("Watchpoint ");
10178       tuple_name = "wpt";
10179       break;
10180     case bp_hardware_watchpoint:
10181       uiout->text ("Hardware watchpoint ");
10182       tuple_name = "wpt";
10183       break;
10184     case bp_read_watchpoint:
10185       uiout->text ("Hardware read watchpoint ");
10186       tuple_name = "hw-rwpt";
10187       break;
10188     case bp_access_watchpoint:
10189       uiout->text ("Hardware access (read/write) watchpoint ");
10190       tuple_name = "hw-awpt";
10191       break;
10192     default:
10193       internal_error (__FILE__, __LINE__,
10194                       _("Invalid hardware watchpoint type."));
10195     }
10196
10197   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10198   uiout->field_int ("number", b->number);
10199   uiout->text (": ");
10200   uiout->field_string ("exp", w->exp_string);
10201 }
10202
10203 /* Implement the "print_recreate" breakpoint_ops method for
10204    watchpoints.  */
10205
10206 static void
10207 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10208 {
10209   struct watchpoint *w = (struct watchpoint *) b;
10210
10211   switch (b->type)
10212     {
10213     case bp_watchpoint:
10214     case bp_hardware_watchpoint:
10215       fprintf_unfiltered (fp, "watch");
10216       break;
10217     case bp_read_watchpoint:
10218       fprintf_unfiltered (fp, "rwatch");
10219       break;
10220     case bp_access_watchpoint:
10221       fprintf_unfiltered (fp, "awatch");
10222       break;
10223     default:
10224       internal_error (__FILE__, __LINE__,
10225                       _("Invalid watchpoint type."));
10226     }
10227
10228   fprintf_unfiltered (fp, " %s", w->exp_string);
10229   print_recreate_thread (b, fp);
10230 }
10231
10232 /* Implement the "explains_signal" breakpoint_ops method for
10233    watchpoints.  */
10234
10235 static int
10236 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10237 {
10238   /* A software watchpoint cannot cause a signal other than
10239      GDB_SIGNAL_TRAP.  */
10240   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10241     return 0;
10242
10243   return 1;
10244 }
10245
10246 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10247
10248 static struct breakpoint_ops watchpoint_breakpoint_ops;
10249
10250 /* Implement the "insert" breakpoint_ops method for
10251    masked hardware watchpoints.  */
10252
10253 static int
10254 insert_masked_watchpoint (struct bp_location *bl)
10255 {
10256   struct watchpoint *w = (struct watchpoint *) bl->owner;
10257
10258   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10259                                         bl->watchpoint_type);
10260 }
10261
10262 /* Implement the "remove" breakpoint_ops method for
10263    masked hardware watchpoints.  */
10264
10265 static int
10266 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10267 {
10268   struct watchpoint *w = (struct watchpoint *) bl->owner;
10269
10270   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10271                                         bl->watchpoint_type);
10272 }
10273
10274 /* Implement the "resources_needed" breakpoint_ops method for
10275    masked hardware watchpoints.  */
10276
10277 static int
10278 resources_needed_masked_watchpoint (const struct bp_location *bl)
10279 {
10280   struct watchpoint *w = (struct watchpoint *) bl->owner;
10281
10282   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10283 }
10284
10285 /* Implement the "works_in_software_mode" breakpoint_ops method for
10286    masked hardware watchpoints.  */
10287
10288 static int
10289 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10290 {
10291   return 0;
10292 }
10293
10294 /* Implement the "print_it" breakpoint_ops method for
10295    masked hardware watchpoints.  */
10296
10297 static enum print_stop_action
10298 print_it_masked_watchpoint (bpstat bs)
10299 {
10300   struct breakpoint *b = bs->breakpoint_at;
10301   struct ui_out *uiout = current_uiout;
10302
10303   /* Masked watchpoints have only one location.  */
10304   gdb_assert (b->loc && b->loc->next == NULL);
10305
10306   annotate_watchpoint (b->number);
10307   maybe_print_thread_hit_breakpoint (uiout);
10308
10309   switch (b->type)
10310     {
10311     case bp_hardware_watchpoint:
10312       if (uiout->is_mi_like_p ())
10313         uiout->field_string
10314           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10315       break;
10316
10317     case bp_read_watchpoint:
10318       if (uiout->is_mi_like_p ())
10319         uiout->field_string
10320           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10321       break;
10322
10323     case bp_access_watchpoint:
10324       if (uiout->is_mi_like_p ())
10325         uiout->field_string
10326           ("reason",
10327            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10328       break;
10329     default:
10330       internal_error (__FILE__, __LINE__,
10331                       _("Invalid hardware watchpoint type."));
10332     }
10333
10334   mention (b);
10335   uiout->text (_("\n\
10336 Check the underlying instruction at PC for the memory\n\
10337 address and value which triggered this watchpoint.\n"));
10338   uiout->text ("\n");
10339
10340   /* More than one watchpoint may have been triggered.  */
10341   return PRINT_UNKNOWN;
10342 }
10343
10344 /* Implement the "print_one_detail" breakpoint_ops method for
10345    masked hardware watchpoints.  */
10346
10347 static void
10348 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10349                                     struct ui_out *uiout)
10350 {
10351   struct watchpoint *w = (struct watchpoint *) b;
10352
10353   /* Masked watchpoints have only one location.  */
10354   gdb_assert (b->loc && b->loc->next == NULL);
10355
10356   uiout->text ("\tmask ");
10357   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10358   uiout->text ("\n");
10359 }
10360
10361 /* Implement the "print_mention" breakpoint_ops method for
10362    masked hardware watchpoints.  */
10363
10364 static void
10365 print_mention_masked_watchpoint (struct breakpoint *b)
10366 {
10367   struct watchpoint *w = (struct watchpoint *) b;
10368   struct ui_out *uiout = current_uiout;
10369   const char *tuple_name;
10370
10371   switch (b->type)
10372     {
10373     case bp_hardware_watchpoint:
10374       uiout->text ("Masked hardware watchpoint ");
10375       tuple_name = "wpt";
10376       break;
10377     case bp_read_watchpoint:
10378       uiout->text ("Masked hardware read watchpoint ");
10379       tuple_name = "hw-rwpt";
10380       break;
10381     case bp_access_watchpoint:
10382       uiout->text ("Masked hardware access (read/write) watchpoint ");
10383       tuple_name = "hw-awpt";
10384       break;
10385     default:
10386       internal_error (__FILE__, __LINE__,
10387                       _("Invalid hardware watchpoint type."));
10388     }
10389
10390   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10391   uiout->field_int ("number", b->number);
10392   uiout->text (": ");
10393   uiout->field_string ("exp", w->exp_string);
10394 }
10395
10396 /* Implement the "print_recreate" breakpoint_ops method for
10397    masked hardware watchpoints.  */
10398
10399 static void
10400 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10401 {
10402   struct watchpoint *w = (struct watchpoint *) b;
10403   char tmp[40];
10404
10405   switch (b->type)
10406     {
10407     case bp_hardware_watchpoint:
10408       fprintf_unfiltered (fp, "watch");
10409       break;
10410     case bp_read_watchpoint:
10411       fprintf_unfiltered (fp, "rwatch");
10412       break;
10413     case bp_access_watchpoint:
10414       fprintf_unfiltered (fp, "awatch");
10415       break;
10416     default:
10417       internal_error (__FILE__, __LINE__,
10418                       _("Invalid hardware watchpoint type."));
10419     }
10420
10421   sprintf_vma (tmp, w->hw_wp_mask);
10422   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10423   print_recreate_thread (b, fp);
10424 }
10425
10426 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10427
10428 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10429
10430 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10431
10432 static int
10433 is_masked_watchpoint (const struct breakpoint *b)
10434 {
10435   return b->ops == &masked_watchpoint_breakpoint_ops;
10436 }
10437
10438 /* accessflag:  hw_write:  watch write, 
10439                 hw_read:   watch read, 
10440                 hw_access: watch access (read or write) */
10441 static void
10442 watch_command_1 (const char *arg, int accessflag, int from_tty,
10443                  int just_location, int internal)
10444 {
10445   struct breakpoint *scope_breakpoint = NULL;
10446   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10447   struct value *result;
10448   int saved_bitpos = 0, saved_bitsize = 0;
10449   const char *exp_start = NULL;
10450   const char *exp_end = NULL;
10451   const char *tok, *end_tok;
10452   int toklen = -1;
10453   const char *cond_start = NULL;
10454   const char *cond_end = NULL;
10455   enum bptype bp_type;
10456   int thread = -1;
10457   int pc = 0;
10458   /* Flag to indicate whether we are going to use masks for
10459      the hardware watchpoint.  */
10460   int use_mask = 0;
10461   CORE_ADDR mask = 0;
10462
10463   /* Make sure that we actually have parameters to parse.  */
10464   if (arg != NULL && arg[0] != '\0')
10465     {
10466       const char *value_start;
10467
10468       exp_end = arg + strlen (arg);
10469
10470       /* Look for "parameter value" pairs at the end
10471          of the arguments string.  */
10472       for (tok = exp_end - 1; tok > arg; tok--)
10473         {
10474           /* Skip whitespace at the end of the argument list.  */
10475           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10476             tok--;
10477
10478           /* Find the beginning of the last token.
10479              This is the value of the parameter.  */
10480           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10481             tok--;
10482           value_start = tok + 1;
10483
10484           /* Skip whitespace.  */
10485           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10486             tok--;
10487
10488           end_tok = tok;
10489
10490           /* Find the beginning of the second to last token.
10491              This is the parameter itself.  */
10492           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10493             tok--;
10494           tok++;
10495           toklen = end_tok - tok + 1;
10496
10497           if (toklen == 6 && startswith (tok, "thread"))
10498             {
10499               struct thread_info *thr;
10500               /* At this point we've found a "thread" token, which means
10501                  the user is trying to set a watchpoint that triggers
10502                  only in a specific thread.  */
10503               const char *endp;
10504
10505               if (thread != -1)
10506                 error(_("You can specify only one thread."));
10507
10508               /* Extract the thread ID from the next token.  */
10509               thr = parse_thread_id (value_start, &endp);
10510
10511               /* Check if the user provided a valid thread ID.  */
10512               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10513                 invalid_thread_id_error (value_start);
10514
10515               thread = thr->global_num;
10516             }
10517           else if (toklen == 4 && startswith (tok, "mask"))
10518             {
10519               /* We've found a "mask" token, which means the user wants to
10520                  create a hardware watchpoint that is going to have the mask
10521                  facility.  */
10522               struct value *mask_value, *mark;
10523
10524               if (use_mask)
10525                 error(_("You can specify only one mask."));
10526
10527               use_mask = just_location = 1;
10528
10529               mark = value_mark ();
10530               mask_value = parse_to_comma_and_eval (&value_start);
10531               mask = value_as_address (mask_value);
10532               value_free_to_mark (mark);
10533             }
10534           else
10535             /* We didn't recognize what we found.  We should stop here.  */
10536             break;
10537
10538           /* Truncate the string and get rid of the "parameter value" pair before
10539              the arguments string is parsed by the parse_exp_1 function.  */
10540           exp_end = tok;
10541         }
10542     }
10543   else
10544     exp_end = arg;
10545
10546   /* Parse the rest of the arguments.  From here on out, everything
10547      is in terms of a newly allocated string instead of the original
10548      ARG.  */
10549   std::string expression (arg, exp_end - arg);
10550   exp_start = arg = expression.c_str ();
10551   innermost_block_tracker tracker;
10552   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10553   exp_end = arg;
10554   /* Remove trailing whitespace from the expression before saving it.
10555      This makes the eventual display of the expression string a bit
10556      prettier.  */
10557   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10558     --exp_end;
10559
10560   /* Checking if the expression is not constant.  */
10561   if (watchpoint_exp_is_const (exp.get ()))
10562     {
10563       int len;
10564
10565       len = exp_end - exp_start;
10566       while (len > 0 && isspace (exp_start[len - 1]))
10567         len--;
10568       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10569     }
10570
10571   exp_valid_block = tracker.block ();
10572   struct value *mark = value_mark ();
10573   struct value *val_as_value = nullptr;
10574   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10575                       just_location);
10576
10577   if (val_as_value != NULL && just_location)
10578     {
10579       saved_bitpos = value_bitpos (val_as_value);
10580       saved_bitsize = value_bitsize (val_as_value);
10581     }
10582
10583   value_ref_ptr val;
10584   if (just_location)
10585     {
10586       int ret;
10587
10588       exp_valid_block = NULL;
10589       val = release_value (value_addr (result));
10590       value_free_to_mark (mark);
10591
10592       if (use_mask)
10593         {
10594           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10595                                                    mask);
10596           if (ret == -1)
10597             error (_("This target does not support masked watchpoints."));
10598           else if (ret == -2)
10599             error (_("Invalid mask or memory region."));
10600         }
10601     }
10602   else if (val_as_value != NULL)
10603     val = release_value (val_as_value);
10604
10605   tok = skip_spaces (arg);
10606   end_tok = skip_to_space (tok);
10607
10608   toklen = end_tok - tok;
10609   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10610     {
10611       tok = cond_start = end_tok + 1;
10612       innermost_block_tracker if_tracker;
10613       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10614
10615       /* The watchpoint expression may not be local, but the condition
10616          may still be.  E.g.: `watch global if local > 0'.  */
10617       cond_exp_valid_block = if_tracker.block ();
10618
10619       cond_end = tok;
10620     }
10621   if (*tok)
10622     error (_("Junk at end of command."));
10623
10624   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10625
10626   /* Save this because create_internal_breakpoint below invalidates
10627      'wp_frame'.  */
10628   frame_id watchpoint_frame = get_frame_id (wp_frame);
10629
10630   /* If the expression is "local", then set up a "watchpoint scope"
10631      breakpoint at the point where we've left the scope of the watchpoint
10632      expression.  Create the scope breakpoint before the watchpoint, so
10633      that we will encounter it first in bpstat_stop_status.  */
10634   if (exp_valid_block != NULL && wp_frame != NULL)
10635     {
10636       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10637
10638       if (frame_id_p (caller_frame_id))
10639         {
10640           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10641           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10642
10643           scope_breakpoint
10644             = create_internal_breakpoint (caller_arch, caller_pc,
10645                                           bp_watchpoint_scope,
10646                                           &momentary_breakpoint_ops);
10647
10648           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10649           wp_frame = NULL;
10650
10651           scope_breakpoint->enable_state = bp_enabled;
10652
10653           /* Automatically delete the breakpoint when it hits.  */
10654           scope_breakpoint->disposition = disp_del;
10655
10656           /* Only break in the proper frame (help with recursion).  */
10657           scope_breakpoint->frame_id = caller_frame_id;
10658
10659           /* Set the address at which we will stop.  */
10660           scope_breakpoint->loc->gdbarch = caller_arch;
10661           scope_breakpoint->loc->requested_address = caller_pc;
10662           scope_breakpoint->loc->address
10663             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10664                                          scope_breakpoint->loc->requested_address,
10665                                          scope_breakpoint->type);
10666         }
10667     }
10668
10669   /* Now set up the breakpoint.  We create all watchpoints as hardware
10670      watchpoints here even if hardware watchpoints are turned off, a call
10671      to update_watchpoint later in this function will cause the type to
10672      drop back to bp_watchpoint (software watchpoint) if required.  */
10673
10674   if (accessflag == hw_read)
10675     bp_type = bp_read_watchpoint;
10676   else if (accessflag == hw_access)
10677     bp_type = bp_access_watchpoint;
10678   else
10679     bp_type = bp_hardware_watchpoint;
10680
10681   std::unique_ptr<watchpoint> w (new watchpoint ());
10682
10683   if (use_mask)
10684     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10685                                           &masked_watchpoint_breakpoint_ops);
10686   else
10687     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10688                                           &watchpoint_breakpoint_ops);
10689   w->thread = thread;
10690   w->disposition = disp_donttouch;
10691   w->pspace = current_program_space;
10692   w->exp = std::move (exp);
10693   w->exp_valid_block = exp_valid_block;
10694   w->cond_exp_valid_block = cond_exp_valid_block;
10695   if (just_location)
10696     {
10697       struct type *t = value_type (val.get ());
10698       CORE_ADDR addr = value_as_address (val.get ());
10699
10700       w->exp_string_reparse
10701         = current_language->la_watch_location_expression (t, addr).release ();
10702
10703       w->exp_string = xstrprintf ("-location %.*s",
10704                                   (int) (exp_end - exp_start), exp_start);
10705     }
10706   else
10707     w->exp_string = savestring (exp_start, exp_end - exp_start);
10708
10709   if (use_mask)
10710     {
10711       w->hw_wp_mask = mask;
10712     }
10713   else
10714     {
10715       w->val = val;
10716       w->val_bitpos = saved_bitpos;
10717       w->val_bitsize = saved_bitsize;
10718       w->val_valid = 1;
10719     }
10720
10721   if (cond_start)
10722     w->cond_string = savestring (cond_start, cond_end - cond_start);
10723   else
10724     w->cond_string = 0;
10725
10726   if (frame_id_p (watchpoint_frame))
10727     {
10728       w->watchpoint_frame = watchpoint_frame;
10729       w->watchpoint_thread = inferior_ptid;
10730     }
10731   else
10732     {
10733       w->watchpoint_frame = null_frame_id;
10734       w->watchpoint_thread = null_ptid;
10735     }
10736
10737   if (scope_breakpoint != NULL)
10738     {
10739       /* The scope breakpoint is related to the watchpoint.  We will
10740          need to act on them together.  */
10741       w->related_breakpoint = scope_breakpoint;
10742       scope_breakpoint->related_breakpoint = w.get ();
10743     }
10744
10745   if (!just_location)
10746     value_free_to_mark (mark);
10747
10748   /* Finally update the new watchpoint.  This creates the locations
10749      that should be inserted.  */
10750   update_watchpoint (w.get (), 1);
10751
10752   install_breakpoint (internal, std::move (w), 1);
10753 }
10754
10755 /* Return count of debug registers needed to watch the given expression.
10756    If the watchpoint cannot be handled in hardware return zero.  */
10757
10758 static int
10759 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10760 {
10761   int found_memory_cnt = 0;
10762
10763   /* Did the user specifically forbid us to use hardware watchpoints? */
10764   if (!can_use_hw_watchpoints)
10765     return 0;
10766
10767   gdb_assert (!vals.empty ());
10768   struct value *head = vals[0].get ();
10769
10770   /* Make sure that the value of the expression depends only upon
10771      memory contents, and values computed from them within GDB.  If we
10772      find any register references or function calls, we can't use a
10773      hardware watchpoint.
10774
10775      The idea here is that evaluating an expression generates a series
10776      of values, one holding the value of every subexpression.  (The
10777      expression a*b+c has five subexpressions: a, b, a*b, c, and
10778      a*b+c.)  GDB's values hold almost enough information to establish
10779      the criteria given above --- they identify memory lvalues,
10780      register lvalues, computed values, etcetera.  So we can evaluate
10781      the expression, and then scan the chain of values that leaves
10782      behind to decide whether we can detect any possible change to the
10783      expression's final value using only hardware watchpoints.
10784
10785      However, I don't think that the values returned by inferior
10786      function calls are special in any way.  So this function may not
10787      notice that an expression involving an inferior function call
10788      can't be watched with hardware watchpoints.  FIXME.  */
10789   for (const value_ref_ptr &iter : vals)
10790     {
10791       struct value *v = iter.get ();
10792
10793       if (VALUE_LVAL (v) == lval_memory)
10794         {
10795           if (v != head && value_lazy (v))
10796             /* A lazy memory lvalue in the chain is one that GDB never
10797                needed to fetch; we either just used its address (e.g.,
10798                `a' in `a.b') or we never needed it at all (e.g., `a'
10799                in `a,b').  This doesn't apply to HEAD; if that is
10800                lazy then it was not readable, but watch it anyway.  */
10801             ;
10802           else
10803             {
10804               /* Ahh, memory we actually used!  Check if we can cover
10805                  it with hardware watchpoints.  */
10806               struct type *vtype = check_typedef (value_type (v));
10807
10808               /* We only watch structs and arrays if user asked for it
10809                  explicitly, never if they just happen to appear in a
10810                  middle of some value chain.  */
10811               if (v == head
10812                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10813                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10814                 {
10815                   CORE_ADDR vaddr = value_address (v);
10816                   int len;
10817                   int num_regs;
10818
10819                   len = (target_exact_watchpoints
10820                          && is_scalar_type_recursive (vtype))?
10821                     1 : TYPE_LENGTH (value_type (v));
10822
10823                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10824                   if (!num_regs)
10825                     return 0;
10826                   else
10827                     found_memory_cnt += num_regs;
10828                 }
10829             }
10830         }
10831       else if (VALUE_LVAL (v) != not_lval
10832                && deprecated_value_modifiable (v) == 0)
10833         return 0;       /* These are values from the history (e.g., $1).  */
10834       else if (VALUE_LVAL (v) == lval_register)
10835         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10836     }
10837
10838   /* The expression itself looks suitable for using a hardware
10839      watchpoint, but give the target machine a chance to reject it.  */
10840   return found_memory_cnt;
10841 }
10842
10843 void
10844 watch_command_wrapper (const char *arg, int from_tty, int internal)
10845 {
10846   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10847 }
10848
10849 /* A helper function that looks for the "-location" argument and then
10850    calls watch_command_1.  */
10851
10852 static void
10853 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10854 {
10855   int just_location = 0;
10856
10857   if (arg
10858       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10859           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10860     just_location = 1;
10861
10862   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10863 }
10864
10865 static void
10866 watch_command (const char *arg, int from_tty)
10867 {
10868   watch_maybe_just_location (arg, hw_write, from_tty);
10869 }
10870
10871 void
10872 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10873 {
10874   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10875 }
10876
10877 static void
10878 rwatch_command (const char *arg, int from_tty)
10879 {
10880   watch_maybe_just_location (arg, hw_read, from_tty);
10881 }
10882
10883 void
10884 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10885 {
10886   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10887 }
10888
10889 static void
10890 awatch_command (const char *arg, int from_tty)
10891 {
10892   watch_maybe_just_location (arg, hw_access, from_tty);
10893 }
10894 \f
10895
10896 /* Data for the FSM that manages the until(location)/advance commands
10897    in infcmd.c.  Here because it uses the mechanisms of
10898    breakpoints.  */
10899
10900 struct until_break_fsm : public thread_fsm
10901 {
10902   /* The thread that was current when the command was executed.  */
10903   int thread;
10904
10905   /* The breakpoint set at the destination location.  */
10906   breakpoint_up location_breakpoint;
10907
10908   /* Breakpoint set at the return address in the caller frame.  May be
10909      NULL.  */
10910   breakpoint_up caller_breakpoint;
10911
10912   until_break_fsm (struct interp *cmd_interp, int thread,
10913                    breakpoint_up &&location_breakpoint,
10914                    breakpoint_up &&caller_breakpoint)
10915     : thread_fsm (cmd_interp),
10916       thread (thread),
10917       location_breakpoint (std::move (location_breakpoint)),
10918       caller_breakpoint (std::move (caller_breakpoint))
10919   {
10920   }
10921
10922   void clean_up (struct thread_info *thread) override;
10923   bool should_stop (struct thread_info *thread) override;
10924   enum async_reply_reason do_async_reply_reason () override;
10925 };
10926
10927 /* Implementation of the 'should_stop' FSM method for the
10928    until(location)/advance commands.  */
10929
10930 bool
10931 until_break_fsm::should_stop (struct thread_info *tp)
10932 {
10933   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10934                               location_breakpoint.get ()) != NULL
10935       || (caller_breakpoint != NULL
10936           && bpstat_find_breakpoint (tp->control.stop_bpstat,
10937                                      caller_breakpoint.get ()) != NULL))
10938     set_finished ();
10939
10940   return true;
10941 }
10942
10943 /* Implementation of the 'clean_up' FSM method for the
10944    until(location)/advance commands.  */
10945
10946 void
10947 until_break_fsm::clean_up (struct thread_info *)
10948 {
10949   /* Clean up our temporary breakpoints.  */
10950   location_breakpoint.reset ();
10951   caller_breakpoint.reset ();
10952   delete_longjmp_breakpoint (thread);
10953 }
10954
10955 /* Implementation of the 'async_reply_reason' FSM method for the
10956    until(location)/advance commands.  */
10957
10958 enum async_reply_reason
10959 until_break_fsm::do_async_reply_reason ()
10960 {
10961   return EXEC_ASYNC_LOCATION_REACHED;
10962 }
10963
10964 void
10965 until_break_command (const char *arg, int from_tty, int anywhere)
10966 {
10967   struct frame_info *frame;
10968   struct gdbarch *frame_gdbarch;
10969   struct frame_id stack_frame_id;
10970   struct frame_id caller_frame_id;
10971   int thread;
10972   struct thread_info *tp;
10973
10974   clear_proceed_status (0);
10975
10976   /* Set a breakpoint where the user wants it and at return from
10977      this function.  */
10978
10979   event_location_up location = string_to_event_location (&arg, current_language);
10980
10981   std::vector<symtab_and_line> sals
10982     = (last_displayed_sal_is_valid ()
10983        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10984                         get_last_displayed_symtab (),
10985                         get_last_displayed_line ())
10986        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
10987                         NULL, NULL, 0));
10988
10989   if (sals.size () != 1)
10990     error (_("Couldn't get information on specified line."));
10991
10992   symtab_and_line &sal = sals[0];
10993
10994   if (*arg)
10995     error (_("Junk at end of arguments."));
10996
10997   resolve_sal_pc (&sal);
10998
10999   tp = inferior_thread ();
11000   thread = tp->global_num;
11001
11002   /* Note linespec handling above invalidates the frame chain.
11003      Installing a breakpoint also invalidates the frame chain (as it
11004      may need to switch threads), so do any frame handling before
11005      that.  */
11006
11007   frame = get_selected_frame (NULL);
11008   frame_gdbarch = get_frame_arch (frame);
11009   stack_frame_id = get_stack_frame_id (frame);
11010   caller_frame_id = frame_unwind_caller_id (frame);
11011
11012   /* Keep within the current frame, or in frames called by the current
11013      one.  */
11014
11015   breakpoint_up caller_breakpoint;
11016
11017   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11018
11019   if (frame_id_p (caller_frame_id))
11020     {
11021       struct symtab_and_line sal2;
11022       struct gdbarch *caller_gdbarch;
11023
11024       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11025       sal2.pc = frame_unwind_caller_pc (frame);
11026       caller_gdbarch = frame_unwind_caller_arch (frame);
11027       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11028                                                     sal2,
11029                                                     caller_frame_id,
11030                                                     bp_until);
11031
11032       set_longjmp_breakpoint (tp, caller_frame_id);
11033       lj_deleter.emplace (thread);
11034     }
11035
11036   /* set_momentary_breakpoint could invalidate FRAME.  */
11037   frame = NULL;
11038
11039   breakpoint_up location_breakpoint;
11040   if (anywhere)
11041     /* If the user told us to continue until a specified location,
11042        we don't specify a frame at which we need to stop.  */
11043     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11044                                                     null_frame_id, bp_until);
11045   else
11046     /* Otherwise, specify the selected frame, because we want to stop
11047        only at the very same frame.  */
11048     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11049                                                     stack_frame_id, bp_until);
11050
11051   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11052                                         std::move (location_breakpoint),
11053                                         std::move (caller_breakpoint));
11054
11055   if (lj_deleter)
11056     lj_deleter->release ();
11057
11058   proceed (-1, GDB_SIGNAL_DEFAULT);
11059 }
11060
11061 /* This function attempts to parse an optional "if <cond>" clause
11062    from the arg string.  If one is not found, it returns NULL.
11063
11064    Else, it returns a pointer to the condition string.  (It does not
11065    attempt to evaluate the string against a particular block.)  And,
11066    it updates arg to point to the first character following the parsed
11067    if clause in the arg string.  */
11068
11069 const char *
11070 ep_parse_optional_if_clause (const char **arg)
11071 {
11072   const char *cond_string;
11073
11074   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11075     return NULL;
11076
11077   /* Skip the "if" keyword.  */
11078   (*arg) += 2;
11079
11080   /* Skip any extra leading whitespace, and record the start of the
11081      condition string.  */
11082   *arg = skip_spaces (*arg);
11083   cond_string = *arg;
11084
11085   /* Assume that the condition occupies the remainder of the arg
11086      string.  */
11087   (*arg) += strlen (cond_string);
11088
11089   return cond_string;
11090 }
11091
11092 /* Commands to deal with catching events, such as signals, exceptions,
11093    process start/exit, etc.  */
11094
11095 typedef enum
11096 {
11097   catch_fork_temporary, catch_vfork_temporary,
11098   catch_fork_permanent, catch_vfork_permanent
11099 }
11100 catch_fork_kind;
11101
11102 static void
11103 catch_fork_command_1 (const char *arg, int from_tty,
11104                       struct cmd_list_element *command)
11105 {
11106   struct gdbarch *gdbarch = get_current_arch ();
11107   const char *cond_string = NULL;
11108   catch_fork_kind fork_kind;
11109   int tempflag;
11110
11111   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11112   tempflag = (fork_kind == catch_fork_temporary
11113               || fork_kind == catch_vfork_temporary);
11114
11115   if (!arg)
11116     arg = "";
11117   arg = skip_spaces (arg);
11118
11119   /* The allowed syntax is:
11120      catch [v]fork
11121      catch [v]fork if <cond>
11122
11123      First, check if there's an if clause.  */
11124   cond_string = ep_parse_optional_if_clause (&arg);
11125
11126   if ((*arg != '\0') && !isspace (*arg))
11127     error (_("Junk at end of arguments."));
11128
11129   /* If this target supports it, create a fork or vfork catchpoint
11130      and enable reporting of such events.  */
11131   switch (fork_kind)
11132     {
11133     case catch_fork_temporary:
11134     case catch_fork_permanent:
11135       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11136                                           &catch_fork_breakpoint_ops);
11137       break;
11138     case catch_vfork_temporary:
11139     case catch_vfork_permanent:
11140       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11141                                           &catch_vfork_breakpoint_ops);
11142       break;
11143     default:
11144       error (_("unsupported or unknown fork kind; cannot catch it"));
11145       break;
11146     }
11147 }
11148
11149 static void
11150 catch_exec_command_1 (const char *arg, int from_tty,
11151                       struct cmd_list_element *command)
11152 {
11153   struct gdbarch *gdbarch = get_current_arch ();
11154   int tempflag;
11155   const char *cond_string = NULL;
11156
11157   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11158
11159   if (!arg)
11160     arg = "";
11161   arg = skip_spaces (arg);
11162
11163   /* The allowed syntax is:
11164      catch exec
11165      catch exec if <cond>
11166
11167      First, check if there's an if clause.  */
11168   cond_string = ep_parse_optional_if_clause (&arg);
11169
11170   if ((*arg != '\0') && !isspace (*arg))
11171     error (_("Junk at end of arguments."));
11172
11173   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11174   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11175                    &catch_exec_breakpoint_ops);
11176   c->exec_pathname = NULL;
11177
11178   install_breakpoint (0, std::move (c), 1);
11179 }
11180
11181 void
11182 init_ada_exception_breakpoint (struct breakpoint *b,
11183                                struct gdbarch *gdbarch,
11184                                struct symtab_and_line sal,
11185                                const char *addr_string,
11186                                const struct breakpoint_ops *ops,
11187                                int tempflag,
11188                                int enabled,
11189                                int from_tty)
11190 {
11191   if (from_tty)
11192     {
11193       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11194       if (!loc_gdbarch)
11195         loc_gdbarch = gdbarch;
11196
11197       describe_other_breakpoints (loc_gdbarch,
11198                                   sal.pspace, sal.pc, sal.section, -1);
11199       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11200          version for exception catchpoints, because two catchpoints
11201          used for different exception names will use the same address.
11202          In this case, a "breakpoint ... also set at..." warning is
11203          unproductive.  Besides, the warning phrasing is also a bit
11204          inappropriate, we should use the word catchpoint, and tell
11205          the user what type of catchpoint it is.  The above is good
11206          enough for now, though.  */
11207     }
11208
11209   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11210
11211   b->enable_state = enabled ? bp_enabled : bp_disabled;
11212   b->disposition = tempflag ? disp_del : disp_donttouch;
11213   b->location = string_to_event_location (&addr_string,
11214                                           language_def (language_ada));
11215   b->language = language_ada;
11216 }
11217
11218 static void
11219 catch_command (const char *arg, int from_tty)
11220 {
11221   error (_("Catch requires an event name."));
11222 }
11223 \f
11224
11225 static void
11226 tcatch_command (const char *arg, int from_tty)
11227 {
11228   error (_("Catch requires an event name."));
11229 }
11230
11231 /* Compare two breakpoints and return a strcmp-like result.  */
11232
11233 static int
11234 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11235 {
11236   uintptr_t ua = (uintptr_t) a;
11237   uintptr_t ub = (uintptr_t) b;
11238
11239   if (a->number < b->number)
11240     return -1;
11241   else if (a->number > b->number)
11242     return 1;
11243
11244   /* Now sort by address, in case we see, e..g, two breakpoints with
11245      the number 0.  */
11246   if (ua < ub)
11247     return -1;
11248   return ua > ub ? 1 : 0;
11249 }
11250
11251 /* Delete breakpoints by address or line.  */
11252
11253 static void
11254 clear_command (const char *arg, int from_tty)
11255 {
11256   struct breakpoint *b;
11257   int default_match;
11258
11259   std::vector<symtab_and_line> decoded_sals;
11260   symtab_and_line last_sal;
11261   gdb::array_view<symtab_and_line> sals;
11262   if (arg)
11263     {
11264       decoded_sals
11265         = decode_line_with_current_source (arg,
11266                                            (DECODE_LINE_FUNFIRSTLINE
11267                                             | DECODE_LINE_LIST_MODE));
11268       default_match = 0;
11269       sals = decoded_sals;
11270     }
11271   else
11272     {
11273       /* Set sal's line, symtab, pc, and pspace to the values
11274          corresponding to the last call to print_frame_info.  If the
11275          codepoint is not valid, this will set all the fields to 0.  */
11276       last_sal = get_last_displayed_sal ();
11277       if (last_sal.symtab == 0)
11278         error (_("No source file specified."));
11279
11280       default_match = 1;
11281       sals = last_sal;
11282     }
11283
11284   /* We don't call resolve_sal_pc here.  That's not as bad as it
11285      seems, because all existing breakpoints typically have both
11286      file/line and pc set.  So, if clear is given file/line, we can
11287      match this to existing breakpoint without obtaining pc at all.
11288
11289      We only support clearing given the address explicitly 
11290      present in breakpoint table.  Say, we've set breakpoint 
11291      at file:line.  There were several PC values for that file:line,
11292      due to optimization, all in one block.
11293
11294      We've picked one PC value.  If "clear" is issued with another
11295      PC corresponding to the same file:line, the breakpoint won't
11296      be cleared.  We probably can still clear the breakpoint, but 
11297      since the other PC value is never presented to user, user
11298      can only find it by guessing, and it does not seem important
11299      to support that.  */
11300
11301   /* For each line spec given, delete bps which correspond to it.  Do
11302      it in two passes, solely to preserve the current behavior that
11303      from_tty is forced true if we delete more than one
11304      breakpoint.  */
11305
11306   std::vector<struct breakpoint *> found;
11307   for (const auto &sal : sals)
11308     {
11309       const char *sal_fullname;
11310
11311       /* If exact pc given, clear bpts at that pc.
11312          If line given (pc == 0), clear all bpts on specified line.
11313          If defaulting, clear all bpts on default line
11314          or at default pc.
11315
11316          defaulting    sal.pc != 0    tests to do
11317
11318          0              1             pc
11319          1              1             pc _and_ line
11320          0              0             line
11321          1              0             <can't happen> */
11322
11323       sal_fullname = (sal.symtab == NULL
11324                       ? NULL : symtab_to_fullname (sal.symtab));
11325
11326       /* Find all matching breakpoints and add them to 'found'.  */
11327       ALL_BREAKPOINTS (b)
11328         {
11329           int match = 0;
11330           /* Are we going to delete b?  */
11331           if (b->type != bp_none && !is_watchpoint (b))
11332             {
11333               struct bp_location *loc = b->loc;
11334               for (; loc; loc = loc->next)
11335                 {
11336                   /* If the user specified file:line, don't allow a PC
11337                      match.  This matches historical gdb behavior.  */
11338                   int pc_match = (!sal.explicit_line
11339                                   && sal.pc
11340                                   && (loc->pspace == sal.pspace)
11341                                   && (loc->address == sal.pc)
11342                                   && (!section_is_overlay (loc->section)
11343                                       || loc->section == sal.section));
11344                   int line_match = 0;
11345
11346                   if ((default_match || sal.explicit_line)
11347                       && loc->symtab != NULL
11348                       && sal_fullname != NULL
11349                       && sal.pspace == loc->pspace
11350                       && loc->line_number == sal.line
11351                       && filename_cmp (symtab_to_fullname (loc->symtab),
11352                                        sal_fullname) == 0)
11353                     line_match = 1;
11354
11355                   if (pc_match || line_match)
11356                     {
11357                       match = 1;
11358                       break;
11359                     }
11360                 }
11361             }
11362
11363           if (match)
11364             found.push_back (b);
11365         }
11366     }
11367
11368   /* Now go thru the 'found' chain and delete them.  */
11369   if (found.empty ())
11370     {
11371       if (arg)
11372         error (_("No breakpoint at %s."), arg);
11373       else
11374         error (_("No breakpoint at this line."));
11375     }
11376
11377   /* Remove duplicates from the vec.  */
11378   std::sort (found.begin (), found.end (),
11379              [] (const breakpoint *bp_a, const breakpoint *bp_b)
11380              {
11381                return compare_breakpoints (bp_a, bp_b) < 0;
11382              });
11383   found.erase (std::unique (found.begin (), found.end (),
11384                             [] (const breakpoint *bp_a, const breakpoint *bp_b)
11385                             {
11386                               return compare_breakpoints (bp_a, bp_b) == 0;
11387                             }),
11388                found.end ());
11389
11390   if (found.size () > 1)
11391     from_tty = 1;       /* Always report if deleted more than one.  */
11392   if (from_tty)
11393     {
11394       if (found.size () == 1)
11395         printf_unfiltered (_("Deleted breakpoint "));
11396       else
11397         printf_unfiltered (_("Deleted breakpoints "));
11398     }
11399
11400   for (breakpoint *iter : found)
11401     {
11402       if (from_tty)
11403         printf_unfiltered ("%d ", iter->number);
11404       delete_breakpoint (iter);
11405     }
11406   if (from_tty)
11407     putchar_unfiltered ('\n');
11408 }
11409 \f
11410 /* Delete breakpoint in BS if they are `delete' breakpoints and
11411    all breakpoints that are marked for deletion, whether hit or not.
11412    This is called after any breakpoint is hit, or after errors.  */
11413
11414 void
11415 breakpoint_auto_delete (bpstat bs)
11416 {
11417   struct breakpoint *b, *b_tmp;
11418
11419   for (; bs; bs = bs->next)
11420     if (bs->breakpoint_at
11421         && bs->breakpoint_at->disposition == disp_del
11422         && bs->stop)
11423       delete_breakpoint (bs->breakpoint_at);
11424
11425   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11426   {
11427     if (b->disposition == disp_del_at_next_stop)
11428       delete_breakpoint (b);
11429   }
11430 }
11431
11432 /* A comparison function for bp_location AP and BP being interfaced to
11433    qsort.  Sort elements primarily by their ADDRESS (no matter what
11434    bl_address_is_meaningful says), secondarily by ordering first
11435    permanent elements and terciarily just ensuring the array is sorted
11436    stable way despite qsort being an unstable algorithm.  */
11437
11438 static int
11439 bp_locations_compare (const void *ap, const void *bp)
11440 {
11441   const struct bp_location *a = *(const struct bp_location **) ap;
11442   const struct bp_location *b = *(const struct bp_location **) bp;
11443
11444   if (a->address != b->address)
11445     return (a->address > b->address) - (a->address < b->address);
11446
11447   /* Sort locations at the same address by their pspace number, keeping
11448      locations of the same inferior (in a multi-inferior environment)
11449      grouped.  */
11450
11451   if (a->pspace->num != b->pspace->num)
11452     return ((a->pspace->num > b->pspace->num)
11453             - (a->pspace->num < b->pspace->num));
11454
11455   /* Sort permanent breakpoints first.  */
11456   if (a->permanent != b->permanent)
11457     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11458
11459   /* Make the internal GDB representation stable across GDB runs
11460      where A and B memory inside GDB can differ.  Breakpoint locations of
11461      the same type at the same address can be sorted in arbitrary order.  */
11462
11463   if (a->owner->number != b->owner->number)
11464     return ((a->owner->number > b->owner->number)
11465             - (a->owner->number < b->owner->number));
11466
11467   return (a > b) - (a < b);
11468 }
11469
11470 /* Set bp_locations_placed_address_before_address_max and
11471    bp_locations_shadow_len_after_address_max according to the current
11472    content of the bp_locations array.  */
11473
11474 static void
11475 bp_locations_target_extensions_update (void)
11476 {
11477   struct bp_location *bl, **blp_tmp;
11478
11479   bp_locations_placed_address_before_address_max = 0;
11480   bp_locations_shadow_len_after_address_max = 0;
11481
11482   ALL_BP_LOCATIONS (bl, blp_tmp)
11483     {
11484       CORE_ADDR start, end, addr;
11485
11486       if (!bp_location_has_shadow (bl))
11487         continue;
11488
11489       start = bl->target_info.placed_address;
11490       end = start + bl->target_info.shadow_len;
11491
11492       gdb_assert (bl->address >= start);
11493       addr = bl->address - start;
11494       if (addr > bp_locations_placed_address_before_address_max)
11495         bp_locations_placed_address_before_address_max = addr;
11496
11497       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11498
11499       gdb_assert (bl->address < end);
11500       addr = end - bl->address;
11501       if (addr > bp_locations_shadow_len_after_address_max)
11502         bp_locations_shadow_len_after_address_max = addr;
11503     }
11504 }
11505
11506 /* Download tracepoint locations if they haven't been.  */
11507
11508 static void
11509 download_tracepoint_locations (void)
11510 {
11511   struct breakpoint *b;
11512   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11513
11514   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11515
11516   ALL_TRACEPOINTS (b)
11517     {
11518       struct bp_location *bl;
11519       struct tracepoint *t;
11520       int bp_location_downloaded = 0;
11521
11522       if ((b->type == bp_fast_tracepoint
11523            ? !may_insert_fast_tracepoints
11524            : !may_insert_tracepoints))
11525         continue;
11526
11527       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11528         {
11529           if (target_can_download_tracepoint ())
11530             can_download_tracepoint = TRIBOOL_TRUE;
11531           else
11532             can_download_tracepoint = TRIBOOL_FALSE;
11533         }
11534
11535       if (can_download_tracepoint == TRIBOOL_FALSE)
11536         break;
11537
11538       for (bl = b->loc; bl; bl = bl->next)
11539         {
11540           /* In tracepoint, locations are _never_ duplicated, so
11541              should_be_inserted is equivalent to
11542              unduplicated_should_be_inserted.  */
11543           if (!should_be_inserted (bl) || bl->inserted)
11544             continue;
11545
11546           switch_to_program_space_and_thread (bl->pspace);
11547
11548           target_download_tracepoint (bl);
11549
11550           bl->inserted = 1;
11551           bp_location_downloaded = 1;
11552         }
11553       t = (struct tracepoint *) b;
11554       t->number_on_target = b->number;
11555       if (bp_location_downloaded)
11556         gdb::observers::breakpoint_modified.notify (b);
11557     }
11558 }
11559
11560 /* Swap the insertion/duplication state between two locations.  */
11561
11562 static void
11563 swap_insertion (struct bp_location *left, struct bp_location *right)
11564 {
11565   const int left_inserted = left->inserted;
11566   const int left_duplicate = left->duplicate;
11567   const int left_needs_update = left->needs_update;
11568   const struct bp_target_info left_target_info = left->target_info;
11569
11570   /* Locations of tracepoints can never be duplicated.  */
11571   if (is_tracepoint (left->owner))
11572     gdb_assert (!left->duplicate);
11573   if (is_tracepoint (right->owner))
11574     gdb_assert (!right->duplicate);
11575
11576   left->inserted = right->inserted;
11577   left->duplicate = right->duplicate;
11578   left->needs_update = right->needs_update;
11579   left->target_info = right->target_info;
11580   right->inserted = left_inserted;
11581   right->duplicate = left_duplicate;
11582   right->needs_update = left_needs_update;
11583   right->target_info = left_target_info;
11584 }
11585
11586 /* Force the re-insertion of the locations at ADDRESS.  This is called
11587    once a new/deleted/modified duplicate location is found and we are evaluating
11588    conditions on the target's side.  Such conditions need to be updated on
11589    the target.  */
11590
11591 static void
11592 force_breakpoint_reinsertion (struct bp_location *bl)
11593 {
11594   struct bp_location **locp = NULL, **loc2p;
11595   struct bp_location *loc;
11596   CORE_ADDR address = 0;
11597   int pspace_num;
11598
11599   address = bl->address;
11600   pspace_num = bl->pspace->num;
11601
11602   /* This is only meaningful if the target is
11603      evaluating conditions and if the user has
11604      opted for condition evaluation on the target's
11605      side.  */
11606   if (gdb_evaluates_breakpoint_condition_p ()
11607       || !target_supports_evaluation_of_breakpoint_conditions ())
11608     return;
11609
11610   /* Flag all breakpoint locations with this address and
11611      the same program space as the location
11612      as "its condition has changed".  We need to
11613      update the conditions on the target's side.  */
11614   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11615     {
11616       loc = *loc2p;
11617
11618       if (!is_breakpoint (loc->owner)
11619           || pspace_num != loc->pspace->num)
11620         continue;
11621
11622       /* Flag the location appropriately.  We use a different state to
11623          let everyone know that we already updated the set of locations
11624          with addr bl->address and program space bl->pspace.  This is so
11625          we don't have to keep calling these functions just to mark locations
11626          that have already been marked.  */
11627       loc->condition_changed = condition_updated;
11628
11629       /* Free the agent expression bytecode as well.  We will compute
11630          it later on.  */
11631       loc->cond_bytecode.reset ();
11632     }
11633 }
11634 /* Called whether new breakpoints are created, or existing breakpoints
11635    deleted, to update the global location list and recompute which
11636    locations are duplicate of which.
11637
11638    The INSERT_MODE flag determines whether locations may not, may, or
11639    shall be inserted now.  See 'enum ugll_insert_mode' for more
11640    info.  */
11641
11642 static void
11643 update_global_location_list (enum ugll_insert_mode insert_mode)
11644 {
11645   struct breakpoint *b;
11646   struct bp_location **locp, *loc;
11647   /* Last breakpoint location address that was marked for update.  */
11648   CORE_ADDR last_addr = 0;
11649   /* Last breakpoint location program space that was marked for update.  */
11650   int last_pspace_num = -1;
11651
11652   /* Used in the duplicates detection below.  When iterating over all
11653      bp_locations, points to the first bp_location of a given address.
11654      Breakpoints and watchpoints of different types are never
11655      duplicates of each other.  Keep one pointer for each type of
11656      breakpoint/watchpoint, so we only need to loop over all locations
11657      once.  */
11658   struct bp_location *bp_loc_first;  /* breakpoint */
11659   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11660   struct bp_location *awp_loc_first; /* access watchpoint */
11661   struct bp_location *rwp_loc_first; /* read watchpoint */
11662
11663   /* Saved former bp_locations array which we compare against the newly
11664      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11665   struct bp_location **old_locp;
11666   unsigned old_locations_count;
11667   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11668
11669   old_locations_count = bp_locations_count;
11670   bp_locations = NULL;
11671   bp_locations_count = 0;
11672
11673   ALL_BREAKPOINTS (b)
11674     for (loc = b->loc; loc; loc = loc->next)
11675       bp_locations_count++;
11676
11677   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11678   locp = bp_locations;
11679   ALL_BREAKPOINTS (b)
11680     for (loc = b->loc; loc; loc = loc->next)
11681       *locp++ = loc;
11682   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11683          bp_locations_compare);
11684
11685   bp_locations_target_extensions_update ();
11686
11687   /* Identify bp_location instances that are no longer present in the
11688      new list, and therefore should be freed.  Note that it's not
11689      necessary that those locations should be removed from inferior --
11690      if there's another location at the same address (previously
11691      marked as duplicate), we don't need to remove/insert the
11692      location.
11693      
11694      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11695      and former bp_location array state respectively.  */
11696
11697   locp = bp_locations;
11698   for (old_locp = old_locations.get ();
11699        old_locp < old_locations.get () + old_locations_count;
11700        old_locp++)
11701     {
11702       struct bp_location *old_loc = *old_locp;
11703       struct bp_location **loc2p;
11704
11705       /* Tells if 'old_loc' is found among the new locations.  If
11706          not, we have to free it.  */
11707       int found_object = 0;
11708       /* Tells if the location should remain inserted in the target.  */
11709       int keep_in_target = 0;
11710       int removed = 0;
11711
11712       /* Skip LOCP entries which will definitely never be needed.
11713          Stop either at or being the one matching OLD_LOC.  */
11714       while (locp < bp_locations + bp_locations_count
11715              && (*locp)->address < old_loc->address)
11716         locp++;
11717
11718       for (loc2p = locp;
11719            (loc2p < bp_locations + bp_locations_count
11720             && (*loc2p)->address == old_loc->address);
11721            loc2p++)
11722         {
11723           /* Check if this is a new/duplicated location or a duplicated
11724              location that had its condition modified.  If so, we want to send
11725              its condition to the target if evaluation of conditions is taking
11726              place there.  */
11727           if ((*loc2p)->condition_changed == condition_modified
11728               && (last_addr != old_loc->address
11729                   || last_pspace_num != old_loc->pspace->num))
11730             {
11731               force_breakpoint_reinsertion (*loc2p);
11732               last_pspace_num = old_loc->pspace->num;
11733             }
11734
11735           if (*loc2p == old_loc)
11736             found_object = 1;
11737         }
11738
11739       /* We have already handled this address, update it so that we don't
11740          have to go through updates again.  */
11741       last_addr = old_loc->address;
11742
11743       /* Target-side condition evaluation: Handle deleted locations.  */
11744       if (!found_object)
11745         force_breakpoint_reinsertion (old_loc);
11746
11747       /* If this location is no longer present, and inserted, look if
11748          there's maybe a new location at the same address.  If so,
11749          mark that one inserted, and don't remove this one.  This is
11750          needed so that we don't have a time window where a breakpoint
11751          at certain location is not inserted.  */
11752
11753       if (old_loc->inserted)
11754         {
11755           /* If the location is inserted now, we might have to remove
11756              it.  */
11757
11758           if (found_object && should_be_inserted (old_loc))
11759             {
11760               /* The location is still present in the location list,
11761                  and still should be inserted.  Don't do anything.  */
11762               keep_in_target = 1;
11763             }
11764           else
11765             {
11766               /* This location still exists, but it won't be kept in the
11767                  target since it may have been disabled.  We proceed to
11768                  remove its target-side condition.  */
11769
11770               /* The location is either no longer present, or got
11771                  disabled.  See if there's another location at the
11772                  same address, in which case we don't need to remove
11773                  this one from the target.  */
11774
11775               /* OLD_LOC comes from existing struct breakpoint.  */
11776               if (bl_address_is_meaningful (old_loc))
11777                 {
11778                   for (loc2p = locp;
11779                        (loc2p < bp_locations + bp_locations_count
11780                         && (*loc2p)->address == old_loc->address);
11781                        loc2p++)
11782                     {
11783                       struct bp_location *loc2 = *loc2p;
11784
11785                       if (breakpoint_locations_match (loc2, old_loc))
11786                         {
11787                           /* Read watchpoint locations are switched to
11788                              access watchpoints, if the former are not
11789                              supported, but the latter are.  */
11790                           if (is_hardware_watchpoint (old_loc->owner))
11791                             {
11792                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11793                               loc2->watchpoint_type = old_loc->watchpoint_type;
11794                             }
11795
11796                           /* loc2 is a duplicated location. We need to check
11797                              if it should be inserted in case it will be
11798                              unduplicated.  */
11799                           if (loc2 != old_loc
11800                               && unduplicated_should_be_inserted (loc2))
11801                             {
11802                               swap_insertion (old_loc, loc2);
11803                               keep_in_target = 1;
11804                               break;
11805                             }
11806                         }
11807                     }
11808                 }
11809             }
11810
11811           if (!keep_in_target)
11812             {
11813               if (remove_breakpoint (old_loc))
11814                 {
11815                   /* This is just about all we can do.  We could keep
11816                      this location on the global list, and try to
11817                      remove it next time, but there's no particular
11818                      reason why we will succeed next time.
11819                      
11820                      Note that at this point, old_loc->owner is still
11821                      valid, as delete_breakpoint frees the breakpoint
11822                      only after calling us.  */
11823                   printf_filtered (_("warning: Error removing "
11824                                      "breakpoint %d\n"), 
11825                                    old_loc->owner->number);
11826                 }
11827               removed = 1;
11828             }
11829         }
11830
11831       if (!found_object)
11832         {
11833           if (removed && target_is_non_stop_p ()
11834               && need_moribund_for_location_type (old_loc))
11835             {
11836               /* This location was removed from the target.  In
11837                  non-stop mode, a race condition is possible where
11838                  we've removed a breakpoint, but stop events for that
11839                  breakpoint are already queued and will arrive later.
11840                  We apply an heuristic to be able to distinguish such
11841                  SIGTRAPs from other random SIGTRAPs: we keep this
11842                  breakpoint location for a bit, and will retire it
11843                  after we see some number of events.  The theory here
11844                  is that reporting of events should, "on the average",
11845                  be fair, so after a while we'll see events from all
11846                  threads that have anything of interest, and no longer
11847                  need to keep this breakpoint location around.  We
11848                  don't hold locations forever so to reduce chances of
11849                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11850                  SIGTRAP.
11851
11852                  The heuristic failing can be disastrous on
11853                  decr_pc_after_break targets.
11854
11855                  On decr_pc_after_break targets, like e.g., x86-linux,
11856                  if we fail to recognize a late breakpoint SIGTRAP,
11857                  because events_till_retirement has reached 0 too
11858                  soon, we'll fail to do the PC adjustment, and report
11859                  a random SIGTRAP to the user.  When the user resumes
11860                  the inferior, it will most likely immediately crash
11861                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11862                  corrupted, because of being resumed e.g., in the
11863                  middle of a multi-byte instruction, or skipped a
11864                  one-byte instruction.  This was actually seen happen
11865                  on native x86-linux, and should be less rare on
11866                  targets that do not support new thread events, like
11867                  remote, due to the heuristic depending on
11868                  thread_count.
11869
11870                  Mistaking a random SIGTRAP for a breakpoint trap
11871                  causes similar symptoms (PC adjustment applied when
11872                  it shouldn't), but then again, playing with SIGTRAPs
11873                  behind the debugger's back is asking for trouble.
11874
11875                  Since hardware watchpoint traps are always
11876                  distinguishable from other traps, so we don't need to
11877                  apply keep hardware watchpoint moribund locations
11878                  around.  We simply always ignore hardware watchpoint
11879                  traps we can no longer explain.  */
11880
11881               old_loc->events_till_retirement = 3 * (thread_count () + 1);
11882               old_loc->owner = NULL;
11883
11884               moribund_locations.push_back (old_loc);
11885             }
11886           else
11887             {
11888               old_loc->owner = NULL;
11889               decref_bp_location (&old_loc);
11890             }
11891         }
11892     }
11893
11894   /* Rescan breakpoints at the same address and section, marking the
11895      first one as "first" and any others as "duplicates".  This is so
11896      that the bpt instruction is only inserted once.  If we have a
11897      permanent breakpoint at the same place as BPT, make that one the
11898      official one, and the rest as duplicates.  Permanent breakpoints
11899      are sorted first for the same address.
11900
11901      Do the same for hardware watchpoints, but also considering the
11902      watchpoint's type (regular/access/read) and length.  */
11903
11904   bp_loc_first = NULL;
11905   wp_loc_first = NULL;
11906   awp_loc_first = NULL;
11907   rwp_loc_first = NULL;
11908   ALL_BP_LOCATIONS (loc, locp)
11909     {
11910       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11911          non-NULL.  */
11912       struct bp_location **loc_first_p;
11913       b = loc->owner;
11914
11915       if (!unduplicated_should_be_inserted (loc)
11916           || !bl_address_is_meaningful (loc)
11917           /* Don't detect duplicate for tracepoint locations because they are
11918            never duplicated.  See the comments in field `duplicate' of
11919            `struct bp_location'.  */
11920           || is_tracepoint (b))
11921         {
11922           /* Clear the condition modification flag.  */
11923           loc->condition_changed = condition_unchanged;
11924           continue;
11925         }
11926
11927       if (b->type == bp_hardware_watchpoint)
11928         loc_first_p = &wp_loc_first;
11929       else if (b->type == bp_read_watchpoint)
11930         loc_first_p = &rwp_loc_first;
11931       else if (b->type == bp_access_watchpoint)
11932         loc_first_p = &awp_loc_first;
11933       else
11934         loc_first_p = &bp_loc_first;
11935
11936       if (*loc_first_p == NULL
11937           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11938           || !breakpoint_locations_match (loc, *loc_first_p))
11939         {
11940           *loc_first_p = loc;
11941           loc->duplicate = 0;
11942
11943           if (is_breakpoint (loc->owner) && loc->condition_changed)
11944             {
11945               loc->needs_update = 1;
11946               /* Clear the condition modification flag.  */
11947               loc->condition_changed = condition_unchanged;
11948             }
11949           continue;
11950         }
11951
11952
11953       /* This and the above ensure the invariant that the first location
11954          is not duplicated, and is the inserted one.
11955          All following are marked as duplicated, and are not inserted.  */
11956       if (loc->inserted)
11957         swap_insertion (loc, *loc_first_p);
11958       loc->duplicate = 1;
11959
11960       /* Clear the condition modification flag.  */
11961       loc->condition_changed = condition_unchanged;
11962     }
11963
11964   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11965     {
11966       if (insert_mode != UGLL_DONT_INSERT)
11967         insert_breakpoint_locations ();
11968       else
11969         {
11970           /* Even though the caller told us to not insert new
11971              locations, we may still need to update conditions on the
11972              target's side of breakpoints that were already inserted
11973              if the target is evaluating breakpoint conditions.  We
11974              only update conditions for locations that are marked
11975              "needs_update".  */
11976           update_inserted_breakpoint_locations ();
11977         }
11978     }
11979
11980   if (insert_mode != UGLL_DONT_INSERT)
11981     download_tracepoint_locations ();
11982 }
11983
11984 void
11985 breakpoint_retire_moribund (void)
11986 {
11987   for (int ix = 0; ix < moribund_locations.size (); ++ix)
11988     {
11989       struct bp_location *loc = moribund_locations[ix];
11990       if (--(loc->events_till_retirement) == 0)
11991         {
11992           decref_bp_location (&loc);
11993           unordered_remove (moribund_locations, ix);
11994           --ix;
11995         }
11996     }
11997 }
11998
11999 static void
12000 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12001 {
12002
12003   try
12004     {
12005       update_global_location_list (insert_mode);
12006     }
12007   catch (const gdb_exception_error &e)
12008     {
12009     }
12010 }
12011
12012 /* Clear BKP from a BPS.  */
12013
12014 static void
12015 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12016 {
12017   bpstat bs;
12018
12019   for (bs = bps; bs; bs = bs->next)
12020     if (bs->breakpoint_at == bpt)
12021       {
12022         bs->breakpoint_at = NULL;
12023         bs->old_val = NULL;
12024         /* bs->commands will be freed later.  */
12025       }
12026 }
12027
12028 /* Callback for iterate_over_threads.  */
12029 static int
12030 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12031 {
12032   struct breakpoint *bpt = (struct breakpoint *) data;
12033
12034   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12035   return 0;
12036 }
12037
12038 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12039    callbacks.  */
12040
12041 static void
12042 say_where (struct breakpoint *b)
12043 {
12044   struct value_print_options opts;
12045
12046   get_user_print_options (&opts);
12047
12048   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12049      single string.  */
12050   if (b->loc == NULL)
12051     {
12052       /* For pending locations, the output differs slightly based
12053          on b->extra_string.  If this is non-NULL, it contains either
12054          a condition or dprintf arguments.  */
12055       if (b->extra_string == NULL)
12056         {
12057           printf_filtered (_(" (%s) pending."),
12058                            event_location_to_string (b->location.get ()));
12059         }
12060       else if (b->type == bp_dprintf)
12061         {
12062           printf_filtered (_(" (%s,%s) pending."),
12063                            event_location_to_string (b->location.get ()),
12064                            b->extra_string);
12065         }
12066       else
12067         {
12068           printf_filtered (_(" (%s %s) pending."),
12069                            event_location_to_string (b->location.get ()),
12070                            b->extra_string);
12071         }
12072     }
12073   else
12074     {
12075       if (opts.addressprint || b->loc->symtab == NULL)
12076         {
12077           printf_filtered (" at ");
12078           fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12079                         address_style.style (),
12080                         gdb_stdout);
12081         }
12082       if (b->loc->symtab != NULL)
12083         {
12084           /* If there is a single location, we can print the location
12085              more nicely.  */
12086           if (b->loc->next == NULL)
12087             {
12088               puts_filtered (": file ");
12089               fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12090                             file_name_style.style (),
12091                             gdb_stdout);
12092               printf_filtered (", line %d.",
12093                                b->loc->line_number);
12094             }
12095           else
12096             /* This is not ideal, but each location may have a
12097                different file name, and this at least reflects the
12098                real situation somewhat.  */
12099             printf_filtered (": %s.",
12100                              event_location_to_string (b->location.get ()));
12101         }
12102
12103       if (b->loc->next)
12104         {
12105           struct bp_location *loc = b->loc;
12106           int n = 0;
12107           for (; loc; loc = loc->next)
12108             ++n;
12109           printf_filtered (" (%d locations)", n);
12110         }
12111     }
12112 }
12113
12114 bp_location::~bp_location ()
12115 {
12116   xfree (function_name);
12117 }
12118
12119 /* Destructor for the breakpoint base class.  */
12120
12121 breakpoint::~breakpoint ()
12122 {
12123   xfree (this->cond_string);
12124   xfree (this->extra_string);
12125   xfree (this->filter);
12126 }
12127
12128 static struct bp_location *
12129 base_breakpoint_allocate_location (struct breakpoint *self)
12130 {
12131   return new bp_location (self);
12132 }
12133
12134 static void
12135 base_breakpoint_re_set (struct breakpoint *b)
12136 {
12137   /* Nothing to re-set. */
12138 }
12139
12140 #define internal_error_pure_virtual_called() \
12141   gdb_assert_not_reached ("pure virtual function called")
12142
12143 static int
12144 base_breakpoint_insert_location (struct bp_location *bl)
12145 {
12146   internal_error_pure_virtual_called ();
12147 }
12148
12149 static int
12150 base_breakpoint_remove_location (struct bp_location *bl,
12151                                  enum remove_bp_reason reason)
12152 {
12153   internal_error_pure_virtual_called ();
12154 }
12155
12156 static int
12157 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12158                                 const address_space *aspace,
12159                                 CORE_ADDR bp_addr,
12160                                 const struct target_waitstatus *ws)
12161 {
12162   internal_error_pure_virtual_called ();
12163 }
12164
12165 static void
12166 base_breakpoint_check_status (bpstat bs)
12167 {
12168   /* Always stop.   */
12169 }
12170
12171 /* A "works_in_software_mode" breakpoint_ops method that just internal
12172    errors.  */
12173
12174 static int
12175 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12176 {
12177   internal_error_pure_virtual_called ();
12178 }
12179
12180 /* A "resources_needed" breakpoint_ops method that just internal
12181    errors.  */
12182
12183 static int
12184 base_breakpoint_resources_needed (const struct bp_location *bl)
12185 {
12186   internal_error_pure_virtual_called ();
12187 }
12188
12189 static enum print_stop_action
12190 base_breakpoint_print_it (bpstat bs)
12191 {
12192   internal_error_pure_virtual_called ();
12193 }
12194
12195 static void
12196 base_breakpoint_print_one_detail (const struct breakpoint *self,
12197                                   struct ui_out *uiout)
12198 {
12199   /* nothing */
12200 }
12201
12202 static void
12203 base_breakpoint_print_mention (struct breakpoint *b)
12204 {
12205   internal_error_pure_virtual_called ();
12206 }
12207
12208 static void
12209 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12210 {
12211   internal_error_pure_virtual_called ();
12212 }
12213
12214 static void
12215 base_breakpoint_create_sals_from_location
12216   (const struct event_location *location,
12217    struct linespec_result *canonical,
12218    enum bptype type_wanted)
12219 {
12220   internal_error_pure_virtual_called ();
12221 }
12222
12223 static void
12224 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12225                                         struct linespec_result *c,
12226                                         gdb::unique_xmalloc_ptr<char> cond_string,
12227                                         gdb::unique_xmalloc_ptr<char> extra_string,
12228                                         enum bptype type_wanted,
12229                                         enum bpdisp disposition,
12230                                         int thread,
12231                                         int task, int ignore_count,
12232                                         const struct breakpoint_ops *o,
12233                                         int from_tty, int enabled,
12234                                         int internal, unsigned flags)
12235 {
12236   internal_error_pure_virtual_called ();
12237 }
12238
12239 static std::vector<symtab_and_line>
12240 base_breakpoint_decode_location (struct breakpoint *b,
12241                                  const struct event_location *location,
12242                                  struct program_space *search_pspace)
12243 {
12244   internal_error_pure_virtual_called ();
12245 }
12246
12247 /* The default 'explains_signal' method.  */
12248
12249 static int
12250 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12251 {
12252   return 1;
12253 }
12254
12255 /* The default "after_condition_true" method.  */
12256
12257 static void
12258 base_breakpoint_after_condition_true (struct bpstats *bs)
12259 {
12260   /* Nothing to do.   */
12261 }
12262
12263 struct breakpoint_ops base_breakpoint_ops =
12264 {
12265   base_breakpoint_allocate_location,
12266   base_breakpoint_re_set,
12267   base_breakpoint_insert_location,
12268   base_breakpoint_remove_location,
12269   base_breakpoint_breakpoint_hit,
12270   base_breakpoint_check_status,
12271   base_breakpoint_resources_needed,
12272   base_breakpoint_works_in_software_mode,
12273   base_breakpoint_print_it,
12274   NULL,
12275   base_breakpoint_print_one_detail,
12276   base_breakpoint_print_mention,
12277   base_breakpoint_print_recreate,
12278   base_breakpoint_create_sals_from_location,
12279   base_breakpoint_create_breakpoints_sal,
12280   base_breakpoint_decode_location,
12281   base_breakpoint_explains_signal,
12282   base_breakpoint_after_condition_true,
12283 };
12284
12285 /* Default breakpoint_ops methods.  */
12286
12287 static void
12288 bkpt_re_set (struct breakpoint *b)
12289 {
12290   /* FIXME: is this still reachable?  */
12291   if (breakpoint_event_location_empty_p (b))
12292     {
12293       /* Anything without a location can't be re-set.  */
12294       delete_breakpoint (b);
12295       return;
12296     }
12297
12298   breakpoint_re_set_default (b);
12299 }
12300
12301 static int
12302 bkpt_insert_location (struct bp_location *bl)
12303 {
12304   CORE_ADDR addr = bl->target_info.reqstd_address;
12305
12306   bl->target_info.kind = breakpoint_kind (bl, &addr);
12307   bl->target_info.placed_address = addr;
12308
12309   if (bl->loc_type == bp_loc_hardware_breakpoint)
12310     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12311   else
12312     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12313 }
12314
12315 static int
12316 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12317 {
12318   if (bl->loc_type == bp_loc_hardware_breakpoint)
12319     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12320   else
12321     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12322 }
12323
12324 static int
12325 bkpt_breakpoint_hit (const struct bp_location *bl,
12326                      const address_space *aspace, CORE_ADDR bp_addr,
12327                      const struct target_waitstatus *ws)
12328 {
12329   if (ws->kind != TARGET_WAITKIND_STOPPED
12330       || ws->value.sig != GDB_SIGNAL_TRAP)
12331     return 0;
12332
12333   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12334                                  aspace, bp_addr))
12335     return 0;
12336
12337   if (overlay_debugging         /* unmapped overlay section */
12338       && section_is_overlay (bl->section)
12339       && !section_is_mapped (bl->section))
12340     return 0;
12341
12342   return 1;
12343 }
12344
12345 static int
12346 dprintf_breakpoint_hit (const struct bp_location *bl,
12347                         const address_space *aspace, CORE_ADDR bp_addr,
12348                         const struct target_waitstatus *ws)
12349 {
12350   if (dprintf_style == dprintf_style_agent
12351       && target_can_run_breakpoint_commands ())
12352     {
12353       /* An agent-style dprintf never causes a stop.  If we see a trap
12354          for this address it must be for a breakpoint that happens to
12355          be set at the same address.  */
12356       return 0;
12357     }
12358
12359   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12360 }
12361
12362 static int
12363 bkpt_resources_needed (const struct bp_location *bl)
12364 {
12365   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12366
12367   return 1;
12368 }
12369
12370 static enum print_stop_action
12371 bkpt_print_it (bpstat bs)
12372 {
12373   struct breakpoint *b;
12374   const struct bp_location *bl;
12375   int bp_temp;
12376   struct ui_out *uiout = current_uiout;
12377
12378   gdb_assert (bs->bp_location_at != NULL);
12379
12380   bl = bs->bp_location_at;
12381   b = bs->breakpoint_at;
12382
12383   bp_temp = b->disposition == disp_del;
12384   if (bl->address != bl->requested_address)
12385     breakpoint_adjustment_warning (bl->requested_address,
12386                                    bl->address,
12387                                    b->number, 1);
12388   annotate_breakpoint (b->number);
12389   maybe_print_thread_hit_breakpoint (uiout);
12390
12391   if (bp_temp)
12392     uiout->text ("Temporary breakpoint ");
12393   else
12394     uiout->text ("Breakpoint ");
12395   if (uiout->is_mi_like_p ())
12396     {
12397       uiout->field_string ("reason",
12398                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12399       uiout->field_string ("disp", bpdisp_text (b->disposition));
12400     }
12401   uiout->field_int ("bkptno", b->number);
12402   uiout->text (", ");
12403
12404   return PRINT_SRC_AND_LOC;
12405 }
12406
12407 static void
12408 bkpt_print_mention (struct breakpoint *b)
12409 {
12410   if (current_uiout->is_mi_like_p ())
12411     return;
12412
12413   switch (b->type)
12414     {
12415     case bp_breakpoint:
12416     case bp_gnu_ifunc_resolver:
12417       if (b->disposition == disp_del)
12418         printf_filtered (_("Temporary breakpoint"));
12419       else
12420         printf_filtered (_("Breakpoint"));
12421       printf_filtered (_(" %d"), b->number);
12422       if (b->type == bp_gnu_ifunc_resolver)
12423         printf_filtered (_(" at gnu-indirect-function resolver"));
12424       break;
12425     case bp_hardware_breakpoint:
12426       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12427       break;
12428     case bp_dprintf:
12429       printf_filtered (_("Dprintf %d"), b->number);
12430       break;
12431     }
12432
12433   say_where (b);
12434 }
12435
12436 static void
12437 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12438 {
12439   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12440     fprintf_unfiltered (fp, "tbreak");
12441   else if (tp->type == bp_breakpoint)
12442     fprintf_unfiltered (fp, "break");
12443   else if (tp->type == bp_hardware_breakpoint
12444            && tp->disposition == disp_del)
12445     fprintf_unfiltered (fp, "thbreak");
12446   else if (tp->type == bp_hardware_breakpoint)
12447     fprintf_unfiltered (fp, "hbreak");
12448   else
12449     internal_error (__FILE__, __LINE__,
12450                     _("unhandled breakpoint type %d"), (int) tp->type);
12451
12452   fprintf_unfiltered (fp, " %s",
12453                       event_location_to_string (tp->location.get ()));
12454
12455   /* Print out extra_string if this breakpoint is pending.  It might
12456      contain, for example, conditions that were set by the user.  */
12457   if (tp->loc == NULL && tp->extra_string != NULL)
12458     fprintf_unfiltered (fp, " %s", tp->extra_string);
12459
12460   print_recreate_thread (tp, fp);
12461 }
12462
12463 static void
12464 bkpt_create_sals_from_location (const struct event_location *location,
12465                                 struct linespec_result *canonical,
12466                                 enum bptype type_wanted)
12467 {
12468   create_sals_from_location_default (location, canonical, type_wanted);
12469 }
12470
12471 static void
12472 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12473                              struct linespec_result *canonical,
12474                              gdb::unique_xmalloc_ptr<char> cond_string,
12475                              gdb::unique_xmalloc_ptr<char> extra_string,
12476                              enum bptype type_wanted,
12477                              enum bpdisp disposition,
12478                              int thread,
12479                              int task, int ignore_count,
12480                              const struct breakpoint_ops *ops,
12481                              int from_tty, int enabled,
12482                              int internal, unsigned flags)
12483 {
12484   create_breakpoints_sal_default (gdbarch, canonical,
12485                                   std::move (cond_string),
12486                                   std::move (extra_string),
12487                                   type_wanted,
12488                                   disposition, thread, task,
12489                                   ignore_count, ops, from_tty,
12490                                   enabled, internal, flags);
12491 }
12492
12493 static std::vector<symtab_and_line>
12494 bkpt_decode_location (struct breakpoint *b,
12495                       const struct event_location *location,
12496                       struct program_space *search_pspace)
12497 {
12498   return decode_location_default (b, location, search_pspace);
12499 }
12500
12501 /* Virtual table for internal breakpoints.  */
12502
12503 static void
12504 internal_bkpt_re_set (struct breakpoint *b)
12505 {
12506   switch (b->type)
12507     {
12508       /* Delete overlay event and longjmp master breakpoints; they
12509          will be reset later by breakpoint_re_set.  */
12510     case bp_overlay_event:
12511     case bp_longjmp_master:
12512     case bp_std_terminate_master:
12513     case bp_exception_master:
12514       delete_breakpoint (b);
12515       break;
12516
12517       /* This breakpoint is special, it's set up when the inferior
12518          starts and we really don't want to touch it.  */
12519     case bp_shlib_event:
12520
12521       /* Like bp_shlib_event, this breakpoint type is special.  Once
12522          it is set up, we do not want to touch it.  */
12523     case bp_thread_event:
12524       break;
12525     }
12526 }
12527
12528 static void
12529 internal_bkpt_check_status (bpstat bs)
12530 {
12531   if (bs->breakpoint_at->type == bp_shlib_event)
12532     {
12533       /* If requested, stop when the dynamic linker notifies GDB of
12534          events.  This allows the user to get control and place
12535          breakpoints in initializer routines for dynamically loaded
12536          objects (among other things).  */
12537       bs->stop = stop_on_solib_events;
12538       bs->print = stop_on_solib_events;
12539     }
12540   else
12541     bs->stop = 0;
12542 }
12543
12544 static enum print_stop_action
12545 internal_bkpt_print_it (bpstat bs)
12546 {
12547   struct breakpoint *b;
12548
12549   b = bs->breakpoint_at;
12550
12551   switch (b->type)
12552     {
12553     case bp_shlib_event:
12554       /* Did we stop because the user set the stop_on_solib_events
12555          variable?  (If so, we report this as a generic, "Stopped due
12556          to shlib event" message.) */
12557       print_solib_event (0);
12558       break;
12559
12560     case bp_thread_event:
12561       /* Not sure how we will get here.
12562          GDB should not stop for these breakpoints.  */
12563       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12564       break;
12565
12566     case bp_overlay_event:
12567       /* By analogy with the thread event, GDB should not stop for these.  */
12568       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12569       break;
12570
12571     case bp_longjmp_master:
12572       /* These should never be enabled.  */
12573       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12574       break;
12575
12576     case bp_std_terminate_master:
12577       /* These should never be enabled.  */
12578       printf_filtered (_("std::terminate Master Breakpoint: "
12579                          "gdb should not stop!\n"));
12580       break;
12581
12582     case bp_exception_master:
12583       /* These should never be enabled.  */
12584       printf_filtered (_("Exception Master Breakpoint: "
12585                          "gdb should not stop!\n"));
12586       break;
12587     }
12588
12589   return PRINT_NOTHING;
12590 }
12591
12592 static void
12593 internal_bkpt_print_mention (struct breakpoint *b)
12594 {
12595   /* Nothing to mention.  These breakpoints are internal.  */
12596 }
12597
12598 /* Virtual table for momentary breakpoints  */
12599
12600 static void
12601 momentary_bkpt_re_set (struct breakpoint *b)
12602 {
12603   /* Keep temporary breakpoints, which can be encountered when we step
12604      over a dlopen call and solib_add is resetting the breakpoints.
12605      Otherwise these should have been blown away via the cleanup chain
12606      or by breakpoint_init_inferior when we rerun the executable.  */
12607 }
12608
12609 static void
12610 momentary_bkpt_check_status (bpstat bs)
12611 {
12612   /* Nothing.  The point of these breakpoints is causing a stop.  */
12613 }
12614
12615 static enum print_stop_action
12616 momentary_bkpt_print_it (bpstat bs)
12617 {
12618   return PRINT_UNKNOWN;
12619 }
12620
12621 static void
12622 momentary_bkpt_print_mention (struct breakpoint *b)
12623 {
12624   /* Nothing to mention.  These breakpoints are internal.  */
12625 }
12626
12627 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12628
12629    It gets cleared already on the removal of the first one of such placed
12630    breakpoints.  This is OK as they get all removed altogether.  */
12631
12632 longjmp_breakpoint::~longjmp_breakpoint ()
12633 {
12634   thread_info *tp = find_thread_global_id (this->thread);
12635
12636   if (tp != NULL)
12637     tp->initiating_frame = null_frame_id;
12638 }
12639
12640 /* Specific methods for probe breakpoints.  */
12641
12642 static int
12643 bkpt_probe_insert_location (struct bp_location *bl)
12644 {
12645   int v = bkpt_insert_location (bl);
12646
12647   if (v == 0)
12648     {
12649       /* The insertion was successful, now let's set the probe's semaphore
12650          if needed.  */
12651       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12652     }
12653
12654   return v;
12655 }
12656
12657 static int
12658 bkpt_probe_remove_location (struct bp_location *bl,
12659                             enum remove_bp_reason reason)
12660 {
12661   /* Let's clear the semaphore before removing the location.  */
12662   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12663
12664   return bkpt_remove_location (bl, reason);
12665 }
12666
12667 static void
12668 bkpt_probe_create_sals_from_location (const struct event_location *location,
12669                                       struct linespec_result *canonical,
12670                                       enum bptype type_wanted)
12671 {
12672   struct linespec_sals lsal;
12673
12674   lsal.sals = parse_probes (location, NULL, canonical);
12675   lsal.canonical
12676     = xstrdup (event_location_to_string (canonical->location.get ()));
12677   canonical->lsals.push_back (std::move (lsal));
12678 }
12679
12680 static std::vector<symtab_and_line>
12681 bkpt_probe_decode_location (struct breakpoint *b,
12682                             const struct event_location *location,
12683                             struct program_space *search_pspace)
12684 {
12685   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12686   if (sals.empty ())
12687     error (_("probe not found"));
12688   return sals;
12689 }
12690
12691 /* The breakpoint_ops structure to be used in tracepoints.  */
12692
12693 static void
12694 tracepoint_re_set (struct breakpoint *b)
12695 {
12696   breakpoint_re_set_default (b);
12697 }
12698
12699 static int
12700 tracepoint_breakpoint_hit (const struct bp_location *bl,
12701                            const address_space *aspace, CORE_ADDR bp_addr,
12702                            const struct target_waitstatus *ws)
12703 {
12704   /* By definition, the inferior does not report stops at
12705      tracepoints.  */
12706   return 0;
12707 }
12708
12709 static void
12710 tracepoint_print_one_detail (const struct breakpoint *self,
12711                              struct ui_out *uiout)
12712 {
12713   struct tracepoint *tp = (struct tracepoint *) self;
12714   if (!tp->static_trace_marker_id.empty ())
12715     {
12716       gdb_assert (self->type == bp_static_tracepoint);
12717
12718       uiout->text ("\tmarker id is ");
12719       uiout->field_string ("static-tracepoint-marker-string-id",
12720                            tp->static_trace_marker_id);
12721       uiout->text ("\n");
12722     }
12723 }
12724
12725 static void
12726 tracepoint_print_mention (struct breakpoint *b)
12727 {
12728   if (current_uiout->is_mi_like_p ())
12729     return;
12730
12731   switch (b->type)
12732     {
12733     case bp_tracepoint:
12734       printf_filtered (_("Tracepoint"));
12735       printf_filtered (_(" %d"), b->number);
12736       break;
12737     case bp_fast_tracepoint:
12738       printf_filtered (_("Fast tracepoint"));
12739       printf_filtered (_(" %d"), b->number);
12740       break;
12741     case bp_static_tracepoint:
12742       printf_filtered (_("Static tracepoint"));
12743       printf_filtered (_(" %d"), b->number);
12744       break;
12745     default:
12746       internal_error (__FILE__, __LINE__,
12747                       _("unhandled tracepoint type %d"), (int) b->type);
12748     }
12749
12750   say_where (b);
12751 }
12752
12753 static void
12754 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12755 {
12756   struct tracepoint *tp = (struct tracepoint *) self;
12757
12758   if (self->type == bp_fast_tracepoint)
12759     fprintf_unfiltered (fp, "ftrace");
12760   else if (self->type == bp_static_tracepoint)
12761     fprintf_unfiltered (fp, "strace");
12762   else if (self->type == bp_tracepoint)
12763     fprintf_unfiltered (fp, "trace");
12764   else
12765     internal_error (__FILE__, __LINE__,
12766                     _("unhandled tracepoint type %d"), (int) self->type);
12767
12768   fprintf_unfiltered (fp, " %s",
12769                       event_location_to_string (self->location.get ()));
12770   print_recreate_thread (self, fp);
12771
12772   if (tp->pass_count)
12773     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12774 }
12775
12776 static void
12777 tracepoint_create_sals_from_location (const struct event_location *location,
12778                                       struct linespec_result *canonical,
12779                                       enum bptype type_wanted)
12780 {
12781   create_sals_from_location_default (location, canonical, type_wanted);
12782 }
12783
12784 static void
12785 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12786                                    struct linespec_result *canonical,
12787                                    gdb::unique_xmalloc_ptr<char> cond_string,
12788                                    gdb::unique_xmalloc_ptr<char> extra_string,
12789                                    enum bptype type_wanted,
12790                                    enum bpdisp disposition,
12791                                    int thread,
12792                                    int task, int ignore_count,
12793                                    const struct breakpoint_ops *ops,
12794                                    int from_tty, int enabled,
12795                                    int internal, unsigned flags)
12796 {
12797   create_breakpoints_sal_default (gdbarch, canonical,
12798                                   std::move (cond_string),
12799                                   std::move (extra_string),
12800                                   type_wanted,
12801                                   disposition, thread, task,
12802                                   ignore_count, ops, from_tty,
12803                                   enabled, internal, flags);
12804 }
12805
12806 static std::vector<symtab_and_line>
12807 tracepoint_decode_location (struct breakpoint *b,
12808                             const struct event_location *location,
12809                             struct program_space *search_pspace)
12810 {
12811   return decode_location_default (b, location, search_pspace);
12812 }
12813
12814 struct breakpoint_ops tracepoint_breakpoint_ops;
12815
12816 /* The breakpoint_ops structure to be use on tracepoints placed in a
12817    static probe.  */
12818
12819 static void
12820 tracepoint_probe_create_sals_from_location
12821   (const struct event_location *location,
12822    struct linespec_result *canonical,
12823    enum bptype type_wanted)
12824 {
12825   /* We use the same method for breakpoint on probes.  */
12826   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12827 }
12828
12829 static std::vector<symtab_and_line>
12830 tracepoint_probe_decode_location (struct breakpoint *b,
12831                                   const struct event_location *location,
12832                                   struct program_space *search_pspace)
12833 {
12834   /* We use the same method for breakpoint on probes.  */
12835   return bkpt_probe_decode_location (b, location, search_pspace);
12836 }
12837
12838 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12839
12840 /* Dprintf breakpoint_ops methods.  */
12841
12842 static void
12843 dprintf_re_set (struct breakpoint *b)
12844 {
12845   breakpoint_re_set_default (b);
12846
12847   /* extra_string should never be non-NULL for dprintf.  */
12848   gdb_assert (b->extra_string != NULL);
12849
12850   /* 1 - connect to target 1, that can run breakpoint commands.
12851      2 - create a dprintf, which resolves fine.
12852      3 - disconnect from target 1
12853      4 - connect to target 2, that can NOT run breakpoint commands.
12854
12855      After steps #3/#4, you'll want the dprintf command list to
12856      be updated, because target 1 and 2 may well return different
12857      answers for target_can_run_breakpoint_commands().
12858      Given absence of finer grained resetting, we get to do
12859      it all the time.  */
12860   if (b->extra_string != NULL)
12861     update_dprintf_command_list (b);
12862 }
12863
12864 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12865
12866 static void
12867 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12868 {
12869   fprintf_unfiltered (fp, "dprintf %s,%s",
12870                       event_location_to_string (tp->location.get ()),
12871                       tp->extra_string);
12872   print_recreate_thread (tp, fp);
12873 }
12874
12875 /* Implement the "after_condition_true" breakpoint_ops method for
12876    dprintf.
12877
12878    dprintf's are implemented with regular commands in their command
12879    list, but we run the commands here instead of before presenting the
12880    stop to the user, as dprintf's don't actually cause a stop.  This
12881    also makes it so that the commands of multiple dprintfs at the same
12882    address are all handled.  */
12883
12884 static void
12885 dprintf_after_condition_true (struct bpstats *bs)
12886 {
12887   struct bpstats tmp_bs;
12888   struct bpstats *tmp_bs_p = &tmp_bs;
12889
12890   /* dprintf's never cause a stop.  This wasn't set in the
12891      check_status hook instead because that would make the dprintf's
12892      condition not be evaluated.  */
12893   bs->stop = 0;
12894
12895   /* Run the command list here.  Take ownership of it instead of
12896      copying.  We never want these commands to run later in
12897      bpstat_do_actions, if a breakpoint that causes a stop happens to
12898      be set at same address as this dprintf, or even if running the
12899      commands here throws.  */
12900   tmp_bs.commands = bs->commands;
12901   bs->commands = NULL;
12902
12903   bpstat_do_actions_1 (&tmp_bs_p);
12904
12905   /* 'tmp_bs.commands' will usually be NULL by now, but
12906      bpstat_do_actions_1 may return early without processing the whole
12907      list.  */
12908 }
12909
12910 /* The breakpoint_ops structure to be used on static tracepoints with
12911    markers (`-m').  */
12912
12913 static void
12914 strace_marker_create_sals_from_location (const struct event_location *location,
12915                                          struct linespec_result *canonical,
12916                                          enum bptype type_wanted)
12917 {
12918   struct linespec_sals lsal;
12919   const char *arg_start, *arg;
12920
12921   arg = arg_start = get_linespec_location (location)->spec_string;
12922   lsal.sals = decode_static_tracepoint_spec (&arg);
12923
12924   std::string str (arg_start, arg - arg_start);
12925   const char *ptr = str.c_str ();
12926   canonical->location
12927     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12928
12929   lsal.canonical
12930     = xstrdup (event_location_to_string (canonical->location.get ()));
12931   canonical->lsals.push_back (std::move (lsal));
12932 }
12933
12934 static void
12935 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12936                                       struct linespec_result *canonical,
12937                                       gdb::unique_xmalloc_ptr<char> cond_string,
12938                                       gdb::unique_xmalloc_ptr<char> extra_string,
12939                                       enum bptype type_wanted,
12940                                       enum bpdisp disposition,
12941                                       int thread,
12942                                       int task, int ignore_count,
12943                                       const struct breakpoint_ops *ops,
12944                                       int from_tty, int enabled,
12945                                       int internal, unsigned flags)
12946 {
12947   const linespec_sals &lsal = canonical->lsals[0];
12948
12949   /* If the user is creating a static tracepoint by marker id
12950      (strace -m MARKER_ID), then store the sals index, so that
12951      breakpoint_re_set can try to match up which of the newly
12952      found markers corresponds to this one, and, don't try to
12953      expand multiple locations for each sal, given than SALS
12954      already should contain all sals for MARKER_ID.  */
12955
12956   for (size_t i = 0; i < lsal.sals.size (); i++)
12957     {
12958       event_location_up location
12959         = copy_event_location (canonical->location.get ());
12960
12961       std::unique_ptr<tracepoint> tp (new tracepoint ());
12962       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
12963                            std::move (location), NULL,
12964                            std::move (cond_string),
12965                            std::move (extra_string),
12966                            type_wanted, disposition,
12967                            thread, task, ignore_count, ops,
12968                            from_tty, enabled, internal, flags,
12969                            canonical->special_display);
12970       /* Given that its possible to have multiple markers with
12971          the same string id, if the user is creating a static
12972          tracepoint by marker id ("strace -m MARKER_ID"), then
12973          store the sals index, so that breakpoint_re_set can
12974          try to match up which of the newly found markers
12975          corresponds to this one  */
12976       tp->static_trace_marker_id_idx = i;
12977
12978       install_breakpoint (internal, std::move (tp), 0);
12979     }
12980 }
12981
12982 static std::vector<symtab_and_line>
12983 strace_marker_decode_location (struct breakpoint *b,
12984                                const struct event_location *location,
12985                                struct program_space *search_pspace)
12986 {
12987   struct tracepoint *tp = (struct tracepoint *) b;
12988   const char *s = get_linespec_location (location)->spec_string;
12989
12990   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12991   if (sals.size () > tp->static_trace_marker_id_idx)
12992     {
12993       sals[0] = sals[tp->static_trace_marker_id_idx];
12994       sals.resize (1);
12995       return sals;
12996     }
12997   else
12998     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
12999 }
13000
13001 static struct breakpoint_ops strace_marker_breakpoint_ops;
13002
13003 static int
13004 strace_marker_p (struct breakpoint *b)
13005 {
13006   return b->ops == &strace_marker_breakpoint_ops;
13007 }
13008
13009 /* Delete a breakpoint and clean up all traces of it in the data
13010    structures.  */
13011
13012 void
13013 delete_breakpoint (struct breakpoint *bpt)
13014 {
13015   struct breakpoint *b;
13016
13017   gdb_assert (bpt != NULL);
13018
13019   /* Has this bp already been deleted?  This can happen because
13020      multiple lists can hold pointers to bp's.  bpstat lists are
13021      especial culprits.
13022
13023      One example of this happening is a watchpoint's scope bp.  When
13024      the scope bp triggers, we notice that the watchpoint is out of
13025      scope, and delete it.  We also delete its scope bp.  But the
13026      scope bp is marked "auto-deleting", and is already on a bpstat.
13027      That bpstat is then checked for auto-deleting bp's, which are
13028      deleted.
13029
13030      A real solution to this problem might involve reference counts in
13031      bp's, and/or giving them pointers back to their referencing
13032      bpstat's, and teaching delete_breakpoint to only free a bp's
13033      storage when no more references were extent.  A cheaper bandaid
13034      was chosen.  */
13035   if (bpt->type == bp_none)
13036     return;
13037
13038   /* At least avoid this stale reference until the reference counting
13039      of breakpoints gets resolved.  */
13040   if (bpt->related_breakpoint != bpt)
13041     {
13042       struct breakpoint *related;
13043       struct watchpoint *w;
13044
13045       if (bpt->type == bp_watchpoint_scope)
13046         w = (struct watchpoint *) bpt->related_breakpoint;
13047       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13048         w = (struct watchpoint *) bpt;
13049       else
13050         w = NULL;
13051       if (w != NULL)
13052         watchpoint_del_at_next_stop (w);
13053
13054       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13055       for (related = bpt; related->related_breakpoint != bpt;
13056            related = related->related_breakpoint);
13057       related->related_breakpoint = bpt->related_breakpoint;
13058       bpt->related_breakpoint = bpt;
13059     }
13060
13061   /* watch_command_1 creates a watchpoint but only sets its number if
13062      update_watchpoint succeeds in creating its bp_locations.  If there's
13063      a problem in that process, we'll be asked to delete the half-created
13064      watchpoint.  In that case, don't announce the deletion.  */
13065   if (bpt->number)
13066     gdb::observers::breakpoint_deleted.notify (bpt);
13067
13068   if (breakpoint_chain == bpt)
13069     breakpoint_chain = bpt->next;
13070
13071   ALL_BREAKPOINTS (b)
13072     if (b->next == bpt)
13073     {
13074       b->next = bpt->next;
13075       break;
13076     }
13077
13078   /* Be sure no bpstat's are pointing at the breakpoint after it's
13079      been freed.  */
13080   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13081      in all threads for now.  Note that we cannot just remove bpstats
13082      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13083      commands are associated with the bpstat; if we remove it here,
13084      then the later call to bpstat_do_actions (&stop_bpstat); in
13085      event-top.c won't do anything, and temporary breakpoints with
13086      commands won't work.  */
13087
13088   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13089
13090   /* Now that breakpoint is removed from breakpoint list, update the
13091      global location list.  This will remove locations that used to
13092      belong to this breakpoint.  Do this before freeing the breakpoint
13093      itself, since remove_breakpoint looks at location's owner.  It
13094      might be better design to have location completely
13095      self-contained, but it's not the case now.  */
13096   update_global_location_list (UGLL_DONT_INSERT);
13097
13098   /* On the chance that someone will soon try again to delete this
13099      same bp, we mark it as deleted before freeing its storage.  */
13100   bpt->type = bp_none;
13101   delete bpt;
13102 }
13103
13104 /* Iterator function to call a user-provided callback function once
13105    for each of B and its related breakpoints.  */
13106
13107 static void
13108 iterate_over_related_breakpoints (struct breakpoint *b,
13109                                   gdb::function_view<void (breakpoint *)> function)
13110 {
13111   struct breakpoint *related;
13112
13113   related = b;
13114   do
13115     {
13116       struct breakpoint *next;
13117
13118       /* FUNCTION may delete RELATED.  */
13119       next = related->related_breakpoint;
13120
13121       if (next == related)
13122         {
13123           /* RELATED is the last ring entry.  */
13124           function (related);
13125
13126           /* FUNCTION may have deleted it, so we'd never reach back to
13127              B.  There's nothing left to do anyway, so just break
13128              out.  */
13129           break;
13130         }
13131       else
13132         function (related);
13133
13134       related = next;
13135     }
13136   while (related != b);
13137 }
13138
13139 static void
13140 delete_command (const char *arg, int from_tty)
13141 {
13142   struct breakpoint *b, *b_tmp;
13143
13144   dont_repeat ();
13145
13146   if (arg == 0)
13147     {
13148       int breaks_to_delete = 0;
13149
13150       /* Delete all breakpoints if no argument.  Do not delete
13151          internal breakpoints, these have to be deleted with an
13152          explicit breakpoint number argument.  */
13153       ALL_BREAKPOINTS (b)
13154         if (user_breakpoint_p (b))
13155           {
13156             breaks_to_delete = 1;
13157             break;
13158           }
13159
13160       /* Ask user only if there are some breakpoints to delete.  */
13161       if (!from_tty
13162           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13163         {
13164           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13165             if (user_breakpoint_p (b))
13166               delete_breakpoint (b);
13167         }
13168     }
13169   else
13170     map_breakpoint_numbers
13171       (arg, [&] (breakpoint *br)
13172        {
13173          iterate_over_related_breakpoints (br, delete_breakpoint);
13174        });
13175 }
13176
13177 /* Return true if all locations of B bound to PSPACE are pending.  If
13178    PSPACE is NULL, all locations of all program spaces are
13179    considered.  */
13180
13181 static int
13182 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13183 {
13184   struct bp_location *loc;
13185
13186   for (loc = b->loc; loc != NULL; loc = loc->next)
13187     if ((pspace == NULL
13188          || loc->pspace == pspace)
13189         && !loc->shlib_disabled
13190         && !loc->pspace->executing_startup)
13191       return 0;
13192   return 1;
13193 }
13194
13195 /* Subroutine of update_breakpoint_locations to simplify it.
13196    Return non-zero if multiple fns in list LOC have the same name.
13197    Null names are ignored.  */
13198
13199 static int
13200 ambiguous_names_p (struct bp_location *loc)
13201 {
13202   struct bp_location *l;
13203   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13204                                    xcalloc, xfree);
13205
13206   for (l = loc; l != NULL; l = l->next)
13207     {
13208       const char **slot;
13209       const char *name = l->function_name;
13210
13211       /* Allow for some names to be NULL, ignore them.  */
13212       if (name == NULL)
13213         continue;
13214
13215       slot = (const char **) htab_find_slot (htab, (const void *) name,
13216                                              INSERT);
13217       /* NOTE: We can assume slot != NULL here because xcalloc never
13218          returns NULL.  */
13219       if (*slot != NULL)
13220         {
13221           htab_delete (htab);
13222           return 1;
13223         }
13224       *slot = name;
13225     }
13226
13227   htab_delete (htab);
13228   return 0;
13229 }
13230
13231 /* When symbols change, it probably means the sources changed as well,
13232    and it might mean the static tracepoint markers are no longer at
13233    the same address or line numbers they used to be at last we
13234    checked.  Losing your static tracepoints whenever you rebuild is
13235    undesirable.  This function tries to resync/rematch gdb static
13236    tracepoints with the markers on the target, for static tracepoints
13237    that have not been set by marker id.  Static tracepoint that have
13238    been set by marker id are reset by marker id in breakpoint_re_set.
13239    The heuristic is:
13240
13241    1) For a tracepoint set at a specific address, look for a marker at
13242    the old PC.  If one is found there, assume to be the same marker.
13243    If the name / string id of the marker found is different from the
13244    previous known name, assume that means the user renamed the marker
13245    in the sources, and output a warning.
13246
13247    2) For a tracepoint set at a given line number, look for a marker
13248    at the new address of the old line number.  If one is found there,
13249    assume to be the same marker.  If the name / string id of the
13250    marker found is different from the previous known name, assume that
13251    means the user renamed the marker in the sources, and output a
13252    warning.
13253
13254    3) If a marker is no longer found at the same address or line, it
13255    may mean the marker no longer exists.  But it may also just mean
13256    the code changed a bit.  Maybe the user added a few lines of code
13257    that made the marker move up or down (in line number terms).  Ask
13258    the target for info about the marker with the string id as we knew
13259    it.  If found, update line number and address in the matching
13260    static tracepoint.  This will get confused if there's more than one
13261    marker with the same ID (possible in UST, although unadvised
13262    precisely because it confuses tools).  */
13263
13264 static struct symtab_and_line
13265 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13266 {
13267   struct tracepoint *tp = (struct tracepoint *) b;
13268   struct static_tracepoint_marker marker;
13269   CORE_ADDR pc;
13270
13271   pc = sal.pc;
13272   if (sal.line)
13273     find_line_pc (sal.symtab, sal.line, &pc);
13274
13275   if (target_static_tracepoint_marker_at (pc, &marker))
13276     {
13277       if (tp->static_trace_marker_id != marker.str_id)
13278         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13279                  b->number, tp->static_trace_marker_id.c_str (),
13280                  marker.str_id.c_str ());
13281
13282       tp->static_trace_marker_id = std::move (marker.str_id);
13283
13284       return sal;
13285     }
13286
13287   /* Old marker wasn't found on target at lineno.  Try looking it up
13288      by string ID.  */
13289   if (!sal.explicit_pc
13290       && sal.line != 0
13291       && sal.symtab != NULL
13292       && !tp->static_trace_marker_id.empty ())
13293     {
13294       std::vector<static_tracepoint_marker> markers
13295         = target_static_tracepoint_markers_by_strid
13296             (tp->static_trace_marker_id.c_str ());
13297
13298       if (!markers.empty ())
13299         {
13300           struct symbol *sym;
13301           struct static_tracepoint_marker *tpmarker;
13302           struct ui_out *uiout = current_uiout;
13303           struct explicit_location explicit_loc;
13304
13305           tpmarker = &markers[0];
13306
13307           tp->static_trace_marker_id = std::move (tpmarker->str_id);
13308
13309           warning (_("marker for static tracepoint %d (%s) not "
13310                      "found at previous line number"),
13311                    b->number, tp->static_trace_marker_id.c_str ());
13312
13313           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13314           sym = find_pc_sect_function (tpmarker->address, NULL);
13315           uiout->text ("Now in ");
13316           if (sym)
13317             {
13318               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13319                                    ui_out_style_kind::FUNCTION);
13320               uiout->text (" at ");
13321             }
13322           uiout->field_string ("file",
13323                                symtab_to_filename_for_display (sal2.symtab),
13324                                ui_out_style_kind::FILE);
13325           uiout->text (":");
13326
13327           if (uiout->is_mi_like_p ())
13328             {
13329               const char *fullname = symtab_to_fullname (sal2.symtab);
13330
13331               uiout->field_string ("fullname", fullname);
13332             }
13333
13334           uiout->field_int ("line", sal2.line);
13335           uiout->text ("\n");
13336
13337           b->loc->line_number = sal2.line;
13338           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13339
13340           b->location.reset (NULL);
13341           initialize_explicit_location (&explicit_loc);
13342           explicit_loc.source_filename
13343             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13344           explicit_loc.line_offset.offset = b->loc->line_number;
13345           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13346           b->location = new_explicit_location (&explicit_loc);
13347
13348           /* Might be nice to check if function changed, and warn if
13349              so.  */
13350         }
13351     }
13352   return sal;
13353 }
13354
13355 /* Returns 1 iff locations A and B are sufficiently same that
13356    we don't need to report breakpoint as changed.  */
13357
13358 static int
13359 locations_are_equal (struct bp_location *a, struct bp_location *b)
13360 {
13361   while (a && b)
13362     {
13363       if (a->address != b->address)
13364         return 0;
13365
13366       if (a->shlib_disabled != b->shlib_disabled)
13367         return 0;
13368
13369       if (a->enabled != b->enabled)
13370         return 0;
13371
13372       a = a->next;
13373       b = b->next;
13374     }
13375
13376   if ((a == NULL) != (b == NULL))
13377     return 0;
13378
13379   return 1;
13380 }
13381
13382 /* Split all locations of B that are bound to PSPACE out of B's
13383    location list to a separate list and return that list's head.  If
13384    PSPACE is NULL, hoist out all locations of B.  */
13385
13386 static struct bp_location *
13387 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13388 {
13389   struct bp_location head;
13390   struct bp_location *i = b->loc;
13391   struct bp_location **i_link = &b->loc;
13392   struct bp_location *hoisted = &head;
13393
13394   if (pspace == NULL)
13395     {
13396       i = b->loc;
13397       b->loc = NULL;
13398       return i;
13399     }
13400
13401   head.next = NULL;
13402
13403   while (i != NULL)
13404     {
13405       if (i->pspace == pspace)
13406         {
13407           *i_link = i->next;
13408           i->next = NULL;
13409           hoisted->next = i;
13410           hoisted = i;
13411         }
13412       else
13413         i_link = &i->next;
13414       i = *i_link;
13415     }
13416
13417   return head.next;
13418 }
13419
13420 /* Create new breakpoint locations for B (a hardware or software
13421    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13422    zero, then B is a ranged breakpoint.  Only recreates locations for
13423    FILTER_PSPACE.  Locations of other program spaces are left
13424    untouched.  */
13425
13426 void
13427 update_breakpoint_locations (struct breakpoint *b,
13428                              struct program_space *filter_pspace,
13429                              gdb::array_view<const symtab_and_line> sals,
13430                              gdb::array_view<const symtab_and_line> sals_end)
13431 {
13432   struct bp_location *existing_locations;
13433
13434   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13435     {
13436       /* Ranged breakpoints have only one start location and one end
13437          location.  */
13438       b->enable_state = bp_disabled;
13439       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13440                            "multiple locations found\n"),
13441                          b->number);
13442       return;
13443     }
13444
13445   /* If there's no new locations, and all existing locations are
13446      pending, don't do anything.  This optimizes the common case where
13447      all locations are in the same shared library, that was unloaded.
13448      We'd like to retain the location, so that when the library is
13449      loaded again, we don't loose the enabled/disabled status of the
13450      individual locations.  */
13451   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13452     return;
13453
13454   existing_locations = hoist_existing_locations (b, filter_pspace);
13455
13456   for (const auto &sal : sals)
13457     {
13458       struct bp_location *new_loc;
13459
13460       switch_to_program_space_and_thread (sal.pspace);
13461
13462       new_loc = add_location_to_breakpoint (b, &sal);
13463
13464       /* Reparse conditions, they might contain references to the
13465          old symtab.  */
13466       if (b->cond_string != NULL)
13467         {
13468           const char *s;
13469
13470           s = b->cond_string;
13471           try
13472             {
13473               new_loc->cond = parse_exp_1 (&s, sal.pc,
13474                                            block_for_pc (sal.pc),
13475                                            0);
13476             }
13477           catch (const gdb_exception_error &e)
13478             {
13479               warning (_("failed to reevaluate condition "
13480                          "for breakpoint %d: %s"), 
13481                        b->number, e.what ());
13482               new_loc->enabled = 0;
13483             }
13484         }
13485
13486       if (!sals_end.empty ())
13487         {
13488           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13489
13490           new_loc->length = end - sals[0].pc + 1;
13491         }
13492     }
13493
13494   /* If possible, carry over 'disable' status from existing
13495      breakpoints.  */
13496   {
13497     struct bp_location *e = existing_locations;
13498     /* If there are multiple breakpoints with the same function name,
13499        e.g. for inline functions, comparing function names won't work.
13500        Instead compare pc addresses; this is just a heuristic as things
13501        may have moved, but in practice it gives the correct answer
13502        often enough until a better solution is found.  */
13503     int have_ambiguous_names = ambiguous_names_p (b->loc);
13504
13505     for (; e; e = e->next)
13506       {
13507         if (!e->enabled && e->function_name)
13508           {
13509             struct bp_location *l = b->loc;
13510             if (have_ambiguous_names)
13511               {
13512                 for (; l; l = l->next)
13513                   if (breakpoint_locations_match (e, l))
13514                     {
13515                       l->enabled = 0;
13516                       break;
13517                     }
13518               }
13519             else
13520               {
13521                 for (; l; l = l->next)
13522                   if (l->function_name
13523                       && strcmp (e->function_name, l->function_name) == 0)
13524                     {
13525                       l->enabled = 0;
13526                       break;
13527                     }
13528               }
13529           }
13530       }
13531   }
13532
13533   if (!locations_are_equal (existing_locations, b->loc))
13534     gdb::observers::breakpoint_modified.notify (b);
13535 }
13536
13537 /* Find the SaL locations corresponding to the given LOCATION.
13538    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13539
13540 static std::vector<symtab_and_line>
13541 location_to_sals (struct breakpoint *b, struct event_location *location,
13542                   struct program_space *search_pspace, int *found)
13543 {
13544   struct gdb_exception exception;
13545
13546   gdb_assert (b->ops != NULL);
13547
13548   std::vector<symtab_and_line> sals;
13549
13550   try
13551     {
13552       sals = b->ops->decode_location (b, location, search_pspace);
13553     }
13554   catch (gdb_exception_error &e)
13555     {
13556       int not_found_and_ok = 0;
13557
13558       /* For pending breakpoints, it's expected that parsing will
13559          fail until the right shared library is loaded.  User has
13560          already told to create pending breakpoints and don't need
13561          extra messages.  If breakpoint is in bp_shlib_disabled
13562          state, then user already saw the message about that
13563          breakpoint being disabled, and don't want to see more
13564          errors.  */
13565       if (e.error == NOT_FOUND_ERROR
13566           && (b->condition_not_parsed
13567               || (b->loc != NULL
13568                   && search_pspace != NULL
13569                   && b->loc->pspace != search_pspace)
13570               || (b->loc && b->loc->shlib_disabled)
13571               || (b->loc && b->loc->pspace->executing_startup)
13572               || b->enable_state == bp_disabled))
13573         not_found_and_ok = 1;
13574
13575       if (!not_found_and_ok)
13576         {
13577           /* We surely don't want to warn about the same breakpoint
13578              10 times.  One solution, implemented here, is disable
13579              the breakpoint on error.  Another solution would be to
13580              have separate 'warning emitted' flag.  Since this
13581              happens only when a binary has changed, I don't know
13582              which approach is better.  */
13583           b->enable_state = bp_disabled;
13584           throw;
13585         }
13586
13587       exception = std::move (e);
13588     }
13589
13590   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13591     {
13592       for (auto &sal : sals)
13593         resolve_sal_pc (&sal);
13594       if (b->condition_not_parsed && b->extra_string != NULL)
13595         {
13596           char *cond_string, *extra_string;
13597           int thread, task;
13598
13599           find_condition_and_thread (b->extra_string, sals[0].pc,
13600                                      &cond_string, &thread, &task,
13601                                      &extra_string);
13602           gdb_assert (b->cond_string == NULL);
13603           if (cond_string)
13604             b->cond_string = cond_string;
13605           b->thread = thread;
13606           b->task = task;
13607           if (extra_string)
13608             {
13609               xfree (b->extra_string);
13610               b->extra_string = extra_string;
13611             }
13612           b->condition_not_parsed = 0;
13613         }
13614
13615       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13616         sals[0] = update_static_tracepoint (b, sals[0]);
13617
13618       *found = 1;
13619     }
13620   else
13621     *found = 0;
13622
13623   return sals;
13624 }
13625
13626 /* The default re_set method, for typical hardware or software
13627    breakpoints.  Reevaluate the breakpoint and recreate its
13628    locations.  */
13629
13630 static void
13631 breakpoint_re_set_default (struct breakpoint *b)
13632 {
13633   struct program_space *filter_pspace = current_program_space;
13634   std::vector<symtab_and_line> expanded, expanded_end;
13635
13636   int found;
13637   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13638                                                         filter_pspace, &found);
13639   if (found)
13640     expanded = std::move (sals);
13641
13642   if (b->location_range_end != NULL)
13643     {
13644       std::vector<symtab_and_line> sals_end
13645         = location_to_sals (b, b->location_range_end.get (),
13646                             filter_pspace, &found);
13647       if (found)
13648         expanded_end = std::move (sals_end);
13649     }
13650
13651   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13652 }
13653
13654 /* Default method for creating SALs from an address string.  It basically
13655    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13656
13657 static void
13658 create_sals_from_location_default (const struct event_location *location,
13659                                    struct linespec_result *canonical,
13660                                    enum bptype type_wanted)
13661 {
13662   parse_breakpoint_sals (location, canonical);
13663 }
13664
13665 /* Call create_breakpoints_sal for the given arguments.  This is the default
13666    function for the `create_breakpoints_sal' method of
13667    breakpoint_ops.  */
13668
13669 static void
13670 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13671                                 struct linespec_result *canonical,
13672                                 gdb::unique_xmalloc_ptr<char> cond_string,
13673                                 gdb::unique_xmalloc_ptr<char> extra_string,
13674                                 enum bptype type_wanted,
13675                                 enum bpdisp disposition,
13676                                 int thread,
13677                                 int task, int ignore_count,
13678                                 const struct breakpoint_ops *ops,
13679                                 int from_tty, int enabled,
13680                                 int internal, unsigned flags)
13681 {
13682   create_breakpoints_sal (gdbarch, canonical,
13683                           std::move (cond_string),
13684                           std::move (extra_string),
13685                           type_wanted, disposition,
13686                           thread, task, ignore_count, ops, from_tty,
13687                           enabled, internal, flags);
13688 }
13689
13690 /* Decode the line represented by S by calling decode_line_full.  This is the
13691    default function for the `decode_location' method of breakpoint_ops.  */
13692
13693 static std::vector<symtab_and_line>
13694 decode_location_default (struct breakpoint *b,
13695                          const struct event_location *location,
13696                          struct program_space *search_pspace)
13697 {
13698   struct linespec_result canonical;
13699
13700   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13701                     NULL, 0, &canonical, multiple_symbols_all,
13702                     b->filter);
13703
13704   /* We should get 0 or 1 resulting SALs.  */
13705   gdb_assert (canonical.lsals.size () < 2);
13706
13707   if (!canonical.lsals.empty ())
13708     {
13709       const linespec_sals &lsal = canonical.lsals[0];
13710       return std::move (lsal.sals);
13711     }
13712   return {};
13713 }
13714
13715 /* Reset a breakpoint.  */
13716
13717 static void
13718 breakpoint_re_set_one (breakpoint *b)
13719 {
13720   input_radix = b->input_radix;
13721   set_language (b->language);
13722
13723   b->ops->re_set (b);
13724 }
13725
13726 /* Re-set breakpoint locations for the current program space.
13727    Locations bound to other program spaces are left untouched.  */
13728
13729 void
13730 breakpoint_re_set (void)
13731 {
13732   struct breakpoint *b, *b_tmp;
13733
13734   {
13735     scoped_restore_current_language save_language;
13736     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13737     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13738
13739     /* breakpoint_re_set_one sets the current_language to the language
13740        of the breakpoint it is resetting (see prepare_re_set_context)
13741        before re-evaluating the breakpoint's location.  This change can
13742        unfortunately get undone by accident if the language_mode is set
13743        to auto, and we either switch frames, or more likely in this context,
13744        we select the current frame.
13745
13746        We prevent this by temporarily turning the language_mode to
13747        language_mode_manual.  We restore it once all breakpoints
13748        have been reset.  */
13749     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13750     language_mode = language_mode_manual;
13751
13752     /* Note: we must not try to insert locations until after all
13753        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13754        breakpoint 1, we'd insert the locations of breakpoint 2, which
13755        hadn't been re-set yet, and thus may have stale locations.  */
13756
13757     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13758       {
13759         try
13760           {
13761             breakpoint_re_set_one (b);
13762           }
13763         catch (const gdb_exception &ex)
13764           {
13765             exception_fprintf (gdb_stderr, ex,
13766                                "Error in re-setting breakpoint %d: ",
13767                                b->number);
13768           }
13769       }
13770
13771     jit_breakpoint_re_set ();
13772   }
13773
13774   create_overlay_event_breakpoint ();
13775   create_longjmp_master_breakpoint ();
13776   create_std_terminate_master_breakpoint ();
13777   create_exception_master_breakpoint ();
13778
13779   /* Now we can insert.  */
13780   update_global_location_list (UGLL_MAY_INSERT);
13781 }
13782 \f
13783 /* Reset the thread number of this breakpoint:
13784
13785    - If the breakpoint is for all threads, leave it as-is.
13786    - Else, reset it to the current thread for inferior_ptid.  */
13787 void
13788 breakpoint_re_set_thread (struct breakpoint *b)
13789 {
13790   if (b->thread != -1)
13791     {
13792       b->thread = inferior_thread ()->global_num;
13793
13794       /* We're being called after following a fork.  The new fork is
13795          selected as current, and unless this was a vfork will have a
13796          different program space from the original thread.  Reset that
13797          as well.  */
13798       b->loc->pspace = current_program_space;
13799     }
13800 }
13801
13802 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13803    If from_tty is nonzero, it prints a message to that effect,
13804    which ends with a period (no newline).  */
13805
13806 void
13807 set_ignore_count (int bptnum, int count, int from_tty)
13808 {
13809   struct breakpoint *b;
13810
13811   if (count < 0)
13812     count = 0;
13813
13814   ALL_BREAKPOINTS (b)
13815     if (b->number == bptnum)
13816     {
13817       if (is_tracepoint (b))
13818         {
13819           if (from_tty && count != 0)
13820             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13821                              bptnum);
13822           return;
13823         }
13824       
13825       b->ignore_count = count;
13826       if (from_tty)
13827         {
13828           if (count == 0)
13829             printf_filtered (_("Will stop next time "
13830                                "breakpoint %d is reached."),
13831                              bptnum);
13832           else if (count == 1)
13833             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13834                              bptnum);
13835           else
13836             printf_filtered (_("Will ignore next %d "
13837                                "crossings of breakpoint %d."),
13838                              count, bptnum);
13839         }
13840       gdb::observers::breakpoint_modified.notify (b);
13841       return;
13842     }
13843
13844   error (_("No breakpoint number %d."), bptnum);
13845 }
13846
13847 /* Command to set ignore-count of breakpoint N to COUNT.  */
13848
13849 static void
13850 ignore_command (const char *args, int from_tty)
13851 {
13852   const char *p = args;
13853   int num;
13854
13855   if (p == 0)
13856     error_no_arg (_("a breakpoint number"));
13857
13858   num = get_number (&p);
13859   if (num == 0)
13860     error (_("bad breakpoint number: '%s'"), args);
13861   if (*p == 0)
13862     error (_("Second argument (specified ignore-count) is missing."));
13863
13864   set_ignore_count (num,
13865                     longest_to_int (value_as_long (parse_and_eval (p))),
13866                     from_tty);
13867   if (from_tty)
13868     printf_filtered ("\n");
13869 }
13870 \f
13871
13872 /* Call FUNCTION on each of the breakpoints with numbers in the range
13873    defined by BP_NUM_RANGE (an inclusive range).  */
13874
13875 static void
13876 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13877                              gdb::function_view<void (breakpoint *)> function)
13878 {
13879   if (bp_num_range.first == 0)
13880     {
13881       warning (_("bad breakpoint number at or near '%d'"),
13882                bp_num_range.first);
13883     }
13884   else
13885     {
13886       struct breakpoint *b, *tmp;
13887
13888       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13889         {
13890           bool match = false;
13891
13892           ALL_BREAKPOINTS_SAFE (b, tmp)
13893             if (b->number == i)
13894               {
13895                 match = true;
13896                 function (b);
13897                 break;
13898               }
13899           if (!match)
13900             printf_unfiltered (_("No breakpoint number %d.\n"), i);
13901         }
13902     }
13903 }
13904
13905 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13906    ARGS.  */
13907
13908 static void
13909 map_breakpoint_numbers (const char *args,
13910                         gdb::function_view<void (breakpoint *)> function)
13911 {
13912   if (args == NULL || *args == '\0')
13913     error_no_arg (_("one or more breakpoint numbers"));
13914
13915   number_or_range_parser parser (args);
13916
13917   while (!parser.finished ())
13918     {
13919       int num = parser.get_number ();
13920       map_breakpoint_number_range (std::make_pair (num, num), function);
13921     }
13922 }
13923
13924 /* Return the breakpoint location structure corresponding to the
13925    BP_NUM and LOC_NUM values.  */
13926
13927 static struct bp_location *
13928 find_location_by_number (int bp_num, int loc_num)
13929 {
13930   struct breakpoint *b;
13931
13932   ALL_BREAKPOINTS (b)
13933     if (b->number == bp_num)
13934       {
13935         break;
13936       }
13937
13938   if (!b || b->number != bp_num)
13939     error (_("Bad breakpoint number '%d'"), bp_num);
13940   
13941   if (loc_num == 0)
13942     error (_("Bad breakpoint location number '%d'"), loc_num);
13943
13944   int n = 0;
13945   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13946     if (++n == loc_num)
13947       return loc;
13948
13949   error (_("Bad breakpoint location number '%d'"), loc_num);
13950 }
13951
13952 /* Modes of operation for extract_bp_num.  */
13953 enum class extract_bp_kind
13954 {
13955   /* Extracting a breakpoint number.  */
13956   bp,
13957
13958   /* Extracting a location number.  */
13959   loc,
13960 };
13961
13962 /* Extract a breakpoint or location number (as determined by KIND)
13963    from the string starting at START.  TRAILER is a character which
13964    can be found after the number.  If you don't want a trailer, use
13965    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
13966    string.  This always returns a positive integer.  */
13967
13968 static int
13969 extract_bp_num (extract_bp_kind kind, const char *start,
13970                 int trailer, const char **end_out = NULL)
13971 {
13972   const char *end = start;
13973   int num = get_number_trailer (&end, trailer);
13974   if (num < 0)
13975     error (kind == extract_bp_kind::bp
13976            ? _("Negative breakpoint number '%.*s'")
13977            : _("Negative breakpoint location number '%.*s'"),
13978            int (end - start), start);
13979   if (num == 0)
13980     error (kind == extract_bp_kind::bp
13981            ? _("Bad breakpoint number '%.*s'")
13982            : _("Bad breakpoint location number '%.*s'"),
13983            int (end - start), start);
13984
13985   if (end_out != NULL)
13986     *end_out = end;
13987   return num;
13988 }
13989
13990 /* Extract a breakpoint or location range (as determined by KIND) in
13991    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
13992    representing the (inclusive) range.  The returned pair's elements
13993    are always positive integers.  */
13994
13995 static std::pair<int, int>
13996 extract_bp_or_bp_range (extract_bp_kind kind,
13997                         const std::string &arg,
13998                         std::string::size_type arg_offset)
13999 {
14000   std::pair<int, int> range;
14001   const char *bp_loc = &arg[arg_offset];
14002   std::string::size_type dash = arg.find ('-', arg_offset);
14003   if (dash != std::string::npos)
14004     {
14005       /* bp_loc is a range (x-z).  */
14006       if (arg.length () == dash + 1)
14007         error (kind == extract_bp_kind::bp
14008                ? _("Bad breakpoint number at or near: '%s'")
14009                : _("Bad breakpoint location number at or near: '%s'"),
14010                bp_loc);
14011
14012       const char *end;
14013       const char *start_first = bp_loc;
14014       const char *start_second = &arg[dash + 1];
14015       range.first = extract_bp_num (kind, start_first, '-');
14016       range.second = extract_bp_num (kind, start_second, '\0', &end);
14017
14018       if (range.first > range.second)
14019         error (kind == extract_bp_kind::bp
14020                ? _("Inverted breakpoint range at '%.*s'")
14021                : _("Inverted breakpoint location range at '%.*s'"),
14022                int (end - start_first), start_first);
14023     }
14024   else
14025     {
14026       /* bp_loc is a single value.  */
14027       range.first = extract_bp_num (kind, bp_loc, '\0');
14028       range.second = range.first;
14029     }
14030   return range;
14031 }
14032
14033 /* Extract the breakpoint/location range specified by ARG.  Returns
14034    the breakpoint range in BP_NUM_RANGE, and the location range in
14035    BP_LOC_RANGE.
14036
14037    ARG may be in any of the following forms:
14038
14039    x     where 'x' is a breakpoint number.
14040    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14041    x.y   where 'x' is a breakpoint number and 'y' a location number.
14042    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14043          location number range.
14044 */
14045
14046 static void
14047 extract_bp_number_and_location (const std::string &arg,
14048                                 std::pair<int, int> &bp_num_range,
14049                                 std::pair<int, int> &bp_loc_range)
14050 {
14051   std::string::size_type dot = arg.find ('.');
14052
14053   if (dot != std::string::npos)
14054     {
14055       /* Handle 'x.y' and 'x.y-z' cases.  */
14056
14057       if (arg.length () == dot + 1 || dot == 0)
14058         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14059
14060       bp_num_range.first
14061         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14062       bp_num_range.second = bp_num_range.first;
14063
14064       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14065                                              arg, dot + 1);
14066     }
14067   else
14068     {
14069       /* Handle x and x-y cases.  */
14070
14071       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14072       bp_loc_range.first = 0;
14073       bp_loc_range.second = 0;
14074     }
14075 }
14076
14077 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14078    specifies whether to enable or disable.  */
14079
14080 static void
14081 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14082 {
14083   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14084   if (loc != NULL)
14085     {
14086       if (loc->enabled != enable)
14087         {
14088           loc->enabled = enable;
14089           mark_breakpoint_location_modified (loc);
14090         }
14091       if (target_supports_enable_disable_tracepoint ()
14092           && current_trace_status ()->running && loc->owner
14093           && is_tracepoint (loc->owner))
14094         target_disable_tracepoint (loc);
14095     }
14096   update_global_location_list (UGLL_DONT_INSERT);
14097
14098   gdb::observers::breakpoint_modified.notify (loc->owner);
14099 }
14100
14101 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14102    number of the breakpoint, and BP_LOC_RANGE specifies the
14103    (inclusive) range of location numbers of that breakpoint to
14104    enable/disable.  ENABLE specifies whether to enable or disable the
14105    location.  */
14106
14107 static void
14108 enable_disable_breakpoint_location_range (int bp_num,
14109                                           std::pair<int, int> &bp_loc_range,
14110                                           bool enable)
14111 {
14112   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14113     enable_disable_bp_num_loc (bp_num, i, enable);
14114 }
14115
14116 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14117    If from_tty is nonzero, it prints a message to that effect,
14118    which ends with a period (no newline).  */
14119
14120 void
14121 disable_breakpoint (struct breakpoint *bpt)
14122 {
14123   /* Never disable a watchpoint scope breakpoint; we want to
14124      hit them when we leave scope so we can delete both the
14125      watchpoint and its scope breakpoint at that time.  */
14126   if (bpt->type == bp_watchpoint_scope)
14127     return;
14128
14129   bpt->enable_state = bp_disabled;
14130
14131   /* Mark breakpoint locations modified.  */
14132   mark_breakpoint_modified (bpt);
14133
14134   if (target_supports_enable_disable_tracepoint ()
14135       && current_trace_status ()->running && is_tracepoint (bpt))
14136     {
14137       struct bp_location *location;
14138      
14139       for (location = bpt->loc; location; location = location->next)
14140         target_disable_tracepoint (location);
14141     }
14142
14143   update_global_location_list (UGLL_DONT_INSERT);
14144
14145   gdb::observers::breakpoint_modified.notify (bpt);
14146 }
14147
14148 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14149    specified in ARGS.  ARGS may be in any of the formats handled by
14150    extract_bp_number_and_location.  ENABLE specifies whether to enable
14151    or disable the breakpoints/locations.  */
14152
14153 static void
14154 enable_disable_command (const char *args, int from_tty, bool enable)
14155 {
14156   if (args == 0)
14157     {
14158       struct breakpoint *bpt;
14159
14160       ALL_BREAKPOINTS (bpt)
14161         if (user_breakpoint_p (bpt))
14162           {
14163             if (enable)
14164               enable_breakpoint (bpt);
14165             else
14166               disable_breakpoint (bpt);
14167           }
14168     }
14169   else
14170     {
14171       std::string num = extract_arg (&args);
14172
14173       while (!num.empty ())
14174         {
14175           std::pair<int, int> bp_num_range, bp_loc_range;
14176
14177           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14178
14179           if (bp_loc_range.first == bp_loc_range.second
14180               && bp_loc_range.first == 0)
14181             {
14182               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14183               map_breakpoint_number_range (bp_num_range,
14184                                            enable
14185                                            ? enable_breakpoint
14186                                            : disable_breakpoint);
14187             }
14188           else
14189             {
14190               /* Handle breakpoint ids with formats 'x.y' or
14191                  'x.y-z'.  */
14192               enable_disable_breakpoint_location_range
14193                 (bp_num_range.first, bp_loc_range, enable);
14194             }
14195           num = extract_arg (&args);
14196         }
14197     }
14198 }
14199
14200 /* The disable command disables the specified breakpoints/locations
14201    (or all defined breakpoints) so they're no longer effective in
14202    stopping the inferior.  ARGS may be in any of the forms defined in
14203    extract_bp_number_and_location.  */
14204
14205 static void
14206 disable_command (const char *args, int from_tty)
14207 {
14208   enable_disable_command (args, from_tty, false);
14209 }
14210
14211 static void
14212 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14213                         int count)
14214 {
14215   int target_resources_ok;
14216
14217   if (bpt->type == bp_hardware_breakpoint)
14218     {
14219       int i;
14220       i = hw_breakpoint_used_count ();
14221       target_resources_ok = 
14222         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14223                                             i + 1, 0);
14224       if (target_resources_ok == 0)
14225         error (_("No hardware breakpoint support in the target."));
14226       else if (target_resources_ok < 0)
14227         error (_("Hardware breakpoints used exceeds limit."));
14228     }
14229
14230   if (is_watchpoint (bpt))
14231     {
14232       /* Initialize it just to avoid a GCC false warning.  */
14233       enum enable_state orig_enable_state = bp_disabled;
14234
14235       try
14236         {
14237           struct watchpoint *w = (struct watchpoint *) bpt;
14238
14239           orig_enable_state = bpt->enable_state;
14240           bpt->enable_state = bp_enabled;
14241           update_watchpoint (w, 1 /* reparse */);
14242         }
14243       catch (const gdb_exception &e)
14244         {
14245           bpt->enable_state = orig_enable_state;
14246           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14247                              bpt->number);
14248           return;
14249         }
14250     }
14251
14252   bpt->enable_state = bp_enabled;
14253
14254   /* Mark breakpoint locations modified.  */
14255   mark_breakpoint_modified (bpt);
14256
14257   if (target_supports_enable_disable_tracepoint ()
14258       && current_trace_status ()->running && is_tracepoint (bpt))
14259     {
14260       struct bp_location *location;
14261
14262       for (location = bpt->loc; location; location = location->next)
14263         target_enable_tracepoint (location);
14264     }
14265
14266   bpt->disposition = disposition;
14267   bpt->enable_count = count;
14268   update_global_location_list (UGLL_MAY_INSERT);
14269
14270   gdb::observers::breakpoint_modified.notify (bpt);
14271 }
14272
14273
14274 void
14275 enable_breakpoint (struct breakpoint *bpt)
14276 {
14277   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14278 }
14279
14280 /* The enable command enables the specified breakpoints/locations (or
14281    all defined breakpoints) so they once again become (or continue to
14282    be) effective in stopping the inferior.  ARGS may be in any of the
14283    forms defined in extract_bp_number_and_location.  */
14284
14285 static void
14286 enable_command (const char *args, int from_tty)
14287 {
14288   enable_disable_command (args, from_tty, true);
14289 }
14290
14291 static void
14292 enable_once_command (const char *args, int from_tty)
14293 {
14294   map_breakpoint_numbers
14295     (args, [&] (breakpoint *b)
14296      {
14297        iterate_over_related_breakpoints
14298          (b, [&] (breakpoint *bpt)
14299           {
14300             enable_breakpoint_disp (bpt, disp_disable, 1);
14301           });
14302      });
14303 }
14304
14305 static void
14306 enable_count_command (const char *args, int from_tty)
14307 {
14308   int count;
14309
14310   if (args == NULL)
14311     error_no_arg (_("hit count"));
14312
14313   count = get_number (&args);
14314
14315   map_breakpoint_numbers
14316     (args, [&] (breakpoint *b)
14317      {
14318        iterate_over_related_breakpoints
14319          (b, [&] (breakpoint *bpt)
14320           {
14321             enable_breakpoint_disp (bpt, disp_disable, count);
14322           });
14323      });
14324 }
14325
14326 static void
14327 enable_delete_command (const char *args, int from_tty)
14328 {
14329   map_breakpoint_numbers
14330     (args, [&] (breakpoint *b)
14331      {
14332        iterate_over_related_breakpoints
14333          (b, [&] (breakpoint *bpt)
14334           {
14335             enable_breakpoint_disp (bpt, disp_del, 1);
14336           });
14337      });
14338 }
14339 \f
14340 static void
14341 set_breakpoint_cmd (const char *args, int from_tty)
14342 {
14343 }
14344
14345 static void
14346 show_breakpoint_cmd (const char *args, int from_tty)
14347 {
14348 }
14349
14350 /* Invalidate last known value of any hardware watchpoint if
14351    the memory which that value represents has been written to by
14352    GDB itself.  */
14353
14354 static void
14355 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14356                                       CORE_ADDR addr, ssize_t len,
14357                                       const bfd_byte *data)
14358 {
14359   struct breakpoint *bp;
14360
14361   ALL_BREAKPOINTS (bp)
14362     if (bp->enable_state == bp_enabled
14363         && bp->type == bp_hardware_watchpoint)
14364       {
14365         struct watchpoint *wp = (struct watchpoint *) bp;
14366
14367         if (wp->val_valid && wp->val != nullptr)
14368           {
14369             struct bp_location *loc;
14370
14371             for (loc = bp->loc; loc != NULL; loc = loc->next)
14372               if (loc->loc_type == bp_loc_hardware_watchpoint
14373                   && loc->address + loc->length > addr
14374                   && addr + len > loc->address)
14375                 {
14376                   wp->val = NULL;
14377                   wp->val_valid = 0;
14378                 }
14379           }
14380       }
14381 }
14382
14383 /* Create and insert a breakpoint for software single step.  */
14384
14385 void
14386 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14387                                const address_space *aspace,
14388                                CORE_ADDR next_pc)
14389 {
14390   struct thread_info *tp = inferior_thread ();
14391   struct symtab_and_line sal;
14392   CORE_ADDR pc = next_pc;
14393
14394   if (tp->control.single_step_breakpoints == NULL)
14395     {
14396       tp->control.single_step_breakpoints
14397         = new_single_step_breakpoint (tp->global_num, gdbarch);
14398     }
14399
14400   sal = find_pc_line (pc, 0);
14401   sal.pc = pc;
14402   sal.section = find_pc_overlay (pc);
14403   sal.explicit_pc = 1;
14404   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14405
14406   update_global_location_list (UGLL_INSERT);
14407 }
14408
14409 /* Insert single step breakpoints according to the current state.  */
14410
14411 int
14412 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14413 {
14414   struct regcache *regcache = get_current_regcache ();
14415   std::vector<CORE_ADDR> next_pcs;
14416
14417   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14418
14419   if (!next_pcs.empty ())
14420     {
14421       struct frame_info *frame = get_current_frame ();
14422       const address_space *aspace = get_frame_address_space (frame);
14423
14424       for (CORE_ADDR pc : next_pcs)
14425         insert_single_step_breakpoint (gdbarch, aspace, pc);
14426
14427       return 1;
14428     }
14429   else
14430     return 0;
14431 }
14432
14433 /* See breakpoint.h.  */
14434
14435 int
14436 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14437                                        const address_space *aspace,
14438                                        CORE_ADDR pc)
14439 {
14440   struct bp_location *loc;
14441
14442   for (loc = bp->loc; loc != NULL; loc = loc->next)
14443     if (loc->inserted
14444         && breakpoint_location_address_match (loc, aspace, pc))
14445       return 1;
14446
14447   return 0;
14448 }
14449
14450 /* Check whether a software single-step breakpoint is inserted at
14451    PC.  */
14452
14453 int
14454 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14455                                         CORE_ADDR pc)
14456 {
14457   struct breakpoint *bpt;
14458
14459   ALL_BREAKPOINTS (bpt)
14460     {
14461       if (bpt->type == bp_single_step
14462           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14463         return 1;
14464     }
14465   return 0;
14466 }
14467
14468 /* Tracepoint-specific operations.  */
14469
14470 /* Set tracepoint count to NUM.  */
14471 static void
14472 set_tracepoint_count (int num)
14473 {
14474   tracepoint_count = num;
14475   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14476 }
14477
14478 static void
14479 trace_command (const char *arg, int from_tty)
14480 {
14481   struct breakpoint_ops *ops;
14482
14483   event_location_up location = string_to_event_location (&arg,
14484                                                          current_language);
14485   if (location != NULL
14486       && event_location_type (location.get ()) == PROBE_LOCATION)
14487     ops = &tracepoint_probe_breakpoint_ops;
14488   else
14489     ops = &tracepoint_breakpoint_ops;
14490
14491   create_breakpoint (get_current_arch (),
14492                      location.get (),
14493                      NULL, 0, arg, 1 /* parse arg */,
14494                      0 /* tempflag */,
14495                      bp_tracepoint /* type_wanted */,
14496                      0 /* Ignore count */,
14497                      pending_break_support,
14498                      ops,
14499                      from_tty,
14500                      1 /* enabled */,
14501                      0 /* internal */, 0);
14502 }
14503
14504 static void
14505 ftrace_command (const char *arg, int from_tty)
14506 {
14507   event_location_up location = string_to_event_location (&arg,
14508                                                          current_language);
14509   create_breakpoint (get_current_arch (),
14510                      location.get (),
14511                      NULL, 0, arg, 1 /* parse arg */,
14512                      0 /* tempflag */,
14513                      bp_fast_tracepoint /* type_wanted */,
14514                      0 /* Ignore count */,
14515                      pending_break_support,
14516                      &tracepoint_breakpoint_ops,
14517                      from_tty,
14518                      1 /* enabled */,
14519                      0 /* internal */, 0);
14520 }
14521
14522 /* strace command implementation.  Creates a static tracepoint.  */
14523
14524 static void
14525 strace_command (const char *arg, int from_tty)
14526 {
14527   struct breakpoint_ops *ops;
14528   event_location_up location;
14529
14530   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14531      or with a normal static tracepoint.  */
14532   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14533     {
14534       ops = &strace_marker_breakpoint_ops;
14535       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14536     }
14537   else
14538     {
14539       ops = &tracepoint_breakpoint_ops;
14540       location = string_to_event_location (&arg, current_language);
14541     }
14542
14543   create_breakpoint (get_current_arch (),
14544                      location.get (),
14545                      NULL, 0, arg, 1 /* parse arg */,
14546                      0 /* tempflag */,
14547                      bp_static_tracepoint /* type_wanted */,
14548                      0 /* Ignore count */,
14549                      pending_break_support,
14550                      ops,
14551                      from_tty,
14552                      1 /* enabled */,
14553                      0 /* internal */, 0);
14554 }
14555
14556 /* Set up a fake reader function that gets command lines from a linked
14557    list that was acquired during tracepoint uploading.  */
14558
14559 static struct uploaded_tp *this_utp;
14560 static int next_cmd;
14561
14562 static char *
14563 read_uploaded_action (void)
14564 {
14565   char *rslt = nullptr;
14566
14567   if (next_cmd < this_utp->cmd_strings.size ())
14568     {
14569       rslt = this_utp->cmd_strings[next_cmd].get ();
14570       next_cmd++;
14571     }
14572
14573   return rslt;
14574 }
14575
14576 /* Given information about a tracepoint as recorded on a target (which
14577    can be either a live system or a trace file), attempt to create an
14578    equivalent GDB tracepoint.  This is not a reliable process, since
14579    the target does not necessarily have all the information used when
14580    the tracepoint was originally defined.  */
14581   
14582 struct tracepoint *
14583 create_tracepoint_from_upload (struct uploaded_tp *utp)
14584 {
14585   const char *addr_str;
14586   char small_buf[100];
14587   struct tracepoint *tp;
14588
14589   if (utp->at_string)
14590     addr_str = utp->at_string.get ();
14591   else
14592     {
14593       /* In the absence of a source location, fall back to raw
14594          address.  Since there is no way to confirm that the address
14595          means the same thing as when the trace was started, warn the
14596          user.  */
14597       warning (_("Uploaded tracepoint %d has no "
14598                  "source location, using raw address"),
14599                utp->number);
14600       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14601       addr_str = small_buf;
14602     }
14603
14604   /* There's not much we can do with a sequence of bytecodes.  */
14605   if (utp->cond && !utp->cond_string)
14606     warning (_("Uploaded tracepoint %d condition "
14607                "has no source form, ignoring it"),
14608              utp->number);
14609
14610   event_location_up location = string_to_event_location (&addr_str,
14611                                                          current_language);
14612   if (!create_breakpoint (get_current_arch (),
14613                           location.get (),
14614                           utp->cond_string.get (), -1, addr_str,
14615                           0 /* parse cond/thread */,
14616                           0 /* tempflag */,
14617                           utp->type /* type_wanted */,
14618                           0 /* Ignore count */,
14619                           pending_break_support,
14620                           &tracepoint_breakpoint_ops,
14621                           0 /* from_tty */,
14622                           utp->enabled /* enabled */,
14623                           0 /* internal */,
14624                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14625     return NULL;
14626
14627   /* Get the tracepoint we just created.  */
14628   tp = get_tracepoint (tracepoint_count);
14629   gdb_assert (tp != NULL);
14630
14631   if (utp->pass > 0)
14632     {
14633       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14634                  tp->number);
14635
14636       trace_pass_command (small_buf, 0);
14637     }
14638
14639   /* If we have uploaded versions of the original commands, set up a
14640      special-purpose "reader" function and call the usual command line
14641      reader, then pass the result to the breakpoint command-setting
14642      function.  */
14643   if (!utp->cmd_strings.empty ())
14644     {
14645       counted_command_line cmd_list;
14646
14647       this_utp = utp;
14648       next_cmd = 0;
14649
14650       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14651
14652       breakpoint_set_commands (tp, std::move (cmd_list));
14653     }
14654   else if (!utp->actions.empty ()
14655            || !utp->step_actions.empty ())
14656     warning (_("Uploaded tracepoint %d actions "
14657                "have no source form, ignoring them"),
14658              utp->number);
14659
14660   /* Copy any status information that might be available.  */
14661   tp->hit_count = utp->hit_count;
14662   tp->traceframe_usage = utp->traceframe_usage;
14663
14664   return tp;
14665 }
14666   
14667 /* Print information on tracepoint number TPNUM_EXP, or all if
14668    omitted.  */
14669
14670 static void
14671 info_tracepoints_command (const char *args, int from_tty)
14672 {
14673   struct ui_out *uiout = current_uiout;
14674   int num_printed;
14675
14676   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14677
14678   if (num_printed == 0)
14679     {
14680       if (args == NULL || *args == '\0')
14681         uiout->message ("No tracepoints.\n");
14682       else
14683         uiout->message ("No tracepoint matching '%s'.\n", args);
14684     }
14685
14686   default_collect_info ();
14687 }
14688
14689 /* The 'enable trace' command enables tracepoints.
14690    Not supported by all targets.  */
14691 static void
14692 enable_trace_command (const char *args, int from_tty)
14693 {
14694   enable_command (args, from_tty);
14695 }
14696
14697 /* The 'disable trace' command disables tracepoints.
14698    Not supported by all targets.  */
14699 static void
14700 disable_trace_command (const char *args, int from_tty)
14701 {
14702   disable_command (args, from_tty);
14703 }
14704
14705 /* Remove a tracepoint (or all if no argument).  */
14706 static void
14707 delete_trace_command (const char *arg, int from_tty)
14708 {
14709   struct breakpoint *b, *b_tmp;
14710
14711   dont_repeat ();
14712
14713   if (arg == 0)
14714     {
14715       int breaks_to_delete = 0;
14716
14717       /* Delete all breakpoints if no argument.
14718          Do not delete internal or call-dummy breakpoints, these
14719          have to be deleted with an explicit breakpoint number 
14720          argument.  */
14721       ALL_TRACEPOINTS (b)
14722         if (is_tracepoint (b) && user_breakpoint_p (b))
14723           {
14724             breaks_to_delete = 1;
14725             break;
14726           }
14727
14728       /* Ask user only if there are some breakpoints to delete.  */
14729       if (!from_tty
14730           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14731         {
14732           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14733             if (is_tracepoint (b) && user_breakpoint_p (b))
14734               delete_breakpoint (b);
14735         }
14736     }
14737   else
14738     map_breakpoint_numbers
14739       (arg, [&] (breakpoint *br)
14740        {
14741          iterate_over_related_breakpoints (br, delete_breakpoint);
14742        });
14743 }
14744
14745 /* Helper function for trace_pass_command.  */
14746
14747 static void
14748 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14749 {
14750   tp->pass_count = count;
14751   gdb::observers::breakpoint_modified.notify (tp);
14752   if (from_tty)
14753     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14754                      tp->number, count);
14755 }
14756
14757 /* Set passcount for tracepoint.
14758
14759    First command argument is passcount, second is tracepoint number.
14760    If tracepoint number omitted, apply to most recently defined.
14761    Also accepts special argument "all".  */
14762
14763 static void
14764 trace_pass_command (const char *args, int from_tty)
14765 {
14766   struct tracepoint *t1;
14767   ULONGEST count;
14768
14769   if (args == 0 || *args == 0)
14770     error (_("passcount command requires an "
14771              "argument (count + optional TP num)"));
14772
14773   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14774
14775   args = skip_spaces (args);
14776   if (*args && strncasecmp (args, "all", 3) == 0)
14777     {
14778       struct breakpoint *b;
14779
14780       args += 3;                        /* Skip special argument "all".  */
14781       if (*args)
14782         error (_("Junk at end of arguments."));
14783
14784       ALL_TRACEPOINTS (b)
14785       {
14786         t1 = (struct tracepoint *) b;
14787         trace_pass_set_count (t1, count, from_tty);
14788       }
14789     }
14790   else if (*args == '\0')
14791     {
14792       t1 = get_tracepoint_by_number (&args, NULL);
14793       if (t1)
14794         trace_pass_set_count (t1, count, from_tty);
14795     }
14796   else
14797     {
14798       number_or_range_parser parser (args);
14799       while (!parser.finished ())
14800         {
14801           t1 = get_tracepoint_by_number (&args, &parser);
14802           if (t1)
14803             trace_pass_set_count (t1, count, from_tty);
14804         }
14805     }
14806 }
14807
14808 struct tracepoint *
14809 get_tracepoint (int num)
14810 {
14811   struct breakpoint *t;
14812
14813   ALL_TRACEPOINTS (t)
14814     if (t->number == num)
14815       return (struct tracepoint *) t;
14816
14817   return NULL;
14818 }
14819
14820 /* Find the tracepoint with the given target-side number (which may be
14821    different from the tracepoint number after disconnecting and
14822    reconnecting).  */
14823
14824 struct tracepoint *
14825 get_tracepoint_by_number_on_target (int num)
14826 {
14827   struct breakpoint *b;
14828
14829   ALL_TRACEPOINTS (b)
14830     {
14831       struct tracepoint *t = (struct tracepoint *) b;
14832
14833       if (t->number_on_target == num)
14834         return t;
14835     }
14836
14837   return NULL;
14838 }
14839
14840 /* Utility: parse a tracepoint number and look it up in the list.
14841    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14842    If the argument is missing, the most recent tracepoint
14843    (tracepoint_count) is returned.  */
14844
14845 struct tracepoint *
14846 get_tracepoint_by_number (const char **arg,
14847                           number_or_range_parser *parser)
14848 {
14849   struct breakpoint *t;
14850   int tpnum;
14851   const char *instring = arg == NULL ? NULL : *arg;
14852
14853   if (parser != NULL)
14854     {
14855       gdb_assert (!parser->finished ());
14856       tpnum = parser->get_number ();
14857     }
14858   else if (arg == NULL || *arg == NULL || ! **arg)
14859     tpnum = tracepoint_count;
14860   else
14861     tpnum = get_number (arg);
14862
14863   if (tpnum <= 0)
14864     {
14865       if (instring && *instring)
14866         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14867                          instring);
14868       else
14869         printf_filtered (_("No previous tracepoint\n"));
14870       return NULL;
14871     }
14872
14873   ALL_TRACEPOINTS (t)
14874     if (t->number == tpnum)
14875     {
14876       return (struct tracepoint *) t;
14877     }
14878
14879   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14880   return NULL;
14881 }
14882
14883 void
14884 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14885 {
14886   if (b->thread != -1)
14887     fprintf_unfiltered (fp, " thread %d", b->thread);
14888
14889   if (b->task != 0)
14890     fprintf_unfiltered (fp, " task %d", b->task);
14891
14892   fprintf_unfiltered (fp, "\n");
14893 }
14894
14895 /* Save information on user settable breakpoints (watchpoints, etc) to
14896    a new script file named FILENAME.  If FILTER is non-NULL, call it
14897    on each breakpoint and only include the ones for which it returns
14898    non-zero.  */
14899
14900 static void
14901 save_breakpoints (const char *filename, int from_tty,
14902                   int (*filter) (const struct breakpoint *))
14903 {
14904   struct breakpoint *tp;
14905   int any = 0;
14906   int extra_trace_bits = 0;
14907
14908   if (filename == 0 || *filename == 0)
14909     error (_("Argument required (file name in which to save)"));
14910
14911   /* See if we have anything to save.  */
14912   ALL_BREAKPOINTS (tp)
14913   {
14914     /* Skip internal and momentary breakpoints.  */
14915     if (!user_breakpoint_p (tp))
14916       continue;
14917
14918     /* If we have a filter, only save the breakpoints it accepts.  */
14919     if (filter && !filter (tp))
14920       continue;
14921
14922     any = 1;
14923
14924     if (is_tracepoint (tp))
14925       {
14926         extra_trace_bits = 1;
14927
14928         /* We can stop searching.  */
14929         break;
14930       }
14931   }
14932
14933   if (!any)
14934     {
14935       warning (_("Nothing to save."));
14936       return;
14937     }
14938
14939   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14940
14941   stdio_file fp;
14942
14943   if (!fp.open (expanded_filename.get (), "w"))
14944     error (_("Unable to open file '%s' for saving (%s)"),
14945            expanded_filename.get (), safe_strerror (errno));
14946
14947   if (extra_trace_bits)
14948     save_trace_state_variables (&fp);
14949
14950   ALL_BREAKPOINTS (tp)
14951   {
14952     /* Skip internal and momentary breakpoints.  */
14953     if (!user_breakpoint_p (tp))
14954       continue;
14955
14956     /* If we have a filter, only save the breakpoints it accepts.  */
14957     if (filter && !filter (tp))
14958       continue;
14959
14960     tp->ops->print_recreate (tp, &fp);
14961
14962     /* Note, we can't rely on tp->number for anything, as we can't
14963        assume the recreated breakpoint numbers will match.  Use $bpnum
14964        instead.  */
14965
14966     if (tp->cond_string)
14967       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
14968
14969     if (tp->ignore_count)
14970       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
14971
14972     if (tp->type != bp_dprintf && tp->commands)
14973       {
14974         fp.puts ("  commands\n");
14975         
14976         current_uiout->redirect (&fp);
14977         try
14978           {
14979             print_command_lines (current_uiout, tp->commands.get (), 2);
14980           }
14981         catch (const gdb_exception &ex)
14982           {
14983           current_uiout->redirect (NULL);
14984             throw;
14985           }
14986
14987         current_uiout->redirect (NULL);
14988         fp.puts ("  end\n");
14989       }
14990
14991     if (tp->enable_state == bp_disabled)
14992       fp.puts ("disable $bpnum\n");
14993
14994     /* If this is a multi-location breakpoint, check if the locations
14995        should be individually disabled.  Watchpoint locations are
14996        special, and not user visible.  */
14997     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14998       {
14999         struct bp_location *loc;
15000         int n = 1;
15001
15002         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15003           if (!loc->enabled)
15004             fp.printf ("disable $bpnum.%d\n", n);
15005       }
15006   }
15007
15008   if (extra_trace_bits && *default_collect)
15009     fp.printf ("set default-collect %s\n", default_collect);
15010
15011   if (from_tty)
15012     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15013 }
15014
15015 /* The `save breakpoints' command.  */
15016
15017 static void
15018 save_breakpoints_command (const char *args, int from_tty)
15019 {
15020   save_breakpoints (args, from_tty, NULL);
15021 }
15022
15023 /* The `save tracepoints' command.  */
15024
15025 static void
15026 save_tracepoints_command (const char *args, int from_tty)
15027 {
15028   save_breakpoints (args, from_tty, is_tracepoint);
15029 }
15030
15031 /* Create a vector of all tracepoints.  */
15032
15033 std::vector<breakpoint *>
15034 all_tracepoints (void)
15035 {
15036   std::vector<breakpoint *> tp_vec;
15037   struct breakpoint *tp;
15038
15039   ALL_TRACEPOINTS (tp)
15040   {
15041     tp_vec.push_back (tp);
15042   }
15043
15044   return tp_vec;
15045 }
15046
15047 \f
15048 /* This help string is used to consolidate all the help string for specifying
15049    locations used by several commands.  */
15050
15051 #define LOCATION_HELP_STRING \
15052 "Linespecs are colon-separated lists of location parameters, such as\n\
15053 source filename, function name, label name, and line number.\n\
15054 Example: To specify the start of a label named \"the_top\" in the\n\
15055 function \"fact\" in the file \"factorial.c\", use\n\
15056 \"factorial.c:fact:the_top\".\n\
15057 \n\
15058 Address locations begin with \"*\" and specify an exact address in the\n\
15059 program.  Example: To specify the fourth byte past the start function\n\
15060 \"main\", use \"*main + 4\".\n\
15061 \n\
15062 Explicit locations are similar to linespecs but use an option/argument\n\
15063 syntax to specify location parameters.\n\
15064 Example: To specify the start of the label named \"the_top\" in the\n\
15065 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15066 -function fact -label the_top\".\n\
15067 \n\
15068 By default, a specified function is matched against the program's\n\
15069 functions in all scopes.  For C++, this means in all namespaces and\n\
15070 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15071 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15072 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15073 specified name as a complete fully-qualified name instead."
15074
15075 /* This help string is used for the break, hbreak, tbreak and thbreak
15076    commands.  It is defined as a macro to prevent duplication.
15077    COMMAND should be a string constant containing the name of the
15078    command.  */
15079
15080 #define BREAK_ARGS_HELP(command) \
15081 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15082 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15083 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15084 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15085 `-probe-dtrace' (for a DTrace probe).\n\
15086 LOCATION may be a linespec, address, or explicit location as described\n\
15087 below.\n\
15088 \n\
15089 With no LOCATION, uses current execution address of the selected\n\
15090 stack frame.  This is useful for breaking on return to a stack frame.\n\
15091 \n\
15092 THREADNUM is the number from \"info threads\".\n\
15093 CONDITION is a boolean expression.\n\
15094 \n" LOCATION_HELP_STRING "\n\n\
15095 Multiple breakpoints at one place are permitted, and useful if their\n\
15096 conditions are different.\n\
15097 \n\
15098 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15099
15100 /* List of subcommands for "catch".  */
15101 static struct cmd_list_element *catch_cmdlist;
15102
15103 /* List of subcommands for "tcatch".  */
15104 static struct cmd_list_element *tcatch_cmdlist;
15105
15106 void
15107 add_catch_command (const char *name, const char *docstring,
15108                    cmd_const_sfunc_ftype *sfunc,
15109                    completer_ftype *completer,
15110                    void *user_data_catch,
15111                    void *user_data_tcatch)
15112 {
15113   struct cmd_list_element *command;
15114
15115   command = add_cmd (name, class_breakpoint, docstring,
15116                      &catch_cmdlist);
15117   set_cmd_sfunc (command, sfunc);
15118   set_cmd_context (command, user_data_catch);
15119   set_cmd_completer (command, completer);
15120
15121   command = add_cmd (name, class_breakpoint, docstring,
15122                      &tcatch_cmdlist);
15123   set_cmd_sfunc (command, sfunc);
15124   set_cmd_context (command, user_data_tcatch);
15125   set_cmd_completer (command, completer);
15126 }
15127
15128 static void
15129 save_command (const char *arg, int from_tty)
15130 {
15131   printf_unfiltered (_("\"save\" must be followed by "
15132                        "the name of a save subcommand.\n"));
15133   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15134 }
15135
15136 struct breakpoint *
15137 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15138                           void *data)
15139 {
15140   struct breakpoint *b, *b_tmp;
15141
15142   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15143     {
15144       if ((*callback) (b, data))
15145         return b;
15146     }
15147
15148   return NULL;
15149 }
15150
15151 /* Zero if any of the breakpoint's locations could be a location where
15152    functions have been inlined, nonzero otherwise.  */
15153
15154 static int
15155 is_non_inline_function (struct breakpoint *b)
15156 {
15157   /* The shared library event breakpoint is set on the address of a
15158      non-inline function.  */
15159   if (b->type == bp_shlib_event)
15160     return 1;
15161
15162   return 0;
15163 }
15164
15165 /* Nonzero if the specified PC cannot be a location where functions
15166    have been inlined.  */
15167
15168 int
15169 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15170                            const struct target_waitstatus *ws)
15171 {
15172   struct breakpoint *b;
15173   struct bp_location *bl;
15174
15175   ALL_BREAKPOINTS (b)
15176     {
15177       if (!is_non_inline_function (b))
15178         continue;
15179
15180       for (bl = b->loc; bl != NULL; bl = bl->next)
15181         {
15182           if (!bl->shlib_disabled
15183               && bpstat_check_location (bl, aspace, pc, ws))
15184             return 1;
15185         }
15186     }
15187
15188   return 0;
15189 }
15190
15191 /* Remove any references to OBJFILE which is going to be freed.  */
15192
15193 void
15194 breakpoint_free_objfile (struct objfile *objfile)
15195 {
15196   struct bp_location **locp, *loc;
15197
15198   ALL_BP_LOCATIONS (loc, locp)
15199     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15200       loc->symtab = NULL;
15201 }
15202
15203 void
15204 initialize_breakpoint_ops (void)
15205 {
15206   static int initialized = 0;
15207
15208   struct breakpoint_ops *ops;
15209
15210   if (initialized)
15211     return;
15212   initialized = 1;
15213
15214   /* The breakpoint_ops structure to be inherit by all kinds of
15215      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15216      internal and momentary breakpoints, etc.).  */
15217   ops = &bkpt_base_breakpoint_ops;
15218   *ops = base_breakpoint_ops;
15219   ops->re_set = bkpt_re_set;
15220   ops->insert_location = bkpt_insert_location;
15221   ops->remove_location = bkpt_remove_location;
15222   ops->breakpoint_hit = bkpt_breakpoint_hit;
15223   ops->create_sals_from_location = bkpt_create_sals_from_location;
15224   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15225   ops->decode_location = bkpt_decode_location;
15226
15227   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15228   ops = &bkpt_breakpoint_ops;
15229   *ops = bkpt_base_breakpoint_ops;
15230   ops->re_set = bkpt_re_set;
15231   ops->resources_needed = bkpt_resources_needed;
15232   ops->print_it = bkpt_print_it;
15233   ops->print_mention = bkpt_print_mention;
15234   ops->print_recreate = bkpt_print_recreate;
15235
15236   /* Ranged breakpoints.  */
15237   ops = &ranged_breakpoint_ops;
15238   *ops = bkpt_breakpoint_ops;
15239   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15240   ops->resources_needed = resources_needed_ranged_breakpoint;
15241   ops->print_it = print_it_ranged_breakpoint;
15242   ops->print_one = print_one_ranged_breakpoint;
15243   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15244   ops->print_mention = print_mention_ranged_breakpoint;
15245   ops->print_recreate = print_recreate_ranged_breakpoint;
15246
15247   /* Internal breakpoints.  */
15248   ops = &internal_breakpoint_ops;
15249   *ops = bkpt_base_breakpoint_ops;
15250   ops->re_set = internal_bkpt_re_set;
15251   ops->check_status = internal_bkpt_check_status;
15252   ops->print_it = internal_bkpt_print_it;
15253   ops->print_mention = internal_bkpt_print_mention;
15254
15255   /* Momentary breakpoints.  */
15256   ops = &momentary_breakpoint_ops;
15257   *ops = bkpt_base_breakpoint_ops;
15258   ops->re_set = momentary_bkpt_re_set;
15259   ops->check_status = momentary_bkpt_check_status;
15260   ops->print_it = momentary_bkpt_print_it;
15261   ops->print_mention = momentary_bkpt_print_mention;
15262
15263   /* Probe breakpoints.  */
15264   ops = &bkpt_probe_breakpoint_ops;
15265   *ops = bkpt_breakpoint_ops;
15266   ops->insert_location = bkpt_probe_insert_location;
15267   ops->remove_location = bkpt_probe_remove_location;
15268   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15269   ops->decode_location = bkpt_probe_decode_location;
15270
15271   /* Watchpoints.  */
15272   ops = &watchpoint_breakpoint_ops;
15273   *ops = base_breakpoint_ops;
15274   ops->re_set = re_set_watchpoint;
15275   ops->insert_location = insert_watchpoint;
15276   ops->remove_location = remove_watchpoint;
15277   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15278   ops->check_status = check_status_watchpoint;
15279   ops->resources_needed = resources_needed_watchpoint;
15280   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15281   ops->print_it = print_it_watchpoint;
15282   ops->print_mention = print_mention_watchpoint;
15283   ops->print_recreate = print_recreate_watchpoint;
15284   ops->explains_signal = explains_signal_watchpoint;
15285
15286   /* Masked watchpoints.  */
15287   ops = &masked_watchpoint_breakpoint_ops;
15288   *ops = watchpoint_breakpoint_ops;
15289   ops->insert_location = insert_masked_watchpoint;
15290   ops->remove_location = remove_masked_watchpoint;
15291   ops->resources_needed = resources_needed_masked_watchpoint;
15292   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15293   ops->print_it = print_it_masked_watchpoint;
15294   ops->print_one_detail = print_one_detail_masked_watchpoint;
15295   ops->print_mention = print_mention_masked_watchpoint;
15296   ops->print_recreate = print_recreate_masked_watchpoint;
15297
15298   /* Tracepoints.  */
15299   ops = &tracepoint_breakpoint_ops;
15300   *ops = base_breakpoint_ops;
15301   ops->re_set = tracepoint_re_set;
15302   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15303   ops->print_one_detail = tracepoint_print_one_detail;
15304   ops->print_mention = tracepoint_print_mention;
15305   ops->print_recreate = tracepoint_print_recreate;
15306   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15307   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15308   ops->decode_location = tracepoint_decode_location;
15309
15310   /* Probe tracepoints.  */
15311   ops = &tracepoint_probe_breakpoint_ops;
15312   *ops = tracepoint_breakpoint_ops;
15313   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15314   ops->decode_location = tracepoint_probe_decode_location;
15315
15316   /* Static tracepoints with marker (`-m').  */
15317   ops = &strace_marker_breakpoint_ops;
15318   *ops = tracepoint_breakpoint_ops;
15319   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15320   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15321   ops->decode_location = strace_marker_decode_location;
15322
15323   /* Fork catchpoints.  */
15324   ops = &catch_fork_breakpoint_ops;
15325   *ops = base_breakpoint_ops;
15326   ops->insert_location = insert_catch_fork;
15327   ops->remove_location = remove_catch_fork;
15328   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15329   ops->print_it = print_it_catch_fork;
15330   ops->print_one = print_one_catch_fork;
15331   ops->print_mention = print_mention_catch_fork;
15332   ops->print_recreate = print_recreate_catch_fork;
15333
15334   /* Vfork catchpoints.  */
15335   ops = &catch_vfork_breakpoint_ops;
15336   *ops = base_breakpoint_ops;
15337   ops->insert_location = insert_catch_vfork;
15338   ops->remove_location = remove_catch_vfork;
15339   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15340   ops->print_it = print_it_catch_vfork;
15341   ops->print_one = print_one_catch_vfork;
15342   ops->print_mention = print_mention_catch_vfork;
15343   ops->print_recreate = print_recreate_catch_vfork;
15344
15345   /* Exec catchpoints.  */
15346   ops = &catch_exec_breakpoint_ops;
15347   *ops = base_breakpoint_ops;
15348   ops->insert_location = insert_catch_exec;
15349   ops->remove_location = remove_catch_exec;
15350   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15351   ops->print_it = print_it_catch_exec;
15352   ops->print_one = print_one_catch_exec;
15353   ops->print_mention = print_mention_catch_exec;
15354   ops->print_recreate = print_recreate_catch_exec;
15355
15356   /* Solib-related catchpoints.  */
15357   ops = &catch_solib_breakpoint_ops;
15358   *ops = base_breakpoint_ops;
15359   ops->insert_location = insert_catch_solib;
15360   ops->remove_location = remove_catch_solib;
15361   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15362   ops->check_status = check_status_catch_solib;
15363   ops->print_it = print_it_catch_solib;
15364   ops->print_one = print_one_catch_solib;
15365   ops->print_mention = print_mention_catch_solib;
15366   ops->print_recreate = print_recreate_catch_solib;
15367
15368   ops = &dprintf_breakpoint_ops;
15369   *ops = bkpt_base_breakpoint_ops;
15370   ops->re_set = dprintf_re_set;
15371   ops->resources_needed = bkpt_resources_needed;
15372   ops->print_it = bkpt_print_it;
15373   ops->print_mention = bkpt_print_mention;
15374   ops->print_recreate = dprintf_print_recreate;
15375   ops->after_condition_true = dprintf_after_condition_true;
15376   ops->breakpoint_hit = dprintf_breakpoint_hit;
15377 }
15378
15379 /* Chain containing all defined "enable breakpoint" subcommands.  */
15380
15381 static struct cmd_list_element *enablebreaklist = NULL;
15382
15383 /* See breakpoint.h.  */
15384
15385 cmd_list_element *commands_cmd_element = nullptr;
15386
15387 void
15388 _initialize_breakpoint (void)
15389 {
15390   struct cmd_list_element *c;
15391
15392   initialize_breakpoint_ops ();
15393
15394   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15395   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15396   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15397
15398   breakpoint_chain = 0;
15399   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15400      before a breakpoint is set.  */
15401   breakpoint_count = 0;
15402
15403   tracepoint_count = 0;
15404
15405   add_com ("ignore", class_breakpoint, ignore_command, _("\
15406 Set ignore-count of breakpoint number N to COUNT.\n\
15407 Usage is `ignore N COUNT'."));
15408
15409   commands_cmd_element = add_com ("commands", class_breakpoint,
15410                                   commands_command, _("\
15411 Set commands to be executed when the given breakpoints are hit.\n\
15412 Give a space-separated breakpoint list as argument after \"commands\".\n\
15413 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15414 (e.g. `5-7').\n\
15415 With no argument, the targeted breakpoint is the last one set.\n\
15416 The commands themselves follow starting on the next line.\n\
15417 Type a line containing \"end\" to indicate the end of them.\n\
15418 Give \"silent\" as the first line to make the breakpoint silent;\n\
15419 then no output is printed when it is hit, except what the commands print."));
15420
15421   c = add_com ("condition", class_breakpoint, condition_command, _("\
15422 Specify breakpoint number N to break only if COND is true.\n\
15423 Usage is `condition N COND', where N is an integer and COND is an\n\
15424 expression to be evaluated whenever breakpoint N is reached."));
15425   set_cmd_completer (c, condition_completer);
15426
15427   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15428 Set a temporary breakpoint.\n\
15429 Like \"break\" except the breakpoint is only temporary,\n\
15430 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15431 by using \"enable delete\" on the breakpoint number.\n\
15432 \n"
15433 BREAK_ARGS_HELP ("tbreak")));
15434   set_cmd_completer (c, location_completer);
15435
15436   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15437 Set a hardware assisted breakpoint.\n\
15438 Like \"break\" except the breakpoint requires hardware support,\n\
15439 some target hardware may not have this support.\n\
15440 \n"
15441 BREAK_ARGS_HELP ("hbreak")));
15442   set_cmd_completer (c, location_completer);
15443
15444   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15445 Set a temporary hardware assisted breakpoint.\n\
15446 Like \"hbreak\" except the breakpoint is only temporary,\n\
15447 so it will be deleted when hit.\n\
15448 \n"
15449 BREAK_ARGS_HELP ("thbreak")));
15450   set_cmd_completer (c, location_completer);
15451
15452   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15453 Enable some breakpoints.\n\
15454 Give breakpoint numbers (separated by spaces) as arguments.\n\
15455 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15456 This is used to cancel the effect of the \"disable\" command.\n\
15457 With a subcommand you can enable temporarily."),
15458                   &enablelist, "enable ", 1, &cmdlist);
15459
15460   add_com_alias ("en", "enable", class_breakpoint, 1);
15461
15462   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15463 Enable some breakpoints.\n\
15464 Give breakpoint numbers (separated by spaces) as arguments.\n\
15465 This is used to cancel the effect of the \"disable\" command.\n\
15466 May be abbreviated to simply \"enable\"."),
15467                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15468
15469   add_cmd ("once", no_class, enable_once_command, _("\
15470 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15471 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15472            &enablebreaklist);
15473
15474   add_cmd ("delete", no_class, enable_delete_command, _("\
15475 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15476 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15477            &enablebreaklist);
15478
15479   add_cmd ("count", no_class, enable_count_command, _("\
15480 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15481 If a breakpoint is hit while enabled in this fashion,\n\
15482 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15483            &enablebreaklist);
15484
15485   add_cmd ("delete", no_class, enable_delete_command, _("\
15486 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15487 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15488            &enablelist);
15489
15490   add_cmd ("once", no_class, enable_once_command, _("\
15491 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15492 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15493            &enablelist);
15494
15495   add_cmd ("count", no_class, enable_count_command, _("\
15496 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15497 If a breakpoint is hit while enabled in this fashion,\n\
15498 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15499            &enablelist);
15500
15501   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15502 Disable some breakpoints.\n\
15503 Arguments are breakpoint numbers with spaces in between.\n\
15504 To disable all breakpoints, give no argument.\n\
15505 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15506                   &disablelist, "disable ", 1, &cmdlist);
15507   add_com_alias ("dis", "disable", class_breakpoint, 1);
15508   add_com_alias ("disa", "disable", class_breakpoint, 1);
15509
15510   add_cmd ("breakpoints", class_alias, disable_command, _("\
15511 Disable some breakpoints.\n\
15512 Arguments are breakpoint numbers with spaces in between.\n\
15513 To disable all breakpoints, give no argument.\n\
15514 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15515 This command may be abbreviated \"disable\"."),
15516            &disablelist);
15517
15518   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15519 Delete some breakpoints or auto-display expressions.\n\
15520 Arguments are breakpoint numbers with spaces in between.\n\
15521 To delete all breakpoints, give no argument.\n\
15522 \n\
15523 Also a prefix command for deletion of other GDB objects.\n\
15524 The \"unset\" command is also an alias for \"delete\"."),
15525                   &deletelist, "delete ", 1, &cmdlist);
15526   add_com_alias ("d", "delete", class_breakpoint, 1);
15527   add_com_alias ("del", "delete", class_breakpoint, 1);
15528
15529   add_cmd ("breakpoints", class_alias, delete_command, _("\
15530 Delete some breakpoints or auto-display expressions.\n\
15531 Arguments are breakpoint numbers with spaces in between.\n\
15532 To delete all breakpoints, give no argument.\n\
15533 This command may be abbreviated \"delete\"."),
15534            &deletelist);
15535
15536   add_com ("clear", class_breakpoint, clear_command, _("\
15537 Clear breakpoint at specified location.\n\
15538 Argument may be a linespec, explicit, or address location as described below.\n\
15539 \n\
15540 With no argument, clears all breakpoints in the line that the selected frame\n\
15541 is executing in.\n"
15542 "\n" LOCATION_HELP_STRING "\n\n\
15543 See also the \"delete\" command which clears breakpoints by number."));
15544   add_com_alias ("cl", "clear", class_breakpoint, 1);
15545
15546   c = add_com ("break", class_breakpoint, break_command, _("\
15547 Set breakpoint at specified location.\n"
15548 BREAK_ARGS_HELP ("break")));
15549   set_cmd_completer (c, location_completer);
15550
15551   add_com_alias ("b", "break", class_run, 1);
15552   add_com_alias ("br", "break", class_run, 1);
15553   add_com_alias ("bre", "break", class_run, 1);
15554   add_com_alias ("brea", "break", class_run, 1);
15555
15556   if (dbx_commands)
15557     {
15558       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15559 Break in function/address or break at a line in the current file."),
15560                              &stoplist, "stop ", 1, &cmdlist);
15561       add_cmd ("in", class_breakpoint, stopin_command,
15562                _("Break in function or address."), &stoplist);
15563       add_cmd ("at", class_breakpoint, stopat_command,
15564                _("Break at a line in the current file."), &stoplist);
15565       add_com ("status", class_info, info_breakpoints_command, _("\
15566 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15567 The \"Type\" column indicates one of:\n\
15568 \tbreakpoint     - normal breakpoint\n\
15569 \twatchpoint     - watchpoint\n\
15570 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15571 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15572 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15573 address and file/line number respectively.\n\
15574 \n\
15575 Convenience variable \"$_\" and default examine address for \"x\"\n\
15576 are set to the address of the last breakpoint listed unless the command\n\
15577 is prefixed with \"server \".\n\n\
15578 Convenience variable \"$bpnum\" contains the number of the last\n\
15579 breakpoint set."));
15580     }
15581
15582   add_info ("breakpoints", info_breakpoints_command, _("\
15583 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15584 The \"Type\" column indicates one of:\n\
15585 \tbreakpoint     - normal breakpoint\n\
15586 \twatchpoint     - watchpoint\n\
15587 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15588 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15589 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15590 address and file/line number respectively.\n\
15591 \n\
15592 Convenience variable \"$_\" and default examine address for \"x\"\n\
15593 are set to the address of the last breakpoint listed unless the command\n\
15594 is prefixed with \"server \".\n\n\
15595 Convenience variable \"$bpnum\" contains the number of the last\n\
15596 breakpoint set."));
15597
15598   add_info_alias ("b", "breakpoints", 1);
15599
15600   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15601 Status of all breakpoints, or breakpoint number NUMBER.\n\
15602 The \"Type\" column indicates one of:\n\
15603 \tbreakpoint     - normal breakpoint\n\
15604 \twatchpoint     - watchpoint\n\
15605 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15606 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15607 \tuntil          - internal breakpoint used by the \"until\" command\n\
15608 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15609 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15610 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15611 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15612 address and file/line number respectively.\n\
15613 \n\
15614 Convenience variable \"$_\" and default examine address for \"x\"\n\
15615 are set to the address of the last breakpoint listed unless the command\n\
15616 is prefixed with \"server \".\n\n\
15617 Convenience variable \"$bpnum\" contains the number of the last\n\
15618 breakpoint set."),
15619            &maintenanceinfolist);
15620
15621   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15622 Set catchpoints to catch events."),
15623                   &catch_cmdlist, "catch ",
15624                   0/*allow-unknown*/, &cmdlist);
15625
15626   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15627 Set temporary catchpoints to catch events."),
15628                   &tcatch_cmdlist, "tcatch ",
15629                   0/*allow-unknown*/, &cmdlist);
15630
15631   add_catch_command ("fork", _("Catch calls to fork."),
15632                      catch_fork_command_1,
15633                      NULL,
15634                      (void *) (uintptr_t) catch_fork_permanent,
15635                      (void *) (uintptr_t) catch_fork_temporary);
15636   add_catch_command ("vfork", _("Catch calls to vfork."),
15637                      catch_fork_command_1,
15638                      NULL,
15639                      (void *) (uintptr_t) catch_vfork_permanent,
15640                      (void *) (uintptr_t) catch_vfork_temporary);
15641   add_catch_command ("exec", _("Catch calls to exec."),
15642                      catch_exec_command_1,
15643                      NULL,
15644                      CATCH_PERMANENT,
15645                      CATCH_TEMPORARY);
15646   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15647 Usage: catch load [REGEX]\n\
15648 If REGEX is given, only stop for libraries matching the regular expression."),
15649                      catch_load_command_1,
15650                      NULL,
15651                      CATCH_PERMANENT,
15652                      CATCH_TEMPORARY);
15653   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15654 Usage: catch unload [REGEX]\n\
15655 If REGEX is given, only stop for libraries matching the regular expression."),
15656                      catch_unload_command_1,
15657                      NULL,
15658                      CATCH_PERMANENT,
15659                      CATCH_TEMPORARY);
15660
15661   c = add_com ("watch", class_breakpoint, watch_command, _("\
15662 Set a watchpoint for an expression.\n\
15663 Usage: watch [-l|-location] EXPRESSION\n\
15664 A watchpoint stops execution of your program whenever the value of\n\
15665 an expression changes.\n\
15666 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15667 the memory to which it refers."));
15668   set_cmd_completer (c, expression_completer);
15669
15670   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15671 Set a read watchpoint for an expression.\n\
15672 Usage: rwatch [-l|-location] EXPRESSION\n\
15673 A watchpoint stops execution of your program whenever the value of\n\
15674 an expression is read.\n\
15675 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15676 the memory to which it refers."));
15677   set_cmd_completer (c, expression_completer);
15678
15679   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15680 Set a watchpoint for an expression.\n\
15681 Usage: awatch [-l|-location] EXPRESSION\n\
15682 A watchpoint stops execution of your program whenever the value of\n\
15683 an expression is either read or written.\n\
15684 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15685 the memory to which it refers."));
15686   set_cmd_completer (c, expression_completer);
15687
15688   add_info ("watchpoints", info_watchpoints_command, _("\
15689 Status of specified watchpoints (all watchpoints if no argument)."));
15690
15691   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15692      respond to changes - contrary to the description.  */
15693   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15694                             &can_use_hw_watchpoints, _("\
15695 Set debugger's willingness to use watchpoint hardware."), _("\
15696 Show debugger's willingness to use watchpoint hardware."), _("\
15697 If zero, gdb will not use hardware for new watchpoints, even if\n\
15698 such is available.  (However, any hardware watchpoints that were\n\
15699 created before setting this to nonzero, will continue to use watchpoint\n\
15700 hardware.)"),
15701                             NULL,
15702                             show_can_use_hw_watchpoints,
15703                             &setlist, &showlist);
15704
15705   can_use_hw_watchpoints = 1;
15706
15707   /* Tracepoint manipulation commands.  */
15708
15709   c = add_com ("trace", class_breakpoint, trace_command, _("\
15710 Set a tracepoint at specified location.\n\
15711 \n"
15712 BREAK_ARGS_HELP ("trace") "\n\
15713 Do \"help tracepoints\" for info on other tracepoint commands."));
15714   set_cmd_completer (c, location_completer);
15715
15716   add_com_alias ("tp", "trace", class_alias, 0);
15717   add_com_alias ("tr", "trace", class_alias, 1);
15718   add_com_alias ("tra", "trace", class_alias, 1);
15719   add_com_alias ("trac", "trace", class_alias, 1);
15720
15721   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15722 Set a fast tracepoint at specified location.\n\
15723 \n"
15724 BREAK_ARGS_HELP ("ftrace") "\n\
15725 Do \"help tracepoints\" for info on other tracepoint commands."));
15726   set_cmd_completer (c, location_completer);
15727
15728   c = add_com ("strace", class_breakpoint, strace_command, _("\
15729 Set a static tracepoint at location or marker.\n\
15730 \n\
15731 strace [LOCATION] [if CONDITION]\n\
15732 LOCATION may be a linespec, explicit, or address location (described below) \n\
15733 or -m MARKER_ID.\n\n\
15734 If a marker id is specified, probe the marker with that name.  With\n\
15735 no LOCATION, uses current execution address of the selected stack frame.\n\
15736 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15737 This collects arbitrary user data passed in the probe point call to the\n\
15738 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15739 by printing the $_sdata variable like any other convenience variable.\n\
15740 \n\
15741 CONDITION is a boolean expression.\n\
15742 \n" LOCATION_HELP_STRING "\n\n\
15743 Multiple tracepoints at one place are permitted, and useful if their\n\
15744 conditions are different.\n\
15745 \n\
15746 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15747 Do \"help tracepoints\" for info on other tracepoint commands."));
15748   set_cmd_completer (c, location_completer);
15749
15750   add_info ("tracepoints", info_tracepoints_command, _("\
15751 Status of specified tracepoints (all tracepoints if no argument).\n\
15752 Convenience variable \"$tpnum\" contains the number of the\n\
15753 last tracepoint set."));
15754
15755   add_info_alias ("tp", "tracepoints", 1);
15756
15757   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15758 Delete specified tracepoints.\n\
15759 Arguments are tracepoint numbers, separated by spaces.\n\
15760 No argument means delete all tracepoints."),
15761            &deletelist);
15762   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15763
15764   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15765 Disable specified tracepoints.\n\
15766 Arguments are tracepoint numbers, separated by spaces.\n\
15767 No argument means disable all tracepoints."),
15768            &disablelist);
15769   deprecate_cmd (c, "disable");
15770
15771   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15772 Enable specified tracepoints.\n\
15773 Arguments are tracepoint numbers, separated by spaces.\n\
15774 No argument means enable all tracepoints."),
15775            &enablelist);
15776   deprecate_cmd (c, "enable");
15777
15778   add_com ("passcount", class_trace, trace_pass_command, _("\
15779 Set the passcount for a tracepoint.\n\
15780 The trace will end when the tracepoint has been passed 'count' times.\n\
15781 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15782 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15783
15784   add_prefix_cmd ("save", class_breakpoint, save_command,
15785                   _("Save breakpoint definitions as a script."),
15786                   &save_cmdlist, "save ",
15787                   0/*allow-unknown*/, &cmdlist);
15788
15789   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15790 Save current breakpoint definitions as a script.\n\
15791 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15792 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15793 session to restore them."),
15794                &save_cmdlist);
15795   set_cmd_completer (c, filename_completer);
15796
15797   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15798 Save current tracepoint definitions as a script.\n\
15799 Use the 'source' command in another debug session to restore them."),
15800                &save_cmdlist);
15801   set_cmd_completer (c, filename_completer);
15802
15803   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15804   deprecate_cmd (c, "save tracepoints");
15805
15806   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15807 Breakpoint specific settings\n\
15808 Configure various breakpoint-specific variables such as\n\
15809 pending breakpoint behavior"),
15810                   &breakpoint_set_cmdlist, "set breakpoint ",
15811                   0/*allow-unknown*/, &setlist);
15812   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15813 Breakpoint specific settings\n\
15814 Configure various breakpoint-specific variables such as\n\
15815 pending breakpoint behavior"),
15816                   &breakpoint_show_cmdlist, "show breakpoint ",
15817                   0/*allow-unknown*/, &showlist);
15818
15819   add_setshow_auto_boolean_cmd ("pending", no_class,
15820                                 &pending_break_support, _("\
15821 Set debugger's behavior regarding pending breakpoints."), _("\
15822 Show debugger's behavior regarding pending breakpoints."), _("\
15823 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15824 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15825 an error.  If auto, an unrecognized breakpoint location results in a\n\
15826 user-query to see if a pending breakpoint should be created."),
15827                                 NULL,
15828                                 show_pending_break_support,
15829                                 &breakpoint_set_cmdlist,
15830                                 &breakpoint_show_cmdlist);
15831
15832   pending_break_support = AUTO_BOOLEAN_AUTO;
15833
15834   add_setshow_boolean_cmd ("auto-hw", no_class,
15835                            &automatic_hardware_breakpoints, _("\
15836 Set automatic usage of hardware breakpoints."), _("\
15837 Show automatic usage of hardware breakpoints."), _("\
15838 If set, the debugger will automatically use hardware breakpoints for\n\
15839 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15840 a warning will be emitted for such breakpoints."),
15841                            NULL,
15842                            show_automatic_hardware_breakpoints,
15843                            &breakpoint_set_cmdlist,
15844                            &breakpoint_show_cmdlist);
15845
15846   add_setshow_boolean_cmd ("always-inserted", class_support,
15847                            &always_inserted_mode, _("\
15848 Set mode for inserting breakpoints."), _("\
15849 Show mode for inserting breakpoints."), _("\
15850 When this mode is on, breakpoints are inserted immediately as soon as\n\
15851 they're created, kept inserted even when execution stops, and removed\n\
15852 only when the user deletes them.  When this mode is off (the default),\n\
15853 breakpoints are inserted only when execution continues, and removed\n\
15854 when execution stops."),
15855                                 NULL,
15856                                 &show_always_inserted_mode,
15857                                 &breakpoint_set_cmdlist,
15858                                 &breakpoint_show_cmdlist);
15859
15860   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15861                         condition_evaluation_enums,
15862                         &condition_evaluation_mode_1, _("\
15863 Set mode of breakpoint condition evaluation."), _("\
15864 Show mode of breakpoint condition evaluation."), _("\
15865 When this is set to \"host\", breakpoint conditions will be\n\
15866 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15867 breakpoint conditions will be downloaded to the target (if the target\n\
15868 supports such feature) and conditions will be evaluated on the target's side.\n\
15869 If this is set to \"auto\" (default), this will be automatically set to\n\
15870 \"target\" if it supports condition evaluation, otherwise it will\n\
15871 be set to \"gdb\""),
15872                            &set_condition_evaluation_mode,
15873                            &show_condition_evaluation_mode,
15874                            &breakpoint_set_cmdlist,
15875                            &breakpoint_show_cmdlist);
15876
15877   add_com ("break-range", class_breakpoint, break_range_command, _("\
15878 Set a breakpoint for an address range.\n\
15879 break-range START-LOCATION, END-LOCATION\n\
15880 where START-LOCATION and END-LOCATION can be one of the following:\n\
15881   LINENUM, for that line in the current file,\n\
15882   FILE:LINENUM, for that line in that file,\n\
15883   +OFFSET, for that number of lines after the current line\n\
15884            or the start of the range\n\
15885   FUNCTION, for the first line in that function,\n\
15886   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15887   *ADDRESS, for the instruction at that address.\n\
15888 \n\
15889 The breakpoint will stop execution of the inferior whenever it executes\n\
15890 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15891 range (including START-LOCATION and END-LOCATION)."));
15892
15893   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15894 Set a dynamic printf at specified location.\n\
15895 dprintf location,format string,arg1,arg2,...\n\
15896 location may be a linespec, explicit, or address location.\n"
15897 "\n" LOCATION_HELP_STRING));
15898   set_cmd_completer (c, location_completer);
15899
15900   add_setshow_enum_cmd ("dprintf-style", class_support,
15901                         dprintf_style_enums, &dprintf_style, _("\
15902 Set the style of usage for dynamic printf."), _("\
15903 Show the style of usage for dynamic printf."), _("\
15904 This setting chooses how GDB will do a dynamic printf.\n\
15905 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15906 console, as with the \"printf\" command.\n\
15907 If the value is \"call\", the print is done by calling a function in your\n\
15908 program; by default printf(), but you can choose a different function or\n\
15909 output stream by setting dprintf-function and dprintf-channel."),
15910                         update_dprintf_commands, NULL,
15911                         &setlist, &showlist);
15912
15913   dprintf_function = xstrdup ("printf");
15914   add_setshow_string_cmd ("dprintf-function", class_support,
15915                           &dprintf_function, _("\
15916 Set the function to use for dynamic printf"), _("\
15917 Show the function to use for dynamic printf"), NULL,
15918                           update_dprintf_commands, NULL,
15919                           &setlist, &showlist);
15920
15921   dprintf_channel = xstrdup ("");
15922   add_setshow_string_cmd ("dprintf-channel", class_support,
15923                           &dprintf_channel, _("\
15924 Set the channel to use for dynamic printf"), _("\
15925 Show the channel to use for dynamic printf"), NULL,
15926                           update_dprintf_commands, NULL,
15927                           &setlist, &showlist);
15928
15929   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15930                            &disconnected_dprintf, _("\
15931 Set whether dprintf continues after GDB disconnects."), _("\
15932 Show whether dprintf continues after GDB disconnects."), _("\
15933 Use this to let dprintf commands continue to hit and produce output\n\
15934 even if GDB disconnects or detaches from the target."),
15935                            NULL,
15936                            NULL,
15937                            &setlist, &showlist);
15938
15939   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15940 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15941 (target agent only) This is useful for formatted output in user-defined commands."));
15942
15943   automatic_hardware_breakpoints = 1;
15944
15945   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15946   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15947 }