Fix GDB build when using --disable-gdbmi
[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 "common/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 "common/array-view.h"
86 #include "common/gdb_optional.h"
87
88 /* Enums for exception-handling support.  */
89 enum exception_event_kind
90 {
91   EX_EVENT_THROW,
92   EX_EVENT_RETHROW,
93   EX_EVENT_CATCH
94 };
95
96 /* Prototypes for local functions.  */
97
98 static void map_breakpoint_numbers (const char *,
99                                     gdb::function_view<void (breakpoint *)>);
100
101 static void breakpoint_re_set_default (struct breakpoint *);
102
103 static void
104   create_sals_from_location_default (const struct event_location *location,
105                                      struct linespec_result *canonical,
106                                      enum bptype type_wanted);
107
108 static void create_breakpoints_sal_default (struct gdbarch *,
109                                             struct linespec_result *,
110                                             gdb::unique_xmalloc_ptr<char>,
111                                             gdb::unique_xmalloc_ptr<char>,
112                                             enum bptype,
113                                             enum bpdisp, int, int,
114                                             int,
115                                             const struct breakpoint_ops *,
116                                             int, int, int, unsigned);
117
118 static std::vector<symtab_and_line> decode_location_default
119   (struct breakpoint *b, const struct event_location *location,
120    struct program_space *search_pspace);
121
122 static int can_use_hardware_watchpoint
123     (const std::vector<value_ref_ptr> &vals);
124
125 static void mention (struct breakpoint *);
126
127 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
128                                                                enum bptype,
129                                                                const struct breakpoint_ops *);
130 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
131                                                        const struct symtab_and_line *);
132
133 /* This function is used in gdbtk sources and thus can not be made
134    static.  */
135 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
136                                        struct symtab_and_line,
137                                        enum bptype,
138                                        const struct breakpoint_ops *);
139
140 static struct breakpoint *
141   momentary_breakpoint_from_master (struct breakpoint *orig,
142                                     enum bptype type,
143                                     const struct breakpoint_ops *ops,
144                                     int loc_enabled);
145
146 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
147
148 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
149                                             CORE_ADDR bpaddr,
150                                             enum bptype bptype);
151
152 static void describe_other_breakpoints (struct gdbarch *,
153                                         struct program_space *, CORE_ADDR,
154                                         struct obj_section *, int);
155
156 static int watchpoint_locations_match (struct bp_location *loc1,
157                                        struct bp_location *loc2);
158
159 static int breakpoint_location_address_match (struct bp_location *bl,
160                                               const struct address_space *aspace,
161                                               CORE_ADDR addr);
162
163 static int breakpoint_location_address_range_overlap (struct bp_location *,
164                                                       const address_space *,
165                                                       CORE_ADDR, int);
166
167 static int remove_breakpoint (struct bp_location *);
168 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
169
170 static enum print_stop_action print_bp_stop_message (bpstat bs);
171
172 static int hw_breakpoint_used_count (void);
173
174 static int hw_watchpoint_use_count (struct breakpoint *);
175
176 static int hw_watchpoint_used_count_others (struct breakpoint *except,
177                                             enum bptype type,
178                                             int *other_type_used);
179
180 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
181                                     int count);
182
183 static void free_bp_location (struct bp_location *loc);
184 static void incref_bp_location (struct bp_location *loc);
185 static void decref_bp_location (struct bp_location **loc);
186
187 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
188
189 /* update_global_location_list's modes of operation wrt to whether to
190    insert locations now.  */
191 enum ugll_insert_mode
192 {
193   /* Don't insert any breakpoint locations into the inferior, only
194      remove already-inserted locations that no longer should be
195      inserted.  Functions that delete a breakpoint or breakpoints
196      should specify this mode, so that deleting a breakpoint doesn't
197      have the side effect of inserting the locations of other
198      breakpoints that are marked not-inserted, but should_be_inserted
199      returns true on them.
200
201      This behavior is useful is situations close to tear-down -- e.g.,
202      after an exec, while the target still has execution, but
203      breakpoint shadows of the previous executable image should *NOT*
204      be restored to the new image; or before detaching, where the
205      target still has execution and wants to delete breakpoints from
206      GDB's lists, and all breakpoints had already been removed from
207      the inferior.  */
208   UGLL_DONT_INSERT,
209
210   /* May insert breakpoints iff breakpoints_should_be_inserted_now
211      claims breakpoints should be inserted now.  */
212   UGLL_MAY_INSERT,
213
214   /* Insert locations now, irrespective of
215      breakpoints_should_be_inserted_now.  E.g., say all threads are
216      stopped right now, and the user did "continue".  We need to
217      insert breakpoints _before_ resuming the target, but
218      UGLL_MAY_INSERT wouldn't insert them, because
219      breakpoints_should_be_inserted_now returns false at that point,
220      as no thread is running yet.  */
221   UGLL_INSERT
222 };
223
224 static void update_global_location_list (enum ugll_insert_mode);
225
226 static void update_global_location_list_nothrow (enum ugll_insert_mode);
227
228 static int is_hardware_watchpoint (const struct breakpoint *bpt);
229
230 static void insert_breakpoint_locations (void);
231
232 static void trace_pass_command (const char *, int);
233
234 static void set_tracepoint_count (int num);
235
236 static int is_masked_watchpoint (const struct breakpoint *b);
237
238 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
239
240 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
241    otherwise.  */
242
243 static int strace_marker_p (struct breakpoint *b);
244
245 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
246    that are implemented on top of software or hardware breakpoints
247    (user breakpoints, internal and momentary breakpoints, etc.).  */
248 static struct breakpoint_ops bkpt_base_breakpoint_ops;
249
250 /* Internal breakpoints class type.  */
251 static struct breakpoint_ops internal_breakpoint_ops;
252
253 /* Momentary breakpoints class type.  */
254 static struct breakpoint_ops momentary_breakpoint_ops;
255
256 /* The breakpoint_ops structure to be used in regular user created
257    breakpoints.  */
258 struct breakpoint_ops bkpt_breakpoint_ops;
259
260 /* Breakpoints set on probes.  */
261 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
262
263 /* Dynamic printf class type.  */
264 struct breakpoint_ops dprintf_breakpoint_ops;
265
266 /* The style in which to perform a dynamic printf.  This is a user
267    option because different output options have different tradeoffs;
268    if GDB does the printing, there is better error handling if there
269    is a problem with any of the arguments, but using an inferior
270    function lets you have special-purpose printers and sending of
271    output to the same place as compiled-in print functions.  */
272
273 static const char dprintf_style_gdb[] = "gdb";
274 static const char dprintf_style_call[] = "call";
275 static const char dprintf_style_agent[] = "agent";
276 static const char *const dprintf_style_enums[] = {
277   dprintf_style_gdb,
278   dprintf_style_call,
279   dprintf_style_agent,
280   NULL
281 };
282 static const char *dprintf_style = dprintf_style_gdb;
283
284 /* The function to use for dynamic printf if the preferred style is to
285    call into the inferior.  The value is simply a string that is
286    copied into the command, so it can be anything that GDB can
287    evaluate to a callable address, not necessarily a function name.  */
288
289 static char *dprintf_function;
290
291 /* The channel to use for dynamic printf if the preferred style is to
292    call into the inferior; if a nonempty string, it will be passed to
293    the call as the first argument, with the format string as the
294    second.  As with the dprintf function, this can be anything that
295    GDB knows how to evaluate, so in addition to common choices like
296    "stderr", this could be an app-specific expression like
297    "mystreams[curlogger]".  */
298
299 static char *dprintf_channel;
300
301 /* True if dprintf commands should continue to operate even if GDB
302    has disconnected.  */
303 static int disconnected_dprintf = 1;
304
305 struct command_line *
306 breakpoint_commands (struct breakpoint *b)
307 {
308   return b->commands ? b->commands.get () : NULL;
309 }
310
311 /* Flag indicating that a command has proceeded the inferior past the
312    current breakpoint.  */
313
314 static int breakpoint_proceeded;
315
316 const char *
317 bpdisp_text (enum bpdisp disp)
318 {
319   /* NOTE: the following values are a part of MI protocol and
320      represent values of 'disp' field returned when inferior stops at
321      a breakpoint.  */
322   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
323
324   return bpdisps[(int) disp];
325 }
326
327 /* Prototypes for exported functions.  */
328 /* If FALSE, gdb will not use hardware support for watchpoints, even
329    if such is available.  */
330 static int can_use_hw_watchpoints;
331
332 static void
333 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
334                              struct cmd_list_element *c,
335                              const char *value)
336 {
337   fprintf_filtered (file,
338                     _("Debugger's willingness to use "
339                       "watchpoint hardware is %s.\n"),
340                     value);
341 }
342
343 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
344    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
345    for unrecognized breakpoint locations.
346    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
347 static enum auto_boolean pending_break_support;
348 static void
349 show_pending_break_support (struct ui_file *file, int from_tty,
350                             struct cmd_list_element *c,
351                             const char *value)
352 {
353   fprintf_filtered (file,
354                     _("Debugger's behavior regarding "
355                       "pending breakpoints is %s.\n"),
356                     value);
357 }
358
359 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
360    set with "break" but falling in read-only memory.
361    If 0, gdb will warn about such breakpoints, but won't automatically
362    use hardware breakpoints.  */
363 static int automatic_hardware_breakpoints;
364 static void
365 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
366                                      struct cmd_list_element *c,
367                                      const char *value)
368 {
369   fprintf_filtered (file,
370                     _("Automatic usage of hardware breakpoints is %s.\n"),
371                     value);
372 }
373
374 /* If on, GDB keeps breakpoints inserted even if the inferior is
375    stopped, and immediately inserts any new breakpoints as soon as
376    they're created.  If off (default), GDB keeps breakpoints off of
377    the target as long as possible.  That is, it delays inserting
378    breakpoints until the next resume, and removes them again when the
379    target fully stops.  This is a bit safer in case GDB crashes while
380    processing user input.  */
381 static int always_inserted_mode = 0;
382
383 static void
384 show_always_inserted_mode (struct ui_file *file, int from_tty,
385                      struct cmd_list_element *c, const char *value)
386 {
387   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
388                     value);
389 }
390
391 /* See breakpoint.h.  */
392
393 int
394 breakpoints_should_be_inserted_now (void)
395 {
396   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
397     {
398       /* If breakpoints are global, they should be inserted even if no
399          thread under gdb's control is running, or even if there are
400          no threads under GDB's control yet.  */
401       return 1;
402     }
403   else if (target_has_execution)
404     {
405       if (always_inserted_mode)
406         {
407           /* The user wants breakpoints inserted even if all threads
408              are stopped.  */
409           return 1;
410         }
411
412       if (threads_are_executing ())
413         return 1;
414
415       /* Don't remove breakpoints yet if, even though all threads are
416          stopped, we still have events to process.  */
417       for (thread_info *tp : all_non_exited_threads ())
418         if (tp->resumed
419             && tp->suspend.waitstatus_pending_p)
420           return 1;
421     }
422   return 0;
423 }
424
425 static const char condition_evaluation_both[] = "host or target";
426
427 /* Modes for breakpoint condition evaluation.  */
428 static const char condition_evaluation_auto[] = "auto";
429 static const char condition_evaluation_host[] = "host";
430 static const char condition_evaluation_target[] = "target";
431 static const char *const condition_evaluation_enums[] = {
432   condition_evaluation_auto,
433   condition_evaluation_host,
434   condition_evaluation_target,
435   NULL
436 };
437
438 /* Global that holds the current mode for breakpoint condition evaluation.  */
439 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441 /* Global that we use to display information to the user (gets its value from
442    condition_evaluation_mode_1.  */
443 static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445 /* Translate a condition evaluation mode MODE into either "host"
446    or "target".  This is used mostly to translate from "auto" to the
447    real setting that is being used.  It returns the translated
448    evaluation mode.  */
449
450 static const char *
451 translate_condition_evaluation_mode (const char *mode)
452 {
453   if (mode == condition_evaluation_auto)
454     {
455       if (target_supports_evaluation_of_breakpoint_conditions ())
456         return condition_evaluation_target;
457       else
458         return condition_evaluation_host;
459     }
460   else
461     return mode;
462 }
463
464 /* Discovers what condition_evaluation_auto translates to.  */
465
466 static const char *
467 breakpoint_condition_evaluation_mode (void)
468 {
469   return translate_condition_evaluation_mode (condition_evaluation_mode);
470 }
471
472 /* Return true if GDB should evaluate breakpoint conditions or false
473    otherwise.  */
474
475 static int
476 gdb_evaluates_breakpoint_condition_p (void)
477 {
478   const char *mode = breakpoint_condition_evaluation_mode ();
479
480   return (mode == condition_evaluation_host);
481 }
482
483 /* Are we executing breakpoint commands?  */
484 static int executing_breakpoint_commands;
485
486 /* Are overlay event breakpoints enabled? */
487 static int overlay_events_enabled;
488
489 /* See description in breakpoint.h. */
490 int target_exact_watchpoints = 0;
491
492 /* Walk the following statement or block through all breakpoints.
493    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
494    current breakpoint.  */
495
496 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
497
498 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
499         for (B = breakpoint_chain;      \
500              B ? (TMP=B->next, 1): 0;   \
501              B = TMP)
502
503 /* Similar iterator for the low-level breakpoints.  SAFE variant is
504    not provided so update_global_location_list must not be called
505    while executing the block of ALL_BP_LOCATIONS.  */
506
507 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
508         for (BP_TMP = bp_locations;                                     \
509              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
510              BP_TMP++)
511
512 /* Iterates through locations with address ADDRESS for the currently selected
513    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
514    to where the loop should start from.
515    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516    appropriate location to start with.  */
517
518 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
519         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520              BP_LOCP_TMP = BP_LOCP_START;                               \
521              BP_LOCP_START                                              \
522              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
523              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
524              BP_LOCP_TMP++)
525
526 /* Iterator for tracepoints only.  */
527
528 #define ALL_TRACEPOINTS(B)  \
529   for (B = breakpoint_chain; B; B = B->next)  \
530     if (is_tracepoint (B))
531
532 /* Chains of all breakpoints defined.  */
533
534 struct breakpoint *breakpoint_chain;
535
536 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
537
538 static struct bp_location **bp_locations;
539
540 /* Number of elements of BP_LOCATIONS.  */
541
542 static unsigned bp_locations_count;
543
544 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
545    ADDRESS for the current elements of BP_LOCATIONS which get a valid
546    result from bp_location_has_shadow.  You can use it for roughly
547    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
548    an address you need to read.  */
549
550 static CORE_ADDR bp_locations_placed_address_before_address_max;
551
552 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
554    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555    You can use it for roughly limiting the subrange of BP_LOCATIONS to
556    scan for shadow bytes for an address you need to read.  */
557
558 static CORE_ADDR bp_locations_shadow_len_after_address_max;
559
560 /* The locations that no longer correspond to any breakpoint, unlinked
561    from the bp_locations array, but for which a hit may still be
562    reported by a target.  */
563 static std::vector<bp_location *> moribund_locations;
564
565 /* Number of last breakpoint made.  */
566
567 static int breakpoint_count;
568
569 /* The value of `breakpoint_count' before the last command that
570    created breakpoints.  If the last (break-like) command created more
571    than one breakpoint, then the difference between BREAKPOINT_COUNT
572    and PREV_BREAKPOINT_COUNT is more than one.  */
573 static int prev_breakpoint_count;
574
575 /* Number of last tracepoint made.  */
576
577 static int tracepoint_count;
578
579 static struct cmd_list_element *breakpoint_set_cmdlist;
580 static struct cmd_list_element *breakpoint_show_cmdlist;
581 struct cmd_list_element *save_cmdlist;
582
583 /* See declaration at breakpoint.h.  */
584
585 struct breakpoint *
586 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587                     void *user_data)
588 {
589   struct breakpoint *b = NULL;
590
591   ALL_BREAKPOINTS (b)
592     {
593       if (func (b, user_data) != 0)
594         break;
595     }
596
597   return b;
598 }
599
600 /* Return whether a breakpoint is an active enabled breakpoint.  */
601 static int
602 breakpoint_enabled (struct breakpoint *b)
603 {
604   return (b->enable_state == bp_enabled);
605 }
606
607 /* Set breakpoint count to NUM.  */
608
609 static void
610 set_breakpoint_count (int num)
611 {
612   prev_breakpoint_count = breakpoint_count;
613   breakpoint_count = num;
614   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
615 }
616
617 /* Used by `start_rbreak_breakpoints' below, to record the current
618    breakpoint count before "rbreak" creates any breakpoint.  */
619 static int rbreak_start_breakpoint_count;
620
621 /* Called at the start an "rbreak" command to record the first
622    breakpoint made.  */
623
624 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
625 {
626   rbreak_start_breakpoint_count = breakpoint_count;
627 }
628
629 /* Called at the end of an "rbreak" command to record the last
630    breakpoint made.  */
631
632 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
633 {
634   prev_breakpoint_count = rbreak_start_breakpoint_count;
635 }
636
637 /* Used in run_command to zero the hit count when a new run starts.  */
638
639 void
640 clear_breakpoint_hit_counts (void)
641 {
642   struct breakpoint *b;
643
644   ALL_BREAKPOINTS (b)
645     b->hit_count = 0;
646 }
647
648 \f
649 /* Return the breakpoint with the specified number, or NULL
650    if the number does not refer to an existing breakpoint.  */
651
652 struct breakpoint *
653 get_breakpoint (int num)
654 {
655   struct breakpoint *b;
656
657   ALL_BREAKPOINTS (b)
658     if (b->number == num)
659       return b;
660   
661   return NULL;
662 }
663
664 \f
665
666 /* Mark locations as "conditions have changed" in case the target supports
667    evaluating conditions on its side.  */
668
669 static void
670 mark_breakpoint_modified (struct breakpoint *b)
671 {
672   struct bp_location *loc;
673
674   /* This is only meaningful if the target is
675      evaluating conditions and if the user has
676      opted for condition evaluation on the target's
677      side.  */
678   if (gdb_evaluates_breakpoint_condition_p ()
679       || !target_supports_evaluation_of_breakpoint_conditions ())
680     return;
681
682   if (!is_breakpoint (b))
683     return;
684
685   for (loc = b->loc; loc; loc = loc->next)
686     loc->condition_changed = condition_modified;
687 }
688
689 /* Mark location as "conditions have changed" in case the target supports
690    evaluating conditions on its side.  */
691
692 static void
693 mark_breakpoint_location_modified (struct bp_location *loc)
694 {
695   /* This is only meaningful if the target is
696      evaluating conditions and if the user has
697      opted for condition evaluation on the target's
698      side.  */
699   if (gdb_evaluates_breakpoint_condition_p ()
700       || !target_supports_evaluation_of_breakpoint_conditions ())
701
702     return;
703
704   if (!is_breakpoint (loc->owner))
705     return;
706
707   loc->condition_changed = condition_modified;
708 }
709
710 /* Sets the condition-evaluation mode using the static global
711    condition_evaluation_mode.  */
712
713 static void
714 set_condition_evaluation_mode (const char *args, int from_tty,
715                                struct cmd_list_element *c)
716 {
717   const char *old_mode, *new_mode;
718
719   if ((condition_evaluation_mode_1 == condition_evaluation_target)
720       && !target_supports_evaluation_of_breakpoint_conditions ())
721     {
722       condition_evaluation_mode_1 = condition_evaluation_mode;
723       warning (_("Target does not support breakpoint condition evaluation.\n"
724                  "Using host evaluation mode instead."));
725       return;
726     }
727
728   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
731   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
732      settings was "auto".  */
733   condition_evaluation_mode = condition_evaluation_mode_1;
734
735   /* Only update the mode if the user picked a different one.  */
736   if (new_mode != old_mode)
737     {
738       struct bp_location *loc, **loc_tmp;
739       /* If the user switched to a different evaluation mode, we
740          need to synch the changes with the target as follows:
741
742          "host" -> "target": Send all (valid) conditions to the target.
743          "target" -> "host": Remove all the conditions from the target.
744       */
745
746       if (new_mode == condition_evaluation_target)
747         {
748           /* Mark everything modified and synch conditions with the
749              target.  */
750           ALL_BP_LOCATIONS (loc, loc_tmp)
751             mark_breakpoint_location_modified (loc);
752         }
753       else
754         {
755           /* Manually mark non-duplicate locations to synch conditions
756              with the target.  We do this to remove all the conditions the
757              target knows about.  */
758           ALL_BP_LOCATIONS (loc, loc_tmp)
759             if (is_breakpoint (loc->owner) && loc->inserted)
760               loc->needs_update = 1;
761         }
762
763       /* Do the update.  */
764       update_global_location_list (UGLL_MAY_INSERT);
765     }
766
767   return;
768 }
769
770 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
771    what "auto" is translating to.  */
772
773 static void
774 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775                                 struct cmd_list_element *c, const char *value)
776 {
777   if (condition_evaluation_mode == condition_evaluation_auto)
778     fprintf_filtered (file,
779                       _("Breakpoint condition evaluation "
780                         "mode is %s (currently %s).\n"),
781                       value,
782                       breakpoint_condition_evaluation_mode ());
783   else
784     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785                       value);
786 }
787
788 /* A comparison function for bp_location AP and BP that is used by
789    bsearch.  This comparison function only cares about addresses, unlike
790    the more general bp_locations_compare function.  */
791
792 static int
793 bp_locations_compare_addrs (const void *ap, const void *bp)
794 {
795   const struct bp_location *a = *(const struct bp_location **) ap;
796   const struct bp_location *b = *(const struct bp_location **) bp;
797
798   if (a->address == b->address)
799     return 0;
800   else
801     return ((a->address > b->address) - (a->address < b->address));
802 }
803
804 /* Helper function to skip all bp_locations with addresses
805    less than ADDRESS.  It returns the first bp_location that
806    is greater than or equal to ADDRESS.  If none is found, just
807    return NULL.  */
808
809 static struct bp_location **
810 get_first_locp_gte_addr (CORE_ADDR address)
811 {
812   struct bp_location dummy_loc;
813   struct bp_location *dummy_locp = &dummy_loc;
814   struct bp_location **locp_found = NULL;
815
816   /* Initialize the dummy location's address field.  */
817   dummy_loc.address = address;
818
819   /* Find a close match to the first location at ADDRESS.  */
820   locp_found = ((struct bp_location **)
821                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
822                          sizeof (struct bp_location **),
823                          bp_locations_compare_addrs));
824
825   /* Nothing was found, nothing left to do.  */
826   if (locp_found == NULL)
827     return NULL;
828
829   /* We may have found a location that is at ADDRESS but is not the first in the
830      location's list.  Go backwards (if possible) and locate the first one.  */
831   while ((locp_found - 1) >= bp_locations
832          && (*(locp_found - 1))->address == address)
833     locp_found--;
834
835   return locp_found;
836 }
837
838 void
839 set_breakpoint_condition (struct breakpoint *b, const char *exp,
840                           int from_tty)
841 {
842   xfree (b->cond_string);
843   b->cond_string = NULL;
844
845   if (is_watchpoint (b))
846     {
847       struct watchpoint *w = (struct watchpoint *) b;
848
849       w->cond_exp.reset ();
850     }
851   else
852     {
853       struct bp_location *loc;
854
855       for (loc = b->loc; loc; loc = loc->next)
856         {
857           loc->cond.reset ();
858
859           /* No need to free the condition agent expression
860              bytecode (if we have one).  We will handle this
861              when we go through update_global_location_list.  */
862         }
863     }
864
865   if (*exp == 0)
866     {
867       if (from_tty)
868         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869     }
870   else
871     {
872       const char *arg = exp;
873
874       /* I don't know if it matters whether this is the string the user
875          typed in or the decompiled expression.  */
876       b->cond_string = xstrdup (arg);
877       b->condition_not_parsed = 0;
878
879       if (is_watchpoint (b))
880         {
881           struct watchpoint *w = (struct watchpoint *) b;
882
883           innermost_block_tracker tracker;
884           arg = exp;
885           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
886           if (*arg)
887             error (_("Junk at end of expression"));
888           w->cond_exp_valid_block = tracker.block ();
889         }
890       else
891         {
892           struct bp_location *loc;
893
894           for (loc = b->loc; loc; loc = loc->next)
895             {
896               arg = exp;
897               loc->cond =
898                 parse_exp_1 (&arg, loc->address,
899                              block_for_pc (loc->address), 0);
900               if (*arg)
901                 error (_("Junk at end of expression"));
902             }
903         }
904     }
905   mark_breakpoint_modified (b);
906
907   gdb::observers::breakpoint_modified.notify (b);
908 }
909
910 /* Completion for the "condition" command.  */
911
912 static void
913 condition_completer (struct cmd_list_element *cmd,
914                      completion_tracker &tracker,
915                      const char *text, const char *word)
916 {
917   const char *space;
918
919   text = skip_spaces (text);
920   space = skip_to_space (text);
921   if (*space == '\0')
922     {
923       int len;
924       struct breakpoint *b;
925
926       if (text[0] == '$')
927         {
928           /* We don't support completion of history indices.  */
929           if (!isdigit (text[1]))
930             complete_internalvar (tracker, &text[1]);
931           return;
932         }
933
934       /* We're completing the breakpoint number.  */
935       len = strlen (text);
936
937       ALL_BREAKPOINTS (b)
938         {
939           char number[50];
940
941           xsnprintf (number, sizeof (number), "%d", b->number);
942
943           if (strncmp (number, text, len) == 0)
944             {
945               gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
946               tracker.add_completion (std::move (copy));
947             }
948         }
949
950       return;
951     }
952
953   /* We're completing the expression part.  */
954   text = skip_spaces (space);
955   expression_completer (cmd, tracker, text, word);
956 }
957
958 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
959
960 static void
961 condition_command (const char *arg, int from_tty)
962 {
963   struct breakpoint *b;
964   const char *p;
965   int bnum;
966
967   if (arg == 0)
968     error_no_arg (_("breakpoint number"));
969
970   p = arg;
971   bnum = get_number (&p);
972   if (bnum == 0)
973     error (_("Bad breakpoint argument: '%s'"), arg);
974
975   ALL_BREAKPOINTS (b)
976     if (b->number == bnum)
977       {
978         /* Check if this breakpoint has a "stop" method implemented in an
979            extension language.  This method and conditions entered into GDB
980            from the CLI are mutually exclusive.  */
981         const struct extension_language_defn *extlang
982           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
983
984         if (extlang != NULL)
985           {
986             error (_("Only one stop condition allowed.  There is currently"
987                      " a %s stop condition defined for this breakpoint."),
988                    ext_lang_capitalized_name (extlang));
989           }
990         set_breakpoint_condition (b, p, from_tty);
991
992         if (is_breakpoint (b))
993           update_global_location_list (UGLL_MAY_INSERT);
994
995         return;
996       }
997
998   error (_("No breakpoint number %d."), bnum);
999 }
1000
1001 /* Check that COMMAND do not contain commands that are suitable
1002    only for tracepoints and not suitable for ordinary breakpoints.
1003    Throw if any such commands is found.  */
1004
1005 static void
1006 check_no_tracepoint_commands (struct command_line *commands)
1007 {
1008   struct command_line *c;
1009
1010   for (c = commands; c; c = c->next)
1011     {
1012       if (c->control_type == while_stepping_control)
1013         error (_("The 'while-stepping' command can "
1014                  "only be used for tracepoints"));
1015
1016       check_no_tracepoint_commands (c->body_list_0.get ());
1017       check_no_tracepoint_commands (c->body_list_1.get ());
1018
1019       /* Not that command parsing removes leading whitespace and comment
1020          lines and also empty lines.  So, we only need to check for
1021          command directly.  */
1022       if (strstr (c->line, "collect ") == c->line)
1023         error (_("The 'collect' command can only be used for tracepoints"));
1024
1025       if (strstr (c->line, "teval ") == c->line)
1026         error (_("The 'teval' command can only be used for tracepoints"));
1027     }
1028 }
1029
1030 struct longjmp_breakpoint : public breakpoint
1031 {
1032   ~longjmp_breakpoint () override;
1033 };
1034
1035 /* Encapsulate tests for different types of tracepoints.  */
1036
1037 static bool
1038 is_tracepoint_type (bptype type)
1039 {
1040   return (type == bp_tracepoint
1041           || type == bp_fast_tracepoint
1042           || type == bp_static_tracepoint);
1043 }
1044
1045 static bool
1046 is_longjmp_type (bptype type)
1047 {
1048   return type == bp_longjmp || type == bp_exception;
1049 }
1050
1051 int
1052 is_tracepoint (const struct breakpoint *b)
1053 {
1054   return is_tracepoint_type (b->type);
1055 }
1056
1057 /* Factory function to create an appropriate instance of breakpoint given
1058    TYPE.  */
1059
1060 static std::unique_ptr<breakpoint>
1061 new_breakpoint_from_type (bptype type)
1062 {
1063   breakpoint *b;
1064
1065   if (is_tracepoint_type (type))
1066     b = new tracepoint ();
1067   else if (is_longjmp_type (type))
1068     b = new longjmp_breakpoint ();
1069   else
1070     b = new breakpoint ();
1071
1072   return std::unique_ptr<breakpoint> (b);
1073 }
1074
1075 /* A helper function that validates that COMMANDS are valid for a
1076    breakpoint.  This function will throw an exception if a problem is
1077    found.  */
1078
1079 static void
1080 validate_commands_for_breakpoint (struct breakpoint *b,
1081                                   struct command_line *commands)
1082 {
1083   if (is_tracepoint (b))
1084     {
1085       struct tracepoint *t = (struct tracepoint *) b;
1086       struct command_line *c;
1087       struct command_line *while_stepping = 0;
1088
1089       /* Reset the while-stepping step count.  The previous commands
1090          might have included a while-stepping action, while the new
1091          ones might not.  */
1092       t->step_count = 0;
1093
1094       /* We need to verify that each top-level element of commands is
1095          valid for tracepoints, that there's at most one
1096          while-stepping element, and that the while-stepping's body
1097          has valid tracing commands excluding nested while-stepping.
1098          We also need to validate the tracepoint action line in the
1099          context of the tracepoint --- validate_actionline actually
1100          has side effects, like setting the tracepoint's
1101          while-stepping STEP_COUNT, in addition to checking if the
1102          collect/teval actions parse and make sense in the
1103          tracepoint's context.  */
1104       for (c = commands; c; c = c->next)
1105         {
1106           if (c->control_type == while_stepping_control)
1107             {
1108               if (b->type == bp_fast_tracepoint)
1109                 error (_("The 'while-stepping' command "
1110                          "cannot be used for fast tracepoint"));
1111               else if (b->type == bp_static_tracepoint)
1112                 error (_("The 'while-stepping' command "
1113                          "cannot be used for static tracepoint"));
1114
1115               if (while_stepping)
1116                 error (_("The 'while-stepping' command "
1117                          "can be used only once"));
1118               else
1119                 while_stepping = c;
1120             }
1121
1122           validate_actionline (c->line, b);
1123         }
1124       if (while_stepping)
1125         {
1126           struct command_line *c2;
1127
1128           gdb_assert (while_stepping->body_list_1 == nullptr);
1129           c2 = while_stepping->body_list_0.get ();
1130           for (; c2; c2 = c2->next)
1131             {
1132               if (c2->control_type == while_stepping_control)
1133                 error (_("The 'while-stepping' command cannot be nested"));
1134             }
1135         }
1136     }
1137   else
1138     {
1139       check_no_tracepoint_commands (commands);
1140     }
1141 }
1142
1143 /* Return a vector of all the static tracepoints set at ADDR.  The
1144    caller is responsible for releasing the vector.  */
1145
1146 std::vector<breakpoint *>
1147 static_tracepoints_here (CORE_ADDR addr)
1148 {
1149   struct breakpoint *b;
1150   std::vector<breakpoint *> found;
1151   struct bp_location *loc;
1152
1153   ALL_BREAKPOINTS (b)
1154     if (b->type == bp_static_tracepoint)
1155       {
1156         for (loc = b->loc; loc; loc = loc->next)
1157           if (loc->address == addr)
1158             found.push_back (b);
1159       }
1160
1161   return found;
1162 }
1163
1164 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1165    validate that only allowed commands are included.  */
1166
1167 void
1168 breakpoint_set_commands (struct breakpoint *b, 
1169                          counted_command_line &&commands)
1170 {
1171   validate_commands_for_breakpoint (b, commands.get ());
1172
1173   b->commands = std::move (commands);
1174   gdb::observers::breakpoint_modified.notify (b);
1175 }
1176
1177 /* Set the internal `silent' flag on the breakpoint.  Note that this
1178    is not the same as the "silent" that may appear in the breakpoint's
1179    commands.  */
1180
1181 void
1182 breakpoint_set_silent (struct breakpoint *b, int silent)
1183 {
1184   int old_silent = b->silent;
1185
1186   b->silent = silent;
1187   if (old_silent != silent)
1188     gdb::observers::breakpoint_modified.notify (b);
1189 }
1190
1191 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1192    breakpoint work for any thread.  */
1193
1194 void
1195 breakpoint_set_thread (struct breakpoint *b, int thread)
1196 {
1197   int old_thread = b->thread;
1198
1199   b->thread = thread;
1200   if (old_thread != thread)
1201     gdb::observers::breakpoint_modified.notify (b);
1202 }
1203
1204 /* Set the task for this breakpoint.  If TASK is 0, make the
1205    breakpoint work for any task.  */
1206
1207 void
1208 breakpoint_set_task (struct breakpoint *b, int task)
1209 {
1210   int old_task = b->task;
1211
1212   b->task = task;
1213   if (old_task != task)
1214     gdb::observers::breakpoint_modified.notify (b);
1215 }
1216
1217 static void
1218 commands_command_1 (const char *arg, int from_tty,
1219                     struct command_line *control)
1220 {
1221   counted_command_line cmd;
1222   /* cmd_read will be true once we have read cmd.  Note that cmd might still be
1223      NULL after the call to read_command_lines if the user provides an empty
1224      list of command by just typing "end".  */
1225   bool cmd_read = false;
1226
1227   std::string new_arg;
1228
1229   if (arg == NULL || !*arg)
1230     {
1231       if (breakpoint_count - prev_breakpoint_count > 1)
1232         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1233                                  breakpoint_count);
1234       else if (breakpoint_count > 0)
1235         new_arg = string_printf ("%d", breakpoint_count);
1236       arg = new_arg.c_str ();
1237     }
1238
1239   map_breakpoint_numbers
1240     (arg, [&] (breakpoint *b)
1241      {
1242        if (!cmd_read)
1243          {
1244            gdb_assert (cmd == NULL);
1245            if (control != NULL)
1246              cmd = control->body_list_0;
1247            else
1248              {
1249                std::string str
1250                  = string_printf (_("Type commands for breakpoint(s) "
1251                                     "%s, one per line."),
1252                                   arg);
1253
1254                auto do_validate = [=] (const char *line)
1255                                   {
1256                                     validate_actionline (line, b);
1257                                   };
1258                gdb::function_view<void (const char *)> validator;
1259                if (is_tracepoint (b))
1260                  validator = do_validate;
1261
1262                cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1263              }
1264            cmd_read = true;
1265          }
1266
1267        /* If a breakpoint was on the list more than once, we don't need to
1268           do anything.  */
1269        if (b->commands != cmd)
1270          {
1271            validate_commands_for_breakpoint (b, cmd.get ());
1272            b->commands = cmd;
1273            gdb::observers::breakpoint_modified.notify (b);
1274          }
1275      });
1276 }
1277
1278 static void
1279 commands_command (const char *arg, int from_tty)
1280 {
1281   commands_command_1 (arg, from_tty, NULL);
1282 }
1283
1284 /* Like commands_command, but instead of reading the commands from
1285    input stream, takes them from an already parsed command structure.
1286
1287    This is used by cli-script.c to DTRT with breakpoint commands
1288    that are part of if and while bodies.  */
1289 enum command_control_type
1290 commands_from_control_command (const char *arg, struct command_line *cmd)
1291 {
1292   commands_command_1 (arg, 0, cmd);
1293   return simple_control;
1294 }
1295
1296 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1297
1298 static int
1299 bp_location_has_shadow (struct bp_location *bl)
1300 {
1301   if (bl->loc_type != bp_loc_software_breakpoint)
1302     return 0;
1303   if (!bl->inserted)
1304     return 0;
1305   if (bl->target_info.shadow_len == 0)
1306     /* BL isn't valid, or doesn't shadow memory.  */
1307     return 0;
1308   return 1;
1309 }
1310
1311 /* Update BUF, which is LEN bytes read from the target address
1312    MEMADDR, by replacing a memory breakpoint with its shadowed
1313    contents.
1314
1315    If READBUF is not NULL, this buffer must not overlap with the of
1316    the breakpoint location's shadow_contents buffer.  Otherwise, a
1317    failed assertion internal error will be raised.  */
1318
1319 static void
1320 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1321                             const gdb_byte *writebuf_org,
1322                             ULONGEST memaddr, LONGEST len,
1323                             struct bp_target_info *target_info,
1324                             struct gdbarch *gdbarch)
1325 {
1326   /* Now do full processing of the found relevant range of elements.  */
1327   CORE_ADDR bp_addr = 0;
1328   int bp_size = 0;
1329   int bptoffset = 0;
1330
1331   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1332                                  current_program_space->aspace, 0))
1333     {
1334       /* The breakpoint is inserted in a different address space.  */
1335       return;
1336     }
1337
1338   /* Addresses and length of the part of the breakpoint that
1339      we need to copy.  */
1340   bp_addr = target_info->placed_address;
1341   bp_size = target_info->shadow_len;
1342
1343   if (bp_addr + bp_size <= memaddr)
1344     {
1345       /* The breakpoint is entirely before the chunk of memory we are
1346          reading.  */
1347       return;
1348     }
1349
1350   if (bp_addr >= memaddr + len)
1351     {
1352       /* The breakpoint is entirely after the chunk of memory we are
1353          reading.  */
1354       return;
1355     }
1356
1357   /* Offset within shadow_contents.  */
1358   if (bp_addr < memaddr)
1359     {
1360       /* Only copy the second part of the breakpoint.  */
1361       bp_size -= memaddr - bp_addr;
1362       bptoffset = memaddr - bp_addr;
1363       bp_addr = memaddr;
1364     }
1365
1366   if (bp_addr + bp_size > memaddr + len)
1367     {
1368       /* Only copy the first part of the breakpoint.  */
1369       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1370     }
1371
1372   if (readbuf != NULL)
1373     {
1374       /* Verify that the readbuf buffer does not overlap with the
1375          shadow_contents buffer.  */
1376       gdb_assert (target_info->shadow_contents >= readbuf + len
1377                   || readbuf >= (target_info->shadow_contents
1378                                  + target_info->shadow_len));
1379
1380       /* Update the read buffer with this inserted breakpoint's
1381          shadow.  */
1382       memcpy (readbuf + bp_addr - memaddr,
1383               target_info->shadow_contents + bptoffset, bp_size);
1384     }
1385   else
1386     {
1387       const unsigned char *bp;
1388       CORE_ADDR addr = target_info->reqstd_address;
1389       int placed_size;
1390
1391       /* Update the shadow with what we want to write to memory.  */
1392       memcpy (target_info->shadow_contents + bptoffset,
1393               writebuf_org + bp_addr - memaddr, bp_size);
1394
1395       /* Determine appropriate breakpoint contents and size for this
1396          address.  */
1397       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1398
1399       /* Update the final write buffer with this inserted
1400          breakpoint's INSN.  */
1401       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1402     }
1403 }
1404
1405 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1406    by replacing any memory breakpoints with their shadowed contents.
1407
1408    If READBUF is not NULL, this buffer must not overlap with any of
1409    the breakpoint location's shadow_contents buffers.  Otherwise,
1410    a failed assertion internal error will be raised.
1411
1412    The range of shadowed area by each bp_location is:
1413      bl->address - bp_locations_placed_address_before_address_max
1414      up to bl->address + bp_locations_shadow_len_after_address_max
1415    The range we were requested to resolve shadows for is:
1416      memaddr ... memaddr + len
1417    Thus the safe cutoff boundaries for performance optimization are
1418      memaddr + len <= (bl->address
1419                        - bp_locations_placed_address_before_address_max)
1420    and:
1421      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1422
1423 void
1424 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1425                         const gdb_byte *writebuf_org,
1426                         ULONGEST memaddr, LONGEST len)
1427 {
1428   /* Left boundary, right boundary and median element of our binary
1429      search.  */
1430   unsigned bc_l, bc_r, bc;
1431
1432   /* Find BC_L which is a leftmost element which may affect BUF
1433      content.  It is safe to report lower value but a failure to
1434      report higher one.  */
1435
1436   bc_l = 0;
1437   bc_r = bp_locations_count;
1438   while (bc_l + 1 < bc_r)
1439     {
1440       struct bp_location *bl;
1441
1442       bc = (bc_l + bc_r) / 2;
1443       bl = bp_locations[bc];
1444
1445       /* Check first BL->ADDRESS will not overflow due to the added
1446          constant.  Then advance the left boundary only if we are sure
1447          the BC element can in no way affect the BUF content (MEMADDR
1448          to MEMADDR + LEN range).
1449
1450          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1451          offset so that we cannot miss a breakpoint with its shadow
1452          range tail still reaching MEMADDR.  */
1453
1454       if ((bl->address + bp_locations_shadow_len_after_address_max
1455            >= bl->address)
1456           && (bl->address + bp_locations_shadow_len_after_address_max
1457               <= memaddr))
1458         bc_l = bc;
1459       else
1460         bc_r = bc;
1461     }
1462
1463   /* Due to the binary search above, we need to make sure we pick the
1464      first location that's at BC_L's address.  E.g., if there are
1465      multiple locations at the same address, BC_L may end up pointing
1466      at a duplicate location, and miss the "master"/"inserted"
1467      location.  Say, given locations L1, L2 and L3 at addresses A and
1468      B:
1469
1470       L1@A, L2@A, L3@B, ...
1471
1472      BC_L could end up pointing at location L2, while the "master"
1473      location could be L1.  Since the `loc->inserted' flag is only set
1474      on "master" locations, we'd forget to restore the shadow of L1
1475      and L2.  */
1476   while (bc_l > 0
1477          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1478     bc_l--;
1479
1480   /* Now do full processing of the found relevant range of elements.  */
1481
1482   for (bc = bc_l; bc < bp_locations_count; bc++)
1483   {
1484     struct bp_location *bl = bp_locations[bc];
1485
1486     /* bp_location array has BL->OWNER always non-NULL.  */
1487     if (bl->owner->type == bp_none)
1488       warning (_("reading through apparently deleted breakpoint #%d?"),
1489                bl->owner->number);
1490
1491     /* Performance optimization: any further element can no longer affect BUF
1492        content.  */
1493
1494     if (bl->address >= bp_locations_placed_address_before_address_max
1495         && memaddr + len <= (bl->address
1496                              - bp_locations_placed_address_before_address_max))
1497       break;
1498
1499     if (!bp_location_has_shadow (bl))
1500       continue;
1501
1502     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1503                                 memaddr, len, &bl->target_info, bl->gdbarch);
1504   }
1505 }
1506
1507 \f
1508
1509 /* Return true if BPT is either a software breakpoint or a hardware
1510    breakpoint.  */
1511
1512 int
1513 is_breakpoint (const struct breakpoint *bpt)
1514 {
1515   return (bpt->type == bp_breakpoint
1516           || bpt->type == bp_hardware_breakpoint
1517           || bpt->type == bp_dprintf);
1518 }
1519
1520 /* Return true if BPT is of any hardware watchpoint kind.  */
1521
1522 static int
1523 is_hardware_watchpoint (const struct breakpoint *bpt)
1524 {
1525   return (bpt->type == bp_hardware_watchpoint
1526           || bpt->type == bp_read_watchpoint
1527           || bpt->type == bp_access_watchpoint);
1528 }
1529
1530 /* Return true if BPT is of any watchpoint kind, hardware or
1531    software.  */
1532
1533 int
1534 is_watchpoint (const struct breakpoint *bpt)
1535 {
1536   return (is_hardware_watchpoint (bpt)
1537           || bpt->type == bp_watchpoint);
1538 }
1539
1540 /* Returns true if the current thread and its running state are safe
1541    to evaluate or update watchpoint B.  Watchpoints on local
1542    expressions need to be evaluated in the context of the thread that
1543    was current when the watchpoint was created, and, that thread needs
1544    to be stopped to be able to select the correct frame context.
1545    Watchpoints on global expressions can be evaluated on any thread,
1546    and in any state.  It is presently left to the target allowing
1547    memory accesses when threads are running.  */
1548
1549 static int
1550 watchpoint_in_thread_scope (struct watchpoint *b)
1551 {
1552   return (b->pspace == current_program_space
1553           && (b->watchpoint_thread == null_ptid
1554               || (inferior_ptid == b->watchpoint_thread
1555                   && !inferior_thread ()->executing)));
1556 }
1557
1558 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1559    associated bp_watchpoint_scope breakpoint.  */
1560
1561 static void
1562 watchpoint_del_at_next_stop (struct watchpoint *w)
1563 {
1564   if (w->related_breakpoint != w)
1565     {
1566       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1567       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1568       w->related_breakpoint->disposition = disp_del_at_next_stop;
1569       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1570       w->related_breakpoint = w;
1571     }
1572   w->disposition = disp_del_at_next_stop;
1573 }
1574
1575 /* Extract a bitfield value from value VAL using the bit parameters contained in
1576    watchpoint W.  */
1577
1578 static struct value *
1579 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1580 {
1581   struct value *bit_val;
1582
1583   if (val == NULL)
1584     return NULL;
1585
1586   bit_val = allocate_value (value_type (val));
1587
1588   unpack_value_bitfield (bit_val,
1589                          w->val_bitpos,
1590                          w->val_bitsize,
1591                          value_contents_for_printing (val),
1592                          value_offset (val),
1593                          val);
1594
1595   return bit_val;
1596 }
1597
1598 /* Allocate a dummy location and add it to B, which must be a software
1599    watchpoint.  This is required because even if a software watchpoint
1600    is not watching any memory, bpstat_stop_status requires a location
1601    to be able to report stops.  */
1602
1603 static void
1604 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1605                                             struct program_space *pspace)
1606 {
1607   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1608
1609   b->loc = allocate_bp_location (b);
1610   b->loc->pspace = pspace;
1611   b->loc->address = -1;
1612   b->loc->length = -1;
1613 }
1614
1615 /* Returns true if B is a software watchpoint that is not watching any
1616    memory (e.g., "watch $pc").  */
1617
1618 static int
1619 is_no_memory_software_watchpoint (struct breakpoint *b)
1620 {
1621   return (b->type == bp_watchpoint
1622           && b->loc != NULL
1623           && b->loc->next == NULL
1624           && b->loc->address == -1
1625           && b->loc->length == -1);
1626 }
1627
1628 /* Assuming that B is a watchpoint:
1629    - Reparse watchpoint expression, if REPARSE is non-zero
1630    - Evaluate expression and store the result in B->val
1631    - Evaluate the condition if there is one, and store the result
1632      in b->loc->cond.
1633    - Update the list of values that must be watched in B->loc.
1634
1635    If the watchpoint disposition is disp_del_at_next_stop, then do
1636    nothing.  If this is local watchpoint that is out of scope, delete
1637    it.
1638
1639    Even with `set breakpoint always-inserted on' the watchpoints are
1640    removed + inserted on each stop here.  Normal breakpoints must
1641    never be removed because they might be missed by a running thread
1642    when debugging in non-stop mode.  On the other hand, hardware
1643    watchpoints (is_hardware_watchpoint; processed here) are specific
1644    to each LWP since they are stored in each LWP's hardware debug
1645    registers.  Therefore, such LWP must be stopped first in order to
1646    be able to modify its hardware watchpoints.
1647
1648    Hardware watchpoints must be reset exactly once after being
1649    presented to the user.  It cannot be done sooner, because it would
1650    reset the data used to present the watchpoint hit to the user.  And
1651    it must not be done later because it could display the same single
1652    watchpoint hit during multiple GDB stops.  Note that the latter is
1653    relevant only to the hardware watchpoint types bp_read_watchpoint
1654    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1655    not user-visible - its hit is suppressed if the memory content has
1656    not changed.
1657
1658    The following constraints influence the location where we can reset
1659    hardware watchpoints:
1660
1661    * target_stopped_by_watchpoint and target_stopped_data_address are
1662      called several times when GDB stops.
1663
1664    [linux] 
1665    * Multiple hardware watchpoints can be hit at the same time,
1666      causing GDB to stop.  GDB only presents one hardware watchpoint
1667      hit at a time as the reason for stopping, and all the other hits
1668      are presented later, one after the other, each time the user
1669      requests the execution to be resumed.  Execution is not resumed
1670      for the threads still having pending hit event stored in
1671      LWP_INFO->STATUS.  While the watchpoint is already removed from
1672      the inferior on the first stop the thread hit event is kept being
1673      reported from its cached value by linux_nat_stopped_data_address
1674      until the real thread resume happens after the watchpoint gets
1675      presented and thus its LWP_INFO->STATUS gets reset.
1676
1677    Therefore the hardware watchpoint hit can get safely reset on the
1678    watchpoint removal from inferior.  */
1679
1680 static void
1681 update_watchpoint (struct watchpoint *b, int reparse)
1682 {
1683   int within_current_scope;
1684   struct frame_id saved_frame_id;
1685   int frame_saved;
1686
1687   /* If this is a local watchpoint, we only want to check if the
1688      watchpoint frame is in scope if the current thread is the thread
1689      that was used to create the watchpoint.  */
1690   if (!watchpoint_in_thread_scope (b))
1691     return;
1692
1693   if (b->disposition == disp_del_at_next_stop)
1694     return;
1695  
1696   frame_saved = 0;
1697
1698   /* Determine if the watchpoint is within scope.  */
1699   if (b->exp_valid_block == NULL)
1700     within_current_scope = 1;
1701   else
1702     {
1703       struct frame_info *fi = get_current_frame ();
1704       struct gdbarch *frame_arch = get_frame_arch (fi);
1705       CORE_ADDR frame_pc = get_frame_pc (fi);
1706
1707       /* If we're at a point where the stack has been destroyed
1708          (e.g. in a function epilogue), unwinding may not work
1709          properly. Do not attempt to recreate locations at this
1710          point.  See similar comments in watchpoint_check.  */
1711       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1712         return;
1713
1714       /* Save the current frame's ID so we can restore it after
1715          evaluating the watchpoint expression on its own frame.  */
1716       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1717          took a frame parameter, so that we didn't have to change the
1718          selected frame.  */
1719       frame_saved = 1;
1720       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1721
1722       fi = frame_find_by_id (b->watchpoint_frame);
1723       within_current_scope = (fi != NULL);
1724       if (within_current_scope)
1725         select_frame (fi);
1726     }
1727
1728   /* We don't free locations.  They are stored in the bp_location array
1729      and update_global_location_list will eventually delete them and
1730      remove breakpoints if needed.  */
1731   b->loc = NULL;
1732
1733   if (within_current_scope && reparse)
1734     {
1735       const char *s;
1736
1737       b->exp.reset ();
1738       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1739       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1740       /* If the meaning of expression itself changed, the old value is
1741          no longer relevant.  We don't want to report a watchpoint hit
1742          to the user when the old value and the new value may actually
1743          be completely different objects.  */
1744       b->val = NULL;
1745       b->val_valid = 0;
1746
1747       /* Note that unlike with breakpoints, the watchpoint's condition
1748          expression is stored in the breakpoint object, not in the
1749          locations (re)created below.  */
1750       if (b->cond_string != NULL)
1751         {
1752           b->cond_exp.reset ();
1753
1754           s = b->cond_string;
1755           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1756         }
1757     }
1758
1759   /* If we failed to parse the expression, for example because
1760      it refers to a global variable in a not-yet-loaded shared library,
1761      don't try to insert watchpoint.  We don't automatically delete
1762      such watchpoint, though, since failure to parse expression
1763      is different from out-of-scope watchpoint.  */
1764   if (!target_has_execution)
1765     {
1766       /* Without execution, memory can't change.  No use to try and
1767          set watchpoint locations.  The watchpoint will be reset when
1768          the target gains execution, through breakpoint_re_set.  */
1769       if (!can_use_hw_watchpoints)
1770         {
1771           if (b->ops->works_in_software_mode (b))
1772             b->type = bp_watchpoint;
1773           else
1774             error (_("Can't set read/access watchpoint when "
1775                      "hardware watchpoints are disabled."));
1776         }
1777     }
1778   else if (within_current_scope && b->exp)
1779     {
1780       int pc = 0;
1781       std::vector<value_ref_ptr> val_chain;
1782       struct value *v, *result;
1783       struct program_space *frame_pspace;
1784
1785       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1786
1787       /* Avoid setting b->val if it's already set.  The meaning of
1788          b->val is 'the last value' user saw, and we should update
1789          it only if we reported that last value to user.  As it
1790          happens, the code that reports it updates b->val directly.
1791          We don't keep track of the memory value for masked
1792          watchpoints.  */
1793       if (!b->val_valid && !is_masked_watchpoint (b))
1794         {
1795           if (b->val_bitsize != 0)
1796             v = extract_bitfield_from_watchpoint_value (b, v);
1797           b->val = release_value (v);
1798           b->val_valid = 1;
1799         }
1800
1801       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1802
1803       /* Look at each value on the value chain.  */
1804       gdb_assert (!val_chain.empty ());
1805       for (const value_ref_ptr &iter : val_chain)
1806         {
1807           v = iter.get ();
1808
1809           /* If it's a memory location, and GDB actually needed
1810              its contents to evaluate the expression, then we
1811              must watch it.  If the first value returned is
1812              still lazy, that means an error occurred reading it;
1813              watch it anyway in case it becomes readable.  */
1814           if (VALUE_LVAL (v) == lval_memory
1815               && (v == val_chain[0] || ! value_lazy (v)))
1816             {
1817               struct type *vtype = check_typedef (value_type (v));
1818
1819               /* We only watch structs and arrays if user asked
1820                  for it explicitly, never if they just happen to
1821                  appear in the middle of some value chain.  */
1822               if (v == result
1823                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1824                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1825                 {
1826                   CORE_ADDR addr;
1827                   enum target_hw_bp_type type;
1828                   struct bp_location *loc, **tmp;
1829                   int bitpos = 0, bitsize = 0;
1830
1831                   if (value_bitsize (v) != 0)
1832                     {
1833                       /* Extract the bit parameters out from the bitfield
1834                          sub-expression.  */
1835                       bitpos = value_bitpos (v);
1836                       bitsize = value_bitsize (v);
1837                     }
1838                   else if (v == result && b->val_bitsize != 0)
1839                     {
1840                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1841                         lvalue whose bit parameters are saved in the fields
1842                         VAL_BITPOS and VAL_BITSIZE.  */
1843                       bitpos = b->val_bitpos;
1844                       bitsize = b->val_bitsize;
1845                     }
1846
1847                   addr = value_address (v);
1848                   if (bitsize != 0)
1849                     {
1850                       /* Skip the bytes that don't contain the bitfield.  */
1851                       addr += bitpos / 8;
1852                     }
1853
1854                   type = hw_write;
1855                   if (b->type == bp_read_watchpoint)
1856                     type = hw_read;
1857                   else if (b->type == bp_access_watchpoint)
1858                     type = hw_access;
1859
1860                   loc = allocate_bp_location (b);
1861                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1862                     ;
1863                   *tmp = loc;
1864                   loc->gdbarch = get_type_arch (value_type (v));
1865
1866                   loc->pspace = frame_pspace;
1867                   loc->address = address_significant (loc->gdbarch, addr);
1868
1869                   if (bitsize != 0)
1870                     {
1871                       /* Just cover the bytes that make up the bitfield.  */
1872                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1873                     }
1874                   else
1875                     loc->length = TYPE_LENGTH (value_type (v));
1876
1877                   loc->watchpoint_type = type;
1878                 }
1879             }
1880         }
1881
1882       /* Change the type of breakpoint between hardware assisted or
1883          an ordinary watchpoint depending on the hardware support
1884          and free hardware slots.  REPARSE is set when the inferior
1885          is started.  */
1886       if (reparse)
1887         {
1888           int reg_cnt;
1889           enum bp_loc_type loc_type;
1890           struct bp_location *bl;
1891
1892           reg_cnt = can_use_hardware_watchpoint (val_chain);
1893
1894           if (reg_cnt)
1895             {
1896               int i, target_resources_ok, other_type_used;
1897               enum bptype type;
1898
1899               /* Use an exact watchpoint when there's only one memory region to be
1900                  watched, and only one debug register is needed to watch it.  */
1901               b->exact = target_exact_watchpoints && reg_cnt == 1;
1902
1903               /* We need to determine how many resources are already
1904                  used for all other hardware watchpoints plus this one
1905                  to see if we still have enough resources to also fit
1906                  this watchpoint in as well.  */
1907
1908               /* If this is a software watchpoint, we try to turn it
1909                  to a hardware one -- count resources as if B was of
1910                  hardware watchpoint type.  */
1911               type = b->type;
1912               if (type == bp_watchpoint)
1913                 type = bp_hardware_watchpoint;
1914
1915               /* This watchpoint may or may not have been placed on
1916                  the list yet at this point (it won't be in the list
1917                  if we're trying to create it for the first time,
1918                  through watch_command), so always account for it
1919                  manually.  */
1920
1921               /* Count resources used by all watchpoints except B.  */
1922               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1923
1924               /* Add in the resources needed for B.  */
1925               i += hw_watchpoint_use_count (b);
1926
1927               target_resources_ok
1928                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1929               if (target_resources_ok <= 0)
1930                 {
1931                   int sw_mode = b->ops->works_in_software_mode (b);
1932
1933                   if (target_resources_ok == 0 && !sw_mode)
1934                     error (_("Target does not support this type of "
1935                              "hardware watchpoint."));
1936                   else if (target_resources_ok < 0 && !sw_mode)
1937                     error (_("There are not enough available hardware "
1938                              "resources for this watchpoint."));
1939
1940                   /* Downgrade to software watchpoint.  */
1941                   b->type = bp_watchpoint;
1942                 }
1943               else
1944                 {
1945                   /* If this was a software watchpoint, we've just
1946                      found we have enough resources to turn it to a
1947                      hardware watchpoint.  Otherwise, this is a
1948                      nop.  */
1949                   b->type = type;
1950                 }
1951             }
1952           else if (!b->ops->works_in_software_mode (b))
1953             {
1954               if (!can_use_hw_watchpoints)
1955                 error (_("Can't set read/access watchpoint when "
1956                          "hardware watchpoints are disabled."));
1957               else
1958                 error (_("Expression cannot be implemented with "
1959                          "read/access watchpoint."));
1960             }
1961           else
1962             b->type = bp_watchpoint;
1963
1964           loc_type = (b->type == bp_watchpoint? bp_loc_other
1965                       : bp_loc_hardware_watchpoint);
1966           for (bl = b->loc; bl; bl = bl->next)
1967             bl->loc_type = loc_type;
1968         }
1969
1970       /* If a software watchpoint is not watching any memory, then the
1971          above left it without any location set up.  But,
1972          bpstat_stop_status requires a location to be able to report
1973          stops, so make sure there's at least a dummy one.  */
1974       if (b->type == bp_watchpoint && b->loc == NULL)
1975         software_watchpoint_add_no_memory_location (b, frame_pspace);
1976     }
1977   else if (!within_current_scope)
1978     {
1979       printf_filtered (_("\
1980 Watchpoint %d deleted because the program has left the block\n\
1981 in which its expression is valid.\n"),
1982                        b->number);
1983       watchpoint_del_at_next_stop (b);
1984     }
1985
1986   /* Restore the selected frame.  */
1987   if (frame_saved)
1988     select_frame (frame_find_by_id (saved_frame_id));
1989 }
1990
1991
1992 /* Returns 1 iff breakpoint location should be
1993    inserted in the inferior.  We don't differentiate the type of BL's owner
1994    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1995    breakpoint_ops is not defined, because in insert_bp_location,
1996    tracepoint's insert_location will not be called.  */
1997 static int
1998 should_be_inserted (struct bp_location *bl)
1999 {
2000   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2001     return 0;
2002
2003   if (bl->owner->disposition == disp_del_at_next_stop)
2004     return 0;
2005
2006   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2007     return 0;
2008
2009   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2010     return 0;
2011
2012   /* This is set for example, when we're attached to the parent of a
2013      vfork, and have detached from the child.  The child is running
2014      free, and we expect it to do an exec or exit, at which point the
2015      OS makes the parent schedulable again (and the target reports
2016      that the vfork is done).  Until the child is done with the shared
2017      memory region, do not insert breakpoints in the parent, otherwise
2018      the child could still trip on the parent's breakpoints.  Since
2019      the parent is blocked anyway, it won't miss any breakpoint.  */
2020   if (bl->pspace->breakpoints_not_allowed)
2021     return 0;
2022
2023   /* Don't insert a breakpoint if we're trying to step past its
2024      location, except if the breakpoint is a single-step breakpoint,
2025      and the breakpoint's thread is the thread which is stepping past
2026      a breakpoint.  */
2027   if ((bl->loc_type == bp_loc_software_breakpoint
2028        || bl->loc_type == bp_loc_hardware_breakpoint)
2029       && stepping_past_instruction_at (bl->pspace->aspace,
2030                                        bl->address)
2031       /* The single-step breakpoint may be inserted at the location
2032          we're trying to step if the instruction branches to itself.
2033          However, the instruction won't be executed at all and it may
2034          break the semantics of the instruction, for example, the
2035          instruction is a conditional branch or updates some flags.
2036          We can't fix it unless GDB is able to emulate the instruction
2037          or switch to displaced stepping.  */
2038       && !(bl->owner->type == bp_single_step
2039            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2040     {
2041       if (debug_infrun)
2042         {
2043           fprintf_unfiltered (gdb_stdlog,
2044                               "infrun: skipping breakpoint: "
2045                               "stepping past insn at: %s\n",
2046                               paddress (bl->gdbarch, bl->address));
2047         }
2048       return 0;
2049     }
2050
2051   /* Don't insert watchpoints if we're trying to step past the
2052      instruction that triggered one.  */
2053   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2054       && stepping_past_nonsteppable_watchpoint ())
2055     {
2056       if (debug_infrun)
2057         {
2058           fprintf_unfiltered (gdb_stdlog,
2059                               "infrun: stepping past non-steppable watchpoint. "
2060                               "skipping watchpoint at %s:%d\n",
2061                               paddress (bl->gdbarch, bl->address),
2062                               bl->length);
2063         }
2064       return 0;
2065     }
2066
2067   return 1;
2068 }
2069
2070 /* Same as should_be_inserted but does the check assuming
2071    that the location is not duplicated.  */
2072
2073 static int
2074 unduplicated_should_be_inserted (struct bp_location *bl)
2075 {
2076   int result;
2077   const int save_duplicate = bl->duplicate;
2078
2079   bl->duplicate = 0;
2080   result = should_be_inserted (bl);
2081   bl->duplicate = save_duplicate;
2082   return result;
2083 }
2084
2085 /* Parses a conditional described by an expression COND into an
2086    agent expression bytecode suitable for evaluation
2087    by the bytecode interpreter.  Return NULL if there was
2088    any error during parsing.  */
2089
2090 static agent_expr_up
2091 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2092 {
2093   if (cond == NULL)
2094     return NULL;
2095
2096   agent_expr_up aexpr;
2097
2098   /* We don't want to stop processing, so catch any errors
2099      that may show up.  */
2100   try
2101     {
2102       aexpr = gen_eval_for_expr (scope, cond);
2103     }
2104
2105   catch (const gdb_exception_error &ex)
2106     {
2107       /* If we got here, it means the condition could not be parsed to a valid
2108          bytecode expression and thus can't be evaluated on the target's side.
2109          It's no use iterating through the conditions.  */
2110     }
2111
2112   /* We have a valid agent expression.  */
2113   return aexpr;
2114 }
2115
2116 /* Based on location BL, create a list of breakpoint conditions to be
2117    passed on to the target.  If we have duplicated locations with different
2118    conditions, we will add such conditions to the list.  The idea is that the
2119    target will evaluate the list of conditions and will only notify GDB when
2120    one of them is true.  */
2121
2122 static void
2123 build_target_condition_list (struct bp_location *bl)
2124 {
2125   struct bp_location **locp = NULL, **loc2p;
2126   int null_condition_or_parse_error = 0;
2127   int modified = bl->needs_update;
2128   struct bp_location *loc;
2129
2130   /* Release conditions left over from a previous insert.  */
2131   bl->target_info.conditions.clear ();
2132
2133   /* This is only meaningful if the target is
2134      evaluating conditions and if the user has
2135      opted for condition evaluation on the target's
2136      side.  */
2137   if (gdb_evaluates_breakpoint_condition_p ()
2138       || !target_supports_evaluation_of_breakpoint_conditions ())
2139     return;
2140
2141   /* Do a first pass to check for locations with no assigned
2142      conditions or conditions that fail to parse to a valid agent expression
2143      bytecode.  If any of these happen, then it's no use to send conditions
2144      to the target since this location will always trigger and generate a
2145      response back to GDB.  */
2146   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2147     {
2148       loc = (*loc2p);
2149       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2150         {
2151           if (modified)
2152             {
2153               /* Re-parse the conditions since something changed.  In that
2154                  case we already freed the condition bytecodes (see
2155                  force_breakpoint_reinsertion).  We just
2156                  need to parse the condition to bytecodes again.  */
2157               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2158                                                         loc->cond.get ());
2159             }
2160
2161           /* If we have a NULL bytecode expression, it means something
2162              went wrong or we have a null condition expression.  */
2163           if (!loc->cond_bytecode)
2164             {
2165               null_condition_or_parse_error = 1;
2166               break;
2167             }
2168         }
2169     }
2170
2171   /* If any of these happened, it means we will have to evaluate the conditions
2172      for the location's address on gdb's side.  It is no use keeping bytecodes
2173      for all the other duplicate locations, thus we free all of them here.
2174
2175      This is so we have a finer control over which locations' conditions are
2176      being evaluated by GDB or the remote stub.  */
2177   if (null_condition_or_parse_error)
2178     {
2179       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2180         {
2181           loc = (*loc2p);
2182           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2183             {
2184               /* Only go as far as the first NULL bytecode is
2185                  located.  */
2186               if (!loc->cond_bytecode)
2187                 return;
2188
2189               loc->cond_bytecode.reset ();
2190             }
2191         }
2192     }
2193
2194   /* No NULL conditions or failed bytecode generation.  Build a condition list
2195      for this location's address.  */
2196   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2197     {
2198       loc = (*loc2p);
2199       if (loc->cond
2200           && is_breakpoint (loc->owner)
2201           && loc->pspace->num == bl->pspace->num
2202           && loc->owner->enable_state == bp_enabled
2203           && loc->enabled)
2204         {
2205           /* Add the condition to the vector.  This will be used later
2206              to send the conditions to the target.  */
2207           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2208         }
2209     }
2210
2211   return;
2212 }
2213
2214 /* Parses a command described by string CMD into an agent expression
2215    bytecode suitable for evaluation by the bytecode interpreter.
2216    Return NULL if there was any error during parsing.  */
2217
2218 static agent_expr_up
2219 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2220 {
2221   const char *cmdrest;
2222   const char *format_start, *format_end;
2223   struct gdbarch *gdbarch = get_current_arch ();
2224
2225   if (cmd == NULL)
2226     return NULL;
2227
2228   cmdrest = cmd;
2229
2230   if (*cmdrest == ',')
2231     ++cmdrest;
2232   cmdrest = skip_spaces (cmdrest);
2233
2234   if (*cmdrest++ != '"')
2235     error (_("No format string following the location"));
2236
2237   format_start = cmdrest;
2238
2239   format_pieces fpieces (&cmdrest);
2240
2241   format_end = cmdrest;
2242
2243   if (*cmdrest++ != '"')
2244     error (_("Bad format string, non-terminated '\"'."));
2245   
2246   cmdrest = skip_spaces (cmdrest);
2247
2248   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2249     error (_("Invalid argument syntax"));
2250
2251   if (*cmdrest == ',')
2252     cmdrest++;
2253   cmdrest = skip_spaces (cmdrest);
2254
2255   /* For each argument, make an expression.  */
2256
2257   std::vector<struct expression *> argvec;
2258   while (*cmdrest != '\0')
2259     {
2260       const char *cmd1;
2261
2262       cmd1 = cmdrest;
2263       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2264       argvec.push_back (expr.release ());
2265       cmdrest = cmd1;
2266       if (*cmdrest == ',')
2267         ++cmdrest;
2268     }
2269
2270   agent_expr_up aexpr;
2271
2272   /* We don't want to stop processing, so catch any errors
2273      that may show up.  */
2274   try
2275     {
2276       aexpr = gen_printf (scope, gdbarch, 0, 0,
2277                           format_start, format_end - format_start,
2278                           argvec.size (), argvec.data ());
2279     }
2280   catch (const gdb_exception_error &ex)
2281     {
2282       /* If we got here, it means the command could not be parsed to a valid
2283          bytecode expression and thus can't be evaluated on the target's side.
2284          It's no use iterating through the other commands.  */
2285     }
2286
2287   /* We have a valid agent expression, return it.  */
2288   return aexpr;
2289 }
2290
2291 /* Based on location BL, create a list of breakpoint commands to be
2292    passed on to the target.  If we have duplicated locations with
2293    different commands, we will add any such to the list.  */
2294
2295 static void
2296 build_target_command_list (struct bp_location *bl)
2297 {
2298   struct bp_location **locp = NULL, **loc2p;
2299   int null_command_or_parse_error = 0;
2300   int modified = bl->needs_update;
2301   struct bp_location *loc;
2302
2303   /* Clear commands left over from a previous insert.  */
2304   bl->target_info.tcommands.clear ();
2305
2306   if (!target_can_run_breakpoint_commands ())
2307     return;
2308
2309   /* For now, limit to agent-style dprintf breakpoints.  */
2310   if (dprintf_style != dprintf_style_agent)
2311     return;
2312
2313   /* For now, if we have any duplicate location that isn't a dprintf,
2314      don't install the target-side commands, as that would make the
2315      breakpoint not be reported to the core, and we'd lose
2316      control.  */
2317   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2318     {
2319       loc = (*loc2p);
2320       if (is_breakpoint (loc->owner)
2321           && loc->pspace->num == bl->pspace->num
2322           && loc->owner->type != bp_dprintf)
2323         return;
2324     }
2325
2326   /* Do a first pass to check for locations with no assigned
2327      conditions or conditions that fail to parse to a valid agent expression
2328      bytecode.  If any of these happen, then it's no use to send conditions
2329      to the target since this location will always trigger and generate a
2330      response back to GDB.  */
2331   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2332     {
2333       loc = (*loc2p);
2334       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2335         {
2336           if (modified)
2337             {
2338               /* Re-parse the commands since something changed.  In that
2339                  case we already freed the command bytecodes (see
2340                  force_breakpoint_reinsertion).  We just
2341                  need to parse the command to bytecodes again.  */
2342               loc->cmd_bytecode
2343                 = parse_cmd_to_aexpr (bl->address,
2344                                       loc->owner->extra_string);
2345             }
2346
2347           /* If we have a NULL bytecode expression, it means something
2348              went wrong or we have a null command expression.  */
2349           if (!loc->cmd_bytecode)
2350             {
2351               null_command_or_parse_error = 1;
2352               break;
2353             }
2354         }
2355     }
2356
2357   /* If anything failed, then we're not doing target-side commands,
2358      and so clean up.  */
2359   if (null_command_or_parse_error)
2360     {
2361       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2362         {
2363           loc = (*loc2p);
2364           if (is_breakpoint (loc->owner)
2365               && loc->pspace->num == bl->pspace->num)
2366             {
2367               /* Only go as far as the first NULL bytecode is
2368                  located.  */
2369               if (loc->cmd_bytecode == NULL)
2370                 return;
2371
2372               loc->cmd_bytecode.reset ();
2373             }
2374         }
2375     }
2376
2377   /* No NULL commands or failed bytecode generation.  Build a command list
2378      for this location's address.  */
2379   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2380     {
2381       loc = (*loc2p);
2382       if (loc->owner->extra_string
2383           && is_breakpoint (loc->owner)
2384           && loc->pspace->num == bl->pspace->num
2385           && loc->owner->enable_state == bp_enabled
2386           && loc->enabled)
2387         {
2388           /* Add the command to the vector.  This will be used later
2389              to send the commands to the target.  */
2390           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2391         }
2392     }
2393
2394   bl->target_info.persist = 0;
2395   /* Maybe flag this location as persistent.  */
2396   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2397     bl->target_info.persist = 1;
2398 }
2399
2400 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2401    of breakpoint according to ADDR except single-step breakpoint.
2402    Get the kind of single-step breakpoint according to the current
2403    registers state.  */
2404
2405 static int
2406 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2407 {
2408   if (bl->owner->type == bp_single_step)
2409     {
2410       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2411       struct regcache *regcache;
2412
2413       regcache = get_thread_regcache (thr);
2414
2415       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2416                                                          regcache, addr);
2417     }
2418   else
2419     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2420 }
2421
2422 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2423    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2424    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2425    Returns 0 for success, 1 if the bp_location type is not supported or
2426    -1 for failure.
2427
2428    NOTE drow/2003-09-09: This routine could be broken down to an
2429    object-style method for each breakpoint or catchpoint type.  */
2430 static int
2431 insert_bp_location (struct bp_location *bl,
2432                     struct ui_file *tmp_error_stream,
2433                     int *disabled_breaks,
2434                     int *hw_breakpoint_error,
2435                     int *hw_bp_error_explained_already)
2436 {
2437   gdb_exception bp_excpt;
2438
2439   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2440     return 0;
2441
2442   /* Note we don't initialize bl->target_info, as that wipes out
2443      the breakpoint location's shadow_contents if the breakpoint
2444      is still inserted at that location.  This in turn breaks
2445      target_read_memory which depends on these buffers when
2446      a memory read is requested at the breakpoint location:
2447      Once the target_info has been wiped, we fail to see that
2448      we have a breakpoint inserted at that address and thus
2449      read the breakpoint instead of returning the data saved in
2450      the breakpoint location's shadow contents.  */
2451   bl->target_info.reqstd_address = bl->address;
2452   bl->target_info.placed_address_space = bl->pspace->aspace;
2453   bl->target_info.length = bl->length;
2454
2455   /* When working with target-side conditions, we must pass all the conditions
2456      for the same breakpoint address down to the target since GDB will not
2457      insert those locations.  With a list of breakpoint conditions, the target
2458      can decide when to stop and notify GDB.  */
2459
2460   if (is_breakpoint (bl->owner))
2461     {
2462       build_target_condition_list (bl);
2463       build_target_command_list (bl);
2464       /* Reset the modification marker.  */
2465       bl->needs_update = 0;
2466     }
2467
2468   if (bl->loc_type == bp_loc_software_breakpoint
2469       || bl->loc_type == bp_loc_hardware_breakpoint)
2470     {
2471       if (bl->owner->type != bp_hardware_breakpoint)
2472         {
2473           /* If the explicitly specified breakpoint type
2474              is not hardware breakpoint, check the memory map to see
2475              if the breakpoint address is in read only memory or not.
2476
2477              Two important cases are:
2478              - location type is not hardware breakpoint, memory
2479              is readonly.  We change the type of the location to
2480              hardware breakpoint.
2481              - location type is hardware breakpoint, memory is
2482              read-write.  This means we've previously made the
2483              location hardware one, but then the memory map changed,
2484              so we undo.
2485              
2486              When breakpoints are removed, remove_breakpoints will use
2487              location types we've just set here, the only possible
2488              problem is that memory map has changed during running
2489              program, but it's not going to work anyway with current
2490              gdb.  */
2491           struct mem_region *mr 
2492             = lookup_mem_region (bl->target_info.reqstd_address);
2493           
2494           if (mr)
2495             {
2496               if (automatic_hardware_breakpoints)
2497                 {
2498                   enum bp_loc_type new_type;
2499                   
2500                   if (mr->attrib.mode != MEM_RW)
2501                     new_type = bp_loc_hardware_breakpoint;
2502                   else 
2503                     new_type = bp_loc_software_breakpoint;
2504                   
2505                   if (new_type != bl->loc_type)
2506                     {
2507                       static int said = 0;
2508
2509                       bl->loc_type = new_type;
2510                       if (!said)
2511                         {
2512                           fprintf_filtered (gdb_stdout,
2513                                             _("Note: automatically using "
2514                                               "hardware breakpoints for "
2515                                               "read-only addresses.\n"));
2516                           said = 1;
2517                         }
2518                     }
2519                 }
2520               else if (bl->loc_type == bp_loc_software_breakpoint
2521                        && mr->attrib.mode != MEM_RW)
2522                 {
2523                   fprintf_unfiltered (tmp_error_stream,
2524                                       _("Cannot insert breakpoint %d.\n"
2525                                         "Cannot set software breakpoint "
2526                                         "at read-only address %s\n"),
2527                                       bl->owner->number,
2528                                       paddress (bl->gdbarch, bl->address));
2529                   return 1;
2530                 }
2531             }
2532         }
2533         
2534       /* First check to see if we have to handle an overlay.  */
2535       if (overlay_debugging == ovly_off
2536           || bl->section == NULL
2537           || !(section_is_overlay (bl->section)))
2538         {
2539           /* No overlay handling: just set the breakpoint.  */
2540           try
2541             {
2542               int val;
2543
2544               val = bl->owner->ops->insert_location (bl);
2545               if (val)
2546                 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2547             }
2548           catch (gdb_exception &e)
2549             {
2550               bp_excpt = std::move (e);
2551             }
2552         }
2553       else
2554         {
2555           /* This breakpoint is in an overlay section.
2556              Shall we set a breakpoint at the LMA?  */
2557           if (!overlay_events_enabled)
2558             {
2559               /* Yes -- overlay event support is not active, 
2560                  so we must try to set a breakpoint at the LMA.
2561                  This will not work for a hardware breakpoint.  */
2562               if (bl->loc_type == bp_loc_hardware_breakpoint)
2563                 warning (_("hardware breakpoint %d not supported in overlay!"),
2564                          bl->owner->number);
2565               else
2566                 {
2567                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2568                                                              bl->section);
2569                   /* Set a software (trap) breakpoint at the LMA.  */
2570                   bl->overlay_target_info = bl->target_info;
2571                   bl->overlay_target_info.reqstd_address = addr;
2572
2573                   /* No overlay handling: just set the breakpoint.  */
2574                   try
2575                     {
2576                       int val;
2577
2578                       bl->overlay_target_info.kind
2579                         = breakpoint_kind (bl, &addr);
2580                       bl->overlay_target_info.placed_address = addr;
2581                       val = target_insert_breakpoint (bl->gdbarch,
2582                                                       &bl->overlay_target_info);
2583                       if (val)
2584                         bp_excpt
2585                           = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2586                     }
2587                   catch (gdb_exception &e)
2588                     {
2589                       bp_excpt = std::move (e);
2590                     }
2591
2592                   if (bp_excpt.reason != 0)
2593                     fprintf_unfiltered (tmp_error_stream,
2594                                         "Overlay breakpoint %d "
2595                                         "failed: in ROM?\n",
2596                                         bl->owner->number);
2597                 }
2598             }
2599           /* Shall we set a breakpoint at the VMA? */
2600           if (section_is_mapped (bl->section))
2601             {
2602               /* Yes.  This overlay section is mapped into memory.  */
2603               try
2604                 {
2605                   int val;
2606
2607                   val = bl->owner->ops->insert_location (bl);
2608                   if (val)
2609                     bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2610                 }
2611               catch (gdb_exception &e)
2612                 {
2613                   bp_excpt = std::move (e);
2614                 }
2615             }
2616           else
2617             {
2618               /* No.  This breakpoint will not be inserted.  
2619                  No error, but do not mark the bp as 'inserted'.  */
2620               return 0;
2621             }
2622         }
2623
2624       if (bp_excpt.reason != 0)
2625         {
2626           /* Can't set the breakpoint.  */
2627
2628           /* In some cases, we might not be able to insert a
2629              breakpoint in a shared library that has already been
2630              removed, but we have not yet processed the shlib unload
2631              event.  Unfortunately, some targets that implement
2632              breakpoint insertion themselves can't tell why the
2633              breakpoint insertion failed (e.g., the remote target
2634              doesn't define error codes), so we must treat generic
2635              errors as memory errors.  */
2636           if (bp_excpt.reason == RETURN_ERROR
2637               && (bp_excpt.error == GENERIC_ERROR
2638                   || bp_excpt.error == MEMORY_ERROR)
2639               && bl->loc_type == bp_loc_software_breakpoint
2640               && (solib_name_from_address (bl->pspace, bl->address)
2641                   || shared_objfile_contains_address_p (bl->pspace,
2642                                                         bl->address)))
2643             {
2644               /* See also: disable_breakpoints_in_shlibs.  */
2645               bl->shlib_disabled = 1;
2646               gdb::observers::breakpoint_modified.notify (bl->owner);
2647               if (!*disabled_breaks)
2648                 {
2649                   fprintf_unfiltered (tmp_error_stream, 
2650                                       "Cannot insert breakpoint %d.\n", 
2651                                       bl->owner->number);
2652                   fprintf_unfiltered (tmp_error_stream, 
2653                                       "Temporarily disabling shared "
2654                                       "library breakpoints:\n");
2655                 }
2656               *disabled_breaks = 1;
2657               fprintf_unfiltered (tmp_error_stream,
2658                                   "breakpoint #%d\n", bl->owner->number);
2659               return 0;
2660             }
2661           else
2662             {
2663               if (bl->loc_type == bp_loc_hardware_breakpoint)
2664                 {
2665                   *hw_breakpoint_error = 1;
2666                   *hw_bp_error_explained_already = bp_excpt.message != NULL;
2667                   fprintf_unfiltered (tmp_error_stream,
2668                                       "Cannot insert hardware breakpoint %d%s",
2669                                       bl->owner->number,
2670                                       bp_excpt.message ? ":" : ".\n");
2671                   if (bp_excpt.message != NULL)
2672                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2673                                         bp_excpt.what ());
2674                 }
2675               else
2676                 {
2677                   if (bp_excpt.message == NULL)
2678                     {
2679                       std::string message
2680                         = memory_error_message (TARGET_XFER_E_IO,
2681                                                 bl->gdbarch, bl->address);
2682
2683                       fprintf_unfiltered (tmp_error_stream,
2684                                           "Cannot insert breakpoint %d.\n"
2685                                           "%s\n",
2686                                           bl->owner->number, message.c_str ());
2687                     }
2688                   else
2689                     {
2690                       fprintf_unfiltered (tmp_error_stream,
2691                                           "Cannot insert breakpoint %d: %s\n",
2692                                           bl->owner->number,
2693                                           bp_excpt.what ());
2694                     }
2695                 }
2696               return 1;
2697
2698             }
2699         }
2700       else
2701         bl->inserted = 1;
2702
2703       return 0;
2704     }
2705
2706   else if (bl->loc_type == bp_loc_hardware_watchpoint
2707            /* NOTE drow/2003-09-08: This state only exists for removing
2708               watchpoints.  It's not clear that it's necessary...  */
2709            && bl->owner->disposition != disp_del_at_next_stop)
2710     {
2711       int val;
2712
2713       gdb_assert (bl->owner->ops != NULL
2714                   && bl->owner->ops->insert_location != NULL);
2715
2716       val = bl->owner->ops->insert_location (bl);
2717
2718       /* If trying to set a read-watchpoint, and it turns out it's not
2719          supported, try emulating one with an access watchpoint.  */
2720       if (val == 1 && bl->watchpoint_type == hw_read)
2721         {
2722           struct bp_location *loc, **loc_temp;
2723
2724           /* But don't try to insert it, if there's already another
2725              hw_access location that would be considered a duplicate
2726              of this one.  */
2727           ALL_BP_LOCATIONS (loc, loc_temp)
2728             if (loc != bl
2729                 && loc->watchpoint_type == hw_access
2730                 && watchpoint_locations_match (bl, loc))
2731               {
2732                 bl->duplicate = 1;
2733                 bl->inserted = 1;
2734                 bl->target_info = loc->target_info;
2735                 bl->watchpoint_type = hw_access;
2736                 val = 0;
2737                 break;
2738               }
2739
2740           if (val == 1)
2741             {
2742               bl->watchpoint_type = hw_access;
2743               val = bl->owner->ops->insert_location (bl);
2744
2745               if (val)
2746                 /* Back to the original value.  */
2747                 bl->watchpoint_type = hw_read;
2748             }
2749         }
2750
2751       bl->inserted = (val == 0);
2752     }
2753
2754   else if (bl->owner->type == bp_catchpoint)
2755     {
2756       int val;
2757
2758       gdb_assert (bl->owner->ops != NULL
2759                   && bl->owner->ops->insert_location != NULL);
2760
2761       val = bl->owner->ops->insert_location (bl);
2762       if (val)
2763         {
2764           bl->owner->enable_state = bp_disabled;
2765
2766           if (val == 1)
2767             warning (_("\
2768 Error inserting catchpoint %d: Your system does not support this type\n\
2769 of catchpoint."), bl->owner->number);
2770           else
2771             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2772         }
2773
2774       bl->inserted = (val == 0);
2775
2776       /* We've already printed an error message if there was a problem
2777          inserting this catchpoint, and we've disabled the catchpoint,
2778          so just return success.  */
2779       return 0;
2780     }
2781
2782   return 0;
2783 }
2784
2785 /* This function is called when program space PSPACE is about to be
2786    deleted.  It takes care of updating breakpoints to not reference
2787    PSPACE anymore.  */
2788
2789 void
2790 breakpoint_program_space_exit (struct program_space *pspace)
2791 {
2792   struct breakpoint *b, *b_temp;
2793   struct bp_location *loc, **loc_temp;
2794
2795   /* Remove any breakpoint that was set through this program space.  */
2796   ALL_BREAKPOINTS_SAFE (b, b_temp)
2797     {
2798       if (b->pspace == pspace)
2799         delete_breakpoint (b);
2800     }
2801
2802   /* Breakpoints set through other program spaces could have locations
2803      bound to PSPACE as well.  Remove those.  */
2804   ALL_BP_LOCATIONS (loc, loc_temp)
2805     {
2806       struct bp_location *tmp;
2807
2808       if (loc->pspace == pspace)
2809         {
2810           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2811           if (loc->owner->loc == loc)
2812             loc->owner->loc = loc->next;
2813           else
2814             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2815               if (tmp->next == loc)
2816                 {
2817                   tmp->next = loc->next;
2818                   break;
2819                 }
2820         }
2821     }
2822
2823   /* Now update the global location list to permanently delete the
2824      removed locations above.  */
2825   update_global_location_list (UGLL_DONT_INSERT);
2826 }
2827
2828 /* Make sure all breakpoints are inserted in inferior.
2829    Throws exception on any error.
2830    A breakpoint that is already inserted won't be inserted
2831    again, so calling this function twice is safe.  */
2832 void
2833 insert_breakpoints (void)
2834 {
2835   struct breakpoint *bpt;
2836
2837   ALL_BREAKPOINTS (bpt)
2838     if (is_hardware_watchpoint (bpt))
2839       {
2840         struct watchpoint *w = (struct watchpoint *) bpt;
2841
2842         update_watchpoint (w, 0 /* don't reparse.  */);
2843       }
2844
2845   /* Updating watchpoints creates new locations, so update the global
2846      location list.  Explicitly tell ugll to insert locations and
2847      ignore breakpoints_always_inserted_mode.  */
2848   update_global_location_list (UGLL_INSERT);
2849 }
2850
2851 /* Invoke CALLBACK for each of bp_location.  */
2852
2853 void
2854 iterate_over_bp_locations (walk_bp_location_callback callback)
2855 {
2856   struct bp_location *loc, **loc_tmp;
2857
2858   ALL_BP_LOCATIONS (loc, loc_tmp)
2859     {
2860       callback (loc, NULL);
2861     }
2862 }
2863
2864 /* This is used when we need to synch breakpoint conditions between GDB and the
2865    target.  It is the case with deleting and disabling of breakpoints when using
2866    always-inserted mode.  */
2867
2868 static void
2869 update_inserted_breakpoint_locations (void)
2870 {
2871   struct bp_location *bl, **blp_tmp;
2872   int error_flag = 0;
2873   int val = 0;
2874   int disabled_breaks = 0;
2875   int hw_breakpoint_error = 0;
2876   int hw_bp_details_reported = 0;
2877
2878   string_file tmp_error_stream;
2879
2880   /* Explicitly mark the warning -- this will only be printed if
2881      there was an error.  */
2882   tmp_error_stream.puts ("Warning:\n");
2883
2884   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2885
2886   ALL_BP_LOCATIONS (bl, blp_tmp)
2887     {
2888       /* We only want to update software breakpoints and hardware
2889          breakpoints.  */
2890       if (!is_breakpoint (bl->owner))
2891         continue;
2892
2893       /* We only want to update locations that are already inserted
2894          and need updating.  This is to avoid unwanted insertion during
2895          deletion of breakpoints.  */
2896       if (!bl->inserted || !bl->needs_update)
2897         continue;
2898
2899       switch_to_program_space_and_thread (bl->pspace);
2900
2901       /* For targets that support global breakpoints, there's no need
2902          to select an inferior to insert breakpoint to.  In fact, even
2903          if we aren't attached to any process yet, we should still
2904          insert breakpoints.  */
2905       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2906           && inferior_ptid == null_ptid)
2907         continue;
2908
2909       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2910                                     &hw_breakpoint_error, &hw_bp_details_reported);
2911       if (val)
2912         error_flag = val;
2913     }
2914
2915   if (error_flag)
2916     {
2917       target_terminal::ours_for_output ();
2918       error_stream (tmp_error_stream);
2919     }
2920 }
2921
2922 /* Used when starting or continuing the program.  */
2923
2924 static void
2925 insert_breakpoint_locations (void)
2926 {
2927   struct breakpoint *bpt;
2928   struct bp_location *bl, **blp_tmp;
2929   int error_flag = 0;
2930   int val = 0;
2931   int disabled_breaks = 0;
2932   int hw_breakpoint_error = 0;
2933   int hw_bp_error_explained_already = 0;
2934
2935   string_file tmp_error_stream;
2936
2937   /* Explicitly mark the warning -- this will only be printed if
2938      there was an error.  */
2939   tmp_error_stream.puts ("Warning:\n");
2940
2941   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2942
2943   ALL_BP_LOCATIONS (bl, blp_tmp)
2944     {
2945       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2946         continue;
2947
2948       /* There is no point inserting thread-specific breakpoints if
2949          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2950          has BL->OWNER always non-NULL.  */
2951       if (bl->owner->thread != -1
2952           && !valid_global_thread_id (bl->owner->thread))
2953         continue;
2954
2955       switch_to_program_space_and_thread (bl->pspace);
2956
2957       /* For targets that support global breakpoints, there's no need
2958          to select an inferior to insert breakpoint to.  In fact, even
2959          if we aren't attached to any process yet, we should still
2960          insert breakpoints.  */
2961       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2962           && inferior_ptid == null_ptid)
2963         continue;
2964
2965       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2966                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2967       if (val)
2968         error_flag = val;
2969     }
2970
2971   /* If we failed to insert all locations of a watchpoint, remove
2972      them, as half-inserted watchpoint is of limited use.  */
2973   ALL_BREAKPOINTS (bpt)  
2974     {
2975       int some_failed = 0;
2976       struct bp_location *loc;
2977
2978       if (!is_hardware_watchpoint (bpt))
2979         continue;
2980
2981       if (!breakpoint_enabled (bpt))
2982         continue;
2983
2984       if (bpt->disposition == disp_del_at_next_stop)
2985         continue;
2986       
2987       for (loc = bpt->loc; loc; loc = loc->next)
2988         if (!loc->inserted && should_be_inserted (loc))
2989           {
2990             some_failed = 1;
2991             break;
2992           }
2993       if (some_failed)
2994         {
2995           for (loc = bpt->loc; loc; loc = loc->next)
2996             if (loc->inserted)
2997               remove_breakpoint (loc);
2998
2999           hw_breakpoint_error = 1;
3000           tmp_error_stream.printf ("Could not insert "
3001                                    "hardware watchpoint %d.\n",
3002                                    bpt->number);
3003           error_flag = -1;
3004         }
3005     }
3006
3007   if (error_flag)
3008     {
3009       /* If a hardware breakpoint or watchpoint was inserted, add a
3010          message about possibly exhausted resources.  */
3011       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3012         {
3013           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3014 You may have requested too many hardware breakpoints/watchpoints.\n");
3015         }
3016       target_terminal::ours_for_output ();
3017       error_stream (tmp_error_stream);
3018     }
3019 }
3020
3021 /* Used when the program stops.
3022    Returns zero if successful, or non-zero if there was a problem
3023    removing a breakpoint location.  */
3024
3025 int
3026 remove_breakpoints (void)
3027 {
3028   struct bp_location *bl, **blp_tmp;
3029   int val = 0;
3030
3031   ALL_BP_LOCATIONS (bl, blp_tmp)
3032   {
3033     if (bl->inserted && !is_tracepoint (bl->owner))
3034       val |= remove_breakpoint (bl);
3035   }
3036   return val;
3037 }
3038
3039 /* When a thread exits, remove breakpoints that are related to
3040    that thread.  */
3041
3042 static void
3043 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3044 {
3045   struct breakpoint *b, *b_tmp;
3046
3047   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3048     {
3049       if (b->thread == tp->global_num && user_breakpoint_p (b))
3050         {
3051           b->disposition = disp_del_at_next_stop;
3052
3053           printf_filtered (_("\
3054 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3055                            b->number, print_thread_id (tp));
3056
3057           /* Hide it from the user.  */
3058           b->number = 0;
3059        }
3060     }
3061 }
3062
3063 /* Remove breakpoints of inferior INF.  */
3064
3065 int
3066 remove_breakpoints_inf (inferior *inf)
3067 {
3068   struct bp_location *bl, **blp_tmp;
3069   int val;
3070
3071   ALL_BP_LOCATIONS (bl, blp_tmp)
3072   {
3073     if (bl->pspace != inf->pspace)
3074       continue;
3075
3076     if (bl->inserted && !bl->target_info.persist)
3077       {
3078         val = remove_breakpoint (bl);
3079         if (val != 0)
3080           return val;
3081       }
3082   }
3083   return 0;
3084 }
3085
3086 static int internal_breakpoint_number = -1;
3087
3088 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3089    If INTERNAL is non-zero, the breakpoint number will be populated
3090    from internal_breakpoint_number and that variable decremented.
3091    Otherwise the breakpoint number will be populated from
3092    breakpoint_count and that value incremented.  Internal breakpoints
3093    do not set the internal var bpnum.  */
3094 static void
3095 set_breakpoint_number (int internal, struct breakpoint *b)
3096 {
3097   if (internal)
3098     b->number = internal_breakpoint_number--;
3099   else
3100     {
3101       set_breakpoint_count (breakpoint_count + 1);
3102       b->number = breakpoint_count;
3103     }
3104 }
3105
3106 static struct breakpoint *
3107 create_internal_breakpoint (struct gdbarch *gdbarch,
3108                             CORE_ADDR address, enum bptype type,
3109                             const struct breakpoint_ops *ops)
3110 {
3111   symtab_and_line sal;
3112   sal.pc = address;
3113   sal.section = find_pc_overlay (sal.pc);
3114   sal.pspace = current_program_space;
3115
3116   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3117   b->number = internal_breakpoint_number--;
3118   b->disposition = disp_donttouch;
3119
3120   return b;
3121 }
3122
3123 static const char *const longjmp_names[] =
3124   {
3125     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3126   };
3127 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3128
3129 /* Per-objfile data private to breakpoint.c.  */
3130 struct breakpoint_objfile_data
3131 {
3132   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3133   struct bound_minimal_symbol overlay_msym {};
3134
3135   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3136   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3137
3138   /* True if we have looked for longjmp probes.  */
3139   int longjmp_searched = 0;
3140
3141   /* SystemTap probe points for longjmp (if any).  These are non-owning
3142      references.  */
3143   std::vector<probe *> longjmp_probes;
3144
3145   /* Minimal symbol for "std::terminate()" (if any).  */
3146   struct bound_minimal_symbol terminate_msym {};
3147
3148   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3149   struct bound_minimal_symbol exception_msym {};
3150
3151   /* True if we have looked for exception probes.  */
3152   int exception_searched = 0;
3153
3154   /* SystemTap probe points for unwinding (if any).  These are non-owning
3155      references.  */
3156   std::vector<probe *> exception_probes;
3157 };
3158
3159 static const struct objfile_key<breakpoint_objfile_data>
3160   breakpoint_objfile_key;
3161
3162 /* Minimal symbol not found sentinel.  */
3163 static struct minimal_symbol msym_not_found;
3164
3165 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3166
3167 static int
3168 msym_not_found_p (const struct minimal_symbol *msym)
3169 {
3170   return msym == &msym_not_found;
3171 }
3172
3173 /* Return per-objfile data needed by breakpoint.c.
3174    Allocate the data if necessary.  */
3175
3176 static struct breakpoint_objfile_data *
3177 get_breakpoint_objfile_data (struct objfile *objfile)
3178 {
3179   struct breakpoint_objfile_data *bp_objfile_data;
3180
3181   bp_objfile_data = breakpoint_objfile_key.get (objfile);
3182   if (bp_objfile_data == NULL)
3183     bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3184   return bp_objfile_data;
3185 }
3186
3187 static void
3188 create_overlay_event_breakpoint (void)
3189 {
3190   const char *const func_name = "_ovly_debug_event";
3191
3192   for (objfile *objfile : current_program_space->objfiles ())
3193     {
3194       struct breakpoint *b;
3195       struct breakpoint_objfile_data *bp_objfile_data;
3196       CORE_ADDR addr;
3197       struct explicit_location explicit_loc;
3198
3199       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3200
3201       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3202         continue;
3203
3204       if (bp_objfile_data->overlay_msym.minsym == NULL)
3205         {
3206           struct bound_minimal_symbol m;
3207
3208           m = lookup_minimal_symbol_text (func_name, objfile);
3209           if (m.minsym == NULL)
3210             {
3211               /* Avoid future lookups in this objfile.  */
3212               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3213               continue;
3214             }
3215           bp_objfile_data->overlay_msym = m;
3216         }
3217
3218       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3219       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3220                                       bp_overlay_event,
3221                                       &internal_breakpoint_ops);
3222       initialize_explicit_location (&explicit_loc);
3223       explicit_loc.function_name = ASTRDUP (func_name);
3224       b->location = new_explicit_location (&explicit_loc);
3225
3226       if (overlay_debugging == ovly_auto)
3227         {
3228           b->enable_state = bp_enabled;
3229           overlay_events_enabled = 1;
3230         }
3231       else
3232        {
3233          b->enable_state = bp_disabled;
3234          overlay_events_enabled = 0;
3235        }
3236     }
3237 }
3238
3239 static void
3240 create_longjmp_master_breakpoint (void)
3241 {
3242   struct program_space *pspace;
3243
3244   scoped_restore_current_program_space restore_pspace;
3245
3246   ALL_PSPACES (pspace)
3247   {
3248     set_current_program_space (pspace);
3249
3250     for (objfile *objfile : current_program_space->objfiles ())
3251       {
3252         int i;
3253         struct gdbarch *gdbarch;
3254         struct breakpoint_objfile_data *bp_objfile_data;
3255
3256         gdbarch = get_objfile_arch (objfile);
3257
3258         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3259
3260         if (!bp_objfile_data->longjmp_searched)
3261           {
3262             std::vector<probe *> ret
3263               = find_probes_in_objfile (objfile, "libc", "longjmp");
3264
3265             if (!ret.empty ())
3266               {
3267                 /* We are only interested in checking one element.  */
3268                 probe *p = ret[0];
3269
3270                 if (!p->can_evaluate_arguments ())
3271                   {
3272                     /* We cannot use the probe interface here, because it does
3273                        not know how to evaluate arguments.  */
3274                     ret.clear ();
3275                   }
3276               }
3277             bp_objfile_data->longjmp_probes = ret;
3278             bp_objfile_data->longjmp_searched = 1;
3279           }
3280
3281         if (!bp_objfile_data->longjmp_probes.empty ())
3282           {
3283             for (probe *p : bp_objfile_data->longjmp_probes)
3284               {
3285                 struct breakpoint *b;
3286
3287                 b = create_internal_breakpoint (gdbarch,
3288                                                 p->get_relocated_address (objfile),
3289                                                 bp_longjmp_master,
3290                                                 &internal_breakpoint_ops);
3291                 b->location = new_probe_location ("-probe-stap libc:longjmp");
3292                 b->enable_state = bp_disabled;
3293               }
3294
3295             continue;
3296           }
3297
3298         if (!gdbarch_get_longjmp_target_p (gdbarch))
3299           continue;
3300
3301         for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3302           {
3303             struct breakpoint *b;
3304             const char *func_name;
3305             CORE_ADDR addr;
3306             struct explicit_location explicit_loc;
3307
3308             if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3309               continue;
3310
3311             func_name = longjmp_names[i];
3312             if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3313               {
3314                 struct bound_minimal_symbol m;
3315
3316                 m = lookup_minimal_symbol_text (func_name, objfile);
3317                 if (m.minsym == NULL)
3318                   {
3319                     /* Prevent future lookups in this objfile.  */
3320                     bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3321                     continue;
3322                   }
3323                 bp_objfile_data->longjmp_msym[i] = m;
3324               }
3325
3326             addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3327             b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3328                                             &internal_breakpoint_ops);
3329             initialize_explicit_location (&explicit_loc);
3330             explicit_loc.function_name = ASTRDUP (func_name);
3331             b->location = new_explicit_location (&explicit_loc);
3332             b->enable_state = bp_disabled;
3333           }
3334       }
3335   }
3336 }
3337
3338 /* Create a master std::terminate breakpoint.  */
3339 static void
3340 create_std_terminate_master_breakpoint (void)
3341 {
3342   struct program_space *pspace;
3343   const char *const func_name = "std::terminate()";
3344
3345   scoped_restore_current_program_space restore_pspace;
3346
3347   ALL_PSPACES (pspace)
3348   {
3349     CORE_ADDR addr;
3350
3351     set_current_program_space (pspace);
3352
3353     for (objfile *objfile : current_program_space->objfiles ())
3354       {
3355         struct breakpoint *b;
3356         struct breakpoint_objfile_data *bp_objfile_data;
3357         struct explicit_location explicit_loc;
3358
3359         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3360
3361         if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3362           continue;
3363
3364         if (bp_objfile_data->terminate_msym.minsym == NULL)
3365           {
3366             struct bound_minimal_symbol m;
3367
3368             m = lookup_minimal_symbol (func_name, NULL, objfile);
3369             if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3370                                      && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3371               {
3372                 /* Prevent future lookups in this objfile.  */
3373                 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3374                 continue;
3375               }
3376             bp_objfile_data->terminate_msym = m;
3377           }
3378
3379         addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3380         b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3381                                         bp_std_terminate_master,
3382                                         &internal_breakpoint_ops);
3383         initialize_explicit_location (&explicit_loc);
3384         explicit_loc.function_name = ASTRDUP (func_name);
3385         b->location = new_explicit_location (&explicit_loc);
3386         b->enable_state = bp_disabled;
3387       }
3388   }
3389 }
3390
3391 /* Install a master breakpoint on the unwinder's debug hook.  */
3392
3393 static void
3394 create_exception_master_breakpoint (void)
3395 {
3396   const char *const func_name = "_Unwind_DebugHook";
3397
3398   for (objfile *objfile : current_program_space->objfiles ())
3399     {
3400       struct breakpoint *b;
3401       struct gdbarch *gdbarch;
3402       struct breakpoint_objfile_data *bp_objfile_data;
3403       CORE_ADDR addr;
3404       struct explicit_location explicit_loc;
3405
3406       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3407
3408       /* We prefer the SystemTap probe point if it exists.  */
3409       if (!bp_objfile_data->exception_searched)
3410         {
3411           std::vector<probe *> ret
3412             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3413
3414           if (!ret.empty ())
3415             {
3416               /* We are only interested in checking one element.  */
3417               probe *p = ret[0];
3418
3419               if (!p->can_evaluate_arguments ())
3420                 {
3421                   /* We cannot use the probe interface here, because it does
3422                      not know how to evaluate arguments.  */
3423                   ret.clear ();
3424                 }
3425             }
3426           bp_objfile_data->exception_probes = ret;
3427           bp_objfile_data->exception_searched = 1;
3428         }
3429
3430       if (!bp_objfile_data->exception_probes.empty ())
3431         {
3432           gdbarch = get_objfile_arch (objfile);
3433
3434           for (probe *p : bp_objfile_data->exception_probes)
3435             {
3436               b = create_internal_breakpoint (gdbarch,
3437                                               p->get_relocated_address (objfile),
3438                                               bp_exception_master,
3439                                               &internal_breakpoint_ops);
3440               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3441               b->enable_state = bp_disabled;
3442             }
3443
3444           continue;
3445         }
3446
3447       /* Otherwise, try the hook function.  */
3448
3449       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3450         continue;
3451
3452       gdbarch = get_objfile_arch (objfile);
3453
3454       if (bp_objfile_data->exception_msym.minsym == NULL)
3455         {
3456           struct bound_minimal_symbol debug_hook;
3457
3458           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3459           if (debug_hook.minsym == NULL)
3460             {
3461               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3462               continue;
3463             }
3464
3465           bp_objfile_data->exception_msym = debug_hook;
3466         }
3467
3468       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3469       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3470                                                  current_top_target ());
3471       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3472                                       &internal_breakpoint_ops);
3473       initialize_explicit_location (&explicit_loc);
3474       explicit_loc.function_name = ASTRDUP (func_name);
3475       b->location = new_explicit_location (&explicit_loc);
3476       b->enable_state = bp_disabled;
3477     }
3478 }
3479
3480 /* Does B have a location spec?  */
3481
3482 static int
3483 breakpoint_event_location_empty_p (const struct breakpoint *b)
3484 {
3485   return b->location != NULL && event_location_empty_p (b->location.get ());
3486 }
3487
3488 void
3489 update_breakpoints_after_exec (void)
3490 {
3491   struct breakpoint *b, *b_tmp;
3492   struct bp_location *bploc, **bplocp_tmp;
3493
3494   /* We're about to delete breakpoints from GDB's lists.  If the
3495      INSERTED flag is true, GDB will try to lift the breakpoints by
3496      writing the breakpoints' "shadow contents" back into memory.  The
3497      "shadow contents" are NOT valid after an exec, so GDB should not
3498      do that.  Instead, the target is responsible from marking
3499      breakpoints out as soon as it detects an exec.  We don't do that
3500      here instead, because there may be other attempts to delete
3501      breakpoints after detecting an exec and before reaching here.  */
3502   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3503     if (bploc->pspace == current_program_space)
3504       gdb_assert (!bploc->inserted);
3505
3506   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3507   {
3508     if (b->pspace != current_program_space)
3509       continue;
3510
3511     /* Solib breakpoints must be explicitly reset after an exec().  */
3512     if (b->type == bp_shlib_event)
3513       {
3514         delete_breakpoint (b);
3515         continue;
3516       }
3517
3518     /* JIT breakpoints must be explicitly reset after an exec().  */
3519     if (b->type == bp_jit_event)
3520       {
3521         delete_breakpoint (b);
3522         continue;
3523       }
3524
3525     /* Thread event breakpoints must be set anew after an exec(),
3526        as must overlay event and longjmp master breakpoints.  */
3527     if (b->type == bp_thread_event || b->type == bp_overlay_event
3528         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3529         || b->type == bp_exception_master)
3530       {
3531         delete_breakpoint (b);
3532         continue;
3533       }
3534
3535     /* Step-resume breakpoints are meaningless after an exec().  */
3536     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3537       {
3538         delete_breakpoint (b);
3539         continue;
3540       }
3541
3542     /* Just like single-step breakpoints.  */
3543     if (b->type == bp_single_step)
3544       {
3545         delete_breakpoint (b);
3546         continue;
3547       }
3548
3549     /* Longjmp and longjmp-resume breakpoints are also meaningless
3550        after an exec.  */
3551     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3552         || b->type == bp_longjmp_call_dummy
3553         || b->type == bp_exception || b->type == bp_exception_resume)
3554       {
3555         delete_breakpoint (b);
3556         continue;
3557       }
3558
3559     if (b->type == bp_catchpoint)
3560       {
3561         /* For now, none of the bp_catchpoint breakpoints need to
3562            do anything at this point.  In the future, if some of
3563            the catchpoints need to something, we will need to add
3564            a new method, and call this method from here.  */
3565         continue;
3566       }
3567
3568     /* bp_finish is a special case.  The only way we ought to be able
3569        to see one of these when an exec() has happened, is if the user
3570        caught a vfork, and then said "finish".  Ordinarily a finish just
3571        carries them to the call-site of the current callee, by setting
3572        a temporary bp there and resuming.  But in this case, the finish
3573        will carry them entirely through the vfork & exec.
3574
3575        We don't want to allow a bp_finish to remain inserted now.  But
3576        we can't safely delete it, 'cause finish_command has a handle to
3577        the bp on a bpstat, and will later want to delete it.  There's a
3578        chance (and I've seen it happen) that if we delete the bp_finish
3579        here, that its storage will get reused by the time finish_command
3580        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3581        We really must allow finish_command to delete a bp_finish.
3582
3583        In the absence of a general solution for the "how do we know
3584        it's safe to delete something others may have handles to?"
3585        problem, what we'll do here is just uninsert the bp_finish, and
3586        let finish_command delete it.
3587
3588        (We know the bp_finish is "doomed" in the sense that it's
3589        momentary, and will be deleted as soon as finish_command sees
3590        the inferior stopped.  So it doesn't matter that the bp's
3591        address is probably bogus in the new a.out, unlike e.g., the
3592        solib breakpoints.)  */
3593
3594     if (b->type == bp_finish)
3595       {
3596         continue;
3597       }
3598
3599     /* Without a symbolic address, we have little hope of the
3600        pre-exec() address meaning the same thing in the post-exec()
3601        a.out.  */
3602     if (breakpoint_event_location_empty_p (b))
3603       {
3604         delete_breakpoint (b);
3605         continue;
3606       }
3607   }
3608 }
3609
3610 int
3611 detach_breakpoints (ptid_t ptid)
3612 {
3613   struct bp_location *bl, **blp_tmp;
3614   int val = 0;
3615   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3616   struct inferior *inf = current_inferior ();
3617
3618   if (ptid.pid () == inferior_ptid.pid ())
3619     error (_("Cannot detach breakpoints of inferior_ptid"));
3620
3621   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3622   inferior_ptid = ptid;
3623   ALL_BP_LOCATIONS (bl, blp_tmp)
3624   {
3625     if (bl->pspace != inf->pspace)
3626       continue;
3627
3628     /* This function must physically remove breakpoints locations
3629        from the specified ptid, without modifying the breakpoint
3630        package's state.  Locations of type bp_loc_other are only
3631        maintained at GDB side.  So, there is no need to remove
3632        these bp_loc_other locations.  Moreover, removing these
3633        would modify the breakpoint package's state.  */
3634     if (bl->loc_type == bp_loc_other)
3635       continue;
3636
3637     if (bl->inserted)
3638       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3639   }
3640
3641   return val;
3642 }
3643
3644 /* Remove the breakpoint location BL from the current address space.
3645    Note that this is used to detach breakpoints from a child fork.
3646    When we get here, the child isn't in the inferior list, and neither
3647    do we have objects to represent its address space --- we should
3648    *not* look at bl->pspace->aspace here.  */
3649
3650 static int
3651 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3652 {
3653   int val;
3654
3655   /* BL is never in moribund_locations by our callers.  */
3656   gdb_assert (bl->owner != NULL);
3657
3658   /* The type of none suggests that owner is actually deleted.
3659      This should not ever happen.  */
3660   gdb_assert (bl->owner->type != bp_none);
3661
3662   if (bl->loc_type == bp_loc_software_breakpoint
3663       || bl->loc_type == bp_loc_hardware_breakpoint)
3664     {
3665       /* "Normal" instruction breakpoint: either the standard
3666          trap-instruction bp (bp_breakpoint), or a
3667          bp_hardware_breakpoint.  */
3668
3669       /* First check to see if we have to handle an overlay.  */
3670       if (overlay_debugging == ovly_off
3671           || bl->section == NULL
3672           || !(section_is_overlay (bl->section)))
3673         {
3674           /* No overlay handling: just remove the breakpoint.  */
3675
3676           /* If we're trying to uninsert a memory breakpoint that we
3677              know is set in a dynamic object that is marked
3678              shlib_disabled, then either the dynamic object was
3679              removed with "remove-symbol-file" or with
3680              "nosharedlibrary".  In the former case, we don't know
3681              whether another dynamic object might have loaded over the
3682              breakpoint's address -- the user might well let us know
3683              about it next with add-symbol-file (the whole point of
3684              add-symbol-file is letting the user manually maintain a
3685              list of dynamically loaded objects).  If we have the
3686              breakpoint's shadow memory, that is, this is a software
3687              breakpoint managed by GDB, check whether the breakpoint
3688              is still inserted in memory, to avoid overwriting wrong
3689              code with stale saved shadow contents.  Note that HW
3690              breakpoints don't have shadow memory, as they're
3691              implemented using a mechanism that is not dependent on
3692              being able to modify the target's memory, and as such
3693              they should always be removed.  */
3694           if (bl->shlib_disabled
3695               && bl->target_info.shadow_len != 0
3696               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3697             val = 0;
3698           else
3699             val = bl->owner->ops->remove_location (bl, reason);
3700         }
3701       else
3702         {
3703           /* This breakpoint is in an overlay section.
3704              Did we set a breakpoint at the LMA?  */
3705           if (!overlay_events_enabled)
3706               {
3707                 /* Yes -- overlay event support is not active, so we
3708                    should have set a breakpoint at the LMA.  Remove it.  
3709                 */
3710                 /* Ignore any failures: if the LMA is in ROM, we will
3711                    have already warned when we failed to insert it.  */
3712                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3713                   target_remove_hw_breakpoint (bl->gdbarch,
3714                                                &bl->overlay_target_info);
3715                 else
3716                   target_remove_breakpoint (bl->gdbarch,
3717                                             &bl->overlay_target_info,
3718                                             reason);
3719               }
3720           /* Did we set a breakpoint at the VMA? 
3721              If so, we will have marked the breakpoint 'inserted'.  */
3722           if (bl->inserted)
3723             {
3724               /* Yes -- remove it.  Previously we did not bother to
3725                  remove the breakpoint if the section had been
3726                  unmapped, but let's not rely on that being safe.  We
3727                  don't know what the overlay manager might do.  */
3728
3729               /* However, we should remove *software* breakpoints only
3730                  if the section is still mapped, or else we overwrite
3731                  wrong code with the saved shadow contents.  */
3732               if (bl->loc_type == bp_loc_hardware_breakpoint
3733                   || section_is_mapped (bl->section))
3734                 val = bl->owner->ops->remove_location (bl, reason);
3735               else
3736                 val = 0;
3737             }
3738           else
3739             {
3740               /* No -- not inserted, so no need to remove.  No error.  */
3741               val = 0;
3742             }
3743         }
3744
3745       /* In some cases, we might not be able to remove a breakpoint in
3746          a shared library that has already been removed, but we have
3747          not yet processed the shlib unload event.  Similarly for an
3748          unloaded add-symbol-file object - the user might not yet have
3749          had the chance to remove-symbol-file it.  shlib_disabled will
3750          be set if the library/object has already been removed, but
3751          the breakpoint hasn't been uninserted yet, e.g., after
3752          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3753          always-inserted mode.  */
3754       if (val
3755           && (bl->loc_type == bp_loc_software_breakpoint
3756               && (bl->shlib_disabled
3757                   || solib_name_from_address (bl->pspace, bl->address)
3758                   || shared_objfile_contains_address_p (bl->pspace,
3759                                                         bl->address))))
3760         val = 0;
3761
3762       if (val)
3763         return val;
3764       bl->inserted = (reason == DETACH_BREAKPOINT);
3765     }
3766   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3767     {
3768       gdb_assert (bl->owner->ops != NULL
3769                   && bl->owner->ops->remove_location != NULL);
3770
3771       bl->inserted = (reason == DETACH_BREAKPOINT);
3772       bl->owner->ops->remove_location (bl, reason);
3773
3774       /* Failure to remove any of the hardware watchpoints comes here.  */
3775       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3776         warning (_("Could not remove hardware watchpoint %d."),
3777                  bl->owner->number);
3778     }
3779   else if (bl->owner->type == bp_catchpoint
3780            && breakpoint_enabled (bl->owner)
3781            && !bl->duplicate)
3782     {
3783       gdb_assert (bl->owner->ops != NULL
3784                   && bl->owner->ops->remove_location != NULL);
3785
3786       val = bl->owner->ops->remove_location (bl, reason);
3787       if (val)
3788         return val;
3789
3790       bl->inserted = (reason == DETACH_BREAKPOINT);
3791     }
3792
3793   return 0;
3794 }
3795
3796 static int
3797 remove_breakpoint (struct bp_location *bl)
3798 {
3799   /* BL is never in moribund_locations by our callers.  */
3800   gdb_assert (bl->owner != NULL);
3801
3802   /* The type of none suggests that owner is actually deleted.
3803      This should not ever happen.  */
3804   gdb_assert (bl->owner->type != bp_none);
3805
3806   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3807
3808   switch_to_program_space_and_thread (bl->pspace);
3809
3810   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3811 }
3812
3813 /* Clear the "inserted" flag in all breakpoints.  */
3814
3815 void
3816 mark_breakpoints_out (void)
3817 {
3818   struct bp_location *bl, **blp_tmp;
3819
3820   ALL_BP_LOCATIONS (bl, blp_tmp)
3821     if (bl->pspace == current_program_space)
3822       bl->inserted = 0;
3823 }
3824
3825 /* Clear the "inserted" flag in all breakpoints and delete any
3826    breakpoints which should go away between runs of the program.
3827
3828    Plus other such housekeeping that has to be done for breakpoints
3829    between runs.
3830
3831    Note: this function gets called at the end of a run (by
3832    generic_mourn_inferior) and when a run begins (by
3833    init_wait_for_inferior).  */
3834
3835
3836
3837 void
3838 breakpoint_init_inferior (enum inf_context context)
3839 {
3840   struct breakpoint *b, *b_tmp;
3841   struct program_space *pspace = current_program_space;
3842
3843   /* If breakpoint locations are shared across processes, then there's
3844      nothing to do.  */
3845   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3846     return;
3847
3848   mark_breakpoints_out ();
3849
3850   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3851   {
3852     if (b->loc && b->loc->pspace != pspace)
3853       continue;
3854
3855     switch (b->type)
3856       {
3857       case bp_call_dummy:
3858       case bp_longjmp_call_dummy:
3859
3860         /* If the call dummy breakpoint is at the entry point it will
3861            cause problems when the inferior is rerun, so we better get
3862            rid of it.  */
3863
3864       case bp_watchpoint_scope:
3865
3866         /* Also get rid of scope breakpoints.  */
3867
3868       case bp_shlib_event:
3869
3870         /* Also remove solib event breakpoints.  Their addresses may
3871            have changed since the last time we ran the program.
3872            Actually we may now be debugging against different target;
3873            and so the solib backend that installed this breakpoint may
3874            not be used in by the target.  E.g.,
3875
3876            (gdb) file prog-linux
3877            (gdb) run               # native linux target
3878            ...
3879            (gdb) kill
3880            (gdb) file prog-win.exe
3881            (gdb) tar rem :9999     # remote Windows gdbserver.
3882         */
3883
3884       case bp_step_resume:
3885
3886         /* Also remove step-resume breakpoints.  */
3887
3888       case bp_single_step:
3889
3890         /* Also remove single-step breakpoints.  */
3891
3892         delete_breakpoint (b);
3893         break;
3894
3895       case bp_watchpoint:
3896       case bp_hardware_watchpoint:
3897       case bp_read_watchpoint:
3898       case bp_access_watchpoint:
3899         {
3900           struct watchpoint *w = (struct watchpoint *) b;
3901
3902           /* Likewise for watchpoints on local expressions.  */
3903           if (w->exp_valid_block != NULL)
3904             delete_breakpoint (b);
3905           else
3906             {
3907               /* Get rid of existing locations, which are no longer
3908                  valid.  New ones will be created in
3909                  update_watchpoint, when the inferior is restarted.
3910                  The next update_global_location_list call will
3911                  garbage collect them.  */
3912               b->loc = NULL;
3913
3914               if (context == inf_starting)
3915                 {
3916                   /* Reset val field to force reread of starting value in
3917                      insert_breakpoints.  */
3918                   w->val.reset (nullptr);
3919                   w->val_valid = 0;
3920                 }
3921             }
3922         }
3923         break;
3924       default:
3925         break;
3926       }
3927   }
3928
3929   /* Get rid of the moribund locations.  */
3930   for (bp_location *bl : moribund_locations)
3931     decref_bp_location (&bl);
3932   moribund_locations.clear ();
3933 }
3934
3935 /* These functions concern about actual breakpoints inserted in the
3936    target --- to e.g. check if we need to do decr_pc adjustment or if
3937    we need to hop over the bkpt --- so we check for address space
3938    match, not program space.  */
3939
3940 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3941    exists at PC.  It returns ordinary_breakpoint_here if it's an
3942    ordinary breakpoint, or permanent_breakpoint_here if it's a
3943    permanent breakpoint.
3944    - When continuing from a location with an ordinary breakpoint, we
3945      actually single step once before calling insert_breakpoints.
3946    - When continuing from a location with a permanent breakpoint, we
3947      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3948      the target, to advance the PC past the breakpoint.  */
3949
3950 enum breakpoint_here
3951 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3952 {
3953   struct bp_location *bl, **blp_tmp;
3954   int any_breakpoint_here = 0;
3955
3956   ALL_BP_LOCATIONS (bl, blp_tmp)
3957     {
3958       if (bl->loc_type != bp_loc_software_breakpoint
3959           && bl->loc_type != bp_loc_hardware_breakpoint)
3960         continue;
3961
3962       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3963       if ((breakpoint_enabled (bl->owner)
3964            || bl->permanent)
3965           && breakpoint_location_address_match (bl, aspace, pc))
3966         {
3967           if (overlay_debugging 
3968               && section_is_overlay (bl->section)
3969               && !section_is_mapped (bl->section))
3970             continue;           /* unmapped overlay -- can't be a match */
3971           else if (bl->permanent)
3972             return permanent_breakpoint_here;
3973           else
3974             any_breakpoint_here = 1;
3975         }
3976     }
3977
3978   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3979 }
3980
3981 /* See breakpoint.h.  */
3982
3983 int
3984 breakpoint_in_range_p (const address_space *aspace,
3985                        CORE_ADDR addr, ULONGEST len)
3986 {
3987   struct bp_location *bl, **blp_tmp;
3988
3989   ALL_BP_LOCATIONS (bl, blp_tmp)
3990     {
3991       if (bl->loc_type != bp_loc_software_breakpoint
3992           && bl->loc_type != bp_loc_hardware_breakpoint)
3993         continue;
3994
3995       if ((breakpoint_enabled (bl->owner)
3996            || bl->permanent)
3997           && breakpoint_location_address_range_overlap (bl, aspace,
3998                                                         addr, len))
3999         {
4000           if (overlay_debugging
4001               && section_is_overlay (bl->section)
4002               && !section_is_mapped (bl->section))
4003             {
4004               /* Unmapped overlay -- can't be a match.  */
4005               continue;
4006             }
4007
4008           return 1;
4009         }
4010     }
4011
4012   return 0;
4013 }
4014
4015 /* Return true if there's a moribund breakpoint at PC.  */
4016
4017 int
4018 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4019 {
4020   for (bp_location *loc : moribund_locations)
4021     if (breakpoint_location_address_match (loc, aspace, pc))
4022       return 1;
4023
4024   return 0;
4025 }
4026
4027 /* Returns non-zero iff BL is inserted at PC, in address space
4028    ASPACE.  */
4029
4030 static int
4031 bp_location_inserted_here_p (struct bp_location *bl,
4032                              const address_space *aspace, CORE_ADDR pc)
4033 {
4034   if (bl->inserted
4035       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4036                                    aspace, pc))
4037     {
4038       if (overlay_debugging
4039           && section_is_overlay (bl->section)
4040           && !section_is_mapped (bl->section))
4041         return 0;               /* unmapped overlay -- can't be a match */
4042       else
4043         return 1;
4044     }
4045   return 0;
4046 }
4047
4048 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4049
4050 int
4051 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4052 {
4053   struct bp_location **blp, **blp_tmp = NULL;
4054
4055   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4056     {
4057       struct bp_location *bl = *blp;
4058
4059       if (bl->loc_type != bp_loc_software_breakpoint
4060           && bl->loc_type != bp_loc_hardware_breakpoint)
4061         continue;
4062
4063       if (bp_location_inserted_here_p (bl, aspace, pc))
4064         return 1;
4065     }
4066   return 0;
4067 }
4068
4069 /* This function returns non-zero iff there is a software breakpoint
4070    inserted at PC.  */
4071
4072 int
4073 software_breakpoint_inserted_here_p (const address_space *aspace,
4074                                      CORE_ADDR pc)
4075 {
4076   struct bp_location **blp, **blp_tmp = NULL;
4077
4078   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4079     {
4080       struct bp_location *bl = *blp;
4081
4082       if (bl->loc_type != bp_loc_software_breakpoint)
4083         continue;
4084
4085       if (bp_location_inserted_here_p (bl, aspace, pc))
4086         return 1;
4087     }
4088
4089   return 0;
4090 }
4091
4092 /* See breakpoint.h.  */
4093
4094 int
4095 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4096                                      CORE_ADDR pc)
4097 {
4098   struct bp_location **blp, **blp_tmp = NULL;
4099
4100   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4101     {
4102       struct bp_location *bl = *blp;
4103
4104       if (bl->loc_type != bp_loc_hardware_breakpoint)
4105         continue;
4106
4107       if (bp_location_inserted_here_p (bl, aspace, pc))
4108         return 1;
4109     }
4110
4111   return 0;
4112 }
4113
4114 int
4115 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4116                                        CORE_ADDR addr, ULONGEST len)
4117 {
4118   struct breakpoint *bpt;
4119
4120   ALL_BREAKPOINTS (bpt)
4121     {
4122       struct bp_location *loc;
4123
4124       if (bpt->type != bp_hardware_watchpoint
4125           && bpt->type != bp_access_watchpoint)
4126         continue;
4127
4128       if (!breakpoint_enabled (bpt))
4129         continue;
4130
4131       for (loc = bpt->loc; loc; loc = loc->next)
4132         if (loc->pspace->aspace == aspace && loc->inserted)
4133           {
4134             CORE_ADDR l, h;
4135
4136             /* Check for intersection.  */
4137             l = std::max<CORE_ADDR> (loc->address, addr);
4138             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4139             if (l < h)
4140               return 1;
4141           }
4142     }
4143   return 0;
4144 }
4145 \f
4146
4147 /* bpstat stuff.  External routines' interfaces are documented
4148    in breakpoint.h.  */
4149
4150 int
4151 is_catchpoint (struct breakpoint *ep)
4152 {
4153   return (ep->type == bp_catchpoint);
4154 }
4155
4156 /* Frees any storage that is part of a bpstat.  Does not walk the
4157    'next' chain.  */
4158
4159 bpstats::~bpstats ()
4160 {
4161   if (bp_location_at != NULL)
4162     decref_bp_location (&bp_location_at);
4163 }
4164
4165 /* Clear a bpstat so that it says we are not at any breakpoint.
4166    Also free any storage that is part of a bpstat.  */
4167
4168 void
4169 bpstat_clear (bpstat *bsp)
4170 {
4171   bpstat p;
4172   bpstat q;
4173
4174   if (bsp == 0)
4175     return;
4176   p = *bsp;
4177   while (p != NULL)
4178     {
4179       q = p->next;
4180       delete p;
4181       p = q;
4182     }
4183   *bsp = NULL;
4184 }
4185
4186 bpstats::bpstats (const bpstats &other)
4187   : next (NULL),
4188     bp_location_at (other.bp_location_at),
4189     breakpoint_at (other.breakpoint_at),
4190     commands (other.commands),
4191     print (other.print),
4192     stop (other.stop),
4193     print_it (other.print_it)
4194 {
4195   if (other.old_val != NULL)
4196     old_val = release_value (value_copy (other.old_val.get ()));
4197   incref_bp_location (bp_location_at);
4198 }
4199
4200 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4201    is part of the bpstat is copied as well.  */
4202
4203 bpstat
4204 bpstat_copy (bpstat bs)
4205 {
4206   bpstat p = NULL;
4207   bpstat tmp;
4208   bpstat retval = NULL;
4209
4210   if (bs == NULL)
4211     return bs;
4212
4213   for (; bs != NULL; bs = bs->next)
4214     {
4215       tmp = new bpstats (*bs);
4216
4217       if (p == NULL)
4218         /* This is the first thing in the chain.  */
4219         retval = tmp;
4220       else
4221         p->next = tmp;
4222       p = tmp;
4223     }
4224   p->next = NULL;
4225   return retval;
4226 }
4227
4228 /* Find the bpstat associated with this breakpoint.  */
4229
4230 bpstat
4231 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4232 {
4233   if (bsp == NULL)
4234     return NULL;
4235
4236   for (; bsp != NULL; bsp = bsp->next)
4237     {
4238       if (bsp->breakpoint_at == breakpoint)
4239         return bsp;
4240     }
4241   return NULL;
4242 }
4243
4244 /* See breakpoint.h.  */
4245
4246 int
4247 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4248 {
4249   for (; bsp != NULL; bsp = bsp->next)
4250     {
4251       if (bsp->breakpoint_at == NULL)
4252         {
4253           /* A moribund location can never explain a signal other than
4254              GDB_SIGNAL_TRAP.  */
4255           if (sig == GDB_SIGNAL_TRAP)
4256             return 1;
4257         }
4258       else
4259         {
4260           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4261                                                         sig))
4262             return 1;
4263         }
4264     }
4265
4266   return 0;
4267 }
4268
4269 /* Put in *NUM the breakpoint number of the first breakpoint we are
4270    stopped at.  *BSP upon return is a bpstat which points to the
4271    remaining breakpoints stopped at (but which is not guaranteed to be
4272    good for anything but further calls to bpstat_num).
4273
4274    Return 0 if passed a bpstat which does not indicate any breakpoints.
4275    Return -1 if stopped at a breakpoint that has been deleted since
4276    we set it.
4277    Return 1 otherwise.  */
4278
4279 int
4280 bpstat_num (bpstat *bsp, int *num)
4281 {
4282   struct breakpoint *b;
4283
4284   if ((*bsp) == NULL)
4285     return 0;                   /* No more breakpoint values */
4286
4287   /* We assume we'll never have several bpstats that correspond to a
4288      single breakpoint -- otherwise, this function might return the
4289      same number more than once and this will look ugly.  */
4290   b = (*bsp)->breakpoint_at;
4291   *bsp = (*bsp)->next;
4292   if (b == NULL)
4293     return -1;                  /* breakpoint that's been deleted since */
4294
4295   *num = b->number;             /* We have its number */
4296   return 1;
4297 }
4298
4299 /* See breakpoint.h.  */
4300
4301 void
4302 bpstat_clear_actions (void)
4303 {
4304   bpstat bs;
4305
4306   if (inferior_ptid == null_ptid)
4307     return;
4308
4309   thread_info *tp = inferior_thread ();
4310   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4311     {
4312       bs->commands = NULL;
4313       bs->old_val.reset (nullptr);
4314     }
4315 }
4316
4317 /* Called when a command is about to proceed the inferior.  */
4318
4319 static void
4320 breakpoint_about_to_proceed (void)
4321 {
4322   if (inferior_ptid != null_ptid)
4323     {
4324       struct thread_info *tp = inferior_thread ();
4325
4326       /* Allow inferior function calls in breakpoint commands to not
4327          interrupt the command list.  When the call finishes
4328          successfully, the inferior will be standing at the same
4329          breakpoint as if nothing happened.  */
4330       if (tp->control.in_infcall)
4331         return;
4332     }
4333
4334   breakpoint_proceeded = 1;
4335 }
4336
4337 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4338    or its equivalent.  */
4339
4340 static int
4341 command_line_is_silent (struct command_line *cmd)
4342 {
4343   return cmd && (strcmp ("silent", cmd->line) == 0);
4344 }
4345
4346 /* Execute all the commands associated with all the breakpoints at
4347    this location.  Any of these commands could cause the process to
4348    proceed beyond this point, etc.  We look out for such changes by
4349    checking the global "breakpoint_proceeded" after each command.
4350
4351    Returns true if a breakpoint command resumed the inferior.  In that
4352    case, it is the caller's responsibility to recall it again with the
4353    bpstat of the current thread.  */
4354
4355 static int
4356 bpstat_do_actions_1 (bpstat *bsp)
4357 {
4358   bpstat bs;
4359   int again = 0;
4360
4361   /* Avoid endless recursion if a `source' command is contained
4362      in bs->commands.  */
4363   if (executing_breakpoint_commands)
4364     return 0;
4365
4366   scoped_restore save_executing
4367     = make_scoped_restore (&executing_breakpoint_commands, 1);
4368
4369   scoped_restore preventer = prevent_dont_repeat ();
4370
4371   /* This pointer will iterate over the list of bpstat's.  */
4372   bs = *bsp;
4373
4374   breakpoint_proceeded = 0;
4375   for (; bs != NULL; bs = bs->next)
4376     {
4377       struct command_line *cmd = NULL;
4378
4379       /* Take ownership of the BSP's command tree, if it has one.
4380
4381          The command tree could legitimately contain commands like
4382          'step' and 'next', which call clear_proceed_status, which
4383          frees stop_bpstat's command tree.  To make sure this doesn't
4384          free the tree we're executing out from under us, we need to
4385          take ownership of the tree ourselves.  Since a given bpstat's
4386          commands are only executed once, we don't need to copy it; we
4387          can clear the pointer in the bpstat, and make sure we free
4388          the tree when we're done.  */
4389       counted_command_line ccmd = bs->commands;
4390       bs->commands = NULL;
4391       if (ccmd != NULL)
4392         cmd = ccmd.get ();
4393       if (command_line_is_silent (cmd))
4394         {
4395           /* The action has been already done by bpstat_stop_status.  */
4396           cmd = cmd->next;
4397         }
4398
4399       while (cmd != NULL)
4400         {
4401           execute_control_command (cmd);
4402
4403           if (breakpoint_proceeded)
4404             break;
4405           else
4406             cmd = cmd->next;
4407         }
4408
4409       if (breakpoint_proceeded)
4410         {
4411           if (current_ui->async)
4412             /* If we are in async mode, then the target might be still
4413                running, not stopped at any breakpoint, so nothing for
4414                us to do here -- just return to the event loop.  */
4415             ;
4416           else
4417             /* In sync mode, when execute_control_command returns
4418                we're already standing on the next breakpoint.
4419                Breakpoint commands for that stop were not run, since
4420                execute_command does not run breakpoint commands --
4421                only command_line_handler does, but that one is not
4422                involved in execution of breakpoint commands.  So, we
4423                can now execute breakpoint commands.  It should be
4424                noted that making execute_command do bpstat actions is
4425                not an option -- in this case we'll have recursive
4426                invocation of bpstat for each breakpoint with a
4427                command, and can easily blow up GDB stack.  Instead, we
4428                return true, which will trigger the caller to recall us
4429                with the new stop_bpstat.  */
4430             again = 1;
4431           break;
4432         }
4433     }
4434   return again;
4435 }
4436
4437 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4438    one, is alive and has execution.  Return NULL otherwise.  */
4439
4440 static thread_info *
4441 get_bpstat_thread ()
4442 {
4443   if (inferior_ptid == null_ptid || !target_has_execution)
4444     return NULL;
4445
4446   thread_info *tp = inferior_thread ();
4447   if (tp->state == THREAD_EXITED || tp->executing)
4448     return NULL;
4449   return tp;
4450 }
4451
4452 void
4453 bpstat_do_actions (void)
4454 {
4455   auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4456   thread_info *tp;
4457
4458   /* Do any commands attached to breakpoint we are stopped at.  */
4459   while ((tp = get_bpstat_thread ()) != NULL)
4460     {
4461       /* Since in sync mode, bpstat_do_actions may resume the
4462          inferior, and only return when it is stopped at the next
4463          breakpoint, we keep doing breakpoint actions until it returns
4464          false to indicate the inferior was not resumed.  */
4465       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4466         break;
4467     }
4468
4469   cleanup_if_error.release ();
4470 }
4471
4472 /* Print out the (old or new) value associated with a watchpoint.  */
4473
4474 static void
4475 watchpoint_value_print (struct value *val, struct ui_file *stream)
4476 {
4477   if (val == NULL)
4478     fprintf_unfiltered (stream, _("<unreadable>"));
4479   else
4480     {
4481       struct value_print_options opts;
4482       get_user_print_options (&opts);
4483       value_print (val, stream, &opts);
4484     }
4485 }
4486
4487 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4488    debugging multiple threads.  */
4489
4490 void
4491 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4492 {
4493   if (uiout->is_mi_like_p ())
4494     return;
4495
4496   uiout->text ("\n");
4497
4498   if (show_thread_that_caused_stop ())
4499     {
4500       const char *name;
4501       struct thread_info *thr = inferior_thread ();
4502
4503       uiout->text ("Thread ");
4504       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4505
4506       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4507       if (name != NULL)
4508         {
4509           uiout->text (" \"");
4510           uiout->field_fmt ("name", "%s", name);
4511           uiout->text ("\"");
4512         }
4513
4514       uiout->text (" hit ");
4515     }
4516 }
4517
4518 /* Generic routine for printing messages indicating why we
4519    stopped.  The behavior of this function depends on the value
4520    'print_it' in the bpstat structure.  Under some circumstances we
4521    may decide not to print anything here and delegate the task to
4522    normal_stop().  */
4523
4524 static enum print_stop_action
4525 print_bp_stop_message (bpstat bs)
4526 {
4527   switch (bs->print_it)
4528     {
4529     case print_it_noop:
4530       /* Nothing should be printed for this bpstat entry.  */
4531       return PRINT_UNKNOWN;
4532       break;
4533
4534     case print_it_done:
4535       /* We still want to print the frame, but we already printed the
4536          relevant messages.  */
4537       return PRINT_SRC_AND_LOC;
4538       break;
4539
4540     case print_it_normal:
4541       {
4542         struct breakpoint *b = bs->breakpoint_at;
4543
4544         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4545            which has since been deleted.  */
4546         if (b == NULL)
4547           return PRINT_UNKNOWN;
4548
4549         /* Normal case.  Call the breakpoint's print_it method.  */
4550         return b->ops->print_it (bs);
4551       }
4552       break;
4553
4554     default:
4555       internal_error (__FILE__, __LINE__,
4556                       _("print_bp_stop_message: unrecognized enum value"));
4557       break;
4558     }
4559 }
4560
4561 /* A helper function that prints a shared library stopped event.  */
4562
4563 static void
4564 print_solib_event (int is_catchpoint)
4565 {
4566   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4567   bool any_added = !current_program_space->added_solibs.empty ();
4568
4569   if (!is_catchpoint)
4570     {
4571       if (any_added || any_deleted)
4572         current_uiout->text (_("Stopped due to shared library event:\n"));
4573       else
4574         current_uiout->text (_("Stopped due to shared library event (no "
4575                                "libraries added or removed)\n"));
4576     }
4577
4578   if (current_uiout->is_mi_like_p ())
4579     current_uiout->field_string ("reason",
4580                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4581
4582   if (any_deleted)
4583     {
4584       current_uiout->text (_("  Inferior unloaded "));
4585       ui_out_emit_list list_emitter (current_uiout, "removed");
4586       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4587         {
4588           const std::string &name = current_program_space->deleted_solibs[ix];
4589
4590           if (ix > 0)
4591             current_uiout->text ("    ");
4592           current_uiout->field_string ("library", name);
4593           current_uiout->text ("\n");
4594         }
4595     }
4596
4597   if (any_added)
4598     {
4599       current_uiout->text (_("  Inferior loaded "));
4600       ui_out_emit_list list_emitter (current_uiout, "added");
4601       bool first = true;
4602       for (so_list *iter : current_program_space->added_solibs)
4603         {
4604           if (!first)
4605             current_uiout->text ("    ");
4606           first = false;
4607           current_uiout->field_string ("library", iter->so_name);
4608           current_uiout->text ("\n");
4609         }
4610     }
4611 }
4612
4613 /* Print a message indicating what happened.  This is called from
4614    normal_stop().  The input to this routine is the head of the bpstat
4615    list - a list of the eventpoints that caused this stop.  KIND is
4616    the target_waitkind for the stopping event.  This
4617    routine calls the generic print routine for printing a message
4618    about reasons for stopping.  This will print (for example) the
4619    "Breakpoint n," part of the output.  The return value of this
4620    routine is one of:
4621
4622    PRINT_UNKNOWN: Means we printed nothing.
4623    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4624    code to print the location.  An example is 
4625    "Breakpoint 1, " which should be followed by
4626    the location.
4627    PRINT_SRC_ONLY: Means we printed something, but there is no need
4628    to also print the location part of the message.
4629    An example is the catch/throw messages, which
4630    don't require a location appended to the end.
4631    PRINT_NOTHING: We have done some printing and we don't need any 
4632    further info to be printed.  */
4633
4634 enum print_stop_action
4635 bpstat_print (bpstat bs, int kind)
4636 {
4637   enum print_stop_action val;
4638
4639   /* Maybe another breakpoint in the chain caused us to stop.
4640      (Currently all watchpoints go on the bpstat whether hit or not.
4641      That probably could (should) be changed, provided care is taken
4642      with respect to bpstat_explains_signal).  */
4643   for (; bs; bs = bs->next)
4644     {
4645       val = print_bp_stop_message (bs);
4646       if (val == PRINT_SRC_ONLY 
4647           || val == PRINT_SRC_AND_LOC 
4648           || val == PRINT_NOTHING)
4649         return val;
4650     }
4651
4652   /* If we had hit a shared library event breakpoint,
4653      print_bp_stop_message would print out this message.  If we hit an
4654      OS-level shared library event, do the same thing.  */
4655   if (kind == TARGET_WAITKIND_LOADED)
4656     {
4657       print_solib_event (0);
4658       return PRINT_NOTHING;
4659     }
4660
4661   /* We reached the end of the chain, or we got a null BS to start
4662      with and nothing was printed.  */
4663   return PRINT_UNKNOWN;
4664 }
4665
4666 /* Evaluate the boolean expression EXP and return the result.  */
4667
4668 static bool
4669 breakpoint_cond_eval (expression *exp)
4670 {
4671   struct value *mark = value_mark ();
4672   bool res = value_true (evaluate_expression (exp));
4673
4674   value_free_to_mark (mark);
4675   return res;
4676 }
4677
4678 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4679
4680 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4681   : next (NULL),
4682     bp_location_at (bl),
4683     breakpoint_at (bl->owner),
4684     commands (NULL),
4685     print (0),
4686     stop (0),
4687     print_it (print_it_normal)
4688 {
4689   incref_bp_location (bl);
4690   **bs_link_pointer = this;
4691   *bs_link_pointer = &next;
4692 }
4693
4694 bpstats::bpstats ()
4695   : next (NULL),
4696     bp_location_at (NULL),
4697     breakpoint_at (NULL),
4698     commands (NULL),
4699     print (0),
4700     stop (0),
4701     print_it (print_it_normal)
4702 {
4703 }
4704 \f
4705 /* The target has stopped with waitstatus WS.  Check if any hardware
4706    watchpoints have triggered, according to the target.  */
4707
4708 int
4709 watchpoints_triggered (struct target_waitstatus *ws)
4710 {
4711   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4712   CORE_ADDR addr;
4713   struct breakpoint *b;
4714
4715   if (!stopped_by_watchpoint)
4716     {
4717       /* We were not stopped by a watchpoint.  Mark all watchpoints
4718          as not triggered.  */
4719       ALL_BREAKPOINTS (b)
4720         if (is_hardware_watchpoint (b))
4721           {
4722             struct watchpoint *w = (struct watchpoint *) b;
4723
4724             w->watchpoint_triggered = watch_triggered_no;
4725           }
4726
4727       return 0;
4728     }
4729
4730   if (!target_stopped_data_address (current_top_target (), &addr))
4731     {
4732       /* We were stopped by a watchpoint, but we don't know where.
4733          Mark all watchpoints as unknown.  */
4734       ALL_BREAKPOINTS (b)
4735         if (is_hardware_watchpoint (b))
4736           {
4737             struct watchpoint *w = (struct watchpoint *) b;
4738
4739             w->watchpoint_triggered = watch_triggered_unknown;
4740           }
4741
4742       return 1;
4743     }
4744
4745   /* The target could report the data address.  Mark watchpoints
4746      affected by this data address as triggered, and all others as not
4747      triggered.  */
4748
4749   ALL_BREAKPOINTS (b)
4750     if (is_hardware_watchpoint (b))
4751       {
4752         struct watchpoint *w = (struct watchpoint *) b;
4753         struct bp_location *loc;
4754
4755         w->watchpoint_triggered = watch_triggered_no;
4756         for (loc = b->loc; loc; loc = loc->next)
4757           {
4758             if (is_masked_watchpoint (b))
4759               {
4760                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4761                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4762
4763                 if (newaddr == start)
4764                   {
4765                     w->watchpoint_triggered = watch_triggered_yes;
4766                     break;
4767                   }
4768               }
4769             /* Exact match not required.  Within range is sufficient.  */
4770             else if (target_watchpoint_addr_within_range (current_top_target (),
4771                                                          addr, loc->address,
4772                                                          loc->length))
4773               {
4774                 w->watchpoint_triggered = watch_triggered_yes;
4775                 break;
4776               }
4777           }
4778       }
4779
4780   return 1;
4781 }
4782
4783 /* Possible return values for watchpoint_check.  */
4784 enum wp_check_result
4785   {
4786     /* The watchpoint has been deleted.  */
4787     WP_DELETED = 1,
4788
4789     /* The value has changed.  */
4790     WP_VALUE_CHANGED = 2,
4791
4792     /* The value has not changed.  */
4793     WP_VALUE_NOT_CHANGED = 3,
4794
4795     /* Ignore this watchpoint, no matter if the value changed or not.  */
4796     WP_IGNORE = 4,
4797   };
4798
4799 #define BP_TEMPFLAG 1
4800 #define BP_HARDWAREFLAG 2
4801
4802 /* Evaluate watchpoint condition expression and check if its value
4803    changed.  */
4804
4805 static wp_check_result
4806 watchpoint_check (bpstat bs)
4807 {
4808   struct watchpoint *b;
4809   struct frame_info *fr;
4810   int within_current_scope;
4811
4812   /* BS is built from an existing struct breakpoint.  */
4813   gdb_assert (bs->breakpoint_at != NULL);
4814   b = (struct watchpoint *) bs->breakpoint_at;
4815
4816   /* If this is a local watchpoint, we only want to check if the
4817      watchpoint frame is in scope if the current thread is the thread
4818      that was used to create the watchpoint.  */
4819   if (!watchpoint_in_thread_scope (b))
4820     return WP_IGNORE;
4821
4822   if (b->exp_valid_block == NULL)
4823     within_current_scope = 1;
4824   else
4825     {
4826       struct frame_info *frame = get_current_frame ();
4827       struct gdbarch *frame_arch = get_frame_arch (frame);
4828       CORE_ADDR frame_pc = get_frame_pc (frame);
4829
4830       /* stack_frame_destroyed_p() returns a non-zero value if we're
4831          still in the function but the stack frame has already been
4832          invalidated.  Since we can't rely on the values of local
4833          variables after the stack has been destroyed, we are treating
4834          the watchpoint in that state as `not changed' without further
4835          checking.  Don't mark watchpoints as changed if the current
4836          frame is in an epilogue - even if they are in some other
4837          frame, our view of the stack is likely to be wrong and
4838          frame_find_by_id could error out.  */
4839       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4840         return WP_IGNORE;
4841
4842       fr = frame_find_by_id (b->watchpoint_frame);
4843       within_current_scope = (fr != NULL);
4844
4845       /* If we've gotten confused in the unwinder, we might have
4846          returned a frame that can't describe this variable.  */
4847       if (within_current_scope)
4848         {
4849           struct symbol *function;
4850
4851           function = get_frame_function (fr);
4852           if (function == NULL
4853               || !contained_in (b->exp_valid_block,
4854                                 SYMBOL_BLOCK_VALUE (function)))
4855             within_current_scope = 0;
4856         }
4857
4858       if (within_current_scope)
4859         /* If we end up stopping, the current frame will get selected
4860            in normal_stop.  So this call to select_frame won't affect
4861            the user.  */
4862         select_frame (fr);
4863     }
4864
4865   if (within_current_scope)
4866     {
4867       /* We use value_{,free_to_}mark because it could be a *long*
4868          time before we return to the command level and call
4869          free_all_values.  We can't call free_all_values because we
4870          might be in the middle of evaluating a function call.  */
4871
4872       int pc = 0;
4873       struct value *mark;
4874       struct value *new_val;
4875
4876       if (is_masked_watchpoint (b))
4877         /* Since we don't know the exact trigger address (from
4878            stopped_data_address), just tell the user we've triggered
4879            a mask watchpoint.  */
4880         return WP_VALUE_CHANGED;
4881
4882       mark = value_mark ();
4883       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4884
4885       if (b->val_bitsize != 0)
4886         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4887
4888       /* We use value_equal_contents instead of value_equal because
4889          the latter coerces an array to a pointer, thus comparing just
4890          the address of the array instead of its contents.  This is
4891          not what we want.  */
4892       if ((b->val != NULL) != (new_val != NULL)
4893           || (b->val != NULL && !value_equal_contents (b->val.get (),
4894                                                        new_val)))
4895         {
4896           bs->old_val = b->val;
4897           b->val = release_value (new_val);
4898           b->val_valid = 1;
4899           if (new_val != NULL)
4900             value_free_to_mark (mark);
4901           return WP_VALUE_CHANGED;
4902         }
4903       else
4904         {
4905           /* Nothing changed.  */
4906           value_free_to_mark (mark);
4907           return WP_VALUE_NOT_CHANGED;
4908         }
4909     }
4910   else
4911     {
4912       /* This seems like the only logical thing to do because
4913          if we temporarily ignored the watchpoint, then when
4914          we reenter the block in which it is valid it contains
4915          garbage (in the case of a function, it may have two
4916          garbage values, one before and one after the prologue).
4917          So we can't even detect the first assignment to it and
4918          watch after that (since the garbage may or may not equal
4919          the first value assigned).  */
4920       /* We print all the stop information in
4921          breakpoint_ops->print_it, but in this case, by the time we
4922          call breakpoint_ops->print_it this bp will be deleted
4923          already.  So we have no choice but print the information
4924          here.  */
4925
4926       SWITCH_THRU_ALL_UIS ()
4927         {
4928           struct ui_out *uiout = current_uiout;
4929
4930           if (uiout->is_mi_like_p ())
4931             uiout->field_string
4932               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4933           uiout->text ("\nWatchpoint ");
4934           uiout->field_int ("wpnum", b->number);
4935           uiout->text (" deleted because the program has left the block in\n"
4936                        "which its expression is valid.\n");
4937         }
4938
4939       /* Make sure the watchpoint's commands aren't executed.  */
4940       b->commands = NULL;
4941       watchpoint_del_at_next_stop (b);
4942
4943       return WP_DELETED;
4944     }
4945 }
4946
4947 /* Return true if it looks like target has stopped due to hitting
4948    breakpoint location BL.  This function does not check if we should
4949    stop, only if BL explains the stop.  */
4950
4951 static int
4952 bpstat_check_location (const struct bp_location *bl,
4953                        const address_space *aspace, CORE_ADDR bp_addr,
4954                        const struct target_waitstatus *ws)
4955 {
4956   struct breakpoint *b = bl->owner;
4957
4958   /* BL is from an existing breakpoint.  */
4959   gdb_assert (b != NULL);
4960
4961   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4962 }
4963
4964 /* Determine if the watched values have actually changed, and we
4965    should stop.  If not, set BS->stop to 0.  */
4966
4967 static void
4968 bpstat_check_watchpoint (bpstat bs)
4969 {
4970   const struct bp_location *bl;
4971   struct watchpoint *b;
4972
4973   /* BS is built for existing struct breakpoint.  */
4974   bl = bs->bp_location_at;
4975   gdb_assert (bl != NULL);
4976   b = (struct watchpoint *) bs->breakpoint_at;
4977   gdb_assert (b != NULL);
4978
4979     {
4980       int must_check_value = 0;
4981       
4982       if (b->type == bp_watchpoint)
4983         /* For a software watchpoint, we must always check the
4984            watched value.  */
4985         must_check_value = 1;
4986       else if (b->watchpoint_triggered == watch_triggered_yes)
4987         /* We have a hardware watchpoint (read, write, or access)
4988            and the target earlier reported an address watched by
4989            this watchpoint.  */
4990         must_check_value = 1;
4991       else if (b->watchpoint_triggered == watch_triggered_unknown
4992                && b->type == bp_hardware_watchpoint)
4993         /* We were stopped by a hardware watchpoint, but the target could
4994            not report the data address.  We must check the watchpoint's
4995            value.  Access and read watchpoints are out of luck; without
4996            a data address, we can't figure it out.  */
4997         must_check_value = 1;
4998
4999       if (must_check_value)
5000         {
5001           wp_check_result e;
5002
5003           try
5004             {
5005               e = watchpoint_check (bs);
5006             }
5007           catch (const gdb_exception &ex)
5008             {
5009               exception_fprintf (gdb_stderr, ex,
5010                                  "Error evaluating expression "
5011                                  "for watchpoint %d\n",
5012                                  b->number);
5013
5014               SWITCH_THRU_ALL_UIS ()
5015                 {
5016                   printf_filtered (_("Watchpoint %d deleted.\n"),
5017                                    b->number);
5018                 }
5019               watchpoint_del_at_next_stop (b);
5020               e = WP_DELETED;
5021             }
5022
5023           switch (e)
5024             {
5025             case WP_DELETED:
5026               /* We've already printed what needs to be printed.  */
5027               bs->print_it = print_it_done;
5028               /* Stop.  */
5029               break;
5030             case WP_IGNORE:
5031               bs->print_it = print_it_noop;
5032               bs->stop = 0;
5033               break;
5034             case WP_VALUE_CHANGED:
5035               if (b->type == bp_read_watchpoint)
5036                 {
5037                   /* There are two cases to consider here:
5038
5039                      1. We're watching the triggered memory for reads.
5040                      In that case, trust the target, and always report
5041                      the watchpoint hit to the user.  Even though
5042                      reads don't cause value changes, the value may
5043                      have changed since the last time it was read, and
5044                      since we're not trapping writes, we will not see
5045                      those, and as such we should ignore our notion of
5046                      old value.
5047
5048                      2. We're watching the triggered memory for both
5049                      reads and writes.  There are two ways this may
5050                      happen:
5051
5052                      2.1. This is a target that can't break on data
5053                      reads only, but can break on accesses (reads or
5054                      writes), such as e.g., x86.  We detect this case
5055                      at the time we try to insert read watchpoints.
5056
5057                      2.2. Otherwise, the target supports read
5058                      watchpoints, but, the user set an access or write
5059                      watchpoint watching the same memory as this read
5060                      watchpoint.
5061
5062                      If we're watching memory writes as well as reads,
5063                      ignore watchpoint hits when we find that the
5064                      value hasn't changed, as reads don't cause
5065                      changes.  This still gives false positives when
5066                      the program writes the same value to memory as
5067                      what there was already in memory (we will confuse
5068                      it for a read), but it's much better than
5069                      nothing.  */
5070
5071                   int other_write_watchpoint = 0;
5072
5073                   if (bl->watchpoint_type == hw_read)
5074                     {
5075                       struct breakpoint *other_b;
5076
5077                       ALL_BREAKPOINTS (other_b)
5078                         if (other_b->type == bp_hardware_watchpoint
5079                             || other_b->type == bp_access_watchpoint)
5080                           {
5081                             struct watchpoint *other_w =
5082                               (struct watchpoint *) other_b;
5083
5084                             if (other_w->watchpoint_triggered
5085                                 == watch_triggered_yes)
5086                               {
5087                                 other_write_watchpoint = 1;
5088                                 break;
5089                               }
5090                           }
5091                     }
5092
5093                   if (other_write_watchpoint
5094                       || bl->watchpoint_type == hw_access)
5095                     {
5096                       /* We're watching the same memory for writes,
5097                          and the value changed since the last time we
5098                          updated it, so this trap must be for a write.
5099                          Ignore it.  */
5100                       bs->print_it = print_it_noop;
5101                       bs->stop = 0;
5102                     }
5103                 }
5104               break;
5105             case WP_VALUE_NOT_CHANGED:
5106               if (b->type == bp_hardware_watchpoint
5107                   || b->type == bp_watchpoint)
5108                 {
5109                   /* Don't stop: write watchpoints shouldn't fire if
5110                      the value hasn't changed.  */
5111                   bs->print_it = print_it_noop;
5112                   bs->stop = 0;
5113                 }
5114               /* Stop.  */
5115               break;
5116             default:
5117               /* Can't happen.  */
5118               break;
5119             }
5120         }
5121       else      /* must_check_value == 0 */
5122         {
5123           /* This is a case where some watchpoint(s) triggered, but
5124              not at the address of this watchpoint, or else no
5125              watchpoint triggered after all.  So don't print
5126              anything for this watchpoint.  */
5127           bs->print_it = print_it_noop;
5128           bs->stop = 0;
5129         }
5130     }
5131 }
5132
5133 /* For breakpoints that are currently marked as telling gdb to stop,
5134    check conditions (condition proper, frame, thread and ignore count)
5135    of breakpoint referred to by BS.  If we should not stop for this
5136    breakpoint, set BS->stop to 0.  */
5137
5138 static void
5139 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5140 {
5141   const struct bp_location *bl;
5142   struct breakpoint *b;
5143   /* Assume stop.  */
5144   bool condition_result = true;
5145   struct expression *cond;
5146
5147   gdb_assert (bs->stop);
5148
5149   /* BS is built for existing struct breakpoint.  */
5150   bl = bs->bp_location_at;
5151   gdb_assert (bl != NULL);
5152   b = bs->breakpoint_at;
5153   gdb_assert (b != NULL);
5154
5155   /* Even if the target evaluated the condition on its end and notified GDB, we
5156      need to do so again since GDB does not know if we stopped due to a
5157      breakpoint or a single step breakpoint.  */
5158
5159   if (frame_id_p (b->frame_id)
5160       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5161     {
5162       bs->stop = 0;
5163       return;
5164     }
5165
5166   /* If this is a thread/task-specific breakpoint, don't waste cpu
5167      evaluating the condition if this isn't the specified
5168      thread/task.  */
5169   if ((b->thread != -1 && b->thread != thread->global_num)
5170       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5171     {
5172       bs->stop = 0;
5173       return;
5174     }
5175
5176   /* Evaluate extension language breakpoints that have a "stop" method
5177      implemented.  */
5178   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5179
5180   if (is_watchpoint (b))
5181     {
5182       struct watchpoint *w = (struct watchpoint *) b;
5183
5184       cond = w->cond_exp.get ();
5185     }
5186   else
5187     cond = bl->cond.get ();
5188
5189   if (cond && b->disposition != disp_del_at_next_stop)
5190     {
5191       int within_current_scope = 1;
5192       struct watchpoint * w;
5193
5194       /* We use value_mark and value_free_to_mark because it could
5195          be a long time before we return to the command level and
5196          call free_all_values.  We can't call free_all_values
5197          because we might be in the middle of evaluating a
5198          function call.  */
5199       struct value *mark = value_mark ();
5200
5201       if (is_watchpoint (b))
5202         w = (struct watchpoint *) b;
5203       else
5204         w = NULL;
5205
5206       /* Need to select the frame, with all that implies so that
5207          the conditions will have the right context.  Because we
5208          use the frame, we will not see an inlined function's
5209          variables when we arrive at a breakpoint at the start
5210          of the inlined function; the current frame will be the
5211          call site.  */
5212       if (w == NULL || w->cond_exp_valid_block == NULL)
5213         select_frame (get_current_frame ());
5214       else
5215         {
5216           struct frame_info *frame;
5217
5218           /* For local watchpoint expressions, which particular
5219              instance of a local is being watched matters, so we
5220              keep track of the frame to evaluate the expression
5221              in.  To evaluate the condition however, it doesn't
5222              really matter which instantiation of the function
5223              where the condition makes sense triggers the
5224              watchpoint.  This allows an expression like "watch
5225              global if q > 10" set in `func', catch writes to
5226              global on all threads that call `func', or catch
5227              writes on all recursive calls of `func' by a single
5228              thread.  We simply always evaluate the condition in
5229              the innermost frame that's executing where it makes
5230              sense to evaluate the condition.  It seems
5231              intuitive.  */
5232           frame = block_innermost_frame (w->cond_exp_valid_block);
5233           if (frame != NULL)
5234             select_frame (frame);
5235           else
5236             within_current_scope = 0;
5237         }
5238       if (within_current_scope)
5239         {
5240           try
5241             {
5242               condition_result = breakpoint_cond_eval (cond);
5243             }
5244           catch (const gdb_exception &ex)
5245             {
5246               exception_fprintf (gdb_stderr, ex,
5247                                  "Error in testing breakpoint condition:\n");
5248             }
5249         }
5250       else
5251         {
5252           warning (_("Watchpoint condition cannot be tested "
5253                      "in the current scope"));
5254           /* If we failed to set the right context for this
5255              watchpoint, unconditionally report it.  */
5256         }
5257       /* FIXME-someday, should give breakpoint #.  */
5258       value_free_to_mark (mark);
5259     }
5260
5261   if (cond && !condition_result)
5262     {
5263       bs->stop = 0;
5264     }
5265   else if (b->ignore_count > 0)
5266     {
5267       b->ignore_count--;
5268       bs->stop = 0;
5269       /* Increase the hit count even though we don't stop.  */
5270       ++(b->hit_count);
5271       gdb::observers::breakpoint_modified.notify (b);
5272     }   
5273 }
5274
5275 /* Returns true if we need to track moribund locations of LOC's type
5276    on the current target.  */
5277
5278 static int
5279 need_moribund_for_location_type (struct bp_location *loc)
5280 {
5281   return ((loc->loc_type == bp_loc_software_breakpoint
5282            && !target_supports_stopped_by_sw_breakpoint ())
5283           || (loc->loc_type == bp_loc_hardware_breakpoint
5284               && !target_supports_stopped_by_hw_breakpoint ()));
5285 }
5286
5287 /* See breakpoint.h.  */
5288
5289 bpstat
5290 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5291                     const struct target_waitstatus *ws)
5292 {
5293   struct breakpoint *b;
5294   bpstat bs_head = NULL, *bs_link = &bs_head;
5295
5296   ALL_BREAKPOINTS (b)
5297     {
5298       if (!breakpoint_enabled (b))
5299         continue;
5300
5301       for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5302         {
5303           /* For hardware watchpoints, we look only at the first
5304              location.  The watchpoint_check function will work on the
5305              entire expression, not the individual locations.  For
5306              read watchpoints, the watchpoints_triggered function has
5307              checked all locations already.  */
5308           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5309             break;
5310
5311           if (!bl->enabled || bl->shlib_disabled)
5312             continue;
5313
5314           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5315             continue;
5316
5317           /* Come here if it's a watchpoint, or if the break address
5318              matches.  */
5319
5320           bpstat bs = new bpstats (bl, &bs_link);       /* Alloc a bpstat to
5321                                                            explain stop.  */
5322
5323           /* Assume we stop.  Should we find a watchpoint that is not
5324              actually triggered, or if the condition of the breakpoint
5325              evaluates as false, we'll reset 'stop' to 0.  */
5326           bs->stop = 1;
5327           bs->print = 1;
5328
5329           /* If this is a scope breakpoint, mark the associated
5330              watchpoint as triggered so that we will handle the
5331              out-of-scope event.  We'll get to the watchpoint next
5332              iteration.  */
5333           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5334             {
5335               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5336
5337               w->watchpoint_triggered = watch_triggered_yes;
5338             }
5339         }
5340     }
5341
5342   /* Check if a moribund breakpoint explains the stop.  */
5343   if (!target_supports_stopped_by_sw_breakpoint ()
5344       || !target_supports_stopped_by_hw_breakpoint ())
5345     {
5346       for (bp_location *loc : moribund_locations)
5347         {
5348           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5349               && need_moribund_for_location_type (loc))
5350             {
5351               bpstat bs = new bpstats (loc, &bs_link);
5352               /* For hits of moribund locations, we should just proceed.  */
5353               bs->stop = 0;
5354               bs->print = 0;
5355               bs->print_it = print_it_noop;
5356             }
5357         }
5358     }
5359
5360   return bs_head;
5361 }
5362
5363 /* See breakpoint.h.  */
5364
5365 bpstat
5366 bpstat_stop_status (const address_space *aspace,
5367                     CORE_ADDR bp_addr, thread_info *thread,
5368                     const struct target_waitstatus *ws,
5369                     bpstat stop_chain)
5370 {
5371   struct breakpoint *b = NULL;
5372   /* First item of allocated bpstat's.  */
5373   bpstat bs_head = stop_chain;
5374   bpstat bs;
5375   int need_remove_insert;
5376   int removed_any;
5377
5378   /* First, build the bpstat chain with locations that explain a
5379      target stop, while being careful to not set the target running,
5380      as that may invalidate locations (in particular watchpoint
5381      locations are recreated).  Resuming will happen here with
5382      breakpoint conditions or watchpoint expressions that include
5383      inferior function calls.  */
5384   if (bs_head == NULL)
5385     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5386
5387   /* A bit of special processing for shlib breakpoints.  We need to
5388      process solib loading here, so that the lists of loaded and
5389      unloaded libraries are correct before we handle "catch load" and
5390      "catch unload".  */
5391   for (bs = bs_head; bs != NULL; bs = bs->next)
5392     {
5393       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5394         {
5395           handle_solib_event ();
5396           break;
5397         }
5398     }
5399
5400   /* Now go through the locations that caused the target to stop, and
5401      check whether we're interested in reporting this stop to higher
5402      layers, or whether we should resume the target transparently.  */
5403
5404   removed_any = 0;
5405
5406   for (bs = bs_head; bs != NULL; bs = bs->next)
5407     {
5408       if (!bs->stop)
5409         continue;
5410
5411       b = bs->breakpoint_at;
5412       b->ops->check_status (bs);
5413       if (bs->stop)
5414         {
5415           bpstat_check_breakpoint_conditions (bs, thread);
5416
5417           if (bs->stop)
5418             {
5419               ++(b->hit_count);
5420               gdb::observers::breakpoint_modified.notify (b);
5421
5422               /* We will stop here.  */
5423               if (b->disposition == disp_disable)
5424                 {
5425                   --(b->enable_count);
5426                   if (b->enable_count <= 0)
5427                     b->enable_state = bp_disabled;
5428                   removed_any = 1;
5429                 }
5430               if (b->silent)
5431                 bs->print = 0;
5432               bs->commands = b->commands;
5433               if (command_line_is_silent (bs->commands
5434                                           ? bs->commands.get () : NULL))
5435                 bs->print = 0;
5436
5437               b->ops->after_condition_true (bs);
5438             }
5439
5440         }
5441
5442       /* Print nothing for this entry if we don't stop or don't
5443          print.  */
5444       if (!bs->stop || !bs->print)
5445         bs->print_it = print_it_noop;
5446     }
5447
5448   /* If we aren't stopping, the value of some hardware watchpoint may
5449      not have changed, but the intermediate memory locations we are
5450      watching may have.  Don't bother if we're stopping; this will get
5451      done later.  */
5452   need_remove_insert = 0;
5453   if (! bpstat_causes_stop (bs_head))
5454     for (bs = bs_head; bs != NULL; bs = bs->next)
5455       if (!bs->stop
5456           && bs->breakpoint_at
5457           && is_hardware_watchpoint (bs->breakpoint_at))
5458         {
5459           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5460
5461           update_watchpoint (w, 0 /* don't reparse.  */);
5462           need_remove_insert = 1;
5463         }
5464
5465   if (need_remove_insert)
5466     update_global_location_list (UGLL_MAY_INSERT);
5467   else if (removed_any)
5468     update_global_location_list (UGLL_DONT_INSERT);
5469
5470   return bs_head;
5471 }
5472
5473 static void
5474 handle_jit_event (void)
5475 {
5476   struct frame_info *frame;
5477   struct gdbarch *gdbarch;
5478
5479   if (debug_infrun)
5480     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5481
5482   /* Switch terminal for any messages produced by
5483      breakpoint_re_set.  */
5484   target_terminal::ours_for_output ();
5485
5486   frame = get_current_frame ();
5487   gdbarch = get_frame_arch (frame);
5488
5489   jit_event_handler (gdbarch);
5490
5491   target_terminal::inferior ();
5492 }
5493
5494 /* Prepare WHAT final decision for infrun.  */
5495
5496 /* Decide what infrun needs to do with this bpstat.  */
5497
5498 struct bpstat_what
5499 bpstat_what (bpstat bs_head)
5500 {
5501   struct bpstat_what retval;
5502   bpstat bs;
5503
5504   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5505   retval.call_dummy = STOP_NONE;
5506   retval.is_longjmp = 0;
5507
5508   for (bs = bs_head; bs != NULL; bs = bs->next)
5509     {
5510       /* Extract this BS's action.  After processing each BS, we check
5511          if its action overrides all we've seem so far.  */
5512       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5513       enum bptype bptype;
5514
5515       if (bs->breakpoint_at == NULL)
5516         {
5517           /* I suspect this can happen if it was a momentary
5518              breakpoint which has since been deleted.  */
5519           bptype = bp_none;
5520         }
5521       else
5522         bptype = bs->breakpoint_at->type;
5523
5524       switch (bptype)
5525         {
5526         case bp_none:
5527           break;
5528         case bp_breakpoint:
5529         case bp_hardware_breakpoint:
5530         case bp_single_step:
5531         case bp_until:
5532         case bp_finish:
5533         case bp_shlib_event:
5534           if (bs->stop)
5535             {
5536               if (bs->print)
5537                 this_action = BPSTAT_WHAT_STOP_NOISY;
5538               else
5539                 this_action = BPSTAT_WHAT_STOP_SILENT;
5540             }
5541           else
5542             this_action = BPSTAT_WHAT_SINGLE;
5543           break;
5544         case bp_watchpoint:
5545         case bp_hardware_watchpoint:
5546         case bp_read_watchpoint:
5547         case bp_access_watchpoint:
5548           if (bs->stop)
5549             {
5550               if (bs->print)
5551                 this_action = BPSTAT_WHAT_STOP_NOISY;
5552               else
5553                 this_action = BPSTAT_WHAT_STOP_SILENT;
5554             }
5555           else
5556             {
5557               /* There was a watchpoint, but we're not stopping.
5558                  This requires no further action.  */
5559             }
5560           break;
5561         case bp_longjmp:
5562         case bp_longjmp_call_dummy:
5563         case bp_exception:
5564           if (bs->stop)
5565             {
5566               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5567               retval.is_longjmp = bptype != bp_exception;
5568             }
5569           else
5570             this_action = BPSTAT_WHAT_SINGLE;
5571           break;
5572         case bp_longjmp_resume:
5573         case bp_exception_resume:
5574           if (bs->stop)
5575             {
5576               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5577               retval.is_longjmp = bptype == bp_longjmp_resume;
5578             }
5579           else
5580             this_action = BPSTAT_WHAT_SINGLE;
5581           break;
5582         case bp_step_resume:
5583           if (bs->stop)
5584             this_action = BPSTAT_WHAT_STEP_RESUME;
5585           else
5586             {
5587               /* It is for the wrong frame.  */
5588               this_action = BPSTAT_WHAT_SINGLE;
5589             }
5590           break;
5591         case bp_hp_step_resume:
5592           if (bs->stop)
5593             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5594           else
5595             {
5596               /* It is for the wrong frame.  */
5597               this_action = BPSTAT_WHAT_SINGLE;
5598             }
5599           break;
5600         case bp_watchpoint_scope:
5601         case bp_thread_event:
5602         case bp_overlay_event:
5603         case bp_longjmp_master:
5604         case bp_std_terminate_master:
5605         case bp_exception_master:
5606           this_action = BPSTAT_WHAT_SINGLE;
5607           break;
5608         case bp_catchpoint:
5609           if (bs->stop)
5610             {
5611               if (bs->print)
5612                 this_action = BPSTAT_WHAT_STOP_NOISY;
5613               else
5614                 this_action = BPSTAT_WHAT_STOP_SILENT;
5615             }
5616           else
5617             {
5618               /* There was a catchpoint, but we're not stopping.
5619                  This requires no further action.  */
5620             }
5621           break;
5622         case bp_jit_event:
5623           this_action = BPSTAT_WHAT_SINGLE;
5624           break;
5625         case bp_call_dummy:
5626           /* Make sure the action is stop (silent or noisy),
5627              so infrun.c pops the dummy frame.  */
5628           retval.call_dummy = STOP_STACK_DUMMY;
5629           this_action = BPSTAT_WHAT_STOP_SILENT;
5630           break;
5631         case bp_std_terminate:
5632           /* Make sure the action is stop (silent or noisy),
5633              so infrun.c pops the dummy frame.  */
5634           retval.call_dummy = STOP_STD_TERMINATE;
5635           this_action = BPSTAT_WHAT_STOP_SILENT;
5636           break;
5637         case bp_tracepoint:
5638         case bp_fast_tracepoint:
5639         case bp_static_tracepoint:
5640           /* Tracepoint hits should not be reported back to GDB, and
5641              if one got through somehow, it should have been filtered
5642              out already.  */
5643           internal_error (__FILE__, __LINE__,
5644                           _("bpstat_what: tracepoint encountered"));
5645           break;
5646         case bp_gnu_ifunc_resolver:
5647           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5648           this_action = BPSTAT_WHAT_SINGLE;
5649           break;
5650         case bp_gnu_ifunc_resolver_return:
5651           /* The breakpoint will be removed, execution will restart from the
5652              PC of the former breakpoint.  */
5653           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5654           break;
5655
5656         case bp_dprintf:
5657           if (bs->stop)
5658             this_action = BPSTAT_WHAT_STOP_SILENT;
5659           else
5660             this_action = BPSTAT_WHAT_SINGLE;
5661           break;
5662
5663         default:
5664           internal_error (__FILE__, __LINE__,
5665                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5666         }
5667
5668       retval.main_action = std::max (retval.main_action, this_action);
5669     }
5670
5671   return retval;
5672 }
5673
5674 void
5675 bpstat_run_callbacks (bpstat bs_head)
5676 {
5677   bpstat bs;
5678
5679   for (bs = bs_head; bs != NULL; bs = bs->next)
5680     {
5681       struct breakpoint *b = bs->breakpoint_at;
5682
5683       if (b == NULL)
5684         continue;
5685       switch (b->type)
5686         {
5687         case bp_jit_event:
5688           handle_jit_event ();
5689           break;
5690         case bp_gnu_ifunc_resolver:
5691           gnu_ifunc_resolver_stop (b);
5692           break;
5693         case bp_gnu_ifunc_resolver_return:
5694           gnu_ifunc_resolver_return_stop (b);
5695           break;
5696         }
5697     }
5698 }
5699
5700 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5701    without hardware support).  This isn't related to a specific bpstat,
5702    just to things like whether watchpoints are set.  */
5703
5704 int
5705 bpstat_should_step (void)
5706 {
5707   struct breakpoint *b;
5708
5709   ALL_BREAKPOINTS (b)
5710     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5711       return 1;
5712   return 0;
5713 }
5714
5715 int
5716 bpstat_causes_stop (bpstat bs)
5717 {
5718   for (; bs != NULL; bs = bs->next)
5719     if (bs->stop)
5720       return 1;
5721
5722   return 0;
5723 }
5724
5725 \f
5726
5727 /* Compute a string of spaces suitable to indent the next line
5728    so it starts at the position corresponding to the table column
5729    named COL_NAME in the currently active table of UIOUT.  */
5730
5731 static char *
5732 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5733 {
5734   static char wrap_indent[80];
5735   int i, total_width, width, align;
5736   const char *text;
5737
5738   total_width = 0;
5739   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5740     {
5741       if (strcmp (text, col_name) == 0)
5742         {
5743           gdb_assert (total_width < sizeof wrap_indent);
5744           memset (wrap_indent, ' ', total_width);
5745           wrap_indent[total_width] = 0;
5746
5747           return wrap_indent;
5748         }
5749
5750       total_width += width + 1;
5751     }
5752
5753   return NULL;
5754 }
5755
5756 /* Determine if the locations of this breakpoint will have their conditions
5757    evaluated by the target, host or a mix of both.  Returns the following:
5758
5759     "host": Host evals condition.
5760     "host or target": Host or Target evals condition.
5761     "target": Target evals condition.
5762 */
5763
5764 static const char *
5765 bp_condition_evaluator (struct breakpoint *b)
5766 {
5767   struct bp_location *bl;
5768   char host_evals = 0;
5769   char target_evals = 0;
5770
5771   if (!b)
5772     return NULL;
5773
5774   if (!is_breakpoint (b))
5775     return NULL;
5776
5777   if (gdb_evaluates_breakpoint_condition_p ()
5778       || !target_supports_evaluation_of_breakpoint_conditions ())
5779     return condition_evaluation_host;
5780
5781   for (bl = b->loc; bl; bl = bl->next)
5782     {
5783       if (bl->cond_bytecode)
5784         target_evals++;
5785       else
5786         host_evals++;
5787     }
5788
5789   if (host_evals && target_evals)
5790     return condition_evaluation_both;
5791   else if (target_evals)
5792     return condition_evaluation_target;
5793   else
5794     return condition_evaluation_host;
5795 }
5796
5797 /* Determine the breakpoint location's condition evaluator.  This is
5798    similar to bp_condition_evaluator, but for locations.  */
5799
5800 static const char *
5801 bp_location_condition_evaluator (struct bp_location *bl)
5802 {
5803   if (bl && !is_breakpoint (bl->owner))
5804     return NULL;
5805
5806   if (gdb_evaluates_breakpoint_condition_p ()
5807       || !target_supports_evaluation_of_breakpoint_conditions ())
5808     return condition_evaluation_host;
5809
5810   if (bl && bl->cond_bytecode)
5811     return condition_evaluation_target;
5812   else
5813     return condition_evaluation_host;
5814 }
5815
5816 /* Print the LOC location out of the list of B->LOC locations.  */
5817
5818 static void
5819 print_breakpoint_location (struct breakpoint *b,
5820                            struct bp_location *loc)
5821 {
5822   struct ui_out *uiout = current_uiout;
5823
5824   scoped_restore_current_program_space restore_pspace;
5825
5826   if (loc != NULL && loc->shlib_disabled)
5827     loc = NULL;
5828
5829   if (loc != NULL)
5830     set_current_program_space (loc->pspace);
5831
5832   if (b->display_canonical)
5833     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5834   else if (loc && loc->symtab)
5835     {
5836       const struct symbol *sym = loc->symbol;
5837
5838       if (sym)
5839         {
5840           uiout->text ("in ");
5841           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5842                                ui_out_style_kind::FUNCTION);
5843           uiout->text (" ");
5844           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5845           uiout->text ("at ");
5846         }
5847       uiout->field_string ("file",
5848                            symtab_to_filename_for_display (loc->symtab),
5849                            ui_out_style_kind::FILE);
5850       uiout->text (":");
5851
5852       if (uiout->is_mi_like_p ())
5853         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5854       
5855       uiout->field_int ("line", loc->line_number);
5856     }
5857   else if (loc)
5858     {
5859       string_file stb;
5860
5861       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5862                               demangle, "");
5863       uiout->field_stream ("at", stb);
5864     }
5865   else
5866     {
5867       uiout->field_string ("pending",
5868                            event_location_to_string (b->location.get ()));
5869       /* If extra_string is available, it could be holding a condition
5870          or dprintf arguments.  In either case, make sure it is printed,
5871          too, but only for non-MI streams.  */
5872       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5873         {
5874           if (b->type == bp_dprintf)
5875             uiout->text (",");
5876           else
5877             uiout->text (" ");
5878           uiout->text (b->extra_string);
5879         }
5880     }
5881
5882   if (loc && is_breakpoint (b)
5883       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5884       && bp_condition_evaluator (b) == condition_evaluation_both)
5885     {
5886       uiout->text (" (");
5887       uiout->field_string ("evaluated-by",
5888                            bp_location_condition_evaluator (loc));
5889       uiout->text (")");
5890     }
5891 }
5892
5893 static const char *
5894 bptype_string (enum bptype type)
5895 {
5896   struct ep_type_description
5897     {
5898       enum bptype type;
5899       const char *description;
5900     };
5901   static struct ep_type_description bptypes[] =
5902   {
5903     {bp_none, "?deleted?"},
5904     {bp_breakpoint, "breakpoint"},
5905     {bp_hardware_breakpoint, "hw breakpoint"},
5906     {bp_single_step, "sw single-step"},
5907     {bp_until, "until"},
5908     {bp_finish, "finish"},
5909     {bp_watchpoint, "watchpoint"},
5910     {bp_hardware_watchpoint, "hw watchpoint"},
5911     {bp_read_watchpoint, "read watchpoint"},
5912     {bp_access_watchpoint, "acc watchpoint"},
5913     {bp_longjmp, "longjmp"},
5914     {bp_longjmp_resume, "longjmp resume"},
5915     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5916     {bp_exception, "exception"},
5917     {bp_exception_resume, "exception resume"},
5918     {bp_step_resume, "step resume"},
5919     {bp_hp_step_resume, "high-priority step resume"},
5920     {bp_watchpoint_scope, "watchpoint scope"},
5921     {bp_call_dummy, "call dummy"},
5922     {bp_std_terminate, "std::terminate"},
5923     {bp_shlib_event, "shlib events"},
5924     {bp_thread_event, "thread events"},
5925     {bp_overlay_event, "overlay events"},
5926     {bp_longjmp_master, "longjmp master"},
5927     {bp_std_terminate_master, "std::terminate master"},
5928     {bp_exception_master, "exception master"},
5929     {bp_catchpoint, "catchpoint"},
5930     {bp_tracepoint, "tracepoint"},
5931     {bp_fast_tracepoint, "fast tracepoint"},
5932     {bp_static_tracepoint, "static tracepoint"},
5933     {bp_dprintf, "dprintf"},
5934     {bp_jit_event, "jit events"},
5935     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5936     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5937   };
5938
5939   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5940       || ((int) type != bptypes[(int) type].type))
5941     internal_error (__FILE__, __LINE__,
5942                     _("bptypes table does not describe type #%d."),
5943                     (int) type);
5944
5945   return bptypes[(int) type].description;
5946 }
5947
5948 /* For MI, output a field named 'thread-groups' with a list as the value.
5949    For CLI, prefix the list with the string 'inf'. */
5950
5951 static void
5952 output_thread_groups (struct ui_out *uiout,
5953                       const char *field_name,
5954                       const std::vector<int> &inf_nums,
5955                       int mi_only)
5956 {
5957   int is_mi = uiout->is_mi_like_p ();
5958
5959   /* For backward compatibility, don't display inferiors in CLI unless
5960      there are several.  Always display them for MI. */
5961   if (!is_mi && mi_only)
5962     return;
5963
5964   ui_out_emit_list list_emitter (uiout, field_name);
5965
5966   for (size_t i = 0; i < inf_nums.size (); i++)
5967     {
5968       if (is_mi)
5969         {
5970           char mi_group[10];
5971
5972           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5973           uiout->field_string (NULL, mi_group);
5974         }
5975       else
5976         {
5977           if (i == 0)
5978             uiout->text (" inf ");
5979           else
5980             uiout->text (", ");
5981         
5982           uiout->text (plongest (inf_nums[i]));
5983         }
5984     }
5985 }
5986
5987 /* Print B to gdb_stdout.  */
5988
5989 static void
5990 print_one_breakpoint_location (struct breakpoint *b,
5991                                struct bp_location *loc,
5992                                int loc_number,
5993                                struct bp_location **last_loc,
5994                                int allflag)
5995 {
5996   struct command_line *l;
5997   static char bpenables[] = "nynny";
5998
5999   struct ui_out *uiout = current_uiout;
6000   int header_of_multiple = 0;
6001   int part_of_multiple = (loc != NULL);
6002   struct value_print_options opts;
6003
6004   get_user_print_options (&opts);
6005
6006   gdb_assert (!loc || loc_number != 0);
6007   /* See comment in print_one_breakpoint concerning treatment of
6008      breakpoints with single disabled location.  */
6009   if (loc == NULL 
6010       && (b->loc != NULL 
6011           && (b->loc->next != NULL || !b->loc->enabled)))
6012     header_of_multiple = 1;
6013   if (loc == NULL)
6014     loc = b->loc;
6015
6016   annotate_record ();
6017
6018   /* 1 */
6019   annotate_field (0);
6020   if (part_of_multiple)
6021     uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6022   else
6023     uiout->field_int ("number", b->number);
6024
6025   /* 2 */
6026   annotate_field (1);
6027   if (part_of_multiple)
6028     uiout->field_skip ("type");
6029   else
6030     uiout->field_string ("type", bptype_string (b->type));
6031
6032   /* 3 */
6033   annotate_field (2);
6034   if (part_of_multiple)
6035     uiout->field_skip ("disp");
6036   else
6037     uiout->field_string ("disp", bpdisp_text (b->disposition));
6038
6039   /* 4 */
6040   annotate_field (3);
6041   if (part_of_multiple)
6042     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6043   else
6044     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6045
6046   /* 5 and 6 */
6047   if (b->ops != NULL && b->ops->print_one != NULL)
6048     {
6049       /* Although the print_one can possibly print all locations,
6050          calling it here is not likely to get any nice result.  So,
6051          make sure there's just one location.  */
6052       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6053       b->ops->print_one (b, last_loc);
6054     }
6055   else
6056     switch (b->type)
6057       {
6058       case bp_none:
6059         internal_error (__FILE__, __LINE__,
6060                         _("print_one_breakpoint: bp_none encountered\n"));
6061         break;
6062
6063       case bp_watchpoint:
6064       case bp_hardware_watchpoint:
6065       case bp_read_watchpoint:
6066       case bp_access_watchpoint:
6067         {
6068           struct watchpoint *w = (struct watchpoint *) b;
6069
6070           /* Field 4, the address, is omitted (which makes the columns
6071              not line up too nicely with the headers, but the effect
6072              is relatively readable).  */
6073           if (opts.addressprint)
6074             uiout->field_skip ("addr");
6075           annotate_field (5);
6076           uiout->field_string ("what", w->exp_string);
6077         }
6078         break;
6079
6080       case bp_breakpoint:
6081       case bp_hardware_breakpoint:
6082       case bp_single_step:
6083       case bp_until:
6084       case bp_finish:
6085       case bp_longjmp:
6086       case bp_longjmp_resume:
6087       case bp_longjmp_call_dummy:
6088       case bp_exception:
6089       case bp_exception_resume:
6090       case bp_step_resume:
6091       case bp_hp_step_resume:
6092       case bp_watchpoint_scope:
6093       case bp_call_dummy:
6094       case bp_std_terminate:
6095       case bp_shlib_event:
6096       case bp_thread_event:
6097       case bp_overlay_event:
6098       case bp_longjmp_master:
6099       case bp_std_terminate_master:
6100       case bp_exception_master:
6101       case bp_tracepoint:
6102       case bp_fast_tracepoint:
6103       case bp_static_tracepoint:
6104       case bp_dprintf:
6105       case bp_jit_event:
6106       case bp_gnu_ifunc_resolver:
6107       case bp_gnu_ifunc_resolver_return:
6108         if (opts.addressprint)
6109           {
6110             annotate_field (4);
6111             if (header_of_multiple)
6112               uiout->field_string ("addr", "<MULTIPLE>");
6113             else if (b->loc == NULL || loc->shlib_disabled)
6114               uiout->field_string ("addr", "<PENDING>");
6115             else
6116               uiout->field_core_addr ("addr",
6117                                       loc->gdbarch, loc->address);
6118           }
6119         annotate_field (5);
6120         if (!header_of_multiple)
6121           print_breakpoint_location (b, loc);
6122         if (b->loc)
6123           *last_loc = b->loc;
6124         break;
6125       }
6126
6127
6128   if (loc != NULL && !header_of_multiple)
6129     {
6130       std::vector<int> inf_nums;
6131       int mi_only = 1;
6132
6133       for (inferior *inf : all_inferiors ())
6134         {
6135           if (inf->pspace == loc->pspace)
6136             inf_nums.push_back (inf->num);
6137         }
6138
6139         /* For backward compatibility, don't display inferiors in CLI unless
6140            there are several.  Always display for MI. */
6141         if (allflag
6142             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6143                 && (number_of_program_spaces () > 1
6144                     || number_of_inferiors () > 1)
6145                 /* LOC is for existing B, it cannot be in
6146                    moribund_locations and thus having NULL OWNER.  */
6147                 && loc->owner->type != bp_catchpoint))
6148         mi_only = 0;
6149       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6150     }
6151
6152   if (!part_of_multiple)
6153     {
6154       if (b->thread != -1)
6155         {
6156           /* FIXME: This seems to be redundant and lost here; see the
6157              "stop only in" line a little further down.  */
6158           uiout->text (" thread ");
6159           uiout->field_int ("thread", b->thread);
6160         }
6161       else if (b->task != 0)
6162         {
6163           uiout->text (" task ");
6164           uiout->field_int ("task", b->task);
6165         }
6166     }
6167
6168   uiout->text ("\n");
6169
6170   if (!part_of_multiple)
6171     b->ops->print_one_detail (b, uiout);
6172
6173   if (part_of_multiple && frame_id_p (b->frame_id))
6174     {
6175       annotate_field (6);
6176       uiout->text ("\tstop only in stack frame at ");
6177       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6178          the frame ID.  */
6179       uiout->field_core_addr ("frame",
6180                               b->gdbarch, b->frame_id.stack_addr);
6181       uiout->text ("\n");
6182     }
6183   
6184   if (!part_of_multiple && b->cond_string)
6185     {
6186       annotate_field (7);
6187       if (is_tracepoint (b))
6188         uiout->text ("\ttrace only if ");
6189       else
6190         uiout->text ("\tstop only if ");
6191       uiout->field_string ("cond", b->cond_string);
6192
6193       /* Print whether the target is doing the breakpoint's condition
6194          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6195       if (is_breakpoint (b)
6196           && breakpoint_condition_evaluation_mode ()
6197           == condition_evaluation_target)
6198         {
6199           uiout->text (" (");
6200           uiout->field_string ("evaluated-by",
6201                                bp_condition_evaluator (b));
6202           uiout->text (" evals)");
6203         }
6204       uiout->text ("\n");
6205     }
6206
6207   if (!part_of_multiple && b->thread != -1)
6208     {
6209       /* FIXME should make an annotation for this.  */
6210       uiout->text ("\tstop only in thread ");
6211       if (uiout->is_mi_like_p ())
6212         uiout->field_int ("thread", b->thread);
6213       else
6214         {
6215           struct thread_info *thr = find_thread_global_id (b->thread);
6216
6217           uiout->field_string ("thread", print_thread_id (thr));
6218         }
6219       uiout->text ("\n");
6220     }
6221   
6222   if (!part_of_multiple)
6223     {
6224       if (b->hit_count)
6225         {
6226           /* FIXME should make an annotation for this.  */
6227           if (is_catchpoint (b))
6228             uiout->text ("\tcatchpoint");
6229           else if (is_tracepoint (b))
6230             uiout->text ("\ttracepoint");
6231           else
6232             uiout->text ("\tbreakpoint");
6233           uiout->text (" already hit ");
6234           uiout->field_int ("times", b->hit_count);
6235           if (b->hit_count == 1)
6236             uiout->text (" time\n");
6237           else
6238             uiout->text (" times\n");
6239         }
6240       else
6241         {
6242           /* Output the count also if it is zero, but only if this is mi.  */
6243           if (uiout->is_mi_like_p ())
6244             uiout->field_int ("times", b->hit_count);
6245         }
6246     }
6247
6248   if (!part_of_multiple && b->ignore_count)
6249     {
6250       annotate_field (8);
6251       uiout->text ("\tignore next ");
6252       uiout->field_int ("ignore", b->ignore_count);
6253       uiout->text (" hits\n");
6254     }
6255
6256   /* Note that an enable count of 1 corresponds to "enable once"
6257      behavior, which is reported by the combination of enablement and
6258      disposition, so we don't need to mention it here.  */
6259   if (!part_of_multiple && b->enable_count > 1)
6260     {
6261       annotate_field (8);
6262       uiout->text ("\tdisable after ");
6263       /* Tweak the wording to clarify that ignore and enable counts
6264          are distinct, and have additive effect.  */
6265       if (b->ignore_count)
6266         uiout->text ("additional ");
6267       else
6268         uiout->text ("next ");
6269       uiout->field_int ("enable", b->enable_count);
6270       uiout->text (" hits\n");
6271     }
6272
6273   if (!part_of_multiple && is_tracepoint (b))
6274     {
6275       struct tracepoint *tp = (struct tracepoint *) b;
6276
6277       if (tp->traceframe_usage)
6278         {
6279           uiout->text ("\ttrace buffer usage ");
6280           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6281           uiout->text (" bytes\n");
6282         }
6283     }
6284
6285   l = b->commands ? b->commands.get () : NULL;
6286   if (!part_of_multiple && l)
6287     {
6288       annotate_field (9);
6289       ui_out_emit_tuple tuple_emitter (uiout, "script");
6290       print_command_lines (uiout, l, 4);
6291     }
6292
6293   if (is_tracepoint (b))
6294     {
6295       struct tracepoint *t = (struct tracepoint *) b;
6296
6297       if (!part_of_multiple && t->pass_count)
6298         {
6299           annotate_field (10);
6300           uiout->text ("\tpass count ");
6301           uiout->field_int ("pass", t->pass_count);
6302           uiout->text (" \n");
6303         }
6304
6305       /* Don't display it when tracepoint or tracepoint location is
6306          pending.   */
6307       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6308         {
6309           annotate_field (11);
6310
6311           if (uiout->is_mi_like_p ())
6312             uiout->field_string ("installed",
6313                                  loc->inserted ? "y" : "n");
6314           else
6315             {
6316               if (loc->inserted)
6317                 uiout->text ("\t");
6318               else
6319                 uiout->text ("\tnot ");
6320               uiout->text ("installed on target\n");
6321             }
6322         }
6323     }
6324
6325   if (uiout->is_mi_like_p () && !part_of_multiple)
6326     {
6327       if (is_watchpoint (b))
6328         {
6329           struct watchpoint *w = (struct watchpoint *) b;
6330
6331           uiout->field_string ("original-location", w->exp_string);
6332         }
6333       else if (b->location != NULL
6334                && event_location_to_string (b->location.get ()) != NULL)
6335         uiout->field_string ("original-location",
6336                              event_location_to_string (b->location.get ()));
6337     }
6338 }
6339
6340 /* See breakpoint.h. */
6341
6342 bool fix_multi_location_breakpoint_output_globally = false;
6343
6344 static void
6345 print_one_breakpoint (struct breakpoint *b,
6346                       struct bp_location **last_loc, 
6347                       int allflag)
6348 {
6349   struct ui_out *uiout = current_uiout;
6350   bool use_fixed_output
6351     = (uiout->test_flags (fix_multi_location_breakpoint_output)
6352        || fix_multi_location_breakpoint_output_globally);
6353
6354   gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6355   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6356
6357   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6358      are outside.  */
6359   if (!use_fixed_output)
6360     bkpt_tuple_emitter.reset ();
6361
6362   /* If this breakpoint has custom print function,
6363      it's already printed.  Otherwise, print individual
6364      locations, if any.  */
6365   if (b->ops == NULL || b->ops->print_one == NULL)
6366     {
6367       /* If breakpoint has a single location that is disabled, we
6368          print it as if it had several locations, since otherwise it's
6369          hard to represent "breakpoint enabled, location disabled"
6370          situation.
6371
6372          Note that while hardware watchpoints have several locations
6373          internally, that's not a property exposed to user.  */
6374       if (b->loc 
6375           && !is_hardware_watchpoint (b)
6376           && (b->loc->next || !b->loc->enabled))
6377         {
6378           gdb::optional<ui_out_emit_list> locations_list;
6379
6380           /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6381              MI record.  For later versions, place breakpoint locations in a
6382              list.  */
6383           if (uiout->is_mi_like_p () && use_fixed_output)
6384             locations_list.emplace (uiout, "locations");
6385
6386           int n = 1;
6387           for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6388             {
6389               ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6390               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6391             }
6392         }
6393     }
6394 }
6395
6396 static int
6397 breakpoint_address_bits (struct breakpoint *b)
6398 {
6399   int print_address_bits = 0;
6400   struct bp_location *loc;
6401
6402   /* Software watchpoints that aren't watching memory don't have an
6403      address to print.  */
6404   if (is_no_memory_software_watchpoint (b))
6405     return 0;
6406
6407   for (loc = b->loc; loc; loc = loc->next)
6408     {
6409       int addr_bit;
6410
6411       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6412       if (addr_bit > print_address_bits)
6413         print_address_bits = addr_bit;
6414     }
6415
6416   return print_address_bits;
6417 }
6418
6419 /* See breakpoint.h.  */
6420
6421 void
6422 print_breakpoint (breakpoint *b)
6423 {
6424   struct bp_location *dummy_loc = NULL;
6425   print_one_breakpoint (b, &dummy_loc, 0);
6426 }
6427
6428 /* Return true if this breakpoint was set by the user, false if it is
6429    internal or momentary.  */
6430
6431 int
6432 user_breakpoint_p (struct breakpoint *b)
6433 {
6434   return b->number > 0;
6435 }
6436
6437 /* See breakpoint.h.  */
6438
6439 int
6440 pending_breakpoint_p (struct breakpoint *b)
6441 {
6442   return b->loc == NULL;
6443 }
6444
6445 /* Print information on user settable breakpoint (watchpoint, etc)
6446    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6447    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6448    FILTER is non-NULL, call it on each breakpoint and only include the
6449    ones for which it returns non-zero.  Return the total number of
6450    breakpoints listed.  */
6451
6452 static int
6453 breakpoint_1 (const char *args, int allflag, 
6454               int (*filter) (const struct breakpoint *))
6455 {
6456   struct breakpoint *b;
6457   struct bp_location *last_loc = NULL;
6458   int nr_printable_breakpoints;
6459   struct value_print_options opts;
6460   int print_address_bits = 0;
6461   int print_type_col_width = 14;
6462   struct ui_out *uiout = current_uiout;
6463
6464   get_user_print_options (&opts);
6465
6466   /* Compute the number of rows in the table, as well as the size
6467      required for address fields.  */
6468   nr_printable_breakpoints = 0;
6469   ALL_BREAKPOINTS (b)
6470     {
6471       /* If we have a filter, only list the breakpoints it accepts.  */
6472       if (filter && !filter (b))
6473         continue;
6474
6475       /* If we have an "args" string, it is a list of breakpoints to 
6476          accept.  Skip the others.  */
6477       if (args != NULL && *args != '\0')
6478         {
6479           if (allflag && parse_and_eval_long (args) != b->number)
6480             continue;
6481           if (!allflag && !number_is_in_list (args, b->number))
6482             continue;
6483         }
6484
6485       if (allflag || user_breakpoint_p (b))
6486         {
6487           int addr_bit, type_len;
6488
6489           addr_bit = breakpoint_address_bits (b);
6490           if (addr_bit > print_address_bits)
6491             print_address_bits = addr_bit;
6492
6493           type_len = strlen (bptype_string (b->type));
6494           if (type_len > print_type_col_width)
6495             print_type_col_width = type_len;
6496
6497           nr_printable_breakpoints++;
6498         }
6499     }
6500
6501   {
6502     ui_out_emit_table table_emitter (uiout,
6503                                      opts.addressprint ? 6 : 5,
6504                                      nr_printable_breakpoints,
6505                                      "BreakpointTable");
6506
6507     if (nr_printable_breakpoints > 0)
6508       annotate_breakpoints_headers ();
6509     if (nr_printable_breakpoints > 0)
6510       annotate_field (0);
6511     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6512     if (nr_printable_breakpoints > 0)
6513       annotate_field (1);
6514     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6515     if (nr_printable_breakpoints > 0)
6516       annotate_field (2);
6517     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6518     if (nr_printable_breakpoints > 0)
6519       annotate_field (3);
6520     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6521     if (opts.addressprint)
6522       {
6523         if (nr_printable_breakpoints > 0)
6524           annotate_field (4);
6525         if (print_address_bits <= 32)
6526           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6527         else
6528           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6529       }
6530     if (nr_printable_breakpoints > 0)
6531       annotate_field (5);
6532     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6533     uiout->table_body ();
6534     if (nr_printable_breakpoints > 0)
6535       annotate_breakpoints_table ();
6536
6537     ALL_BREAKPOINTS (b)
6538       {
6539         QUIT;
6540         /* If we have a filter, only list the breakpoints it accepts.  */
6541         if (filter && !filter (b))
6542           continue;
6543
6544         /* If we have an "args" string, it is a list of breakpoints to 
6545            accept.  Skip the others.  */
6546
6547         if (args != NULL && *args != '\0')
6548           {
6549             if (allflag)        /* maintenance info breakpoint */
6550               {
6551                 if (parse_and_eval_long (args) != b->number)
6552                   continue;
6553               }
6554             else                /* all others */
6555               {
6556                 if (!number_is_in_list (args, b->number))
6557                   continue;
6558               }
6559           }
6560         /* We only print out user settable breakpoints unless the
6561            allflag is set.  */
6562         if (allflag || user_breakpoint_p (b))
6563           print_one_breakpoint (b, &last_loc, allflag);
6564       }
6565   }
6566
6567   if (nr_printable_breakpoints == 0)
6568     {
6569       /* If there's a filter, let the caller decide how to report
6570          empty list.  */
6571       if (!filter)
6572         {
6573           if (args == NULL || *args == '\0')
6574             uiout->message ("No breakpoints or watchpoints.\n");
6575           else
6576             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6577                             args);
6578         }
6579     }
6580   else
6581     {
6582       if (last_loc && !server_command)
6583         set_next_address (last_loc->gdbarch, last_loc->address);
6584     }
6585
6586   /* FIXME?  Should this be moved up so that it is only called when
6587      there have been breakpoints? */
6588   annotate_breakpoints_table_end ();
6589
6590   return nr_printable_breakpoints;
6591 }
6592
6593 /* Display the value of default-collect in a way that is generally
6594    compatible with the breakpoint list.  */
6595
6596 static void
6597 default_collect_info (void)
6598 {
6599   struct ui_out *uiout = current_uiout;
6600
6601   /* If it has no value (which is frequently the case), say nothing; a
6602      message like "No default-collect." gets in user's face when it's
6603      not wanted.  */
6604   if (!*default_collect)
6605     return;
6606
6607   /* The following phrase lines up nicely with per-tracepoint collect
6608      actions.  */
6609   uiout->text ("default collect ");
6610   uiout->field_string ("default-collect", default_collect);
6611   uiout->text (" \n");
6612 }
6613   
6614 static void
6615 info_breakpoints_command (const char *args, int from_tty)
6616 {
6617   breakpoint_1 (args, 0, NULL);
6618
6619   default_collect_info ();
6620 }
6621
6622 static void
6623 info_watchpoints_command (const char *args, int from_tty)
6624 {
6625   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6626   struct ui_out *uiout = current_uiout;
6627
6628   if (num_printed == 0)
6629     {
6630       if (args == NULL || *args == '\0')
6631         uiout->message ("No watchpoints.\n");
6632       else
6633         uiout->message ("No watchpoint matching '%s'.\n", args);
6634     }
6635 }
6636
6637 static void
6638 maintenance_info_breakpoints (const char *args, int from_tty)
6639 {
6640   breakpoint_1 (args, 1, NULL);
6641
6642   default_collect_info ();
6643 }
6644
6645 static int
6646 breakpoint_has_pc (struct breakpoint *b,
6647                    struct program_space *pspace,
6648                    CORE_ADDR pc, struct obj_section *section)
6649 {
6650   struct bp_location *bl = b->loc;
6651
6652   for (; bl; bl = bl->next)
6653     {
6654       if (bl->pspace == pspace
6655           && bl->address == pc
6656           && (!overlay_debugging || bl->section == section))
6657         return 1;         
6658     }
6659   return 0;
6660 }
6661
6662 /* Print a message describing any user-breakpoints set at PC.  This
6663    concerns with logical breakpoints, so we match program spaces, not
6664    address spaces.  */
6665
6666 static void
6667 describe_other_breakpoints (struct gdbarch *gdbarch,
6668                             struct program_space *pspace, CORE_ADDR pc,
6669                             struct obj_section *section, int thread)
6670 {
6671   int others = 0;
6672   struct breakpoint *b;
6673
6674   ALL_BREAKPOINTS (b)
6675     others += (user_breakpoint_p (b)
6676                && breakpoint_has_pc (b, pspace, pc, section));
6677   if (others > 0)
6678     {
6679       if (others == 1)
6680         printf_filtered (_("Note: breakpoint "));
6681       else /* if (others == ???) */
6682         printf_filtered (_("Note: breakpoints "));
6683       ALL_BREAKPOINTS (b)
6684         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6685           {
6686             others--;
6687             printf_filtered ("%d", b->number);
6688             if (b->thread == -1 && thread != -1)
6689               printf_filtered (" (all threads)");
6690             else if (b->thread != -1)
6691               printf_filtered (" (thread %d)", b->thread);
6692             printf_filtered ("%s%s ",
6693                              ((b->enable_state == bp_disabled
6694                                || b->enable_state == bp_call_disabled)
6695                               ? " (disabled)"
6696                               : ""),
6697                              (others > 1) ? "," 
6698                              : ((others == 1) ? " and" : ""));
6699           }
6700       printf_filtered (_("also set at pc "));
6701       fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6702       printf_filtered (".\n");
6703     }
6704 }
6705 \f
6706
6707 /* Return true iff it is meaningful to use the address member of
6708    BPT locations.  For some breakpoint types, the locations' address members
6709    are irrelevant and it makes no sense to attempt to compare them to other
6710    addresses (or use them for any other purpose either).
6711
6712    More specifically, each of the following breakpoint types will
6713    always have a zero valued location address and we don't want to mark
6714    breakpoints of any of these types to be a duplicate of an actual
6715    breakpoint location at address zero:
6716
6717       bp_watchpoint
6718       bp_catchpoint
6719
6720 */
6721
6722 static int
6723 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6724 {
6725   enum bptype type = bpt->type;
6726
6727   return (type != bp_watchpoint && type != bp_catchpoint);
6728 }
6729
6730 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6731    true if LOC1 and LOC2 represent the same watchpoint location.  */
6732
6733 static int
6734 watchpoint_locations_match (struct bp_location *loc1, 
6735                             struct bp_location *loc2)
6736 {
6737   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6738   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6739
6740   /* Both of them must exist.  */
6741   gdb_assert (w1 != NULL);
6742   gdb_assert (w2 != NULL);
6743
6744   /* If the target can evaluate the condition expression in hardware,
6745      then we we need to insert both watchpoints even if they are at
6746      the same place.  Otherwise the watchpoint will only trigger when
6747      the condition of whichever watchpoint was inserted evaluates to
6748      true, not giving a chance for GDB to check the condition of the
6749      other watchpoint.  */
6750   if ((w1->cond_exp
6751        && target_can_accel_watchpoint_condition (loc1->address, 
6752                                                  loc1->length,
6753                                                  loc1->watchpoint_type,
6754                                                  w1->cond_exp.get ()))
6755       || (w2->cond_exp
6756           && target_can_accel_watchpoint_condition (loc2->address, 
6757                                                     loc2->length,
6758                                                     loc2->watchpoint_type,
6759                                                     w2->cond_exp.get ())))
6760     return 0;
6761
6762   /* Note that this checks the owner's type, not the location's.  In
6763      case the target does not support read watchpoints, but does
6764      support access watchpoints, we'll have bp_read_watchpoint
6765      watchpoints with hw_access locations.  Those should be considered
6766      duplicates of hw_read locations.  The hw_read locations will
6767      become hw_access locations later.  */
6768   return (loc1->owner->type == loc2->owner->type
6769           && loc1->pspace->aspace == loc2->pspace->aspace
6770           && loc1->address == loc2->address
6771           && loc1->length == loc2->length);
6772 }
6773
6774 /* See breakpoint.h.  */
6775
6776 int
6777 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6778                           const address_space *aspace2, CORE_ADDR addr2)
6779 {
6780   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6781            || aspace1 == aspace2)
6782           && addr1 == addr2);
6783 }
6784
6785 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6786    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6787    matches ASPACE2.  On targets that have global breakpoints, the address
6788    space doesn't really matter.  */
6789
6790 static int
6791 breakpoint_address_match_range (const address_space *aspace1,
6792                                 CORE_ADDR addr1,
6793                                 int len1, const address_space *aspace2,
6794                                 CORE_ADDR addr2)
6795 {
6796   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6797            || aspace1 == aspace2)
6798           && addr2 >= addr1 && addr2 < addr1 + len1);
6799 }
6800
6801 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6802    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6803    matches the breakpoint's address space.  On targets that have global
6804    breakpoints, the address space doesn't really matter.  */
6805
6806 static int
6807 breakpoint_location_address_match (struct bp_location *bl,
6808                                    const address_space *aspace,
6809                                    CORE_ADDR addr)
6810 {
6811   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6812                                     aspace, addr)
6813           || (bl->length
6814               && breakpoint_address_match_range (bl->pspace->aspace,
6815                                                  bl->address, bl->length,
6816                                                  aspace, addr)));
6817 }
6818
6819 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6820    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6821    match happens only if ASPACE matches the breakpoint's address
6822    space.  On targets that have global breakpoints, the address space
6823    doesn't really matter.  */
6824
6825 static int
6826 breakpoint_location_address_range_overlap (struct bp_location *bl,
6827                                            const address_space *aspace,
6828                                            CORE_ADDR addr, int len)
6829 {
6830   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6831       || bl->pspace->aspace == aspace)
6832     {
6833       int bl_len = bl->length != 0 ? bl->length : 1;
6834
6835       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6836         return 1;
6837     }
6838   return 0;
6839 }
6840
6841 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6842    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6843    true, otherwise returns false.  */
6844
6845 static int
6846 tracepoint_locations_match (struct bp_location *loc1,
6847                             struct bp_location *loc2)
6848 {
6849   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6850     /* Since tracepoint locations are never duplicated with others', tracepoint
6851        locations at the same address of different tracepoints are regarded as
6852        different locations.  */
6853     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6854   else
6855     return 0;
6856 }
6857
6858 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6859    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6860    represent the same location.  */
6861
6862 static int
6863 breakpoint_locations_match (struct bp_location *loc1, 
6864                             struct bp_location *loc2)
6865 {
6866   int hw_point1, hw_point2;
6867
6868   /* Both of them must not be in moribund_locations.  */
6869   gdb_assert (loc1->owner != NULL);
6870   gdb_assert (loc2->owner != NULL);
6871
6872   hw_point1 = is_hardware_watchpoint (loc1->owner);
6873   hw_point2 = is_hardware_watchpoint (loc2->owner);
6874
6875   if (hw_point1 != hw_point2)
6876     return 0;
6877   else if (hw_point1)
6878     return watchpoint_locations_match (loc1, loc2);
6879   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6880     return tracepoint_locations_match (loc1, loc2);
6881   else
6882     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6883     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6884                                      loc2->pspace->aspace, loc2->address)
6885             && loc1->length == loc2->length);
6886 }
6887
6888 static void
6889 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6890                                int bnum, int have_bnum)
6891 {
6892   /* The longest string possibly returned by hex_string_custom
6893      is 50 chars.  These must be at least that big for safety.  */
6894   char astr1[64];
6895   char astr2[64];
6896
6897   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6898   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6899   if (have_bnum)
6900     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6901              bnum, astr1, astr2);
6902   else
6903     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6904 }
6905
6906 /* Adjust a breakpoint's address to account for architectural
6907    constraints on breakpoint placement.  Return the adjusted address.
6908    Note: Very few targets require this kind of adjustment.  For most
6909    targets, this function is simply the identity function.  */
6910
6911 static CORE_ADDR
6912 adjust_breakpoint_address (struct gdbarch *gdbarch,
6913                            CORE_ADDR bpaddr, enum bptype bptype)
6914 {
6915   if (bptype == bp_watchpoint
6916       || bptype == bp_hardware_watchpoint
6917       || bptype == bp_read_watchpoint
6918       || bptype == bp_access_watchpoint
6919       || bptype == bp_catchpoint)
6920     {
6921       /* Watchpoints and the various bp_catch_* eventpoints should not
6922          have their addresses modified.  */
6923       return bpaddr;
6924     }
6925   else if (bptype == bp_single_step)
6926     {
6927       /* Single-step breakpoints should not have their addresses
6928          modified.  If there's any architectural constrain that
6929          applies to this address, then it should have already been
6930          taken into account when the breakpoint was created in the
6931          first place.  If we didn't do this, stepping through e.g.,
6932          Thumb-2 IT blocks would break.  */
6933       return bpaddr;
6934     }
6935   else
6936     {
6937       CORE_ADDR adjusted_bpaddr = bpaddr;
6938
6939       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6940         {
6941           /* Some targets have architectural constraints on the placement
6942              of breakpoint instructions.  Obtain the adjusted address.  */
6943           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6944         }
6945
6946       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6947
6948       /* An adjusted breakpoint address can significantly alter
6949          a user's expectations.  Print a warning if an adjustment
6950          is required.  */
6951       if (adjusted_bpaddr != bpaddr)
6952         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6953
6954       return adjusted_bpaddr;
6955     }
6956 }
6957
6958 bp_location::bp_location (breakpoint *owner)
6959 {
6960   bp_location *loc = this;
6961
6962   loc->owner = owner;
6963   loc->cond_bytecode = NULL;
6964   loc->shlib_disabled = 0;
6965   loc->enabled = 1;
6966
6967   switch (owner->type)
6968     {
6969     case bp_breakpoint:
6970     case bp_single_step:
6971     case bp_until:
6972     case bp_finish:
6973     case bp_longjmp:
6974     case bp_longjmp_resume:
6975     case bp_longjmp_call_dummy:
6976     case bp_exception:
6977     case bp_exception_resume:
6978     case bp_step_resume:
6979     case bp_hp_step_resume:
6980     case bp_watchpoint_scope:
6981     case bp_call_dummy:
6982     case bp_std_terminate:
6983     case bp_shlib_event:
6984     case bp_thread_event:
6985     case bp_overlay_event:
6986     case bp_jit_event:
6987     case bp_longjmp_master:
6988     case bp_std_terminate_master:
6989     case bp_exception_master:
6990     case bp_gnu_ifunc_resolver:
6991     case bp_gnu_ifunc_resolver_return:
6992     case bp_dprintf:
6993       loc->loc_type = bp_loc_software_breakpoint;
6994       mark_breakpoint_location_modified (loc);
6995       break;
6996     case bp_hardware_breakpoint:
6997       loc->loc_type = bp_loc_hardware_breakpoint;
6998       mark_breakpoint_location_modified (loc);
6999       break;
7000     case bp_hardware_watchpoint:
7001     case bp_read_watchpoint:
7002     case bp_access_watchpoint:
7003       loc->loc_type = bp_loc_hardware_watchpoint;
7004       break;
7005     case bp_watchpoint:
7006     case bp_catchpoint:
7007     case bp_tracepoint:
7008     case bp_fast_tracepoint:
7009     case bp_static_tracepoint:
7010       loc->loc_type = bp_loc_other;
7011       break;
7012     default:
7013       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7014     }
7015
7016   loc->refc = 1;
7017 }
7018
7019 /* Allocate a struct bp_location.  */
7020
7021 static struct bp_location *
7022 allocate_bp_location (struct breakpoint *bpt)
7023 {
7024   return bpt->ops->allocate_location (bpt);
7025 }
7026
7027 static void
7028 free_bp_location (struct bp_location *loc)
7029 {
7030   delete loc;
7031 }
7032
7033 /* Increment reference count.  */
7034
7035 static void
7036 incref_bp_location (struct bp_location *bl)
7037 {
7038   ++bl->refc;
7039 }
7040
7041 /* Decrement reference count.  If the reference count reaches 0,
7042    destroy the bp_location.  Sets *BLP to NULL.  */
7043
7044 static void
7045 decref_bp_location (struct bp_location **blp)
7046 {
7047   gdb_assert ((*blp)->refc > 0);
7048
7049   if (--(*blp)->refc == 0)
7050     free_bp_location (*blp);
7051   *blp = NULL;
7052 }
7053
7054 /* Add breakpoint B at the end of the global breakpoint chain.  */
7055
7056 static breakpoint *
7057 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7058 {
7059   struct breakpoint *b1;
7060   struct breakpoint *result = b.get ();
7061
7062   /* Add this breakpoint to the end of the chain so that a list of
7063      breakpoints will come out in order of increasing numbers.  */
7064
7065   b1 = breakpoint_chain;
7066   if (b1 == 0)
7067     breakpoint_chain = b.release ();
7068   else
7069     {
7070       while (b1->next)
7071         b1 = b1->next;
7072       b1->next = b.release ();
7073     }
7074
7075   return result;
7076 }
7077
7078 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7079
7080 static void
7081 init_raw_breakpoint_without_location (struct breakpoint *b,
7082                                       struct gdbarch *gdbarch,
7083                                       enum bptype bptype,
7084                                       const struct breakpoint_ops *ops)
7085 {
7086   gdb_assert (ops != NULL);
7087
7088   b->ops = ops;
7089   b->type = bptype;
7090   b->gdbarch = gdbarch;
7091   b->language = current_language->la_language;
7092   b->input_radix = input_radix;
7093   b->related_breakpoint = b;
7094 }
7095
7096 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7097    that has type BPTYPE and has no locations as yet.  */
7098
7099 static struct breakpoint *
7100 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7101                                      enum bptype bptype,
7102                                      const struct breakpoint_ops *ops)
7103 {
7104   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7105
7106   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7107   return add_to_breakpoint_chain (std::move (b));
7108 }
7109
7110 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7111    resolutions should be made as the user specified the location explicitly
7112    enough.  */
7113
7114 static void
7115 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7116 {
7117   gdb_assert (loc->owner != NULL);
7118
7119   if (loc->owner->type == bp_breakpoint
7120       || loc->owner->type == bp_hardware_breakpoint
7121       || is_tracepoint (loc->owner))
7122     {
7123       const char *function_name;
7124
7125       if (loc->msymbol != NULL
7126           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7127               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
7128           && !explicit_loc)
7129         {
7130           struct breakpoint *b = loc->owner;
7131
7132           function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7133
7134           if (b->type == bp_breakpoint && b->loc == loc
7135               && loc->next == NULL && b->related_breakpoint == b)
7136             {
7137               /* Create only the whole new breakpoint of this type but do not
7138                  mess more complicated breakpoints with multiple locations.  */
7139               b->type = bp_gnu_ifunc_resolver;
7140               /* Remember the resolver's address for use by the return
7141                  breakpoint.  */
7142               loc->related_address = loc->address;
7143             }
7144         }
7145       else
7146         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7147
7148       if (function_name)
7149         loc->function_name = xstrdup (function_name);
7150     }
7151 }
7152
7153 /* Attempt to determine architecture of location identified by SAL.  */
7154 struct gdbarch *
7155 get_sal_arch (struct symtab_and_line sal)
7156 {
7157   if (sal.section)
7158     return get_objfile_arch (sal.section->objfile);
7159   if (sal.symtab)
7160     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7161
7162   return NULL;
7163 }
7164
7165 /* Low level routine for partially initializing a breakpoint of type
7166    BPTYPE.  The newly created breakpoint's address, section, source
7167    file name, and line number are provided by SAL.
7168
7169    It is expected that the caller will complete the initialization of
7170    the newly created breakpoint struct as well as output any status
7171    information regarding the creation of a new breakpoint.  */
7172
7173 static void
7174 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7175                      struct symtab_and_line sal, enum bptype bptype,
7176                      const struct breakpoint_ops *ops)
7177 {
7178   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7179
7180   add_location_to_breakpoint (b, &sal);
7181
7182   if (bptype != bp_catchpoint)
7183     gdb_assert (sal.pspace != NULL);
7184
7185   /* Store the program space that was used to set the breakpoint,
7186      except for ordinary breakpoints, which are independent of the
7187      program space.  */
7188   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7189     b->pspace = sal.pspace;
7190 }
7191
7192 /* set_raw_breakpoint is a low level routine for allocating and
7193    partially initializing a breakpoint of type BPTYPE.  The newly
7194    created breakpoint's address, section, source file name, and line
7195    number are provided by SAL.  The newly created and partially
7196    initialized breakpoint is added to the breakpoint chain and
7197    is also returned as the value of this function.
7198
7199    It is expected that the caller will complete the initialization of
7200    the newly created breakpoint struct as well as output any status
7201    information regarding the creation of a new breakpoint.  In
7202    particular, set_raw_breakpoint does NOT set the breakpoint
7203    number!  Care should be taken to not allow an error to occur
7204    prior to completing the initialization of the breakpoint.  If this
7205    should happen, a bogus breakpoint will be left on the chain.  */
7206
7207 struct breakpoint *
7208 set_raw_breakpoint (struct gdbarch *gdbarch,
7209                     struct symtab_and_line sal, enum bptype bptype,
7210                     const struct breakpoint_ops *ops)
7211 {
7212   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7213
7214   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7215   return add_to_breakpoint_chain (std::move (b));
7216 }
7217
7218 /* Call this routine when stepping and nexting to enable a breakpoint
7219    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7220    initiated the operation.  */
7221
7222 void
7223 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7224 {
7225   struct breakpoint *b, *b_tmp;
7226   int thread = tp->global_num;
7227
7228   /* To avoid having to rescan all objfile symbols at every step,
7229      we maintain a list of continually-inserted but always disabled
7230      longjmp "master" breakpoints.  Here, we simply create momentary
7231      clones of those and enable them for the requested thread.  */
7232   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7233     if (b->pspace == current_program_space
7234         && (b->type == bp_longjmp_master
7235             || b->type == bp_exception_master))
7236       {
7237         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7238         struct breakpoint *clone;
7239
7240         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7241            after their removal.  */
7242         clone = momentary_breakpoint_from_master (b, type,
7243                                                   &momentary_breakpoint_ops, 1);
7244         clone->thread = thread;
7245       }
7246
7247   tp->initiating_frame = frame;
7248 }
7249
7250 /* Delete all longjmp breakpoints from THREAD.  */
7251 void
7252 delete_longjmp_breakpoint (int thread)
7253 {
7254   struct breakpoint *b, *b_tmp;
7255
7256   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7257     if (b->type == bp_longjmp || b->type == bp_exception)
7258       {
7259         if (b->thread == thread)
7260           delete_breakpoint (b);
7261       }
7262 }
7263
7264 void
7265 delete_longjmp_breakpoint_at_next_stop (int thread)
7266 {
7267   struct breakpoint *b, *b_tmp;
7268
7269   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7270     if (b->type == bp_longjmp || b->type == bp_exception)
7271       {
7272         if (b->thread == thread)
7273           b->disposition = disp_del_at_next_stop;
7274       }
7275 }
7276
7277 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7278    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7279    pointer to any of them.  Return NULL if this system cannot place longjmp
7280    breakpoints.  */
7281
7282 struct breakpoint *
7283 set_longjmp_breakpoint_for_call_dummy (void)
7284 {
7285   struct breakpoint *b, *retval = NULL;
7286
7287   ALL_BREAKPOINTS (b)
7288     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7289       {
7290         struct breakpoint *new_b;
7291
7292         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7293                                                   &momentary_breakpoint_ops,
7294                                                   1);
7295         new_b->thread = inferior_thread ()->global_num;
7296
7297         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7298
7299         gdb_assert (new_b->related_breakpoint == new_b);
7300         if (retval == NULL)
7301           retval = new_b;
7302         new_b->related_breakpoint = retval;
7303         while (retval->related_breakpoint != new_b->related_breakpoint)
7304           retval = retval->related_breakpoint;
7305         retval->related_breakpoint = new_b;
7306       }
7307
7308   return retval;
7309 }
7310
7311 /* Verify all existing dummy frames and their associated breakpoints for
7312    TP.  Remove those which can no longer be found in the current frame
7313    stack.
7314
7315    You should call this function only at places where it is safe to currently
7316    unwind the whole stack.  Failed stack unwind would discard live dummy
7317    frames.  */
7318
7319 void
7320 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7321 {
7322   struct breakpoint *b, *b_tmp;
7323
7324   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7325     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7326       {
7327         struct breakpoint *dummy_b = b->related_breakpoint;
7328
7329         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7330           dummy_b = dummy_b->related_breakpoint;
7331         if (dummy_b->type != bp_call_dummy
7332             || frame_find_by_id (dummy_b->frame_id) != NULL)
7333           continue;
7334         
7335         dummy_frame_discard (dummy_b->frame_id, tp);
7336
7337         while (b->related_breakpoint != b)
7338           {
7339             if (b_tmp == b->related_breakpoint)
7340               b_tmp = b->related_breakpoint->next;
7341             delete_breakpoint (b->related_breakpoint);
7342           }
7343         delete_breakpoint (b);
7344       }
7345 }
7346
7347 void
7348 enable_overlay_breakpoints (void)
7349 {
7350   struct breakpoint *b;
7351
7352   ALL_BREAKPOINTS (b)
7353     if (b->type == bp_overlay_event)
7354     {
7355       b->enable_state = bp_enabled;
7356       update_global_location_list (UGLL_MAY_INSERT);
7357       overlay_events_enabled = 1;
7358     }
7359 }
7360
7361 void
7362 disable_overlay_breakpoints (void)
7363 {
7364   struct breakpoint *b;
7365
7366   ALL_BREAKPOINTS (b)
7367     if (b->type == bp_overlay_event)
7368     {
7369       b->enable_state = bp_disabled;
7370       update_global_location_list (UGLL_DONT_INSERT);
7371       overlay_events_enabled = 0;
7372     }
7373 }
7374
7375 /* Set an active std::terminate breakpoint for each std::terminate
7376    master breakpoint.  */
7377 void
7378 set_std_terminate_breakpoint (void)
7379 {
7380   struct breakpoint *b, *b_tmp;
7381
7382   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7383     if (b->pspace == current_program_space
7384         && b->type == bp_std_terminate_master)
7385       {
7386         momentary_breakpoint_from_master (b, bp_std_terminate,
7387                                           &momentary_breakpoint_ops, 1);
7388       }
7389 }
7390
7391 /* Delete all the std::terminate breakpoints.  */
7392 void
7393 delete_std_terminate_breakpoint (void)
7394 {
7395   struct breakpoint *b, *b_tmp;
7396
7397   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7398     if (b->type == bp_std_terminate)
7399       delete_breakpoint (b);
7400 }
7401
7402 struct breakpoint *
7403 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7404 {
7405   struct breakpoint *b;
7406
7407   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7408                                   &internal_breakpoint_ops);
7409
7410   b->enable_state = bp_enabled;
7411   /* location has to be used or breakpoint_re_set will delete me.  */
7412   b->location = new_address_location (b->loc->address, NULL, 0);
7413
7414   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7415
7416   return b;
7417 }
7418
7419 struct lang_and_radix
7420   {
7421     enum language lang;
7422     int radix;
7423   };
7424
7425 /* Create a breakpoint for JIT code registration and unregistration.  */
7426
7427 struct breakpoint *
7428 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7429 {
7430   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7431                                      &internal_breakpoint_ops);
7432 }
7433
7434 /* Remove JIT code registration and unregistration breakpoint(s).  */
7435
7436 void
7437 remove_jit_event_breakpoints (void)
7438 {
7439   struct breakpoint *b, *b_tmp;
7440
7441   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7442     if (b->type == bp_jit_event
7443         && b->loc->pspace == current_program_space)
7444       delete_breakpoint (b);
7445 }
7446
7447 void
7448 remove_solib_event_breakpoints (void)
7449 {
7450   struct breakpoint *b, *b_tmp;
7451
7452   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7453     if (b->type == bp_shlib_event
7454         && b->loc->pspace == current_program_space)
7455       delete_breakpoint (b);
7456 }
7457
7458 /* See breakpoint.h.  */
7459
7460 void
7461 remove_solib_event_breakpoints_at_next_stop (void)
7462 {
7463   struct breakpoint *b, *b_tmp;
7464
7465   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7466     if (b->type == bp_shlib_event
7467         && b->loc->pspace == current_program_space)
7468       b->disposition = disp_del_at_next_stop;
7469 }
7470
7471 /* Helper for create_solib_event_breakpoint /
7472    create_and_insert_solib_event_breakpoint.  Allows specifying which
7473    INSERT_MODE to pass through to update_global_location_list.  */
7474
7475 static struct breakpoint *
7476 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7477                                  enum ugll_insert_mode insert_mode)
7478 {
7479   struct breakpoint *b;
7480
7481   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7482                                   &internal_breakpoint_ops);
7483   update_global_location_list_nothrow (insert_mode);
7484   return b;
7485 }
7486
7487 struct breakpoint *
7488 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7489 {
7490   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7491 }
7492
7493 /* See breakpoint.h.  */
7494
7495 struct breakpoint *
7496 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7497 {
7498   struct breakpoint *b;
7499
7500   /* Explicitly tell update_global_location_list to insert
7501      locations.  */
7502   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7503   if (!b->loc->inserted)
7504     {
7505       delete_breakpoint (b);
7506       return NULL;
7507     }
7508   return b;
7509 }
7510
7511 /* Disable any breakpoints that are on code in shared libraries.  Only
7512    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7513
7514 void
7515 disable_breakpoints_in_shlibs (void)
7516 {
7517   struct bp_location *loc, **locp_tmp;
7518
7519   ALL_BP_LOCATIONS (loc, locp_tmp)
7520   {
7521     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7522     struct breakpoint *b = loc->owner;
7523
7524     /* We apply the check to all breakpoints, including disabled for
7525        those with loc->duplicate set.  This is so that when breakpoint
7526        becomes enabled, or the duplicate is removed, gdb will try to
7527        insert all breakpoints.  If we don't set shlib_disabled here,
7528        we'll try to insert those breakpoints and fail.  */
7529     if (((b->type == bp_breakpoint)
7530          || (b->type == bp_jit_event)
7531          || (b->type == bp_hardware_breakpoint)
7532          || (is_tracepoint (b)))
7533         && loc->pspace == current_program_space
7534         && !loc->shlib_disabled
7535         && solib_name_from_address (loc->pspace, loc->address)
7536         )
7537       {
7538         loc->shlib_disabled = 1;
7539       }
7540   }
7541 }
7542
7543 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7544    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7545    disabled ones can just stay disabled.  */
7546
7547 static void
7548 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7549 {
7550   struct bp_location *loc, **locp_tmp;
7551   int disabled_shlib_breaks = 0;
7552
7553   ALL_BP_LOCATIONS (loc, locp_tmp)
7554   {
7555     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7556     struct breakpoint *b = loc->owner;
7557
7558     if (solib->pspace == loc->pspace
7559         && !loc->shlib_disabled
7560         && (((b->type == bp_breakpoint
7561               || b->type == bp_jit_event
7562               || b->type == bp_hardware_breakpoint)
7563              && (loc->loc_type == bp_loc_hardware_breakpoint
7564                  || loc->loc_type == bp_loc_software_breakpoint))
7565             || is_tracepoint (b))
7566         && solib_contains_address_p (solib, loc->address))
7567       {
7568         loc->shlib_disabled = 1;
7569         /* At this point, we cannot rely on remove_breakpoint
7570            succeeding so we must mark the breakpoint as not inserted
7571            to prevent future errors occurring in remove_breakpoints.  */
7572         loc->inserted = 0;
7573
7574         /* This may cause duplicate notifications for the same breakpoint.  */
7575         gdb::observers::breakpoint_modified.notify (b);
7576
7577         if (!disabled_shlib_breaks)
7578           {
7579             target_terminal::ours_for_output ();
7580             warning (_("Temporarily disabling breakpoints "
7581                        "for unloaded shared library \"%s\""),
7582                      solib->so_name);
7583           }
7584         disabled_shlib_breaks = 1;
7585       }
7586   }
7587 }
7588
7589 /* Disable any breakpoints and tracepoints in OBJFILE upon
7590    notification of free_objfile.  Only apply to enabled breakpoints,
7591    disabled ones can just stay disabled.  */
7592
7593 static void
7594 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7595 {
7596   struct breakpoint *b;
7597
7598   if (objfile == NULL)
7599     return;
7600
7601   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7602      managed by the user with add-symbol-file/remove-symbol-file.
7603      Similarly to how breakpoints in shared libraries are handled in
7604      response to "nosharedlibrary", mark breakpoints in such modules
7605      shlib_disabled so they end up uninserted on the next global
7606      location list update.  Shared libraries not loaded by the user
7607      aren't handled here -- they're already handled in
7608      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7609      solib_unloaded observer.  We skip objfiles that are not
7610      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7611      main objfile).  */
7612   if ((objfile->flags & OBJF_SHARED) == 0
7613       || (objfile->flags & OBJF_USERLOADED) == 0)
7614     return;
7615
7616   ALL_BREAKPOINTS (b)
7617     {
7618       struct bp_location *loc;
7619       int bp_modified = 0;
7620
7621       if (!is_breakpoint (b) && !is_tracepoint (b))
7622         continue;
7623
7624       for (loc = b->loc; loc != NULL; loc = loc->next)
7625         {
7626           CORE_ADDR loc_addr = loc->address;
7627
7628           if (loc->loc_type != bp_loc_hardware_breakpoint
7629               && loc->loc_type != bp_loc_software_breakpoint)
7630             continue;
7631
7632           if (loc->shlib_disabled != 0)
7633             continue;
7634
7635           if (objfile->pspace != loc->pspace)
7636             continue;
7637
7638           if (loc->loc_type != bp_loc_hardware_breakpoint
7639               && loc->loc_type != bp_loc_software_breakpoint)
7640             continue;
7641
7642           if (is_addr_in_objfile (loc_addr, objfile))
7643             {
7644               loc->shlib_disabled = 1;
7645               /* At this point, we don't know whether the object was
7646                  unmapped from the inferior or not, so leave the
7647                  inserted flag alone.  We'll handle failure to
7648                  uninsert quietly, in case the object was indeed
7649                  unmapped.  */
7650
7651               mark_breakpoint_location_modified (loc);
7652
7653               bp_modified = 1;
7654             }
7655         }
7656
7657       if (bp_modified)
7658         gdb::observers::breakpoint_modified.notify (b);
7659     }
7660 }
7661
7662 /* FORK & VFORK catchpoints.  */
7663
7664 /* An instance of this type is used to represent a fork or vfork
7665    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7666    to CATCH_FORK_BREAKPOINT_OPS.  */
7667
7668 struct fork_catchpoint : public breakpoint
7669 {
7670   /* Process id of a child process whose forking triggered this
7671      catchpoint.  This field is only valid immediately after this
7672      catchpoint has triggered.  */
7673   ptid_t forked_inferior_pid;
7674 };
7675
7676 /* Implement the "insert" breakpoint_ops method for fork
7677    catchpoints.  */
7678
7679 static int
7680 insert_catch_fork (struct bp_location *bl)
7681 {
7682   return target_insert_fork_catchpoint (inferior_ptid.pid ());
7683 }
7684
7685 /* Implement the "remove" breakpoint_ops method for fork
7686    catchpoints.  */
7687
7688 static int
7689 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7690 {
7691   return target_remove_fork_catchpoint (inferior_ptid.pid ());
7692 }
7693
7694 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7695    catchpoints.  */
7696
7697 static int
7698 breakpoint_hit_catch_fork (const struct bp_location *bl,
7699                            const address_space *aspace, CORE_ADDR bp_addr,
7700                            const struct target_waitstatus *ws)
7701 {
7702   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7703
7704   if (ws->kind != TARGET_WAITKIND_FORKED)
7705     return 0;
7706
7707   c->forked_inferior_pid = ws->value.related_pid;
7708   return 1;
7709 }
7710
7711 /* Implement the "print_it" breakpoint_ops method for fork
7712    catchpoints.  */
7713
7714 static enum print_stop_action
7715 print_it_catch_fork (bpstat bs)
7716 {
7717   struct ui_out *uiout = current_uiout;
7718   struct breakpoint *b = bs->breakpoint_at;
7719   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7720
7721   annotate_catchpoint (b->number);
7722   maybe_print_thread_hit_breakpoint (uiout);
7723   if (b->disposition == disp_del)
7724     uiout->text ("Temporary catchpoint ");
7725   else
7726     uiout->text ("Catchpoint ");
7727   if (uiout->is_mi_like_p ())
7728     {
7729       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7730       uiout->field_string ("disp", bpdisp_text (b->disposition));
7731     }
7732   uiout->field_int ("bkptno", b->number);
7733   uiout->text (" (forked process ");
7734   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7735   uiout->text ("), ");
7736   return PRINT_SRC_AND_LOC;
7737 }
7738
7739 /* Implement the "print_one" breakpoint_ops method for fork
7740    catchpoints.  */
7741
7742 static void
7743 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7744 {
7745   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7746   struct value_print_options opts;
7747   struct ui_out *uiout = current_uiout;
7748
7749   get_user_print_options (&opts);
7750
7751   /* Field 4, the address, is omitted (which makes the columns not
7752      line up too nicely with the headers, but the effect is relatively
7753      readable).  */
7754   if (opts.addressprint)
7755     uiout->field_skip ("addr");
7756   annotate_field (5);
7757   uiout->text ("fork");
7758   if (c->forked_inferior_pid != null_ptid)
7759     {
7760       uiout->text (", process ");
7761       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7762       uiout->spaces (1);
7763     }
7764
7765   if (uiout->is_mi_like_p ())
7766     uiout->field_string ("catch-type", "fork");
7767 }
7768
7769 /* Implement the "print_mention" breakpoint_ops method for fork
7770    catchpoints.  */
7771
7772 static void
7773 print_mention_catch_fork (struct breakpoint *b)
7774 {
7775   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7776 }
7777
7778 /* Implement the "print_recreate" breakpoint_ops method for fork
7779    catchpoints.  */
7780
7781 static void
7782 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7783 {
7784   fprintf_unfiltered (fp, "catch fork");
7785   print_recreate_thread (b, fp);
7786 }
7787
7788 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7789
7790 static struct breakpoint_ops catch_fork_breakpoint_ops;
7791
7792 /* Implement the "insert" breakpoint_ops method for vfork
7793    catchpoints.  */
7794
7795 static int
7796 insert_catch_vfork (struct bp_location *bl)
7797 {
7798   return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7799 }
7800
7801 /* Implement the "remove" breakpoint_ops method for vfork
7802    catchpoints.  */
7803
7804 static int
7805 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7806 {
7807   return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7808 }
7809
7810 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7811    catchpoints.  */
7812
7813 static int
7814 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7815                             const address_space *aspace, CORE_ADDR bp_addr,
7816                             const struct target_waitstatus *ws)
7817 {
7818   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7819
7820   if (ws->kind != TARGET_WAITKIND_VFORKED)
7821     return 0;
7822
7823   c->forked_inferior_pid = ws->value.related_pid;
7824   return 1;
7825 }
7826
7827 /* Implement the "print_it" breakpoint_ops method for vfork
7828    catchpoints.  */
7829
7830 static enum print_stop_action
7831 print_it_catch_vfork (bpstat bs)
7832 {
7833   struct ui_out *uiout = current_uiout;
7834   struct breakpoint *b = bs->breakpoint_at;
7835   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7836
7837   annotate_catchpoint (b->number);
7838   maybe_print_thread_hit_breakpoint (uiout);
7839   if (b->disposition == disp_del)
7840     uiout->text ("Temporary catchpoint ");
7841   else
7842     uiout->text ("Catchpoint ");
7843   if (uiout->is_mi_like_p ())
7844     {
7845       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7846       uiout->field_string ("disp", bpdisp_text (b->disposition));
7847     }
7848   uiout->field_int ("bkptno", b->number);
7849   uiout->text (" (vforked process ");
7850   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7851   uiout->text ("), ");
7852   return PRINT_SRC_AND_LOC;
7853 }
7854
7855 /* Implement the "print_one" breakpoint_ops method for vfork
7856    catchpoints.  */
7857
7858 static void
7859 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7860 {
7861   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7862   struct value_print_options opts;
7863   struct ui_out *uiout = current_uiout;
7864
7865   get_user_print_options (&opts);
7866   /* Field 4, the address, is omitted (which makes the columns not
7867      line up too nicely with the headers, but the effect is relatively
7868      readable).  */
7869   if (opts.addressprint)
7870     uiout->field_skip ("addr");
7871   annotate_field (5);
7872   uiout->text ("vfork");
7873   if (c->forked_inferior_pid != null_ptid)
7874     {
7875       uiout->text (", process ");
7876       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7877       uiout->spaces (1);
7878     }
7879
7880   if (uiout->is_mi_like_p ())
7881     uiout->field_string ("catch-type", "vfork");
7882 }
7883
7884 /* Implement the "print_mention" breakpoint_ops method for vfork
7885    catchpoints.  */
7886
7887 static void
7888 print_mention_catch_vfork (struct breakpoint *b)
7889 {
7890   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7891 }
7892
7893 /* Implement the "print_recreate" breakpoint_ops method for vfork
7894    catchpoints.  */
7895
7896 static void
7897 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7898 {
7899   fprintf_unfiltered (fp, "catch vfork");
7900   print_recreate_thread (b, fp);
7901 }
7902
7903 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7904
7905 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7906
7907 /* An instance of this type is used to represent an solib catchpoint.
7908    A breakpoint is really of this type iff its ops pointer points to
7909    CATCH_SOLIB_BREAKPOINT_OPS.  */
7910
7911 struct solib_catchpoint : public breakpoint
7912 {
7913   ~solib_catchpoint () override;
7914
7915   /* True for "catch load", false for "catch unload".  */
7916   unsigned char is_load;
7917
7918   /* Regular expression to match, if any.  COMPILED is only valid when
7919      REGEX is non-NULL.  */
7920   char *regex;
7921   std::unique_ptr<compiled_regex> compiled;
7922 };
7923
7924 solib_catchpoint::~solib_catchpoint ()
7925 {
7926   xfree (this->regex);
7927 }
7928
7929 static int
7930 insert_catch_solib (struct bp_location *ignore)
7931 {
7932   return 0;
7933 }
7934
7935 static int
7936 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7937 {
7938   return 0;
7939 }
7940
7941 static int
7942 breakpoint_hit_catch_solib (const struct bp_location *bl,
7943                             const address_space *aspace,
7944                             CORE_ADDR bp_addr,
7945                             const struct target_waitstatus *ws)
7946 {
7947   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7948   struct breakpoint *other;
7949
7950   if (ws->kind == TARGET_WAITKIND_LOADED)
7951     return 1;
7952
7953   ALL_BREAKPOINTS (other)
7954   {
7955     struct bp_location *other_bl;
7956
7957     if (other == bl->owner)
7958       continue;
7959
7960     if (other->type != bp_shlib_event)
7961       continue;
7962
7963     if (self->pspace != NULL && other->pspace != self->pspace)
7964       continue;
7965
7966     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7967       {
7968         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7969           return 1;
7970       }
7971   }
7972
7973   return 0;
7974 }
7975
7976 static void
7977 check_status_catch_solib (struct bpstats *bs)
7978 {
7979   struct solib_catchpoint *self
7980     = (struct solib_catchpoint *) bs->breakpoint_at;
7981
7982   if (self->is_load)
7983     {
7984       for (so_list *iter : current_program_space->added_solibs)
7985         {
7986           if (!self->regex
7987               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7988             return;
7989         }
7990     }
7991   else
7992     {
7993       for (const std::string &iter : current_program_space->deleted_solibs)
7994         {
7995           if (!self->regex
7996               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7997             return;
7998         }
7999     }
8000
8001   bs->stop = 0;
8002   bs->print_it = print_it_noop;
8003 }
8004
8005 static enum print_stop_action
8006 print_it_catch_solib (bpstat bs)
8007 {
8008   struct breakpoint *b = bs->breakpoint_at;
8009   struct ui_out *uiout = current_uiout;
8010
8011   annotate_catchpoint (b->number);
8012   maybe_print_thread_hit_breakpoint (uiout);
8013   if (b->disposition == disp_del)
8014     uiout->text ("Temporary catchpoint ");
8015   else
8016     uiout->text ("Catchpoint ");
8017   uiout->field_int ("bkptno", b->number);
8018   uiout->text ("\n");
8019   if (uiout->is_mi_like_p ())
8020     uiout->field_string ("disp", bpdisp_text (b->disposition));
8021   print_solib_event (1);
8022   return PRINT_SRC_AND_LOC;
8023 }
8024
8025 static void
8026 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8027 {
8028   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8029   struct value_print_options opts;
8030   struct ui_out *uiout = current_uiout;
8031
8032   get_user_print_options (&opts);
8033   /* Field 4, the address, is omitted (which makes the columns not
8034      line up too nicely with the headers, but the effect is relatively
8035      readable).  */
8036   if (opts.addressprint)
8037     {
8038       annotate_field (4);
8039       uiout->field_skip ("addr");
8040     }
8041
8042   std::string msg;
8043   annotate_field (5);
8044   if (self->is_load)
8045     {
8046       if (self->regex)
8047         msg = string_printf (_("load of library matching %s"), self->regex);
8048       else
8049         msg = _("load of library");
8050     }
8051   else
8052     {
8053       if (self->regex)
8054         msg = string_printf (_("unload of library matching %s"), self->regex);
8055       else
8056         msg = _("unload of library");
8057     }
8058   uiout->field_string ("what", msg);
8059
8060   if (uiout->is_mi_like_p ())
8061     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8062 }
8063
8064 static void
8065 print_mention_catch_solib (struct breakpoint *b)
8066 {
8067   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8068
8069   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8070                    self->is_load ? "load" : "unload");
8071 }
8072
8073 static void
8074 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8075 {
8076   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8077
8078   fprintf_unfiltered (fp, "%s %s",
8079                       b->disposition == disp_del ? "tcatch" : "catch",
8080                       self->is_load ? "load" : "unload");
8081   if (self->regex)
8082     fprintf_unfiltered (fp, " %s", self->regex);
8083   fprintf_unfiltered (fp, "\n");
8084 }
8085
8086 static struct breakpoint_ops catch_solib_breakpoint_ops;
8087
8088 /* Shared helper function (MI and CLI) for creating and installing
8089    a shared object event catchpoint.  If IS_LOAD is non-zero then
8090    the events to be caught are load events, otherwise they are
8091    unload events.  If IS_TEMP is non-zero the catchpoint is a
8092    temporary one.  If ENABLED is non-zero the catchpoint is
8093    created in an enabled state.  */
8094
8095 void
8096 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8097 {
8098   struct gdbarch *gdbarch = get_current_arch ();
8099
8100   if (!arg)
8101     arg = "";
8102   arg = skip_spaces (arg);
8103
8104   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8105
8106   if (*arg != '\0')
8107     {
8108       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8109                                              _("Invalid regexp")));
8110       c->regex = xstrdup (arg);
8111     }
8112
8113   c->is_load = is_load;
8114   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8115                    &catch_solib_breakpoint_ops);
8116
8117   c->enable_state = enabled ? bp_enabled : bp_disabled;
8118
8119   install_breakpoint (0, std::move (c), 1);
8120 }
8121
8122 /* A helper function that does all the work for "catch load" and
8123    "catch unload".  */
8124
8125 static void
8126 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8127                       struct cmd_list_element *command)
8128 {
8129   int tempflag;
8130   const int enabled = 1;
8131
8132   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8133
8134   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8135 }
8136
8137 static void
8138 catch_load_command_1 (const char *arg, int from_tty,
8139                       struct cmd_list_element *command)
8140 {
8141   catch_load_or_unload (arg, from_tty, 1, command);
8142 }
8143
8144 static void
8145 catch_unload_command_1 (const char *arg, int from_tty,
8146                         struct cmd_list_element *command)
8147 {
8148   catch_load_or_unload (arg, from_tty, 0, command);
8149 }
8150
8151 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8152    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8153    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8154    the breakpoint_ops structure associated to the catchpoint.  */
8155
8156 void
8157 init_catchpoint (struct breakpoint *b,
8158                  struct gdbarch *gdbarch, int tempflag,
8159                  const char *cond_string,
8160                  const struct breakpoint_ops *ops)
8161 {
8162   symtab_and_line sal;
8163   sal.pspace = current_program_space;
8164
8165   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8166
8167   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8168   b->disposition = tempflag ? disp_del : disp_donttouch;
8169 }
8170
8171 void
8172 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8173 {
8174   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8175   set_breakpoint_number (internal, b);
8176   if (is_tracepoint (b))
8177     set_tracepoint_count (breakpoint_count);
8178   if (!internal)
8179     mention (b);
8180   gdb::observers::breakpoint_created.notify (b);
8181
8182   if (update_gll)
8183     update_global_location_list (UGLL_MAY_INSERT);
8184 }
8185
8186 static void
8187 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8188                                     int tempflag, const char *cond_string,
8189                                     const struct breakpoint_ops *ops)
8190 {
8191   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8192
8193   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8194
8195   c->forked_inferior_pid = null_ptid;
8196
8197   install_breakpoint (0, std::move (c), 1);
8198 }
8199
8200 /* Exec catchpoints.  */
8201
8202 /* An instance of this type is used to represent an exec catchpoint.
8203    A breakpoint is really of this type iff its ops pointer points to
8204    CATCH_EXEC_BREAKPOINT_OPS.  */
8205
8206 struct exec_catchpoint : public breakpoint
8207 {
8208   ~exec_catchpoint () override;
8209
8210   /* Filename of a program whose exec triggered this catchpoint.
8211      This field is only valid immediately after this catchpoint has
8212      triggered.  */
8213   char *exec_pathname;
8214 };
8215
8216 /* Exec catchpoint destructor.  */
8217
8218 exec_catchpoint::~exec_catchpoint ()
8219 {
8220   xfree (this->exec_pathname);
8221 }
8222
8223 static int
8224 insert_catch_exec (struct bp_location *bl)
8225 {
8226   return target_insert_exec_catchpoint (inferior_ptid.pid ());
8227 }
8228
8229 static int
8230 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8231 {
8232   return target_remove_exec_catchpoint (inferior_ptid.pid ());
8233 }
8234
8235 static int
8236 breakpoint_hit_catch_exec (const struct bp_location *bl,
8237                            const address_space *aspace, CORE_ADDR bp_addr,
8238                            const struct target_waitstatus *ws)
8239 {
8240   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8241
8242   if (ws->kind != TARGET_WAITKIND_EXECD)
8243     return 0;
8244
8245   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8246   return 1;
8247 }
8248
8249 static enum print_stop_action
8250 print_it_catch_exec (bpstat bs)
8251 {
8252   struct ui_out *uiout = current_uiout;
8253   struct breakpoint *b = bs->breakpoint_at;
8254   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8255
8256   annotate_catchpoint (b->number);
8257   maybe_print_thread_hit_breakpoint (uiout);
8258   if (b->disposition == disp_del)
8259     uiout->text ("Temporary catchpoint ");
8260   else
8261     uiout->text ("Catchpoint ");
8262   if (uiout->is_mi_like_p ())
8263     {
8264       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8265       uiout->field_string ("disp", bpdisp_text (b->disposition));
8266     }
8267   uiout->field_int ("bkptno", b->number);
8268   uiout->text (" (exec'd ");
8269   uiout->field_string ("new-exec", c->exec_pathname);
8270   uiout->text ("), ");
8271
8272   return PRINT_SRC_AND_LOC;
8273 }
8274
8275 static void
8276 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8277 {
8278   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8279   struct value_print_options opts;
8280   struct ui_out *uiout = current_uiout;
8281
8282   get_user_print_options (&opts);
8283
8284   /* Field 4, the address, is omitted (which makes the columns
8285      not line up too nicely with the headers, but the effect
8286      is relatively readable).  */
8287   if (opts.addressprint)
8288     uiout->field_skip ("addr");
8289   annotate_field (5);
8290   uiout->text ("exec");
8291   if (c->exec_pathname != NULL)
8292     {
8293       uiout->text (", program \"");
8294       uiout->field_string ("what", c->exec_pathname);
8295       uiout->text ("\" ");
8296     }
8297
8298   if (uiout->is_mi_like_p ())
8299     uiout->field_string ("catch-type", "exec");
8300 }
8301
8302 static void
8303 print_mention_catch_exec (struct breakpoint *b)
8304 {
8305   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8306 }
8307
8308 /* Implement the "print_recreate" breakpoint_ops method for exec
8309    catchpoints.  */
8310
8311 static void
8312 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8313 {
8314   fprintf_unfiltered (fp, "catch exec");
8315   print_recreate_thread (b, fp);
8316 }
8317
8318 static struct breakpoint_ops catch_exec_breakpoint_ops;
8319
8320 static int
8321 hw_breakpoint_used_count (void)
8322 {
8323   int i = 0;
8324   struct breakpoint *b;
8325   struct bp_location *bl;
8326
8327   ALL_BREAKPOINTS (b)
8328   {
8329     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8330       for (bl = b->loc; bl; bl = bl->next)
8331         {
8332           /* Special types of hardware breakpoints may use more than
8333              one register.  */
8334           i += b->ops->resources_needed (bl);
8335         }
8336   }
8337
8338   return i;
8339 }
8340
8341 /* Returns the resources B would use if it were a hardware
8342    watchpoint.  */
8343
8344 static int
8345 hw_watchpoint_use_count (struct breakpoint *b)
8346 {
8347   int i = 0;
8348   struct bp_location *bl;
8349
8350   if (!breakpoint_enabled (b))
8351     return 0;
8352
8353   for (bl = b->loc; bl; bl = bl->next)
8354     {
8355       /* Special types of hardware watchpoints may use more than
8356          one register.  */
8357       i += b->ops->resources_needed (bl);
8358     }
8359
8360   return i;
8361 }
8362
8363 /* Returns the sum the used resources of all hardware watchpoints of
8364    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8365    the sum of the used resources of all hardware watchpoints of other
8366    types _not_ TYPE.  */
8367
8368 static int
8369 hw_watchpoint_used_count_others (struct breakpoint *except,
8370                                  enum bptype type, int *other_type_used)
8371 {
8372   int i = 0;
8373   struct breakpoint *b;
8374
8375   *other_type_used = 0;
8376   ALL_BREAKPOINTS (b)
8377     {
8378       if (b == except)
8379         continue;
8380       if (!breakpoint_enabled (b))
8381         continue;
8382
8383       if (b->type == type)
8384         i += hw_watchpoint_use_count (b);
8385       else if (is_hardware_watchpoint (b))
8386         *other_type_used = 1;
8387     }
8388
8389   return i;
8390 }
8391
8392 void
8393 disable_watchpoints_before_interactive_call_start (void)
8394 {
8395   struct breakpoint *b;
8396
8397   ALL_BREAKPOINTS (b)
8398   {
8399     if (is_watchpoint (b) && breakpoint_enabled (b))
8400       {
8401         b->enable_state = bp_call_disabled;
8402         update_global_location_list (UGLL_DONT_INSERT);
8403       }
8404   }
8405 }
8406
8407 void
8408 enable_watchpoints_after_interactive_call_stop (void)
8409 {
8410   struct breakpoint *b;
8411
8412   ALL_BREAKPOINTS (b)
8413   {
8414     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8415       {
8416         b->enable_state = bp_enabled;
8417         update_global_location_list (UGLL_MAY_INSERT);
8418       }
8419   }
8420 }
8421
8422 void
8423 disable_breakpoints_before_startup (void)
8424 {
8425   current_program_space->executing_startup = 1;
8426   update_global_location_list (UGLL_DONT_INSERT);
8427 }
8428
8429 void
8430 enable_breakpoints_after_startup (void)
8431 {
8432   current_program_space->executing_startup = 0;
8433   breakpoint_re_set ();
8434 }
8435
8436 /* Create a new single-step breakpoint for thread THREAD, with no
8437    locations.  */
8438
8439 static struct breakpoint *
8440 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8441 {
8442   std::unique_ptr<breakpoint> b (new breakpoint ());
8443
8444   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8445                                         &momentary_breakpoint_ops);
8446
8447   b->disposition = disp_donttouch;
8448   b->frame_id = null_frame_id;
8449
8450   b->thread = thread;
8451   gdb_assert (b->thread != 0);
8452
8453   return add_to_breakpoint_chain (std::move (b));
8454 }
8455
8456 /* Set a momentary breakpoint of type TYPE at address specified by
8457    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8458    frame.  */
8459
8460 breakpoint_up
8461 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8462                           struct frame_id frame_id, enum bptype type)
8463 {
8464   struct breakpoint *b;
8465
8466   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8467      tail-called one.  */
8468   gdb_assert (!frame_id_artificial_p (frame_id));
8469
8470   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8471   b->enable_state = bp_enabled;
8472   b->disposition = disp_donttouch;
8473   b->frame_id = frame_id;
8474
8475   b->thread = inferior_thread ()->global_num;
8476
8477   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8478
8479   return breakpoint_up (b);
8480 }
8481
8482 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8483    The new breakpoint will have type TYPE, use OPS as its
8484    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8485
8486 static struct breakpoint *
8487 momentary_breakpoint_from_master (struct breakpoint *orig,
8488                                   enum bptype type,
8489                                   const struct breakpoint_ops *ops,
8490                                   int loc_enabled)
8491 {
8492   struct breakpoint *copy;
8493
8494   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8495   copy->loc = allocate_bp_location (copy);
8496   set_breakpoint_location_function (copy->loc, 1);
8497
8498   copy->loc->gdbarch = orig->loc->gdbarch;
8499   copy->loc->requested_address = orig->loc->requested_address;
8500   copy->loc->address = orig->loc->address;
8501   copy->loc->section = orig->loc->section;
8502   copy->loc->pspace = orig->loc->pspace;
8503   copy->loc->probe = orig->loc->probe;
8504   copy->loc->line_number = orig->loc->line_number;
8505   copy->loc->symtab = orig->loc->symtab;
8506   copy->loc->enabled = loc_enabled;
8507   copy->frame_id = orig->frame_id;
8508   copy->thread = orig->thread;
8509   copy->pspace = orig->pspace;
8510
8511   copy->enable_state = bp_enabled;
8512   copy->disposition = disp_donttouch;
8513   copy->number = internal_breakpoint_number--;
8514
8515   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8516   return copy;
8517 }
8518
8519 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8520    ORIG is NULL.  */
8521
8522 struct breakpoint *
8523 clone_momentary_breakpoint (struct breakpoint *orig)
8524 {
8525   /* If there's nothing to clone, then return nothing.  */
8526   if (orig == NULL)
8527     return NULL;
8528
8529   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8530 }
8531
8532 breakpoint_up
8533 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8534                                 enum bptype type)
8535 {
8536   struct symtab_and_line sal;
8537
8538   sal = find_pc_line (pc, 0);
8539   sal.pc = pc;
8540   sal.section = find_pc_overlay (pc);
8541   sal.explicit_pc = 1;
8542
8543   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8544 }
8545 \f
8546
8547 /* Tell the user we have just set a breakpoint B.  */
8548
8549 static void
8550 mention (struct breakpoint *b)
8551 {
8552   b->ops->print_mention (b);
8553   current_uiout->text ("\n");
8554 }
8555 \f
8556
8557 static int bp_loc_is_permanent (struct bp_location *loc);
8558
8559 static struct bp_location *
8560 add_location_to_breakpoint (struct breakpoint *b,
8561                             const struct symtab_and_line *sal)
8562 {
8563   struct bp_location *loc, **tmp;
8564   CORE_ADDR adjusted_address;
8565   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8566
8567   if (loc_gdbarch == NULL)
8568     loc_gdbarch = b->gdbarch;
8569
8570   /* Adjust the breakpoint's address prior to allocating a location.
8571      Once we call allocate_bp_location(), that mostly uninitialized
8572      location will be placed on the location chain.  Adjustment of the
8573      breakpoint may cause target_read_memory() to be called and we do
8574      not want its scan of the location chain to find a breakpoint and
8575      location that's only been partially initialized.  */
8576   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8577                                                 sal->pc, b->type);
8578
8579   /* Sort the locations by their ADDRESS.  */
8580   loc = allocate_bp_location (b);
8581   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8582        tmp = &((*tmp)->next))
8583     ;
8584   loc->next = *tmp;
8585   *tmp = loc;
8586
8587   loc->requested_address = sal->pc;
8588   loc->address = adjusted_address;
8589   loc->pspace = sal->pspace;
8590   loc->probe.prob = sal->prob;
8591   loc->probe.objfile = sal->objfile;
8592   gdb_assert (loc->pspace != NULL);
8593   loc->section = sal->section;
8594   loc->gdbarch = loc_gdbarch;
8595   loc->line_number = sal->line;
8596   loc->symtab = sal->symtab;
8597   loc->symbol = sal->symbol;
8598   loc->msymbol = sal->msymbol;
8599   loc->objfile = sal->objfile;
8600
8601   set_breakpoint_location_function (loc,
8602                                     sal->explicit_pc || sal->explicit_line);
8603
8604   /* While by definition, permanent breakpoints are already present in the
8605      code, we don't mark the location as inserted.  Normally one would expect
8606      that GDB could rely on that breakpoint instruction to stop the program,
8607      thus removing the need to insert its own breakpoint, except that executing
8608      the breakpoint instruction can kill the target instead of reporting a
8609      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8610      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8611      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8612      breakpoint be inserted normally results in QEMU knowing about the GDB
8613      breakpoint, and thus trap before the breakpoint instruction is executed.
8614      (If GDB later needs to continue execution past the permanent breakpoint,
8615      it manually increments the PC, thus avoiding executing the breakpoint
8616      instruction.)  */
8617   if (bp_loc_is_permanent (loc))
8618     loc->permanent = 1;
8619
8620   return loc;
8621 }
8622 \f
8623
8624 /* See breakpoint.h.  */
8625
8626 int
8627 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8628 {
8629   int len;
8630   CORE_ADDR addr;
8631   const gdb_byte *bpoint;
8632   gdb_byte *target_mem;
8633
8634   addr = address;
8635   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8636
8637   /* Software breakpoints unsupported?  */
8638   if (bpoint == NULL)
8639     return 0;
8640
8641   target_mem = (gdb_byte *) alloca (len);
8642
8643   /* Enable the automatic memory restoration from breakpoints while
8644      we read the memory.  Otherwise we could say about our temporary
8645      breakpoints they are permanent.  */
8646   scoped_restore restore_memory
8647     = make_scoped_restore_show_memory_breakpoints (0);
8648
8649   if (target_read_memory (address, target_mem, len) == 0
8650       && memcmp (target_mem, bpoint, len) == 0)
8651     return 1;
8652
8653   return 0;
8654 }
8655
8656 /* Return 1 if LOC is pointing to a permanent breakpoint,
8657    return 0 otherwise.  */
8658
8659 static int
8660 bp_loc_is_permanent (struct bp_location *loc)
8661 {
8662   gdb_assert (loc != NULL);
8663
8664   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
8665      attempt to read from the addresses the locations of these breakpoint types
8666      point to.  program_breakpoint_here_p, below, will attempt to read
8667      memory.  */
8668   if (!breakpoint_address_is_meaningful (loc->owner))
8669     return 0;
8670
8671   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8672   switch_to_program_space_and_thread (loc->pspace);
8673   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8674 }
8675
8676 /* Build a command list for the dprintf corresponding to the current
8677    settings of the dprintf style options.  */
8678
8679 static void
8680 update_dprintf_command_list (struct breakpoint *b)
8681 {
8682   char *dprintf_args = b->extra_string;
8683   char *printf_line = NULL;
8684
8685   if (!dprintf_args)
8686     return;
8687
8688   dprintf_args = skip_spaces (dprintf_args);
8689
8690   /* Allow a comma, as it may have terminated a location, but don't
8691      insist on it.  */
8692   if (*dprintf_args == ',')
8693     ++dprintf_args;
8694   dprintf_args = skip_spaces (dprintf_args);
8695
8696   if (*dprintf_args != '"')
8697     error (_("Bad format string, missing '\"'."));
8698
8699   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8700     printf_line = xstrprintf ("printf %s", dprintf_args);
8701   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8702     {
8703       if (!dprintf_function)
8704         error (_("No function supplied for dprintf call"));
8705
8706       if (dprintf_channel && strlen (dprintf_channel) > 0)
8707         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8708                                   dprintf_function,
8709                                   dprintf_channel,
8710                                   dprintf_args);
8711       else
8712         printf_line = xstrprintf ("call (void) %s (%s)",
8713                                   dprintf_function,
8714                                   dprintf_args);
8715     }
8716   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8717     {
8718       if (target_can_run_breakpoint_commands ())
8719         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8720       else
8721         {
8722           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8723           printf_line = xstrprintf ("printf %s", dprintf_args);
8724         }
8725     }
8726   else
8727     internal_error (__FILE__, __LINE__,
8728                     _("Invalid dprintf style."));
8729
8730   gdb_assert (printf_line != NULL);
8731
8732   /* Manufacture a printf sequence.  */
8733   struct command_line *printf_cmd_line
8734     = new struct command_line (simple_control, printf_line);
8735   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8736                                                     command_lines_deleter ()));
8737 }
8738
8739 /* Update all dprintf commands, making their command lists reflect
8740    current style settings.  */
8741
8742 static void
8743 update_dprintf_commands (const char *args, int from_tty,
8744                          struct cmd_list_element *c)
8745 {
8746   struct breakpoint *b;
8747
8748   ALL_BREAKPOINTS (b)
8749     {
8750       if (b->type == bp_dprintf)
8751         update_dprintf_command_list (b);
8752     }
8753 }
8754
8755 /* Create a breakpoint with SAL as location.  Use LOCATION
8756    as a description of the location, and COND_STRING
8757    as condition expression.  If LOCATION is NULL then create an
8758    "address location" from the address in the SAL.  */
8759
8760 static void
8761 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8762                      gdb::array_view<const symtab_and_line> sals,
8763                      event_location_up &&location,
8764                      gdb::unique_xmalloc_ptr<char> filter,
8765                      gdb::unique_xmalloc_ptr<char> cond_string,
8766                      gdb::unique_xmalloc_ptr<char> extra_string,
8767                      enum bptype type, enum bpdisp disposition,
8768                      int thread, int task, int ignore_count,
8769                      const struct breakpoint_ops *ops, int from_tty,
8770                      int enabled, int internal, unsigned flags,
8771                      int display_canonical)
8772 {
8773   int i;
8774
8775   if (type == bp_hardware_breakpoint)
8776     {
8777       int target_resources_ok;
8778
8779       i = hw_breakpoint_used_count ();
8780       target_resources_ok =
8781         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8782                                             i + 1, 0);
8783       if (target_resources_ok == 0)
8784         error (_("No hardware breakpoint support in the target."));
8785       else if (target_resources_ok < 0)
8786         error (_("Hardware breakpoints used exceeds limit."));
8787     }
8788
8789   gdb_assert (!sals.empty ());
8790
8791   for (const auto &sal : sals)
8792     {
8793       struct bp_location *loc;
8794
8795       if (from_tty)
8796         {
8797           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8798           if (!loc_gdbarch)
8799             loc_gdbarch = gdbarch;
8800
8801           describe_other_breakpoints (loc_gdbarch,
8802                                       sal.pspace, sal.pc, sal.section, thread);
8803         }
8804
8805       if (&sal == &sals[0])
8806         {
8807           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8808           b->thread = thread;
8809           b->task = task;
8810
8811           b->cond_string = cond_string.release ();
8812           b->extra_string = extra_string.release ();
8813           b->ignore_count = ignore_count;
8814           b->enable_state = enabled ? bp_enabled : bp_disabled;
8815           b->disposition = disposition;
8816
8817           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8818             b->loc->inserted = 1;
8819
8820           if (type == bp_static_tracepoint)
8821             {
8822               struct tracepoint *t = (struct tracepoint *) b;
8823               struct static_tracepoint_marker marker;
8824
8825               if (strace_marker_p (b))
8826                 {
8827                   /* We already know the marker exists, otherwise, we
8828                      wouldn't see a sal for it.  */
8829                   const char *p
8830                     = &event_location_to_string (b->location.get ())[3];
8831                   const char *endp;
8832
8833                   p = skip_spaces (p);
8834
8835                   endp = skip_to_space (p);
8836
8837                   t->static_trace_marker_id.assign (p, endp - p);
8838
8839                   printf_filtered (_("Probed static tracepoint "
8840                                      "marker \"%s\"\n"),
8841                                    t->static_trace_marker_id.c_str ());
8842                 }
8843               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8844                 {
8845                   t->static_trace_marker_id = std::move (marker.str_id);
8846
8847                   printf_filtered (_("Probed static tracepoint "
8848                                      "marker \"%s\"\n"),
8849                                    t->static_trace_marker_id.c_str ());
8850                 }
8851               else
8852                 warning (_("Couldn't determine the static "
8853                            "tracepoint marker to probe"));
8854             }
8855
8856           loc = b->loc;
8857         }
8858       else
8859         {
8860           loc = add_location_to_breakpoint (b, &sal);
8861           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8862             loc->inserted = 1;
8863         }
8864
8865       if (b->cond_string)
8866         {
8867           const char *arg = b->cond_string;
8868
8869           loc->cond = parse_exp_1 (&arg, loc->address,
8870                                    block_for_pc (loc->address), 0);
8871           if (*arg)
8872               error (_("Garbage '%s' follows condition"), arg);
8873         }
8874
8875       /* Dynamic printf requires and uses additional arguments on the
8876          command line, otherwise it's an error.  */
8877       if (type == bp_dprintf)
8878         {
8879           if (b->extra_string)
8880             update_dprintf_command_list (b);
8881           else
8882             error (_("Format string required"));
8883         }
8884       else if (b->extra_string)
8885         error (_("Garbage '%s' at end of command"), b->extra_string);
8886     }
8887
8888   b->display_canonical = display_canonical;
8889   if (location != NULL)
8890     b->location = std::move (location);
8891   else
8892     b->location = new_address_location (b->loc->address, NULL, 0);
8893   b->filter = filter.release ();
8894 }
8895
8896 static void
8897 create_breakpoint_sal (struct gdbarch *gdbarch,
8898                        gdb::array_view<const symtab_and_line> sals,
8899                        event_location_up &&location,
8900                        gdb::unique_xmalloc_ptr<char> filter,
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                        int display_canonical)
8908 {
8909   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8910
8911   init_breakpoint_sal (b.get (), gdbarch,
8912                        sals, std::move (location),
8913                        std::move (filter),
8914                        std::move (cond_string),
8915                        std::move (extra_string),
8916                        type, disposition,
8917                        thread, task, ignore_count,
8918                        ops, from_tty,
8919                        enabled, internal, flags,
8920                        display_canonical);
8921
8922   install_breakpoint (internal, std::move (b), 0);
8923 }
8924
8925 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8926    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8927    value.  COND_STRING, if not NULL, specified the condition to be
8928    used for all breakpoints.  Essentially the only case where
8929    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8930    function.  In that case, it's still not possible to specify
8931    separate conditions for different overloaded functions, so
8932    we take just a single condition string.
8933    
8934    NOTE: If the function succeeds, the caller is expected to cleanup
8935    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8936    array contents).  If the function fails (error() is called), the
8937    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8938    COND and SALS arrays and each of those arrays contents.  */
8939
8940 static void
8941 create_breakpoints_sal (struct gdbarch *gdbarch,
8942                         struct linespec_result *canonical,
8943                         gdb::unique_xmalloc_ptr<char> cond_string,
8944                         gdb::unique_xmalloc_ptr<char> extra_string,
8945                         enum bptype type, enum bpdisp disposition,
8946                         int thread, int task, int ignore_count,
8947                         const struct breakpoint_ops *ops, int from_tty,
8948                         int enabled, int internal, unsigned flags)
8949 {
8950   if (canonical->pre_expanded)
8951     gdb_assert (canonical->lsals.size () == 1);
8952
8953   for (const auto &lsal : canonical->lsals)
8954     {
8955       /* Note that 'location' can be NULL in the case of a plain
8956          'break', without arguments.  */
8957       event_location_up location
8958         = (canonical->location != NULL
8959            ? copy_event_location (canonical->location.get ()) : NULL);
8960       gdb::unique_xmalloc_ptr<char> filter_string
8961         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8962
8963       create_breakpoint_sal (gdbarch, lsal.sals,
8964                              std::move (location),
8965                              std::move (filter_string),
8966                              std::move (cond_string),
8967                              std::move (extra_string),
8968                              type, disposition,
8969                              thread, task, ignore_count, ops,
8970                              from_tty, enabled, internal, flags,
8971                              canonical->special_display);
8972     }
8973 }
8974
8975 /* Parse LOCATION which is assumed to be a SAL specification possibly
8976    followed by conditionals.  On return, SALS contains an array of SAL
8977    addresses found.  LOCATION points to the end of the SAL (for
8978    linespec locations).
8979
8980    The array and the line spec strings are allocated on the heap, it is
8981    the caller's responsibility to free them.  */
8982
8983 static void
8984 parse_breakpoint_sals (const struct event_location *location,
8985                        struct linespec_result *canonical)
8986 {
8987   struct symtab_and_line cursal;
8988
8989   if (event_location_type (location) == LINESPEC_LOCATION)
8990     {
8991       const char *spec = get_linespec_location (location)->spec_string;
8992
8993       if (spec == NULL)
8994         {
8995           /* The last displayed codepoint, if it's valid, is our default
8996              breakpoint address.  */
8997           if (last_displayed_sal_is_valid ())
8998             {
8999               /* Set sal's pspace, pc, symtab, and line to the values
9000                  corresponding to the last call to print_frame_info.
9001                  Be sure to reinitialize LINE with NOTCURRENT == 0
9002                  as the breakpoint line number is inappropriate otherwise.
9003                  find_pc_line would adjust PC, re-set it back.  */
9004               symtab_and_line sal = get_last_displayed_sal ();
9005               CORE_ADDR pc = sal.pc;
9006
9007               sal = find_pc_line (pc, 0);
9008
9009               /* "break" without arguments is equivalent to "break *PC"
9010                  where PC is the last displayed codepoint's address.  So
9011                  make sure to set sal.explicit_pc to prevent GDB from
9012                  trying to expand the list of sals to include all other
9013                  instances with the same symtab and line.  */
9014               sal.pc = pc;
9015               sal.explicit_pc = 1;
9016
9017               struct linespec_sals lsal;
9018               lsal.sals = {sal};
9019               lsal.canonical = NULL;
9020
9021               canonical->lsals.push_back (std::move (lsal));
9022               return;
9023             }
9024           else
9025             error (_("No default breakpoint address now."));
9026         }
9027     }
9028
9029   /* Force almost all breakpoints to be in terms of the
9030      current_source_symtab (which is decode_line_1's default).
9031      This should produce the results we want almost all of the
9032      time while leaving default_breakpoint_* alone.
9033
9034      ObjC: However, don't match an Objective-C method name which
9035      may have a '+' or '-' succeeded by a '['.  */
9036   cursal = get_current_source_symtab_and_line ();
9037   if (last_displayed_sal_is_valid ())
9038     {
9039       const char *spec = NULL;
9040
9041       if (event_location_type (location) == LINESPEC_LOCATION)
9042         spec = get_linespec_location (location)->spec_string;
9043
9044       if (!cursal.symtab
9045           || (spec != NULL
9046               && strchr ("+-", spec[0]) != NULL
9047               && spec[1] != '['))
9048         {
9049           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9050                             get_last_displayed_symtab (),
9051                             get_last_displayed_line (),
9052                             canonical, NULL, NULL);
9053           return;
9054         }
9055     }
9056
9057   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9058                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9059 }
9060
9061
9062 /* Convert each SAL into a real PC.  Verify that the PC can be
9063    inserted as a breakpoint.  If it can't throw an error.  */
9064
9065 static void
9066 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9067 {    
9068   for (auto &sal : sals)
9069     resolve_sal_pc (&sal);
9070 }
9071
9072 /* Fast tracepoints may have restrictions on valid locations.  For
9073    instance, a fast tracepoint using a jump instead of a trap will
9074    likely have to overwrite more bytes than a trap would, and so can
9075    only be placed where the instruction is longer than the jump, or a
9076    multi-instruction sequence does not have a jump into the middle of
9077    it, etc.  */
9078
9079 static void
9080 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9081                             gdb::array_view<const symtab_and_line> sals)
9082 {
9083   for (const auto &sal : sals)
9084     {
9085       struct gdbarch *sarch;
9086
9087       sarch = get_sal_arch (sal);
9088       /* We fall back to GDBARCH if there is no architecture
9089          associated with SAL.  */
9090       if (sarch == NULL)
9091         sarch = gdbarch;
9092       std::string msg;
9093       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9094         error (_("May not have a fast tracepoint at %s%s"),
9095                paddress (sarch, sal.pc), msg.c_str ());
9096     }
9097 }
9098
9099 /* Given TOK, a string specification of condition and thread, as
9100    accepted by the 'break' command, extract the condition
9101    string and thread number and set *COND_STRING and *THREAD.
9102    PC identifies the context at which the condition should be parsed.
9103    If no condition is found, *COND_STRING is set to NULL.
9104    If no thread is found, *THREAD is set to -1.  */
9105
9106 static void
9107 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9108                            char **cond_string, int *thread, int *task,
9109                            char **rest)
9110 {
9111   *cond_string = NULL;
9112   *thread = -1;
9113   *task = 0;
9114   *rest = NULL;
9115
9116   while (tok && *tok)
9117     {
9118       const char *end_tok;
9119       int toklen;
9120       const char *cond_start = NULL;
9121       const char *cond_end = NULL;
9122
9123       tok = skip_spaces (tok);
9124
9125       if ((*tok == '"' || *tok == ',') && rest)
9126         {
9127           *rest = savestring (tok, strlen (tok));
9128           return;
9129         }
9130
9131       end_tok = skip_to_space (tok);
9132
9133       toklen = end_tok - tok;
9134
9135       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9136         {
9137           tok = cond_start = end_tok + 1;
9138           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9139           cond_end = tok;
9140           *cond_string = savestring (cond_start, cond_end - cond_start);
9141         }
9142       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9143         {
9144           const char *tmptok;
9145           struct thread_info *thr;
9146
9147           tok = end_tok + 1;
9148           thr = parse_thread_id (tok, &tmptok);
9149           if (tok == tmptok)
9150             error (_("Junk after thread keyword."));
9151           *thread = thr->global_num;
9152           tok = tmptok;
9153         }
9154       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9155         {
9156           char *tmptok;
9157
9158           tok = end_tok + 1;
9159           *task = strtol (tok, &tmptok, 0);
9160           if (tok == tmptok)
9161             error (_("Junk after task keyword."));
9162           if (!valid_task_id (*task))
9163             error (_("Unknown task %d."), *task);
9164           tok = tmptok;
9165         }
9166       else if (rest)
9167         {
9168           *rest = savestring (tok, strlen (tok));
9169           return;
9170         }
9171       else
9172         error (_("Junk at end of arguments."));
9173     }
9174 }
9175
9176 /* Decode a static tracepoint marker spec.  */
9177
9178 static std::vector<symtab_and_line>
9179 decode_static_tracepoint_spec (const char **arg_p)
9180 {
9181   const char *p = &(*arg_p)[3];
9182   const char *endp;
9183
9184   p = skip_spaces (p);
9185
9186   endp = skip_to_space (p);
9187
9188   std::string marker_str (p, endp - p);
9189
9190   std::vector<static_tracepoint_marker> markers
9191     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9192   if (markers.empty ())
9193     error (_("No known static tracepoint marker named %s"),
9194            marker_str.c_str ());
9195
9196   std::vector<symtab_and_line> sals;
9197   sals.reserve (markers.size ());
9198
9199   for (const static_tracepoint_marker &marker : markers)
9200     {
9201       symtab_and_line sal = find_pc_line (marker.address, 0);
9202       sal.pc = marker.address;
9203       sals.push_back (sal);
9204    }
9205
9206   *arg_p = endp;
9207   return sals;
9208 }
9209
9210 /* See breakpoint.h.  */
9211
9212 int
9213 create_breakpoint (struct gdbarch *gdbarch,
9214                    const struct event_location *location,
9215                    const char *cond_string,
9216                    int thread, const char *extra_string,
9217                    int parse_extra,
9218                    int tempflag, enum bptype type_wanted,
9219                    int ignore_count,
9220                    enum auto_boolean pending_break_support,
9221                    const struct breakpoint_ops *ops,
9222                    int from_tty, int enabled, int internal,
9223                    unsigned flags)
9224 {
9225   struct linespec_result canonical;
9226   int pending = 0;
9227   int task = 0;
9228   int prev_bkpt_count = breakpoint_count;
9229
9230   gdb_assert (ops != NULL);
9231
9232   /* If extra_string isn't useful, set it to NULL.  */
9233   if (extra_string != NULL && *extra_string == '\0')
9234     extra_string = NULL;
9235
9236   try
9237     {
9238       ops->create_sals_from_location (location, &canonical, type_wanted);
9239     }
9240   catch (const gdb_exception_error &e)
9241     {
9242       /* If caller is interested in rc value from parse, set
9243          value.  */
9244       if (e.error == NOT_FOUND_ERROR)
9245         {
9246           /* If pending breakpoint support is turned off, throw
9247              error.  */
9248
9249           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9250             throw;
9251
9252           exception_print (gdb_stderr, e);
9253
9254           /* If pending breakpoint support is auto query and the user
9255              selects no, then simply return the error code.  */
9256           if (pending_break_support == AUTO_BOOLEAN_AUTO
9257               && !nquery (_("Make %s pending on future shared library load? "),
9258                           bptype_string (type_wanted)))
9259             return 0;
9260
9261           /* At this point, either the user was queried about setting
9262              a pending breakpoint and selected yes, or pending
9263              breakpoint behavior is on and thus a pending breakpoint
9264              is defaulted on behalf of the user.  */
9265           pending = 1;
9266         }
9267       else
9268         throw;
9269     }
9270
9271   if (!pending && canonical.lsals.empty ())
9272     return 0;
9273
9274   /* Resolve all line numbers to PC's and verify that the addresses
9275      are ok for the target.  */
9276   if (!pending)
9277     {
9278       for (auto &lsal : canonical.lsals)
9279         breakpoint_sals_to_pc (lsal.sals);
9280     }
9281
9282   /* Fast tracepoints may have additional restrictions on location.  */
9283   if (!pending && type_wanted == bp_fast_tracepoint)
9284     {
9285       for (const auto &lsal : canonical.lsals)
9286         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9287     }
9288
9289   /* Verify that condition can be parsed, before setting any
9290      breakpoints.  Allocate a separate condition expression for each
9291      breakpoint.  */
9292   if (!pending)
9293     {
9294       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9295       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9296
9297       if (parse_extra)
9298         {
9299           char *rest;
9300           char *cond;
9301
9302           const linespec_sals &lsal = canonical.lsals[0];
9303
9304           /* Here we only parse 'arg' to separate condition
9305              from thread number, so parsing in context of first
9306              sal is OK.  When setting the breakpoint we'll
9307              re-parse it in context of each sal.  */
9308
9309           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9310                                      &cond, &thread, &task, &rest);
9311           cond_string_copy.reset (cond);
9312           extra_string_copy.reset (rest);
9313         }
9314       else
9315         {
9316           if (type_wanted != bp_dprintf
9317               && extra_string != NULL && *extra_string != '\0')
9318                 error (_("Garbage '%s' at end of location"), extra_string);
9319
9320           /* Create a private copy of condition string.  */
9321           if (cond_string)
9322             cond_string_copy.reset (xstrdup (cond_string));
9323           /* Create a private copy of any extra string.  */
9324           if (extra_string)
9325             extra_string_copy.reset (xstrdup (extra_string));
9326         }
9327
9328       ops->create_breakpoints_sal (gdbarch, &canonical,
9329                                    std::move (cond_string_copy),
9330                                    std::move (extra_string_copy),
9331                                    type_wanted,
9332                                    tempflag ? disp_del : disp_donttouch,
9333                                    thread, task, ignore_count, ops,
9334                                    from_tty, enabled, internal, flags);
9335     }
9336   else
9337     {
9338       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9339
9340       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9341       b->location = copy_event_location (location);
9342
9343       if (parse_extra)
9344         b->cond_string = NULL;
9345       else
9346         {
9347           /* Create a private copy of condition string.  */
9348           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9349           b->thread = thread;
9350         }
9351
9352       /* Create a private copy of any extra string.  */
9353       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9354       b->ignore_count = ignore_count;
9355       b->disposition = tempflag ? disp_del : disp_donttouch;
9356       b->condition_not_parsed = 1;
9357       b->enable_state = enabled ? bp_enabled : bp_disabled;
9358       if ((type_wanted != bp_breakpoint
9359            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9360         b->pspace = current_program_space;
9361
9362       install_breakpoint (internal, std::move (b), 0);
9363     }
9364   
9365   if (canonical.lsals.size () > 1)
9366     {
9367       warning (_("Multiple breakpoints were set.\nUse the "
9368                  "\"delete\" command to delete unwanted breakpoints."));
9369       prev_breakpoint_count = prev_bkpt_count;
9370     }
9371
9372   update_global_location_list (UGLL_MAY_INSERT);
9373
9374   return 1;
9375 }
9376
9377 /* Set a breakpoint.
9378    ARG is a string describing breakpoint address,
9379    condition, and thread.
9380    FLAG specifies if a breakpoint is hardware on,
9381    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9382    and BP_TEMPFLAG.  */
9383
9384 static void
9385 break_command_1 (const char *arg, int flag, int from_tty)
9386 {
9387   int tempflag = flag & BP_TEMPFLAG;
9388   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9389                              ? bp_hardware_breakpoint
9390                              : bp_breakpoint);
9391   struct breakpoint_ops *ops;
9392
9393   event_location_up location = string_to_event_location (&arg, current_language);
9394
9395   /* Matching breakpoints on probes.  */
9396   if (location != NULL
9397       && event_location_type (location.get ()) == PROBE_LOCATION)
9398     ops = &bkpt_probe_breakpoint_ops;
9399   else
9400     ops = &bkpt_breakpoint_ops;
9401
9402   create_breakpoint (get_current_arch (),
9403                      location.get (),
9404                      NULL, 0, arg, 1 /* parse arg */,
9405                      tempflag, type_wanted,
9406                      0 /* Ignore count */,
9407                      pending_break_support,
9408                      ops,
9409                      from_tty,
9410                      1 /* enabled */,
9411                      0 /* internal */,
9412                      0);
9413 }
9414
9415 /* Helper function for break_command_1 and disassemble_command.  */
9416
9417 void
9418 resolve_sal_pc (struct symtab_and_line *sal)
9419 {
9420   CORE_ADDR pc;
9421
9422   if (sal->pc == 0 && sal->symtab != NULL)
9423     {
9424       if (!find_line_pc (sal->symtab, sal->line, &pc))
9425         error (_("No line %d in file \"%s\"."),
9426                sal->line, symtab_to_filename_for_display (sal->symtab));
9427       sal->pc = pc;
9428
9429       /* If this SAL corresponds to a breakpoint inserted using a line
9430          number, then skip the function prologue if necessary.  */
9431       if (sal->explicit_line)
9432         skip_prologue_sal (sal);
9433     }
9434
9435   if (sal->section == 0 && sal->symtab != NULL)
9436     {
9437       const struct blockvector *bv;
9438       const struct block *b;
9439       struct symbol *sym;
9440
9441       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9442                                     SYMTAB_COMPUNIT (sal->symtab));
9443       if (bv != NULL)
9444         {
9445           sym = block_linkage_function (b);
9446           if (sym != NULL)
9447             {
9448               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9449               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9450                                                  sym);
9451             }
9452           else
9453             {
9454               /* It really is worthwhile to have the section, so we'll
9455                  just have to look harder. This case can be executed
9456                  if we have line numbers but no functions (as can
9457                  happen in assembly source).  */
9458
9459               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9460               switch_to_program_space_and_thread (sal->pspace);
9461
9462               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9463               if (msym.minsym)
9464                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9465             }
9466         }
9467     }
9468 }
9469
9470 void
9471 break_command (const char *arg, int from_tty)
9472 {
9473   break_command_1 (arg, 0, from_tty);
9474 }
9475
9476 void
9477 tbreak_command (const char *arg, int from_tty)
9478 {
9479   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9480 }
9481
9482 static void
9483 hbreak_command (const char *arg, int from_tty)
9484 {
9485   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9486 }
9487
9488 static void
9489 thbreak_command (const char *arg, int from_tty)
9490 {
9491   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9492 }
9493
9494 static void
9495 stop_command (const char *arg, int from_tty)
9496 {
9497   printf_filtered (_("Specify the type of breakpoint to set.\n\
9498 Usage: stop in <function | address>\n\
9499        stop at <line>\n"));
9500 }
9501
9502 static void
9503 stopin_command (const char *arg, int from_tty)
9504 {
9505   int badInput = 0;
9506
9507   if (arg == (char *) NULL)
9508     badInput = 1;
9509   else if (*arg != '*')
9510     {
9511       const char *argptr = arg;
9512       int hasColon = 0;
9513
9514       /* Look for a ':'.  If this is a line number specification, then
9515          say it is bad, otherwise, it should be an address or
9516          function/method name.  */
9517       while (*argptr && !hasColon)
9518         {
9519           hasColon = (*argptr == ':');
9520           argptr++;
9521         }
9522
9523       if (hasColon)
9524         badInput = (*argptr != ':');    /* Not a class::method */
9525       else
9526         badInput = isdigit (*arg);      /* a simple line number */
9527     }
9528
9529   if (badInput)
9530     printf_filtered (_("Usage: stop in <function | address>\n"));
9531   else
9532     break_command_1 (arg, 0, from_tty);
9533 }
9534
9535 static void
9536 stopat_command (const char *arg, int from_tty)
9537 {
9538   int badInput = 0;
9539
9540   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9541     badInput = 1;
9542   else
9543     {
9544       const char *argptr = arg;
9545       int hasColon = 0;
9546
9547       /* Look for a ':'.  If there is a '::' then get out, otherwise
9548          it is probably a line number.  */
9549       while (*argptr && !hasColon)
9550         {
9551           hasColon = (*argptr == ':');
9552           argptr++;
9553         }
9554
9555       if (hasColon)
9556         badInput = (*argptr == ':');    /* we have class::method */
9557       else
9558         badInput = !isdigit (*arg);     /* not a line number */
9559     }
9560
9561   if (badInput)
9562     printf_filtered (_("Usage: stop at LINE\n"));
9563   else
9564     break_command_1 (arg, 0, from_tty);
9565 }
9566
9567 /* The dynamic printf command is mostly like a regular breakpoint, but
9568    with a prewired command list consisting of a single output command,
9569    built from extra arguments supplied on the dprintf command
9570    line.  */
9571
9572 static void
9573 dprintf_command (const char *arg, int from_tty)
9574 {
9575   event_location_up location = string_to_event_location (&arg, current_language);
9576
9577   /* If non-NULL, ARG should have been advanced past the location;
9578      the next character must be ','.  */
9579   if (arg != NULL)
9580     {
9581       if (arg[0] != ',' || arg[1] == '\0')
9582         error (_("Format string required"));
9583       else
9584         {
9585           /* Skip the comma.  */
9586           ++arg;
9587         }
9588     }
9589
9590   create_breakpoint (get_current_arch (),
9591                      location.get (),
9592                      NULL, 0, arg, 1 /* parse arg */,
9593                      0, bp_dprintf,
9594                      0 /* Ignore count */,
9595                      pending_break_support,
9596                      &dprintf_breakpoint_ops,
9597                      from_tty,
9598                      1 /* enabled */,
9599                      0 /* internal */,
9600                      0);
9601 }
9602
9603 static void
9604 agent_printf_command (const char *arg, int from_tty)
9605 {
9606   error (_("May only run agent-printf on the target"));
9607 }
9608
9609 /* Implement the "breakpoint_hit" breakpoint_ops method for
9610    ranged breakpoints.  */
9611
9612 static int
9613 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9614                                   const address_space *aspace,
9615                                   CORE_ADDR bp_addr,
9616                                   const struct target_waitstatus *ws)
9617 {
9618   if (ws->kind != TARGET_WAITKIND_STOPPED
9619       || ws->value.sig != GDB_SIGNAL_TRAP)
9620     return 0;
9621
9622   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9623                                          bl->length, aspace, bp_addr);
9624 }
9625
9626 /* Implement the "resources_needed" breakpoint_ops method for
9627    ranged breakpoints.  */
9628
9629 static int
9630 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9631 {
9632   return target_ranged_break_num_registers ();
9633 }
9634
9635 /* Implement the "print_it" breakpoint_ops method for
9636    ranged breakpoints.  */
9637
9638 static enum print_stop_action
9639 print_it_ranged_breakpoint (bpstat bs)
9640 {
9641   struct breakpoint *b = bs->breakpoint_at;
9642   struct bp_location *bl = b->loc;
9643   struct ui_out *uiout = current_uiout;
9644
9645   gdb_assert (b->type == bp_hardware_breakpoint);
9646
9647   /* Ranged breakpoints have only one location.  */
9648   gdb_assert (bl && bl->next == NULL);
9649
9650   annotate_breakpoint (b->number);
9651
9652   maybe_print_thread_hit_breakpoint (uiout);
9653
9654   if (b->disposition == disp_del)
9655     uiout->text ("Temporary ranged breakpoint ");
9656   else
9657     uiout->text ("Ranged breakpoint ");
9658   if (uiout->is_mi_like_p ())
9659     {
9660       uiout->field_string ("reason",
9661                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9662       uiout->field_string ("disp", bpdisp_text (b->disposition));
9663     }
9664   uiout->field_int ("bkptno", b->number);
9665   uiout->text (", ");
9666
9667   return PRINT_SRC_AND_LOC;
9668 }
9669
9670 /* Implement the "print_one" breakpoint_ops method for
9671    ranged breakpoints.  */
9672
9673 static void
9674 print_one_ranged_breakpoint (struct breakpoint *b,
9675                              struct bp_location **last_loc)
9676 {
9677   struct bp_location *bl = b->loc;
9678   struct value_print_options opts;
9679   struct ui_out *uiout = current_uiout;
9680
9681   /* Ranged breakpoints have only one location.  */
9682   gdb_assert (bl && bl->next == NULL);
9683
9684   get_user_print_options (&opts);
9685
9686   if (opts.addressprint)
9687     /* We don't print the address range here, it will be printed later
9688        by print_one_detail_ranged_breakpoint.  */
9689     uiout->field_skip ("addr");
9690   annotate_field (5);
9691   print_breakpoint_location (b, bl);
9692   *last_loc = bl;
9693 }
9694
9695 /* Implement the "print_one_detail" breakpoint_ops method for
9696    ranged breakpoints.  */
9697
9698 static void
9699 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9700                                     struct ui_out *uiout)
9701 {
9702   CORE_ADDR address_start, address_end;
9703   struct bp_location *bl = b->loc;
9704   string_file stb;
9705
9706   gdb_assert (bl);
9707
9708   address_start = bl->address;
9709   address_end = address_start + bl->length - 1;
9710
9711   uiout->text ("\taddress range: ");
9712   stb.printf ("[%s, %s]",
9713               print_core_address (bl->gdbarch, address_start),
9714               print_core_address (bl->gdbarch, address_end));
9715   uiout->field_stream ("addr", stb);
9716   uiout->text ("\n");
9717 }
9718
9719 /* Implement the "print_mention" breakpoint_ops method for
9720    ranged breakpoints.  */
9721
9722 static void
9723 print_mention_ranged_breakpoint (struct breakpoint *b)
9724 {
9725   struct bp_location *bl = b->loc;
9726   struct ui_out *uiout = current_uiout;
9727
9728   gdb_assert (bl);
9729   gdb_assert (b->type == bp_hardware_breakpoint);
9730
9731   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9732                   b->number, paddress (bl->gdbarch, bl->address),
9733                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9734 }
9735
9736 /* Implement the "print_recreate" breakpoint_ops method for
9737    ranged breakpoints.  */
9738
9739 static void
9740 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9741 {
9742   fprintf_unfiltered (fp, "break-range %s, %s",
9743                       event_location_to_string (b->location.get ()),
9744                       event_location_to_string (b->location_range_end.get ()));
9745   print_recreate_thread (b, fp);
9746 }
9747
9748 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9749
9750 static struct breakpoint_ops ranged_breakpoint_ops;
9751
9752 /* Find the address where the end of the breakpoint range should be
9753    placed, given the SAL of the end of the range.  This is so that if
9754    the user provides a line number, the end of the range is set to the
9755    last instruction of the given line.  */
9756
9757 static CORE_ADDR
9758 find_breakpoint_range_end (struct symtab_and_line sal)
9759 {
9760   CORE_ADDR end;
9761
9762   /* If the user provided a PC value, use it.  Otherwise,
9763      find the address of the end of the given location.  */
9764   if (sal.explicit_pc)
9765     end = sal.pc;
9766   else
9767     {
9768       int ret;
9769       CORE_ADDR start;
9770
9771       ret = find_line_pc_range (sal, &start, &end);
9772       if (!ret)
9773         error (_("Could not find location of the end of the range."));
9774
9775       /* find_line_pc_range returns the start of the next line.  */
9776       end--;
9777     }
9778
9779   return end;
9780 }
9781
9782 /* Implement the "break-range" CLI command.  */
9783
9784 static void
9785 break_range_command (const char *arg, int from_tty)
9786 {
9787   const char *arg_start;
9788   struct linespec_result canonical_start, canonical_end;
9789   int bp_count, can_use_bp, length;
9790   CORE_ADDR end;
9791   struct breakpoint *b;
9792
9793   /* We don't support software ranged breakpoints.  */
9794   if (target_ranged_break_num_registers () < 0)
9795     error (_("This target does not support hardware ranged breakpoints."));
9796
9797   bp_count = hw_breakpoint_used_count ();
9798   bp_count += target_ranged_break_num_registers ();
9799   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9800                                                    bp_count, 0);
9801   if (can_use_bp < 0)
9802     error (_("Hardware breakpoints used exceeds limit."));
9803
9804   arg = skip_spaces (arg);
9805   if (arg == NULL || arg[0] == '\0')
9806     error(_("No address range specified."));
9807
9808   arg_start = arg;
9809   event_location_up start_location = string_to_event_location (&arg,
9810                                                                current_language);
9811   parse_breakpoint_sals (start_location.get (), &canonical_start);
9812
9813   if (arg[0] != ',')
9814     error (_("Too few arguments."));
9815   else if (canonical_start.lsals.empty ())
9816     error (_("Could not find location of the beginning of the range."));
9817
9818   const linespec_sals &lsal_start = canonical_start.lsals[0];
9819
9820   if (canonical_start.lsals.size () > 1
9821       || lsal_start.sals.size () != 1)
9822     error (_("Cannot create a ranged breakpoint with multiple locations."));
9823
9824   const symtab_and_line &sal_start = lsal_start.sals[0];
9825   std::string addr_string_start (arg_start, arg - arg_start);
9826
9827   arg++;        /* Skip the comma.  */
9828   arg = skip_spaces (arg);
9829
9830   /* Parse the end location.  */
9831
9832   arg_start = arg;
9833
9834   /* We call decode_line_full directly here instead of using
9835      parse_breakpoint_sals because we need to specify the start location's
9836      symtab and line as the default symtab and line for the end of the
9837      range.  This makes it possible to have ranges like "foo.c:27, +14",
9838      where +14 means 14 lines from the start location.  */
9839   event_location_up end_location = string_to_event_location (&arg,
9840                                                              current_language);
9841   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9842                     sal_start.symtab, sal_start.line,
9843                     &canonical_end, NULL, NULL);
9844
9845   if (canonical_end.lsals.empty ())
9846     error (_("Could not find location of the end of the range."));
9847
9848   const linespec_sals &lsal_end = canonical_end.lsals[0];
9849   if (canonical_end.lsals.size () > 1
9850       || lsal_end.sals.size () != 1)
9851     error (_("Cannot create a ranged breakpoint with multiple locations."));
9852
9853   const symtab_and_line &sal_end = lsal_end.sals[0];
9854
9855   end = find_breakpoint_range_end (sal_end);
9856   if (sal_start.pc > end)
9857     error (_("Invalid address range, end precedes start."));
9858
9859   length = end - sal_start.pc + 1;
9860   if (length < 0)
9861     /* Length overflowed.  */
9862     error (_("Address range too large."));
9863   else if (length == 1)
9864     {
9865       /* This range is simple enough to be handled by
9866          the `hbreak' command.  */
9867       hbreak_command (&addr_string_start[0], 1);
9868
9869       return;
9870     }
9871
9872   /* Now set up the breakpoint.  */
9873   b = set_raw_breakpoint (get_current_arch (), sal_start,
9874                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9875   set_breakpoint_count (breakpoint_count + 1);
9876   b->number = breakpoint_count;
9877   b->disposition = disp_donttouch;
9878   b->location = std::move (start_location);
9879   b->location_range_end = std::move (end_location);
9880   b->loc->length = length;
9881
9882   mention (b);
9883   gdb::observers::breakpoint_created.notify (b);
9884   update_global_location_list (UGLL_MAY_INSERT);
9885 }
9886
9887 /*  Return non-zero if EXP is verified as constant.  Returned zero
9888     means EXP is variable.  Also the constant detection may fail for
9889     some constant expressions and in such case still falsely return
9890     zero.  */
9891
9892 static int
9893 watchpoint_exp_is_const (const struct expression *exp)
9894 {
9895   int i = exp->nelts;
9896
9897   while (i > 0)
9898     {
9899       int oplenp, argsp;
9900
9901       /* We are only interested in the descriptor of each element.  */
9902       operator_length (exp, i, &oplenp, &argsp);
9903       i -= oplenp;
9904
9905       switch (exp->elts[i].opcode)
9906         {
9907         case BINOP_ADD:
9908         case BINOP_SUB:
9909         case BINOP_MUL:
9910         case BINOP_DIV:
9911         case BINOP_REM:
9912         case BINOP_MOD:
9913         case BINOP_LSH:
9914         case BINOP_RSH:
9915         case BINOP_LOGICAL_AND:
9916         case BINOP_LOGICAL_OR:
9917         case BINOP_BITWISE_AND:
9918         case BINOP_BITWISE_IOR:
9919         case BINOP_BITWISE_XOR:
9920         case BINOP_EQUAL:
9921         case BINOP_NOTEQUAL:
9922         case BINOP_LESS:
9923         case BINOP_GTR:
9924         case BINOP_LEQ:
9925         case BINOP_GEQ:
9926         case BINOP_REPEAT:
9927         case BINOP_COMMA:
9928         case BINOP_EXP:
9929         case BINOP_MIN:
9930         case BINOP_MAX:
9931         case BINOP_INTDIV:
9932         case BINOP_CONCAT:
9933         case TERNOP_COND:
9934         case TERNOP_SLICE:
9935
9936         case OP_LONG:
9937         case OP_FLOAT:
9938         case OP_LAST:
9939         case OP_COMPLEX:
9940         case OP_STRING:
9941         case OP_ARRAY:
9942         case OP_TYPE:
9943         case OP_TYPEOF:
9944         case OP_DECLTYPE:
9945         case OP_TYPEID:
9946         case OP_NAME:
9947         case OP_OBJC_NSSTRING:
9948
9949         case UNOP_NEG:
9950         case UNOP_LOGICAL_NOT:
9951         case UNOP_COMPLEMENT:
9952         case UNOP_ADDR:
9953         case UNOP_HIGH:
9954         case UNOP_CAST:
9955
9956         case UNOP_CAST_TYPE:
9957         case UNOP_REINTERPRET_CAST:
9958         case UNOP_DYNAMIC_CAST:
9959           /* Unary, binary and ternary operators: We have to check
9960              their operands.  If they are constant, then so is the
9961              result of that operation.  For instance, if A and B are
9962              determined to be constants, then so is "A + B".
9963
9964              UNOP_IND is one exception to the rule above, because the
9965              value of *ADDR is not necessarily a constant, even when
9966              ADDR is.  */
9967           break;
9968
9969         case OP_VAR_VALUE:
9970           /* Check whether the associated symbol is a constant.
9971
9972              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9973              possible that a buggy compiler could mark a variable as
9974              constant even when it is not, and TYPE_CONST would return
9975              true in this case, while SYMBOL_CLASS wouldn't.
9976
9977              We also have to check for function symbols because they
9978              are always constant.  */
9979           {
9980             struct symbol *s = exp->elts[i + 2].symbol;
9981
9982             if (SYMBOL_CLASS (s) != LOC_BLOCK
9983                 && SYMBOL_CLASS (s) != LOC_CONST
9984                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9985               return 0;
9986             break;
9987           }
9988
9989         /* The default action is to return 0 because we are using
9990            the optimistic approach here: If we don't know something,
9991            then it is not a constant.  */
9992         default:
9993           return 0;
9994         }
9995     }
9996
9997   return 1;
9998 }
9999
10000 /* Watchpoint destructor.  */
10001
10002 watchpoint::~watchpoint ()
10003 {
10004   xfree (this->exp_string);
10005   xfree (this->exp_string_reparse);
10006 }
10007
10008 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10009
10010 static void
10011 re_set_watchpoint (struct breakpoint *b)
10012 {
10013   struct watchpoint *w = (struct watchpoint *) b;
10014
10015   /* Watchpoint can be either on expression using entirely global
10016      variables, or it can be on local variables.
10017
10018      Watchpoints of the first kind are never auto-deleted, and even
10019      persist across program restarts.  Since they can use variables
10020      from shared libraries, we need to reparse expression as libraries
10021      are loaded and unloaded.
10022
10023      Watchpoints on local variables can also change meaning as result
10024      of solib event.  For example, if a watchpoint uses both a local
10025      and a global variables in expression, it's a local watchpoint,
10026      but unloading of a shared library will make the expression
10027      invalid.  This is not a very common use case, but we still
10028      re-evaluate expression, to avoid surprises to the user.
10029
10030      Note that for local watchpoints, we re-evaluate it only if
10031      watchpoints frame id is still valid.  If it's not, it means the
10032      watchpoint is out of scope and will be deleted soon.  In fact,
10033      I'm not sure we'll ever be called in this case.
10034
10035      If a local watchpoint's frame id is still valid, then
10036      w->exp_valid_block is likewise valid, and we can safely use it.
10037
10038      Don't do anything about disabled watchpoints, since they will be
10039      reevaluated again when enabled.  */
10040   update_watchpoint (w, 1 /* reparse */);
10041 }
10042
10043 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10044
10045 static int
10046 insert_watchpoint (struct bp_location *bl)
10047 {
10048   struct watchpoint *w = (struct watchpoint *) bl->owner;
10049   int length = w->exact ? 1 : bl->length;
10050
10051   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10052                                    w->cond_exp.get ());
10053 }
10054
10055 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10056
10057 static int
10058 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10059 {
10060   struct watchpoint *w = (struct watchpoint *) bl->owner;
10061   int length = w->exact ? 1 : bl->length;
10062
10063   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10064                                    w->cond_exp.get ());
10065 }
10066
10067 static int
10068 breakpoint_hit_watchpoint (const struct bp_location *bl,
10069                            const address_space *aspace, CORE_ADDR bp_addr,
10070                            const struct target_waitstatus *ws)
10071 {
10072   struct breakpoint *b = bl->owner;
10073   struct watchpoint *w = (struct watchpoint *) b;
10074
10075   /* Continuable hardware watchpoints are treated as non-existent if the
10076      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10077      some data address).  Otherwise gdb won't stop on a break instruction
10078      in the code (not from a breakpoint) when a hardware watchpoint has
10079      been defined.  Also skip watchpoints which we know did not trigger
10080      (did not match the data address).  */
10081   if (is_hardware_watchpoint (b)
10082       && w->watchpoint_triggered == watch_triggered_no)
10083     return 0;
10084
10085   return 1;
10086 }
10087
10088 static void
10089 check_status_watchpoint (bpstat bs)
10090 {
10091   gdb_assert (is_watchpoint (bs->breakpoint_at));
10092
10093   bpstat_check_watchpoint (bs);
10094 }
10095
10096 /* Implement the "resources_needed" breakpoint_ops method for
10097    hardware watchpoints.  */
10098
10099 static int
10100 resources_needed_watchpoint (const struct bp_location *bl)
10101 {
10102   struct watchpoint *w = (struct watchpoint *) bl->owner;
10103   int length = w->exact? 1 : bl->length;
10104
10105   return target_region_ok_for_hw_watchpoint (bl->address, length);
10106 }
10107
10108 /* Implement the "works_in_software_mode" breakpoint_ops method for
10109    hardware watchpoints.  */
10110
10111 static int
10112 works_in_software_mode_watchpoint (const struct breakpoint *b)
10113 {
10114   /* Read and access watchpoints only work with hardware support.  */
10115   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10116 }
10117
10118 static enum print_stop_action
10119 print_it_watchpoint (bpstat bs)
10120 {
10121   struct breakpoint *b;
10122   enum print_stop_action result;
10123   struct watchpoint *w;
10124   struct ui_out *uiout = current_uiout;
10125
10126   gdb_assert (bs->bp_location_at != NULL);
10127
10128   b = bs->breakpoint_at;
10129   w = (struct watchpoint *) b;
10130
10131   annotate_watchpoint (b->number);
10132   maybe_print_thread_hit_breakpoint (uiout);
10133
10134   string_file stb;
10135
10136   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10137   switch (b->type)
10138     {
10139     case bp_watchpoint:
10140     case bp_hardware_watchpoint:
10141       if (uiout->is_mi_like_p ())
10142         uiout->field_string
10143           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10144       mention (b);
10145       tuple_emitter.emplace (uiout, "value");
10146       uiout->text ("\nOld value = ");
10147       watchpoint_value_print (bs->old_val.get (), &stb);
10148       uiout->field_stream ("old", stb);
10149       uiout->text ("\nNew value = ");
10150       watchpoint_value_print (w->val.get (), &stb);
10151       uiout->field_stream ("new", stb);
10152       uiout->text ("\n");
10153       /* More than one watchpoint may have been triggered.  */
10154       result = PRINT_UNKNOWN;
10155       break;
10156
10157     case bp_read_watchpoint:
10158       if (uiout->is_mi_like_p ())
10159         uiout->field_string
10160           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10161       mention (b);
10162       tuple_emitter.emplace (uiout, "value");
10163       uiout->text ("\nValue = ");
10164       watchpoint_value_print (w->val.get (), &stb);
10165       uiout->field_stream ("value", stb);
10166       uiout->text ("\n");
10167       result = PRINT_UNKNOWN;
10168       break;
10169
10170     case bp_access_watchpoint:
10171       if (bs->old_val != NULL)
10172         {
10173           if (uiout->is_mi_like_p ())
10174             uiout->field_string
10175               ("reason",
10176                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10177           mention (b);
10178           tuple_emitter.emplace (uiout, "value");
10179           uiout->text ("\nOld value = ");
10180           watchpoint_value_print (bs->old_val.get (), &stb);
10181           uiout->field_stream ("old", stb);
10182           uiout->text ("\nNew value = ");
10183         }
10184       else
10185         {
10186           mention (b);
10187           if (uiout->is_mi_like_p ())
10188             uiout->field_string
10189               ("reason",
10190                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10191           tuple_emitter.emplace (uiout, "value");
10192           uiout->text ("\nValue = ");
10193         }
10194       watchpoint_value_print (w->val.get (), &stb);
10195       uiout->field_stream ("new", stb);
10196       uiout->text ("\n");
10197       result = PRINT_UNKNOWN;
10198       break;
10199     default:
10200       result = PRINT_UNKNOWN;
10201     }
10202
10203   return result;
10204 }
10205
10206 /* Implement the "print_mention" breakpoint_ops method for hardware
10207    watchpoints.  */
10208
10209 static void
10210 print_mention_watchpoint (struct breakpoint *b)
10211 {
10212   struct watchpoint *w = (struct watchpoint *) b;
10213   struct ui_out *uiout = current_uiout;
10214   const char *tuple_name;
10215
10216   switch (b->type)
10217     {
10218     case bp_watchpoint:
10219       uiout->text ("Watchpoint ");
10220       tuple_name = "wpt";
10221       break;
10222     case bp_hardware_watchpoint:
10223       uiout->text ("Hardware watchpoint ");
10224       tuple_name = "wpt";
10225       break;
10226     case bp_read_watchpoint:
10227       uiout->text ("Hardware read watchpoint ");
10228       tuple_name = "hw-rwpt";
10229       break;
10230     case bp_access_watchpoint:
10231       uiout->text ("Hardware access (read/write) watchpoint ");
10232       tuple_name = "hw-awpt";
10233       break;
10234     default:
10235       internal_error (__FILE__, __LINE__,
10236                       _("Invalid hardware watchpoint type."));
10237     }
10238
10239   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10240   uiout->field_int ("number", b->number);
10241   uiout->text (": ");
10242   uiout->field_string ("exp", w->exp_string);
10243 }
10244
10245 /* Implement the "print_recreate" breakpoint_ops method for
10246    watchpoints.  */
10247
10248 static void
10249 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10250 {
10251   struct watchpoint *w = (struct watchpoint *) b;
10252
10253   switch (b->type)
10254     {
10255     case bp_watchpoint:
10256     case bp_hardware_watchpoint:
10257       fprintf_unfiltered (fp, "watch");
10258       break;
10259     case bp_read_watchpoint:
10260       fprintf_unfiltered (fp, "rwatch");
10261       break;
10262     case bp_access_watchpoint:
10263       fprintf_unfiltered (fp, "awatch");
10264       break;
10265     default:
10266       internal_error (__FILE__, __LINE__,
10267                       _("Invalid watchpoint type."));
10268     }
10269
10270   fprintf_unfiltered (fp, " %s", w->exp_string);
10271   print_recreate_thread (b, fp);
10272 }
10273
10274 /* Implement the "explains_signal" breakpoint_ops method for
10275    watchpoints.  */
10276
10277 static int
10278 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10279 {
10280   /* A software watchpoint cannot cause a signal other than
10281      GDB_SIGNAL_TRAP.  */
10282   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10283     return 0;
10284
10285   return 1;
10286 }
10287
10288 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10289
10290 static struct breakpoint_ops watchpoint_breakpoint_ops;
10291
10292 /* Implement the "insert" breakpoint_ops method for
10293    masked hardware watchpoints.  */
10294
10295 static int
10296 insert_masked_watchpoint (struct bp_location *bl)
10297 {
10298   struct watchpoint *w = (struct watchpoint *) bl->owner;
10299
10300   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10301                                         bl->watchpoint_type);
10302 }
10303
10304 /* Implement the "remove" breakpoint_ops method for
10305    masked hardware watchpoints.  */
10306
10307 static int
10308 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10309 {
10310   struct watchpoint *w = (struct watchpoint *) bl->owner;
10311
10312   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10313                                         bl->watchpoint_type);
10314 }
10315
10316 /* Implement the "resources_needed" breakpoint_ops method for
10317    masked hardware watchpoints.  */
10318
10319 static int
10320 resources_needed_masked_watchpoint (const struct bp_location *bl)
10321 {
10322   struct watchpoint *w = (struct watchpoint *) bl->owner;
10323
10324   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10325 }
10326
10327 /* Implement the "works_in_software_mode" breakpoint_ops method for
10328    masked hardware watchpoints.  */
10329
10330 static int
10331 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10332 {
10333   return 0;
10334 }
10335
10336 /* Implement the "print_it" breakpoint_ops method for
10337    masked hardware watchpoints.  */
10338
10339 static enum print_stop_action
10340 print_it_masked_watchpoint (bpstat bs)
10341 {
10342   struct breakpoint *b = bs->breakpoint_at;
10343   struct ui_out *uiout = current_uiout;
10344
10345   /* Masked watchpoints have only one location.  */
10346   gdb_assert (b->loc && b->loc->next == NULL);
10347
10348   annotate_watchpoint (b->number);
10349   maybe_print_thread_hit_breakpoint (uiout);
10350
10351   switch (b->type)
10352     {
10353     case bp_hardware_watchpoint:
10354       if (uiout->is_mi_like_p ())
10355         uiout->field_string
10356           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10357       break;
10358
10359     case bp_read_watchpoint:
10360       if (uiout->is_mi_like_p ())
10361         uiout->field_string
10362           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10363       break;
10364
10365     case bp_access_watchpoint:
10366       if (uiout->is_mi_like_p ())
10367         uiout->field_string
10368           ("reason",
10369            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10370       break;
10371     default:
10372       internal_error (__FILE__, __LINE__,
10373                       _("Invalid hardware watchpoint type."));
10374     }
10375
10376   mention (b);
10377   uiout->text (_("\n\
10378 Check the underlying instruction at PC for the memory\n\
10379 address and value which triggered this watchpoint.\n"));
10380   uiout->text ("\n");
10381
10382   /* More than one watchpoint may have been triggered.  */
10383   return PRINT_UNKNOWN;
10384 }
10385
10386 /* Implement the "print_one_detail" breakpoint_ops method for
10387    masked hardware watchpoints.  */
10388
10389 static void
10390 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10391                                     struct ui_out *uiout)
10392 {
10393   struct watchpoint *w = (struct watchpoint *) b;
10394
10395   /* Masked watchpoints have only one location.  */
10396   gdb_assert (b->loc && b->loc->next == NULL);
10397
10398   uiout->text ("\tmask ");
10399   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10400   uiout->text ("\n");
10401 }
10402
10403 /* Implement the "print_mention" breakpoint_ops method for
10404    masked hardware watchpoints.  */
10405
10406 static void
10407 print_mention_masked_watchpoint (struct breakpoint *b)
10408 {
10409   struct watchpoint *w = (struct watchpoint *) b;
10410   struct ui_out *uiout = current_uiout;
10411   const char *tuple_name;
10412
10413   switch (b->type)
10414     {
10415     case bp_hardware_watchpoint:
10416       uiout->text ("Masked hardware watchpoint ");
10417       tuple_name = "wpt";
10418       break;
10419     case bp_read_watchpoint:
10420       uiout->text ("Masked hardware read watchpoint ");
10421       tuple_name = "hw-rwpt";
10422       break;
10423     case bp_access_watchpoint:
10424       uiout->text ("Masked hardware access (read/write) watchpoint ");
10425       tuple_name = "hw-awpt";
10426       break;
10427     default:
10428       internal_error (__FILE__, __LINE__,
10429                       _("Invalid hardware watchpoint type."));
10430     }
10431
10432   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10433   uiout->field_int ("number", b->number);
10434   uiout->text (": ");
10435   uiout->field_string ("exp", w->exp_string);
10436 }
10437
10438 /* Implement the "print_recreate" breakpoint_ops method for
10439    masked hardware watchpoints.  */
10440
10441 static void
10442 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10443 {
10444   struct watchpoint *w = (struct watchpoint *) b;
10445   char tmp[40];
10446
10447   switch (b->type)
10448     {
10449     case bp_hardware_watchpoint:
10450       fprintf_unfiltered (fp, "watch");
10451       break;
10452     case bp_read_watchpoint:
10453       fprintf_unfiltered (fp, "rwatch");
10454       break;
10455     case bp_access_watchpoint:
10456       fprintf_unfiltered (fp, "awatch");
10457       break;
10458     default:
10459       internal_error (__FILE__, __LINE__,
10460                       _("Invalid hardware watchpoint type."));
10461     }
10462
10463   sprintf_vma (tmp, w->hw_wp_mask);
10464   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10465   print_recreate_thread (b, fp);
10466 }
10467
10468 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10469
10470 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10471
10472 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10473
10474 static int
10475 is_masked_watchpoint (const struct breakpoint *b)
10476 {
10477   return b->ops == &masked_watchpoint_breakpoint_ops;
10478 }
10479
10480 /* accessflag:  hw_write:  watch write, 
10481                 hw_read:   watch read, 
10482                 hw_access: watch access (read or write) */
10483 static void
10484 watch_command_1 (const char *arg, int accessflag, int from_tty,
10485                  int just_location, int internal)
10486 {
10487   struct breakpoint *scope_breakpoint = NULL;
10488   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10489   struct value *result;
10490   int saved_bitpos = 0, saved_bitsize = 0;
10491   const char *exp_start = NULL;
10492   const char *exp_end = NULL;
10493   const char *tok, *end_tok;
10494   int toklen = -1;
10495   const char *cond_start = NULL;
10496   const char *cond_end = NULL;
10497   enum bptype bp_type;
10498   int thread = -1;
10499   int pc = 0;
10500   /* Flag to indicate whether we are going to use masks for
10501      the hardware watchpoint.  */
10502   int use_mask = 0;
10503   CORE_ADDR mask = 0;
10504
10505   /* Make sure that we actually have parameters to parse.  */
10506   if (arg != NULL && arg[0] != '\0')
10507     {
10508       const char *value_start;
10509
10510       exp_end = arg + strlen (arg);
10511
10512       /* Look for "parameter value" pairs at the end
10513          of the arguments string.  */
10514       for (tok = exp_end - 1; tok > arg; tok--)
10515         {
10516           /* Skip whitespace at the end of the argument list.  */
10517           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10518             tok--;
10519
10520           /* Find the beginning of the last token.
10521              This is the value of the parameter.  */
10522           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10523             tok--;
10524           value_start = tok + 1;
10525
10526           /* Skip whitespace.  */
10527           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10528             tok--;
10529
10530           end_tok = tok;
10531
10532           /* Find the beginning of the second to last token.
10533              This is the parameter itself.  */
10534           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10535             tok--;
10536           tok++;
10537           toklen = end_tok - tok + 1;
10538
10539           if (toklen == 6 && startswith (tok, "thread"))
10540             {
10541               struct thread_info *thr;
10542               /* At this point we've found a "thread" token, which means
10543                  the user is trying to set a watchpoint that triggers
10544                  only in a specific thread.  */
10545               const char *endp;
10546
10547               if (thread != -1)
10548                 error(_("You can specify only one thread."));
10549
10550               /* Extract the thread ID from the next token.  */
10551               thr = parse_thread_id (value_start, &endp);
10552
10553               /* Check if the user provided a valid thread ID.  */
10554               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10555                 invalid_thread_id_error (value_start);
10556
10557               thread = thr->global_num;
10558             }
10559           else if (toklen == 4 && startswith (tok, "mask"))
10560             {
10561               /* We've found a "mask" token, which means the user wants to
10562                  create a hardware watchpoint that is going to have the mask
10563                  facility.  */
10564               struct value *mask_value, *mark;
10565
10566               if (use_mask)
10567                 error(_("You can specify only one mask."));
10568
10569               use_mask = just_location = 1;
10570
10571               mark = value_mark ();
10572               mask_value = parse_to_comma_and_eval (&value_start);
10573               mask = value_as_address (mask_value);
10574               value_free_to_mark (mark);
10575             }
10576           else
10577             /* We didn't recognize what we found.  We should stop here.  */
10578             break;
10579
10580           /* Truncate the string and get rid of the "parameter value" pair before
10581              the arguments string is parsed by the parse_exp_1 function.  */
10582           exp_end = tok;
10583         }
10584     }
10585   else
10586     exp_end = arg;
10587
10588   /* Parse the rest of the arguments.  From here on out, everything
10589      is in terms of a newly allocated string instead of the original
10590      ARG.  */
10591   std::string expression (arg, exp_end - arg);
10592   exp_start = arg = expression.c_str ();
10593   innermost_block_tracker tracker;
10594   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10595   exp_end = arg;
10596   /* Remove trailing whitespace from the expression before saving it.
10597      This makes the eventual display of the expression string a bit
10598      prettier.  */
10599   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10600     --exp_end;
10601
10602   /* Checking if the expression is not constant.  */
10603   if (watchpoint_exp_is_const (exp.get ()))
10604     {
10605       int len;
10606
10607       len = exp_end - exp_start;
10608       while (len > 0 && isspace (exp_start[len - 1]))
10609         len--;
10610       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10611     }
10612
10613   exp_valid_block = tracker.block ();
10614   struct value *mark = value_mark ();
10615   struct value *val_as_value = nullptr;
10616   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10617                       just_location);
10618
10619   if (val_as_value != NULL && just_location)
10620     {
10621       saved_bitpos = value_bitpos (val_as_value);
10622       saved_bitsize = value_bitsize (val_as_value);
10623     }
10624
10625   value_ref_ptr val;
10626   if (just_location)
10627     {
10628       int ret;
10629
10630       exp_valid_block = NULL;
10631       val = release_value (value_addr (result));
10632       value_free_to_mark (mark);
10633
10634       if (use_mask)
10635         {
10636           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10637                                                    mask);
10638           if (ret == -1)
10639             error (_("This target does not support masked watchpoints."));
10640           else if (ret == -2)
10641             error (_("Invalid mask or memory region."));
10642         }
10643     }
10644   else if (val_as_value != NULL)
10645     val = release_value (val_as_value);
10646
10647   tok = skip_spaces (arg);
10648   end_tok = skip_to_space (tok);
10649
10650   toklen = end_tok - tok;
10651   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10652     {
10653       tok = cond_start = end_tok + 1;
10654       innermost_block_tracker if_tracker;
10655       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10656
10657       /* The watchpoint expression may not be local, but the condition
10658          may still be.  E.g.: `watch global if local > 0'.  */
10659       cond_exp_valid_block = if_tracker.block ();
10660
10661       cond_end = tok;
10662     }
10663   if (*tok)
10664     error (_("Junk at end of command."));
10665
10666   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10667
10668   /* Save this because create_internal_breakpoint below invalidates
10669      'wp_frame'.  */
10670   frame_id watchpoint_frame = get_frame_id (wp_frame);
10671
10672   /* If the expression is "local", then set up a "watchpoint scope"
10673      breakpoint at the point where we've left the scope of the watchpoint
10674      expression.  Create the scope breakpoint before the watchpoint, so
10675      that we will encounter it first in bpstat_stop_status.  */
10676   if (exp_valid_block != NULL && wp_frame != NULL)
10677     {
10678       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10679
10680       if (frame_id_p (caller_frame_id))
10681         {
10682           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10683           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10684
10685           scope_breakpoint
10686             = create_internal_breakpoint (caller_arch, caller_pc,
10687                                           bp_watchpoint_scope,
10688                                           &momentary_breakpoint_ops);
10689
10690           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10691           wp_frame = NULL;
10692
10693           scope_breakpoint->enable_state = bp_enabled;
10694
10695           /* Automatically delete the breakpoint when it hits.  */
10696           scope_breakpoint->disposition = disp_del;
10697
10698           /* Only break in the proper frame (help with recursion).  */
10699           scope_breakpoint->frame_id = caller_frame_id;
10700
10701           /* Set the address at which we will stop.  */
10702           scope_breakpoint->loc->gdbarch = caller_arch;
10703           scope_breakpoint->loc->requested_address = caller_pc;
10704           scope_breakpoint->loc->address
10705             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10706                                          scope_breakpoint->loc->requested_address,
10707                                          scope_breakpoint->type);
10708         }
10709     }
10710
10711   /* Now set up the breakpoint.  We create all watchpoints as hardware
10712      watchpoints here even if hardware watchpoints are turned off, a call
10713      to update_watchpoint later in this function will cause the type to
10714      drop back to bp_watchpoint (software watchpoint) if required.  */
10715
10716   if (accessflag == hw_read)
10717     bp_type = bp_read_watchpoint;
10718   else if (accessflag == hw_access)
10719     bp_type = bp_access_watchpoint;
10720   else
10721     bp_type = bp_hardware_watchpoint;
10722
10723   std::unique_ptr<watchpoint> w (new watchpoint ());
10724
10725   if (use_mask)
10726     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10727                                           &masked_watchpoint_breakpoint_ops);
10728   else
10729     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10730                                           &watchpoint_breakpoint_ops);
10731   w->thread = thread;
10732   w->disposition = disp_donttouch;
10733   w->pspace = current_program_space;
10734   w->exp = std::move (exp);
10735   w->exp_valid_block = exp_valid_block;
10736   w->cond_exp_valid_block = cond_exp_valid_block;
10737   if (just_location)
10738     {
10739       struct type *t = value_type (val.get ());
10740       CORE_ADDR addr = value_as_address (val.get ());
10741
10742       w->exp_string_reparse
10743         = current_language->la_watch_location_expression (t, addr).release ();
10744
10745       w->exp_string = xstrprintf ("-location %.*s",
10746                                   (int) (exp_end - exp_start), exp_start);
10747     }
10748   else
10749     w->exp_string = savestring (exp_start, exp_end - exp_start);
10750
10751   if (use_mask)
10752     {
10753       w->hw_wp_mask = mask;
10754     }
10755   else
10756     {
10757       w->val = val;
10758       w->val_bitpos = saved_bitpos;
10759       w->val_bitsize = saved_bitsize;
10760       w->val_valid = 1;
10761     }
10762
10763   if (cond_start)
10764     w->cond_string = savestring (cond_start, cond_end - cond_start);
10765   else
10766     w->cond_string = 0;
10767
10768   if (frame_id_p (watchpoint_frame))
10769     {
10770       w->watchpoint_frame = watchpoint_frame;
10771       w->watchpoint_thread = inferior_ptid;
10772     }
10773   else
10774     {
10775       w->watchpoint_frame = null_frame_id;
10776       w->watchpoint_thread = null_ptid;
10777     }
10778
10779   if (scope_breakpoint != NULL)
10780     {
10781       /* The scope breakpoint is related to the watchpoint.  We will
10782          need to act on them together.  */
10783       w->related_breakpoint = scope_breakpoint;
10784       scope_breakpoint->related_breakpoint = w.get ();
10785     }
10786
10787   if (!just_location)
10788     value_free_to_mark (mark);
10789
10790   /* Finally update the new watchpoint.  This creates the locations
10791      that should be inserted.  */
10792   update_watchpoint (w.get (), 1);
10793
10794   install_breakpoint (internal, std::move (w), 1);
10795 }
10796
10797 /* Return count of debug registers needed to watch the given expression.
10798    If the watchpoint cannot be handled in hardware return zero.  */
10799
10800 static int
10801 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10802 {
10803   int found_memory_cnt = 0;
10804
10805   /* Did the user specifically forbid us to use hardware watchpoints? */
10806   if (!can_use_hw_watchpoints)
10807     return 0;
10808
10809   gdb_assert (!vals.empty ());
10810   struct value *head = vals[0].get ();
10811
10812   /* Make sure that the value of the expression depends only upon
10813      memory contents, and values computed from them within GDB.  If we
10814      find any register references or function calls, we can't use a
10815      hardware watchpoint.
10816
10817      The idea here is that evaluating an expression generates a series
10818      of values, one holding the value of every subexpression.  (The
10819      expression a*b+c has five subexpressions: a, b, a*b, c, and
10820      a*b+c.)  GDB's values hold almost enough information to establish
10821      the criteria given above --- they identify memory lvalues,
10822      register lvalues, computed values, etcetera.  So we can evaluate
10823      the expression, and then scan the chain of values that leaves
10824      behind to decide whether we can detect any possible change to the
10825      expression's final value using only hardware watchpoints.
10826
10827      However, I don't think that the values returned by inferior
10828      function calls are special in any way.  So this function may not
10829      notice that an expression involving an inferior function call
10830      can't be watched with hardware watchpoints.  FIXME.  */
10831   for (const value_ref_ptr &iter : vals)
10832     {
10833       struct value *v = iter.get ();
10834
10835       if (VALUE_LVAL (v) == lval_memory)
10836         {
10837           if (v != head && value_lazy (v))
10838             /* A lazy memory lvalue in the chain is one that GDB never
10839                needed to fetch; we either just used its address (e.g.,
10840                `a' in `a.b') or we never needed it at all (e.g., `a'
10841                in `a,b').  This doesn't apply to HEAD; if that is
10842                lazy then it was not readable, but watch it anyway.  */
10843             ;
10844           else
10845             {
10846               /* Ahh, memory we actually used!  Check if we can cover
10847                  it with hardware watchpoints.  */
10848               struct type *vtype = check_typedef (value_type (v));
10849
10850               /* We only watch structs and arrays if user asked for it
10851                  explicitly, never if they just happen to appear in a
10852                  middle of some value chain.  */
10853               if (v == head
10854                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10855                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10856                 {
10857                   CORE_ADDR vaddr = value_address (v);
10858                   int len;
10859                   int num_regs;
10860
10861                   len = (target_exact_watchpoints
10862                          && is_scalar_type_recursive (vtype))?
10863                     1 : TYPE_LENGTH (value_type (v));
10864
10865                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10866                   if (!num_regs)
10867                     return 0;
10868                   else
10869                     found_memory_cnt += num_regs;
10870                 }
10871             }
10872         }
10873       else if (VALUE_LVAL (v) != not_lval
10874                && deprecated_value_modifiable (v) == 0)
10875         return 0;       /* These are values from the history (e.g., $1).  */
10876       else if (VALUE_LVAL (v) == lval_register)
10877         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10878     }
10879
10880   /* The expression itself looks suitable for using a hardware
10881      watchpoint, but give the target machine a chance to reject it.  */
10882   return found_memory_cnt;
10883 }
10884
10885 void
10886 watch_command_wrapper (const char *arg, int from_tty, int internal)
10887 {
10888   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10889 }
10890
10891 /* A helper function that looks for the "-location" argument and then
10892    calls watch_command_1.  */
10893
10894 static void
10895 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10896 {
10897   int just_location = 0;
10898
10899   if (arg
10900       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10901           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10902     {
10903       arg = skip_spaces (arg);
10904       just_location = 1;
10905     }
10906
10907   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10908 }
10909
10910 static void
10911 watch_command (const char *arg, int from_tty)
10912 {
10913   watch_maybe_just_location (arg, hw_write, from_tty);
10914 }
10915
10916 void
10917 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10918 {
10919   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10920 }
10921
10922 static void
10923 rwatch_command (const char *arg, int from_tty)
10924 {
10925   watch_maybe_just_location (arg, hw_read, from_tty);
10926 }
10927
10928 void
10929 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10930 {
10931   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10932 }
10933
10934 static void
10935 awatch_command (const char *arg, int from_tty)
10936 {
10937   watch_maybe_just_location (arg, hw_access, from_tty);
10938 }
10939 \f
10940
10941 /* Data for the FSM that manages the until(location)/advance commands
10942    in infcmd.c.  Here because it uses the mechanisms of
10943    breakpoints.  */
10944
10945 struct until_break_fsm : public thread_fsm
10946 {
10947   /* The thread that was current when the command was executed.  */
10948   int thread;
10949
10950   /* The breakpoint set at the destination location.  */
10951   breakpoint_up location_breakpoint;
10952
10953   /* Breakpoint set at the return address in the caller frame.  May be
10954      NULL.  */
10955   breakpoint_up caller_breakpoint;
10956
10957   until_break_fsm (struct interp *cmd_interp, int thread,
10958                    breakpoint_up &&location_breakpoint,
10959                    breakpoint_up &&caller_breakpoint)
10960     : thread_fsm (cmd_interp),
10961       thread (thread),
10962       location_breakpoint (std::move (location_breakpoint)),
10963       caller_breakpoint (std::move (caller_breakpoint))
10964   {
10965   }
10966
10967   void clean_up (struct thread_info *thread) override;
10968   bool should_stop (struct thread_info *thread) override;
10969   enum async_reply_reason do_async_reply_reason () override;
10970 };
10971
10972 /* Implementation of the 'should_stop' FSM method for the
10973    until(location)/advance commands.  */
10974
10975 bool
10976 until_break_fsm::should_stop (struct thread_info *tp)
10977 {
10978   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10979                               location_breakpoint.get ()) != NULL
10980       || (caller_breakpoint != NULL
10981           && bpstat_find_breakpoint (tp->control.stop_bpstat,
10982                                      caller_breakpoint.get ()) != NULL))
10983     set_finished ();
10984
10985   return true;
10986 }
10987
10988 /* Implementation of the 'clean_up' FSM method for the
10989    until(location)/advance commands.  */
10990
10991 void
10992 until_break_fsm::clean_up (struct thread_info *)
10993 {
10994   /* Clean up our temporary breakpoints.  */
10995   location_breakpoint.reset ();
10996   caller_breakpoint.reset ();
10997   delete_longjmp_breakpoint (thread);
10998 }
10999
11000 /* Implementation of the 'async_reply_reason' FSM method for the
11001    until(location)/advance commands.  */
11002
11003 enum async_reply_reason
11004 until_break_fsm::do_async_reply_reason ()
11005 {
11006   return EXEC_ASYNC_LOCATION_REACHED;
11007 }
11008
11009 void
11010 until_break_command (const char *arg, int from_tty, int anywhere)
11011 {
11012   struct frame_info *frame;
11013   struct gdbarch *frame_gdbarch;
11014   struct frame_id stack_frame_id;
11015   struct frame_id caller_frame_id;
11016   int thread;
11017   struct thread_info *tp;
11018
11019   clear_proceed_status (0);
11020
11021   /* Set a breakpoint where the user wants it and at return from
11022      this function.  */
11023
11024   event_location_up location = string_to_event_location (&arg, current_language);
11025
11026   std::vector<symtab_and_line> sals
11027     = (last_displayed_sal_is_valid ()
11028        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11029                         get_last_displayed_symtab (),
11030                         get_last_displayed_line ())
11031        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11032                         NULL, (struct symtab *) NULL, 0));
11033
11034   if (sals.size () != 1)
11035     error (_("Couldn't get information on specified line."));
11036
11037   symtab_and_line &sal = sals[0];
11038
11039   if (*arg)
11040     error (_("Junk at end of arguments."));
11041
11042   resolve_sal_pc (&sal);
11043
11044   tp = inferior_thread ();
11045   thread = tp->global_num;
11046
11047   /* Note linespec handling above invalidates the frame chain.
11048      Installing a breakpoint also invalidates the frame chain (as it
11049      may need to switch threads), so do any frame handling before
11050      that.  */
11051
11052   frame = get_selected_frame (NULL);
11053   frame_gdbarch = get_frame_arch (frame);
11054   stack_frame_id = get_stack_frame_id (frame);
11055   caller_frame_id = frame_unwind_caller_id (frame);
11056
11057   /* Keep within the current frame, or in frames called by the current
11058      one.  */
11059
11060   breakpoint_up caller_breakpoint;
11061
11062   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11063
11064   if (frame_id_p (caller_frame_id))
11065     {
11066       struct symtab_and_line sal2;
11067       struct gdbarch *caller_gdbarch;
11068
11069       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11070       sal2.pc = frame_unwind_caller_pc (frame);
11071       caller_gdbarch = frame_unwind_caller_arch (frame);
11072       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11073                                                     sal2,
11074                                                     caller_frame_id,
11075                                                     bp_until);
11076
11077       set_longjmp_breakpoint (tp, caller_frame_id);
11078       lj_deleter.emplace (thread);
11079     }
11080
11081   /* set_momentary_breakpoint could invalidate FRAME.  */
11082   frame = NULL;
11083
11084   breakpoint_up location_breakpoint;
11085   if (anywhere)
11086     /* If the user told us to continue until a specified location,
11087        we don't specify a frame at which we need to stop.  */
11088     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11089                                                     null_frame_id, bp_until);
11090   else
11091     /* Otherwise, specify the selected frame, because we want to stop
11092        only at the very same frame.  */
11093     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11094                                                     stack_frame_id, bp_until);
11095
11096   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11097                                         std::move (location_breakpoint),
11098                                         std::move (caller_breakpoint));
11099
11100   if (lj_deleter)
11101     lj_deleter->release ();
11102
11103   proceed (-1, GDB_SIGNAL_DEFAULT);
11104 }
11105
11106 /* This function attempts to parse an optional "if <cond>" clause
11107    from the arg string.  If one is not found, it returns NULL.
11108
11109    Else, it returns a pointer to the condition string.  (It does not
11110    attempt to evaluate the string against a particular block.)  And,
11111    it updates arg to point to the first character following the parsed
11112    if clause in the arg string.  */
11113
11114 const char *
11115 ep_parse_optional_if_clause (const char **arg)
11116 {
11117   const char *cond_string;
11118
11119   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11120     return NULL;
11121
11122   /* Skip the "if" keyword.  */
11123   (*arg) += 2;
11124
11125   /* Skip any extra leading whitespace, and record the start of the
11126      condition string.  */
11127   *arg = skip_spaces (*arg);
11128   cond_string = *arg;
11129
11130   /* Assume that the condition occupies the remainder of the arg
11131      string.  */
11132   (*arg) += strlen (cond_string);
11133
11134   return cond_string;
11135 }
11136
11137 /* Commands to deal with catching events, such as signals, exceptions,
11138    process start/exit, etc.  */
11139
11140 typedef enum
11141 {
11142   catch_fork_temporary, catch_vfork_temporary,
11143   catch_fork_permanent, catch_vfork_permanent
11144 }
11145 catch_fork_kind;
11146
11147 static void
11148 catch_fork_command_1 (const char *arg, int from_tty,
11149                       struct cmd_list_element *command)
11150 {
11151   struct gdbarch *gdbarch = get_current_arch ();
11152   const char *cond_string = NULL;
11153   catch_fork_kind fork_kind;
11154   int tempflag;
11155
11156   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11157   tempflag = (fork_kind == catch_fork_temporary
11158               || fork_kind == catch_vfork_temporary);
11159
11160   if (!arg)
11161     arg = "";
11162   arg = skip_spaces (arg);
11163
11164   /* The allowed syntax is:
11165      catch [v]fork
11166      catch [v]fork if <cond>
11167
11168      First, check if there's an if clause.  */
11169   cond_string = ep_parse_optional_if_clause (&arg);
11170
11171   if ((*arg != '\0') && !isspace (*arg))
11172     error (_("Junk at end of arguments."));
11173
11174   /* If this target supports it, create a fork or vfork catchpoint
11175      and enable reporting of such events.  */
11176   switch (fork_kind)
11177     {
11178     case catch_fork_temporary:
11179     case catch_fork_permanent:
11180       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11181                                           &catch_fork_breakpoint_ops);
11182       break;
11183     case catch_vfork_temporary:
11184     case catch_vfork_permanent:
11185       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11186                                           &catch_vfork_breakpoint_ops);
11187       break;
11188     default:
11189       error (_("unsupported or unknown fork kind; cannot catch it"));
11190       break;
11191     }
11192 }
11193
11194 static void
11195 catch_exec_command_1 (const char *arg, int from_tty,
11196                       struct cmd_list_element *command)
11197 {
11198   struct gdbarch *gdbarch = get_current_arch ();
11199   int tempflag;
11200   const char *cond_string = NULL;
11201
11202   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11203
11204   if (!arg)
11205     arg = "";
11206   arg = skip_spaces (arg);
11207
11208   /* The allowed syntax is:
11209      catch exec
11210      catch exec if <cond>
11211
11212      First, check if there's an if clause.  */
11213   cond_string = ep_parse_optional_if_clause (&arg);
11214
11215   if ((*arg != '\0') && !isspace (*arg))
11216     error (_("Junk at end of arguments."));
11217
11218   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11219   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11220                    &catch_exec_breakpoint_ops);
11221   c->exec_pathname = NULL;
11222
11223   install_breakpoint (0, std::move (c), 1);
11224 }
11225
11226 void
11227 init_ada_exception_breakpoint (struct breakpoint *b,
11228                                struct gdbarch *gdbarch,
11229                                struct symtab_and_line sal,
11230                                const char *addr_string,
11231                                const struct breakpoint_ops *ops,
11232                                int tempflag,
11233                                int enabled,
11234                                int from_tty)
11235 {
11236   if (from_tty)
11237     {
11238       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11239       if (!loc_gdbarch)
11240         loc_gdbarch = gdbarch;
11241
11242       describe_other_breakpoints (loc_gdbarch,
11243                                   sal.pspace, sal.pc, sal.section, -1);
11244       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11245          version for exception catchpoints, because two catchpoints
11246          used for different exception names will use the same address.
11247          In this case, a "breakpoint ... also set at..." warning is
11248          unproductive.  Besides, the warning phrasing is also a bit
11249          inappropriate, we should use the word catchpoint, and tell
11250          the user what type of catchpoint it is.  The above is good
11251          enough for now, though.  */
11252     }
11253
11254   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11255
11256   b->enable_state = enabled ? bp_enabled : bp_disabled;
11257   b->disposition = tempflag ? disp_del : disp_donttouch;
11258   b->location = string_to_event_location (&addr_string,
11259                                           language_def (language_ada));
11260   b->language = language_ada;
11261 }
11262
11263 static void
11264 catch_command (const char *arg, int from_tty)
11265 {
11266   error (_("Catch requires an event name."));
11267 }
11268 \f
11269
11270 static void
11271 tcatch_command (const char *arg, int from_tty)
11272 {
11273   error (_("Catch requires an event name."));
11274 }
11275
11276 /* Compare two breakpoints and return a strcmp-like result.  */
11277
11278 static int
11279 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11280 {
11281   uintptr_t ua = (uintptr_t) a;
11282   uintptr_t ub = (uintptr_t) b;
11283
11284   if (a->number < b->number)
11285     return -1;
11286   else if (a->number > b->number)
11287     return 1;
11288
11289   /* Now sort by address, in case we see, e..g, two breakpoints with
11290      the number 0.  */
11291   if (ua < ub)
11292     return -1;
11293   return ua > ub ? 1 : 0;
11294 }
11295
11296 /* Delete breakpoints by address or line.  */
11297
11298 static void
11299 clear_command (const char *arg, int from_tty)
11300 {
11301   struct breakpoint *b;
11302   int default_match;
11303
11304   std::vector<symtab_and_line> decoded_sals;
11305   symtab_and_line last_sal;
11306   gdb::array_view<symtab_and_line> sals;
11307   if (arg)
11308     {
11309       decoded_sals
11310         = decode_line_with_current_source (arg,
11311                                            (DECODE_LINE_FUNFIRSTLINE
11312                                             | DECODE_LINE_LIST_MODE));
11313       default_match = 0;
11314       sals = decoded_sals;
11315     }
11316   else
11317     {
11318       /* Set sal's line, symtab, pc, and pspace to the values
11319          corresponding to the last call to print_frame_info.  If the
11320          codepoint is not valid, this will set all the fields to 0.  */
11321       last_sal = get_last_displayed_sal ();
11322       if (last_sal.symtab == 0)
11323         error (_("No source file specified."));
11324
11325       default_match = 1;
11326       sals = last_sal;
11327     }
11328
11329   /* We don't call resolve_sal_pc here.  That's not as bad as it
11330      seems, because all existing breakpoints typically have both
11331      file/line and pc set.  So, if clear is given file/line, we can
11332      match this to existing breakpoint without obtaining pc at all.
11333
11334      We only support clearing given the address explicitly 
11335      present in breakpoint table.  Say, we've set breakpoint 
11336      at file:line.  There were several PC values for that file:line,
11337      due to optimization, all in one block.
11338
11339      We've picked one PC value.  If "clear" is issued with another
11340      PC corresponding to the same file:line, the breakpoint won't
11341      be cleared.  We probably can still clear the breakpoint, but 
11342      since the other PC value is never presented to user, user
11343      can only find it by guessing, and it does not seem important
11344      to support that.  */
11345
11346   /* For each line spec given, delete bps which correspond to it.  Do
11347      it in two passes, solely to preserve the current behavior that
11348      from_tty is forced true if we delete more than one
11349      breakpoint.  */
11350
11351   std::vector<struct breakpoint *> found;
11352   for (const auto &sal : sals)
11353     {
11354       const char *sal_fullname;
11355
11356       /* If exact pc given, clear bpts at that pc.
11357          If line given (pc == 0), clear all bpts on specified line.
11358          If defaulting, clear all bpts on default line
11359          or at default pc.
11360
11361          defaulting    sal.pc != 0    tests to do
11362
11363          0              1             pc
11364          1              1             pc _and_ line
11365          0              0             line
11366          1              0             <can't happen> */
11367
11368       sal_fullname = (sal.symtab == NULL
11369                       ? NULL : symtab_to_fullname (sal.symtab));
11370
11371       /* Find all matching breakpoints and add them to 'found'.  */
11372       ALL_BREAKPOINTS (b)
11373         {
11374           int match = 0;
11375           /* Are we going to delete b?  */
11376           if (b->type != bp_none && !is_watchpoint (b))
11377             {
11378               struct bp_location *loc = b->loc;
11379               for (; loc; loc = loc->next)
11380                 {
11381                   /* If the user specified file:line, don't allow a PC
11382                      match.  This matches historical gdb behavior.  */
11383                   int pc_match = (!sal.explicit_line
11384                                   && sal.pc
11385                                   && (loc->pspace == sal.pspace)
11386                                   && (loc->address == sal.pc)
11387                                   && (!section_is_overlay (loc->section)
11388                                       || loc->section == sal.section));
11389                   int line_match = 0;
11390
11391                   if ((default_match || sal.explicit_line)
11392                       && loc->symtab != NULL
11393                       && sal_fullname != NULL
11394                       && sal.pspace == loc->pspace
11395                       && loc->line_number == sal.line
11396                       && filename_cmp (symtab_to_fullname (loc->symtab),
11397                                        sal_fullname) == 0)
11398                     line_match = 1;
11399
11400                   if (pc_match || line_match)
11401                     {
11402                       match = 1;
11403                       break;
11404                     }
11405                 }
11406             }
11407
11408           if (match)
11409             found.push_back (b);
11410         }
11411     }
11412
11413   /* Now go thru the 'found' chain and delete them.  */
11414   if (found.empty ())
11415     {
11416       if (arg)
11417         error (_("No breakpoint at %s."), arg);
11418       else
11419         error (_("No breakpoint at this line."));
11420     }
11421
11422   /* Remove duplicates from the vec.  */
11423   std::sort (found.begin (), found.end (),
11424              [] (const breakpoint *bp_a, const breakpoint *bp_b)
11425              {
11426                return compare_breakpoints (bp_a, bp_b) < 0;
11427              });
11428   found.erase (std::unique (found.begin (), found.end (),
11429                             [] (const breakpoint *bp_a, const breakpoint *bp_b)
11430                             {
11431                               return compare_breakpoints (bp_a, bp_b) == 0;
11432                             }),
11433                found.end ());
11434
11435   if (found.size () > 1)
11436     from_tty = 1;       /* Always report if deleted more than one.  */
11437   if (from_tty)
11438     {
11439       if (found.size () == 1)
11440         printf_unfiltered (_("Deleted breakpoint "));
11441       else
11442         printf_unfiltered (_("Deleted breakpoints "));
11443     }
11444
11445   for (breakpoint *iter : found)
11446     {
11447       if (from_tty)
11448         printf_unfiltered ("%d ", iter->number);
11449       delete_breakpoint (iter);
11450     }
11451   if (from_tty)
11452     putchar_unfiltered ('\n');
11453 }
11454 \f
11455 /* Delete breakpoint in BS if they are `delete' breakpoints and
11456    all breakpoints that are marked for deletion, whether hit or not.
11457    This is called after any breakpoint is hit, or after errors.  */
11458
11459 void
11460 breakpoint_auto_delete (bpstat bs)
11461 {
11462   struct breakpoint *b, *b_tmp;
11463
11464   for (; bs; bs = bs->next)
11465     if (bs->breakpoint_at
11466         && bs->breakpoint_at->disposition == disp_del
11467         && bs->stop)
11468       delete_breakpoint (bs->breakpoint_at);
11469
11470   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11471   {
11472     if (b->disposition == disp_del_at_next_stop)
11473       delete_breakpoint (b);
11474   }
11475 }
11476
11477 /* A comparison function for bp_location AP and BP being interfaced to
11478    qsort.  Sort elements primarily by their ADDRESS (no matter what
11479    does breakpoint_address_is_meaningful say for its OWNER),
11480    secondarily by ordering first permanent elements and
11481    terciarily just ensuring the array is sorted stable way despite
11482    qsort being an unstable algorithm.  */
11483
11484 static int
11485 bp_locations_compare (const void *ap, const void *bp)
11486 {
11487   const struct bp_location *a = *(const struct bp_location **) ap;
11488   const struct bp_location *b = *(const struct bp_location **) bp;
11489
11490   if (a->address != b->address)
11491     return (a->address > b->address) - (a->address < b->address);
11492
11493   /* Sort locations at the same address by their pspace number, keeping
11494      locations of the same inferior (in a multi-inferior environment)
11495      grouped.  */
11496
11497   if (a->pspace->num != b->pspace->num)
11498     return ((a->pspace->num > b->pspace->num)
11499             - (a->pspace->num < b->pspace->num));
11500
11501   /* Sort permanent breakpoints first.  */
11502   if (a->permanent != b->permanent)
11503     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11504
11505   /* Make the internal GDB representation stable across GDB runs
11506      where A and B memory inside GDB can differ.  Breakpoint locations of
11507      the same type at the same address can be sorted in arbitrary order.  */
11508
11509   if (a->owner->number != b->owner->number)
11510     return ((a->owner->number > b->owner->number)
11511             - (a->owner->number < b->owner->number));
11512
11513   return (a > b) - (a < b);
11514 }
11515
11516 /* Set bp_locations_placed_address_before_address_max and
11517    bp_locations_shadow_len_after_address_max according to the current
11518    content of the bp_locations array.  */
11519
11520 static void
11521 bp_locations_target_extensions_update (void)
11522 {
11523   struct bp_location *bl, **blp_tmp;
11524
11525   bp_locations_placed_address_before_address_max = 0;
11526   bp_locations_shadow_len_after_address_max = 0;
11527
11528   ALL_BP_LOCATIONS (bl, blp_tmp)
11529     {
11530       CORE_ADDR start, end, addr;
11531
11532       if (!bp_location_has_shadow (bl))
11533         continue;
11534
11535       start = bl->target_info.placed_address;
11536       end = start + bl->target_info.shadow_len;
11537
11538       gdb_assert (bl->address >= start);
11539       addr = bl->address - start;
11540       if (addr > bp_locations_placed_address_before_address_max)
11541         bp_locations_placed_address_before_address_max = addr;
11542
11543       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11544
11545       gdb_assert (bl->address < end);
11546       addr = end - bl->address;
11547       if (addr > bp_locations_shadow_len_after_address_max)
11548         bp_locations_shadow_len_after_address_max = addr;
11549     }
11550 }
11551
11552 /* Download tracepoint locations if they haven't been.  */
11553
11554 static void
11555 download_tracepoint_locations (void)
11556 {
11557   struct breakpoint *b;
11558   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11559
11560   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11561
11562   ALL_TRACEPOINTS (b)
11563     {
11564       struct bp_location *bl;
11565       struct tracepoint *t;
11566       int bp_location_downloaded = 0;
11567
11568       if ((b->type == bp_fast_tracepoint
11569            ? !may_insert_fast_tracepoints
11570            : !may_insert_tracepoints))
11571         continue;
11572
11573       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11574         {
11575           if (target_can_download_tracepoint ())
11576             can_download_tracepoint = TRIBOOL_TRUE;
11577           else
11578             can_download_tracepoint = TRIBOOL_FALSE;
11579         }
11580
11581       if (can_download_tracepoint == TRIBOOL_FALSE)
11582         break;
11583
11584       for (bl = b->loc; bl; bl = bl->next)
11585         {
11586           /* In tracepoint, locations are _never_ duplicated, so
11587              should_be_inserted is equivalent to
11588              unduplicated_should_be_inserted.  */
11589           if (!should_be_inserted (bl) || bl->inserted)
11590             continue;
11591
11592           switch_to_program_space_and_thread (bl->pspace);
11593
11594           target_download_tracepoint (bl);
11595
11596           bl->inserted = 1;
11597           bp_location_downloaded = 1;
11598         }
11599       t = (struct tracepoint *) b;
11600       t->number_on_target = b->number;
11601       if (bp_location_downloaded)
11602         gdb::observers::breakpoint_modified.notify (b);
11603     }
11604 }
11605
11606 /* Swap the insertion/duplication state between two locations.  */
11607
11608 static void
11609 swap_insertion (struct bp_location *left, struct bp_location *right)
11610 {
11611   const int left_inserted = left->inserted;
11612   const int left_duplicate = left->duplicate;
11613   const int left_needs_update = left->needs_update;
11614   const struct bp_target_info left_target_info = left->target_info;
11615
11616   /* Locations of tracepoints can never be duplicated.  */
11617   if (is_tracepoint (left->owner))
11618     gdb_assert (!left->duplicate);
11619   if (is_tracepoint (right->owner))
11620     gdb_assert (!right->duplicate);
11621
11622   left->inserted = right->inserted;
11623   left->duplicate = right->duplicate;
11624   left->needs_update = right->needs_update;
11625   left->target_info = right->target_info;
11626   right->inserted = left_inserted;
11627   right->duplicate = left_duplicate;
11628   right->needs_update = left_needs_update;
11629   right->target_info = left_target_info;
11630 }
11631
11632 /* Force the re-insertion of the locations at ADDRESS.  This is called
11633    once a new/deleted/modified duplicate location is found and we are evaluating
11634    conditions on the target's side.  Such conditions need to be updated on
11635    the target.  */
11636
11637 static void
11638 force_breakpoint_reinsertion (struct bp_location *bl)
11639 {
11640   struct bp_location **locp = NULL, **loc2p;
11641   struct bp_location *loc;
11642   CORE_ADDR address = 0;
11643   int pspace_num;
11644
11645   address = bl->address;
11646   pspace_num = bl->pspace->num;
11647
11648   /* This is only meaningful if the target is
11649      evaluating conditions and if the user has
11650      opted for condition evaluation on the target's
11651      side.  */
11652   if (gdb_evaluates_breakpoint_condition_p ()
11653       || !target_supports_evaluation_of_breakpoint_conditions ())
11654     return;
11655
11656   /* Flag all breakpoint locations with this address and
11657      the same program space as the location
11658      as "its condition has changed".  We need to
11659      update the conditions on the target's side.  */
11660   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11661     {
11662       loc = *loc2p;
11663
11664       if (!is_breakpoint (loc->owner)
11665           || pspace_num != loc->pspace->num)
11666         continue;
11667
11668       /* Flag the location appropriately.  We use a different state to
11669          let everyone know that we already updated the set of locations
11670          with addr bl->address and program space bl->pspace.  This is so
11671          we don't have to keep calling these functions just to mark locations
11672          that have already been marked.  */
11673       loc->condition_changed = condition_updated;
11674
11675       /* Free the agent expression bytecode as well.  We will compute
11676          it later on.  */
11677       loc->cond_bytecode.reset ();
11678     }
11679 }
11680 /* Called whether new breakpoints are created, or existing breakpoints
11681    deleted, to update the global location list and recompute which
11682    locations are duplicate of which.
11683
11684    The INSERT_MODE flag determines whether locations may not, may, or
11685    shall be inserted now.  See 'enum ugll_insert_mode' for more
11686    info.  */
11687
11688 static void
11689 update_global_location_list (enum ugll_insert_mode insert_mode)
11690 {
11691   struct breakpoint *b;
11692   struct bp_location **locp, *loc;
11693   /* Last breakpoint location address that was marked for update.  */
11694   CORE_ADDR last_addr = 0;
11695   /* Last breakpoint location program space that was marked for update.  */
11696   int last_pspace_num = -1;
11697
11698   /* Used in the duplicates detection below.  When iterating over all
11699      bp_locations, points to the first bp_location of a given address.
11700      Breakpoints and watchpoints of different types are never
11701      duplicates of each other.  Keep one pointer for each type of
11702      breakpoint/watchpoint, so we only need to loop over all locations
11703      once.  */
11704   struct bp_location *bp_loc_first;  /* breakpoint */
11705   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11706   struct bp_location *awp_loc_first; /* access watchpoint */
11707   struct bp_location *rwp_loc_first; /* read watchpoint */
11708
11709   /* Saved former bp_locations array which we compare against the newly
11710      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11711   struct bp_location **old_locp;
11712   unsigned old_locations_count;
11713   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11714
11715   old_locations_count = bp_locations_count;
11716   bp_locations = NULL;
11717   bp_locations_count = 0;
11718
11719   ALL_BREAKPOINTS (b)
11720     for (loc = b->loc; loc; loc = loc->next)
11721       bp_locations_count++;
11722
11723   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11724   locp = bp_locations;
11725   ALL_BREAKPOINTS (b)
11726     for (loc = b->loc; loc; loc = loc->next)
11727       *locp++ = loc;
11728   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11729          bp_locations_compare);
11730
11731   bp_locations_target_extensions_update ();
11732
11733   /* Identify bp_location instances that are no longer present in the
11734      new list, and therefore should be freed.  Note that it's not
11735      necessary that those locations should be removed from inferior --
11736      if there's another location at the same address (previously
11737      marked as duplicate), we don't need to remove/insert the
11738      location.
11739      
11740      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11741      and former bp_location array state respectively.  */
11742
11743   locp = bp_locations;
11744   for (old_locp = old_locations.get ();
11745        old_locp < old_locations.get () + old_locations_count;
11746        old_locp++)
11747     {
11748       struct bp_location *old_loc = *old_locp;
11749       struct bp_location **loc2p;
11750
11751       /* Tells if 'old_loc' is found among the new locations.  If
11752          not, we have to free it.  */
11753       int found_object = 0;
11754       /* Tells if the location should remain inserted in the target.  */
11755       int keep_in_target = 0;
11756       int removed = 0;
11757
11758       /* Skip LOCP entries which will definitely never be needed.
11759          Stop either at or being the one matching OLD_LOC.  */
11760       while (locp < bp_locations + bp_locations_count
11761              && (*locp)->address < old_loc->address)
11762         locp++;
11763
11764       for (loc2p = locp;
11765            (loc2p < bp_locations + bp_locations_count
11766             && (*loc2p)->address == old_loc->address);
11767            loc2p++)
11768         {
11769           /* Check if this is a new/duplicated location or a duplicated
11770              location that had its condition modified.  If so, we want to send
11771              its condition to the target if evaluation of conditions is taking
11772              place there.  */
11773           if ((*loc2p)->condition_changed == condition_modified
11774               && (last_addr != old_loc->address
11775                   || last_pspace_num != old_loc->pspace->num))
11776             {
11777               force_breakpoint_reinsertion (*loc2p);
11778               last_pspace_num = old_loc->pspace->num;
11779             }
11780
11781           if (*loc2p == old_loc)
11782             found_object = 1;
11783         }
11784
11785       /* We have already handled this address, update it so that we don't
11786          have to go through updates again.  */
11787       last_addr = old_loc->address;
11788
11789       /* Target-side condition evaluation: Handle deleted locations.  */
11790       if (!found_object)
11791         force_breakpoint_reinsertion (old_loc);
11792
11793       /* If this location is no longer present, and inserted, look if
11794          there's maybe a new location at the same address.  If so,
11795          mark that one inserted, and don't remove this one.  This is
11796          needed so that we don't have a time window where a breakpoint
11797          at certain location is not inserted.  */
11798
11799       if (old_loc->inserted)
11800         {
11801           /* If the location is inserted now, we might have to remove
11802              it.  */
11803
11804           if (found_object && should_be_inserted (old_loc))
11805             {
11806               /* The location is still present in the location list,
11807                  and still should be inserted.  Don't do anything.  */
11808               keep_in_target = 1;
11809             }
11810           else
11811             {
11812               /* This location still exists, but it won't be kept in the
11813                  target since it may have been disabled.  We proceed to
11814                  remove its target-side condition.  */
11815
11816               /* The location is either no longer present, or got
11817                  disabled.  See if there's another location at the
11818                  same address, in which case we don't need to remove
11819                  this one from the target.  */
11820
11821               /* OLD_LOC comes from existing struct breakpoint.  */
11822               if (breakpoint_address_is_meaningful (old_loc->owner))
11823                 {
11824                   for (loc2p = locp;
11825                        (loc2p < bp_locations + bp_locations_count
11826                         && (*loc2p)->address == old_loc->address);
11827                        loc2p++)
11828                     {
11829                       struct bp_location *loc2 = *loc2p;
11830
11831                       if (breakpoint_locations_match (loc2, old_loc))
11832                         {
11833                           /* Read watchpoint locations are switched to
11834                              access watchpoints, if the former are not
11835                              supported, but the latter are.  */
11836                           if (is_hardware_watchpoint (old_loc->owner))
11837                             {
11838                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11839                               loc2->watchpoint_type = old_loc->watchpoint_type;
11840                             }
11841
11842                           /* loc2 is a duplicated location. We need to check
11843                              if it should be inserted in case it will be
11844                              unduplicated.  */
11845                           if (loc2 != old_loc
11846                               && unduplicated_should_be_inserted (loc2))
11847                             {
11848                               swap_insertion (old_loc, loc2);
11849                               keep_in_target = 1;
11850                               break;
11851                             }
11852                         }
11853                     }
11854                 }
11855             }
11856
11857           if (!keep_in_target)
11858             {
11859               if (remove_breakpoint (old_loc))
11860                 {
11861                   /* This is just about all we can do.  We could keep
11862                      this location on the global list, and try to
11863                      remove it next time, but there's no particular
11864                      reason why we will succeed next time.
11865                      
11866                      Note that at this point, old_loc->owner is still
11867                      valid, as delete_breakpoint frees the breakpoint
11868                      only after calling us.  */
11869                   printf_filtered (_("warning: Error removing "
11870                                      "breakpoint %d\n"), 
11871                                    old_loc->owner->number);
11872                 }
11873               removed = 1;
11874             }
11875         }
11876
11877       if (!found_object)
11878         {
11879           if (removed && target_is_non_stop_p ()
11880               && need_moribund_for_location_type (old_loc))
11881             {
11882               /* This location was removed from the target.  In
11883                  non-stop mode, a race condition is possible where
11884                  we've removed a breakpoint, but stop events for that
11885                  breakpoint are already queued and will arrive later.
11886                  We apply an heuristic to be able to distinguish such
11887                  SIGTRAPs from other random SIGTRAPs: we keep this
11888                  breakpoint location for a bit, and will retire it
11889                  after we see some number of events.  The theory here
11890                  is that reporting of events should, "on the average",
11891                  be fair, so after a while we'll see events from all
11892                  threads that have anything of interest, and no longer
11893                  need to keep this breakpoint location around.  We
11894                  don't hold locations forever so to reduce chances of
11895                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11896                  SIGTRAP.
11897
11898                  The heuristic failing can be disastrous on
11899                  decr_pc_after_break targets.
11900
11901                  On decr_pc_after_break targets, like e.g., x86-linux,
11902                  if we fail to recognize a late breakpoint SIGTRAP,
11903                  because events_till_retirement has reached 0 too
11904                  soon, we'll fail to do the PC adjustment, and report
11905                  a random SIGTRAP to the user.  When the user resumes
11906                  the inferior, it will most likely immediately crash
11907                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11908                  corrupted, because of being resumed e.g., in the
11909                  middle of a multi-byte instruction, or skipped a
11910                  one-byte instruction.  This was actually seen happen
11911                  on native x86-linux, and should be less rare on
11912                  targets that do not support new thread events, like
11913                  remote, due to the heuristic depending on
11914                  thread_count.
11915
11916                  Mistaking a random SIGTRAP for a breakpoint trap
11917                  causes similar symptoms (PC adjustment applied when
11918                  it shouldn't), but then again, playing with SIGTRAPs
11919                  behind the debugger's back is asking for trouble.
11920
11921                  Since hardware watchpoint traps are always
11922                  distinguishable from other traps, so we don't need to
11923                  apply keep hardware watchpoint moribund locations
11924                  around.  We simply always ignore hardware watchpoint
11925                  traps we can no longer explain.  */
11926
11927               old_loc->events_till_retirement = 3 * (thread_count () + 1);
11928               old_loc->owner = NULL;
11929
11930               moribund_locations.push_back (old_loc);
11931             }
11932           else
11933             {
11934               old_loc->owner = NULL;
11935               decref_bp_location (&old_loc);
11936             }
11937         }
11938     }
11939
11940   /* Rescan breakpoints at the same address and section, marking the
11941      first one as "first" and any others as "duplicates".  This is so
11942      that the bpt instruction is only inserted once.  If we have a
11943      permanent breakpoint at the same place as BPT, make that one the
11944      official one, and the rest as duplicates.  Permanent breakpoints
11945      are sorted first for the same address.
11946
11947      Do the same for hardware watchpoints, but also considering the
11948      watchpoint's type (regular/access/read) and length.  */
11949
11950   bp_loc_first = NULL;
11951   wp_loc_first = NULL;
11952   awp_loc_first = NULL;
11953   rwp_loc_first = NULL;
11954   ALL_BP_LOCATIONS (loc, locp)
11955     {
11956       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11957          non-NULL.  */
11958       struct bp_location **loc_first_p;
11959       b = loc->owner;
11960
11961       if (!unduplicated_should_be_inserted (loc)
11962           || !breakpoint_address_is_meaningful (b)
11963           /* Don't detect duplicate for tracepoint locations because they are
11964            never duplicated.  See the comments in field `duplicate' of
11965            `struct bp_location'.  */
11966           || is_tracepoint (b))
11967         {
11968           /* Clear the condition modification flag.  */
11969           loc->condition_changed = condition_unchanged;
11970           continue;
11971         }
11972
11973       if (b->type == bp_hardware_watchpoint)
11974         loc_first_p = &wp_loc_first;
11975       else if (b->type == bp_read_watchpoint)
11976         loc_first_p = &rwp_loc_first;
11977       else if (b->type == bp_access_watchpoint)
11978         loc_first_p = &awp_loc_first;
11979       else
11980         loc_first_p = &bp_loc_first;
11981
11982       if (*loc_first_p == NULL
11983           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11984           || !breakpoint_locations_match (loc, *loc_first_p))
11985         {
11986           *loc_first_p = loc;
11987           loc->duplicate = 0;
11988
11989           if (is_breakpoint (loc->owner) && loc->condition_changed)
11990             {
11991               loc->needs_update = 1;
11992               /* Clear the condition modification flag.  */
11993               loc->condition_changed = condition_unchanged;
11994             }
11995           continue;
11996         }
11997
11998
11999       /* This and the above ensure the invariant that the first location
12000          is not duplicated, and is the inserted one.
12001          All following are marked as duplicated, and are not inserted.  */
12002       if (loc->inserted)
12003         swap_insertion (loc, *loc_first_p);
12004       loc->duplicate = 1;
12005
12006       /* Clear the condition modification flag.  */
12007       loc->condition_changed = condition_unchanged;
12008     }
12009
12010   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12011     {
12012       if (insert_mode != UGLL_DONT_INSERT)
12013         insert_breakpoint_locations ();
12014       else
12015         {
12016           /* Even though the caller told us to not insert new
12017              locations, we may still need to update conditions on the
12018              target's side of breakpoints that were already inserted
12019              if the target is evaluating breakpoint conditions.  We
12020              only update conditions for locations that are marked
12021              "needs_update".  */
12022           update_inserted_breakpoint_locations ();
12023         }
12024     }
12025
12026   if (insert_mode != UGLL_DONT_INSERT)
12027     download_tracepoint_locations ();
12028 }
12029
12030 void
12031 breakpoint_retire_moribund (void)
12032 {
12033   for (int ix = 0; ix < moribund_locations.size (); ++ix)
12034     {
12035       struct bp_location *loc = moribund_locations[ix];
12036       if (--(loc->events_till_retirement) == 0)
12037         {
12038           decref_bp_location (&loc);
12039           unordered_remove (moribund_locations, ix);
12040           --ix;
12041         }
12042     }
12043 }
12044
12045 static void
12046 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12047 {
12048
12049   try
12050     {
12051       update_global_location_list (insert_mode);
12052     }
12053   catch (const gdb_exception_error &e)
12054     {
12055     }
12056 }
12057
12058 /* Clear BKP from a BPS.  */
12059
12060 static void
12061 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12062 {
12063   bpstat bs;
12064
12065   for (bs = bps; bs; bs = bs->next)
12066     if (bs->breakpoint_at == bpt)
12067       {
12068         bs->breakpoint_at = NULL;
12069         bs->old_val = NULL;
12070         /* bs->commands will be freed later.  */
12071       }
12072 }
12073
12074 /* Callback for iterate_over_threads.  */
12075 static int
12076 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12077 {
12078   struct breakpoint *bpt = (struct breakpoint *) data;
12079
12080   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12081   return 0;
12082 }
12083
12084 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12085    callbacks.  */
12086
12087 static void
12088 say_where (struct breakpoint *b)
12089 {
12090   struct value_print_options opts;
12091
12092   get_user_print_options (&opts);
12093
12094   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12095      single string.  */
12096   if (b->loc == NULL)
12097     {
12098       /* For pending locations, the output differs slightly based
12099          on b->extra_string.  If this is non-NULL, it contains either
12100          a condition or dprintf arguments.  */
12101       if (b->extra_string == NULL)
12102         {
12103           printf_filtered (_(" (%s) pending."),
12104                            event_location_to_string (b->location.get ()));
12105         }
12106       else if (b->type == bp_dprintf)
12107         {
12108           printf_filtered (_(" (%s,%s) pending."),
12109                            event_location_to_string (b->location.get ()),
12110                            b->extra_string);
12111         }
12112       else
12113         {
12114           printf_filtered (_(" (%s %s) pending."),
12115                            event_location_to_string (b->location.get ()),
12116                            b->extra_string);
12117         }
12118     }
12119   else
12120     {
12121       if (opts.addressprint || b->loc->symtab == NULL)
12122         {
12123           printf_filtered (" at ");
12124           fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12125                         address_style.style (),
12126                         gdb_stdout);
12127         }
12128       if (b->loc->symtab != NULL)
12129         {
12130           /* If there is a single location, we can print the location
12131              more nicely.  */
12132           if (b->loc->next == NULL)
12133             {
12134               puts_filtered (": file ");
12135               fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12136                             file_name_style.style (),
12137                             gdb_stdout);
12138               printf_filtered (", line %d.",
12139                                b->loc->line_number);
12140             }
12141           else
12142             /* This is not ideal, but each location may have a
12143                different file name, and this at least reflects the
12144                real situation somewhat.  */
12145             printf_filtered (": %s.",
12146                              event_location_to_string (b->location.get ()));
12147         }
12148
12149       if (b->loc->next)
12150         {
12151           struct bp_location *loc = b->loc;
12152           int n = 0;
12153           for (; loc; loc = loc->next)
12154             ++n;
12155           printf_filtered (" (%d locations)", n);
12156         }
12157     }
12158 }
12159
12160 bp_location::~bp_location ()
12161 {
12162   xfree (function_name);
12163 }
12164
12165 /* Destructor for the breakpoint base class.  */
12166
12167 breakpoint::~breakpoint ()
12168 {
12169   xfree (this->cond_string);
12170   xfree (this->extra_string);
12171   xfree (this->filter);
12172 }
12173
12174 static struct bp_location *
12175 base_breakpoint_allocate_location (struct breakpoint *self)
12176 {
12177   return new bp_location (self);
12178 }
12179
12180 static void
12181 base_breakpoint_re_set (struct breakpoint *b)
12182 {
12183   /* Nothing to re-set. */
12184 }
12185
12186 #define internal_error_pure_virtual_called() \
12187   gdb_assert_not_reached ("pure virtual function called")
12188
12189 static int
12190 base_breakpoint_insert_location (struct bp_location *bl)
12191 {
12192   internal_error_pure_virtual_called ();
12193 }
12194
12195 static int
12196 base_breakpoint_remove_location (struct bp_location *bl,
12197                                  enum remove_bp_reason reason)
12198 {
12199   internal_error_pure_virtual_called ();
12200 }
12201
12202 static int
12203 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12204                                 const address_space *aspace,
12205                                 CORE_ADDR bp_addr,
12206                                 const struct target_waitstatus *ws)
12207 {
12208   internal_error_pure_virtual_called ();
12209 }
12210
12211 static void
12212 base_breakpoint_check_status (bpstat bs)
12213 {
12214   /* Always stop.   */
12215 }
12216
12217 /* A "works_in_software_mode" breakpoint_ops method that just internal
12218    errors.  */
12219
12220 static int
12221 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12222 {
12223   internal_error_pure_virtual_called ();
12224 }
12225
12226 /* A "resources_needed" breakpoint_ops method that just internal
12227    errors.  */
12228
12229 static int
12230 base_breakpoint_resources_needed (const struct bp_location *bl)
12231 {
12232   internal_error_pure_virtual_called ();
12233 }
12234
12235 static enum print_stop_action
12236 base_breakpoint_print_it (bpstat bs)
12237 {
12238   internal_error_pure_virtual_called ();
12239 }
12240
12241 static void
12242 base_breakpoint_print_one_detail (const struct breakpoint *self,
12243                                   struct ui_out *uiout)
12244 {
12245   /* nothing */
12246 }
12247
12248 static void
12249 base_breakpoint_print_mention (struct breakpoint *b)
12250 {
12251   internal_error_pure_virtual_called ();
12252 }
12253
12254 static void
12255 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12256 {
12257   internal_error_pure_virtual_called ();
12258 }
12259
12260 static void
12261 base_breakpoint_create_sals_from_location
12262   (const struct event_location *location,
12263    struct linespec_result *canonical,
12264    enum bptype type_wanted)
12265 {
12266   internal_error_pure_virtual_called ();
12267 }
12268
12269 static void
12270 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12271                                         struct linespec_result *c,
12272                                         gdb::unique_xmalloc_ptr<char> cond_string,
12273                                         gdb::unique_xmalloc_ptr<char> extra_string,
12274                                         enum bptype type_wanted,
12275                                         enum bpdisp disposition,
12276                                         int thread,
12277                                         int task, int ignore_count,
12278                                         const struct breakpoint_ops *o,
12279                                         int from_tty, int enabled,
12280                                         int internal, unsigned flags)
12281 {
12282   internal_error_pure_virtual_called ();
12283 }
12284
12285 static std::vector<symtab_and_line>
12286 base_breakpoint_decode_location (struct breakpoint *b,
12287                                  const struct event_location *location,
12288                                  struct program_space *search_pspace)
12289 {
12290   internal_error_pure_virtual_called ();
12291 }
12292
12293 /* The default 'explains_signal' method.  */
12294
12295 static int
12296 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12297 {
12298   return 1;
12299 }
12300
12301 /* The default "after_condition_true" method.  */
12302
12303 static void
12304 base_breakpoint_after_condition_true (struct bpstats *bs)
12305 {
12306   /* Nothing to do.   */
12307 }
12308
12309 struct breakpoint_ops base_breakpoint_ops =
12310 {
12311   base_breakpoint_allocate_location,
12312   base_breakpoint_re_set,
12313   base_breakpoint_insert_location,
12314   base_breakpoint_remove_location,
12315   base_breakpoint_breakpoint_hit,
12316   base_breakpoint_check_status,
12317   base_breakpoint_resources_needed,
12318   base_breakpoint_works_in_software_mode,
12319   base_breakpoint_print_it,
12320   NULL,
12321   base_breakpoint_print_one_detail,
12322   base_breakpoint_print_mention,
12323   base_breakpoint_print_recreate,
12324   base_breakpoint_create_sals_from_location,
12325   base_breakpoint_create_breakpoints_sal,
12326   base_breakpoint_decode_location,
12327   base_breakpoint_explains_signal,
12328   base_breakpoint_after_condition_true,
12329 };
12330
12331 /* Default breakpoint_ops methods.  */
12332
12333 static void
12334 bkpt_re_set (struct breakpoint *b)
12335 {
12336   /* FIXME: is this still reachable?  */
12337   if (breakpoint_event_location_empty_p (b))
12338     {
12339       /* Anything without a location can't be re-set.  */
12340       delete_breakpoint (b);
12341       return;
12342     }
12343
12344   breakpoint_re_set_default (b);
12345 }
12346
12347 static int
12348 bkpt_insert_location (struct bp_location *bl)
12349 {
12350   CORE_ADDR addr = bl->target_info.reqstd_address;
12351
12352   bl->target_info.kind = breakpoint_kind (bl, &addr);
12353   bl->target_info.placed_address = addr;
12354
12355   if (bl->loc_type == bp_loc_hardware_breakpoint)
12356     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12357   else
12358     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12359 }
12360
12361 static int
12362 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12363 {
12364   if (bl->loc_type == bp_loc_hardware_breakpoint)
12365     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12366   else
12367     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12368 }
12369
12370 static int
12371 bkpt_breakpoint_hit (const struct bp_location *bl,
12372                      const address_space *aspace, CORE_ADDR bp_addr,
12373                      const struct target_waitstatus *ws)
12374 {
12375   if (ws->kind != TARGET_WAITKIND_STOPPED
12376       || ws->value.sig != GDB_SIGNAL_TRAP)
12377     return 0;
12378
12379   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12380                                  aspace, bp_addr))
12381     return 0;
12382
12383   if (overlay_debugging         /* unmapped overlay section */
12384       && section_is_overlay (bl->section)
12385       && !section_is_mapped (bl->section))
12386     return 0;
12387
12388   return 1;
12389 }
12390
12391 static int
12392 dprintf_breakpoint_hit (const struct bp_location *bl,
12393                         const address_space *aspace, CORE_ADDR bp_addr,
12394                         const struct target_waitstatus *ws)
12395 {
12396   if (dprintf_style == dprintf_style_agent
12397       && target_can_run_breakpoint_commands ())
12398     {
12399       /* An agent-style dprintf never causes a stop.  If we see a trap
12400          for this address it must be for a breakpoint that happens to
12401          be set at the same address.  */
12402       return 0;
12403     }
12404
12405   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12406 }
12407
12408 static int
12409 bkpt_resources_needed (const struct bp_location *bl)
12410 {
12411   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12412
12413   return 1;
12414 }
12415
12416 static enum print_stop_action
12417 bkpt_print_it (bpstat bs)
12418 {
12419   struct breakpoint *b;
12420   const struct bp_location *bl;
12421   int bp_temp;
12422   struct ui_out *uiout = current_uiout;
12423
12424   gdb_assert (bs->bp_location_at != NULL);
12425
12426   bl = bs->bp_location_at;
12427   b = bs->breakpoint_at;
12428
12429   bp_temp = b->disposition == disp_del;
12430   if (bl->address != bl->requested_address)
12431     breakpoint_adjustment_warning (bl->requested_address,
12432                                    bl->address,
12433                                    b->number, 1);
12434   annotate_breakpoint (b->number);
12435   maybe_print_thread_hit_breakpoint (uiout);
12436
12437   if (bp_temp)
12438     uiout->text ("Temporary breakpoint ");
12439   else
12440     uiout->text ("Breakpoint ");
12441   if (uiout->is_mi_like_p ())
12442     {
12443       uiout->field_string ("reason",
12444                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12445       uiout->field_string ("disp", bpdisp_text (b->disposition));
12446     }
12447   uiout->field_int ("bkptno", b->number);
12448   uiout->text (", ");
12449
12450   return PRINT_SRC_AND_LOC;
12451 }
12452
12453 static void
12454 bkpt_print_mention (struct breakpoint *b)
12455 {
12456   if (current_uiout->is_mi_like_p ())
12457     return;
12458
12459   switch (b->type)
12460     {
12461     case bp_breakpoint:
12462     case bp_gnu_ifunc_resolver:
12463       if (b->disposition == disp_del)
12464         printf_filtered (_("Temporary breakpoint"));
12465       else
12466         printf_filtered (_("Breakpoint"));
12467       printf_filtered (_(" %d"), b->number);
12468       if (b->type == bp_gnu_ifunc_resolver)
12469         printf_filtered (_(" at gnu-indirect-function resolver"));
12470       break;
12471     case bp_hardware_breakpoint:
12472       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12473       break;
12474     case bp_dprintf:
12475       printf_filtered (_("Dprintf %d"), b->number);
12476       break;
12477     }
12478
12479   say_where (b);
12480 }
12481
12482 static void
12483 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12484 {
12485   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12486     fprintf_unfiltered (fp, "tbreak");
12487   else if (tp->type == bp_breakpoint)
12488     fprintf_unfiltered (fp, "break");
12489   else if (tp->type == bp_hardware_breakpoint
12490            && tp->disposition == disp_del)
12491     fprintf_unfiltered (fp, "thbreak");
12492   else if (tp->type == bp_hardware_breakpoint)
12493     fprintf_unfiltered (fp, "hbreak");
12494   else
12495     internal_error (__FILE__, __LINE__,
12496                     _("unhandled breakpoint type %d"), (int) tp->type);
12497
12498   fprintf_unfiltered (fp, " %s",
12499                       event_location_to_string (tp->location.get ()));
12500
12501   /* Print out extra_string if this breakpoint is pending.  It might
12502      contain, for example, conditions that were set by the user.  */
12503   if (tp->loc == NULL && tp->extra_string != NULL)
12504     fprintf_unfiltered (fp, " %s", tp->extra_string);
12505
12506   print_recreate_thread (tp, fp);
12507 }
12508
12509 static void
12510 bkpt_create_sals_from_location (const struct event_location *location,
12511                                 struct linespec_result *canonical,
12512                                 enum bptype type_wanted)
12513 {
12514   create_sals_from_location_default (location, canonical, type_wanted);
12515 }
12516
12517 static void
12518 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12519                              struct linespec_result *canonical,
12520                              gdb::unique_xmalloc_ptr<char> cond_string,
12521                              gdb::unique_xmalloc_ptr<char> extra_string,
12522                              enum bptype type_wanted,
12523                              enum bpdisp disposition,
12524                              int thread,
12525                              int task, int ignore_count,
12526                              const struct breakpoint_ops *ops,
12527                              int from_tty, int enabled,
12528                              int internal, unsigned flags)
12529 {
12530   create_breakpoints_sal_default (gdbarch, canonical,
12531                                   std::move (cond_string),
12532                                   std::move (extra_string),
12533                                   type_wanted,
12534                                   disposition, thread, task,
12535                                   ignore_count, ops, from_tty,
12536                                   enabled, internal, flags);
12537 }
12538
12539 static std::vector<symtab_and_line>
12540 bkpt_decode_location (struct breakpoint *b,
12541                       const struct event_location *location,
12542                       struct program_space *search_pspace)
12543 {
12544   return decode_location_default (b, location, search_pspace);
12545 }
12546
12547 /* Virtual table for internal breakpoints.  */
12548
12549 static void
12550 internal_bkpt_re_set (struct breakpoint *b)
12551 {
12552   switch (b->type)
12553     {
12554       /* Delete overlay event and longjmp master breakpoints; they
12555          will be reset later by breakpoint_re_set.  */
12556     case bp_overlay_event:
12557     case bp_longjmp_master:
12558     case bp_std_terminate_master:
12559     case bp_exception_master:
12560       delete_breakpoint (b);
12561       break;
12562
12563       /* This breakpoint is special, it's set up when the inferior
12564          starts and we really don't want to touch it.  */
12565     case bp_shlib_event:
12566
12567       /* Like bp_shlib_event, this breakpoint type is special.  Once
12568          it is set up, we do not want to touch it.  */
12569     case bp_thread_event:
12570       break;
12571     }
12572 }
12573
12574 static void
12575 internal_bkpt_check_status (bpstat bs)
12576 {
12577   if (bs->breakpoint_at->type == bp_shlib_event)
12578     {
12579       /* If requested, stop when the dynamic linker notifies GDB of
12580          events.  This allows the user to get control and place
12581          breakpoints in initializer routines for dynamically loaded
12582          objects (among other things).  */
12583       bs->stop = stop_on_solib_events;
12584       bs->print = stop_on_solib_events;
12585     }
12586   else
12587     bs->stop = 0;
12588 }
12589
12590 static enum print_stop_action
12591 internal_bkpt_print_it (bpstat bs)
12592 {
12593   struct breakpoint *b;
12594
12595   b = bs->breakpoint_at;
12596
12597   switch (b->type)
12598     {
12599     case bp_shlib_event:
12600       /* Did we stop because the user set the stop_on_solib_events
12601          variable?  (If so, we report this as a generic, "Stopped due
12602          to shlib event" message.) */
12603       print_solib_event (0);
12604       break;
12605
12606     case bp_thread_event:
12607       /* Not sure how we will get here.
12608          GDB should not stop for these breakpoints.  */
12609       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12610       break;
12611
12612     case bp_overlay_event:
12613       /* By analogy with the thread event, GDB should not stop for these.  */
12614       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12615       break;
12616
12617     case bp_longjmp_master:
12618       /* These should never be enabled.  */
12619       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12620       break;
12621
12622     case bp_std_terminate_master:
12623       /* These should never be enabled.  */
12624       printf_filtered (_("std::terminate Master Breakpoint: "
12625                          "gdb should not stop!\n"));
12626       break;
12627
12628     case bp_exception_master:
12629       /* These should never be enabled.  */
12630       printf_filtered (_("Exception Master Breakpoint: "
12631                          "gdb should not stop!\n"));
12632       break;
12633     }
12634
12635   return PRINT_NOTHING;
12636 }
12637
12638 static void
12639 internal_bkpt_print_mention (struct breakpoint *b)
12640 {
12641   /* Nothing to mention.  These breakpoints are internal.  */
12642 }
12643
12644 /* Virtual table for momentary breakpoints  */
12645
12646 static void
12647 momentary_bkpt_re_set (struct breakpoint *b)
12648 {
12649   /* Keep temporary breakpoints, which can be encountered when we step
12650      over a dlopen call and solib_add is resetting the breakpoints.
12651      Otherwise these should have been blown away via the cleanup chain
12652      or by breakpoint_init_inferior when we rerun the executable.  */
12653 }
12654
12655 static void
12656 momentary_bkpt_check_status (bpstat bs)
12657 {
12658   /* Nothing.  The point of these breakpoints is causing a stop.  */
12659 }
12660
12661 static enum print_stop_action
12662 momentary_bkpt_print_it (bpstat bs)
12663 {
12664   return PRINT_UNKNOWN;
12665 }
12666
12667 static void
12668 momentary_bkpt_print_mention (struct breakpoint *b)
12669 {
12670   /* Nothing to mention.  These breakpoints are internal.  */
12671 }
12672
12673 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12674
12675    It gets cleared already on the removal of the first one of such placed
12676    breakpoints.  This is OK as they get all removed altogether.  */
12677
12678 longjmp_breakpoint::~longjmp_breakpoint ()
12679 {
12680   thread_info *tp = find_thread_global_id (this->thread);
12681
12682   if (tp != NULL)
12683     tp->initiating_frame = null_frame_id;
12684 }
12685
12686 /* Specific methods for probe breakpoints.  */
12687
12688 static int
12689 bkpt_probe_insert_location (struct bp_location *bl)
12690 {
12691   int v = bkpt_insert_location (bl);
12692
12693   if (v == 0)
12694     {
12695       /* The insertion was successful, now let's set the probe's semaphore
12696          if needed.  */
12697       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12698     }
12699
12700   return v;
12701 }
12702
12703 static int
12704 bkpt_probe_remove_location (struct bp_location *bl,
12705                             enum remove_bp_reason reason)
12706 {
12707   /* Let's clear the semaphore before removing the location.  */
12708   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12709
12710   return bkpt_remove_location (bl, reason);
12711 }
12712
12713 static void
12714 bkpt_probe_create_sals_from_location (const struct event_location *location,
12715                                       struct linespec_result *canonical,
12716                                       enum bptype type_wanted)
12717 {
12718   struct linespec_sals lsal;
12719
12720   lsal.sals = parse_probes (location, NULL, canonical);
12721   lsal.canonical
12722     = xstrdup (event_location_to_string (canonical->location.get ()));
12723   canonical->lsals.push_back (std::move (lsal));
12724 }
12725
12726 static std::vector<symtab_and_line>
12727 bkpt_probe_decode_location (struct breakpoint *b,
12728                             const struct event_location *location,
12729                             struct program_space *search_pspace)
12730 {
12731   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12732   if (sals.empty ())
12733     error (_("probe not found"));
12734   return sals;
12735 }
12736
12737 /* The breakpoint_ops structure to be used in tracepoints.  */
12738
12739 static void
12740 tracepoint_re_set (struct breakpoint *b)
12741 {
12742   breakpoint_re_set_default (b);
12743 }
12744
12745 static int
12746 tracepoint_breakpoint_hit (const struct bp_location *bl,
12747                            const address_space *aspace, CORE_ADDR bp_addr,
12748                            const struct target_waitstatus *ws)
12749 {
12750   /* By definition, the inferior does not report stops at
12751      tracepoints.  */
12752   return 0;
12753 }
12754
12755 static void
12756 tracepoint_print_one_detail (const struct breakpoint *self,
12757                              struct ui_out *uiout)
12758 {
12759   struct tracepoint *tp = (struct tracepoint *) self;
12760   if (!tp->static_trace_marker_id.empty ())
12761     {
12762       gdb_assert (self->type == bp_static_tracepoint);
12763
12764       uiout->text ("\tmarker id is ");
12765       uiout->field_string ("static-tracepoint-marker-string-id",
12766                            tp->static_trace_marker_id);
12767       uiout->text ("\n");
12768     }
12769 }
12770
12771 static void
12772 tracepoint_print_mention (struct breakpoint *b)
12773 {
12774   if (current_uiout->is_mi_like_p ())
12775     return;
12776
12777   switch (b->type)
12778     {
12779     case bp_tracepoint:
12780       printf_filtered (_("Tracepoint"));
12781       printf_filtered (_(" %d"), b->number);
12782       break;
12783     case bp_fast_tracepoint:
12784       printf_filtered (_("Fast tracepoint"));
12785       printf_filtered (_(" %d"), b->number);
12786       break;
12787     case bp_static_tracepoint:
12788       printf_filtered (_("Static tracepoint"));
12789       printf_filtered (_(" %d"), b->number);
12790       break;
12791     default:
12792       internal_error (__FILE__, __LINE__,
12793                       _("unhandled tracepoint type %d"), (int) b->type);
12794     }
12795
12796   say_where (b);
12797 }
12798
12799 static void
12800 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12801 {
12802   struct tracepoint *tp = (struct tracepoint *) self;
12803
12804   if (self->type == bp_fast_tracepoint)
12805     fprintf_unfiltered (fp, "ftrace");
12806   else if (self->type == bp_static_tracepoint)
12807     fprintf_unfiltered (fp, "strace");
12808   else if (self->type == bp_tracepoint)
12809     fprintf_unfiltered (fp, "trace");
12810   else
12811     internal_error (__FILE__, __LINE__,
12812                     _("unhandled tracepoint type %d"), (int) self->type);
12813
12814   fprintf_unfiltered (fp, " %s",
12815                       event_location_to_string (self->location.get ()));
12816   print_recreate_thread (self, fp);
12817
12818   if (tp->pass_count)
12819     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12820 }
12821
12822 static void
12823 tracepoint_create_sals_from_location (const struct event_location *location,
12824                                       struct linespec_result *canonical,
12825                                       enum bptype type_wanted)
12826 {
12827   create_sals_from_location_default (location, canonical, type_wanted);
12828 }
12829
12830 static void
12831 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12832                                    struct linespec_result *canonical,
12833                                    gdb::unique_xmalloc_ptr<char> cond_string,
12834                                    gdb::unique_xmalloc_ptr<char> extra_string,
12835                                    enum bptype type_wanted,
12836                                    enum bpdisp disposition,
12837                                    int thread,
12838                                    int task, int ignore_count,
12839                                    const struct breakpoint_ops *ops,
12840                                    int from_tty, int enabled,
12841                                    int internal, unsigned flags)
12842 {
12843   create_breakpoints_sal_default (gdbarch, canonical,
12844                                   std::move (cond_string),
12845                                   std::move (extra_string),
12846                                   type_wanted,
12847                                   disposition, thread, task,
12848                                   ignore_count, ops, from_tty,
12849                                   enabled, internal, flags);
12850 }
12851
12852 static std::vector<symtab_and_line>
12853 tracepoint_decode_location (struct breakpoint *b,
12854                             const struct event_location *location,
12855                             struct program_space *search_pspace)
12856 {
12857   return decode_location_default (b, location, search_pspace);
12858 }
12859
12860 struct breakpoint_ops tracepoint_breakpoint_ops;
12861
12862 /* The breakpoint_ops structure to be use on tracepoints placed in a
12863    static probe.  */
12864
12865 static void
12866 tracepoint_probe_create_sals_from_location
12867   (const struct event_location *location,
12868    struct linespec_result *canonical,
12869    enum bptype type_wanted)
12870 {
12871   /* We use the same method for breakpoint on probes.  */
12872   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12873 }
12874
12875 static std::vector<symtab_and_line>
12876 tracepoint_probe_decode_location (struct breakpoint *b,
12877                                   const struct event_location *location,
12878                                   struct program_space *search_pspace)
12879 {
12880   /* We use the same method for breakpoint on probes.  */
12881   return bkpt_probe_decode_location (b, location, search_pspace);
12882 }
12883
12884 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12885
12886 /* Dprintf breakpoint_ops methods.  */
12887
12888 static void
12889 dprintf_re_set (struct breakpoint *b)
12890 {
12891   breakpoint_re_set_default (b);
12892
12893   /* extra_string should never be non-NULL for dprintf.  */
12894   gdb_assert (b->extra_string != NULL);
12895
12896   /* 1 - connect to target 1, that can run breakpoint commands.
12897      2 - create a dprintf, which resolves fine.
12898      3 - disconnect from target 1
12899      4 - connect to target 2, that can NOT run breakpoint commands.
12900
12901      After steps #3/#4, you'll want the dprintf command list to
12902      be updated, because target 1 and 2 may well return different
12903      answers for target_can_run_breakpoint_commands().
12904      Given absence of finer grained resetting, we get to do
12905      it all the time.  */
12906   if (b->extra_string != NULL)
12907     update_dprintf_command_list (b);
12908 }
12909
12910 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12911
12912 static void
12913 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12914 {
12915   fprintf_unfiltered (fp, "dprintf %s,%s",
12916                       event_location_to_string (tp->location.get ()),
12917                       tp->extra_string);
12918   print_recreate_thread (tp, fp);
12919 }
12920
12921 /* Implement the "after_condition_true" breakpoint_ops method for
12922    dprintf.
12923
12924    dprintf's are implemented with regular commands in their command
12925    list, but we run the commands here instead of before presenting the
12926    stop to the user, as dprintf's don't actually cause a stop.  This
12927    also makes it so that the commands of multiple dprintfs at the same
12928    address are all handled.  */
12929
12930 static void
12931 dprintf_after_condition_true (struct bpstats *bs)
12932 {
12933   struct bpstats tmp_bs;
12934   struct bpstats *tmp_bs_p = &tmp_bs;
12935
12936   /* dprintf's never cause a stop.  This wasn't set in the
12937      check_status hook instead because that would make the dprintf's
12938      condition not be evaluated.  */
12939   bs->stop = 0;
12940
12941   /* Run the command list here.  Take ownership of it instead of
12942      copying.  We never want these commands to run later in
12943      bpstat_do_actions, if a breakpoint that causes a stop happens to
12944      be set at same address as this dprintf, or even if running the
12945      commands here throws.  */
12946   tmp_bs.commands = bs->commands;
12947   bs->commands = NULL;
12948
12949   bpstat_do_actions_1 (&tmp_bs_p);
12950
12951   /* 'tmp_bs.commands' will usually be NULL by now, but
12952      bpstat_do_actions_1 may return early without processing the whole
12953      list.  */
12954 }
12955
12956 /* The breakpoint_ops structure to be used on static tracepoints with
12957    markers (`-m').  */
12958
12959 static void
12960 strace_marker_create_sals_from_location (const struct event_location *location,
12961                                          struct linespec_result *canonical,
12962                                          enum bptype type_wanted)
12963 {
12964   struct linespec_sals lsal;
12965   const char *arg_start, *arg;
12966
12967   arg = arg_start = get_linespec_location (location)->spec_string;
12968   lsal.sals = decode_static_tracepoint_spec (&arg);
12969
12970   std::string str (arg_start, arg - arg_start);
12971   const char *ptr = str.c_str ();
12972   canonical->location
12973     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12974
12975   lsal.canonical
12976     = xstrdup (event_location_to_string (canonical->location.get ()));
12977   canonical->lsals.push_back (std::move (lsal));
12978 }
12979
12980 static void
12981 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12982                                       struct linespec_result *canonical,
12983                                       gdb::unique_xmalloc_ptr<char> cond_string,
12984                                       gdb::unique_xmalloc_ptr<char> extra_string,
12985                                       enum bptype type_wanted,
12986                                       enum bpdisp disposition,
12987                                       int thread,
12988                                       int task, int ignore_count,
12989                                       const struct breakpoint_ops *ops,
12990                                       int from_tty, int enabled,
12991                                       int internal, unsigned flags)
12992 {
12993   const linespec_sals &lsal = canonical->lsals[0];
12994
12995   /* If the user is creating a static tracepoint by marker id
12996      (strace -m MARKER_ID), then store the sals index, so that
12997      breakpoint_re_set can try to match up which of the newly
12998      found markers corresponds to this one, and, don't try to
12999      expand multiple locations for each sal, given than SALS
13000      already should contain all sals for MARKER_ID.  */
13001
13002   for (size_t i = 0; i < lsal.sals.size (); i++)
13003     {
13004       event_location_up location
13005         = copy_event_location (canonical->location.get ());
13006
13007       std::unique_ptr<tracepoint> tp (new tracepoint ());
13008       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13009                            std::move (location), NULL,
13010                            std::move (cond_string),
13011                            std::move (extra_string),
13012                            type_wanted, disposition,
13013                            thread, task, ignore_count, ops,
13014                            from_tty, enabled, internal, flags,
13015                            canonical->special_display);
13016       /* Given that its possible to have multiple markers with
13017          the same string id, if the user is creating a static
13018          tracepoint by marker id ("strace -m MARKER_ID"), then
13019          store the sals index, so that breakpoint_re_set can
13020          try to match up which of the newly found markers
13021          corresponds to this one  */
13022       tp->static_trace_marker_id_idx = i;
13023
13024       install_breakpoint (internal, std::move (tp), 0);
13025     }
13026 }
13027
13028 static std::vector<symtab_and_line>
13029 strace_marker_decode_location (struct breakpoint *b,
13030                                const struct event_location *location,
13031                                struct program_space *search_pspace)
13032 {
13033   struct tracepoint *tp = (struct tracepoint *) b;
13034   const char *s = get_linespec_location (location)->spec_string;
13035
13036   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13037   if (sals.size () > tp->static_trace_marker_id_idx)
13038     {
13039       sals[0] = sals[tp->static_trace_marker_id_idx];
13040       sals.resize (1);
13041       return sals;
13042     }
13043   else
13044     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13045 }
13046
13047 static struct breakpoint_ops strace_marker_breakpoint_ops;
13048
13049 static int
13050 strace_marker_p (struct breakpoint *b)
13051 {
13052   return b->ops == &strace_marker_breakpoint_ops;
13053 }
13054
13055 /* Delete a breakpoint and clean up all traces of it in the data
13056    structures.  */
13057
13058 void
13059 delete_breakpoint (struct breakpoint *bpt)
13060 {
13061   struct breakpoint *b;
13062
13063   gdb_assert (bpt != NULL);
13064
13065   /* Has this bp already been deleted?  This can happen because
13066      multiple lists can hold pointers to bp's.  bpstat lists are
13067      especial culprits.
13068
13069      One example of this happening is a watchpoint's scope bp.  When
13070      the scope bp triggers, we notice that the watchpoint is out of
13071      scope, and delete it.  We also delete its scope bp.  But the
13072      scope bp is marked "auto-deleting", and is already on a bpstat.
13073      That bpstat is then checked for auto-deleting bp's, which are
13074      deleted.
13075
13076      A real solution to this problem might involve reference counts in
13077      bp's, and/or giving them pointers back to their referencing
13078      bpstat's, and teaching delete_breakpoint to only free a bp's
13079      storage when no more references were extent.  A cheaper bandaid
13080      was chosen.  */
13081   if (bpt->type == bp_none)
13082     return;
13083
13084   /* At least avoid this stale reference until the reference counting
13085      of breakpoints gets resolved.  */
13086   if (bpt->related_breakpoint != bpt)
13087     {
13088       struct breakpoint *related;
13089       struct watchpoint *w;
13090
13091       if (bpt->type == bp_watchpoint_scope)
13092         w = (struct watchpoint *) bpt->related_breakpoint;
13093       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13094         w = (struct watchpoint *) bpt;
13095       else
13096         w = NULL;
13097       if (w != NULL)
13098         watchpoint_del_at_next_stop (w);
13099
13100       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13101       for (related = bpt; related->related_breakpoint != bpt;
13102            related = related->related_breakpoint);
13103       related->related_breakpoint = bpt->related_breakpoint;
13104       bpt->related_breakpoint = bpt;
13105     }
13106
13107   /* watch_command_1 creates a watchpoint but only sets its number if
13108      update_watchpoint succeeds in creating its bp_locations.  If there's
13109      a problem in that process, we'll be asked to delete the half-created
13110      watchpoint.  In that case, don't announce the deletion.  */
13111   if (bpt->number)
13112     gdb::observers::breakpoint_deleted.notify (bpt);
13113
13114   if (breakpoint_chain == bpt)
13115     breakpoint_chain = bpt->next;
13116
13117   ALL_BREAKPOINTS (b)
13118     if (b->next == bpt)
13119     {
13120       b->next = bpt->next;
13121       break;
13122     }
13123
13124   /* Be sure no bpstat's are pointing at the breakpoint after it's
13125      been freed.  */
13126   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13127      in all threads for now.  Note that we cannot just remove bpstats
13128      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13129      commands are associated with the bpstat; if we remove it here,
13130      then the later call to bpstat_do_actions (&stop_bpstat); in
13131      event-top.c won't do anything, and temporary breakpoints with
13132      commands won't work.  */
13133
13134   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13135
13136   /* Now that breakpoint is removed from breakpoint list, update the
13137      global location list.  This will remove locations that used to
13138      belong to this breakpoint.  Do this before freeing the breakpoint
13139      itself, since remove_breakpoint looks at location's owner.  It
13140      might be better design to have location completely
13141      self-contained, but it's not the case now.  */
13142   update_global_location_list (UGLL_DONT_INSERT);
13143
13144   /* On the chance that someone will soon try again to delete this
13145      same bp, we mark it as deleted before freeing its storage.  */
13146   bpt->type = bp_none;
13147   delete bpt;
13148 }
13149
13150 /* Iterator function to call a user-provided callback function once
13151    for each of B and its related breakpoints.  */
13152
13153 static void
13154 iterate_over_related_breakpoints (struct breakpoint *b,
13155                                   gdb::function_view<void (breakpoint *)> function)
13156 {
13157   struct breakpoint *related;
13158
13159   related = b;
13160   do
13161     {
13162       struct breakpoint *next;
13163
13164       /* FUNCTION may delete RELATED.  */
13165       next = related->related_breakpoint;
13166
13167       if (next == related)
13168         {
13169           /* RELATED is the last ring entry.  */
13170           function (related);
13171
13172           /* FUNCTION may have deleted it, so we'd never reach back to
13173              B.  There's nothing left to do anyway, so just break
13174              out.  */
13175           break;
13176         }
13177       else
13178         function (related);
13179
13180       related = next;
13181     }
13182   while (related != b);
13183 }
13184
13185 static void
13186 delete_command (const char *arg, int from_tty)
13187 {
13188   struct breakpoint *b, *b_tmp;
13189
13190   dont_repeat ();
13191
13192   if (arg == 0)
13193     {
13194       int breaks_to_delete = 0;
13195
13196       /* Delete all breakpoints if no argument.  Do not delete
13197          internal breakpoints, these have to be deleted with an
13198          explicit breakpoint number argument.  */
13199       ALL_BREAKPOINTS (b)
13200         if (user_breakpoint_p (b))
13201           {
13202             breaks_to_delete = 1;
13203             break;
13204           }
13205
13206       /* Ask user only if there are some breakpoints to delete.  */
13207       if (!from_tty
13208           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13209         {
13210           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13211             if (user_breakpoint_p (b))
13212               delete_breakpoint (b);
13213         }
13214     }
13215   else
13216     map_breakpoint_numbers
13217       (arg, [&] (breakpoint *br)
13218        {
13219          iterate_over_related_breakpoints (br, delete_breakpoint);
13220        });
13221 }
13222
13223 /* Return true if all locations of B bound to PSPACE are pending.  If
13224    PSPACE is NULL, all locations of all program spaces are
13225    considered.  */
13226
13227 static int
13228 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13229 {
13230   struct bp_location *loc;
13231
13232   for (loc = b->loc; loc != NULL; loc = loc->next)
13233     if ((pspace == NULL
13234          || loc->pspace == pspace)
13235         && !loc->shlib_disabled
13236         && !loc->pspace->executing_startup)
13237       return 0;
13238   return 1;
13239 }
13240
13241 /* Subroutine of update_breakpoint_locations to simplify it.
13242    Return non-zero if multiple fns in list LOC have the same name.
13243    Null names are ignored.  */
13244
13245 static int
13246 ambiguous_names_p (struct bp_location *loc)
13247 {
13248   struct bp_location *l;
13249   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13250                                    xcalloc, xfree);
13251
13252   for (l = loc; l != NULL; l = l->next)
13253     {
13254       const char **slot;
13255       const char *name = l->function_name;
13256
13257       /* Allow for some names to be NULL, ignore them.  */
13258       if (name == NULL)
13259         continue;
13260
13261       slot = (const char **) htab_find_slot (htab, (const void *) name,
13262                                              INSERT);
13263       /* NOTE: We can assume slot != NULL here because xcalloc never
13264          returns NULL.  */
13265       if (*slot != NULL)
13266         {
13267           htab_delete (htab);
13268           return 1;
13269         }
13270       *slot = name;
13271     }
13272
13273   htab_delete (htab);
13274   return 0;
13275 }
13276
13277 /* When symbols change, it probably means the sources changed as well,
13278    and it might mean the static tracepoint markers are no longer at
13279    the same address or line numbers they used to be at last we
13280    checked.  Losing your static tracepoints whenever you rebuild is
13281    undesirable.  This function tries to resync/rematch gdb static
13282    tracepoints with the markers on the target, for static tracepoints
13283    that have not been set by marker id.  Static tracepoint that have
13284    been set by marker id are reset by marker id in breakpoint_re_set.
13285    The heuristic is:
13286
13287    1) For a tracepoint set at a specific address, look for a marker at
13288    the old PC.  If one is found there, assume to be the same marker.
13289    If the name / string id of the marker found is different from the
13290    previous known name, assume that means the user renamed the marker
13291    in the sources, and output a warning.
13292
13293    2) For a tracepoint set at a given line number, look for a marker
13294    at the new address of the old line number.  If one is found there,
13295    assume to be the same marker.  If the name / string id of the
13296    marker found is different from the previous known name, assume that
13297    means the user renamed the marker in the sources, and output a
13298    warning.
13299
13300    3) If a marker is no longer found at the same address or line, it
13301    may mean the marker no longer exists.  But it may also just mean
13302    the code changed a bit.  Maybe the user added a few lines of code
13303    that made the marker move up or down (in line number terms).  Ask
13304    the target for info about the marker with the string id as we knew
13305    it.  If found, update line number and address in the matching
13306    static tracepoint.  This will get confused if there's more than one
13307    marker with the same ID (possible in UST, although unadvised
13308    precisely because it confuses tools).  */
13309
13310 static struct symtab_and_line
13311 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13312 {
13313   struct tracepoint *tp = (struct tracepoint *) b;
13314   struct static_tracepoint_marker marker;
13315   CORE_ADDR pc;
13316
13317   pc = sal.pc;
13318   if (sal.line)
13319     find_line_pc (sal.symtab, sal.line, &pc);
13320
13321   if (target_static_tracepoint_marker_at (pc, &marker))
13322     {
13323       if (tp->static_trace_marker_id != marker.str_id)
13324         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13325                  b->number, tp->static_trace_marker_id.c_str (),
13326                  marker.str_id.c_str ());
13327
13328       tp->static_trace_marker_id = std::move (marker.str_id);
13329
13330       return sal;
13331     }
13332
13333   /* Old marker wasn't found on target at lineno.  Try looking it up
13334      by string ID.  */
13335   if (!sal.explicit_pc
13336       && sal.line != 0
13337       && sal.symtab != NULL
13338       && !tp->static_trace_marker_id.empty ())
13339     {
13340       std::vector<static_tracepoint_marker> markers
13341         = target_static_tracepoint_markers_by_strid
13342             (tp->static_trace_marker_id.c_str ());
13343
13344       if (!markers.empty ())
13345         {
13346           struct symbol *sym;
13347           struct static_tracepoint_marker *tpmarker;
13348           struct ui_out *uiout = current_uiout;
13349           struct explicit_location explicit_loc;
13350
13351           tpmarker = &markers[0];
13352
13353           tp->static_trace_marker_id = std::move (tpmarker->str_id);
13354
13355           warning (_("marker for static tracepoint %d (%s) not "
13356                      "found at previous line number"),
13357                    b->number, tp->static_trace_marker_id.c_str ());
13358
13359           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13360           sym = find_pc_sect_function (tpmarker->address, NULL);
13361           uiout->text ("Now in ");
13362           if (sym)
13363             {
13364               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13365                                    ui_out_style_kind::FUNCTION);
13366               uiout->text (" at ");
13367             }
13368           uiout->field_string ("file",
13369                                symtab_to_filename_for_display (sal2.symtab),
13370                                ui_out_style_kind::FILE);
13371           uiout->text (":");
13372
13373           if (uiout->is_mi_like_p ())
13374             {
13375               const char *fullname = symtab_to_fullname (sal2.symtab);
13376
13377               uiout->field_string ("fullname", fullname);
13378             }
13379
13380           uiout->field_int ("line", sal2.line);
13381           uiout->text ("\n");
13382
13383           b->loc->line_number = sal2.line;
13384           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13385
13386           b->location.reset (NULL);
13387           initialize_explicit_location (&explicit_loc);
13388           explicit_loc.source_filename
13389             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13390           explicit_loc.line_offset.offset = b->loc->line_number;
13391           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13392           b->location = new_explicit_location (&explicit_loc);
13393
13394           /* Might be nice to check if function changed, and warn if
13395              so.  */
13396         }
13397     }
13398   return sal;
13399 }
13400
13401 /* Returns 1 iff locations A and B are sufficiently same that
13402    we don't need to report breakpoint as changed.  */
13403
13404 static int
13405 locations_are_equal (struct bp_location *a, struct bp_location *b)
13406 {
13407   while (a && b)
13408     {
13409       if (a->address != b->address)
13410         return 0;
13411
13412       if (a->shlib_disabled != b->shlib_disabled)
13413         return 0;
13414
13415       if (a->enabled != b->enabled)
13416         return 0;
13417
13418       a = a->next;
13419       b = b->next;
13420     }
13421
13422   if ((a == NULL) != (b == NULL))
13423     return 0;
13424
13425   return 1;
13426 }
13427
13428 /* Split all locations of B that are bound to PSPACE out of B's
13429    location list to a separate list and return that list's head.  If
13430    PSPACE is NULL, hoist out all locations of B.  */
13431
13432 static struct bp_location *
13433 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13434 {
13435   struct bp_location head;
13436   struct bp_location *i = b->loc;
13437   struct bp_location **i_link = &b->loc;
13438   struct bp_location *hoisted = &head;
13439
13440   if (pspace == NULL)
13441     {
13442       i = b->loc;
13443       b->loc = NULL;
13444       return i;
13445     }
13446
13447   head.next = NULL;
13448
13449   while (i != NULL)
13450     {
13451       if (i->pspace == pspace)
13452         {
13453           *i_link = i->next;
13454           i->next = NULL;
13455           hoisted->next = i;
13456           hoisted = i;
13457         }
13458       else
13459         i_link = &i->next;
13460       i = *i_link;
13461     }
13462
13463   return head.next;
13464 }
13465
13466 /* Create new breakpoint locations for B (a hardware or software
13467    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13468    zero, then B is a ranged breakpoint.  Only recreates locations for
13469    FILTER_PSPACE.  Locations of other program spaces are left
13470    untouched.  */
13471
13472 void
13473 update_breakpoint_locations (struct breakpoint *b,
13474                              struct program_space *filter_pspace,
13475                              gdb::array_view<const symtab_and_line> sals,
13476                              gdb::array_view<const symtab_and_line> sals_end)
13477 {
13478   struct bp_location *existing_locations;
13479
13480   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13481     {
13482       /* Ranged breakpoints have only one start location and one end
13483          location.  */
13484       b->enable_state = bp_disabled;
13485       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13486                            "multiple locations found\n"),
13487                          b->number);
13488       return;
13489     }
13490
13491   /* If there's no new locations, and all existing locations are
13492      pending, don't do anything.  This optimizes the common case where
13493      all locations are in the same shared library, that was unloaded.
13494      We'd like to retain the location, so that when the library is
13495      loaded again, we don't loose the enabled/disabled status of the
13496      individual locations.  */
13497   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13498     return;
13499
13500   existing_locations = hoist_existing_locations (b, filter_pspace);
13501
13502   for (const auto &sal : sals)
13503     {
13504       struct bp_location *new_loc;
13505
13506       switch_to_program_space_and_thread (sal.pspace);
13507
13508       new_loc = add_location_to_breakpoint (b, &sal);
13509
13510       /* Reparse conditions, they might contain references to the
13511          old symtab.  */
13512       if (b->cond_string != NULL)
13513         {
13514           const char *s;
13515
13516           s = b->cond_string;
13517           try
13518             {
13519               new_loc->cond = parse_exp_1 (&s, sal.pc,
13520                                            block_for_pc (sal.pc),
13521                                            0);
13522             }
13523           catch (const gdb_exception_error &e)
13524             {
13525               warning (_("failed to reevaluate condition "
13526                          "for breakpoint %d: %s"), 
13527                        b->number, e.what ());
13528               new_loc->enabled = 0;
13529             }
13530         }
13531
13532       if (!sals_end.empty ())
13533         {
13534           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13535
13536           new_loc->length = end - sals[0].pc + 1;
13537         }
13538     }
13539
13540   /* If possible, carry over 'disable' status from existing
13541      breakpoints.  */
13542   {
13543     struct bp_location *e = existing_locations;
13544     /* If there are multiple breakpoints with the same function name,
13545        e.g. for inline functions, comparing function names won't work.
13546        Instead compare pc addresses; this is just a heuristic as things
13547        may have moved, but in practice it gives the correct answer
13548        often enough until a better solution is found.  */
13549     int have_ambiguous_names = ambiguous_names_p (b->loc);
13550
13551     for (; e; e = e->next)
13552       {
13553         if (!e->enabled && e->function_name)
13554           {
13555             struct bp_location *l = b->loc;
13556             if (have_ambiguous_names)
13557               {
13558                 for (; l; l = l->next)
13559                   if (breakpoint_locations_match (e, l))
13560                     {
13561                       l->enabled = 0;
13562                       break;
13563                     }
13564               }
13565             else
13566               {
13567                 for (; l; l = l->next)
13568                   if (l->function_name
13569                       && strcmp (e->function_name, l->function_name) == 0)
13570                     {
13571                       l->enabled = 0;
13572                       break;
13573                     }
13574               }
13575           }
13576       }
13577   }
13578
13579   if (!locations_are_equal (existing_locations, b->loc))
13580     gdb::observers::breakpoint_modified.notify (b);
13581 }
13582
13583 /* Find the SaL locations corresponding to the given LOCATION.
13584    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13585
13586 static std::vector<symtab_and_line>
13587 location_to_sals (struct breakpoint *b, struct event_location *location,
13588                   struct program_space *search_pspace, int *found)
13589 {
13590   struct gdb_exception exception;
13591
13592   gdb_assert (b->ops != NULL);
13593
13594   std::vector<symtab_and_line> sals;
13595
13596   try
13597     {
13598       sals = b->ops->decode_location (b, location, search_pspace);
13599     }
13600   catch (gdb_exception_error &e)
13601     {
13602       int not_found_and_ok = 0;
13603
13604       /* For pending breakpoints, it's expected that parsing will
13605          fail until the right shared library is loaded.  User has
13606          already told to create pending breakpoints and don't need
13607          extra messages.  If breakpoint is in bp_shlib_disabled
13608          state, then user already saw the message about that
13609          breakpoint being disabled, and don't want to see more
13610          errors.  */
13611       if (e.error == NOT_FOUND_ERROR
13612           && (b->condition_not_parsed
13613               || (b->loc != NULL
13614                   && search_pspace != NULL
13615                   && b->loc->pspace != search_pspace)
13616               || (b->loc && b->loc->shlib_disabled)
13617               || (b->loc && b->loc->pspace->executing_startup)
13618               || b->enable_state == bp_disabled))
13619         not_found_and_ok = 1;
13620
13621       if (!not_found_and_ok)
13622         {
13623           /* We surely don't want to warn about the same breakpoint
13624              10 times.  One solution, implemented here, is disable
13625              the breakpoint on error.  Another solution would be to
13626              have separate 'warning emitted' flag.  Since this
13627              happens only when a binary has changed, I don't know
13628              which approach is better.  */
13629           b->enable_state = bp_disabled;
13630           throw;
13631         }
13632
13633       exception = std::move (e);
13634     }
13635
13636   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13637     {
13638       for (auto &sal : sals)
13639         resolve_sal_pc (&sal);
13640       if (b->condition_not_parsed && b->extra_string != NULL)
13641         {
13642           char *cond_string, *extra_string;
13643           int thread, task;
13644
13645           find_condition_and_thread (b->extra_string, sals[0].pc,
13646                                      &cond_string, &thread, &task,
13647                                      &extra_string);
13648           gdb_assert (b->cond_string == NULL);
13649           if (cond_string)
13650             b->cond_string = cond_string;
13651           b->thread = thread;
13652           b->task = task;
13653           if (extra_string)
13654             {
13655               xfree (b->extra_string);
13656               b->extra_string = extra_string;
13657             }
13658           b->condition_not_parsed = 0;
13659         }
13660
13661       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13662         sals[0] = update_static_tracepoint (b, sals[0]);
13663
13664       *found = 1;
13665     }
13666   else
13667     *found = 0;
13668
13669   return sals;
13670 }
13671
13672 /* The default re_set method, for typical hardware or software
13673    breakpoints.  Reevaluate the breakpoint and recreate its
13674    locations.  */
13675
13676 static void
13677 breakpoint_re_set_default (struct breakpoint *b)
13678 {
13679   struct program_space *filter_pspace = current_program_space;
13680   std::vector<symtab_and_line> expanded, expanded_end;
13681
13682   int found;
13683   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13684                                                         filter_pspace, &found);
13685   if (found)
13686     expanded = std::move (sals);
13687
13688   if (b->location_range_end != NULL)
13689     {
13690       std::vector<symtab_and_line> sals_end
13691         = location_to_sals (b, b->location_range_end.get (),
13692                             filter_pspace, &found);
13693       if (found)
13694         expanded_end = std::move (sals_end);
13695     }
13696
13697   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13698 }
13699
13700 /* Default method for creating SALs from an address string.  It basically
13701    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13702
13703 static void
13704 create_sals_from_location_default (const struct event_location *location,
13705                                    struct linespec_result *canonical,
13706                                    enum bptype type_wanted)
13707 {
13708   parse_breakpoint_sals (location, canonical);
13709 }
13710
13711 /* Call create_breakpoints_sal for the given arguments.  This is the default
13712    function for the `create_breakpoints_sal' method of
13713    breakpoint_ops.  */
13714
13715 static void
13716 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13717                                 struct linespec_result *canonical,
13718                                 gdb::unique_xmalloc_ptr<char> cond_string,
13719                                 gdb::unique_xmalloc_ptr<char> extra_string,
13720                                 enum bptype type_wanted,
13721                                 enum bpdisp disposition,
13722                                 int thread,
13723                                 int task, int ignore_count,
13724                                 const struct breakpoint_ops *ops,
13725                                 int from_tty, int enabled,
13726                                 int internal, unsigned flags)
13727 {
13728   create_breakpoints_sal (gdbarch, canonical,
13729                           std::move (cond_string),
13730                           std::move (extra_string),
13731                           type_wanted, disposition,
13732                           thread, task, ignore_count, ops, from_tty,
13733                           enabled, internal, flags);
13734 }
13735
13736 /* Decode the line represented by S by calling decode_line_full.  This is the
13737    default function for the `decode_location' method of breakpoint_ops.  */
13738
13739 static std::vector<symtab_and_line>
13740 decode_location_default (struct breakpoint *b,
13741                          const struct event_location *location,
13742                          struct program_space *search_pspace)
13743 {
13744   struct linespec_result canonical;
13745
13746   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13747                     (struct symtab *) NULL, 0,
13748                     &canonical, multiple_symbols_all,
13749                     b->filter);
13750
13751   /* We should get 0 or 1 resulting SALs.  */
13752   gdb_assert (canonical.lsals.size () < 2);
13753
13754   if (!canonical.lsals.empty ())
13755     {
13756       const linespec_sals &lsal = canonical.lsals[0];
13757       return std::move (lsal.sals);
13758     }
13759   return {};
13760 }
13761
13762 /* Reset a breakpoint.  */
13763
13764 static void
13765 breakpoint_re_set_one (breakpoint *b)
13766 {
13767   input_radix = b->input_radix;
13768   set_language (b->language);
13769
13770   b->ops->re_set (b);
13771 }
13772
13773 /* Re-set breakpoint locations for the current program space.
13774    Locations bound to other program spaces are left untouched.  */
13775
13776 void
13777 breakpoint_re_set (void)
13778 {
13779   struct breakpoint *b, *b_tmp;
13780
13781   {
13782     scoped_restore_current_language save_language;
13783     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13784     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13785
13786     /* breakpoint_re_set_one sets the current_language to the language
13787        of the breakpoint it is resetting (see prepare_re_set_context)
13788        before re-evaluating the breakpoint's location.  This change can
13789        unfortunately get undone by accident if the language_mode is set
13790        to auto, and we either switch frames, or more likely in this context,
13791        we select the current frame.
13792
13793        We prevent this by temporarily turning the language_mode to
13794        language_mode_manual.  We restore it once all breakpoints
13795        have been reset.  */
13796     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13797     language_mode = language_mode_manual;
13798
13799     /* Note: we must not try to insert locations until after all
13800        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13801        breakpoint 1, we'd insert the locations of breakpoint 2, which
13802        hadn't been re-set yet, and thus may have stale locations.  */
13803
13804     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13805       {
13806         try
13807           {
13808             breakpoint_re_set_one (b);
13809           }
13810         catch (const gdb_exception &ex)
13811           {
13812             exception_fprintf (gdb_stderr, ex,
13813                                "Error in re-setting breakpoint %d: ",
13814                                b->number);
13815           }
13816       }
13817
13818     jit_breakpoint_re_set ();
13819   }
13820
13821   create_overlay_event_breakpoint ();
13822   create_longjmp_master_breakpoint ();
13823   create_std_terminate_master_breakpoint ();
13824   create_exception_master_breakpoint ();
13825
13826   /* Now we can insert.  */
13827   update_global_location_list (UGLL_MAY_INSERT);
13828 }
13829 \f
13830 /* Reset the thread number of this breakpoint:
13831
13832    - If the breakpoint is for all threads, leave it as-is.
13833    - Else, reset it to the current thread for inferior_ptid.  */
13834 void
13835 breakpoint_re_set_thread (struct breakpoint *b)
13836 {
13837   if (b->thread != -1)
13838     {
13839       b->thread = inferior_thread ()->global_num;
13840
13841       /* We're being called after following a fork.  The new fork is
13842          selected as current, and unless this was a vfork will have a
13843          different program space from the original thread.  Reset that
13844          as well.  */
13845       b->loc->pspace = current_program_space;
13846     }
13847 }
13848
13849 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13850    If from_tty is nonzero, it prints a message to that effect,
13851    which ends with a period (no newline).  */
13852
13853 void
13854 set_ignore_count (int bptnum, int count, int from_tty)
13855 {
13856   struct breakpoint *b;
13857
13858   if (count < 0)
13859     count = 0;
13860
13861   ALL_BREAKPOINTS (b)
13862     if (b->number == bptnum)
13863     {
13864       if (is_tracepoint (b))
13865         {
13866           if (from_tty && count != 0)
13867             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13868                              bptnum);
13869           return;
13870         }
13871       
13872       b->ignore_count = count;
13873       if (from_tty)
13874         {
13875           if (count == 0)
13876             printf_filtered (_("Will stop next time "
13877                                "breakpoint %d is reached."),
13878                              bptnum);
13879           else if (count == 1)
13880             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13881                              bptnum);
13882           else
13883             printf_filtered (_("Will ignore next %d "
13884                                "crossings of breakpoint %d."),
13885                              count, bptnum);
13886         }
13887       gdb::observers::breakpoint_modified.notify (b);
13888       return;
13889     }
13890
13891   error (_("No breakpoint number %d."), bptnum);
13892 }
13893
13894 /* Command to set ignore-count of breakpoint N to COUNT.  */
13895
13896 static void
13897 ignore_command (const char *args, int from_tty)
13898 {
13899   const char *p = args;
13900   int num;
13901
13902   if (p == 0)
13903     error_no_arg (_("a breakpoint number"));
13904
13905   num = get_number (&p);
13906   if (num == 0)
13907     error (_("bad breakpoint number: '%s'"), args);
13908   if (*p == 0)
13909     error (_("Second argument (specified ignore-count) is missing."));
13910
13911   set_ignore_count (num,
13912                     longest_to_int (value_as_long (parse_and_eval (p))),
13913                     from_tty);
13914   if (from_tty)
13915     printf_filtered ("\n");
13916 }
13917 \f
13918
13919 /* Call FUNCTION on each of the breakpoints with numbers in the range
13920    defined by BP_NUM_RANGE (an inclusive range).  */
13921
13922 static void
13923 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13924                              gdb::function_view<void (breakpoint *)> function)
13925 {
13926   if (bp_num_range.first == 0)
13927     {
13928       warning (_("bad breakpoint number at or near '%d'"),
13929                bp_num_range.first);
13930     }
13931   else
13932     {
13933       struct breakpoint *b, *tmp;
13934
13935       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13936         {
13937           bool match = false;
13938
13939           ALL_BREAKPOINTS_SAFE (b, tmp)
13940             if (b->number == i)
13941               {
13942                 match = true;
13943                 function (b);
13944                 break;
13945               }
13946           if (!match)
13947             printf_unfiltered (_("No breakpoint number %d.\n"), i);
13948         }
13949     }
13950 }
13951
13952 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13953    ARGS.  */
13954
13955 static void
13956 map_breakpoint_numbers (const char *args,
13957                         gdb::function_view<void (breakpoint *)> function)
13958 {
13959   if (args == NULL || *args == '\0')
13960     error_no_arg (_("one or more breakpoint numbers"));
13961
13962   number_or_range_parser parser (args);
13963
13964   while (!parser.finished ())
13965     {
13966       int num = parser.get_number ();
13967       map_breakpoint_number_range (std::make_pair (num, num), function);
13968     }
13969 }
13970
13971 /* Return the breakpoint location structure corresponding to the
13972    BP_NUM and LOC_NUM values.  */
13973
13974 static struct bp_location *
13975 find_location_by_number (int bp_num, int loc_num)
13976 {
13977   struct breakpoint *b;
13978
13979   ALL_BREAKPOINTS (b)
13980     if (b->number == bp_num)
13981       {
13982         break;
13983       }
13984
13985   if (!b || b->number != bp_num)
13986     error (_("Bad breakpoint number '%d'"), bp_num);
13987   
13988   if (loc_num == 0)
13989     error (_("Bad breakpoint location number '%d'"), loc_num);
13990
13991   int n = 0;
13992   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13993     if (++n == loc_num)
13994       return loc;
13995
13996   error (_("Bad breakpoint location number '%d'"), loc_num);
13997 }
13998
13999 /* Modes of operation for extract_bp_num.  */
14000 enum class extract_bp_kind
14001 {
14002   /* Extracting a breakpoint number.  */
14003   bp,
14004
14005   /* Extracting a location number.  */
14006   loc,
14007 };
14008
14009 /* Extract a breakpoint or location number (as determined by KIND)
14010    from the string starting at START.  TRAILER is a character which
14011    can be found after the number.  If you don't want a trailer, use
14012    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
14013    string.  This always returns a positive integer.  */
14014
14015 static int
14016 extract_bp_num (extract_bp_kind kind, const char *start,
14017                 int trailer, const char **end_out = NULL)
14018 {
14019   const char *end = start;
14020   int num = get_number_trailer (&end, trailer);
14021   if (num < 0)
14022     error (kind == extract_bp_kind::bp
14023            ? _("Negative breakpoint number '%.*s'")
14024            : _("Negative breakpoint location number '%.*s'"),
14025            int (end - start), start);
14026   if (num == 0)
14027     error (kind == extract_bp_kind::bp
14028            ? _("Bad breakpoint number '%.*s'")
14029            : _("Bad breakpoint location number '%.*s'"),
14030            int (end - start), start);
14031
14032   if (end_out != NULL)
14033     *end_out = end;
14034   return num;
14035 }
14036
14037 /* Extract a breakpoint or location range (as determined by KIND) in
14038    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
14039    representing the (inclusive) range.  The returned pair's elements
14040    are always positive integers.  */
14041
14042 static std::pair<int, int>
14043 extract_bp_or_bp_range (extract_bp_kind kind,
14044                         const std::string &arg,
14045                         std::string::size_type arg_offset)
14046 {
14047   std::pair<int, int> range;
14048   const char *bp_loc = &arg[arg_offset];
14049   std::string::size_type dash = arg.find ('-', arg_offset);
14050   if (dash != std::string::npos)
14051     {
14052       /* bp_loc is a range (x-z).  */
14053       if (arg.length () == dash + 1)
14054         error (kind == extract_bp_kind::bp
14055                ? _("Bad breakpoint number at or near: '%s'")
14056                : _("Bad breakpoint location number at or near: '%s'"),
14057                bp_loc);
14058
14059       const char *end;
14060       const char *start_first = bp_loc;
14061       const char *start_second = &arg[dash + 1];
14062       range.first = extract_bp_num (kind, start_first, '-');
14063       range.second = extract_bp_num (kind, start_second, '\0', &end);
14064
14065       if (range.first > range.second)
14066         error (kind == extract_bp_kind::bp
14067                ? _("Inverted breakpoint range at '%.*s'")
14068                : _("Inverted breakpoint location range at '%.*s'"),
14069                int (end - start_first), start_first);
14070     }
14071   else
14072     {
14073       /* bp_loc is a single value.  */
14074       range.first = extract_bp_num (kind, bp_loc, '\0');
14075       range.second = range.first;
14076     }
14077   return range;
14078 }
14079
14080 /* Extract the breakpoint/location range specified by ARG.  Returns
14081    the breakpoint range in BP_NUM_RANGE, and the location range in
14082    BP_LOC_RANGE.
14083
14084    ARG may be in any of the following forms:
14085
14086    x     where 'x' is a breakpoint number.
14087    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14088    x.y   where 'x' is a breakpoint number and 'y' a location number.
14089    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14090          location number range.
14091 */
14092
14093 static void
14094 extract_bp_number_and_location (const std::string &arg,
14095                                 std::pair<int, int> &bp_num_range,
14096                                 std::pair<int, int> &bp_loc_range)
14097 {
14098   std::string::size_type dot = arg.find ('.');
14099
14100   if (dot != std::string::npos)
14101     {
14102       /* Handle 'x.y' and 'x.y-z' cases.  */
14103
14104       if (arg.length () == dot + 1 || dot == 0)
14105         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14106
14107       bp_num_range.first
14108         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14109       bp_num_range.second = bp_num_range.first;
14110
14111       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14112                                              arg, dot + 1);
14113     }
14114   else
14115     {
14116       /* Handle x and x-y cases.  */
14117
14118       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14119       bp_loc_range.first = 0;
14120       bp_loc_range.second = 0;
14121     }
14122 }
14123
14124 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14125    specifies whether to enable or disable.  */
14126
14127 static void
14128 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14129 {
14130   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14131   if (loc != NULL)
14132     {
14133       if (loc->enabled != enable)
14134         {
14135           loc->enabled = enable;
14136           mark_breakpoint_location_modified (loc);
14137         }
14138       if (target_supports_enable_disable_tracepoint ()
14139           && current_trace_status ()->running && loc->owner
14140           && is_tracepoint (loc->owner))
14141         target_disable_tracepoint (loc);
14142     }
14143   update_global_location_list (UGLL_DONT_INSERT);
14144
14145   gdb::observers::breakpoint_modified.notify (loc->owner);
14146 }
14147
14148 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14149    number of the breakpoint, and BP_LOC_RANGE specifies the
14150    (inclusive) range of location numbers of that breakpoint to
14151    enable/disable.  ENABLE specifies whether to enable or disable the
14152    location.  */
14153
14154 static void
14155 enable_disable_breakpoint_location_range (int bp_num,
14156                                           std::pair<int, int> &bp_loc_range,
14157                                           bool enable)
14158 {
14159   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14160     enable_disable_bp_num_loc (bp_num, i, enable);
14161 }
14162
14163 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14164    If from_tty is nonzero, it prints a message to that effect,
14165    which ends with a period (no newline).  */
14166
14167 void
14168 disable_breakpoint (struct breakpoint *bpt)
14169 {
14170   /* Never disable a watchpoint scope breakpoint; we want to
14171      hit them when we leave scope so we can delete both the
14172      watchpoint and its scope breakpoint at that time.  */
14173   if (bpt->type == bp_watchpoint_scope)
14174     return;
14175
14176   bpt->enable_state = bp_disabled;
14177
14178   /* Mark breakpoint locations modified.  */
14179   mark_breakpoint_modified (bpt);
14180
14181   if (target_supports_enable_disable_tracepoint ()
14182       && current_trace_status ()->running && is_tracepoint (bpt))
14183     {
14184       struct bp_location *location;
14185      
14186       for (location = bpt->loc; location; location = location->next)
14187         target_disable_tracepoint (location);
14188     }
14189
14190   update_global_location_list (UGLL_DONT_INSERT);
14191
14192   gdb::observers::breakpoint_modified.notify (bpt);
14193 }
14194
14195 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14196    specified in ARGS.  ARGS may be in any of the formats handled by
14197    extract_bp_number_and_location.  ENABLE specifies whether to enable
14198    or disable the breakpoints/locations.  */
14199
14200 static void
14201 enable_disable_command (const char *args, int from_tty, bool enable)
14202 {
14203   if (args == 0)
14204     {
14205       struct breakpoint *bpt;
14206
14207       ALL_BREAKPOINTS (bpt)
14208         if (user_breakpoint_p (bpt))
14209           {
14210             if (enable)
14211               enable_breakpoint (bpt);
14212             else
14213               disable_breakpoint (bpt);
14214           }
14215     }
14216   else
14217     {
14218       std::string num = extract_arg (&args);
14219
14220       while (!num.empty ())
14221         {
14222           std::pair<int, int> bp_num_range, bp_loc_range;
14223
14224           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14225
14226           if (bp_loc_range.first == bp_loc_range.second
14227               && bp_loc_range.first == 0)
14228             {
14229               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14230               map_breakpoint_number_range (bp_num_range,
14231                                            enable
14232                                            ? enable_breakpoint
14233                                            : disable_breakpoint);
14234             }
14235           else
14236             {
14237               /* Handle breakpoint ids with formats 'x.y' or
14238                  'x.y-z'.  */
14239               enable_disable_breakpoint_location_range
14240                 (bp_num_range.first, bp_loc_range, enable);
14241             }
14242           num = extract_arg (&args);
14243         }
14244     }
14245 }
14246
14247 /* The disable command disables the specified breakpoints/locations
14248    (or all defined breakpoints) so they're no longer effective in
14249    stopping the inferior.  ARGS may be in any of the forms defined in
14250    extract_bp_number_and_location.  */
14251
14252 static void
14253 disable_command (const char *args, int from_tty)
14254 {
14255   enable_disable_command (args, from_tty, false);
14256 }
14257
14258 static void
14259 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14260                         int count)
14261 {
14262   int target_resources_ok;
14263
14264   if (bpt->type == bp_hardware_breakpoint)
14265     {
14266       int i;
14267       i = hw_breakpoint_used_count ();
14268       target_resources_ok = 
14269         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14270                                             i + 1, 0);
14271       if (target_resources_ok == 0)
14272         error (_("No hardware breakpoint support in the target."));
14273       else if (target_resources_ok < 0)
14274         error (_("Hardware breakpoints used exceeds limit."));
14275     }
14276
14277   if (is_watchpoint (bpt))
14278     {
14279       /* Initialize it just to avoid a GCC false warning.  */
14280       enum enable_state orig_enable_state = bp_disabled;
14281
14282       try
14283         {
14284           struct watchpoint *w = (struct watchpoint *) bpt;
14285
14286           orig_enable_state = bpt->enable_state;
14287           bpt->enable_state = bp_enabled;
14288           update_watchpoint (w, 1 /* reparse */);
14289         }
14290       catch (const gdb_exception &e)
14291         {
14292           bpt->enable_state = orig_enable_state;
14293           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14294                              bpt->number);
14295           return;
14296         }
14297     }
14298
14299   bpt->enable_state = bp_enabled;
14300
14301   /* Mark breakpoint locations modified.  */
14302   mark_breakpoint_modified (bpt);
14303
14304   if (target_supports_enable_disable_tracepoint ()
14305       && current_trace_status ()->running && is_tracepoint (bpt))
14306     {
14307       struct bp_location *location;
14308
14309       for (location = bpt->loc; location; location = location->next)
14310         target_enable_tracepoint (location);
14311     }
14312
14313   bpt->disposition = disposition;
14314   bpt->enable_count = count;
14315   update_global_location_list (UGLL_MAY_INSERT);
14316
14317   gdb::observers::breakpoint_modified.notify (bpt);
14318 }
14319
14320
14321 void
14322 enable_breakpoint (struct breakpoint *bpt)
14323 {
14324   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14325 }
14326
14327 /* The enable command enables the specified breakpoints/locations (or
14328    all defined breakpoints) so they once again become (or continue to
14329    be) effective in stopping the inferior.  ARGS may be in any of the
14330    forms defined in extract_bp_number_and_location.  */
14331
14332 static void
14333 enable_command (const char *args, int from_tty)
14334 {
14335   enable_disable_command (args, from_tty, true);
14336 }
14337
14338 static void
14339 enable_once_command (const char *args, int from_tty)
14340 {
14341   map_breakpoint_numbers
14342     (args, [&] (breakpoint *b)
14343      {
14344        iterate_over_related_breakpoints
14345          (b, [&] (breakpoint *bpt)
14346           {
14347             enable_breakpoint_disp (bpt, disp_disable, 1);
14348           });
14349      });
14350 }
14351
14352 static void
14353 enable_count_command (const char *args, int from_tty)
14354 {
14355   int count;
14356
14357   if (args == NULL)
14358     error_no_arg (_("hit count"));
14359
14360   count = get_number (&args);
14361
14362   map_breakpoint_numbers
14363     (args, [&] (breakpoint *b)
14364      {
14365        iterate_over_related_breakpoints
14366          (b, [&] (breakpoint *bpt)
14367           {
14368             enable_breakpoint_disp (bpt, disp_disable, count);
14369           });
14370      });
14371 }
14372
14373 static void
14374 enable_delete_command (const char *args, int from_tty)
14375 {
14376   map_breakpoint_numbers
14377     (args, [&] (breakpoint *b)
14378      {
14379        iterate_over_related_breakpoints
14380          (b, [&] (breakpoint *bpt)
14381           {
14382             enable_breakpoint_disp (bpt, disp_del, 1);
14383           });
14384      });
14385 }
14386 \f
14387 static void
14388 set_breakpoint_cmd (const char *args, int from_tty)
14389 {
14390 }
14391
14392 static void
14393 show_breakpoint_cmd (const char *args, int from_tty)
14394 {
14395 }
14396
14397 /* Invalidate last known value of any hardware watchpoint if
14398    the memory which that value represents has been written to by
14399    GDB itself.  */
14400
14401 static void
14402 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14403                                       CORE_ADDR addr, ssize_t len,
14404                                       const bfd_byte *data)
14405 {
14406   struct breakpoint *bp;
14407
14408   ALL_BREAKPOINTS (bp)
14409     if (bp->enable_state == bp_enabled
14410         && bp->type == bp_hardware_watchpoint)
14411       {
14412         struct watchpoint *wp = (struct watchpoint *) bp;
14413
14414         if (wp->val_valid && wp->val != nullptr)
14415           {
14416             struct bp_location *loc;
14417
14418             for (loc = bp->loc; loc != NULL; loc = loc->next)
14419               if (loc->loc_type == bp_loc_hardware_watchpoint
14420                   && loc->address + loc->length > addr
14421                   && addr + len > loc->address)
14422                 {
14423                   wp->val = NULL;
14424                   wp->val_valid = 0;
14425                 }
14426           }
14427       }
14428 }
14429
14430 /* Create and insert a breakpoint for software single step.  */
14431
14432 void
14433 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14434                                const address_space *aspace,
14435                                CORE_ADDR next_pc)
14436 {
14437   struct thread_info *tp = inferior_thread ();
14438   struct symtab_and_line sal;
14439   CORE_ADDR pc = next_pc;
14440
14441   if (tp->control.single_step_breakpoints == NULL)
14442     {
14443       tp->control.single_step_breakpoints
14444         = new_single_step_breakpoint (tp->global_num, gdbarch);
14445     }
14446
14447   sal = find_pc_line (pc, 0);
14448   sal.pc = pc;
14449   sal.section = find_pc_overlay (pc);
14450   sal.explicit_pc = 1;
14451   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14452
14453   update_global_location_list (UGLL_INSERT);
14454 }
14455
14456 /* Insert single step breakpoints according to the current state.  */
14457
14458 int
14459 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14460 {
14461   struct regcache *regcache = get_current_regcache ();
14462   std::vector<CORE_ADDR> next_pcs;
14463
14464   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14465
14466   if (!next_pcs.empty ())
14467     {
14468       struct frame_info *frame = get_current_frame ();
14469       const address_space *aspace = get_frame_address_space (frame);
14470
14471       for (CORE_ADDR pc : next_pcs)
14472         insert_single_step_breakpoint (gdbarch, aspace, pc);
14473
14474       return 1;
14475     }
14476   else
14477     return 0;
14478 }
14479
14480 /* See breakpoint.h.  */
14481
14482 int
14483 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14484                                        const address_space *aspace,
14485                                        CORE_ADDR pc)
14486 {
14487   struct bp_location *loc;
14488
14489   for (loc = bp->loc; loc != NULL; loc = loc->next)
14490     if (loc->inserted
14491         && breakpoint_location_address_match (loc, aspace, pc))
14492       return 1;
14493
14494   return 0;
14495 }
14496
14497 /* Check whether a software single-step breakpoint is inserted at
14498    PC.  */
14499
14500 int
14501 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14502                                         CORE_ADDR pc)
14503 {
14504   struct breakpoint *bpt;
14505
14506   ALL_BREAKPOINTS (bpt)
14507     {
14508       if (bpt->type == bp_single_step
14509           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14510         return 1;
14511     }
14512   return 0;
14513 }
14514
14515 /* Tracepoint-specific operations.  */
14516
14517 /* Set tracepoint count to NUM.  */
14518 static void
14519 set_tracepoint_count (int num)
14520 {
14521   tracepoint_count = num;
14522   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14523 }
14524
14525 static void
14526 trace_command (const char *arg, int from_tty)
14527 {
14528   struct breakpoint_ops *ops;
14529
14530   event_location_up location = string_to_event_location (&arg,
14531                                                          current_language);
14532   if (location != NULL
14533       && event_location_type (location.get ()) == PROBE_LOCATION)
14534     ops = &tracepoint_probe_breakpoint_ops;
14535   else
14536     ops = &tracepoint_breakpoint_ops;
14537
14538   create_breakpoint (get_current_arch (),
14539                      location.get (),
14540                      NULL, 0, arg, 1 /* parse arg */,
14541                      0 /* tempflag */,
14542                      bp_tracepoint /* type_wanted */,
14543                      0 /* Ignore count */,
14544                      pending_break_support,
14545                      ops,
14546                      from_tty,
14547                      1 /* enabled */,
14548                      0 /* internal */, 0);
14549 }
14550
14551 static void
14552 ftrace_command (const char *arg, int from_tty)
14553 {
14554   event_location_up location = string_to_event_location (&arg,
14555                                                          current_language);
14556   create_breakpoint (get_current_arch (),
14557                      location.get (),
14558                      NULL, 0, arg, 1 /* parse arg */,
14559                      0 /* tempflag */,
14560                      bp_fast_tracepoint /* type_wanted */,
14561                      0 /* Ignore count */,
14562                      pending_break_support,
14563                      &tracepoint_breakpoint_ops,
14564                      from_tty,
14565                      1 /* enabled */,
14566                      0 /* internal */, 0);
14567 }
14568
14569 /* strace command implementation.  Creates a static tracepoint.  */
14570
14571 static void
14572 strace_command (const char *arg, int from_tty)
14573 {
14574   struct breakpoint_ops *ops;
14575   event_location_up location;
14576
14577   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14578      or with a normal static tracepoint.  */
14579   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14580     {
14581       ops = &strace_marker_breakpoint_ops;
14582       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14583     }
14584   else
14585     {
14586       ops = &tracepoint_breakpoint_ops;
14587       location = string_to_event_location (&arg, current_language);
14588     }
14589
14590   create_breakpoint (get_current_arch (),
14591                      location.get (),
14592                      NULL, 0, arg, 1 /* parse arg */,
14593                      0 /* tempflag */,
14594                      bp_static_tracepoint /* type_wanted */,
14595                      0 /* Ignore count */,
14596                      pending_break_support,
14597                      ops,
14598                      from_tty,
14599                      1 /* enabled */,
14600                      0 /* internal */, 0);
14601 }
14602
14603 /* Set up a fake reader function that gets command lines from a linked
14604    list that was acquired during tracepoint uploading.  */
14605
14606 static struct uploaded_tp *this_utp;
14607 static int next_cmd;
14608
14609 static char *
14610 read_uploaded_action (void)
14611 {
14612   char *rslt = nullptr;
14613
14614   if (next_cmd < this_utp->cmd_strings.size ())
14615     {
14616       rslt = this_utp->cmd_strings[next_cmd].get ();
14617       next_cmd++;
14618     }
14619
14620   return rslt;
14621 }
14622
14623 /* Given information about a tracepoint as recorded on a target (which
14624    can be either a live system or a trace file), attempt to create an
14625    equivalent GDB tracepoint.  This is not a reliable process, since
14626    the target does not necessarily have all the information used when
14627    the tracepoint was originally defined.  */
14628   
14629 struct tracepoint *
14630 create_tracepoint_from_upload (struct uploaded_tp *utp)
14631 {
14632   const char *addr_str;
14633   char small_buf[100];
14634   struct tracepoint *tp;
14635
14636   if (utp->at_string)
14637     addr_str = utp->at_string.get ();
14638   else
14639     {
14640       /* In the absence of a source location, fall back to raw
14641          address.  Since there is no way to confirm that the address
14642          means the same thing as when the trace was started, warn the
14643          user.  */
14644       warning (_("Uploaded tracepoint %d has no "
14645                  "source location, using raw address"),
14646                utp->number);
14647       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14648       addr_str = small_buf;
14649     }
14650
14651   /* There's not much we can do with a sequence of bytecodes.  */
14652   if (utp->cond && !utp->cond_string)
14653     warning (_("Uploaded tracepoint %d condition "
14654                "has no source form, ignoring it"),
14655              utp->number);
14656
14657   event_location_up location = string_to_event_location (&addr_str,
14658                                                          current_language);
14659   if (!create_breakpoint (get_current_arch (),
14660                           location.get (),
14661                           utp->cond_string.get (), -1, addr_str,
14662                           0 /* parse cond/thread */,
14663                           0 /* tempflag */,
14664                           utp->type /* type_wanted */,
14665                           0 /* Ignore count */,
14666                           pending_break_support,
14667                           &tracepoint_breakpoint_ops,
14668                           0 /* from_tty */,
14669                           utp->enabled /* enabled */,
14670                           0 /* internal */,
14671                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14672     return NULL;
14673
14674   /* Get the tracepoint we just created.  */
14675   tp = get_tracepoint (tracepoint_count);
14676   gdb_assert (tp != NULL);
14677
14678   if (utp->pass > 0)
14679     {
14680       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14681                  tp->number);
14682
14683       trace_pass_command (small_buf, 0);
14684     }
14685
14686   /* If we have uploaded versions of the original commands, set up a
14687      special-purpose "reader" function and call the usual command line
14688      reader, then pass the result to the breakpoint command-setting
14689      function.  */
14690   if (!utp->cmd_strings.empty ())
14691     {
14692       counted_command_line cmd_list;
14693
14694       this_utp = utp;
14695       next_cmd = 0;
14696
14697       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14698
14699       breakpoint_set_commands (tp, std::move (cmd_list));
14700     }
14701   else if (!utp->actions.empty ()
14702            || !utp->step_actions.empty ())
14703     warning (_("Uploaded tracepoint %d actions "
14704                "have no source form, ignoring them"),
14705              utp->number);
14706
14707   /* Copy any status information that might be available.  */
14708   tp->hit_count = utp->hit_count;
14709   tp->traceframe_usage = utp->traceframe_usage;
14710
14711   return tp;
14712 }
14713   
14714 /* Print information on tracepoint number TPNUM_EXP, or all if
14715    omitted.  */
14716
14717 static void
14718 info_tracepoints_command (const char *args, int from_tty)
14719 {
14720   struct ui_out *uiout = current_uiout;
14721   int num_printed;
14722
14723   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14724
14725   if (num_printed == 0)
14726     {
14727       if (args == NULL || *args == '\0')
14728         uiout->message ("No tracepoints.\n");
14729       else
14730         uiout->message ("No tracepoint matching '%s'.\n", args);
14731     }
14732
14733   default_collect_info ();
14734 }
14735
14736 /* The 'enable trace' command enables tracepoints.
14737    Not supported by all targets.  */
14738 static void
14739 enable_trace_command (const char *args, int from_tty)
14740 {
14741   enable_command (args, from_tty);
14742 }
14743
14744 /* The 'disable trace' command disables tracepoints.
14745    Not supported by all targets.  */
14746 static void
14747 disable_trace_command (const char *args, int from_tty)
14748 {
14749   disable_command (args, from_tty);
14750 }
14751
14752 /* Remove a tracepoint (or all if no argument).  */
14753 static void
14754 delete_trace_command (const char *arg, int from_tty)
14755 {
14756   struct breakpoint *b, *b_tmp;
14757
14758   dont_repeat ();
14759
14760   if (arg == 0)
14761     {
14762       int breaks_to_delete = 0;
14763
14764       /* Delete all breakpoints if no argument.
14765          Do not delete internal or call-dummy breakpoints, these
14766          have to be deleted with an explicit breakpoint number 
14767          argument.  */
14768       ALL_TRACEPOINTS (b)
14769         if (is_tracepoint (b) && user_breakpoint_p (b))
14770           {
14771             breaks_to_delete = 1;
14772             break;
14773           }
14774
14775       /* Ask user only if there are some breakpoints to delete.  */
14776       if (!from_tty
14777           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14778         {
14779           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14780             if (is_tracepoint (b) && user_breakpoint_p (b))
14781               delete_breakpoint (b);
14782         }
14783     }
14784   else
14785     map_breakpoint_numbers
14786       (arg, [&] (breakpoint *br)
14787        {
14788          iterate_over_related_breakpoints (br, delete_breakpoint);
14789        });
14790 }
14791
14792 /* Helper function for trace_pass_command.  */
14793
14794 static void
14795 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14796 {
14797   tp->pass_count = count;
14798   gdb::observers::breakpoint_modified.notify (tp);
14799   if (from_tty)
14800     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14801                      tp->number, count);
14802 }
14803
14804 /* Set passcount for tracepoint.
14805
14806    First command argument is passcount, second is tracepoint number.
14807    If tracepoint number omitted, apply to most recently defined.
14808    Also accepts special argument "all".  */
14809
14810 static void
14811 trace_pass_command (const char *args, int from_tty)
14812 {
14813   struct tracepoint *t1;
14814   ULONGEST count;
14815
14816   if (args == 0 || *args == 0)
14817     error (_("passcount command requires an "
14818              "argument (count + optional TP num)"));
14819
14820   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14821
14822   args = skip_spaces (args);
14823   if (*args && strncasecmp (args, "all", 3) == 0)
14824     {
14825       struct breakpoint *b;
14826
14827       args += 3;                        /* Skip special argument "all".  */
14828       if (*args)
14829         error (_("Junk at end of arguments."));
14830
14831       ALL_TRACEPOINTS (b)
14832       {
14833         t1 = (struct tracepoint *) b;
14834         trace_pass_set_count (t1, count, from_tty);
14835       }
14836     }
14837   else if (*args == '\0')
14838     {
14839       t1 = get_tracepoint_by_number (&args, NULL);
14840       if (t1)
14841         trace_pass_set_count (t1, count, from_tty);
14842     }
14843   else
14844     {
14845       number_or_range_parser parser (args);
14846       while (!parser.finished ())
14847         {
14848           t1 = get_tracepoint_by_number (&args, &parser);
14849           if (t1)
14850             trace_pass_set_count (t1, count, from_tty);
14851         }
14852     }
14853 }
14854
14855 struct tracepoint *
14856 get_tracepoint (int num)
14857 {
14858   struct breakpoint *t;
14859
14860   ALL_TRACEPOINTS (t)
14861     if (t->number == num)
14862       return (struct tracepoint *) t;
14863
14864   return NULL;
14865 }
14866
14867 /* Find the tracepoint with the given target-side number (which may be
14868    different from the tracepoint number after disconnecting and
14869    reconnecting).  */
14870
14871 struct tracepoint *
14872 get_tracepoint_by_number_on_target (int num)
14873 {
14874   struct breakpoint *b;
14875
14876   ALL_TRACEPOINTS (b)
14877     {
14878       struct tracepoint *t = (struct tracepoint *) b;
14879
14880       if (t->number_on_target == num)
14881         return t;
14882     }
14883
14884   return NULL;
14885 }
14886
14887 /* Utility: parse a tracepoint number and look it up in the list.
14888    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14889    If the argument is missing, the most recent tracepoint
14890    (tracepoint_count) is returned.  */
14891
14892 struct tracepoint *
14893 get_tracepoint_by_number (const char **arg,
14894                           number_or_range_parser *parser)
14895 {
14896   struct breakpoint *t;
14897   int tpnum;
14898   const char *instring = arg == NULL ? NULL : *arg;
14899
14900   if (parser != NULL)
14901     {
14902       gdb_assert (!parser->finished ());
14903       tpnum = parser->get_number ();
14904     }
14905   else if (arg == NULL || *arg == NULL || ! **arg)
14906     tpnum = tracepoint_count;
14907   else
14908     tpnum = get_number (arg);
14909
14910   if (tpnum <= 0)
14911     {
14912       if (instring && *instring)
14913         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14914                          instring);
14915       else
14916         printf_filtered (_("No previous tracepoint\n"));
14917       return NULL;
14918     }
14919
14920   ALL_TRACEPOINTS (t)
14921     if (t->number == tpnum)
14922     {
14923       return (struct tracepoint *) t;
14924     }
14925
14926   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14927   return NULL;
14928 }
14929
14930 void
14931 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14932 {
14933   if (b->thread != -1)
14934     fprintf_unfiltered (fp, " thread %d", b->thread);
14935
14936   if (b->task != 0)
14937     fprintf_unfiltered (fp, " task %d", b->task);
14938
14939   fprintf_unfiltered (fp, "\n");
14940 }
14941
14942 /* Save information on user settable breakpoints (watchpoints, etc) to
14943    a new script file named FILENAME.  If FILTER is non-NULL, call it
14944    on each breakpoint and only include the ones for which it returns
14945    non-zero.  */
14946
14947 static void
14948 save_breakpoints (const char *filename, int from_tty,
14949                   int (*filter) (const struct breakpoint *))
14950 {
14951   struct breakpoint *tp;
14952   int any = 0;
14953   int extra_trace_bits = 0;
14954
14955   if (filename == 0 || *filename == 0)
14956     error (_("Argument required (file name in which to save)"));
14957
14958   /* See if we have anything to save.  */
14959   ALL_BREAKPOINTS (tp)
14960   {
14961     /* Skip internal and momentary breakpoints.  */
14962     if (!user_breakpoint_p (tp))
14963       continue;
14964
14965     /* If we have a filter, only save the breakpoints it accepts.  */
14966     if (filter && !filter (tp))
14967       continue;
14968
14969     any = 1;
14970
14971     if (is_tracepoint (tp))
14972       {
14973         extra_trace_bits = 1;
14974
14975         /* We can stop searching.  */
14976         break;
14977       }
14978   }
14979
14980   if (!any)
14981     {
14982       warning (_("Nothing to save."));
14983       return;
14984     }
14985
14986   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14987
14988   stdio_file fp;
14989
14990   if (!fp.open (expanded_filename.get (), "w"))
14991     error (_("Unable to open file '%s' for saving (%s)"),
14992            expanded_filename.get (), safe_strerror (errno));
14993
14994   if (extra_trace_bits)
14995     save_trace_state_variables (&fp);
14996
14997   ALL_BREAKPOINTS (tp)
14998   {
14999     /* Skip internal and momentary breakpoints.  */
15000     if (!user_breakpoint_p (tp))
15001       continue;
15002
15003     /* If we have a filter, only save the breakpoints it accepts.  */
15004     if (filter && !filter (tp))
15005       continue;
15006
15007     tp->ops->print_recreate (tp, &fp);
15008
15009     /* Note, we can't rely on tp->number for anything, as we can't
15010        assume the recreated breakpoint numbers will match.  Use $bpnum
15011        instead.  */
15012
15013     if (tp->cond_string)
15014       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15015
15016     if (tp->ignore_count)
15017       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15018
15019     if (tp->type != bp_dprintf && tp->commands)
15020       {
15021         fp.puts ("  commands\n");
15022         
15023         current_uiout->redirect (&fp);
15024         try
15025           {
15026             print_command_lines (current_uiout, tp->commands.get (), 2);
15027           }
15028         catch (const gdb_exception &ex)
15029           {
15030           current_uiout->redirect (NULL);
15031             throw;
15032           }
15033
15034         current_uiout->redirect (NULL);
15035         fp.puts ("  end\n");
15036       }
15037
15038     if (tp->enable_state == bp_disabled)
15039       fp.puts ("disable $bpnum\n");
15040
15041     /* If this is a multi-location breakpoint, check if the locations
15042        should be individually disabled.  Watchpoint locations are
15043        special, and not user visible.  */
15044     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15045       {
15046         struct bp_location *loc;
15047         int n = 1;
15048
15049         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15050           if (!loc->enabled)
15051             fp.printf ("disable $bpnum.%d\n", n);
15052       }
15053   }
15054
15055   if (extra_trace_bits && *default_collect)
15056     fp.printf ("set default-collect %s\n", default_collect);
15057
15058   if (from_tty)
15059     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15060 }
15061
15062 /* The `save breakpoints' command.  */
15063
15064 static void
15065 save_breakpoints_command (const char *args, int from_tty)
15066 {
15067   save_breakpoints (args, from_tty, NULL);
15068 }
15069
15070 /* The `save tracepoints' command.  */
15071
15072 static void
15073 save_tracepoints_command (const char *args, int from_tty)
15074 {
15075   save_breakpoints (args, from_tty, is_tracepoint);
15076 }
15077
15078 /* Create a vector of all tracepoints.  */
15079
15080 std::vector<breakpoint *>
15081 all_tracepoints (void)
15082 {
15083   std::vector<breakpoint *> tp_vec;
15084   struct breakpoint *tp;
15085
15086   ALL_TRACEPOINTS (tp)
15087   {
15088     tp_vec.push_back (tp);
15089   }
15090
15091   return tp_vec;
15092 }
15093
15094 \f
15095 /* This help string is used to consolidate all the help string for specifying
15096    locations used by several commands.  */
15097
15098 #define LOCATION_HELP_STRING \
15099 "Linespecs are colon-separated lists of location parameters, such as\n\
15100 source filename, function name, label name, and line number.\n\
15101 Example: To specify the start of a label named \"the_top\" in the\n\
15102 function \"fact\" in the file \"factorial.c\", use\n\
15103 \"factorial.c:fact:the_top\".\n\
15104 \n\
15105 Address locations begin with \"*\" and specify an exact address in the\n\
15106 program.  Example: To specify the fourth byte past the start function\n\
15107 \"main\", use \"*main + 4\".\n\
15108 \n\
15109 Explicit locations are similar to linespecs but use an option/argument\n\
15110 syntax to specify location parameters.\n\
15111 Example: To specify the start of the label named \"the_top\" in the\n\
15112 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15113 -function fact -label the_top\".\n\
15114 \n\
15115 By default, a specified function is matched against the program's\n\
15116 functions in all scopes.  For C++, this means in all namespaces and\n\
15117 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15118 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15119 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15120 specified name as a complete fully-qualified name instead.\n"
15121
15122 /* This help string is used for the break, hbreak, tbreak and thbreak
15123    commands.  It is defined as a macro to prevent duplication.
15124    COMMAND should be a string constant containing the name of the
15125    command.  */
15126
15127 #define BREAK_ARGS_HELP(command) \
15128 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15129 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15130 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15131 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15132 `-probe-dtrace' (for a DTrace probe).\n\
15133 LOCATION may be a linespec, address, or explicit location as described\n\
15134 below.\n\
15135 \n\
15136 With no LOCATION, uses current execution address of the selected\n\
15137 stack frame.  This is useful for breaking on return to a stack frame.\n\
15138 \n\
15139 THREADNUM is the number from \"info threads\".\n\
15140 CONDITION is a boolean expression.\n\
15141 \n" LOCATION_HELP_STRING "\n\
15142 Multiple breakpoints at one place are permitted, and useful if their\n\
15143 conditions are different.\n\
15144 \n\
15145 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15146
15147 /* List of subcommands for "catch".  */
15148 static struct cmd_list_element *catch_cmdlist;
15149
15150 /* List of subcommands for "tcatch".  */
15151 static struct cmd_list_element *tcatch_cmdlist;
15152
15153 void
15154 add_catch_command (const char *name, const char *docstring,
15155                    cmd_const_sfunc_ftype *sfunc,
15156                    completer_ftype *completer,
15157                    void *user_data_catch,
15158                    void *user_data_tcatch)
15159 {
15160   struct cmd_list_element *command;
15161
15162   command = add_cmd (name, class_breakpoint, docstring,
15163                      &catch_cmdlist);
15164   set_cmd_sfunc (command, sfunc);
15165   set_cmd_context (command, user_data_catch);
15166   set_cmd_completer (command, completer);
15167
15168   command = add_cmd (name, class_breakpoint, docstring,
15169                      &tcatch_cmdlist);
15170   set_cmd_sfunc (command, sfunc);
15171   set_cmd_context (command, user_data_tcatch);
15172   set_cmd_completer (command, completer);
15173 }
15174
15175 static void
15176 save_command (const char *arg, int from_tty)
15177 {
15178   printf_unfiltered (_("\"save\" must be followed by "
15179                        "the name of a save subcommand.\n"));
15180   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15181 }
15182
15183 struct breakpoint *
15184 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15185                           void *data)
15186 {
15187   struct breakpoint *b, *b_tmp;
15188
15189   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15190     {
15191       if ((*callback) (b, data))
15192         return b;
15193     }
15194
15195   return NULL;
15196 }
15197
15198 /* Zero if any of the breakpoint's locations could be a location where
15199    functions have been inlined, nonzero otherwise.  */
15200
15201 static int
15202 is_non_inline_function (struct breakpoint *b)
15203 {
15204   /* The shared library event breakpoint is set on the address of a
15205      non-inline function.  */
15206   if (b->type == bp_shlib_event)
15207     return 1;
15208
15209   return 0;
15210 }
15211
15212 /* Nonzero if the specified PC cannot be a location where functions
15213    have been inlined.  */
15214
15215 int
15216 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15217                            const struct target_waitstatus *ws)
15218 {
15219   struct breakpoint *b;
15220   struct bp_location *bl;
15221
15222   ALL_BREAKPOINTS (b)
15223     {
15224       if (!is_non_inline_function (b))
15225         continue;
15226
15227       for (bl = b->loc; bl != NULL; bl = bl->next)
15228         {
15229           if (!bl->shlib_disabled
15230               && bpstat_check_location (bl, aspace, pc, ws))
15231             return 1;
15232         }
15233     }
15234
15235   return 0;
15236 }
15237
15238 /* Remove any references to OBJFILE which is going to be freed.  */
15239
15240 void
15241 breakpoint_free_objfile (struct objfile *objfile)
15242 {
15243   struct bp_location **locp, *loc;
15244
15245   ALL_BP_LOCATIONS (loc, locp)
15246     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15247       loc->symtab = NULL;
15248 }
15249
15250 void
15251 initialize_breakpoint_ops (void)
15252 {
15253   static int initialized = 0;
15254
15255   struct breakpoint_ops *ops;
15256
15257   if (initialized)
15258     return;
15259   initialized = 1;
15260
15261   /* The breakpoint_ops structure to be inherit by all kinds of
15262      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15263      internal and momentary breakpoints, etc.).  */
15264   ops = &bkpt_base_breakpoint_ops;
15265   *ops = base_breakpoint_ops;
15266   ops->re_set = bkpt_re_set;
15267   ops->insert_location = bkpt_insert_location;
15268   ops->remove_location = bkpt_remove_location;
15269   ops->breakpoint_hit = bkpt_breakpoint_hit;
15270   ops->create_sals_from_location = bkpt_create_sals_from_location;
15271   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15272   ops->decode_location = bkpt_decode_location;
15273
15274   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15275   ops = &bkpt_breakpoint_ops;
15276   *ops = bkpt_base_breakpoint_ops;
15277   ops->re_set = bkpt_re_set;
15278   ops->resources_needed = bkpt_resources_needed;
15279   ops->print_it = bkpt_print_it;
15280   ops->print_mention = bkpt_print_mention;
15281   ops->print_recreate = bkpt_print_recreate;
15282
15283   /* Ranged breakpoints.  */
15284   ops = &ranged_breakpoint_ops;
15285   *ops = bkpt_breakpoint_ops;
15286   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15287   ops->resources_needed = resources_needed_ranged_breakpoint;
15288   ops->print_it = print_it_ranged_breakpoint;
15289   ops->print_one = print_one_ranged_breakpoint;
15290   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15291   ops->print_mention = print_mention_ranged_breakpoint;
15292   ops->print_recreate = print_recreate_ranged_breakpoint;
15293
15294   /* Internal breakpoints.  */
15295   ops = &internal_breakpoint_ops;
15296   *ops = bkpt_base_breakpoint_ops;
15297   ops->re_set = internal_bkpt_re_set;
15298   ops->check_status = internal_bkpt_check_status;
15299   ops->print_it = internal_bkpt_print_it;
15300   ops->print_mention = internal_bkpt_print_mention;
15301
15302   /* Momentary breakpoints.  */
15303   ops = &momentary_breakpoint_ops;
15304   *ops = bkpt_base_breakpoint_ops;
15305   ops->re_set = momentary_bkpt_re_set;
15306   ops->check_status = momentary_bkpt_check_status;
15307   ops->print_it = momentary_bkpt_print_it;
15308   ops->print_mention = momentary_bkpt_print_mention;
15309
15310   /* Probe breakpoints.  */
15311   ops = &bkpt_probe_breakpoint_ops;
15312   *ops = bkpt_breakpoint_ops;
15313   ops->insert_location = bkpt_probe_insert_location;
15314   ops->remove_location = bkpt_probe_remove_location;
15315   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15316   ops->decode_location = bkpt_probe_decode_location;
15317
15318   /* Watchpoints.  */
15319   ops = &watchpoint_breakpoint_ops;
15320   *ops = base_breakpoint_ops;
15321   ops->re_set = re_set_watchpoint;
15322   ops->insert_location = insert_watchpoint;
15323   ops->remove_location = remove_watchpoint;
15324   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15325   ops->check_status = check_status_watchpoint;
15326   ops->resources_needed = resources_needed_watchpoint;
15327   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15328   ops->print_it = print_it_watchpoint;
15329   ops->print_mention = print_mention_watchpoint;
15330   ops->print_recreate = print_recreate_watchpoint;
15331   ops->explains_signal = explains_signal_watchpoint;
15332
15333   /* Masked watchpoints.  */
15334   ops = &masked_watchpoint_breakpoint_ops;
15335   *ops = watchpoint_breakpoint_ops;
15336   ops->insert_location = insert_masked_watchpoint;
15337   ops->remove_location = remove_masked_watchpoint;
15338   ops->resources_needed = resources_needed_masked_watchpoint;
15339   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15340   ops->print_it = print_it_masked_watchpoint;
15341   ops->print_one_detail = print_one_detail_masked_watchpoint;
15342   ops->print_mention = print_mention_masked_watchpoint;
15343   ops->print_recreate = print_recreate_masked_watchpoint;
15344
15345   /* Tracepoints.  */
15346   ops = &tracepoint_breakpoint_ops;
15347   *ops = base_breakpoint_ops;
15348   ops->re_set = tracepoint_re_set;
15349   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15350   ops->print_one_detail = tracepoint_print_one_detail;
15351   ops->print_mention = tracepoint_print_mention;
15352   ops->print_recreate = tracepoint_print_recreate;
15353   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15354   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15355   ops->decode_location = tracepoint_decode_location;
15356
15357   /* Probe tracepoints.  */
15358   ops = &tracepoint_probe_breakpoint_ops;
15359   *ops = tracepoint_breakpoint_ops;
15360   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15361   ops->decode_location = tracepoint_probe_decode_location;
15362
15363   /* Static tracepoints with marker (`-m').  */
15364   ops = &strace_marker_breakpoint_ops;
15365   *ops = tracepoint_breakpoint_ops;
15366   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15367   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15368   ops->decode_location = strace_marker_decode_location;
15369
15370   /* Fork catchpoints.  */
15371   ops = &catch_fork_breakpoint_ops;
15372   *ops = base_breakpoint_ops;
15373   ops->insert_location = insert_catch_fork;
15374   ops->remove_location = remove_catch_fork;
15375   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15376   ops->print_it = print_it_catch_fork;
15377   ops->print_one = print_one_catch_fork;
15378   ops->print_mention = print_mention_catch_fork;
15379   ops->print_recreate = print_recreate_catch_fork;
15380
15381   /* Vfork catchpoints.  */
15382   ops = &catch_vfork_breakpoint_ops;
15383   *ops = base_breakpoint_ops;
15384   ops->insert_location = insert_catch_vfork;
15385   ops->remove_location = remove_catch_vfork;
15386   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15387   ops->print_it = print_it_catch_vfork;
15388   ops->print_one = print_one_catch_vfork;
15389   ops->print_mention = print_mention_catch_vfork;
15390   ops->print_recreate = print_recreate_catch_vfork;
15391
15392   /* Exec catchpoints.  */
15393   ops = &catch_exec_breakpoint_ops;
15394   *ops = base_breakpoint_ops;
15395   ops->insert_location = insert_catch_exec;
15396   ops->remove_location = remove_catch_exec;
15397   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15398   ops->print_it = print_it_catch_exec;
15399   ops->print_one = print_one_catch_exec;
15400   ops->print_mention = print_mention_catch_exec;
15401   ops->print_recreate = print_recreate_catch_exec;
15402
15403   /* Solib-related catchpoints.  */
15404   ops = &catch_solib_breakpoint_ops;
15405   *ops = base_breakpoint_ops;
15406   ops->insert_location = insert_catch_solib;
15407   ops->remove_location = remove_catch_solib;
15408   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15409   ops->check_status = check_status_catch_solib;
15410   ops->print_it = print_it_catch_solib;
15411   ops->print_one = print_one_catch_solib;
15412   ops->print_mention = print_mention_catch_solib;
15413   ops->print_recreate = print_recreate_catch_solib;
15414
15415   ops = &dprintf_breakpoint_ops;
15416   *ops = bkpt_base_breakpoint_ops;
15417   ops->re_set = dprintf_re_set;
15418   ops->resources_needed = bkpt_resources_needed;
15419   ops->print_it = bkpt_print_it;
15420   ops->print_mention = bkpt_print_mention;
15421   ops->print_recreate = dprintf_print_recreate;
15422   ops->after_condition_true = dprintf_after_condition_true;
15423   ops->breakpoint_hit = dprintf_breakpoint_hit;
15424 }
15425
15426 /* Chain containing all defined "enable breakpoint" subcommands.  */
15427
15428 static struct cmd_list_element *enablebreaklist = NULL;
15429
15430 /* See breakpoint.h.  */
15431
15432 cmd_list_element *commands_cmd_element = nullptr;
15433
15434 void
15435 _initialize_breakpoint (void)
15436 {
15437   struct cmd_list_element *c;
15438
15439   initialize_breakpoint_ops ();
15440
15441   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15442   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15443   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15444
15445   breakpoint_chain = 0;
15446   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15447      before a breakpoint is set.  */
15448   breakpoint_count = 0;
15449
15450   tracepoint_count = 0;
15451
15452   add_com ("ignore", class_breakpoint, ignore_command, _("\
15453 Set ignore-count of breakpoint number N to COUNT.\n\
15454 Usage is `ignore N COUNT'."));
15455
15456   commands_cmd_element = add_com ("commands", class_breakpoint,
15457                                   commands_command, _("\
15458 Set commands to be executed when the given breakpoints are hit.\n\
15459 Give a space-separated breakpoint list as argument after \"commands\".\n\
15460 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15461 (e.g. `5-7').\n\
15462 With no argument, the targeted breakpoint is the last one set.\n\
15463 The commands themselves follow starting on the next line.\n\
15464 Type a line containing \"end\" to indicate the end of them.\n\
15465 Give \"silent\" as the first line to make the breakpoint silent;\n\
15466 then no output is printed when it is hit, except what the commands print."));
15467
15468   c = add_com ("condition", class_breakpoint, condition_command, _("\
15469 Specify breakpoint number N to break only if COND is true.\n\
15470 Usage is `condition N COND', where N is an integer and COND is an\n\
15471 expression to be evaluated whenever breakpoint N is reached."));
15472   set_cmd_completer (c, condition_completer);
15473
15474   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15475 Set a temporary breakpoint.\n\
15476 Like \"break\" except the breakpoint is only temporary,\n\
15477 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15478 by using \"enable delete\" on the breakpoint number.\n\
15479 \n"
15480 BREAK_ARGS_HELP ("tbreak")));
15481   set_cmd_completer (c, location_completer);
15482
15483   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15484 Set a hardware assisted breakpoint.\n\
15485 Like \"break\" except the breakpoint requires hardware support,\n\
15486 some target hardware may not have this support.\n\
15487 \n"
15488 BREAK_ARGS_HELP ("hbreak")));
15489   set_cmd_completer (c, location_completer);
15490
15491   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15492 Set a temporary hardware assisted breakpoint.\n\
15493 Like \"hbreak\" except the breakpoint is only temporary,\n\
15494 so it will be deleted when hit.\n\
15495 \n"
15496 BREAK_ARGS_HELP ("thbreak")));
15497   set_cmd_completer (c, location_completer);
15498
15499   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15500 Enable some breakpoints.\n\
15501 Give breakpoint numbers (separated by spaces) as arguments.\n\
15502 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15503 This is used to cancel the effect of the \"disable\" command.\n\
15504 With a subcommand you can enable temporarily."),
15505                   &enablelist, "enable ", 1, &cmdlist);
15506
15507   add_com_alias ("en", "enable", class_breakpoint, 1);
15508
15509   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15510 Enable some breakpoints.\n\
15511 Give breakpoint numbers (separated by spaces) as arguments.\n\
15512 This is used to cancel the effect of the \"disable\" command.\n\
15513 May be abbreviated to simply \"enable\".\n"),
15514                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15515
15516   add_cmd ("once", no_class, enable_once_command, _("\
15517 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15518 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15519            &enablebreaklist);
15520
15521   add_cmd ("delete", no_class, enable_delete_command, _("\
15522 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15523 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15524            &enablebreaklist);
15525
15526   add_cmd ("count", no_class, enable_count_command, _("\
15527 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15528 If a breakpoint is hit while enabled in this fashion,\n\
15529 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15530            &enablebreaklist);
15531
15532   add_cmd ("delete", no_class, enable_delete_command, _("\
15533 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15534 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15535            &enablelist);
15536
15537   add_cmd ("once", no_class, enable_once_command, _("\
15538 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15539 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15540            &enablelist);
15541
15542   add_cmd ("count", no_class, enable_count_command, _("\
15543 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15544 If a breakpoint is hit while enabled in this fashion,\n\
15545 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15546            &enablelist);
15547
15548   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15549 Disable some breakpoints.\n\
15550 Arguments are breakpoint numbers with spaces in between.\n\
15551 To disable all breakpoints, give no argument.\n\
15552 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15553                   &disablelist, "disable ", 1, &cmdlist);
15554   add_com_alias ("dis", "disable", class_breakpoint, 1);
15555   add_com_alias ("disa", "disable", class_breakpoint, 1);
15556
15557   add_cmd ("breakpoints", class_alias, disable_command, _("\
15558 Disable some breakpoints.\n\
15559 Arguments are breakpoint numbers with spaces in between.\n\
15560 To disable all breakpoints, give no argument.\n\
15561 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15562 This command may be abbreviated \"disable\"."),
15563            &disablelist);
15564
15565   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15566 Delete some breakpoints or auto-display expressions.\n\
15567 Arguments are breakpoint numbers with spaces in between.\n\
15568 To delete all breakpoints, give no argument.\n\
15569 \n\
15570 Also a prefix command for deletion of other GDB objects.\n\
15571 The \"unset\" command is also an alias for \"delete\"."),
15572                   &deletelist, "delete ", 1, &cmdlist);
15573   add_com_alias ("d", "delete", class_breakpoint, 1);
15574   add_com_alias ("del", "delete", class_breakpoint, 1);
15575
15576   add_cmd ("breakpoints", class_alias, delete_command, _("\
15577 Delete some breakpoints or auto-display expressions.\n\
15578 Arguments are breakpoint numbers with spaces in between.\n\
15579 To delete all breakpoints, give no argument.\n\
15580 This command may be abbreviated \"delete\"."),
15581            &deletelist);
15582
15583   add_com ("clear", class_breakpoint, clear_command, _("\
15584 Clear breakpoint at specified location.\n\
15585 Argument may be a linespec, explicit, or address location as described below.\n\
15586 \n\
15587 With no argument, clears all breakpoints in the line that the selected frame\n\
15588 is executing in.\n"
15589 "\n" LOCATION_HELP_STRING "\n\
15590 See also the \"delete\" command which clears breakpoints by number."));
15591   add_com_alias ("cl", "clear", class_breakpoint, 1);
15592
15593   c = add_com ("break", class_breakpoint, break_command, _("\
15594 Set breakpoint at specified location.\n"
15595 BREAK_ARGS_HELP ("break")));
15596   set_cmd_completer (c, location_completer);
15597
15598   add_com_alias ("b", "break", class_run, 1);
15599   add_com_alias ("br", "break", class_run, 1);
15600   add_com_alias ("bre", "break", class_run, 1);
15601   add_com_alias ("brea", "break", class_run, 1);
15602
15603   if (dbx_commands)
15604     {
15605       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15606 Break in function/address or break at a line in the current file."),
15607                              &stoplist, "stop ", 1, &cmdlist);
15608       add_cmd ("in", class_breakpoint, stopin_command,
15609                _("Break in function or address."), &stoplist);
15610       add_cmd ("at", class_breakpoint, stopat_command,
15611                _("Break at a line in the current file."), &stoplist);
15612       add_com ("status", class_info, info_breakpoints_command, _("\
15613 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15614 The \"Type\" column indicates one of:\n\
15615 \tbreakpoint     - normal breakpoint\n\
15616 \twatchpoint     - watchpoint\n\
15617 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15618 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15619 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15620 address and file/line number respectively.\n\
15621 \n\
15622 Convenience variable \"$_\" and default examine address for \"x\"\n\
15623 are set to the address of the last breakpoint listed unless the command\n\
15624 is prefixed with \"server \".\n\n\
15625 Convenience variable \"$bpnum\" contains the number of the last\n\
15626 breakpoint set."));
15627     }
15628
15629   add_info ("breakpoints", info_breakpoints_command, _("\
15630 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15631 The \"Type\" column indicates one of:\n\
15632 \tbreakpoint     - normal breakpoint\n\
15633 \twatchpoint     - watchpoint\n\
15634 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15635 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15636 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15637 address and file/line number respectively.\n\
15638 \n\
15639 Convenience variable \"$_\" and default examine address for \"x\"\n\
15640 are set to the address of the last breakpoint listed unless the command\n\
15641 is prefixed with \"server \".\n\n\
15642 Convenience variable \"$bpnum\" contains the number of the last\n\
15643 breakpoint set."));
15644
15645   add_info_alias ("b", "breakpoints", 1);
15646
15647   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15648 Status of all breakpoints, or breakpoint number NUMBER.\n\
15649 The \"Type\" column indicates one of:\n\
15650 \tbreakpoint     - normal breakpoint\n\
15651 \twatchpoint     - watchpoint\n\
15652 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15653 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15654 \tuntil          - internal breakpoint used by the \"until\" command\n\
15655 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15656 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15657 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15658 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15659 address and file/line number respectively.\n\
15660 \n\
15661 Convenience variable \"$_\" and default examine address for \"x\"\n\
15662 are set to the address of the last breakpoint listed unless the command\n\
15663 is prefixed with \"server \".\n\n\
15664 Convenience variable \"$bpnum\" contains the number of the last\n\
15665 breakpoint set."),
15666            &maintenanceinfolist);
15667
15668   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15669 Set catchpoints to catch events."),
15670                   &catch_cmdlist, "catch ",
15671                   0/*allow-unknown*/, &cmdlist);
15672
15673   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15674 Set temporary catchpoints to catch events."),
15675                   &tcatch_cmdlist, "tcatch ",
15676                   0/*allow-unknown*/, &cmdlist);
15677
15678   add_catch_command ("fork", _("Catch calls to fork."),
15679                      catch_fork_command_1,
15680                      NULL,
15681                      (void *) (uintptr_t) catch_fork_permanent,
15682                      (void *) (uintptr_t) catch_fork_temporary);
15683   add_catch_command ("vfork", _("Catch calls to vfork."),
15684                      catch_fork_command_1,
15685                      NULL,
15686                      (void *) (uintptr_t) catch_vfork_permanent,
15687                      (void *) (uintptr_t) catch_vfork_temporary);
15688   add_catch_command ("exec", _("Catch calls to exec."),
15689                      catch_exec_command_1,
15690                      NULL,
15691                      CATCH_PERMANENT,
15692                      CATCH_TEMPORARY);
15693   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15694 Usage: catch load [REGEX]\n\
15695 If REGEX is given, only stop for libraries matching the regular expression."),
15696                      catch_load_command_1,
15697                      NULL,
15698                      CATCH_PERMANENT,
15699                      CATCH_TEMPORARY);
15700   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15701 Usage: catch unload [REGEX]\n\
15702 If REGEX is given, only stop for libraries matching the regular expression."),
15703                      catch_unload_command_1,
15704                      NULL,
15705                      CATCH_PERMANENT,
15706                      CATCH_TEMPORARY);
15707
15708   c = add_com ("watch", class_breakpoint, watch_command, _("\
15709 Set a watchpoint for an expression.\n\
15710 Usage: watch [-l|-location] EXPRESSION\n\
15711 A watchpoint stops execution of your program whenever the value of\n\
15712 an expression changes.\n\
15713 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15714 the memory to which it refers."));
15715   set_cmd_completer (c, expression_completer);
15716
15717   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15718 Set a read watchpoint for an expression.\n\
15719 Usage: rwatch [-l|-location] EXPRESSION\n\
15720 A watchpoint stops execution of your program whenever the value of\n\
15721 an expression is read.\n\
15722 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15723 the memory to which it refers."));
15724   set_cmd_completer (c, expression_completer);
15725
15726   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15727 Set a watchpoint for an expression.\n\
15728 Usage: awatch [-l|-location] EXPRESSION\n\
15729 A watchpoint stops execution of your program whenever the value of\n\
15730 an expression is either read or written.\n\
15731 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15732 the memory to which it refers."));
15733   set_cmd_completer (c, expression_completer);
15734
15735   add_info ("watchpoints", info_watchpoints_command, _("\
15736 Status of specified watchpoints (all watchpoints if no argument)."));
15737
15738   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15739      respond to changes - contrary to the description.  */
15740   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15741                             &can_use_hw_watchpoints, _("\
15742 Set debugger's willingness to use watchpoint hardware."), _("\
15743 Show debugger's willingness to use watchpoint hardware."), _("\
15744 If zero, gdb will not use hardware for new watchpoints, even if\n\
15745 such is available.  (However, any hardware watchpoints that were\n\
15746 created before setting this to nonzero, will continue to use watchpoint\n\
15747 hardware.)"),
15748                             NULL,
15749                             show_can_use_hw_watchpoints,
15750                             &setlist, &showlist);
15751
15752   can_use_hw_watchpoints = 1;
15753
15754   /* Tracepoint manipulation commands.  */
15755
15756   c = add_com ("trace", class_breakpoint, trace_command, _("\
15757 Set a tracepoint at specified location.\n\
15758 \n"
15759 BREAK_ARGS_HELP ("trace") "\n\
15760 Do \"help tracepoints\" for info on other tracepoint commands."));
15761   set_cmd_completer (c, location_completer);
15762
15763   add_com_alias ("tp", "trace", class_alias, 0);
15764   add_com_alias ("tr", "trace", class_alias, 1);
15765   add_com_alias ("tra", "trace", class_alias, 1);
15766   add_com_alias ("trac", "trace", class_alias, 1);
15767
15768   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15769 Set a fast tracepoint at specified location.\n\
15770 \n"
15771 BREAK_ARGS_HELP ("ftrace") "\n\
15772 Do \"help tracepoints\" for info on other tracepoint commands."));
15773   set_cmd_completer (c, location_completer);
15774
15775   c = add_com ("strace", class_breakpoint, strace_command, _("\
15776 Set a static tracepoint at location or marker.\n\
15777 \n\
15778 strace [LOCATION] [if CONDITION]\n\
15779 LOCATION may be a linespec, explicit, or address location (described below) \n\
15780 or -m MARKER_ID.\n\n\
15781 If a marker id is specified, probe the marker with that name.  With\n\
15782 no LOCATION, uses current execution address of the selected stack frame.\n\
15783 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15784 This collects arbitrary user data passed in the probe point call to the\n\
15785 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15786 by printing the $_sdata variable like any other convenience variable.\n\
15787 \n\
15788 CONDITION is a boolean expression.\n\
15789 \n" LOCATION_HELP_STRING "\n\
15790 Multiple tracepoints at one place are permitted, and useful if their\n\
15791 conditions are different.\n\
15792 \n\
15793 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15794 Do \"help tracepoints\" for info on other tracepoint commands."));
15795   set_cmd_completer (c, location_completer);
15796
15797   add_info ("tracepoints", info_tracepoints_command, _("\
15798 Status of specified tracepoints (all tracepoints if no argument).\n\
15799 Convenience variable \"$tpnum\" contains the number of the\n\
15800 last tracepoint set."));
15801
15802   add_info_alias ("tp", "tracepoints", 1);
15803
15804   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15805 Delete specified tracepoints.\n\
15806 Arguments are tracepoint numbers, separated by spaces.\n\
15807 No argument means delete all tracepoints."),
15808            &deletelist);
15809   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15810
15811   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15812 Disable specified tracepoints.\n\
15813 Arguments are tracepoint numbers, separated by spaces.\n\
15814 No argument means disable all tracepoints."),
15815            &disablelist);
15816   deprecate_cmd (c, "disable");
15817
15818   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15819 Enable specified tracepoints.\n\
15820 Arguments are tracepoint numbers, separated by spaces.\n\
15821 No argument means enable all tracepoints."),
15822            &enablelist);
15823   deprecate_cmd (c, "enable");
15824
15825   add_com ("passcount", class_trace, trace_pass_command, _("\
15826 Set the passcount for a tracepoint.\n\
15827 The trace will end when the tracepoint has been passed 'count' times.\n\
15828 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15829 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15830
15831   add_prefix_cmd ("save", class_breakpoint, save_command,
15832                   _("Save breakpoint definitions as a script."),
15833                   &save_cmdlist, "save ",
15834                   0/*allow-unknown*/, &cmdlist);
15835
15836   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15837 Save current breakpoint definitions as a script.\n\
15838 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15839 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15840 session to restore them."),
15841                &save_cmdlist);
15842   set_cmd_completer (c, filename_completer);
15843
15844   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15845 Save current tracepoint definitions as a script.\n\
15846 Use the 'source' command in another debug session to restore them."),
15847                &save_cmdlist);
15848   set_cmd_completer (c, filename_completer);
15849
15850   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15851   deprecate_cmd (c, "save tracepoints");
15852
15853   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15854 Breakpoint specific settings\n\
15855 Configure various breakpoint-specific variables such as\n\
15856 pending breakpoint behavior"),
15857                   &breakpoint_set_cmdlist, "set breakpoint ",
15858                   0/*allow-unknown*/, &setlist);
15859   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15860 Breakpoint specific settings\n\
15861 Configure various breakpoint-specific variables such as\n\
15862 pending breakpoint behavior"),
15863                   &breakpoint_show_cmdlist, "show breakpoint ",
15864                   0/*allow-unknown*/, &showlist);
15865
15866   add_setshow_auto_boolean_cmd ("pending", no_class,
15867                                 &pending_break_support, _("\
15868 Set debugger's behavior regarding pending breakpoints."), _("\
15869 Show debugger's behavior regarding pending breakpoints."), _("\
15870 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15871 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15872 an error.  If auto, an unrecognized breakpoint location results in a\n\
15873 user-query to see if a pending breakpoint should be created."),
15874                                 NULL,
15875                                 show_pending_break_support,
15876                                 &breakpoint_set_cmdlist,
15877                                 &breakpoint_show_cmdlist);
15878
15879   pending_break_support = AUTO_BOOLEAN_AUTO;
15880
15881   add_setshow_boolean_cmd ("auto-hw", no_class,
15882                            &automatic_hardware_breakpoints, _("\
15883 Set automatic usage of hardware breakpoints."), _("\
15884 Show automatic usage of hardware breakpoints."), _("\
15885 If set, the debugger will automatically use hardware breakpoints for\n\
15886 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15887 a warning will be emitted for such breakpoints."),
15888                            NULL,
15889                            show_automatic_hardware_breakpoints,
15890                            &breakpoint_set_cmdlist,
15891                            &breakpoint_show_cmdlist);
15892
15893   add_setshow_boolean_cmd ("always-inserted", class_support,
15894                            &always_inserted_mode, _("\
15895 Set mode for inserting breakpoints."), _("\
15896 Show mode for inserting breakpoints."), _("\
15897 When this mode is on, breakpoints are inserted immediately as soon as\n\
15898 they're created, kept inserted even when execution stops, and removed\n\
15899 only when the user deletes them.  When this mode is off (the default),\n\
15900 breakpoints are inserted only when execution continues, and removed\n\
15901 when execution stops."),
15902                                 NULL,
15903                                 &show_always_inserted_mode,
15904                                 &breakpoint_set_cmdlist,
15905                                 &breakpoint_show_cmdlist);
15906
15907   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15908                         condition_evaluation_enums,
15909                         &condition_evaluation_mode_1, _("\
15910 Set mode of breakpoint condition evaluation."), _("\
15911 Show mode of breakpoint condition evaluation."), _("\
15912 When this is set to \"host\", breakpoint conditions will be\n\
15913 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15914 breakpoint conditions will be downloaded to the target (if the target\n\
15915 supports such feature) and conditions will be evaluated on the target's side.\n\
15916 If this is set to \"auto\" (default), this will be automatically set to\n\
15917 \"target\" if it supports condition evaluation, otherwise it will\n\
15918 be set to \"gdb\""),
15919                            &set_condition_evaluation_mode,
15920                            &show_condition_evaluation_mode,
15921                            &breakpoint_set_cmdlist,
15922                            &breakpoint_show_cmdlist);
15923
15924   add_com ("break-range", class_breakpoint, break_range_command, _("\
15925 Set a breakpoint for an address range.\n\
15926 break-range START-LOCATION, END-LOCATION\n\
15927 where START-LOCATION and END-LOCATION can be one of the following:\n\
15928   LINENUM, for that line in the current file,\n\
15929   FILE:LINENUM, for that line in that file,\n\
15930   +OFFSET, for that number of lines after the current line\n\
15931            or the start of the range\n\
15932   FUNCTION, for the first line in that function,\n\
15933   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15934   *ADDRESS, for the instruction at that address.\n\
15935 \n\
15936 The breakpoint will stop execution of the inferior whenever it executes\n\
15937 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15938 range (including START-LOCATION and END-LOCATION)."));
15939
15940   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15941 Set a dynamic printf at specified location.\n\
15942 dprintf location,format string,arg1,arg2,...\n\
15943 location may be a linespec, explicit, or address location.\n"
15944 "\n" LOCATION_HELP_STRING));
15945   set_cmd_completer (c, location_completer);
15946
15947   add_setshow_enum_cmd ("dprintf-style", class_support,
15948                         dprintf_style_enums, &dprintf_style, _("\
15949 Set the style of usage for dynamic printf."), _("\
15950 Show the style of usage for dynamic printf."), _("\
15951 This setting chooses how GDB will do a dynamic printf.\n\
15952 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15953 console, as with the \"printf\" command.\n\
15954 If the value is \"call\", the print is done by calling a function in your\n\
15955 program; by default printf(), but you can choose a different function or\n\
15956 output stream by setting dprintf-function and dprintf-channel."),
15957                         update_dprintf_commands, NULL,
15958                         &setlist, &showlist);
15959
15960   dprintf_function = xstrdup ("printf");
15961   add_setshow_string_cmd ("dprintf-function", class_support,
15962                           &dprintf_function, _("\
15963 Set the function to use for dynamic printf"), _("\
15964 Show the function to use for dynamic printf"), NULL,
15965                           update_dprintf_commands, NULL,
15966                           &setlist, &showlist);
15967
15968   dprintf_channel = xstrdup ("");
15969   add_setshow_string_cmd ("dprintf-channel", class_support,
15970                           &dprintf_channel, _("\
15971 Set the channel to use for dynamic printf"), _("\
15972 Show the channel to use for dynamic printf"), NULL,
15973                           update_dprintf_commands, NULL,
15974                           &setlist, &showlist);
15975
15976   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15977                            &disconnected_dprintf, _("\
15978 Set whether dprintf continues after GDB disconnects."), _("\
15979 Show whether dprintf continues after GDB disconnects."), _("\
15980 Use this to let dprintf commands continue to hit and produce output\n\
15981 even if GDB disconnects or detaches from the target."),
15982                            NULL,
15983                            NULL,
15984                            &setlist, &showlist);
15985
15986   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15987 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15988 (target agent only) This is useful for formatted output in user-defined commands."));
15989
15990   automatic_hardware_breakpoints = 1;
15991
15992   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15993   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15994 }