]> Git Repo - binutils.git/blob - gdb/breakpoint.c
gdb: remove SYMBOL_CLASS macro, add getter
[binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2022 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 "gdbsupport/gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "stack.h"
63 #include "ax-gdb.h"
64 #include "dummy-frame.h"
65 #include "interps.h"
66 #include "gdbsupport/format.h"
67 #include "thread-fsm.h"
68 #include "tid-parse.h"
69 #include "cli/cli-style.h"
70 #include "cli/cli-decode.h"
71
72 /* readline include files */
73 #include "readline/tilde.h"
74
75 /* readline defines this.  */
76 #undef savestring
77
78 #include "mi/mi-common.h"
79 #include "extension.h"
80 #include <algorithm>
81 #include "progspace-and-thread.h"
82 #include "gdbsupport/array-view.h"
83 #include "gdbsupport/gdb_optional.h"
84
85 /* Prototypes for local functions.  */
86
87 static void map_breakpoint_numbers (const char *,
88                                     gdb::function_view<void (breakpoint *)>);
89
90 static void breakpoint_re_set_default (struct breakpoint *);
91
92 static void
93   create_sals_from_location_default (struct event_location *location,
94                                      struct linespec_result *canonical,
95                                      enum bptype type_wanted);
96
97 static void create_breakpoints_sal_default (struct gdbarch *,
98                                             struct linespec_result *,
99                                             gdb::unique_xmalloc_ptr<char>,
100                                             gdb::unique_xmalloc_ptr<char>,
101                                             enum bptype,
102                                             enum bpdisp, int, int,
103                                             int,
104                                             const struct breakpoint_ops *,
105                                             int, int, int, unsigned);
106
107 static std::vector<symtab_and_line> decode_location_default
108   (struct breakpoint *b, struct event_location *location,
109    struct program_space *search_pspace);
110
111 static int can_use_hardware_watchpoint
112     (const std::vector<value_ref_ptr> &vals);
113
114 static void mention (struct breakpoint *);
115
116 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
117                                                                enum bptype,
118                                                                const struct breakpoint_ops *);
119 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
120                                                        const struct symtab_and_line *);
121
122 /* This function is used in gdbtk sources and thus can not be made
123    static.  */
124 static struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
125                                               struct symtab_and_line,
126                                               enum bptype,
127                                               const struct breakpoint_ops *);
128
129 static struct breakpoint *
130   momentary_breakpoint_from_master (struct breakpoint *orig,
131                                     enum bptype type,
132                                     const struct breakpoint_ops *ops,
133                                     int loc_enabled);
134
135 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
136
137 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
138                                             CORE_ADDR bpaddr,
139                                             enum bptype bptype);
140
141 static void describe_other_breakpoints (struct gdbarch *,
142                                         struct program_space *, CORE_ADDR,
143                                         struct obj_section *, int);
144
145 static int watchpoint_locations_match (struct bp_location *loc1,
146                                        struct bp_location *loc2);
147
148 static int breakpoint_locations_match (struct bp_location *loc1,
149                                        struct bp_location *loc2,
150                                        bool sw_hw_bps_match = false);
151
152 static int breakpoint_location_address_match (struct bp_location *bl,
153                                               const struct address_space *aspace,
154                                               CORE_ADDR addr);
155
156 static int breakpoint_location_address_range_overlap (struct bp_location *,
157                                                       const address_space *,
158                                                       CORE_ADDR, int);
159
160 static int remove_breakpoint (struct bp_location *);
161 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
162
163 static enum print_stop_action print_bp_stop_message (bpstat *bs);
164
165 static int hw_breakpoint_used_count (void);
166
167 static int hw_watchpoint_use_count (struct breakpoint *);
168
169 static int hw_watchpoint_used_count_others (struct breakpoint *except,
170                                             enum bptype type,
171                                             int *other_type_used);
172
173 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
174                                     int count);
175
176 static void decref_bp_location (struct bp_location **loc);
177
178 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
179
180 /* update_global_location_list's modes of operation wrt to whether to
181    insert locations now.  */
182 enum ugll_insert_mode
183 {
184   /* Don't insert any breakpoint locations into the inferior, only
185      remove already-inserted locations that no longer should be
186      inserted.  Functions that delete a breakpoint or breakpoints
187      should specify this mode, so that deleting a breakpoint doesn't
188      have the side effect of inserting the locations of other
189      breakpoints that are marked not-inserted, but should_be_inserted
190      returns true on them.
191
192      This behavior is useful is situations close to tear-down -- e.g.,
193      after an exec, while the target still has execution, but
194      breakpoint shadows of the previous executable image should *NOT*
195      be restored to the new image; or before detaching, where the
196      target still has execution and wants to delete breakpoints from
197      GDB's lists, and all breakpoints had already been removed from
198      the inferior.  */
199   UGLL_DONT_INSERT,
200
201   /* May insert breakpoints iff breakpoints_should_be_inserted_now
202      claims breakpoints should be inserted now.  */
203   UGLL_MAY_INSERT,
204
205   /* Insert locations now, irrespective of
206      breakpoints_should_be_inserted_now.  E.g., say all threads are
207      stopped right now, and the user did "continue".  We need to
208      insert breakpoints _before_ resuming the target, but
209      UGLL_MAY_INSERT wouldn't insert them, because
210      breakpoints_should_be_inserted_now returns false at that point,
211      as no thread is running yet.  */
212   UGLL_INSERT
213 };
214
215 static void update_global_location_list (enum ugll_insert_mode);
216
217 static void update_global_location_list_nothrow (enum ugll_insert_mode);
218
219 static void insert_breakpoint_locations (void);
220
221 static void trace_pass_command (const char *, int);
222
223 static void set_tracepoint_count (int num);
224
225 static bool is_masked_watchpoint (const struct breakpoint *b);
226
227 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
228    otherwise.  */
229
230 static int strace_marker_p (struct breakpoint *b);
231
232 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
233    that are implemented on top of software or hardware breakpoints
234    (user breakpoints, internal and momentary breakpoints, etc.).  */
235 static struct breakpoint_ops bkpt_base_breakpoint_ops;
236
237 /* Internal breakpoints class type.  */
238 static struct breakpoint_ops internal_breakpoint_ops;
239
240 /* Momentary breakpoints class type.  */
241 static struct breakpoint_ops momentary_breakpoint_ops;
242
243 /* The breakpoint_ops structure to be used in regular user created
244    breakpoints.  */
245 struct breakpoint_ops bkpt_breakpoint_ops;
246
247 /* Breakpoints set on probes.  */
248 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
249
250 /* Tracepoints set on probes.  */
251 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
252
253 /* Dynamic printf class type.  */
254 struct breakpoint_ops dprintf_breakpoint_ops;
255
256 /* The style in which to perform a dynamic printf.  This is a user
257    option because different output options have different tradeoffs;
258    if GDB does the printing, there is better error handling if there
259    is a problem with any of the arguments, but using an inferior
260    function lets you have special-purpose printers and sending of
261    output to the same place as compiled-in print functions.  */
262
263 static const char dprintf_style_gdb[] = "gdb";
264 static const char dprintf_style_call[] = "call";
265 static const char dprintf_style_agent[] = "agent";
266 static const char *const dprintf_style_enums[] = {
267   dprintf_style_gdb,
268   dprintf_style_call,
269   dprintf_style_agent,
270   NULL
271 };
272 static const char *dprintf_style = dprintf_style_gdb;
273
274 /* The function to use for dynamic printf if the preferred style is to
275    call into the inferior.  The value is simply a string that is
276    copied into the command, so it can be anything that GDB can
277    evaluate to a callable address, not necessarily a function name.  */
278
279 static std::string dprintf_function = "printf";
280
281 /* The channel to use for dynamic printf if the preferred style is to
282    call into the inferior; if a nonempty string, it will be passed to
283    the call as the first argument, with the format string as the
284    second.  As with the dprintf function, this can be anything that
285    GDB knows how to evaluate, so in addition to common choices like
286    "stderr", this could be an app-specific expression like
287    "mystreams[curlogger]".  */
288
289 static std::string dprintf_channel;
290
291 /* True if dprintf commands should continue to operate even if GDB
292    has disconnected.  */
293 static bool disconnected_dprintf = true;
294
295 struct command_line *
296 breakpoint_commands (struct breakpoint *b)
297 {
298   return b->commands ? b->commands.get () : NULL;
299 }
300
301 /* Flag indicating that a command has proceeded the inferior past the
302    current breakpoint.  */
303
304 static bool breakpoint_proceeded;
305
306 const char *
307 bpdisp_text (enum bpdisp disp)
308 {
309   /* NOTE: the following values are a part of MI protocol and
310      represent values of 'disp' field returned when inferior stops at
311      a breakpoint.  */
312   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
313
314   return bpdisps[(int) disp];
315 }
316
317 /* Prototypes for exported functions.  */
318 /* If FALSE, gdb will not use hardware support for watchpoints, even
319    if such is available.  */
320 static int can_use_hw_watchpoints;
321
322 static void
323 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
324                              struct cmd_list_element *c,
325                              const char *value)
326 {
327   fprintf_filtered (file,
328                     _("Debugger's willingness to use "
329                       "watchpoint hardware is %s.\n"),
330                     value);
331 }
332
333 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
334    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
335    for unrecognized breakpoint locations.
336    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
337 static enum auto_boolean pending_break_support;
338 static void
339 show_pending_break_support (struct ui_file *file, int from_tty,
340                             struct cmd_list_element *c,
341                             const char *value)
342 {
343   fprintf_filtered (file,
344                     _("Debugger's behavior regarding "
345                       "pending breakpoints is %s.\n"),
346                     value);
347 }
348
349 /* If true, gdb will automatically use hardware breakpoints for breakpoints
350    set with "break" but falling in read-only memory.
351    If false, gdb will warn about such breakpoints, but won't automatically
352    use hardware breakpoints.  */
353 static bool automatic_hardware_breakpoints;
354 static void
355 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
356                                      struct cmd_list_element *c,
357                                      const char *value)
358 {
359   fprintf_filtered (file,
360                     _("Automatic usage of hardware breakpoints is %s.\n"),
361                     value);
362 }
363
364 /* If on, GDB keeps breakpoints inserted even if the inferior is
365    stopped, and immediately inserts any new breakpoints as soon as
366    they're created.  If off (default), GDB keeps breakpoints off of
367    the target as long as possible.  That is, it delays inserting
368    breakpoints until the next resume, and removes them again when the
369    target fully stops.  This is a bit safer in case GDB crashes while
370    processing user input.  */
371 static bool always_inserted_mode = false;
372
373 static void
374 show_always_inserted_mode (struct ui_file *file, int from_tty,
375                      struct cmd_list_element *c, const char *value)
376 {
377   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
378                     value);
379 }
380
381 /* See breakpoint.h.  */
382
383 int
384 breakpoints_should_be_inserted_now (void)
385 {
386   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
387     {
388       /* If breakpoints are global, they should be inserted even if no
389          thread under gdb's control is running, or even if there are
390          no threads under GDB's control yet.  */
391       return 1;
392     }
393   else
394     {
395       if (always_inserted_mode)
396         {
397           /* The user wants breakpoints inserted even if all threads
398              are stopped.  */
399           return 1;
400         }
401
402       for (inferior *inf : all_inferiors ())
403         if (inf->has_execution ()
404             && threads_are_executing (inf->process_target ()))
405           return 1;
406
407       /* Don't remove breakpoints yet if, even though all threads are
408          stopped, we still have events to process.  */
409       for (thread_info *tp : all_non_exited_threads ())
410         if (tp->resumed () && tp->has_pending_waitstatus ())
411           return 1;
412     }
413   return 0;
414 }
415
416 static const char condition_evaluation_both[] = "host or target";
417
418 /* Modes for breakpoint condition evaluation.  */
419 static const char condition_evaluation_auto[] = "auto";
420 static const char condition_evaluation_host[] = "host";
421 static const char condition_evaluation_target[] = "target";
422 static const char *const condition_evaluation_enums[] = {
423   condition_evaluation_auto,
424   condition_evaluation_host,
425   condition_evaluation_target,
426   NULL
427 };
428
429 /* Global that holds the current mode for breakpoint condition evaluation.  */
430 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
431
432 /* Global that we use to display information to the user (gets its value from
433    condition_evaluation_mode_1.  */
434 static const char *condition_evaluation_mode = condition_evaluation_auto;
435
436 /* Translate a condition evaluation mode MODE into either "host"
437    or "target".  This is used mostly to translate from "auto" to the
438    real setting that is being used.  It returns the translated
439    evaluation mode.  */
440
441 static const char *
442 translate_condition_evaluation_mode (const char *mode)
443 {
444   if (mode == condition_evaluation_auto)
445     {
446       if (target_supports_evaluation_of_breakpoint_conditions ())
447         return condition_evaluation_target;
448       else
449         return condition_evaluation_host;
450     }
451   else
452     return mode;
453 }
454
455 /* Discovers what condition_evaluation_auto translates to.  */
456
457 static const char *
458 breakpoint_condition_evaluation_mode (void)
459 {
460   return translate_condition_evaluation_mode (condition_evaluation_mode);
461 }
462
463 /* Return true if GDB should evaluate breakpoint conditions or false
464    otherwise.  */
465
466 static int
467 gdb_evaluates_breakpoint_condition_p (void)
468 {
469   const char *mode = breakpoint_condition_evaluation_mode ();
470
471   return (mode == condition_evaluation_host);
472 }
473
474 /* Are we executing breakpoint commands?  */
475 static int executing_breakpoint_commands;
476
477 /* Are overlay event breakpoints enabled? */
478 static int overlay_events_enabled;
479
480 /* See description in breakpoint.h. */
481 bool target_exact_watchpoints = false;
482
483 /* Walk the following statement or block through all breakpoints.
484    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
485    current breakpoint.  */
486
487 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
488         for (B = breakpoint_chain;      \
489              B ? (TMP=B->next, 1): 0;   \
490              B = TMP)
491
492 /* Chains of all breakpoints defined.  */
493
494 static struct breakpoint *breakpoint_chain;
495
496 /* See breakpoint.h.  */
497
498 breakpoint_range
499 all_breakpoints ()
500 {
501   return breakpoint_range (breakpoint_chain);
502 }
503
504 /* See breakpoint.h.  */
505
506 breakpoint_safe_range
507 all_breakpoints_safe ()
508 {
509   return breakpoint_safe_range (all_breakpoints ());
510 }
511
512 /* See breakpoint.h.  */
513
514 tracepoint_range
515 all_tracepoints ()
516 {
517   return tracepoint_range (breakpoint_chain);
518 }
519
520 /* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS.  */
521
522 static std::vector<bp_location *> bp_locations;
523
524 /* See breakpoint.h.  */
525
526 const std::vector<bp_location *> &
527 all_bp_locations ()
528 {
529   return bp_locations;
530 }
531
532 /* Range to iterate over breakpoint locations at a given address.  */
533
534 struct bp_locations_at_addr_range
535 {
536   using iterator = std::vector<bp_location *>::iterator;
537
538   bp_locations_at_addr_range (CORE_ADDR addr)
539   {
540     struct compare
541     {
542       bool operator() (const bp_location *loc, CORE_ADDR addr_) const
543       { return loc->address < addr_; }
544
545       bool operator() (CORE_ADDR addr_, const bp_location *loc) const
546       { return addr_ < loc->address; }
547     };
548
549     auto it_pair = std::equal_range (bp_locations.begin (), bp_locations.end (),
550                                      addr, compare ());
551
552     m_begin = it_pair.first;
553     m_end = it_pair.second;
554   }
555
556   iterator begin () const
557   { return m_begin; }
558
559   iterator end () const
560   { return m_end; }
561
562 private:
563   iterator m_begin;
564   iterator m_end;
565 };
566
567 /* Return a range to iterate over all breakpoint locations exactly at address
568    ADDR.
569
570    If it's needed to iterate multiple times on the same range, it's possible
571    to save the range in a local variable and use it multiple times:
572
573      auto range = all_bp_locations_at_addr (addr);
574
575      for (bp_location *loc : range)
576        // use loc
577
578      for (bp_location *loc : range)
579        // use loc
580
581    This saves a bit of time, as it avoids re-doing the binary searches to find
582    the range's boundaries.  Just remember not to change the bp_locations vector
583    in the mean time, as it could make the range's iterators stale.  */
584
585 static bp_locations_at_addr_range
586 all_bp_locations_at_addr (CORE_ADDR addr)
587 {
588   return bp_locations_at_addr_range (addr);
589 }
590
591 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
592    ADDRESS for the current elements of BP_LOCATIONS which get a valid
593    result from bp_location_has_shadow.  You can use it for roughly
594    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
595    an address you need to read.  */
596
597 static CORE_ADDR bp_locations_placed_address_before_address_max;
598
599 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
600    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
601    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
602    You can use it for roughly limiting the subrange of BP_LOCATIONS to
603    scan for shadow bytes for an address you need to read.  */
604
605 static CORE_ADDR bp_locations_shadow_len_after_address_max;
606
607 /* The locations that no longer correspond to any breakpoint, unlinked
608    from the bp_locations array, but for which a hit may still be
609    reported by a target.  */
610 static std::vector<bp_location *> moribund_locations;
611
612 /* Number of last breakpoint made.  */
613
614 static int breakpoint_count;
615
616 /* The value of `breakpoint_count' before the last command that
617    created breakpoints.  If the last (break-like) command created more
618    than one breakpoint, then the difference between BREAKPOINT_COUNT
619    and PREV_BREAKPOINT_COUNT is more than one.  */
620 static int prev_breakpoint_count;
621
622 /* Number of last tracepoint made.  */
623
624 static int tracepoint_count;
625
626 static struct cmd_list_element *breakpoint_set_cmdlist;
627 static struct cmd_list_element *breakpoint_show_cmdlist;
628 struct cmd_list_element *save_cmdlist;
629
630 /* Return whether a breakpoint is an active enabled breakpoint.  */
631 static int
632 breakpoint_enabled (struct breakpoint *b)
633 {
634   return (b->enable_state == bp_enabled);
635 }
636
637 /* Set breakpoint count to NUM.  */
638
639 static void
640 set_breakpoint_count (int num)
641 {
642   prev_breakpoint_count = breakpoint_count;
643   breakpoint_count = num;
644   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
645 }
646
647 /* Used by `start_rbreak_breakpoints' below, to record the current
648    breakpoint count before "rbreak" creates any breakpoint.  */
649 static int rbreak_start_breakpoint_count;
650
651 /* Called at the start an "rbreak" command to record the first
652    breakpoint made.  */
653
654 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
655 {
656   rbreak_start_breakpoint_count = breakpoint_count;
657 }
658
659 /* Called at the end of an "rbreak" command to record the last
660    breakpoint made.  */
661
662 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
663 {
664   prev_breakpoint_count = rbreak_start_breakpoint_count;
665 }
666
667 /* Used in run_command to zero the hit count when a new run starts.  */
668
669 void
670 clear_breakpoint_hit_counts (void)
671 {
672   for (breakpoint *b : all_breakpoints ())
673     b->hit_count = 0;
674 }
675
676 \f
677 /* Return the breakpoint with the specified number, or NULL
678    if the number does not refer to an existing breakpoint.  */
679
680 struct breakpoint *
681 get_breakpoint (int num)
682 {
683   for (breakpoint *b : all_breakpoints ())
684     if (b->number == num)
685       return b;
686   
687   return nullptr;
688 }
689
690 \f
691
692 /* Mark locations as "conditions have changed" in case the target supports
693    evaluating conditions on its side.  */
694
695 static void
696 mark_breakpoint_modified (struct breakpoint *b)
697 {
698   /* This is only meaningful if the target is
699      evaluating conditions and if the user has
700      opted for condition evaluation on the target's
701      side.  */
702   if (gdb_evaluates_breakpoint_condition_p ()
703       || !target_supports_evaluation_of_breakpoint_conditions ())
704     return;
705
706   if (!is_breakpoint (b))
707     return;
708
709   for (bp_location *loc : b->locations ())
710     loc->condition_changed = condition_modified;
711 }
712
713 /* Mark location as "conditions have changed" in case the target supports
714    evaluating conditions on its side.  */
715
716 static void
717 mark_breakpoint_location_modified (struct bp_location *loc)
718 {
719   /* This is only meaningful if the target is
720      evaluating conditions and if the user has
721      opted for condition evaluation on the target's
722      side.  */
723   if (gdb_evaluates_breakpoint_condition_p ()
724       || !target_supports_evaluation_of_breakpoint_conditions ())
725
726     return;
727
728   if (!is_breakpoint (loc->owner))
729     return;
730
731   loc->condition_changed = condition_modified;
732 }
733
734 /* Sets the condition-evaluation mode using the static global
735    condition_evaluation_mode.  */
736
737 static void
738 set_condition_evaluation_mode (const char *args, int from_tty,
739                                struct cmd_list_element *c)
740 {
741   const char *old_mode, *new_mode;
742
743   if ((condition_evaluation_mode_1 == condition_evaluation_target)
744       && !target_supports_evaluation_of_breakpoint_conditions ())
745     {
746       condition_evaluation_mode_1 = condition_evaluation_mode;
747       warning (_("Target does not support breakpoint condition evaluation.\n"
748                  "Using host evaluation mode instead."));
749       return;
750     }
751
752   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
753   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
754
755   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
756      settings was "auto".  */
757   condition_evaluation_mode = condition_evaluation_mode_1;
758
759   /* Only update the mode if the user picked a different one.  */
760   if (new_mode != old_mode)
761     {
762       /* If the user switched to a different evaluation mode, we
763          need to synch the changes with the target as follows:
764
765          "host" -> "target": Send all (valid) conditions to the target.
766          "target" -> "host": Remove all the conditions from the target.
767       */
768
769       if (new_mode == condition_evaluation_target)
770         {
771           /* Mark everything modified and synch conditions with the
772              target.  */
773           for (bp_location *loc : all_bp_locations ())
774             mark_breakpoint_location_modified (loc);
775         }
776       else
777         {
778           /* Manually mark non-duplicate locations to synch conditions
779              with the target.  We do this to remove all the conditions the
780              target knows about.  */
781           for (bp_location *loc : all_bp_locations ())
782             if (is_breakpoint (loc->owner) && loc->inserted)
783               loc->needs_update = 1;
784         }
785
786       /* Do the update.  */
787       update_global_location_list (UGLL_MAY_INSERT);
788     }
789
790   return;
791 }
792
793 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
794    what "auto" is translating to.  */
795
796 static void
797 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
798                                 struct cmd_list_element *c, const char *value)
799 {
800   if (condition_evaluation_mode == condition_evaluation_auto)
801     fprintf_filtered (file,
802                       _("Breakpoint condition evaluation "
803                         "mode is %s (currently %s).\n"),
804                       value,
805                       breakpoint_condition_evaluation_mode ());
806   else
807     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
808                       value);
809 }
810
811 /* Parse COND_STRING in the context of LOC and set as the condition
812    expression of LOC.  BP_NUM is the number of LOC's owner, LOC_NUM is
813    the number of LOC within its owner.  In case of parsing error, mark
814    LOC as DISABLED_BY_COND.  In case of success, unset DISABLED_BY_COND.  */
815
816 static void
817 set_breakpoint_location_condition (const char *cond_string, bp_location *loc,
818                                    int bp_num, int loc_num)
819 {
820   bool has_junk = false;
821   try
822     {
823       expression_up new_exp = parse_exp_1 (&cond_string, loc->address,
824                                            block_for_pc (loc->address), 0);
825       if (*cond_string != 0)
826         has_junk = true;
827       else
828         {
829           loc->cond = std::move (new_exp);
830           if (loc->disabled_by_cond && loc->enabled)
831             printf_filtered (_("Breakpoint %d's condition is now valid at "
832                                "location %d, enabling.\n"),
833                              bp_num, loc_num);
834
835           loc->disabled_by_cond = false;
836         }
837     }
838   catch (const gdb_exception_error &e)
839     {
840       if (loc->enabled)
841         {
842           /* Warn if a user-enabled location is now becoming disabled-by-cond.
843              BP_NUM is 0 if the breakpoint is being defined for the first
844              time using the "break ... if ..." command, and non-zero if
845              already defined.  */
846           if (bp_num != 0)
847             warning (_("failed to validate condition at location %d.%d, "
848                        "disabling:\n  %s"), bp_num, loc_num, e.what ());
849           else
850             warning (_("failed to validate condition at location %d, "
851                        "disabling:\n  %s"), loc_num, e.what ());
852         }
853
854       loc->disabled_by_cond = true;
855     }
856
857   if (has_junk)
858     error (_("Garbage '%s' follows condition"), cond_string);
859 }
860
861 void
862 set_breakpoint_condition (struct breakpoint *b, const char *exp,
863                           int from_tty, bool force)
864 {
865   if (*exp == 0)
866     {
867       b->cond_string.reset ();
868
869       if (is_watchpoint (b))
870         static_cast<watchpoint *> (b)->cond_exp.reset ();
871       else
872         {
873           int loc_num = 1;
874           for (bp_location *loc : b->locations ())
875             {
876               loc->cond.reset ();
877               if (loc->disabled_by_cond && loc->enabled)
878                 printf_filtered (_("Breakpoint %d's condition is now valid at "
879                                    "location %d, enabling.\n"),
880                                  b->number, loc_num);
881               loc->disabled_by_cond = false;
882               loc_num++;
883
884               /* No need to free the condition agent expression
885                  bytecode (if we have one).  We will handle this
886                  when we go through update_global_location_list.  */
887             }
888         }
889
890       if (from_tty)
891         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
892     }
893   else
894     {
895       if (is_watchpoint (b))
896         {
897           innermost_block_tracker tracker;
898           const char *arg = exp;
899           expression_up new_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
900           if (*arg != 0)
901             error (_("Junk at end of expression"));
902           watchpoint *w = static_cast<watchpoint *> (b);
903           w->cond_exp = std::move (new_exp);
904           w->cond_exp_valid_block = tracker.block ();
905         }
906       else
907         {
908           /* Parse and set condition expressions.  We make two passes.
909              In the first, we parse the condition string to see if it
910              is valid in at least one location.  If so, the condition
911              would be accepted.  So we go ahead and set the locations'
912              conditions.  In case no valid case is found, we throw
913              the error and the condition string will be rejected.
914              This two-pass approach is taken to avoid setting the
915              state of locations in case of a reject.  */
916           for (bp_location *loc : b->locations ())
917             {
918               try
919                 {
920                   const char *arg = exp;
921                   parse_exp_1 (&arg, loc->address,
922                                block_for_pc (loc->address), 0);
923                   if (*arg != 0)
924                     error (_("Junk at end of expression"));
925                   break;
926                 }
927               catch (const gdb_exception_error &e)
928                 {
929                   /* Condition string is invalid.  If this happens to
930                      be the last loc, abandon (if not forced) or continue
931                      (if forced).  */
932                   if (loc->next == nullptr && !force)
933                     throw;
934                 }
935             }
936
937           /* If we reach here, the condition is valid at some locations.  */
938           int loc_num = 1;
939           for (bp_location *loc : b->locations ())
940             {
941               set_breakpoint_location_condition (exp, loc, b->number, loc_num);
942               loc_num++;
943             }
944         }
945
946       /* We know that the new condition parsed successfully.  The
947          condition string of the breakpoint can be safely updated.  */
948       b->cond_string = make_unique_xstrdup (exp);
949       b->condition_not_parsed = 0;
950     }
951   mark_breakpoint_modified (b);
952
953   gdb::observers::breakpoint_modified.notify (b);
954 }
955
956 /* See breakpoint.h.  */
957
958 void
959 set_breakpoint_condition (int bpnum, const char *exp, int from_tty,
960                           bool force)
961 {
962   for (breakpoint *b : all_breakpoints ())
963     if (b->number == bpnum)
964       {
965         /* Check if this breakpoint has a "stop" method implemented in an
966            extension language.  This method and conditions entered into GDB
967            from the CLI are mutually exclusive.  */
968         const struct extension_language_defn *extlang
969           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
970
971         if (extlang != NULL)
972           {
973             error (_("Only one stop condition allowed.  There is currently"
974                      " a %s stop condition defined for this breakpoint."),
975                    ext_lang_capitalized_name (extlang));
976           }
977         set_breakpoint_condition (b, exp, from_tty, force);
978
979         if (is_breakpoint (b))
980           update_global_location_list (UGLL_MAY_INSERT);
981
982         return;
983       }
984
985   error (_("No breakpoint number %d."), bpnum);
986 }
987
988 /* The options for the "condition" command.  */
989
990 struct condition_command_opts
991 {
992   /* For "-force".  */
993   bool force_condition = false;
994 };
995
996 static const gdb::option::option_def condition_command_option_defs[] = {
997
998   gdb::option::flag_option_def<condition_command_opts> {
999     "force",
1000     [] (condition_command_opts *opts) { return &opts->force_condition; },
1001     N_("Set the condition even if it is invalid for all current locations."),
1002   },
1003
1004 };
1005
1006 /* Create an option_def_group for the "condition" options, with
1007    CC_OPTS as context.  */
1008
1009 static inline gdb::option::option_def_group
1010 make_condition_command_options_def_group (condition_command_opts *cc_opts)
1011 {
1012   return {{condition_command_option_defs}, cc_opts};
1013 }
1014
1015 /* Completion for the "condition" command.  */
1016
1017 static void
1018 condition_completer (struct cmd_list_element *cmd,
1019                      completion_tracker &tracker,
1020                      const char *text, const char * /*word*/)
1021 {
1022   bool has_no_arguments = (*text == '\0');
1023   condition_command_opts cc_opts;
1024   const auto group = make_condition_command_options_def_group (&cc_opts);
1025   if (gdb::option::complete_options
1026       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
1027     return;
1028
1029   text = skip_spaces (text);
1030   const char *space = skip_to_space (text);
1031   if (*space == '\0')
1032     {
1033       int len;
1034
1035       if (text[0] == '$')
1036         {
1037           tracker.advance_custom_word_point_by (1);
1038           /* We don't support completion of history indices.  */
1039           if (!isdigit (text[1]))
1040             complete_internalvar (tracker, &text[1]);
1041           return;
1042         }
1043
1044       /* Suggest the "-force" flag if no arguments are given.  If
1045          arguments were passed, they either already include the flag,
1046          or we are beyond the point of suggesting it because it's
1047          positionally the first argument.  */
1048       if (has_no_arguments)
1049         gdb::option::complete_on_all_options (tracker, group);
1050
1051       /* We're completing the breakpoint number.  */
1052       len = strlen (text);
1053
1054       for (breakpoint *b : all_breakpoints ())
1055         {
1056           char number[50];
1057
1058           xsnprintf (number, sizeof (number), "%d", b->number);
1059
1060           if (strncmp (number, text, len) == 0)
1061             tracker.add_completion (make_unique_xstrdup (number));
1062         }
1063
1064       return;
1065     }
1066
1067   /* We're completing the expression part.  Skip the breakpoint num.  */
1068   const char *exp_start = skip_spaces (space);
1069   tracker.advance_custom_word_point_by (exp_start - text);
1070   text = exp_start;
1071   const char *word = advance_to_expression_complete_word_point (tracker, text);
1072   expression_completer (cmd, tracker, text, word);
1073 }
1074
1075 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1076
1077 static void
1078 condition_command (const char *arg, int from_tty)
1079 {
1080   const char *p;
1081   int bnum;
1082
1083   if (arg == 0)
1084     error_no_arg (_("breakpoint number"));
1085
1086   p = arg;
1087
1088   /* Check if the "-force" flag was passed.  */
1089   condition_command_opts cc_opts;
1090   const auto group = make_condition_command_options_def_group (&cc_opts);
1091   gdb::option::process_options
1092     (&p, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
1093
1094   bnum = get_number (&p);
1095   if (bnum == 0)
1096     error (_("Bad breakpoint argument: '%s'"), arg);
1097
1098   set_breakpoint_condition (bnum, p, from_tty, cc_opts.force_condition);
1099 }
1100
1101 /* Check that COMMAND do not contain commands that are suitable
1102    only for tracepoints and not suitable for ordinary breakpoints.
1103    Throw if any such commands is found.  */
1104
1105 static void
1106 check_no_tracepoint_commands (struct command_line *commands)
1107 {
1108   struct command_line *c;
1109
1110   for (c = commands; c; c = c->next)
1111     {
1112       if (c->control_type == while_stepping_control)
1113         error (_("The 'while-stepping' command can "
1114                  "only be used for tracepoints"));
1115
1116       check_no_tracepoint_commands (c->body_list_0.get ());
1117       check_no_tracepoint_commands (c->body_list_1.get ());
1118
1119       /* Not that command parsing removes leading whitespace and comment
1120          lines and also empty lines.  So, we only need to check for
1121          command directly.  */
1122       if (strstr (c->line, "collect ") == c->line)
1123         error (_("The 'collect' command can only be used for tracepoints"));
1124
1125       if (strstr (c->line, "teval ") == c->line)
1126         error (_("The 'teval' command can only be used for tracepoints"));
1127     }
1128 }
1129
1130 struct longjmp_breakpoint : public breakpoint
1131 {
1132   ~longjmp_breakpoint () override;
1133 };
1134
1135 /* Encapsulate tests for different types of tracepoints.  */
1136
1137 static bool
1138 is_tracepoint_type (bptype type)
1139 {
1140   return (type == bp_tracepoint
1141           || type == bp_fast_tracepoint
1142           || type == bp_static_tracepoint);
1143 }
1144
1145 static bool
1146 is_longjmp_type (bptype type)
1147 {
1148   return type == bp_longjmp || type == bp_exception;
1149 }
1150
1151 /* See breakpoint.h.  */
1152
1153 bool
1154 is_tracepoint (const struct breakpoint *b)
1155 {
1156   return is_tracepoint_type (b->type);
1157 }
1158
1159 /* Factory function to create an appropriate instance of breakpoint given
1160    TYPE.  */
1161
1162 static std::unique_ptr<breakpoint>
1163 new_breakpoint_from_type (bptype type)
1164 {
1165   breakpoint *b;
1166
1167   if (is_tracepoint_type (type))
1168     b = new tracepoint ();
1169   else if (is_longjmp_type (type))
1170     b = new longjmp_breakpoint ();
1171   else
1172     b = new breakpoint ();
1173
1174   return std::unique_ptr<breakpoint> (b);
1175 }
1176
1177 /* A helper function that validates that COMMANDS are valid for a
1178    breakpoint.  This function will throw an exception if a problem is
1179    found.  */
1180
1181 static void
1182 validate_commands_for_breakpoint (struct breakpoint *b,
1183                                   struct command_line *commands)
1184 {
1185   if (is_tracepoint (b))
1186     {
1187       struct tracepoint *t = (struct tracepoint *) b;
1188       struct command_line *c;
1189       struct command_line *while_stepping = 0;
1190
1191       /* Reset the while-stepping step count.  The previous commands
1192          might have included a while-stepping action, while the new
1193          ones might not.  */
1194       t->step_count = 0;
1195
1196       /* We need to verify that each top-level element of commands is
1197          valid for tracepoints, that there's at most one
1198          while-stepping element, and that the while-stepping's body
1199          has valid tracing commands excluding nested while-stepping.
1200          We also need to validate the tracepoint action line in the
1201          context of the tracepoint --- validate_actionline actually
1202          has side effects, like setting the tracepoint's
1203          while-stepping STEP_COUNT, in addition to checking if the
1204          collect/teval actions parse and make sense in the
1205          tracepoint's context.  */
1206       for (c = commands; c; c = c->next)
1207         {
1208           if (c->control_type == while_stepping_control)
1209             {
1210               if (b->type == bp_fast_tracepoint)
1211                 error (_("The 'while-stepping' command "
1212                          "cannot be used for fast tracepoint"));
1213               else if (b->type == bp_static_tracepoint)
1214                 error (_("The 'while-stepping' command "
1215                          "cannot be used for static tracepoint"));
1216
1217               if (while_stepping)
1218                 error (_("The 'while-stepping' command "
1219                          "can be used only once"));
1220               else
1221                 while_stepping = c;
1222             }
1223
1224           validate_actionline (c->line, b);
1225         }
1226       if (while_stepping)
1227         {
1228           struct command_line *c2;
1229
1230           gdb_assert (while_stepping->body_list_1 == nullptr);
1231           c2 = while_stepping->body_list_0.get ();
1232           for (; c2; c2 = c2->next)
1233             {
1234               if (c2->control_type == while_stepping_control)
1235                 error (_("The 'while-stepping' command cannot be nested"));
1236             }
1237         }
1238     }
1239   else
1240     {
1241       check_no_tracepoint_commands (commands);
1242     }
1243 }
1244
1245 /* Return a vector of all the static tracepoints set at ADDR.  The
1246    caller is responsible for releasing the vector.  */
1247
1248 std::vector<breakpoint *>
1249 static_tracepoints_here (CORE_ADDR addr)
1250 {
1251   std::vector<breakpoint *> found;
1252
1253   for (breakpoint *b : all_breakpoints ())
1254     if (b->type == bp_static_tracepoint)
1255       {
1256         for (bp_location *loc : b->locations ())
1257           if (loc->address == addr)
1258             found.push_back (b);
1259       }
1260
1261   return found;
1262 }
1263
1264 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1265    validate that only allowed commands are included.  */
1266
1267 void
1268 breakpoint_set_commands (struct breakpoint *b, 
1269                          counted_command_line &&commands)
1270 {
1271   validate_commands_for_breakpoint (b, commands.get ());
1272
1273   b->commands = std::move (commands);
1274   gdb::observers::breakpoint_modified.notify (b);
1275 }
1276
1277 /* Set the internal `silent' flag on the breakpoint.  Note that this
1278    is not the same as the "silent" that may appear in the breakpoint's
1279    commands.  */
1280
1281 void
1282 breakpoint_set_silent (struct breakpoint *b, int silent)
1283 {
1284   int old_silent = b->silent;
1285
1286   b->silent = silent;
1287   if (old_silent != silent)
1288     gdb::observers::breakpoint_modified.notify (b);
1289 }
1290
1291 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1292    breakpoint work for any thread.  */
1293
1294 void
1295 breakpoint_set_thread (struct breakpoint *b, int thread)
1296 {
1297   int old_thread = b->thread;
1298
1299   b->thread = thread;
1300   if (old_thread != thread)
1301     gdb::observers::breakpoint_modified.notify (b);
1302 }
1303
1304 /* Set the task for this breakpoint.  If TASK is 0, make the
1305    breakpoint work for any task.  */
1306
1307 void
1308 breakpoint_set_task (struct breakpoint *b, int task)
1309 {
1310   int old_task = b->task;
1311
1312   b->task = task;
1313   if (old_task != task)
1314     gdb::observers::breakpoint_modified.notify (b);
1315 }
1316
1317 static void
1318 commands_command_1 (const char *arg, int from_tty,
1319                     struct command_line *control)
1320 {
1321   counted_command_line cmd;
1322   /* cmd_read will be true once we have read cmd.  Note that cmd might still be
1323      NULL after the call to read_command_lines if the user provides an empty
1324      list of command by just typing "end".  */
1325   bool cmd_read = false;
1326
1327   std::string new_arg;
1328
1329   if (arg == NULL || !*arg)
1330     {
1331       /* Argument not explicitly given.  Synthesize it.  */
1332       if (breakpoint_count - prev_breakpoint_count > 1)
1333         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1334                                  breakpoint_count);
1335       else if (breakpoint_count > 0)
1336         new_arg = string_printf ("%d", breakpoint_count);
1337     }
1338   else
1339     {
1340       /* Create a copy of ARG.  This is needed because the "commands"
1341          command may be coming from a script.  In that case, the read
1342          line buffer is going to be overwritten in the lambda of
1343          'map_breakpoint_numbers' below when reading the next line
1344          before we are are done parsing the breakpoint numbers.  */
1345       new_arg = arg;
1346     }
1347   arg = new_arg.c_str ();
1348
1349   map_breakpoint_numbers
1350     (arg, [&] (breakpoint *b)
1351      {
1352        if (!cmd_read)
1353          {
1354            gdb_assert (cmd == NULL);
1355            if (control != NULL)
1356              cmd = control->body_list_0;
1357            else
1358              {
1359                std::string str
1360                  = string_printf (_("Type commands for breakpoint(s) "
1361                                     "%s, one per line."),
1362                                   arg);
1363
1364                auto do_validate = [=] (const char *line)
1365                                   {
1366                                     validate_actionline (line, b);
1367                                   };
1368                gdb::function_view<void (const char *)> validator;
1369                if (is_tracepoint (b))
1370                  validator = do_validate;
1371
1372                cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1373              }
1374            cmd_read = true;
1375          }
1376
1377        /* If a breakpoint was on the list more than once, we don't need to
1378           do anything.  */
1379        if (b->commands != cmd)
1380          {
1381            validate_commands_for_breakpoint (b, cmd.get ());
1382            b->commands = cmd;
1383            gdb::observers::breakpoint_modified.notify (b);
1384          }
1385      });
1386 }
1387
1388 static void
1389 commands_command (const char *arg, int from_tty)
1390 {
1391   commands_command_1 (arg, from_tty, NULL);
1392 }
1393
1394 /* Like commands_command, but instead of reading the commands from
1395    input stream, takes them from an already parsed command structure.
1396
1397    This is used by cli-script.c to DTRT with breakpoint commands
1398    that are part of if and while bodies.  */
1399 enum command_control_type
1400 commands_from_control_command (const char *arg, struct command_line *cmd)
1401 {
1402   commands_command_1 (arg, 0, cmd);
1403   return simple_control;
1404 }
1405
1406 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1407
1408 static int
1409 bp_location_has_shadow (struct bp_location *bl)
1410 {
1411   if (bl->loc_type != bp_loc_software_breakpoint)
1412     return 0;
1413   if (!bl->inserted)
1414     return 0;
1415   if (bl->target_info.shadow_len == 0)
1416     /* BL isn't valid, or doesn't shadow memory.  */
1417     return 0;
1418   return 1;
1419 }
1420
1421 /* Update BUF, which is LEN bytes read from the target address
1422    MEMADDR, by replacing a memory breakpoint with its shadowed
1423    contents.
1424
1425    If READBUF is not NULL, this buffer must not overlap with the of
1426    the breakpoint location's shadow_contents buffer.  Otherwise, a
1427    failed assertion internal error will be raised.  */
1428
1429 static void
1430 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1431                             const gdb_byte *writebuf_org,
1432                             ULONGEST memaddr, LONGEST len,
1433                             struct bp_target_info *target_info,
1434                             struct gdbarch *gdbarch)
1435 {
1436   /* Now do full processing of the found relevant range of elements.  */
1437   CORE_ADDR bp_addr = 0;
1438   int bp_size = 0;
1439   int bptoffset = 0;
1440
1441   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1442                                  current_program_space->aspace, 0))
1443     {
1444       /* The breakpoint is inserted in a different address space.  */
1445       return;
1446     }
1447
1448   /* Addresses and length of the part of the breakpoint that
1449      we need to copy.  */
1450   bp_addr = target_info->placed_address;
1451   bp_size = target_info->shadow_len;
1452
1453   if (bp_addr + bp_size <= memaddr)
1454     {
1455       /* The breakpoint is entirely before the chunk of memory we are
1456          reading.  */
1457       return;
1458     }
1459
1460   if (bp_addr >= memaddr + len)
1461     {
1462       /* The breakpoint is entirely after the chunk of memory we are
1463          reading.  */
1464       return;
1465     }
1466
1467   /* Offset within shadow_contents.  */
1468   if (bp_addr < memaddr)
1469     {
1470       /* Only copy the second part of the breakpoint.  */
1471       bp_size -= memaddr - bp_addr;
1472       bptoffset = memaddr - bp_addr;
1473       bp_addr = memaddr;
1474     }
1475
1476   if (bp_addr + bp_size > memaddr + len)
1477     {
1478       /* Only copy the first part of the breakpoint.  */
1479       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1480     }
1481
1482   if (readbuf != NULL)
1483     {
1484       /* Verify that the readbuf buffer does not overlap with the
1485          shadow_contents buffer.  */
1486       gdb_assert (target_info->shadow_contents >= readbuf + len
1487                   || readbuf >= (target_info->shadow_contents
1488                                  + target_info->shadow_len));
1489
1490       /* Update the read buffer with this inserted breakpoint's
1491          shadow.  */
1492       memcpy (readbuf + bp_addr - memaddr,
1493               target_info->shadow_contents + bptoffset, bp_size);
1494     }
1495   else
1496     {
1497       const unsigned char *bp;
1498       CORE_ADDR addr = target_info->reqstd_address;
1499       int placed_size;
1500
1501       /* Update the shadow with what we want to write to memory.  */
1502       memcpy (target_info->shadow_contents + bptoffset,
1503               writebuf_org + bp_addr - memaddr, bp_size);
1504
1505       /* Determine appropriate breakpoint contents and size for this
1506          address.  */
1507       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1508
1509       /* Update the final write buffer with this inserted
1510          breakpoint's INSN.  */
1511       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1512     }
1513 }
1514
1515 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1516    by replacing any memory breakpoints with their shadowed contents.
1517
1518    If READBUF is not NULL, this buffer must not overlap with any of
1519    the breakpoint location's shadow_contents buffers.  Otherwise,
1520    a failed assertion internal error will be raised.
1521
1522    The range of shadowed area by each bp_location is:
1523      bl->address - bp_locations_placed_address_before_address_max
1524      up to bl->address + bp_locations_shadow_len_after_address_max
1525    The range we were requested to resolve shadows for is:
1526      memaddr ... memaddr + len
1527    Thus the safe cutoff boundaries for performance optimization are
1528      memaddr + len <= (bl->address
1529                        - bp_locations_placed_address_before_address_max)
1530    and:
1531      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1532
1533 void
1534 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1535                         const gdb_byte *writebuf_org,
1536                         ULONGEST memaddr, LONGEST len)
1537 {
1538   /* Left boundary, right boundary and median element of our binary
1539      search.  */
1540   unsigned bc_l, bc_r, bc;
1541
1542   /* Find BC_L which is a leftmost element which may affect BUF
1543      content.  It is safe to report lower value but a failure to
1544      report higher one.  */
1545
1546   bc_l = 0;
1547   bc_r = bp_locations.size ();
1548   while (bc_l + 1 < bc_r)
1549     {
1550       struct bp_location *bl;
1551
1552       bc = (bc_l + bc_r) / 2;
1553       bl = bp_locations[bc];
1554
1555       /* Check first BL->ADDRESS will not overflow due to the added
1556          constant.  Then advance the left boundary only if we are sure
1557          the BC element can in no way affect the BUF content (MEMADDR
1558          to MEMADDR + LEN range).
1559
1560          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1561          offset so that we cannot miss a breakpoint with its shadow
1562          range tail still reaching MEMADDR.  */
1563
1564       if ((bl->address + bp_locations_shadow_len_after_address_max
1565            >= bl->address)
1566           && (bl->address + bp_locations_shadow_len_after_address_max
1567               <= memaddr))
1568         bc_l = bc;
1569       else
1570         bc_r = bc;
1571     }
1572
1573   /* Due to the binary search above, we need to make sure we pick the
1574      first location that's at BC_L's address.  E.g., if there are
1575      multiple locations at the same address, BC_L may end up pointing
1576      at a duplicate location, and miss the "master"/"inserted"
1577      location.  Say, given locations L1, L2 and L3 at addresses A and
1578      B:
1579
1580       L1@A, L2@A, L3@B, ...
1581
1582      BC_L could end up pointing at location L2, while the "master"
1583      location could be L1.  Since the `loc->inserted' flag is only set
1584      on "master" locations, we'd forget to restore the shadow of L1
1585      and L2.  */
1586   while (bc_l > 0
1587          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1588     bc_l--;
1589
1590   /* Now do full processing of the found relevant range of elements.  */
1591
1592   for (bc = bc_l; bc < bp_locations.size (); bc++)
1593     {
1594       struct bp_location *bl = bp_locations[bc];
1595
1596       /* bp_location array has BL->OWNER always non-NULL.  */
1597       if (bl->owner->type == bp_none)
1598         warning (_("reading through apparently deleted breakpoint #%d?"),
1599                  bl->owner->number);
1600
1601       /* Performance optimization: any further element can no longer affect BUF
1602          content.  */
1603
1604       if (bl->address >= bp_locations_placed_address_before_address_max
1605           && (memaddr + len
1606               <= (bl->address
1607                   - bp_locations_placed_address_before_address_max)))
1608         break;
1609
1610       if (!bp_location_has_shadow (bl))
1611         continue;
1612
1613       one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1614                                   memaddr, len, &bl->target_info, bl->gdbarch);
1615     }
1616 }
1617
1618 /* See breakpoint.h.  */
1619
1620 bool
1621 is_breakpoint (const struct breakpoint *bpt)
1622 {
1623   return (bpt->type == bp_breakpoint
1624           || bpt->type == bp_hardware_breakpoint
1625           || bpt->type == bp_dprintf);
1626 }
1627
1628 /* Return true if BPT is of any hardware watchpoint kind.  */
1629
1630 static bool
1631 is_hardware_watchpoint (const struct breakpoint *bpt)
1632 {
1633   return (bpt->type == bp_hardware_watchpoint
1634           || bpt->type == bp_read_watchpoint
1635           || bpt->type == bp_access_watchpoint);
1636 }
1637
1638 /* See breakpoint.h.  */
1639
1640 bool
1641 is_watchpoint (const struct breakpoint *bpt)
1642 {
1643   return (is_hardware_watchpoint (bpt)
1644           || bpt->type == bp_watchpoint);
1645 }
1646
1647 /* Returns true if the current thread and its running state are safe
1648    to evaluate or update watchpoint B.  Watchpoints on local
1649    expressions need to be evaluated in the context of the thread that
1650    was current when the watchpoint was created, and, that thread needs
1651    to be stopped to be able to select the correct frame context.
1652    Watchpoints on global expressions can be evaluated on any thread,
1653    and in any state.  It is presently left to the target allowing
1654    memory accesses when threads are running.  */
1655
1656 static int
1657 watchpoint_in_thread_scope (struct watchpoint *b)
1658 {
1659   return (b->pspace == current_program_space
1660           && (b->watchpoint_thread == null_ptid
1661               || (inferior_ptid == b->watchpoint_thread
1662                   && !inferior_thread ()->executing ())));
1663 }
1664
1665 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1666    associated bp_watchpoint_scope breakpoint.  */
1667
1668 static void
1669 watchpoint_del_at_next_stop (struct watchpoint *w)
1670 {
1671   if (w->related_breakpoint != w)
1672     {
1673       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1674       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1675       w->related_breakpoint->disposition = disp_del_at_next_stop;
1676       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1677       w->related_breakpoint = w;
1678     }
1679   w->disposition = disp_del_at_next_stop;
1680 }
1681
1682 /* Extract a bitfield value from value VAL using the bit parameters contained in
1683    watchpoint W.  */
1684
1685 static struct value *
1686 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1687 {
1688   struct value *bit_val;
1689
1690   if (val == NULL)
1691     return NULL;
1692
1693   bit_val = allocate_value (value_type (val));
1694
1695   unpack_value_bitfield (bit_val,
1696                          w->val_bitpos,
1697                          w->val_bitsize,
1698                          value_contents_for_printing (val).data (),
1699                          value_offset (val),
1700                          val);
1701
1702   return bit_val;
1703 }
1704
1705 /* Allocate a dummy location and add it to B, which must be a software
1706    watchpoint.  This is required because even if a software watchpoint
1707    is not watching any memory, bpstat_stop_status requires a location
1708    to be able to report stops.  */
1709
1710 static void
1711 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1712                                             struct program_space *pspace)
1713 {
1714   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1715
1716   b->loc = allocate_bp_location (b);
1717   b->loc->pspace = pspace;
1718   b->loc->address = -1;
1719   b->loc->length = -1;
1720 }
1721
1722 /* Returns true if B is a software watchpoint that is not watching any
1723    memory (e.g., "watch $pc").  */
1724
1725 static bool
1726 is_no_memory_software_watchpoint (struct breakpoint *b)
1727 {
1728   return (b->type == bp_watchpoint
1729           && b->loc != NULL
1730           && b->loc->next == NULL
1731           && b->loc->address == -1
1732           && b->loc->length == -1);
1733 }
1734
1735 /* Assuming that B is a watchpoint:
1736    - Reparse watchpoint expression, if REPARSE is non-zero
1737    - Evaluate expression and store the result in B->val
1738    - Evaluate the condition if there is one, and store the result
1739      in b->loc->cond.
1740    - Update the list of values that must be watched in B->loc.
1741
1742    If the watchpoint disposition is disp_del_at_next_stop, then do
1743    nothing.  If this is local watchpoint that is out of scope, delete
1744    it.
1745
1746    Even with `set breakpoint always-inserted on' the watchpoints are
1747    removed + inserted on each stop here.  Normal breakpoints must
1748    never be removed because they might be missed by a running thread
1749    when debugging in non-stop mode.  On the other hand, hardware
1750    watchpoints (is_hardware_watchpoint; processed here) are specific
1751    to each LWP since they are stored in each LWP's hardware debug
1752    registers.  Therefore, such LWP must be stopped first in order to
1753    be able to modify its hardware watchpoints.
1754
1755    Hardware watchpoints must be reset exactly once after being
1756    presented to the user.  It cannot be done sooner, because it would
1757    reset the data used to present the watchpoint hit to the user.  And
1758    it must not be done later because it could display the same single
1759    watchpoint hit during multiple GDB stops.  Note that the latter is
1760    relevant only to the hardware watchpoint types bp_read_watchpoint
1761    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1762    not user-visible - its hit is suppressed if the memory content has
1763    not changed.
1764
1765    The following constraints influence the location where we can reset
1766    hardware watchpoints:
1767
1768    * target_stopped_by_watchpoint and target_stopped_data_address are
1769      called several times when GDB stops.
1770
1771    [linux] 
1772    * Multiple hardware watchpoints can be hit at the same time,
1773      causing GDB to stop.  GDB only presents one hardware watchpoint
1774      hit at a time as the reason for stopping, and all the other hits
1775      are presented later, one after the other, each time the user
1776      requests the execution to be resumed.  Execution is not resumed
1777      for the threads still having pending hit event stored in
1778      LWP_INFO->STATUS.  While the watchpoint is already removed from
1779      the inferior on the first stop the thread hit event is kept being
1780      reported from its cached value by linux_nat_stopped_data_address
1781      until the real thread resume happens after the watchpoint gets
1782      presented and thus its LWP_INFO->STATUS gets reset.
1783
1784    Therefore the hardware watchpoint hit can get safely reset on the
1785    watchpoint removal from inferior.  */
1786
1787 static void
1788 update_watchpoint (struct watchpoint *b, int reparse)
1789 {
1790   int within_current_scope;
1791   struct frame_id saved_frame_id;
1792   int frame_saved;
1793
1794   /* If this is a local watchpoint, we only want to check if the
1795      watchpoint frame is in scope if the current thread is the thread
1796      that was used to create the watchpoint.  */
1797   if (!watchpoint_in_thread_scope (b))
1798     return;
1799
1800   if (b->disposition == disp_del_at_next_stop)
1801     return;
1802  
1803   frame_saved = 0;
1804
1805   /* Determine if the watchpoint is within scope.  */
1806   if (b->exp_valid_block == NULL)
1807     within_current_scope = 1;
1808   else
1809     {
1810       struct frame_info *fi = get_current_frame ();
1811       struct gdbarch *frame_arch = get_frame_arch (fi);
1812       CORE_ADDR frame_pc = get_frame_pc (fi);
1813
1814       /* If we're at a point where the stack has been destroyed
1815          (e.g. in a function epilogue), unwinding may not work
1816          properly. Do not attempt to recreate locations at this
1817          point.  See similar comments in watchpoint_check.  */
1818       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1819         return;
1820
1821       /* Save the current frame's ID so we can restore it after
1822          evaluating the watchpoint expression on its own frame.  */
1823       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1824          took a frame parameter, so that we didn't have to change the
1825          selected frame.  */
1826       frame_saved = 1;
1827       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1828
1829       fi = frame_find_by_id (b->watchpoint_frame);
1830       within_current_scope = (fi != NULL);
1831       if (within_current_scope)
1832         select_frame (fi);
1833     }
1834
1835   /* We don't free locations.  They are stored in the bp_location array
1836      and update_global_location_list will eventually delete them and
1837      remove breakpoints if needed.  */
1838   b->loc = NULL;
1839
1840   if (within_current_scope && reparse)
1841     {
1842       const char *s;
1843
1844       b->exp.reset ();
1845       s = (b->exp_string_reparse
1846            ? b->exp_string_reparse.get ()
1847            : b->exp_string.get ());
1848       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1849       /* If the meaning of expression itself changed, the old value is
1850          no longer relevant.  We don't want to report a watchpoint hit
1851          to the user when the old value and the new value may actually
1852          be completely different objects.  */
1853       b->val = NULL;
1854       b->val_valid = false;
1855
1856       /* Note that unlike with breakpoints, the watchpoint's condition
1857          expression is stored in the breakpoint object, not in the
1858          locations (re)created below.  */
1859       if (b->cond_string != NULL)
1860         {
1861           b->cond_exp.reset ();
1862
1863           s = b->cond_string.get ();
1864           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1865         }
1866     }
1867
1868   /* If we failed to parse the expression, for example because
1869      it refers to a global variable in a not-yet-loaded shared library,
1870      don't try to insert watchpoint.  We don't automatically delete
1871      such watchpoint, though, since failure to parse expression
1872      is different from out-of-scope watchpoint.  */
1873   if (!target_has_execution ())
1874     {
1875       /* Without execution, memory can't change.  No use to try and
1876          set watchpoint locations.  The watchpoint will be reset when
1877          the target gains execution, through breakpoint_re_set.  */
1878       if (!can_use_hw_watchpoints)
1879         {
1880           if (b->ops->works_in_software_mode (b))
1881             b->type = bp_watchpoint;
1882           else
1883             error (_("Can't set read/access watchpoint when "
1884                      "hardware watchpoints are disabled."));
1885         }
1886     }
1887   else if (within_current_scope && b->exp)
1888     {
1889       std::vector<value_ref_ptr> val_chain;
1890       struct value *v, *result;
1891       struct program_space *frame_pspace;
1892
1893       fetch_subexp_value (b->exp.get (), b->exp->op.get (), &v, &result,
1894                           &val_chain, false);
1895
1896       /* Avoid setting b->val if it's already set.  The meaning of
1897          b->val is 'the last value' user saw, and we should update
1898          it only if we reported that last value to user.  As it
1899          happens, the code that reports it updates b->val directly.
1900          We don't keep track of the memory value for masked
1901          watchpoints.  */
1902       if (!b->val_valid && !is_masked_watchpoint (b))
1903         {
1904           if (b->val_bitsize != 0)
1905             v = extract_bitfield_from_watchpoint_value (b, v);
1906           b->val = release_value (v);
1907           b->val_valid = true;
1908         }
1909
1910       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1911
1912       /* Look at each value on the value chain.  */
1913       gdb_assert (!val_chain.empty ());
1914       for (const value_ref_ptr &iter : val_chain)
1915         {
1916           v = iter.get ();
1917
1918           /* If it's a memory location, and GDB actually needed
1919              its contents to evaluate the expression, then we
1920              must watch it.  If the first value returned is
1921              still lazy, that means an error occurred reading it;
1922              watch it anyway in case it becomes readable.  */
1923           if (VALUE_LVAL (v) == lval_memory
1924               && (v == val_chain[0] || ! value_lazy (v)))
1925             {
1926               struct type *vtype = check_typedef (value_type (v));
1927
1928               /* We only watch structs and arrays if user asked
1929                  for it explicitly, never if they just happen to
1930                  appear in the middle of some value chain.  */
1931               if (v == result
1932                   || (vtype->code () != TYPE_CODE_STRUCT
1933                       && vtype->code () != TYPE_CODE_ARRAY))
1934                 {
1935                   CORE_ADDR addr;
1936                   enum target_hw_bp_type type;
1937                   struct bp_location *loc, **tmp;
1938                   int bitpos = 0, bitsize = 0;
1939
1940                   if (value_bitsize (v) != 0)
1941                     {
1942                       /* Extract the bit parameters out from the bitfield
1943                          sub-expression.  */
1944                       bitpos = value_bitpos (v);
1945                       bitsize = value_bitsize (v);
1946                     }
1947                   else if (v == result && b->val_bitsize != 0)
1948                     {
1949                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1950                         lvalue whose bit parameters are saved in the fields
1951                         VAL_BITPOS and VAL_BITSIZE.  */
1952                       bitpos = b->val_bitpos;
1953                       bitsize = b->val_bitsize;
1954                     }
1955
1956                   addr = value_address (v);
1957                   if (bitsize != 0)
1958                     {
1959                       /* Skip the bytes that don't contain the bitfield.  */
1960                       addr += bitpos / 8;
1961                     }
1962
1963                   type = hw_write;
1964                   if (b->type == bp_read_watchpoint)
1965                     type = hw_read;
1966                   else if (b->type == bp_access_watchpoint)
1967                     type = hw_access;
1968
1969                   loc = allocate_bp_location (b);
1970                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1971                     ;
1972                   *tmp = loc;
1973                   loc->gdbarch = value_type (v)->arch ();
1974
1975                   loc->pspace = frame_pspace;
1976                   loc->address = address_significant (loc->gdbarch, addr);
1977
1978                   if (bitsize != 0)
1979                     {
1980                       /* Just cover the bytes that make up the bitfield.  */
1981                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1982                     }
1983                   else
1984                     loc->length = TYPE_LENGTH (value_type (v));
1985
1986                   loc->watchpoint_type = type;
1987                 }
1988             }
1989         }
1990
1991       /* Change the type of breakpoint between hardware assisted or
1992          an ordinary watchpoint depending on the hardware support
1993          and free hardware slots.  REPARSE is set when the inferior
1994          is started.  */
1995       if (reparse)
1996         {
1997           int reg_cnt;
1998           enum bp_loc_type loc_type;
1999
2000           reg_cnt = can_use_hardware_watchpoint (val_chain);
2001
2002           if (reg_cnt)
2003             {
2004               int i, target_resources_ok, other_type_used;
2005               enum bptype type;
2006
2007               /* Use an exact watchpoint when there's only one memory region to be
2008                  watched, and only one debug register is needed to watch it.  */
2009               b->exact = target_exact_watchpoints && reg_cnt == 1;
2010
2011               /* We need to determine how many resources are already
2012                  used for all other hardware watchpoints plus this one
2013                  to see if we still have enough resources to also fit
2014                  this watchpoint in as well.  */
2015
2016               /* If this is a software watchpoint, we try to turn it
2017                  to a hardware one -- count resources as if B was of
2018                  hardware watchpoint type.  */
2019               type = b->type;
2020               if (type == bp_watchpoint)
2021                 type = bp_hardware_watchpoint;
2022
2023               /* This watchpoint may or may not have been placed on
2024                  the list yet at this point (it won't be in the list
2025                  if we're trying to create it for the first time,
2026                  through watch_command), so always account for it
2027                  manually.  */
2028
2029               /* Count resources used by all watchpoints except B.  */
2030               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
2031
2032               /* Add in the resources needed for B.  */
2033               i += hw_watchpoint_use_count (b);
2034
2035               target_resources_ok
2036                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2037               if (target_resources_ok <= 0)
2038                 {
2039                   int sw_mode = b->ops->works_in_software_mode (b);
2040
2041                   if (target_resources_ok == 0 && !sw_mode)
2042                     error (_("Target does not support this type of "
2043                              "hardware watchpoint."));
2044                   else if (target_resources_ok < 0 && !sw_mode)
2045                     error (_("There are not enough available hardware "
2046                              "resources for this watchpoint."));
2047
2048                   /* Downgrade to software watchpoint.  */
2049                   b->type = bp_watchpoint;
2050                 }
2051               else
2052                 {
2053                   /* If this was a software watchpoint, we've just
2054                      found we have enough resources to turn it to a
2055                      hardware watchpoint.  Otherwise, this is a
2056                      nop.  */
2057                   b->type = type;
2058                 }
2059             }
2060           else if (!b->ops->works_in_software_mode (b))
2061             {
2062               if (!can_use_hw_watchpoints)
2063                 error (_("Can't set read/access watchpoint when "
2064                          "hardware watchpoints are disabled."));
2065               else
2066                 error (_("Expression cannot be implemented with "
2067                          "read/access watchpoint."));
2068             }
2069           else
2070             b->type = bp_watchpoint;
2071
2072           loc_type = (b->type == bp_watchpoint? bp_loc_other
2073                       : bp_loc_hardware_watchpoint);
2074           for (bp_location *bl : b->locations ())
2075             bl->loc_type = loc_type;
2076         }
2077
2078       /* If a software watchpoint is not watching any memory, then the
2079          above left it without any location set up.  But,
2080          bpstat_stop_status requires a location to be able to report
2081          stops, so make sure there's at least a dummy one.  */
2082       if (b->type == bp_watchpoint && b->loc == NULL)
2083         software_watchpoint_add_no_memory_location (b, frame_pspace);
2084     }
2085   else if (!within_current_scope)
2086     {
2087       printf_filtered (_("\
2088 Watchpoint %d deleted because the program has left the block\n\
2089 in which its expression is valid.\n"),
2090                        b->number);
2091       watchpoint_del_at_next_stop (b);
2092     }
2093
2094   /* Restore the selected frame.  */
2095   if (frame_saved)
2096     select_frame (frame_find_by_id (saved_frame_id));
2097 }
2098
2099
2100 /* Returns 1 iff breakpoint location should be
2101    inserted in the inferior.  We don't differentiate the type of BL's owner
2102    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2103    breakpoint_ops is not defined, because in insert_bp_location,
2104    tracepoint's insert_location will not be called.  */
2105 static int
2106 should_be_inserted (struct bp_location *bl)
2107 {
2108   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2109     return 0;
2110
2111   if (bl->owner->disposition == disp_del_at_next_stop)
2112     return 0;
2113
2114   if (!bl->enabled || bl->disabled_by_cond
2115       || bl->shlib_disabled || bl->duplicate)
2116     return 0;
2117
2118   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2119     return 0;
2120
2121   /* This is set for example, when we're attached to the parent of a
2122      vfork, and have detached from the child.  The child is running
2123      free, and we expect it to do an exec or exit, at which point the
2124      OS makes the parent schedulable again (and the target reports
2125      that the vfork is done).  Until the child is done with the shared
2126      memory region, do not insert breakpoints in the parent, otherwise
2127      the child could still trip on the parent's breakpoints.  Since
2128      the parent is blocked anyway, it won't miss any breakpoint.  */
2129   if (bl->pspace->breakpoints_not_allowed)
2130     return 0;
2131
2132   /* Don't insert a breakpoint if we're trying to step past its
2133      location, except if the breakpoint is a single-step breakpoint,
2134      and the breakpoint's thread is the thread which is stepping past
2135      a breakpoint.  */
2136   if ((bl->loc_type == bp_loc_software_breakpoint
2137        || bl->loc_type == bp_loc_hardware_breakpoint)
2138       && stepping_past_instruction_at (bl->pspace->aspace,
2139                                        bl->address)
2140       /* The single-step breakpoint may be inserted at the location
2141          we're trying to step if the instruction branches to itself.
2142          However, the instruction won't be executed at all and it may
2143          break the semantics of the instruction, for example, the
2144          instruction is a conditional branch or updates some flags.
2145          We can't fix it unless GDB is able to emulate the instruction
2146          or switch to displaced stepping.  */
2147       && !(bl->owner->type == bp_single_step
2148            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2149     {
2150       infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
2151                            paddress (bl->gdbarch, bl->address));
2152       return 0;
2153     }
2154
2155   /* Don't insert watchpoints if we're trying to step past the
2156      instruction that triggered one.  */
2157   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2158       && stepping_past_nonsteppable_watchpoint ())
2159     {
2160       infrun_debug_printf ("stepping past non-steppable watchpoint. "
2161                            "skipping watchpoint at %s:%d",
2162                            paddress (bl->gdbarch, bl->address), bl->length);
2163       return 0;
2164     }
2165
2166   return 1;
2167 }
2168
2169 /* Same as should_be_inserted but does the check assuming
2170    that the location is not duplicated.  */
2171
2172 static int
2173 unduplicated_should_be_inserted (struct bp_location *bl)
2174 {
2175   int result;
2176   const int save_duplicate = bl->duplicate;
2177
2178   bl->duplicate = 0;
2179   result = should_be_inserted (bl);
2180   bl->duplicate = save_duplicate;
2181   return result;
2182 }
2183
2184 /* Parses a conditional described by an expression COND into an
2185    agent expression bytecode suitable for evaluation
2186    by the bytecode interpreter.  Return NULL if there was
2187    any error during parsing.  */
2188
2189 static agent_expr_up
2190 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2191 {
2192   if (cond == NULL)
2193     return NULL;
2194
2195   agent_expr_up aexpr;
2196
2197   /* We don't want to stop processing, so catch any errors
2198      that may show up.  */
2199   try
2200     {
2201       aexpr = gen_eval_for_expr (scope, cond);
2202     }
2203
2204   catch (const gdb_exception_error &ex)
2205     {
2206       /* If we got here, it means the condition could not be parsed to a valid
2207          bytecode expression and thus can't be evaluated on the target's side.
2208          It's no use iterating through the conditions.  */
2209     }
2210
2211   /* We have a valid agent expression.  */
2212   return aexpr;
2213 }
2214
2215 /* Based on location BL, create a list of breakpoint conditions to be
2216    passed on to the target.  If we have duplicated locations with different
2217    conditions, we will add such conditions to the list.  The idea is that the
2218    target will evaluate the list of conditions and will only notify GDB when
2219    one of them is true.  */
2220
2221 static void
2222 build_target_condition_list (struct bp_location *bl)
2223 {
2224   int null_condition_or_parse_error = 0;
2225   int modified = bl->needs_update;
2226
2227   /* Release conditions left over from a previous insert.  */
2228   bl->target_info.conditions.clear ();
2229
2230   /* This is only meaningful if the target is
2231      evaluating conditions and if the user has
2232      opted for condition evaluation on the target's
2233      side.  */
2234   if (gdb_evaluates_breakpoint_condition_p ()
2235       || !target_supports_evaluation_of_breakpoint_conditions ())
2236     return;
2237
2238   auto loc_range = all_bp_locations_at_addr (bl->address);
2239
2240   /* Do a first pass to check for locations with no assigned
2241      conditions or conditions that fail to parse to a valid agent
2242      expression bytecode.  If any of these happen, then it's no use to
2243      send conditions to the target since this location will always
2244      trigger and generate a response back to GDB.  Note we consider
2245      all locations at the same address irrespective of type, i.e.,
2246      even if the locations aren't considered duplicates (e.g.,
2247      software breakpoint and hardware breakpoint at the same
2248      address).  */
2249   for (bp_location *loc : loc_range)
2250     {
2251       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2252         {
2253           if (modified)
2254             {
2255               /* Re-parse the conditions since something changed.  In that
2256                  case we already freed the condition bytecodes (see
2257                  force_breakpoint_reinsertion).  We just
2258                  need to parse the condition to bytecodes again.  */
2259               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2260                                                         loc->cond.get ());
2261             }
2262
2263           /* If we have a NULL bytecode expression, it means something
2264              went wrong or we have a null condition expression.  */
2265           if (!loc->cond_bytecode)
2266             {
2267               null_condition_or_parse_error = 1;
2268               break;
2269             }
2270         }
2271     }
2272
2273   /* If any of these happened, it means we will have to evaluate the conditions
2274      for the location's address on gdb's side.  It is no use keeping bytecodes
2275      for all the other duplicate locations, thus we free all of them here.
2276
2277      This is so we have a finer control over which locations' conditions are
2278      being evaluated by GDB or the remote stub.  */
2279   if (null_condition_or_parse_error)
2280     {
2281       for (bp_location *loc : loc_range)
2282         {
2283           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2284             {
2285               /* Only go as far as the first NULL bytecode is
2286                  located.  */
2287               if (!loc->cond_bytecode)
2288                 return;
2289
2290               loc->cond_bytecode.reset ();
2291             }
2292         }
2293     }
2294
2295   /* No NULL conditions or failed bytecode generation.  Build a
2296      condition list for this location's address.  If we have software
2297      and hardware locations at the same address, they aren't
2298      considered duplicates, but we still marge all the conditions
2299      anyway, as it's simpler, and doesn't really make a practical
2300      difference.  */
2301   for (bp_location *loc : loc_range)
2302     if (loc->cond
2303         && is_breakpoint (loc->owner)
2304         && loc->pspace->num == bl->pspace->num
2305         && loc->owner->enable_state == bp_enabled
2306         && loc->enabled
2307         && !loc->disabled_by_cond)
2308       {
2309         /* Add the condition to the vector.  This will be used later
2310            to send the conditions to the target.  */
2311         bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2312       }
2313
2314   return;
2315 }
2316
2317 /* Parses a command described by string CMD into an agent expression
2318    bytecode suitable for evaluation by the bytecode interpreter.
2319    Return NULL if there was any error during parsing.  */
2320
2321 static agent_expr_up
2322 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2323 {
2324   const char *cmdrest;
2325   const char *format_start, *format_end;
2326   struct gdbarch *gdbarch = get_current_arch ();
2327
2328   if (cmd == NULL)
2329     return NULL;
2330
2331   cmdrest = cmd;
2332
2333   if (*cmdrest == ',')
2334     ++cmdrest;
2335   cmdrest = skip_spaces (cmdrest);
2336
2337   if (*cmdrest++ != '"')
2338     error (_("No format string following the location"));
2339
2340   format_start = cmdrest;
2341
2342   format_pieces fpieces (&cmdrest);
2343
2344   format_end = cmdrest;
2345
2346   if (*cmdrest++ != '"')
2347     error (_("Bad format string, non-terminated '\"'."));
2348   
2349   cmdrest = skip_spaces (cmdrest);
2350
2351   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2352     error (_("Invalid argument syntax"));
2353
2354   if (*cmdrest == ',')
2355     cmdrest++;
2356   cmdrest = skip_spaces (cmdrest);
2357
2358   /* For each argument, make an expression.  */
2359
2360   std::vector<struct expression *> argvec;
2361   while (*cmdrest != '\0')
2362     {
2363       const char *cmd1;
2364
2365       cmd1 = cmdrest;
2366       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2367       argvec.push_back (expr.release ());
2368       cmdrest = cmd1;
2369       if (*cmdrest == ',')
2370         ++cmdrest;
2371     }
2372
2373   agent_expr_up aexpr;
2374
2375   /* We don't want to stop processing, so catch any errors
2376      that may show up.  */
2377   try
2378     {
2379       aexpr = gen_printf (scope, gdbarch, 0, 0,
2380                           format_start, format_end - format_start,
2381                           argvec.size (), argvec.data ());
2382     }
2383   catch (const gdb_exception_error &ex)
2384     {
2385       /* If we got here, it means the command could not be parsed to a valid
2386          bytecode expression and thus can't be evaluated on the target's side.
2387          It's no use iterating through the other commands.  */
2388     }
2389
2390   /* We have a valid agent expression, return it.  */
2391   return aexpr;
2392 }
2393
2394 /* Based on location BL, create a list of breakpoint commands to be
2395    passed on to the target.  If we have duplicated locations with
2396    different commands, we will add any such to the list.  */
2397
2398 static void
2399 build_target_command_list (struct bp_location *bl)
2400 {
2401   int null_command_or_parse_error = 0;
2402   int modified = bl->needs_update;
2403
2404   /* Clear commands left over from a previous insert.  */
2405   bl->target_info.tcommands.clear ();
2406
2407   if (!target_can_run_breakpoint_commands ())
2408     return;
2409
2410   /* For now, limit to agent-style dprintf breakpoints.  */
2411   if (dprintf_style != dprintf_style_agent)
2412     return;
2413
2414   auto loc_range = all_bp_locations_at_addr (bl->address);
2415
2416   /* For now, if we have any location at the same address that isn't a
2417      dprintf, don't install the target-side commands, as that would
2418      make the breakpoint not be reported to the core, and we'd lose
2419      control.  */
2420   for (bp_location *loc : loc_range)
2421     if (is_breakpoint (loc->owner)
2422         && loc->pspace->num == bl->pspace->num
2423         && loc->owner->type != bp_dprintf)
2424       return;
2425
2426   /* Do a first pass to check for locations with no assigned
2427      conditions or conditions that fail to parse to a valid agent expression
2428      bytecode.  If any of these happen, then it's no use to send conditions
2429      to the target since this location will always trigger and generate a
2430      response back to GDB.  */
2431   for (bp_location *loc : loc_range)
2432     {
2433       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2434         {
2435           if (modified)
2436             {
2437               /* Re-parse the commands since something changed.  In that
2438                  case we already freed the command bytecodes (see
2439                  force_breakpoint_reinsertion).  We just
2440                  need to parse the command to bytecodes again.  */
2441               loc->cmd_bytecode
2442                 = parse_cmd_to_aexpr (bl->address,
2443                                       loc->owner->extra_string.get ());
2444             }
2445
2446           /* If we have a NULL bytecode expression, it means something
2447              went wrong or we have a null command expression.  */
2448           if (!loc->cmd_bytecode)
2449             {
2450               null_command_or_parse_error = 1;
2451               break;
2452             }
2453         }
2454     }
2455
2456   /* If anything failed, then we're not doing target-side commands,
2457      and so clean up.  */
2458   if (null_command_or_parse_error)
2459     {
2460       for (bp_location *loc : loc_range)
2461         if (is_breakpoint (loc->owner)
2462             && loc->pspace->num == bl->pspace->num)
2463           {
2464             /* Only go as far as the first NULL bytecode is
2465                located.  */
2466             if (loc->cmd_bytecode == NULL)
2467               return;
2468
2469             loc->cmd_bytecode.reset ();
2470           }
2471     }
2472
2473   /* No NULL commands or failed bytecode generation.  Build a command
2474      list for all duplicate locations at this location's address.
2475      Note that here we must care for whether the breakpoint location
2476      types are considered duplicates, otherwise, say, if we have a
2477      software and hardware location at the same address, the target
2478      could end up running the commands twice.  For the moment, we only
2479      support targets-side commands with dprintf, but it doesn't hurt
2480      to be pedantically correct in case that changes.  */
2481   for (bp_location *loc : loc_range)
2482     if (breakpoint_locations_match (bl, loc)
2483         && loc->owner->extra_string
2484         && is_breakpoint (loc->owner)
2485         && loc->pspace->num == bl->pspace->num
2486         && loc->owner->enable_state == bp_enabled
2487         && loc->enabled
2488         && !loc->disabled_by_cond)
2489       {
2490         /* Add the command to the vector.  This will be used later
2491            to send the commands to the target.  */
2492         bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2493       }
2494
2495   bl->target_info.persist = 0;
2496   /* Maybe flag this location as persistent.  */
2497   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2498     bl->target_info.persist = 1;
2499 }
2500
2501 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2502    of breakpoint according to ADDR except single-step breakpoint.
2503    Get the kind of single-step breakpoint according to the current
2504    registers state.  */
2505
2506 static int
2507 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2508 {
2509   if (bl->owner->type == bp_single_step)
2510     {
2511       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2512       struct regcache *regcache;
2513
2514       regcache = get_thread_regcache (thr);
2515
2516       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2517                                                          regcache, addr);
2518     }
2519   else
2520     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2521 }
2522
2523 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2524    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2525    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2526    Returns 0 for success, 1 if the bp_location type is not supported or
2527    -1 for failure.
2528
2529    NOTE drow/2003-09-09: This routine could be broken down to an
2530    object-style method for each breakpoint or catchpoint type.  */
2531 static int
2532 insert_bp_location (struct bp_location *bl,
2533                     struct ui_file *tmp_error_stream,
2534                     int *disabled_breaks,
2535                     int *hw_breakpoint_error,
2536                     int *hw_bp_error_explained_already)
2537 {
2538   gdb_exception bp_excpt;
2539
2540   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2541     return 0;
2542
2543   /* Note we don't initialize bl->target_info, as that wipes out
2544      the breakpoint location's shadow_contents if the breakpoint
2545      is still inserted at that location.  This in turn breaks
2546      target_read_memory which depends on these buffers when
2547      a memory read is requested at the breakpoint location:
2548      Once the target_info has been wiped, we fail to see that
2549      we have a breakpoint inserted at that address and thus
2550      read the breakpoint instead of returning the data saved in
2551      the breakpoint location's shadow contents.  */
2552   bl->target_info.reqstd_address = bl->address;
2553   bl->target_info.placed_address_space = bl->pspace->aspace;
2554   bl->target_info.length = bl->length;
2555
2556   /* When working with target-side conditions, we must pass all the conditions
2557      for the same breakpoint address down to the target since GDB will not
2558      insert those locations.  With a list of breakpoint conditions, the target
2559      can decide when to stop and notify GDB.  */
2560
2561   if (is_breakpoint (bl->owner))
2562     {
2563       build_target_condition_list (bl);
2564       build_target_command_list (bl);
2565       /* Reset the modification marker.  */
2566       bl->needs_update = 0;
2567     }
2568
2569   /* If "set breakpoint auto-hw" is "on" and a software breakpoint was
2570      set at a read-only address, then a breakpoint location will have
2571      been changed to hardware breakpoint before we get here.  If it is
2572      "off" however, error out before actually trying to insert the
2573      breakpoint, with a nicer error message.  */
2574   if (bl->loc_type == bp_loc_software_breakpoint
2575       && !automatic_hardware_breakpoints)
2576     {
2577       mem_region *mr = lookup_mem_region (bl->address);
2578
2579       if (mr != nullptr && mr->attrib.mode != MEM_RW)
2580         {
2581           fprintf_unfiltered (tmp_error_stream,
2582                               _("Cannot insert breakpoint %d.\n"
2583                                 "Cannot set software breakpoint "
2584                                 "at read-only address %s\n"),
2585                               bl->owner->number,
2586                               paddress (bl->gdbarch, bl->address));
2587           return 1;
2588         }
2589     }
2590
2591   if (bl->loc_type == bp_loc_software_breakpoint
2592       || bl->loc_type == bp_loc_hardware_breakpoint)
2593     {
2594       /* First check to see if we have to handle an overlay.  */
2595       if (overlay_debugging == ovly_off
2596           || bl->section == NULL
2597           || !(section_is_overlay (bl->section)))
2598         {
2599           /* No overlay handling: just set the breakpoint.  */
2600           try
2601             {
2602               int val;
2603
2604               val = bl->owner->ops->insert_location (bl);
2605               if (val)
2606                 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2607             }
2608           catch (gdb_exception &e)
2609             {
2610               bp_excpt = std::move (e);
2611             }
2612         }
2613       else
2614         {
2615           /* This breakpoint is in an overlay section.
2616              Shall we set a breakpoint at the LMA?  */
2617           if (!overlay_events_enabled)
2618             {
2619               /* Yes -- overlay event support is not active, 
2620                  so we must try to set a breakpoint at the LMA.
2621                  This will not work for a hardware breakpoint.  */
2622               if (bl->loc_type == bp_loc_hardware_breakpoint)
2623                 warning (_("hardware breakpoint %d not supported in overlay!"),
2624                          bl->owner->number);
2625               else
2626                 {
2627                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2628                                                              bl->section);
2629                   /* Set a software (trap) breakpoint at the LMA.  */
2630                   bl->overlay_target_info = bl->target_info;
2631                   bl->overlay_target_info.reqstd_address = addr;
2632
2633                   /* No overlay handling: just set the breakpoint.  */
2634                   try
2635                     {
2636                       int val;
2637
2638                       bl->overlay_target_info.kind
2639                         = breakpoint_kind (bl, &addr);
2640                       bl->overlay_target_info.placed_address = addr;
2641                       val = target_insert_breakpoint (bl->gdbarch,
2642                                                       &bl->overlay_target_info);
2643                       if (val)
2644                         bp_excpt
2645                           = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2646                     }
2647                   catch (gdb_exception &e)
2648                     {
2649                       bp_excpt = std::move (e);
2650                     }
2651
2652                   if (bp_excpt.reason != 0)
2653                     fprintf_unfiltered (tmp_error_stream,
2654                                         "Overlay breakpoint %d "
2655                                         "failed: in ROM?\n",
2656                                         bl->owner->number);
2657                 }
2658             }
2659           /* Shall we set a breakpoint at the VMA? */
2660           if (section_is_mapped (bl->section))
2661             {
2662               /* Yes.  This overlay section is mapped into memory.  */
2663               try
2664                 {
2665                   int val;
2666
2667                   val = bl->owner->ops->insert_location (bl);
2668                   if (val)
2669                     bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2670                 }
2671               catch (gdb_exception &e)
2672                 {
2673                   bp_excpt = std::move (e);
2674                 }
2675             }
2676           else
2677             {
2678               /* No.  This breakpoint will not be inserted.  
2679                  No error, but do not mark the bp as 'inserted'.  */
2680               return 0;
2681             }
2682         }
2683
2684       if (bp_excpt.reason != 0)
2685         {
2686           /* Can't set the breakpoint.  */
2687
2688           /* If the target has closed then it will have deleted any
2689              breakpoints inserted within the target inferior, as a result
2690              any further attempts to interact with the breakpoint objects
2691              is not possible.  Just rethrow the error.  */
2692           if (bp_excpt.error == TARGET_CLOSE_ERROR)
2693             throw bp_excpt;
2694           gdb_assert (bl->owner != nullptr);
2695
2696           /* In some cases, we might not be able to insert a
2697              breakpoint in a shared library that has already been
2698              removed, but we have not yet processed the shlib unload
2699              event.  Unfortunately, some targets that implement
2700              breakpoint insertion themselves can't tell why the
2701              breakpoint insertion failed (e.g., the remote target
2702              doesn't define error codes), so we must treat generic
2703              errors as memory errors.  */
2704           if (bp_excpt.reason == RETURN_ERROR
2705               && (bp_excpt.error == GENERIC_ERROR
2706                   || bp_excpt.error == MEMORY_ERROR)
2707               && bl->loc_type == bp_loc_software_breakpoint
2708               && (solib_name_from_address (bl->pspace, bl->address)
2709                   || shared_objfile_contains_address_p (bl->pspace,
2710                                                         bl->address)))
2711             {
2712               /* See also: disable_breakpoints_in_shlibs.  */
2713               bl->shlib_disabled = 1;
2714               gdb::observers::breakpoint_modified.notify (bl->owner);
2715               if (!*disabled_breaks)
2716                 {
2717                   fprintf_unfiltered (tmp_error_stream, 
2718                                       "Cannot insert breakpoint %d.\n", 
2719                                       bl->owner->number);
2720                   fprintf_unfiltered (tmp_error_stream, 
2721                                       "Temporarily disabling shared "
2722                                       "library breakpoints:\n");
2723                 }
2724               *disabled_breaks = 1;
2725               fprintf_unfiltered (tmp_error_stream,
2726                                   "breakpoint #%d\n", bl->owner->number);
2727               return 0;
2728             }
2729           else
2730             {
2731               if (bl->loc_type == bp_loc_hardware_breakpoint)
2732                 {
2733                   *hw_breakpoint_error = 1;
2734                   *hw_bp_error_explained_already = bp_excpt.message != NULL;
2735                   fprintf_unfiltered (tmp_error_stream,
2736                                       "Cannot insert hardware breakpoint %d%s",
2737                                       bl->owner->number,
2738                                       bp_excpt.message ? ":" : ".\n");
2739                   if (bp_excpt.message != NULL)
2740                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2741                                         bp_excpt.what ());
2742                 }
2743               else
2744                 {
2745                   if (bp_excpt.message == NULL)
2746                     {
2747                       std::string message
2748                         = memory_error_message (TARGET_XFER_E_IO,
2749                                                 bl->gdbarch, bl->address);
2750
2751                       fprintf_unfiltered (tmp_error_stream,
2752                                           "Cannot insert breakpoint %d.\n"
2753                                           "%s\n",
2754                                           bl->owner->number, message.c_str ());
2755                     }
2756                   else
2757                     {
2758                       fprintf_unfiltered (tmp_error_stream,
2759                                           "Cannot insert breakpoint %d: %s\n",
2760                                           bl->owner->number,
2761                                           bp_excpt.what ());
2762                     }
2763                 }
2764               return 1;
2765
2766             }
2767         }
2768       else
2769         bl->inserted = 1;
2770
2771       return 0;
2772     }
2773
2774   else if (bl->loc_type == bp_loc_hardware_watchpoint
2775            /* NOTE drow/2003-09-08: This state only exists for removing
2776               watchpoints.  It's not clear that it's necessary...  */
2777            && bl->owner->disposition != disp_del_at_next_stop)
2778     {
2779       int val;
2780
2781       gdb_assert (bl->owner->ops != NULL
2782                   && bl->owner->ops->insert_location != NULL);
2783
2784       val = bl->owner->ops->insert_location (bl);
2785
2786       /* If trying to set a read-watchpoint, and it turns out it's not
2787          supported, try emulating one with an access watchpoint.  */
2788       if (val == 1 && bl->watchpoint_type == hw_read)
2789         {
2790           /* But don't try to insert it, if there's already another
2791              hw_access location that would be considered a duplicate
2792              of this one.  */
2793           for (bp_location *loc : all_bp_locations ())
2794             if (loc != bl
2795                 && loc->watchpoint_type == hw_access
2796                 && watchpoint_locations_match (bl, loc))
2797               {
2798                 bl->duplicate = 1;
2799                 bl->inserted = 1;
2800                 bl->target_info = loc->target_info;
2801                 bl->watchpoint_type = hw_access;
2802                 val = 0;
2803                 break;
2804               }
2805
2806           if (val == 1)
2807             {
2808               bl->watchpoint_type = hw_access;
2809               val = bl->owner->ops->insert_location (bl);
2810
2811               if (val)
2812                 /* Back to the original value.  */
2813                 bl->watchpoint_type = hw_read;
2814             }
2815         }
2816
2817       bl->inserted = (val == 0);
2818     }
2819
2820   else if (bl->owner->type == bp_catchpoint)
2821     {
2822       int val;
2823
2824       gdb_assert (bl->owner->ops != NULL
2825                   && bl->owner->ops->insert_location != NULL);
2826
2827       val = bl->owner->ops->insert_location (bl);
2828       if (val)
2829         {
2830           bl->owner->enable_state = bp_disabled;
2831
2832           if (val == 1)
2833             warning (_("\
2834 Error inserting catchpoint %d: Your system does not support this type\n\
2835 of catchpoint."), bl->owner->number);
2836           else
2837             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2838         }
2839
2840       bl->inserted = (val == 0);
2841
2842       /* We've already printed an error message if there was a problem
2843          inserting this catchpoint, and we've disabled the catchpoint,
2844          so just return success.  */
2845       return 0;
2846     }
2847
2848   return 0;
2849 }
2850
2851 /* This function is called when program space PSPACE is about to be
2852    deleted.  It takes care of updating breakpoints to not reference
2853    PSPACE anymore.  */
2854
2855 void
2856 breakpoint_program_space_exit (struct program_space *pspace)
2857 {
2858   /* Remove any breakpoint that was set through this program space.  */
2859   for (breakpoint *b : all_breakpoints_safe ())
2860     if (b->pspace == pspace)
2861       delete_breakpoint (b);
2862
2863   /* Breakpoints set through other program spaces could have locations
2864      bound to PSPACE as well.  Remove those.  */
2865   for (bp_location *loc : all_bp_locations ())
2866     {
2867       struct bp_location *tmp;
2868
2869       if (loc->pspace == pspace)
2870         {
2871           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2872           if (loc->owner->loc == loc)
2873             loc->owner->loc = loc->next;
2874           else
2875             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2876               if (tmp->next == loc)
2877                 {
2878                   tmp->next = loc->next;
2879                   break;
2880                 }
2881         }
2882     }
2883
2884   /* Now update the global location list to permanently delete the
2885      removed locations above.  */
2886   update_global_location_list (UGLL_DONT_INSERT);
2887 }
2888
2889 /* Make sure all breakpoints are inserted in inferior.
2890    Throws exception on any error.
2891    A breakpoint that is already inserted won't be inserted
2892    again, so calling this function twice is safe.  */
2893 void
2894 insert_breakpoints (void)
2895 {
2896   for (breakpoint *bpt : all_breakpoints ())
2897     if (is_hardware_watchpoint (bpt))
2898       {
2899         struct watchpoint *w = (struct watchpoint *) bpt;
2900
2901         update_watchpoint (w, 0 /* don't reparse.  */);
2902       }
2903
2904   /* Updating watchpoints creates new locations, so update the global
2905      location list.  Explicitly tell ugll to insert locations and
2906      ignore breakpoints_always_inserted_mode.  Also,
2907      update_global_location_list tries to "upgrade" software
2908      breakpoints to hardware breakpoints to handle "set breakpoint
2909      auto-hw", so we need to call it even if we don't have new
2910      locations.  */
2911   update_global_location_list (UGLL_INSERT);
2912 }
2913
2914 /* This is used when we need to synch breakpoint conditions between GDB and the
2915    target.  It is the case with deleting and disabling of breakpoints when using
2916    always-inserted mode.  */
2917
2918 static void
2919 update_inserted_breakpoint_locations (void)
2920 {
2921   int error_flag = 0;
2922   int val = 0;
2923   int disabled_breaks = 0;
2924   int hw_breakpoint_error = 0;
2925   int hw_bp_details_reported = 0;
2926
2927   string_file tmp_error_stream;
2928
2929   /* Explicitly mark the warning -- this will only be printed if
2930      there was an error.  */
2931   tmp_error_stream.puts ("Warning:\n");
2932
2933   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2934
2935   for (bp_location *bl : all_bp_locations ())
2936     {
2937       /* We only want to update software breakpoints and hardware
2938          breakpoints.  */
2939       if (!is_breakpoint (bl->owner))
2940         continue;
2941
2942       /* We only want to update locations that are already inserted
2943          and need updating.  This is to avoid unwanted insertion during
2944          deletion of breakpoints.  */
2945       if (!bl->inserted || !bl->needs_update)
2946         continue;
2947
2948       switch_to_program_space_and_thread (bl->pspace);
2949
2950       /* For targets that support global breakpoints, there's no need
2951          to select an inferior to insert breakpoint to.  In fact, even
2952          if we aren't attached to any process yet, we should still
2953          insert breakpoints.  */
2954       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2955           && (inferior_ptid == null_ptid || !target_has_execution ()))
2956         continue;
2957
2958       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2959                                     &hw_breakpoint_error, &hw_bp_details_reported);
2960       if (val)
2961         error_flag = val;
2962     }
2963
2964   if (error_flag)
2965     {
2966       target_terminal::ours_for_output ();
2967       error_stream (tmp_error_stream);
2968     }
2969 }
2970
2971 /* Used when starting or continuing the program.  */
2972
2973 static void
2974 insert_breakpoint_locations (void)
2975 {
2976   int error_flag = 0;
2977   int val = 0;
2978   int disabled_breaks = 0;
2979   int hw_breakpoint_error = 0;
2980   int hw_bp_error_explained_already = 0;
2981
2982   string_file tmp_error_stream;
2983
2984   /* Explicitly mark the warning -- this will only be printed if
2985      there was an error.  */
2986   tmp_error_stream.puts ("Warning:\n");
2987
2988   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2989
2990   for (bp_location *bl : all_bp_locations ())
2991     {
2992       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2993         continue;
2994
2995       /* There is no point inserting thread-specific breakpoints if
2996          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2997          has BL->OWNER always non-NULL.  */
2998       if (bl->owner->thread != -1
2999           && !valid_global_thread_id (bl->owner->thread))
3000         continue;
3001
3002       switch_to_program_space_and_thread (bl->pspace);
3003
3004       /* For targets that support global breakpoints, there's no need
3005          to select an inferior to insert breakpoint to.  In fact, even
3006          if we aren't attached to any process yet, we should still
3007          insert breakpoints.  */
3008       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3009           && (inferior_ptid == null_ptid || !target_has_execution ()))
3010         continue;
3011
3012       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
3013                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3014       if (val)
3015         error_flag = val;
3016     }
3017
3018   /* If we failed to insert all locations of a watchpoint, remove
3019      them, as half-inserted watchpoint is of limited use.  */
3020   for (breakpoint *bpt : all_breakpoints ())
3021     {
3022       int some_failed = 0;
3023
3024       if (!is_hardware_watchpoint (bpt))
3025         continue;
3026
3027       if (!breakpoint_enabled (bpt))
3028         continue;
3029
3030       if (bpt->disposition == disp_del_at_next_stop)
3031         continue;
3032       
3033       for (bp_location *loc : bpt->locations ())
3034         if (!loc->inserted && should_be_inserted (loc))
3035           {
3036             some_failed = 1;
3037             break;
3038           }
3039
3040       if (some_failed)
3041         {
3042           for (bp_location *loc : bpt->locations ())
3043             if (loc->inserted)
3044               remove_breakpoint (loc);
3045
3046           hw_breakpoint_error = 1;
3047           tmp_error_stream.printf ("Could not insert "
3048                                    "hardware watchpoint %d.\n",
3049                                    bpt->number);
3050           error_flag = -1;
3051         }
3052     }
3053
3054   if (error_flag)
3055     {
3056       /* If a hardware breakpoint or watchpoint was inserted, add a
3057          message about possibly exhausted resources.  */
3058       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3059         {
3060           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3061 You may have requested too many hardware breakpoints/watchpoints.\n");
3062         }
3063       target_terminal::ours_for_output ();
3064       error_stream (tmp_error_stream);
3065     }
3066 }
3067
3068 /* Used when the program stops.
3069    Returns zero if successful, or non-zero if there was a problem
3070    removing a breakpoint location.  */
3071
3072 int
3073 remove_breakpoints (void)
3074 {
3075   int val = 0;
3076
3077   for (bp_location *bl : all_bp_locations ())
3078     if (bl->inserted && !is_tracepoint (bl->owner))
3079       val |= remove_breakpoint (bl);
3080
3081   return val;
3082 }
3083
3084 /* When a thread exits, remove breakpoints that are related to
3085    that thread.  */
3086
3087 static void
3088 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3089 {
3090   for (breakpoint *b : all_breakpoints_safe ())
3091     {
3092       if (b->thread == tp->global_num && user_breakpoint_p (b))
3093         {
3094           b->disposition = disp_del_at_next_stop;
3095
3096           printf_filtered (_("\
3097 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3098                            b->number, print_thread_id (tp));
3099
3100           /* Hide it from the user.  */
3101           b->number = 0;
3102        }
3103     }
3104 }
3105
3106 /* See breakpoint.h.  */
3107
3108 void
3109 remove_breakpoints_inf (inferior *inf)
3110 {
3111   int val;
3112
3113   for (bp_location *bl : all_bp_locations ())
3114     {
3115       if (bl->pspace != inf->pspace)
3116         continue;
3117
3118       if (bl->inserted && !bl->target_info.persist)
3119         {
3120           val = remove_breakpoint (bl);
3121           if (val != 0)
3122             return;
3123         }
3124     }
3125 }
3126
3127 static int internal_breakpoint_number = -1;
3128
3129 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3130    If INTERNAL is non-zero, the breakpoint number will be populated
3131    from internal_breakpoint_number and that variable decremented.
3132    Otherwise the breakpoint number will be populated from
3133    breakpoint_count and that value incremented.  Internal breakpoints
3134    do not set the internal var bpnum.  */
3135 static void
3136 set_breakpoint_number (int internal, struct breakpoint *b)
3137 {
3138   if (internal)
3139     b->number = internal_breakpoint_number--;
3140   else
3141     {
3142       set_breakpoint_count (breakpoint_count + 1);
3143       b->number = breakpoint_count;
3144     }
3145 }
3146
3147 static struct breakpoint *
3148 create_internal_breakpoint (struct gdbarch *gdbarch,
3149                             CORE_ADDR address, enum bptype type,
3150                             const struct breakpoint_ops *ops)
3151 {
3152   symtab_and_line sal;
3153   sal.pc = address;
3154   sal.section = find_pc_overlay (sal.pc);
3155   sal.pspace = current_program_space;
3156
3157   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3158   b->number = internal_breakpoint_number--;
3159   b->disposition = disp_donttouch;
3160
3161   return b;
3162 }
3163
3164 static const char *const longjmp_names[] =
3165   {
3166     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3167   };
3168 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3169
3170 /* Per-objfile data private to breakpoint.c.  */
3171 struct breakpoint_objfile_data
3172 {
3173   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3174   struct bound_minimal_symbol overlay_msym {};
3175
3176   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3177   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3178
3179   /* True if we have looked for longjmp probes.  */
3180   int longjmp_searched = 0;
3181
3182   /* SystemTap probe points for longjmp (if any).  These are non-owning
3183      references.  */
3184   std::vector<probe *> longjmp_probes;
3185
3186   /* Minimal symbol for "std::terminate()" (if any).  */
3187   struct bound_minimal_symbol terminate_msym {};
3188
3189   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3190   struct bound_minimal_symbol exception_msym {};
3191
3192   /* True if we have looked for exception probes.  */
3193   int exception_searched = 0;
3194
3195   /* SystemTap probe points for unwinding (if any).  These are non-owning
3196      references.  */
3197   std::vector<probe *> exception_probes;
3198 };
3199
3200 static const struct objfile_key<breakpoint_objfile_data>
3201   breakpoint_objfile_key;
3202
3203 /* Minimal symbol not found sentinel.  */
3204 static struct minimal_symbol msym_not_found;
3205
3206 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3207
3208 static int
3209 msym_not_found_p (const struct minimal_symbol *msym)
3210 {
3211   return msym == &msym_not_found;
3212 }
3213
3214 /* Return per-objfile data needed by breakpoint.c.
3215    Allocate the data if necessary.  */
3216
3217 static struct breakpoint_objfile_data *
3218 get_breakpoint_objfile_data (struct objfile *objfile)
3219 {
3220   struct breakpoint_objfile_data *bp_objfile_data;
3221
3222   bp_objfile_data = breakpoint_objfile_key.get (objfile);
3223   if (bp_objfile_data == NULL)
3224     bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3225   return bp_objfile_data;
3226 }
3227
3228 static void
3229 create_overlay_event_breakpoint (void)
3230 {
3231   const char *const func_name = "_ovly_debug_event";
3232
3233   for (objfile *objfile : current_program_space->objfiles ())
3234     {
3235       struct breakpoint *b;
3236       struct breakpoint_objfile_data *bp_objfile_data;
3237       CORE_ADDR addr;
3238       struct explicit_location explicit_loc;
3239
3240       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3241
3242       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3243         continue;
3244
3245       if (bp_objfile_data->overlay_msym.minsym == NULL)
3246         {
3247           struct bound_minimal_symbol m;
3248
3249           m = lookup_minimal_symbol_text (func_name, objfile);
3250           if (m.minsym == NULL)
3251             {
3252               /* Avoid future lookups in this objfile.  */
3253               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3254               continue;
3255             }
3256           bp_objfile_data->overlay_msym = m;
3257         }
3258
3259       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3260       b = create_internal_breakpoint (objfile->arch (), addr,
3261                                       bp_overlay_event,
3262                                       &internal_breakpoint_ops);
3263       initialize_explicit_location (&explicit_loc);
3264       explicit_loc.function_name = ASTRDUP (func_name);
3265       b->location = new_explicit_location (&explicit_loc);
3266
3267       if (overlay_debugging == ovly_auto)
3268         {
3269           b->enable_state = bp_enabled;
3270           overlay_events_enabled = 1;
3271         }
3272       else
3273        {
3274          b->enable_state = bp_disabled;
3275          overlay_events_enabled = 0;
3276        }
3277     }
3278 }
3279
3280 /* Install a master longjmp breakpoint for OBJFILE using a probe.  Return
3281    true if a breakpoint was installed.  */
3282
3283 static bool
3284 create_longjmp_master_breakpoint_probe (objfile *objfile)
3285 {
3286   struct gdbarch *gdbarch = objfile->arch ();
3287   struct breakpoint_objfile_data *bp_objfile_data
3288     = get_breakpoint_objfile_data (objfile);
3289
3290   if (!bp_objfile_data->longjmp_searched)
3291     {
3292       std::vector<probe *> ret
3293         = find_probes_in_objfile (objfile, "libc", "longjmp");
3294
3295       if (!ret.empty ())
3296         {
3297           /* We are only interested in checking one element.  */
3298           probe *p = ret[0];
3299
3300           if (!p->can_evaluate_arguments ())
3301             {
3302               /* We cannot use the probe interface here,
3303                  because it does not know how to evaluate
3304                  arguments.  */
3305               ret.clear ();
3306             }
3307         }
3308       bp_objfile_data->longjmp_probes = ret;
3309       bp_objfile_data->longjmp_searched = 1;
3310     }
3311
3312   if (bp_objfile_data->longjmp_probes.empty ())
3313     return false;
3314
3315   for (probe *p : bp_objfile_data->longjmp_probes)
3316     {
3317       struct breakpoint *b;
3318
3319       b = create_internal_breakpoint (gdbarch,
3320                                       p->get_relocated_address (objfile),
3321                                       bp_longjmp_master,
3322                                       &internal_breakpoint_ops);
3323       b->location = new_probe_location ("-probe-stap libc:longjmp");
3324       b->enable_state = bp_disabled;
3325     }
3326
3327   return true;
3328 }
3329
3330 /* Install master longjmp breakpoints for OBJFILE using longjmp_names.
3331    Return true if at least one breakpoint was installed.  */
3332
3333 static bool
3334 create_longjmp_master_breakpoint_names (objfile *objfile)
3335 {
3336   struct gdbarch *gdbarch = objfile->arch ();
3337   if (!gdbarch_get_longjmp_target_p (gdbarch))
3338     return false;
3339
3340   struct breakpoint_objfile_data *bp_objfile_data
3341     = get_breakpoint_objfile_data (objfile);
3342   unsigned int installed_bp = 0;
3343
3344   for (int i = 0; i < NUM_LONGJMP_NAMES; i++)
3345     {
3346       struct breakpoint *b;
3347       const char *func_name;
3348       CORE_ADDR addr;
3349       struct explicit_location explicit_loc;
3350
3351       if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3352         continue;
3353
3354       func_name = longjmp_names[i];
3355       if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3356         {
3357           struct bound_minimal_symbol m;
3358
3359           m = lookup_minimal_symbol_text (func_name, objfile);
3360           if (m.minsym == NULL)
3361             {
3362               /* Prevent future lookups in this objfile.  */
3363               bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3364               continue;
3365             }
3366           bp_objfile_data->longjmp_msym[i] = m;
3367         }
3368
3369       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3370       b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3371                                       &internal_breakpoint_ops);
3372       initialize_explicit_location (&explicit_loc);
3373       explicit_loc.function_name = ASTRDUP (func_name);
3374       b->location = new_explicit_location (&explicit_loc);
3375       b->enable_state = bp_disabled;
3376       installed_bp++;
3377     }
3378
3379   return installed_bp > 0;
3380 }
3381
3382 /* Create a master longjmp breakpoint.  */
3383
3384 static void
3385 create_longjmp_master_breakpoint (void)
3386 {
3387   scoped_restore_current_program_space restore_pspace;
3388
3389   for (struct program_space *pspace : program_spaces)
3390     {
3391       set_current_program_space (pspace);
3392
3393       for (objfile *obj : current_program_space->objfiles ())
3394         {
3395           /* Skip separate debug object, it's handled in the loop below.  */
3396           if (obj->separate_debug_objfile_backlink != nullptr)
3397             continue;
3398
3399           /* Try a probe kind breakpoint on main objfile.  */
3400           if (create_longjmp_master_breakpoint_probe (obj))
3401             continue;
3402
3403           /* Try longjmp_names kind breakpoints on main and separate_debug
3404              objfiles.  */
3405           for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3406             if (create_longjmp_master_breakpoint_names (debug_objfile))
3407               break;
3408         }
3409     }
3410 }
3411
3412 /* Create a master std::terminate breakpoint.  */
3413 static void
3414 create_std_terminate_master_breakpoint (void)
3415 {
3416   const char *const func_name = "std::terminate()";
3417
3418   scoped_restore_current_program_space restore_pspace;
3419
3420   for (struct program_space *pspace : program_spaces)
3421     {
3422       CORE_ADDR addr;
3423
3424       set_current_program_space (pspace);
3425
3426       for (objfile *objfile : current_program_space->objfiles ())
3427         {
3428           struct breakpoint *b;
3429           struct breakpoint_objfile_data *bp_objfile_data;
3430           struct explicit_location explicit_loc;
3431
3432           bp_objfile_data = get_breakpoint_objfile_data (objfile);
3433
3434           if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3435             continue;
3436
3437           if (bp_objfile_data->terminate_msym.minsym == NULL)
3438             {
3439               struct bound_minimal_symbol m;
3440
3441               m = lookup_minimal_symbol (func_name, NULL, objfile);
3442               if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3443                                        && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3444                 {
3445                   /* Prevent future lookups in this objfile.  */
3446                   bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3447                   continue;
3448                 }
3449               bp_objfile_data->terminate_msym = m;
3450             }
3451
3452           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3453           b = create_internal_breakpoint (objfile->arch (), addr,
3454                                           bp_std_terminate_master,
3455                                           &internal_breakpoint_ops);
3456           initialize_explicit_location (&explicit_loc);
3457           explicit_loc.function_name = ASTRDUP (func_name);
3458           b->location = new_explicit_location (&explicit_loc);
3459           b->enable_state = bp_disabled;
3460         }
3461     }
3462 }
3463
3464 /* Install a master breakpoint on the unwinder's debug hook for OBJFILE using a
3465    probe.  Return true if a breakpoint was installed.  */
3466
3467 static bool
3468 create_exception_master_breakpoint_probe (objfile *objfile)
3469 {
3470   struct breakpoint *b;
3471   struct gdbarch *gdbarch;
3472   struct breakpoint_objfile_data *bp_objfile_data;
3473
3474   bp_objfile_data = get_breakpoint_objfile_data (objfile);
3475
3476   /* We prefer the SystemTap probe point if it exists.  */
3477   if (!bp_objfile_data->exception_searched)
3478     {
3479       std::vector<probe *> ret
3480         = find_probes_in_objfile (objfile, "libgcc", "unwind");
3481
3482       if (!ret.empty ())
3483         {
3484           /* We are only interested in checking one element.  */
3485           probe *p = ret[0];
3486
3487           if (!p->can_evaluate_arguments ())
3488             {
3489               /* We cannot use the probe interface here, because it does
3490                  not know how to evaluate arguments.  */
3491               ret.clear ();
3492             }
3493         }
3494       bp_objfile_data->exception_probes = ret;
3495       bp_objfile_data->exception_searched = 1;
3496     }
3497
3498   if (bp_objfile_data->exception_probes.empty ())
3499     return false;
3500
3501   gdbarch = objfile->arch ();
3502
3503   for (probe *p : bp_objfile_data->exception_probes)
3504     {
3505       b = create_internal_breakpoint (gdbarch,
3506                                       p->get_relocated_address (objfile),
3507                                       bp_exception_master,
3508                                       &internal_breakpoint_ops);
3509       b->location = new_probe_location ("-probe-stap libgcc:unwind");
3510       b->enable_state = bp_disabled;
3511     }
3512
3513   return true;
3514 }
3515
3516 /* Install a master breakpoint on the unwinder's debug hook for OBJFILE using
3517    _Unwind_DebugHook.  Return true if a breakpoint was installed.  */
3518
3519 static bool
3520 create_exception_master_breakpoint_hook (objfile *objfile)
3521 {
3522   const char *const func_name = "_Unwind_DebugHook";
3523   struct breakpoint *b;
3524   struct gdbarch *gdbarch;
3525   struct breakpoint_objfile_data *bp_objfile_data;
3526   CORE_ADDR addr;
3527   struct explicit_location explicit_loc;
3528
3529   bp_objfile_data = get_breakpoint_objfile_data (objfile);
3530
3531   if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3532     return false;
3533
3534   gdbarch = objfile->arch ();
3535
3536   if (bp_objfile_data->exception_msym.minsym == NULL)
3537     {
3538       struct bound_minimal_symbol debug_hook;
3539
3540       debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3541       if (debug_hook.minsym == NULL)
3542         {
3543           bp_objfile_data->exception_msym.minsym = &msym_not_found;
3544           return false;
3545         }
3546
3547       bp_objfile_data->exception_msym = debug_hook;
3548     }
3549
3550   addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3551   addr = gdbarch_convert_from_func_ptr_addr
3552     (gdbarch, addr, current_inferior ()->top_target ());
3553   b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3554                                   &internal_breakpoint_ops);
3555   initialize_explicit_location (&explicit_loc);
3556   explicit_loc.function_name = ASTRDUP (func_name);
3557   b->location = new_explicit_location (&explicit_loc);
3558   b->enable_state = bp_disabled;
3559
3560   return true;
3561 }
3562
3563 /* Install a master breakpoint on the unwinder's debug hook.  */
3564
3565 static void
3566 create_exception_master_breakpoint (void)
3567 {
3568   for (objfile *obj : current_program_space->objfiles ())
3569     {
3570       /* Skip separate debug object.  */
3571       if (obj->separate_debug_objfile_backlink)
3572         continue;
3573
3574       /* Try a probe kind breakpoint.  */
3575       if (create_exception_master_breakpoint_probe (obj))
3576         continue;
3577
3578       /* Iterate over main and separate debug objects and try an
3579          _Unwind_DebugHook kind breakpoint.  */
3580       for (objfile *debug_objfile : obj->separate_debug_objfiles ())
3581         if (create_exception_master_breakpoint_hook (debug_objfile))
3582           break;
3583     }
3584 }
3585
3586 /* Does B have a location spec?  */
3587
3588 static int
3589 breakpoint_event_location_empty_p (const struct breakpoint *b)
3590 {
3591   return b->location != NULL && event_location_empty_p (b->location.get ());
3592 }
3593
3594 void
3595 update_breakpoints_after_exec (void)
3596 {
3597   /* We're about to delete breakpoints from GDB's lists.  If the
3598      INSERTED flag is true, GDB will try to lift the breakpoints by
3599      writing the breakpoints' "shadow contents" back into memory.  The
3600      "shadow contents" are NOT valid after an exec, so GDB should not
3601      do that.  Instead, the target is responsible from marking
3602      breakpoints out as soon as it detects an exec.  We don't do that
3603      here instead, because there may be other attempts to delete
3604      breakpoints after detecting an exec and before reaching here.  */
3605   for (bp_location *bploc : all_bp_locations ())
3606     if (bploc->pspace == current_program_space)
3607       gdb_assert (!bploc->inserted);
3608
3609   for (breakpoint *b : all_breakpoints_safe ())
3610     {
3611       if (b->pspace != current_program_space)
3612         continue;
3613
3614       /* Solib breakpoints must be explicitly reset after an exec().  */
3615       if (b->type == bp_shlib_event)
3616         {
3617           delete_breakpoint (b);
3618           continue;
3619         }
3620
3621       /* JIT breakpoints must be explicitly reset after an exec().  */
3622       if (b->type == bp_jit_event)
3623         {
3624           delete_breakpoint (b);
3625           continue;
3626         }
3627
3628       /* Thread event breakpoints must be set anew after an exec(),
3629          as must overlay event and longjmp master breakpoints.  */
3630       if (b->type == bp_thread_event || b->type == bp_overlay_event
3631           || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3632           || b->type == bp_exception_master)
3633         {
3634           delete_breakpoint (b);
3635           continue;
3636         }
3637
3638       /* Step-resume breakpoints are meaningless after an exec().  */
3639       if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3640         {
3641           delete_breakpoint (b);
3642           continue;
3643         }
3644
3645       /* Just like single-step breakpoints.  */
3646       if (b->type == bp_single_step)
3647         {
3648           delete_breakpoint (b);
3649           continue;
3650         }
3651
3652       /* Longjmp and longjmp-resume breakpoints are also meaningless
3653          after an exec.  */
3654       if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3655           || b->type == bp_longjmp_call_dummy
3656           || b->type == bp_exception || b->type == bp_exception_resume)
3657         {
3658           delete_breakpoint (b);
3659           continue;
3660         }
3661
3662       if (b->type == bp_catchpoint)
3663         {
3664           /* For now, none of the bp_catchpoint breakpoints need to
3665              do anything at this point.  In the future, if some of
3666              the catchpoints need to something, we will need to add
3667              a new method, and call this method from here.  */
3668           continue;
3669         }
3670
3671       /* bp_finish is a special case.  The only way we ought to be able
3672          to see one of these when an exec() has happened, is if the user
3673          caught a vfork, and then said "finish".  Ordinarily a finish just
3674          carries them to the call-site of the current callee, by setting
3675          a temporary bp there and resuming.  But in this case, the finish
3676          will carry them entirely through the vfork & exec.
3677
3678          We don't want to allow a bp_finish to remain inserted now.  But
3679          we can't safely delete it, 'cause finish_command has a handle to
3680          the bp on a bpstat, and will later want to delete it.  There's a
3681          chance (and I've seen it happen) that if we delete the bp_finish
3682          here, that its storage will get reused by the time finish_command
3683          gets 'round to deleting the "use to be a bp_finish" breakpoint.
3684          We really must allow finish_command to delete a bp_finish.
3685
3686          In the absence of a general solution for the "how do we know
3687          it's safe to delete something others may have handles to?"
3688          problem, what we'll do here is just uninsert the bp_finish, and
3689          let finish_command delete it.
3690
3691          (We know the bp_finish is "doomed" in the sense that it's
3692          momentary, and will be deleted as soon as finish_command sees
3693          the inferior stopped.  So it doesn't matter that the bp's
3694          address is probably bogus in the new a.out, unlike e.g., the
3695          solib breakpoints.)  */
3696
3697       if (b->type == bp_finish)
3698         {
3699           continue;
3700         }
3701
3702       /* Without a symbolic address, we have little hope of the
3703          pre-exec() address meaning the same thing in the post-exec()
3704          a.out.  */
3705       if (breakpoint_event_location_empty_p (b))
3706         {
3707           delete_breakpoint (b);
3708           continue;
3709         }
3710     }
3711 }
3712
3713 int
3714 detach_breakpoints (ptid_t ptid)
3715 {
3716   int val = 0;
3717   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3718   struct inferior *inf = current_inferior ();
3719
3720   if (ptid.pid () == inferior_ptid.pid ())
3721     error (_("Cannot detach breakpoints of inferior_ptid"));
3722
3723   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3724   inferior_ptid = ptid;
3725   for (bp_location *bl : all_bp_locations ())
3726     {
3727       if (bl->pspace != inf->pspace)
3728         continue;
3729
3730       /* This function must physically remove breakpoints locations
3731          from the specified ptid, without modifying the breakpoint
3732          package's state.  Locations of type bp_loc_other are only
3733          maintained at GDB side.  So, there is no need to remove
3734          these bp_loc_other locations.  Moreover, removing these
3735          would modify the breakpoint package's state.  */
3736       if (bl->loc_type == bp_loc_other)
3737         continue;
3738
3739       if (bl->inserted)
3740         val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3741     }
3742
3743   return val;
3744 }
3745
3746 /* Remove the breakpoint location BL from the current address space.
3747    Note that this is used to detach breakpoints from a child fork.
3748    When we get here, the child isn't in the inferior list, and neither
3749    do we have objects to represent its address space --- we should
3750    *not* look at bl->pspace->aspace here.  */
3751
3752 static int
3753 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3754 {
3755   int val;
3756
3757   /* BL is never in moribund_locations by our callers.  */
3758   gdb_assert (bl->owner != NULL);
3759
3760   /* The type of none suggests that owner is actually deleted.
3761      This should not ever happen.  */
3762   gdb_assert (bl->owner->type != bp_none);
3763
3764   if (bl->loc_type == bp_loc_software_breakpoint
3765       || bl->loc_type == bp_loc_hardware_breakpoint)
3766     {
3767       /* "Normal" instruction breakpoint: either the standard
3768          trap-instruction bp (bp_breakpoint), or a
3769          bp_hardware_breakpoint.  */
3770
3771       /* First check to see if we have to handle an overlay.  */
3772       if (overlay_debugging == ovly_off
3773           || bl->section == NULL
3774           || !(section_is_overlay (bl->section)))
3775         {
3776           /* No overlay handling: just remove the breakpoint.  */
3777
3778           /* If we're trying to uninsert a memory breakpoint that we
3779              know is set in a dynamic object that is marked
3780              shlib_disabled, then either the dynamic object was
3781              removed with "remove-symbol-file" or with
3782              "nosharedlibrary".  In the former case, we don't know
3783              whether another dynamic object might have loaded over the
3784              breakpoint's address -- the user might well let us know
3785              about it next with add-symbol-file (the whole point of
3786              add-symbol-file is letting the user manually maintain a
3787              list of dynamically loaded objects).  If we have the
3788              breakpoint's shadow memory, that is, this is a software
3789              breakpoint managed by GDB, check whether the breakpoint
3790              is still inserted in memory, to avoid overwriting wrong
3791              code with stale saved shadow contents.  Note that HW
3792              breakpoints don't have shadow memory, as they're
3793              implemented using a mechanism that is not dependent on
3794              being able to modify the target's memory, and as such
3795              they should always be removed.  */
3796           if (bl->shlib_disabled
3797               && bl->target_info.shadow_len != 0
3798               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3799             val = 0;
3800           else
3801             val = bl->owner->ops->remove_location (bl, reason);
3802         }
3803       else
3804         {
3805           /* This breakpoint is in an overlay section.
3806              Did we set a breakpoint at the LMA?  */
3807           if (!overlay_events_enabled)
3808               {
3809                 /* Yes -- overlay event support is not active, so we
3810                    should have set a breakpoint at the LMA.  Remove it.  
3811                 */
3812                 /* Ignore any failures: if the LMA is in ROM, we will
3813                    have already warned when we failed to insert it.  */
3814                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3815                   target_remove_hw_breakpoint (bl->gdbarch,
3816                                                &bl->overlay_target_info);
3817                 else
3818                   target_remove_breakpoint (bl->gdbarch,
3819                                             &bl->overlay_target_info,
3820                                             reason);
3821               }
3822           /* Did we set a breakpoint at the VMA? 
3823              If so, we will have marked the breakpoint 'inserted'.  */
3824           if (bl->inserted)
3825             {
3826               /* Yes -- remove it.  Previously we did not bother to
3827                  remove the breakpoint if the section had been
3828                  unmapped, but let's not rely on that being safe.  We
3829                  don't know what the overlay manager might do.  */
3830
3831               /* However, we should remove *software* breakpoints only
3832                  if the section is still mapped, or else we overwrite
3833                  wrong code with the saved shadow contents.  */
3834               if (bl->loc_type == bp_loc_hardware_breakpoint
3835                   || section_is_mapped (bl->section))
3836                 val = bl->owner->ops->remove_location (bl, reason);
3837               else
3838                 val = 0;
3839             }
3840           else
3841             {
3842               /* No -- not inserted, so no need to remove.  No error.  */
3843               val = 0;
3844             }
3845         }
3846
3847       /* In some cases, we might not be able to remove a breakpoint in
3848          a shared library that has already been removed, but we have
3849          not yet processed the shlib unload event.  Similarly for an
3850          unloaded add-symbol-file object - the user might not yet have
3851          had the chance to remove-symbol-file it.  shlib_disabled will
3852          be set if the library/object has already been removed, but
3853          the breakpoint hasn't been uninserted yet, e.g., after
3854          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3855          always-inserted mode.  */
3856       if (val
3857           && (bl->loc_type == bp_loc_software_breakpoint
3858               && (bl->shlib_disabled
3859                   || solib_name_from_address (bl->pspace, bl->address)
3860                   || shared_objfile_contains_address_p (bl->pspace,
3861                                                         bl->address))))
3862         val = 0;
3863
3864       if (val)
3865         return val;
3866       bl->inserted = (reason == DETACH_BREAKPOINT);
3867     }
3868   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3869     {
3870       gdb_assert (bl->owner->ops != NULL
3871                   && bl->owner->ops->remove_location != NULL);
3872
3873       bl->inserted = (reason == DETACH_BREAKPOINT);
3874       bl->owner->ops->remove_location (bl, reason);
3875
3876       /* Failure to remove any of the hardware watchpoints comes here.  */
3877       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3878         warning (_("Could not remove hardware watchpoint %d."),
3879                  bl->owner->number);
3880     }
3881   else if (bl->owner->type == bp_catchpoint
3882            && breakpoint_enabled (bl->owner)
3883            && !bl->duplicate)
3884     {
3885       gdb_assert (bl->owner->ops != NULL
3886                   && bl->owner->ops->remove_location != NULL);
3887
3888       val = bl->owner->ops->remove_location (bl, reason);
3889       if (val)
3890         return val;
3891
3892       bl->inserted = (reason == DETACH_BREAKPOINT);
3893     }
3894
3895   return 0;
3896 }
3897
3898 static int
3899 remove_breakpoint (struct bp_location *bl)
3900 {
3901   /* BL is never in moribund_locations by our callers.  */
3902   gdb_assert (bl->owner != NULL);
3903
3904   /* The type of none suggests that owner is actually deleted.
3905      This should not ever happen.  */
3906   gdb_assert (bl->owner->type != bp_none);
3907
3908   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3909
3910   switch_to_program_space_and_thread (bl->pspace);
3911
3912   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3913 }
3914
3915 /* Clear the "inserted" flag in all breakpoints.  */
3916
3917 void
3918 mark_breakpoints_out (void)
3919 {
3920   for (bp_location *bl : all_bp_locations ())
3921     if (bl->pspace == current_program_space)
3922       bl->inserted = 0;
3923 }
3924
3925 /* Clear the "inserted" flag in all breakpoints and delete any
3926    breakpoints which should go away between runs of the program.
3927
3928    Plus other such housekeeping that has to be done for breakpoints
3929    between runs.
3930
3931    Note: this function gets called at the end of a run (by
3932    generic_mourn_inferior) and when a run begins (by
3933    init_wait_for_inferior).  */
3934
3935
3936
3937 void
3938 breakpoint_init_inferior (enum inf_context context)
3939 {
3940   struct program_space *pspace = current_program_space;
3941
3942   /* If breakpoint locations are shared across processes, then there's
3943      nothing to do.  */
3944   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3945     return;
3946
3947   mark_breakpoints_out ();
3948
3949   for (breakpoint *b : all_breakpoints_safe ())
3950     {
3951       if (b->loc && b->loc->pspace != pspace)
3952         continue;
3953
3954       switch (b->type)
3955         {
3956         case bp_call_dummy:
3957         case bp_longjmp_call_dummy:
3958
3959           /* If the call dummy breakpoint is at the entry point it will
3960              cause problems when the inferior is rerun, so we better get
3961              rid of it.  */
3962
3963         case bp_watchpoint_scope:
3964
3965           /* Also get rid of scope breakpoints.  */
3966
3967         case bp_shlib_event:
3968
3969           /* Also remove solib event breakpoints.  Their addresses may
3970              have changed since the last time we ran the program.
3971              Actually we may now be debugging against different target;
3972              and so the solib backend that installed this breakpoint may
3973              not be used in by the target.  E.g.,
3974
3975              (gdb) file prog-linux
3976              (gdb) run               # native linux target
3977              ...
3978              (gdb) kill
3979              (gdb) file prog-win.exe
3980              (gdb) tar rem :9999     # remote Windows gdbserver.
3981           */
3982
3983         case bp_step_resume:
3984
3985           /* Also remove step-resume breakpoints.  */
3986
3987         case bp_single_step:
3988
3989           /* Also remove single-step breakpoints.  */
3990
3991           delete_breakpoint (b);
3992           break;
3993
3994         case bp_watchpoint:
3995         case bp_hardware_watchpoint:
3996         case bp_read_watchpoint:
3997         case bp_access_watchpoint:
3998           {
3999             struct watchpoint *w = (struct watchpoint *) b;
4000
4001             /* Likewise for watchpoints on local expressions.  */
4002             if (w->exp_valid_block != NULL)
4003               delete_breakpoint (b);
4004             else
4005               {
4006                 /* Get rid of existing locations, which are no longer
4007                    valid.  New ones will be created in
4008                    update_watchpoint, when the inferior is restarted.
4009                    The next update_global_location_list call will
4010                    garbage collect them.  */
4011                 b->loc = NULL;
4012
4013                 if (context == inf_starting)
4014                   {
4015                     /* Reset val field to force reread of starting value in
4016                        insert_breakpoints.  */
4017                     w->val.reset (nullptr);
4018                     w->val_valid = false;
4019                   }
4020               }
4021           }
4022           break;
4023         default:
4024           break;
4025         }
4026     }
4027
4028   /* Get rid of the moribund locations.  */
4029   for (bp_location *bl : moribund_locations)
4030     decref_bp_location (&bl);
4031   moribund_locations.clear ();
4032 }
4033
4034 /* These functions concern about actual breakpoints inserted in the
4035    target --- to e.g. check if we need to do decr_pc adjustment or if
4036    we need to hop over the bkpt --- so we check for address space
4037    match, not program space.  */
4038
4039 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4040    exists at PC.  It returns ordinary_breakpoint_here if it's an
4041    ordinary breakpoint, or permanent_breakpoint_here if it's a
4042    permanent breakpoint.
4043    - When continuing from a location with an ordinary breakpoint, we
4044      actually single step once before calling insert_breakpoints.
4045    - When continuing from a location with a permanent breakpoint, we
4046      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4047      the target, to advance the PC past the breakpoint.  */
4048
4049 enum breakpoint_here
4050 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4051 {
4052   int any_breakpoint_here = 0;
4053
4054   for (bp_location *bl : all_bp_locations ())
4055     {
4056       if (bl->loc_type != bp_loc_software_breakpoint
4057           && bl->loc_type != bp_loc_hardware_breakpoint)
4058         continue;
4059
4060       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4061       if ((breakpoint_enabled (bl->owner)
4062            || bl->permanent)
4063           && breakpoint_location_address_match (bl, aspace, pc))
4064         {
4065           if (overlay_debugging 
4066               && section_is_overlay (bl->section)
4067               && !section_is_mapped (bl->section))
4068             continue;           /* unmapped overlay -- can't be a match */
4069           else if (bl->permanent)
4070             return permanent_breakpoint_here;
4071           else
4072             any_breakpoint_here = 1;
4073         }
4074     }
4075
4076   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4077 }
4078
4079 /* See breakpoint.h.  */
4080
4081 int
4082 breakpoint_in_range_p (const address_space *aspace,
4083                        CORE_ADDR addr, ULONGEST len)
4084 {
4085   for (bp_location *bl : all_bp_locations ())
4086     {
4087       if (bl->loc_type != bp_loc_software_breakpoint
4088           && bl->loc_type != bp_loc_hardware_breakpoint)
4089         continue;
4090
4091       if ((breakpoint_enabled (bl->owner)
4092            || bl->permanent)
4093           && breakpoint_location_address_range_overlap (bl, aspace,
4094                                                         addr, len))
4095         {
4096           if (overlay_debugging
4097               && section_is_overlay (bl->section)
4098               && !section_is_mapped (bl->section))
4099             {
4100               /* Unmapped overlay -- can't be a match.  */
4101               continue;
4102             }
4103
4104           return 1;
4105         }
4106     }
4107
4108   return 0;
4109 }
4110
4111 /* Return true if there's a moribund breakpoint at PC.  */
4112
4113 int
4114 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4115 {
4116   for (bp_location *loc : moribund_locations)
4117     if (breakpoint_location_address_match (loc, aspace, pc))
4118       return 1;
4119
4120   return 0;
4121 }
4122
4123 /* Returns non-zero iff BL is inserted at PC, in address space
4124    ASPACE.  */
4125
4126 static int
4127 bp_location_inserted_here_p (struct bp_location *bl,
4128                              const address_space *aspace, CORE_ADDR pc)
4129 {
4130   if (bl->inserted
4131       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4132                                    aspace, pc))
4133     {
4134       if (overlay_debugging
4135           && section_is_overlay (bl->section)
4136           && !section_is_mapped (bl->section))
4137         return 0;               /* unmapped overlay -- can't be a match */
4138       else
4139         return 1;
4140     }
4141   return 0;
4142 }
4143
4144 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4145
4146 int
4147 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4148 {
4149   for (bp_location *bl : all_bp_locations_at_addr (pc))
4150     {
4151       if (bl->loc_type != bp_loc_software_breakpoint
4152           && bl->loc_type != bp_loc_hardware_breakpoint)
4153         continue;
4154
4155       if (bp_location_inserted_here_p (bl, aspace, pc))
4156         return 1;
4157     }
4158   return 0;
4159 }
4160
4161 /* This function returns non-zero iff there is a software breakpoint
4162    inserted at PC.  */
4163
4164 int
4165 software_breakpoint_inserted_here_p (const address_space *aspace,
4166                                      CORE_ADDR pc)
4167 {
4168   for (bp_location *bl : all_bp_locations_at_addr (pc))
4169     {
4170       if (bl->loc_type != bp_loc_software_breakpoint)
4171         continue;
4172
4173       if (bp_location_inserted_here_p (bl, aspace, pc))
4174         return 1;
4175     }
4176
4177   return 0;
4178 }
4179
4180 /* See breakpoint.h.  */
4181
4182 int
4183 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4184                                      CORE_ADDR pc)
4185 {
4186   for (bp_location *bl : all_bp_locations_at_addr (pc))
4187     {
4188       if (bl->loc_type != bp_loc_hardware_breakpoint)
4189         continue;
4190
4191       if (bp_location_inserted_here_p (bl, aspace, pc))
4192         return 1;
4193     }
4194
4195   return 0;
4196 }
4197
4198 int
4199 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4200                                        CORE_ADDR addr, ULONGEST len)
4201 {
4202   for (breakpoint *bpt : all_breakpoints ())
4203     {
4204       if (bpt->type != bp_hardware_watchpoint
4205           && bpt->type != bp_access_watchpoint)
4206         continue;
4207
4208       if (!breakpoint_enabled (bpt))
4209         continue;
4210
4211       for (bp_location *loc : bpt->locations ())
4212         if (loc->pspace->aspace == aspace && loc->inserted)
4213           {
4214             CORE_ADDR l, h;
4215
4216             /* Check for intersection.  */
4217             l = std::max<CORE_ADDR> (loc->address, addr);
4218             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4219             if (l < h)
4220               return 1;
4221           }
4222     }
4223   return 0;
4224 }
4225
4226 /* See breakpoint.h.  */
4227
4228 bool
4229 is_catchpoint (struct breakpoint *b)
4230 {
4231   return (b->type == bp_catchpoint);
4232 }
4233
4234 /* Clear a bpstat so that it says we are not at any breakpoint.
4235    Also free any storage that is part of a bpstat.  */
4236
4237 void
4238 bpstat_clear (bpstat **bsp)
4239 {
4240   bpstat *p;
4241   bpstat *q;
4242
4243   if (bsp == 0)
4244     return;
4245   p = *bsp;
4246   while (p != NULL)
4247     {
4248       q = p->next;
4249       delete p;
4250       p = q;
4251     }
4252   *bsp = NULL;
4253 }
4254
4255 bpstat::bpstat (const bpstat &other)
4256   : next (NULL),
4257     bp_location_at (other.bp_location_at),
4258     breakpoint_at (other.breakpoint_at),
4259     commands (other.commands),
4260     print (other.print),
4261     stop (other.stop),
4262     print_it (other.print_it)
4263 {
4264   if (other.old_val != NULL)
4265     old_val = release_value (value_copy (other.old_val.get ()));
4266 }
4267
4268 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4269    is part of the bpstat is copied as well.  */
4270
4271 bpstat *
4272 bpstat_copy (bpstat *bs)
4273 {
4274   bpstat *p = nullptr;
4275   bpstat *tmp;
4276   bpstat *retval = nullptr;
4277
4278   if (bs == NULL)
4279     return bs;
4280
4281   for (; bs != NULL; bs = bs->next)
4282     {
4283       tmp = new bpstat (*bs);
4284
4285       if (p == NULL)
4286         /* This is the first thing in the chain.  */
4287         retval = tmp;
4288       else
4289         p->next = tmp;
4290       p = tmp;
4291     }
4292   p->next = NULL;
4293   return retval;
4294 }
4295
4296 /* Find the bpstat associated with this breakpoint.  */
4297
4298 bpstat *
4299 bpstat_find_breakpoint (bpstat *bsp, struct breakpoint *breakpoint)
4300 {
4301   if (bsp == NULL)
4302     return NULL;
4303
4304   for (; bsp != NULL; bsp = bsp->next)
4305     {
4306       if (bsp->breakpoint_at == breakpoint)
4307         return bsp;
4308     }
4309   return NULL;
4310 }
4311
4312 /* See breakpoint.h.  */
4313
4314 bool
4315 bpstat_explains_signal (bpstat *bsp, enum gdb_signal sig)
4316 {
4317   for (; bsp != NULL; bsp = bsp->next)
4318     {
4319       if (bsp->breakpoint_at == NULL)
4320         {
4321           /* A moribund location can never explain a signal other than
4322              GDB_SIGNAL_TRAP.  */
4323           if (sig == GDB_SIGNAL_TRAP)
4324             return true;
4325         }
4326       else
4327         {
4328           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4329                                                         sig))
4330             return true;
4331         }
4332     }
4333
4334   return false;
4335 }
4336
4337 /* Put in *NUM the breakpoint number of the first breakpoint we are
4338    stopped at.  *BSP upon return is a bpstat which points to the
4339    remaining breakpoints stopped at (but which is not guaranteed to be
4340    good for anything but further calls to bpstat_num).
4341
4342    Return 0 if passed a bpstat which does not indicate any breakpoints.
4343    Return -1 if stopped at a breakpoint that has been deleted since
4344    we set it.
4345    Return 1 otherwise.  */
4346
4347 int
4348 bpstat_num (bpstat **bsp, int *num)
4349 {
4350   struct breakpoint *b;
4351
4352   if ((*bsp) == NULL)
4353     return 0;                   /* No more breakpoint values */
4354
4355   /* We assume we'll never have several bpstats that correspond to a
4356      single breakpoint -- otherwise, this function might return the
4357      same number more than once and this will look ugly.  */
4358   b = (*bsp)->breakpoint_at;
4359   *bsp = (*bsp)->next;
4360   if (b == NULL)
4361     return -1;                  /* breakpoint that's been deleted since */
4362
4363   *num = b->number;             /* We have its number */
4364   return 1;
4365 }
4366
4367 /* See breakpoint.h.  */
4368
4369 void
4370 bpstat_clear_actions (void)
4371 {
4372   bpstat *bs;
4373
4374   if (inferior_ptid == null_ptid)
4375     return;
4376
4377   thread_info *tp = inferior_thread ();
4378   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4379     {
4380       bs->commands = NULL;
4381       bs->old_val.reset (nullptr);
4382     }
4383 }
4384
4385 /* Called when a command is about to proceed the inferior.  */
4386
4387 static void
4388 breakpoint_about_to_proceed (void)
4389 {
4390   if (inferior_ptid != null_ptid)
4391     {
4392       struct thread_info *tp = inferior_thread ();
4393
4394       /* Allow inferior function calls in breakpoint commands to not
4395          interrupt the command list.  When the call finishes
4396          successfully, the inferior will be standing at the same
4397          breakpoint as if nothing happened.  */
4398       if (tp->control.in_infcall)
4399         return;
4400     }
4401
4402   breakpoint_proceeded = 1;
4403 }
4404
4405 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4406    or its equivalent.  */
4407
4408 static int
4409 command_line_is_silent (struct command_line *cmd)
4410 {
4411   return cmd && (strcmp ("silent", cmd->line) == 0);
4412 }
4413
4414 /* Execute all the commands associated with all the breakpoints at
4415    this location.  Any of these commands could cause the process to
4416    proceed beyond this point, etc.  We look out for such changes by
4417    checking the global "breakpoint_proceeded" after each command.
4418
4419    Returns true if a breakpoint command resumed the inferior.  In that
4420    case, it is the caller's responsibility to recall it again with the
4421    bpstat of the current thread.  */
4422
4423 static int
4424 bpstat_do_actions_1 (bpstat **bsp)
4425 {
4426   bpstat *bs;
4427   int again = 0;
4428
4429   /* Avoid endless recursion if a `source' command is contained
4430      in bs->commands.  */
4431   if (executing_breakpoint_commands)
4432     return 0;
4433
4434   scoped_restore save_executing
4435     = make_scoped_restore (&executing_breakpoint_commands, 1);
4436
4437   scoped_restore preventer = prevent_dont_repeat ();
4438
4439   /* This pointer will iterate over the list of bpstat's.  */
4440   bs = *bsp;
4441
4442   breakpoint_proceeded = 0;
4443   for (; bs != NULL; bs = bs->next)
4444     {
4445       struct command_line *cmd = NULL;
4446
4447       /* Take ownership of the BSP's command tree, if it has one.
4448
4449          The command tree could legitimately contain commands like
4450          'step' and 'next', which call clear_proceed_status, which
4451          frees stop_bpstat's command tree.  To make sure this doesn't
4452          free the tree we're executing out from under us, we need to
4453          take ownership of the tree ourselves.  Since a given bpstat's
4454          commands are only executed once, we don't need to copy it; we
4455          can clear the pointer in the bpstat, and make sure we free
4456          the tree when we're done.  */
4457       counted_command_line ccmd = bs->commands;
4458       bs->commands = NULL;
4459       if (ccmd != NULL)
4460         cmd = ccmd.get ();
4461       if (command_line_is_silent (cmd))
4462         {
4463           /* The action has been already done by bpstat_stop_status.  */
4464           cmd = cmd->next;
4465         }
4466
4467       while (cmd != NULL)
4468         {
4469           execute_control_command (cmd);
4470
4471           if (breakpoint_proceeded)
4472             break;
4473           else
4474             cmd = cmd->next;
4475         }
4476
4477       if (breakpoint_proceeded)
4478         {
4479           if (current_ui->async)
4480             /* If we are in async mode, then the target might be still
4481                running, not stopped at any breakpoint, so nothing for
4482                us to do here -- just return to the event loop.  */
4483             ;
4484           else
4485             /* In sync mode, when execute_control_command returns
4486                we're already standing on the next breakpoint.
4487                Breakpoint commands for that stop were not run, since
4488                execute_command does not run breakpoint commands --
4489                only command_line_handler does, but that one is not
4490                involved in execution of breakpoint commands.  So, we
4491                can now execute breakpoint commands.  It should be
4492                noted that making execute_command do bpstat actions is
4493                not an option -- in this case we'll have recursive
4494                invocation of bpstat for each breakpoint with a
4495                command, and can easily blow up GDB stack.  Instead, we
4496                return true, which will trigger the caller to recall us
4497                with the new stop_bpstat.  */
4498             again = 1;
4499           break;
4500         }
4501     }
4502   return again;
4503 }
4504
4505 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4506    one, is alive and has execution.  Return NULL otherwise.  */
4507
4508 static thread_info *
4509 get_bpstat_thread ()
4510 {
4511   if (inferior_ptid == null_ptid || !target_has_execution ())
4512     return NULL;
4513
4514   thread_info *tp = inferior_thread ();
4515   if (tp->state == THREAD_EXITED || tp->executing ())
4516     return NULL;
4517   return tp;
4518 }
4519
4520 void
4521 bpstat_do_actions (void)
4522 {
4523   auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4524   thread_info *tp;
4525
4526   /* Do any commands attached to breakpoint we are stopped at.  */
4527   while ((tp = get_bpstat_thread ()) != NULL)
4528     {
4529       /* Since in sync mode, bpstat_do_actions may resume the
4530          inferior, and only return when it is stopped at the next
4531          breakpoint, we keep doing breakpoint actions until it returns
4532          false to indicate the inferior was not resumed.  */
4533       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4534         break;
4535     }
4536
4537   cleanup_if_error.release ();
4538 }
4539
4540 /* Print out the (old or new) value associated with a watchpoint.  */
4541
4542 static void
4543 watchpoint_value_print (struct value *val, struct ui_file *stream)
4544 {
4545   if (val == NULL)
4546     fprintf_styled (stream, metadata_style.style (), _("<unreadable>"));
4547   else
4548     {
4549       struct value_print_options opts;
4550       get_user_print_options (&opts);
4551       value_print (val, stream, &opts);
4552     }
4553 }
4554
4555 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4556    debugging multiple threads.  */
4557
4558 void
4559 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4560 {
4561   if (uiout->is_mi_like_p ())
4562     return;
4563
4564   uiout->text ("\n");
4565
4566   if (show_thread_that_caused_stop ())
4567     {
4568       struct thread_info *thr = inferior_thread ();
4569
4570       uiout->text ("Thread ");
4571       uiout->field_string ("thread-id", print_thread_id (thr));
4572
4573       const char *name = thread_name (thr);
4574       if (name != NULL)
4575         {
4576           uiout->text (" \"");
4577           uiout->field_string ("name", name);
4578           uiout->text ("\"");
4579         }
4580
4581       uiout->text (" hit ");
4582     }
4583 }
4584
4585 /* Generic routine for printing messages indicating why we
4586    stopped.  The behavior of this function depends on the value
4587    'print_it' in the bpstat structure.  Under some circumstances we
4588    may decide not to print anything here and delegate the task to
4589    normal_stop().  */
4590
4591 static enum print_stop_action
4592 print_bp_stop_message (bpstat *bs)
4593 {
4594   switch (bs->print_it)
4595     {
4596     case print_it_noop:
4597       /* Nothing should be printed for this bpstat entry.  */
4598       return PRINT_UNKNOWN;
4599       break;
4600
4601     case print_it_done:
4602       /* We still want to print the frame, but we already printed the
4603          relevant messages.  */
4604       return PRINT_SRC_AND_LOC;
4605       break;
4606
4607     case print_it_normal:
4608       {
4609         struct breakpoint *b = bs->breakpoint_at;
4610
4611         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4612            which has since been deleted.  */
4613         if (b == NULL)
4614           return PRINT_UNKNOWN;
4615
4616         /* Normal case.  Call the breakpoint's print_it method.  */
4617         return b->ops->print_it (bs);
4618       }
4619       break;
4620
4621     default:
4622       internal_error (__FILE__, __LINE__,
4623                       _("print_bp_stop_message: unrecognized enum value"));
4624       break;
4625     }
4626 }
4627
4628 /* A helper function that prints a shared library stopped event.  */
4629
4630 static void
4631 print_solib_event (int is_catchpoint)
4632 {
4633   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4634   bool any_added = !current_program_space->added_solibs.empty ();
4635
4636   if (!is_catchpoint)
4637     {
4638       if (any_added || any_deleted)
4639         current_uiout->text (_("Stopped due to shared library event:\n"));
4640       else
4641         current_uiout->text (_("Stopped due to shared library event (no "
4642                                "libraries added or removed)\n"));
4643     }
4644
4645   if (current_uiout->is_mi_like_p ())
4646     current_uiout->field_string ("reason",
4647                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4648
4649   if (any_deleted)
4650     {
4651       current_uiout->text (_("  Inferior unloaded "));
4652       ui_out_emit_list list_emitter (current_uiout, "removed");
4653       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4654         {
4655           const std::string &name = current_program_space->deleted_solibs[ix];
4656
4657           if (ix > 0)
4658             current_uiout->text ("    ");
4659           current_uiout->field_string ("library", name);
4660           current_uiout->text ("\n");
4661         }
4662     }
4663
4664   if (any_added)
4665     {
4666       current_uiout->text (_("  Inferior loaded "));
4667       ui_out_emit_list list_emitter (current_uiout, "added");
4668       bool first = true;
4669       for (so_list *iter : current_program_space->added_solibs)
4670         {
4671           if (!first)
4672             current_uiout->text ("    ");
4673           first = false;
4674           current_uiout->field_string ("library", iter->so_name);
4675           current_uiout->text ("\n");
4676         }
4677     }
4678 }
4679
4680 /* Print a message indicating what happened.  This is called from
4681    normal_stop().  The input to this routine is the head of the bpstat
4682    list - a list of the eventpoints that caused this stop.  KIND is
4683    the target_waitkind for the stopping event.  This
4684    routine calls the generic print routine for printing a message
4685    about reasons for stopping.  This will print (for example) the
4686    "Breakpoint n," part of the output.  The return value of this
4687    routine is one of:
4688
4689    PRINT_UNKNOWN: Means we printed nothing.
4690    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4691    code to print the location.  An example is 
4692    "Breakpoint 1, " which should be followed by
4693    the location.
4694    PRINT_SRC_ONLY: Means we printed something, but there is no need
4695    to also print the location part of the message.
4696    An example is the catch/throw messages, which
4697    don't require a location appended to the end.
4698    PRINT_NOTHING: We have done some printing and we don't need any 
4699    further info to be printed.  */
4700
4701 enum print_stop_action
4702 bpstat_print (bpstat *bs, int kind)
4703 {
4704   enum print_stop_action val;
4705
4706   /* Maybe another breakpoint in the chain caused us to stop.
4707      (Currently all watchpoints go on the bpstat whether hit or not.
4708      That probably could (should) be changed, provided care is taken
4709      with respect to bpstat_explains_signal).  */
4710   for (; bs; bs = bs->next)
4711     {
4712       val = print_bp_stop_message (bs);
4713       if (val == PRINT_SRC_ONLY 
4714           || val == PRINT_SRC_AND_LOC 
4715           || val == PRINT_NOTHING)
4716         return val;
4717     }
4718
4719   /* If we had hit a shared library event breakpoint,
4720      print_bp_stop_message would print out this message.  If we hit an
4721      OS-level shared library event, do the same thing.  */
4722   if (kind == TARGET_WAITKIND_LOADED)
4723     {
4724       print_solib_event (0);
4725       return PRINT_NOTHING;
4726     }
4727
4728   /* We reached the end of the chain, or we got a null BS to start
4729      with and nothing was printed.  */
4730   return PRINT_UNKNOWN;
4731 }
4732
4733 /* Evaluate the boolean expression EXP and return the result.  */
4734
4735 static bool
4736 breakpoint_cond_eval (expression *exp)
4737 {
4738   struct value *mark = value_mark ();
4739   bool res = value_true (evaluate_expression (exp));
4740
4741   value_free_to_mark (mark);
4742   return res;
4743 }
4744
4745 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4746
4747 bpstat::bpstat (struct bp_location *bl, bpstat ***bs_link_pointer)
4748   : next (NULL),
4749     bp_location_at (bp_location_ref_ptr::new_reference (bl)),
4750     breakpoint_at (bl->owner),
4751     commands (NULL),
4752     print (0),
4753     stop (0),
4754     print_it (print_it_normal)
4755 {
4756   **bs_link_pointer = this;
4757   *bs_link_pointer = &next;
4758 }
4759
4760 bpstat::bpstat ()
4761   : next (NULL),
4762     breakpoint_at (NULL),
4763     commands (NULL),
4764     print (0),
4765     stop (0),
4766     print_it (print_it_normal)
4767 {
4768 }
4769 \f
4770 /* The target has stopped with waitstatus WS.  Check if any hardware
4771    watchpoints have triggered, according to the target.  */
4772
4773 int
4774 watchpoints_triggered (const target_waitstatus &ws)
4775 {
4776   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4777   CORE_ADDR addr;
4778
4779   if (!stopped_by_watchpoint)
4780     {
4781       /* We were not stopped by a watchpoint.  Mark all watchpoints
4782          as not triggered.  */
4783       for (breakpoint *b : all_breakpoints ())
4784         if (is_hardware_watchpoint (b))
4785           {
4786             struct watchpoint *w = (struct watchpoint *) b;
4787
4788             w->watchpoint_triggered = watch_triggered_no;
4789           }
4790
4791       return 0;
4792     }
4793
4794   if (!target_stopped_data_address (current_inferior ()->top_target (), &addr))
4795     {
4796       /* We were stopped by a watchpoint, but we don't know where.
4797          Mark all watchpoints as unknown.  */
4798       for (breakpoint *b : all_breakpoints ())
4799         if (is_hardware_watchpoint (b))
4800           {
4801             struct watchpoint *w = (struct watchpoint *) b;
4802
4803             w->watchpoint_triggered = watch_triggered_unknown;
4804           }
4805
4806       return 1;
4807     }
4808
4809   /* The target could report the data address.  Mark watchpoints
4810      affected by this data address as triggered, and all others as not
4811      triggered.  */
4812
4813   for (breakpoint *b : all_breakpoints ())
4814     if (is_hardware_watchpoint (b))
4815       {
4816         struct watchpoint *w = (struct watchpoint *) b;
4817
4818         w->watchpoint_triggered = watch_triggered_no;
4819         for (bp_location *loc : b->locations ())
4820           {
4821             if (is_masked_watchpoint (b))
4822               {
4823                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4824                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4825
4826                 if (newaddr == start)
4827                   {
4828                     w->watchpoint_triggered = watch_triggered_yes;
4829                     break;
4830                   }
4831               }
4832             /* Exact match not required.  Within range is sufficient.  */
4833             else if (target_watchpoint_addr_within_range
4834                        (current_inferior ()->top_target (), addr, loc->address,
4835                         loc->length))
4836               {
4837                 w->watchpoint_triggered = watch_triggered_yes;
4838                 break;
4839               }
4840           }
4841       }
4842
4843   return 1;
4844 }
4845
4846 /* Possible return values for watchpoint_check.  */
4847 enum wp_check_result
4848   {
4849     /* The watchpoint has been deleted.  */
4850     WP_DELETED = 1,
4851
4852     /* The value has changed.  */
4853     WP_VALUE_CHANGED = 2,
4854
4855     /* The value has not changed.  */
4856     WP_VALUE_NOT_CHANGED = 3,
4857
4858     /* Ignore this watchpoint, no matter if the value changed or not.  */
4859     WP_IGNORE = 4,
4860   };
4861
4862 #define BP_TEMPFLAG 1
4863 #define BP_HARDWAREFLAG 2
4864
4865 /* Evaluate watchpoint condition expression and check if its value
4866    changed.  */
4867
4868 static wp_check_result
4869 watchpoint_check (bpstat *bs)
4870 {
4871   struct watchpoint *b;
4872   struct frame_info *fr;
4873   int within_current_scope;
4874
4875   /* BS is built from an existing struct breakpoint.  */
4876   gdb_assert (bs->breakpoint_at != NULL);
4877   b = (struct watchpoint *) bs->breakpoint_at;
4878
4879   /* If this is a local watchpoint, we only want to check if the
4880      watchpoint frame is in scope if the current thread is the thread
4881      that was used to create the watchpoint.  */
4882   if (!watchpoint_in_thread_scope (b))
4883     return WP_IGNORE;
4884
4885   if (b->exp_valid_block == NULL)
4886     within_current_scope = 1;
4887   else
4888     {
4889       struct frame_info *frame = get_current_frame ();
4890       struct gdbarch *frame_arch = get_frame_arch (frame);
4891       CORE_ADDR frame_pc = get_frame_pc (frame);
4892
4893       /* stack_frame_destroyed_p() returns a non-zero value if we're
4894          still in the function but the stack frame has already been
4895          invalidated.  Since we can't rely on the values of local
4896          variables after the stack has been destroyed, we are treating
4897          the watchpoint in that state as `not changed' without further
4898          checking.  Don't mark watchpoints as changed if the current
4899          frame is in an epilogue - even if they are in some other
4900          frame, our view of the stack is likely to be wrong and
4901          frame_find_by_id could error out.  */
4902       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4903         return WP_IGNORE;
4904
4905       fr = frame_find_by_id (b->watchpoint_frame);
4906       within_current_scope = (fr != NULL);
4907
4908       /* If we've gotten confused in the unwinder, we might have
4909          returned a frame that can't describe this variable.  */
4910       if (within_current_scope)
4911         {
4912           struct symbol *function;
4913
4914           function = get_frame_function (fr);
4915           if (function == NULL
4916               || !contained_in (b->exp_valid_block,
4917                                 SYMBOL_BLOCK_VALUE (function)))
4918             within_current_scope = 0;
4919         }
4920
4921       if (within_current_scope)
4922         /* If we end up stopping, the current frame will get selected
4923            in normal_stop.  So this call to select_frame won't affect
4924            the user.  */
4925         select_frame (fr);
4926     }
4927
4928   if (within_current_scope)
4929     {
4930       /* We use value_{,free_to_}mark because it could be a *long*
4931          time before we return to the command level and call
4932          free_all_values.  We can't call free_all_values because we
4933          might be in the middle of evaluating a function call.  */
4934
4935       struct value *mark;
4936       struct value *new_val;
4937
4938       if (is_masked_watchpoint (b))
4939         /* Since we don't know the exact trigger address (from
4940            stopped_data_address), just tell the user we've triggered
4941            a mask watchpoint.  */
4942         return WP_VALUE_CHANGED;
4943
4944       mark = value_mark ();
4945       fetch_subexp_value (b->exp.get (), b->exp->op.get (), &new_val,
4946                           NULL, NULL, false);
4947
4948       if (b->val_bitsize != 0)
4949         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4950
4951       /* We use value_equal_contents instead of value_equal because
4952          the latter coerces an array to a pointer, thus comparing just
4953          the address of the array instead of its contents.  This is
4954          not what we want.  */
4955       if ((b->val != NULL) != (new_val != NULL)
4956           || (b->val != NULL && !value_equal_contents (b->val.get (),
4957                                                        new_val)))
4958         {
4959           bs->old_val = b->val;
4960           b->val = release_value (new_val);
4961           b->val_valid = true;
4962           if (new_val != NULL)
4963             value_free_to_mark (mark);
4964           return WP_VALUE_CHANGED;
4965         }
4966       else
4967         {
4968           /* Nothing changed.  */
4969           value_free_to_mark (mark);
4970           return WP_VALUE_NOT_CHANGED;
4971         }
4972     }
4973   else
4974     {
4975       /* This seems like the only logical thing to do because
4976          if we temporarily ignored the watchpoint, then when
4977          we reenter the block in which it is valid it contains
4978          garbage (in the case of a function, it may have two
4979          garbage values, one before and one after the prologue).
4980          So we can't even detect the first assignment to it and
4981          watch after that (since the garbage may or may not equal
4982          the first value assigned).  */
4983       /* We print all the stop information in
4984          breakpoint_ops->print_it, but in this case, by the time we
4985          call breakpoint_ops->print_it this bp will be deleted
4986          already.  So we have no choice but print the information
4987          here.  */
4988
4989       SWITCH_THRU_ALL_UIS ()
4990         {
4991           struct ui_out *uiout = current_uiout;
4992
4993           if (uiout->is_mi_like_p ())
4994             uiout->field_string
4995               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4996           uiout->message ("\nWatchpoint %pF deleted because the program has "
4997                           "left the block in\n"
4998                           "which its expression is valid.\n",
4999                           signed_field ("wpnum", b->number));
5000         }
5001
5002       /* Make sure the watchpoint's commands aren't executed.  */
5003       b->commands = NULL;
5004       watchpoint_del_at_next_stop (b);
5005
5006       return WP_DELETED;
5007     }
5008 }
5009
5010 /* Return true if it looks like target has stopped due to hitting
5011    breakpoint location BL.  This function does not check if we should
5012    stop, only if BL explains the stop.  */
5013
5014 static int
5015 bpstat_check_location (const struct bp_location *bl,
5016                        const address_space *aspace, CORE_ADDR bp_addr,
5017                        const target_waitstatus &ws)
5018 {
5019   struct breakpoint *b = bl->owner;
5020
5021   /* BL is from an existing breakpoint.  */
5022   gdb_assert (b != NULL);
5023
5024   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5025 }
5026
5027 /* Determine if the watched values have actually changed, and we
5028    should stop.  If not, set BS->stop to 0.  */
5029
5030 static void
5031 bpstat_check_watchpoint (bpstat *bs)
5032 {
5033   const struct bp_location *bl;
5034   struct watchpoint *b;
5035
5036   /* BS is built for existing struct breakpoint.  */
5037   bl = bs->bp_location_at.get ();
5038   gdb_assert (bl != NULL);
5039   b = (struct watchpoint *) bs->breakpoint_at;
5040   gdb_assert (b != NULL);
5041
5042     {
5043       int must_check_value = 0;
5044       
5045       if (b->type == bp_watchpoint)
5046         /* For a software watchpoint, we must always check the
5047            watched value.  */
5048         must_check_value = 1;
5049       else if (b->watchpoint_triggered == watch_triggered_yes)
5050         /* We have a hardware watchpoint (read, write, or access)
5051            and the target earlier reported an address watched by
5052            this watchpoint.  */
5053         must_check_value = 1;
5054       else if (b->watchpoint_triggered == watch_triggered_unknown
5055                && b->type == bp_hardware_watchpoint)
5056         /* We were stopped by a hardware watchpoint, but the target could
5057            not report the data address.  We must check the watchpoint's
5058            value.  Access and read watchpoints are out of luck; without
5059            a data address, we can't figure it out.  */
5060         must_check_value = 1;
5061
5062       if (must_check_value)
5063         {
5064           wp_check_result e;
5065
5066           try
5067             {
5068               e = watchpoint_check (bs);
5069             }
5070           catch (const gdb_exception &ex)
5071             {
5072               exception_fprintf (gdb_stderr, ex,
5073                                  "Error evaluating expression "
5074                                  "for watchpoint %d\n",
5075                                  b->number);
5076
5077               SWITCH_THRU_ALL_UIS ()
5078                 {
5079                   printf_filtered (_("Watchpoint %d deleted.\n"),
5080                                    b->number);
5081                 }
5082               watchpoint_del_at_next_stop (b);
5083               e = WP_DELETED;
5084             }
5085
5086           switch (e)
5087             {
5088             case WP_DELETED:
5089               /* We've already printed what needs to be printed.  */
5090               bs->print_it = print_it_done;
5091               /* Stop.  */
5092               break;
5093             case WP_IGNORE:
5094               bs->print_it = print_it_noop;
5095               bs->stop = 0;
5096               break;
5097             case WP_VALUE_CHANGED:
5098               if (b->type == bp_read_watchpoint)
5099                 {
5100                   /* There are two cases to consider here:
5101
5102                      1. We're watching the triggered memory for reads.
5103                      In that case, trust the target, and always report
5104                      the watchpoint hit to the user.  Even though
5105                      reads don't cause value changes, the value may
5106                      have changed since the last time it was read, and
5107                      since we're not trapping writes, we will not see
5108                      those, and as such we should ignore our notion of
5109                      old value.
5110
5111                      2. We're watching the triggered memory for both
5112                      reads and writes.  There are two ways this may
5113                      happen:
5114
5115                      2.1. This is a target that can't break on data
5116                      reads only, but can break on accesses (reads or
5117                      writes), such as e.g., x86.  We detect this case
5118                      at the time we try to insert read watchpoints.
5119
5120                      2.2. Otherwise, the target supports read
5121                      watchpoints, but, the user set an access or write
5122                      watchpoint watching the same memory as this read
5123                      watchpoint.
5124
5125                      If we're watching memory writes as well as reads,
5126                      ignore watchpoint hits when we find that the
5127                      value hasn't changed, as reads don't cause
5128                      changes.  This still gives false positives when
5129                      the program writes the same value to memory as
5130                      what there was already in memory (we will confuse
5131                      it for a read), but it's much better than
5132                      nothing.  */
5133
5134                   int other_write_watchpoint = 0;
5135
5136                   if (bl->watchpoint_type == hw_read)
5137                     {
5138                       for (breakpoint *other_b : all_breakpoints ())
5139                         if (other_b->type == bp_hardware_watchpoint
5140                             || other_b->type == bp_access_watchpoint)
5141                           {
5142                             struct watchpoint *other_w =
5143                               (struct watchpoint *) other_b;
5144
5145                             if (other_w->watchpoint_triggered
5146                                 == watch_triggered_yes)
5147                               {
5148                                 other_write_watchpoint = 1;
5149                                 break;
5150                               }
5151                           }
5152                     }
5153
5154                   if (other_write_watchpoint
5155                       || bl->watchpoint_type == hw_access)
5156                     {
5157                       /* We're watching the same memory for writes,
5158                          and the value changed since the last time we
5159                          updated it, so this trap must be for a write.
5160                          Ignore it.  */
5161                       bs->print_it = print_it_noop;
5162                       bs->stop = 0;
5163                     }
5164                 }
5165               break;
5166             case WP_VALUE_NOT_CHANGED:
5167               if (b->type == bp_hardware_watchpoint
5168                   || b->type == bp_watchpoint)
5169                 {
5170                   /* Don't stop: write watchpoints shouldn't fire if
5171                      the value hasn't changed.  */
5172                   bs->print_it = print_it_noop;
5173                   bs->stop = 0;
5174                 }
5175               /* Stop.  */
5176               break;
5177             default:
5178               /* Can't happen.  */
5179               break;
5180             }
5181         }
5182       else      /* must_check_value == 0 */
5183         {
5184           /* This is a case where some watchpoint(s) triggered, but
5185              not at the address of this watchpoint, or else no
5186              watchpoint triggered after all.  So don't print
5187              anything for this watchpoint.  */
5188           bs->print_it = print_it_noop;
5189           bs->stop = 0;
5190         }
5191     }
5192 }
5193
5194 /* For breakpoints that are currently marked as telling gdb to stop,
5195    check conditions (condition proper, frame, thread and ignore count)
5196    of breakpoint referred to by BS.  If we should not stop for this
5197    breakpoint, set BS->stop to 0.  */
5198
5199 static void
5200 bpstat_check_breakpoint_conditions (bpstat *bs, thread_info *thread)
5201 {
5202   const struct bp_location *bl;
5203   struct breakpoint *b;
5204   /* Assume stop.  */
5205   bool condition_result = true;
5206   struct expression *cond;
5207
5208   gdb_assert (bs->stop);
5209
5210   /* BS is built for existing struct breakpoint.  */
5211   bl = bs->bp_location_at.get ();
5212   gdb_assert (bl != NULL);
5213   b = bs->breakpoint_at;
5214   gdb_assert (b != NULL);
5215
5216   /* Even if the target evaluated the condition on its end and notified GDB, we
5217      need to do so again since GDB does not know if we stopped due to a
5218      breakpoint or a single step breakpoint.  */
5219
5220   if (frame_id_p (b->frame_id)
5221       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5222     {
5223       bs->stop = 0;
5224       return;
5225     }
5226
5227   /* If this is a thread/task-specific breakpoint, don't waste cpu
5228      evaluating the condition if this isn't the specified
5229      thread/task.  */
5230   if ((b->thread != -1 && b->thread != thread->global_num)
5231       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5232     {
5233       bs->stop = 0;
5234       return;
5235     }
5236
5237   /* Evaluate extension language breakpoints that have a "stop" method
5238      implemented.  */
5239   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5240
5241   if (is_watchpoint (b))
5242     {
5243       struct watchpoint *w = (struct watchpoint *) b;
5244
5245       cond = w->cond_exp.get ();
5246     }
5247   else
5248     cond = bl->cond.get ();
5249
5250   if (cond && b->disposition != disp_del_at_next_stop)
5251     {
5252       int within_current_scope = 1;
5253       struct watchpoint * w;
5254
5255       /* We use value_mark and value_free_to_mark because it could
5256          be a long time before we return to the command level and
5257          call free_all_values.  We can't call free_all_values
5258          because we might be in the middle of evaluating a
5259          function call.  */
5260       struct value *mark = value_mark ();
5261
5262       if (is_watchpoint (b))
5263         w = (struct watchpoint *) b;
5264       else
5265         w = NULL;
5266
5267       /* Need to select the frame, with all that implies so that
5268          the conditions will have the right context.  Because we
5269          use the frame, we will not see an inlined function's
5270          variables when we arrive at a breakpoint at the start
5271          of the inlined function; the current frame will be the
5272          call site.  */
5273       if (w == NULL || w->cond_exp_valid_block == NULL)
5274         select_frame (get_current_frame ());
5275       else
5276         {
5277           struct frame_info *frame;
5278
5279           /* For local watchpoint expressions, which particular
5280              instance of a local is being watched matters, so we
5281              keep track of the frame to evaluate the expression
5282              in.  To evaluate the condition however, it doesn't
5283              really matter which instantiation of the function
5284              where the condition makes sense triggers the
5285              watchpoint.  This allows an expression like "watch
5286              global if q > 10" set in `func', catch writes to
5287              global on all threads that call `func', or catch
5288              writes on all recursive calls of `func' by a single
5289              thread.  We simply always evaluate the condition in
5290              the innermost frame that's executing where it makes
5291              sense to evaluate the condition.  It seems
5292              intuitive.  */
5293           frame = block_innermost_frame (w->cond_exp_valid_block);
5294           if (frame != NULL)
5295             select_frame (frame);
5296           else
5297             within_current_scope = 0;
5298         }
5299       if (within_current_scope)
5300         {
5301           try
5302             {
5303               condition_result = breakpoint_cond_eval (cond);
5304             }
5305           catch (const gdb_exception &ex)
5306             {
5307               exception_fprintf (gdb_stderr, ex,
5308                                  "Error in testing breakpoint condition:\n");
5309             }
5310         }
5311       else
5312         {
5313           warning (_("Watchpoint condition cannot be tested "
5314                      "in the current scope"));
5315           /* If we failed to set the right context for this
5316              watchpoint, unconditionally report it.  */
5317         }
5318       /* FIXME-someday, should give breakpoint #.  */
5319       value_free_to_mark (mark);
5320     }
5321
5322   if (cond && !condition_result)
5323     {
5324       bs->stop = 0;
5325     }
5326   else if (b->ignore_count > 0)
5327     {
5328       b->ignore_count--;
5329       bs->stop = 0;
5330       /* Increase the hit count even though we don't stop.  */
5331       ++(b->hit_count);
5332       gdb::observers::breakpoint_modified.notify (b);
5333     }   
5334 }
5335
5336 /* Returns true if we need to track moribund locations of LOC's type
5337    on the current target.  */
5338
5339 static int
5340 need_moribund_for_location_type (struct bp_location *loc)
5341 {
5342   return ((loc->loc_type == bp_loc_software_breakpoint
5343            && !target_supports_stopped_by_sw_breakpoint ())
5344           || (loc->loc_type == bp_loc_hardware_breakpoint
5345               && !target_supports_stopped_by_hw_breakpoint ()));
5346 }
5347
5348 /* See breakpoint.h.  */
5349
5350 bpstat *
5351 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5352                     const target_waitstatus &ws)
5353 {
5354   bpstat *bs_head = nullptr, **bs_link = &bs_head;
5355
5356   for (breakpoint *b : all_breakpoints ())
5357     {
5358       if (!breakpoint_enabled (b))
5359         continue;
5360
5361       for (bp_location *bl : b->locations ())
5362         {
5363           /* For hardware watchpoints, we look only at the first
5364              location.  The watchpoint_check function will work on the
5365              entire expression, not the individual locations.  For
5366              read watchpoints, the watchpoints_triggered function has
5367              checked all locations already.  */
5368           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5369             break;
5370
5371           if (!bl->enabled || bl->disabled_by_cond || bl->shlib_disabled)
5372             continue;
5373
5374           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5375             continue;
5376
5377           /* Come here if it's a watchpoint, or if the break address
5378              matches.  */
5379
5380           bpstat *bs = new bpstat (bl, &bs_link);       /* Alloc a bpstat to
5381                                                            explain stop.  */
5382
5383           /* Assume we stop.  Should we find a watchpoint that is not
5384              actually triggered, or if the condition of the breakpoint
5385              evaluates as false, we'll reset 'stop' to 0.  */
5386           bs->stop = 1;
5387           bs->print = 1;
5388
5389           /* If this is a scope breakpoint, mark the associated
5390              watchpoint as triggered so that we will handle the
5391              out-of-scope event.  We'll get to the watchpoint next
5392              iteration.  */
5393           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5394             {
5395               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5396
5397               w->watchpoint_triggered = watch_triggered_yes;
5398             }
5399         }
5400     }
5401
5402   /* Check if a moribund breakpoint explains the stop.  */
5403   if (!target_supports_stopped_by_sw_breakpoint ()
5404       || !target_supports_stopped_by_hw_breakpoint ())
5405     {
5406       for (bp_location *loc : moribund_locations)
5407         {
5408           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5409               && need_moribund_for_location_type (loc))
5410             {
5411               bpstat *bs = new bpstat (loc, &bs_link);
5412               /* For hits of moribund locations, we should just proceed.  */
5413               bs->stop = 0;
5414               bs->print = 0;
5415               bs->print_it = print_it_noop;
5416             }
5417         }
5418     }
5419
5420   return bs_head;
5421 }
5422
5423 /* See breakpoint.h.  */
5424
5425 bpstat *
5426 bpstat_stop_status (const address_space *aspace,
5427                     CORE_ADDR bp_addr, thread_info *thread,
5428                     const target_waitstatus &ws,
5429                     bpstat *stop_chain)
5430 {
5431   struct breakpoint *b = NULL;
5432   /* First item of allocated bpstat's.  */
5433   bpstat *bs_head = stop_chain;
5434   bpstat *bs;
5435   int need_remove_insert;
5436   int removed_any;
5437
5438   /* First, build the bpstat chain with locations that explain a
5439      target stop, while being careful to not set the target running,
5440      as that may invalidate locations (in particular watchpoint
5441      locations are recreated).  Resuming will happen here with
5442      breakpoint conditions or watchpoint expressions that include
5443      inferior function calls.  */
5444   if (bs_head == NULL)
5445     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5446
5447   /* A bit of special processing for shlib breakpoints.  We need to
5448      process solib loading here, so that the lists of loaded and
5449      unloaded libraries are correct before we handle "catch load" and
5450      "catch unload".  */
5451   for (bs = bs_head; bs != NULL; bs = bs->next)
5452     {
5453       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5454         {
5455           handle_solib_event ();
5456           break;
5457         }
5458     }
5459
5460   /* Now go through the locations that caused the target to stop, and
5461      check whether we're interested in reporting this stop to higher
5462      layers, or whether we should resume the target transparently.  */
5463
5464   removed_any = 0;
5465
5466   for (bs = bs_head; bs != NULL; bs = bs->next)
5467     {
5468       if (!bs->stop)
5469         continue;
5470
5471       b = bs->breakpoint_at;
5472       b->ops->check_status (bs);
5473       if (bs->stop)
5474         {
5475           bpstat_check_breakpoint_conditions (bs, thread);
5476
5477           if (bs->stop)
5478             {
5479               ++(b->hit_count);
5480
5481               /* We will stop here.  */
5482               if (b->disposition == disp_disable)
5483                 {
5484                   --(b->enable_count);
5485                   if (b->enable_count <= 0)
5486                     b->enable_state = bp_disabled;
5487                   removed_any = 1;
5488                 }
5489               gdb::observers::breakpoint_modified.notify (b);
5490               if (b->silent)
5491                 bs->print = 0;
5492               bs->commands = b->commands;
5493               if (command_line_is_silent (bs->commands
5494                                           ? bs->commands.get () : NULL))
5495                 bs->print = 0;
5496
5497               b->ops->after_condition_true (bs);
5498             }
5499
5500         }
5501
5502       /* Print nothing for this entry if we don't stop or don't
5503          print.  */
5504       if (!bs->stop || !bs->print)
5505         bs->print_it = print_it_noop;
5506     }
5507
5508   /* If we aren't stopping, the value of some hardware watchpoint may
5509      not have changed, but the intermediate memory locations we are
5510      watching may have.  Don't bother if we're stopping; this will get
5511      done later.  */
5512   need_remove_insert = 0;
5513   if (! bpstat_causes_stop (bs_head))
5514     for (bs = bs_head; bs != NULL; bs = bs->next)
5515       if (!bs->stop
5516           && bs->breakpoint_at
5517           && is_hardware_watchpoint (bs->breakpoint_at))
5518         {
5519           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5520
5521           update_watchpoint (w, 0 /* don't reparse.  */);
5522           need_remove_insert = 1;
5523         }
5524
5525   if (need_remove_insert)
5526     update_global_location_list (UGLL_MAY_INSERT);
5527   else if (removed_any)
5528     update_global_location_list (UGLL_DONT_INSERT);
5529
5530   return bs_head;
5531 }
5532
5533 static void
5534 handle_jit_event (CORE_ADDR address)
5535 {
5536   struct gdbarch *gdbarch;
5537
5538   infrun_debug_printf ("handling bp_jit_event");
5539
5540   /* Switch terminal for any messages produced by
5541      breakpoint_re_set.  */
5542   target_terminal::ours_for_output ();
5543
5544   gdbarch = get_frame_arch (get_current_frame ());
5545   /* This event is caused by a breakpoint set in `jit_breakpoint_re_set`,
5546      thus it is expected that its objectfile can be found through
5547      minimal symbol lookup.  If it doesn't work (and assert fails), it
5548      most likely means that `jit_breakpoint_re_set` was changes and this
5549      function needs to be updated too.  */
5550   bound_minimal_symbol jit_bp_sym = lookup_minimal_symbol_by_pc (address);
5551   gdb_assert (jit_bp_sym.objfile != nullptr);
5552   jit_event_handler (gdbarch, jit_bp_sym.objfile);
5553
5554   target_terminal::inferior ();
5555 }
5556
5557 /* Prepare WHAT final decision for infrun.  */
5558
5559 /* Decide what infrun needs to do with this bpstat.  */
5560
5561 struct bpstat_what
5562 bpstat_what (bpstat *bs_head)
5563 {
5564   struct bpstat_what retval;
5565   bpstat *bs;
5566
5567   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5568   retval.call_dummy = STOP_NONE;
5569   retval.is_longjmp = false;
5570
5571   for (bs = bs_head; bs != NULL; bs = bs->next)
5572     {
5573       /* Extract this BS's action.  After processing each BS, we check
5574          if its action overrides all we've seem so far.  */
5575       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5576       enum bptype bptype;
5577
5578       if (bs->breakpoint_at == NULL)
5579         {
5580           /* I suspect this can happen if it was a momentary
5581              breakpoint which has since been deleted.  */
5582           bptype = bp_none;
5583         }
5584       else
5585         bptype = bs->breakpoint_at->type;
5586
5587       switch (bptype)
5588         {
5589         case bp_none:
5590           break;
5591         case bp_breakpoint:
5592         case bp_hardware_breakpoint:
5593         case bp_single_step:
5594         case bp_until:
5595         case bp_finish:
5596         case bp_shlib_event:
5597           if (bs->stop)
5598             {
5599               if (bs->print)
5600                 this_action = BPSTAT_WHAT_STOP_NOISY;
5601               else
5602                 this_action = BPSTAT_WHAT_STOP_SILENT;
5603             }
5604           else
5605             this_action = BPSTAT_WHAT_SINGLE;
5606           break;
5607         case bp_watchpoint:
5608         case bp_hardware_watchpoint:
5609         case bp_read_watchpoint:
5610         case bp_access_watchpoint:
5611           if (bs->stop)
5612             {
5613               if (bs->print)
5614                 this_action = BPSTAT_WHAT_STOP_NOISY;
5615               else
5616                 this_action = BPSTAT_WHAT_STOP_SILENT;
5617             }
5618           else
5619             {
5620               /* There was a watchpoint, but we're not stopping.
5621                  This requires no further action.  */
5622             }
5623           break;
5624         case bp_longjmp:
5625         case bp_longjmp_call_dummy:
5626         case bp_exception:
5627           if (bs->stop)
5628             {
5629               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5630               retval.is_longjmp = bptype != bp_exception;
5631             }
5632           else
5633             this_action = BPSTAT_WHAT_SINGLE;
5634           break;
5635         case bp_longjmp_resume:
5636         case bp_exception_resume:
5637           if (bs->stop)
5638             {
5639               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5640               retval.is_longjmp = bptype == bp_longjmp_resume;
5641             }
5642           else
5643             this_action = BPSTAT_WHAT_SINGLE;
5644           break;
5645         case bp_step_resume:
5646           if (bs->stop)
5647             this_action = BPSTAT_WHAT_STEP_RESUME;
5648           else
5649             {
5650               /* It is for the wrong frame.  */
5651               this_action = BPSTAT_WHAT_SINGLE;
5652             }
5653           break;
5654         case bp_hp_step_resume:
5655           if (bs->stop)
5656             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5657           else
5658             {
5659               /* It is for the wrong frame.  */
5660               this_action = BPSTAT_WHAT_SINGLE;
5661             }
5662           break;
5663         case bp_watchpoint_scope:
5664         case bp_thread_event:
5665         case bp_overlay_event:
5666         case bp_longjmp_master:
5667         case bp_std_terminate_master:
5668         case bp_exception_master:
5669           this_action = BPSTAT_WHAT_SINGLE;
5670           break;
5671         case bp_catchpoint:
5672           if (bs->stop)
5673             {
5674               if (bs->print)
5675                 this_action = BPSTAT_WHAT_STOP_NOISY;
5676               else
5677                 this_action = BPSTAT_WHAT_STOP_SILENT;
5678             }
5679           else
5680             {
5681               /* Some catchpoints are implemented with breakpoints.
5682                  For those, we need to step over the breakpoint.  */
5683               if (bs->bp_location_at->loc_type != bp_loc_other)
5684                 this_action = BPSTAT_WHAT_SINGLE;
5685             }
5686           break;
5687         case bp_jit_event:
5688           this_action = BPSTAT_WHAT_SINGLE;
5689           break;
5690         case bp_call_dummy:
5691           /* Make sure the action is stop (silent or noisy),
5692              so infrun.c pops the dummy frame.  */
5693           retval.call_dummy = STOP_STACK_DUMMY;
5694           this_action = BPSTAT_WHAT_STOP_SILENT;
5695           break;
5696         case bp_std_terminate:
5697           /* Make sure the action is stop (silent or noisy),
5698              so infrun.c pops the dummy frame.  */
5699           retval.call_dummy = STOP_STD_TERMINATE;
5700           this_action = BPSTAT_WHAT_STOP_SILENT;
5701           break;
5702         case bp_tracepoint:
5703         case bp_fast_tracepoint:
5704         case bp_static_tracepoint:
5705           /* Tracepoint hits should not be reported back to GDB, and
5706              if one got through somehow, it should have been filtered
5707              out already.  */
5708           internal_error (__FILE__, __LINE__,
5709                           _("bpstat_what: tracepoint encountered"));
5710           break;
5711         case bp_gnu_ifunc_resolver:
5712           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5713           this_action = BPSTAT_WHAT_SINGLE;
5714           break;
5715         case bp_gnu_ifunc_resolver_return:
5716           /* The breakpoint will be removed, execution will restart from the
5717              PC of the former breakpoint.  */
5718           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5719           break;
5720
5721         case bp_dprintf:
5722           if (bs->stop)
5723             this_action = BPSTAT_WHAT_STOP_SILENT;
5724           else
5725             this_action = BPSTAT_WHAT_SINGLE;
5726           break;
5727
5728         default:
5729           internal_error (__FILE__, __LINE__,
5730                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5731         }
5732
5733       retval.main_action = std::max (retval.main_action, this_action);
5734     }
5735
5736   return retval;
5737 }
5738
5739 void
5740 bpstat_run_callbacks (bpstat *bs_head)
5741 {
5742   bpstat *bs;
5743
5744   for (bs = bs_head; bs != NULL; bs = bs->next)
5745     {
5746       struct breakpoint *b = bs->breakpoint_at;
5747
5748       if (b == NULL)
5749         continue;
5750       switch (b->type)
5751         {
5752         case bp_jit_event:
5753           handle_jit_event (bs->bp_location_at->address);
5754           break;
5755         case bp_gnu_ifunc_resolver:
5756           gnu_ifunc_resolver_stop (b);
5757           break;
5758         case bp_gnu_ifunc_resolver_return:
5759           gnu_ifunc_resolver_return_stop (b);
5760           break;
5761         }
5762     }
5763 }
5764
5765 /* See breakpoint.h.  */
5766
5767 bool
5768 bpstat_should_step ()
5769 {
5770   for (breakpoint *b : all_breakpoints ())
5771     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5772       return true;
5773
5774   return false;
5775 }
5776
5777 /* See breakpoint.h.  */
5778
5779 bool
5780 bpstat_causes_stop (bpstat *bs)
5781 {
5782   for (; bs != NULL; bs = bs->next)
5783     if (bs->stop)
5784       return true;
5785
5786   return false;
5787 }
5788
5789 \f
5790
5791 /* Compute a number of spaces suitable to indent the next line
5792    so it starts at the position corresponding to the table column
5793    named COL_NAME in the currently active table of UIOUT.  */
5794
5795 static int
5796 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5797 {
5798   int i, total_width, width, align;
5799   const char *text;
5800
5801   total_width = 0;
5802   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5803     {
5804       if (strcmp (text, col_name) == 0)
5805         return total_width;
5806
5807       total_width += width + 1;
5808     }
5809
5810   return 0;
5811 }
5812
5813 /* Determine if the locations of this breakpoint will have their conditions
5814    evaluated by the target, host or a mix of both.  Returns the following:
5815
5816     "host": Host evals condition.
5817     "host or target": Host or Target evals condition.
5818     "target": Target evals condition.
5819 */
5820
5821 static const char *
5822 bp_condition_evaluator (struct breakpoint *b)
5823 {
5824   char host_evals = 0;
5825   char target_evals = 0;
5826
5827   if (!b)
5828     return NULL;
5829
5830   if (!is_breakpoint (b))
5831     return NULL;
5832
5833   if (gdb_evaluates_breakpoint_condition_p ()
5834       || !target_supports_evaluation_of_breakpoint_conditions ())
5835     return condition_evaluation_host;
5836
5837   for (bp_location *bl : b->locations ())
5838     {
5839       if (bl->cond_bytecode)
5840         target_evals++;
5841       else
5842         host_evals++;
5843     }
5844
5845   if (host_evals && target_evals)
5846     return condition_evaluation_both;
5847   else if (target_evals)
5848     return condition_evaluation_target;
5849   else
5850     return condition_evaluation_host;
5851 }
5852
5853 /* Determine the breakpoint location's condition evaluator.  This is
5854    similar to bp_condition_evaluator, but for locations.  */
5855
5856 static const char *
5857 bp_location_condition_evaluator (struct bp_location *bl)
5858 {
5859   if (bl && !is_breakpoint (bl->owner))
5860     return NULL;
5861
5862   if (gdb_evaluates_breakpoint_condition_p ()
5863       || !target_supports_evaluation_of_breakpoint_conditions ())
5864     return condition_evaluation_host;
5865
5866   if (bl && bl->cond_bytecode)
5867     return condition_evaluation_target;
5868   else
5869     return condition_evaluation_host;
5870 }
5871
5872 /* Print the LOC location out of the list of B->LOC locations.  */
5873
5874 static void
5875 print_breakpoint_location (struct breakpoint *b,
5876                            struct bp_location *loc)
5877 {
5878   struct ui_out *uiout = current_uiout;
5879
5880   scoped_restore_current_program_space restore_pspace;
5881
5882   if (loc != NULL && loc->shlib_disabled)
5883     loc = NULL;
5884
5885   if (loc != NULL)
5886     set_current_program_space (loc->pspace);
5887
5888   if (b->display_canonical)
5889     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5890   else if (loc && loc->symtab)
5891     {
5892       const struct symbol *sym = loc->symbol;
5893
5894       if (sym)
5895         {
5896           uiout->text ("in ");
5897           uiout->field_string ("func", sym->print_name (),
5898                                function_name_style.style ());
5899           uiout->text (" ");
5900           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5901           uiout->text ("at ");
5902         }
5903       uiout->field_string ("file",
5904                            symtab_to_filename_for_display (loc->symtab),
5905                            file_name_style.style ());
5906       uiout->text (":");
5907
5908       if (uiout->is_mi_like_p ())
5909         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5910       
5911       uiout->field_signed ("line", loc->line_number);
5912     }
5913   else if (loc)
5914     {
5915       string_file stb;
5916
5917       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5918                               demangle, "");
5919       uiout->field_stream ("at", stb);
5920     }
5921   else
5922     {
5923       uiout->field_string ("pending",
5924                            event_location_to_string (b->location.get ()));
5925       /* If extra_string is available, it could be holding a condition
5926          or dprintf arguments.  In either case, make sure it is printed,
5927          too, but only for non-MI streams.  */
5928       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5929         {
5930           if (b->type == bp_dprintf)
5931             uiout->text (",");
5932           else
5933             uiout->text (" ");
5934           uiout->text (b->extra_string.get ());
5935         }
5936     }
5937
5938   if (loc && is_breakpoint (b)
5939       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5940       && bp_condition_evaluator (b) == condition_evaluation_both)
5941     {
5942       uiout->text (" (");
5943       uiout->field_string ("evaluated-by",
5944                            bp_location_condition_evaluator (loc));
5945       uiout->text (")");
5946     }
5947 }
5948
5949 static const char *
5950 bptype_string (enum bptype type)
5951 {
5952   struct ep_type_description
5953     {
5954       enum bptype type;
5955       const char *description;
5956     };
5957   static struct ep_type_description bptypes[] =
5958   {
5959     {bp_none, "?deleted?"},
5960     {bp_breakpoint, "breakpoint"},
5961     {bp_hardware_breakpoint, "hw breakpoint"},
5962     {bp_single_step, "sw single-step"},
5963     {bp_until, "until"},
5964     {bp_finish, "finish"},
5965     {bp_watchpoint, "watchpoint"},
5966     {bp_hardware_watchpoint, "hw watchpoint"},
5967     {bp_read_watchpoint, "read watchpoint"},
5968     {bp_access_watchpoint, "acc watchpoint"},
5969     {bp_longjmp, "longjmp"},
5970     {bp_longjmp_resume, "longjmp resume"},
5971     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5972     {bp_exception, "exception"},
5973     {bp_exception_resume, "exception resume"},
5974     {bp_step_resume, "step resume"},
5975     {bp_hp_step_resume, "high-priority step resume"},
5976     {bp_watchpoint_scope, "watchpoint scope"},
5977     {bp_call_dummy, "call dummy"},
5978     {bp_std_terminate, "std::terminate"},
5979     {bp_shlib_event, "shlib events"},
5980     {bp_thread_event, "thread events"},
5981     {bp_overlay_event, "overlay events"},
5982     {bp_longjmp_master, "longjmp master"},
5983     {bp_std_terminate_master, "std::terminate master"},
5984     {bp_exception_master, "exception master"},
5985     {bp_catchpoint, "catchpoint"},
5986     {bp_tracepoint, "tracepoint"},
5987     {bp_fast_tracepoint, "fast tracepoint"},
5988     {bp_static_tracepoint, "static tracepoint"},
5989     {bp_dprintf, "dprintf"},
5990     {bp_jit_event, "jit events"},
5991     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5992     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5993   };
5994
5995   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5996       || ((int) type != bptypes[(int) type].type))
5997     internal_error (__FILE__, __LINE__,
5998                     _("bptypes table does not describe type #%d."),
5999                     (int) type);
6000
6001   return bptypes[(int) type].description;
6002 }
6003
6004 /* For MI, output a field named 'thread-groups' with a list as the value.
6005    For CLI, prefix the list with the string 'inf'. */
6006
6007 static void
6008 output_thread_groups (struct ui_out *uiout,
6009                       const char *field_name,
6010                       const std::vector<int> &inf_nums,
6011                       int mi_only)
6012 {
6013   int is_mi = uiout->is_mi_like_p ();
6014
6015   /* For backward compatibility, don't display inferiors in CLI unless
6016      there are several.  Always display them for MI. */
6017   if (!is_mi && mi_only)
6018     return;
6019
6020   ui_out_emit_list list_emitter (uiout, field_name);
6021
6022   for (size_t i = 0; i < inf_nums.size (); i++)
6023     {
6024       if (is_mi)
6025         {
6026           char mi_group[10];
6027
6028           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
6029           uiout->field_string (NULL, mi_group);
6030         }
6031       else
6032         {
6033           if (i == 0)
6034             uiout->text (" inf ");
6035           else
6036             uiout->text (", ");
6037         
6038           uiout->text (plongest (inf_nums[i]));
6039         }
6040     }
6041 }
6042
6043 /* Print B to gdb_stdout.  If RAW_LOC, print raw breakpoint locations
6044    instead of going via breakpoint_ops::print_one.  This makes "maint
6045    info breakpoints" show the software breakpoint locations of
6046    catchpoints, which are considered internal implementation
6047    detail.  */
6048
6049 static void
6050 print_one_breakpoint_location (struct breakpoint *b,
6051                                struct bp_location *loc,
6052                                int loc_number,
6053                                struct bp_location **last_loc,
6054                                int allflag, bool raw_loc)
6055 {
6056   struct command_line *l;
6057   static char bpenables[] = "nynny";
6058
6059   struct ui_out *uiout = current_uiout;
6060   int header_of_multiple = 0;
6061   int part_of_multiple = (loc != NULL);
6062   struct value_print_options opts;
6063
6064   get_user_print_options (&opts);
6065
6066   gdb_assert (!loc || loc_number != 0);
6067   /* See comment in print_one_breakpoint concerning treatment of
6068      breakpoints with single disabled location.  */
6069   if (loc == NULL 
6070       && (b->loc != NULL 
6071           && (b->loc->next != NULL
6072               || !b->loc->enabled || b->loc->disabled_by_cond)))
6073     header_of_multiple = 1;
6074   if (loc == NULL)
6075     loc = b->loc;
6076
6077   annotate_record ();
6078
6079   /* 1 */
6080   annotate_field (0);
6081   if (part_of_multiple)
6082     uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6083   else
6084     uiout->field_signed ("number", b->number);
6085
6086   /* 2 */
6087   annotate_field (1);
6088   if (part_of_multiple)
6089     uiout->field_skip ("type");
6090   else
6091     uiout->field_string ("type", bptype_string (b->type));
6092
6093   /* 3 */
6094   annotate_field (2);
6095   if (part_of_multiple)
6096     uiout->field_skip ("disp");
6097   else
6098     uiout->field_string ("disp", bpdisp_text (b->disposition));
6099
6100   /* 4 */
6101   annotate_field (3);
6102   /* For locations that are disabled because of an invalid condition,
6103      display "N*" on CLI, where "*" refers to a footnote below the
6104      table.  For MI, simply display a "N" without a footnote.  */
6105   const char *N = (uiout->is_mi_like_p ()) ? "N" : "N*";
6106   if (part_of_multiple)
6107     uiout->field_string ("enabled", (loc->disabled_by_cond ? N
6108                                      : (loc->enabled ? "y" : "n")));
6109   else
6110     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6111
6112   /* 5 and 6 */
6113   if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
6114     b->ops->print_one (b, last_loc);
6115   else
6116     {
6117       if (is_watchpoint (b))
6118         {
6119           struct watchpoint *w = (struct watchpoint *) b;
6120
6121           /* Field 4, the address, is omitted (which makes the columns
6122              not line up too nicely with the headers, but the effect
6123              is relatively readable).  */
6124           if (opts.addressprint)
6125             uiout->field_skip ("addr");
6126           annotate_field (5);
6127           uiout->field_string ("what", w->exp_string.get ());
6128         }
6129       else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6130                || is_ada_exception_catchpoint (b))
6131         {
6132           if (opts.addressprint)
6133             {
6134               annotate_field (4);
6135               if (header_of_multiple)
6136                 uiout->field_string ("addr", "<MULTIPLE>",
6137                                      metadata_style.style ());
6138               else if (b->loc == NULL || loc->shlib_disabled)
6139                 uiout->field_string ("addr", "<PENDING>",
6140                                      metadata_style.style ());
6141               else
6142                 uiout->field_core_addr ("addr",
6143                                         loc->gdbarch, loc->address);
6144             }
6145           annotate_field (5);
6146           if (!header_of_multiple)
6147             print_breakpoint_location (b, loc);
6148           if (b->loc)
6149             *last_loc = b->loc;
6150         }
6151     }
6152
6153   if (loc != NULL && !header_of_multiple)
6154     {
6155       std::vector<int> inf_nums;
6156       int mi_only = 1;
6157
6158       for (inferior *inf : all_inferiors ())
6159         {
6160           if (inf->pspace == loc->pspace)
6161             inf_nums.push_back (inf->num);
6162         }
6163
6164         /* For backward compatibility, don't display inferiors in CLI unless
6165            there are several.  Always display for MI. */
6166         if (allflag
6167             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6168                 && (program_spaces.size () > 1
6169                     || number_of_inferiors () > 1)
6170                 /* LOC is for existing B, it cannot be in
6171                    moribund_locations and thus having NULL OWNER.  */
6172                 && loc->owner->type != bp_catchpoint))
6173         mi_only = 0;
6174       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6175     }
6176
6177   if (!part_of_multiple)
6178     {
6179       if (b->thread != -1)
6180         {
6181           /* FIXME: This seems to be redundant and lost here; see the
6182              "stop only in" line a little further down.  */
6183           uiout->text (" thread ");
6184           uiout->field_signed ("thread", b->thread);
6185         }
6186       else if (b->task != 0)
6187         {
6188           uiout->text (" task ");
6189           uiout->field_signed ("task", b->task);
6190         }
6191     }
6192
6193   uiout->text ("\n");
6194
6195   if (!part_of_multiple)
6196     b->ops->print_one_detail (b, uiout);
6197
6198   if (part_of_multiple && frame_id_p (b->frame_id))
6199     {
6200       annotate_field (6);
6201       uiout->text ("\tstop only in stack frame at ");
6202       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6203          the frame ID.  */
6204       uiout->field_core_addr ("frame",
6205                               b->gdbarch, b->frame_id.stack_addr);
6206       uiout->text ("\n");
6207     }
6208   
6209   if (!part_of_multiple && b->cond_string)
6210     {
6211       annotate_field (7);
6212       if (is_tracepoint (b))
6213         uiout->text ("\ttrace only if ");
6214       else
6215         uiout->text ("\tstop only if ");
6216       uiout->field_string ("cond", b->cond_string.get ());
6217
6218       /* Print whether the target is doing the breakpoint's condition
6219          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6220       if (is_breakpoint (b)
6221           && breakpoint_condition_evaluation_mode ()
6222           == condition_evaluation_target)
6223         {
6224           uiout->message (" (%pF evals)",
6225                           string_field ("evaluated-by",
6226                                         bp_condition_evaluator (b)));
6227         }
6228       uiout->text ("\n");
6229     }
6230
6231   if (!part_of_multiple && b->thread != -1)
6232     {
6233       /* FIXME should make an annotation for this.  */
6234       uiout->text ("\tstop only in thread ");
6235       if (uiout->is_mi_like_p ())
6236         uiout->field_signed ("thread", b->thread);
6237       else
6238         {
6239           struct thread_info *thr = find_thread_global_id (b->thread);
6240
6241           uiout->field_string ("thread", print_thread_id (thr));
6242         }
6243       uiout->text ("\n");
6244     }
6245   
6246   if (!part_of_multiple)
6247     {
6248       if (b->hit_count)
6249         {
6250           /* FIXME should make an annotation for this.  */
6251           if (is_catchpoint (b))
6252             uiout->text ("\tcatchpoint");
6253           else if (is_tracepoint (b))
6254             uiout->text ("\ttracepoint");
6255           else
6256             uiout->text ("\tbreakpoint");
6257           uiout->text (" already hit ");
6258           uiout->field_signed ("times", b->hit_count);
6259           if (b->hit_count == 1)
6260             uiout->text (" time\n");
6261           else
6262             uiout->text (" times\n");
6263         }
6264       else
6265         {
6266           /* Output the count also if it is zero, but only if this is mi.  */
6267           if (uiout->is_mi_like_p ())
6268             uiout->field_signed ("times", b->hit_count);
6269         }
6270     }
6271
6272   if (!part_of_multiple && b->ignore_count)
6273     {
6274       annotate_field (8);
6275       uiout->message ("\tignore next %pF hits\n",
6276                       signed_field ("ignore", b->ignore_count));
6277     }
6278
6279   /* Note that an enable count of 1 corresponds to "enable once"
6280      behavior, which is reported by the combination of enablement and
6281      disposition, so we don't need to mention it here.  */
6282   if (!part_of_multiple && b->enable_count > 1)
6283     {
6284       annotate_field (8);
6285       uiout->text ("\tdisable after ");
6286       /* Tweak the wording to clarify that ignore and enable counts
6287          are distinct, and have additive effect.  */
6288       if (b->ignore_count)
6289         uiout->text ("additional ");
6290       else
6291         uiout->text ("next ");
6292       uiout->field_signed ("enable", b->enable_count);
6293       uiout->text (" hits\n");
6294     }
6295
6296   if (!part_of_multiple && is_tracepoint (b))
6297     {
6298       struct tracepoint *tp = (struct tracepoint *) b;
6299
6300       if (tp->traceframe_usage)
6301         {
6302           uiout->text ("\ttrace buffer usage ");
6303           uiout->field_signed ("traceframe-usage", tp->traceframe_usage);
6304           uiout->text (" bytes\n");
6305         }
6306     }
6307
6308   l = b->commands ? b->commands.get () : NULL;
6309   if (!part_of_multiple && l)
6310     {
6311       annotate_field (9);
6312       ui_out_emit_tuple tuple_emitter (uiout, "script");
6313       print_command_lines (uiout, l, 4);
6314     }
6315
6316   if (is_tracepoint (b))
6317     {
6318       struct tracepoint *t = (struct tracepoint *) b;
6319
6320       if (!part_of_multiple && t->pass_count)
6321         {
6322           annotate_field (10);
6323           uiout->text ("\tpass count ");
6324           uiout->field_signed ("pass", t->pass_count);
6325           uiout->text (" \n");
6326         }
6327
6328       /* Don't display it when tracepoint or tracepoint location is
6329          pending.   */
6330       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6331         {
6332           annotate_field (11);
6333
6334           if (uiout->is_mi_like_p ())
6335             uiout->field_string ("installed",
6336                                  loc->inserted ? "y" : "n");
6337           else
6338             {
6339               if (loc->inserted)
6340                 uiout->text ("\t");
6341               else
6342                 uiout->text ("\tnot ");
6343               uiout->text ("installed on target\n");
6344             }
6345         }
6346     }
6347
6348   if (uiout->is_mi_like_p () && !part_of_multiple)
6349     {
6350       if (is_watchpoint (b))
6351         {
6352           struct watchpoint *w = (struct watchpoint *) b;
6353
6354           uiout->field_string ("original-location", w->exp_string.get ());
6355         }
6356       else if (b->location != NULL
6357                && event_location_to_string (b->location.get ()) != NULL)
6358         uiout->field_string ("original-location",
6359                              event_location_to_string (b->location.get ()));
6360     }
6361 }
6362
6363 /* See breakpoint.h. */
6364
6365 bool fix_multi_location_breakpoint_output_globally = false;
6366
6367 static void
6368 print_one_breakpoint (struct breakpoint *b,
6369                       struct bp_location **last_loc, 
6370                       int allflag)
6371 {
6372   struct ui_out *uiout = current_uiout;
6373   bool use_fixed_output
6374     = (uiout->test_flags (fix_multi_location_breakpoint_output)
6375        || fix_multi_location_breakpoint_output_globally);
6376
6377   gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6378   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
6379
6380   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6381      are outside.  */
6382   if (!use_fixed_output)
6383     bkpt_tuple_emitter.reset ();
6384
6385   /* If this breakpoint has custom print function,
6386      it's already printed.  Otherwise, print individual
6387      locations, if any.  */
6388   if (b->ops == NULL
6389       || b->ops->print_one == NULL
6390       || allflag)
6391     {
6392       /* If breakpoint has a single location that is disabled, we
6393          print it as if it had several locations, since otherwise it's
6394          hard to represent "breakpoint enabled, location disabled"
6395          situation.
6396
6397          Note that while hardware watchpoints have several locations
6398          internally, that's not a property exposed to users.
6399
6400          Likewise, while catchpoints may be implemented with
6401          breakpoints (e.g., catch throw), that's not a property
6402          exposed to users.  We do however display the internal
6403          breakpoint locations with "maint info breakpoints".  */
6404       if (!is_hardware_watchpoint (b)
6405           && (!is_catchpoint (b) || is_exception_catchpoint (b)
6406               || is_ada_exception_catchpoint (b))
6407           && (allflag
6408               || (b->loc && (b->loc->next
6409                              || !b->loc->enabled
6410                              || b->loc->disabled_by_cond))))
6411         {
6412           gdb::optional<ui_out_emit_list> locations_list;
6413
6414           /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6415              MI record.  For later versions, place breakpoint locations in a
6416              list.  */
6417           if (uiout->is_mi_like_p () && use_fixed_output)
6418             locations_list.emplace (uiout, "locations");
6419
6420           int n = 1;
6421           for (bp_location *loc : b->locations ())
6422             {
6423               ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6424               print_one_breakpoint_location (b, loc, n, last_loc,
6425                                              allflag, allflag);
6426               n++;
6427             }
6428         }
6429     }
6430 }
6431
6432 static int
6433 breakpoint_address_bits (struct breakpoint *b)
6434 {
6435   int print_address_bits = 0;
6436
6437   /* Software watchpoints that aren't watching memory don't have an
6438      address to print.  */
6439   if (is_no_memory_software_watchpoint (b))
6440     return 0;
6441
6442   for (bp_location *loc : b->locations ())
6443     {
6444       int addr_bit;
6445
6446       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6447       if (addr_bit > print_address_bits)
6448         print_address_bits = addr_bit;
6449     }
6450
6451   return print_address_bits;
6452 }
6453
6454 /* See breakpoint.h.  */
6455
6456 void
6457 print_breakpoint (breakpoint *b)
6458 {
6459   struct bp_location *dummy_loc = NULL;
6460   print_one_breakpoint (b, &dummy_loc, 0);
6461 }
6462
6463 /* Return true if this breakpoint was set by the user, false if it is
6464    internal or momentary.  */
6465
6466 int
6467 user_breakpoint_p (struct breakpoint *b)
6468 {
6469   return b->number > 0;
6470 }
6471
6472 /* See breakpoint.h.  */
6473
6474 int
6475 pending_breakpoint_p (struct breakpoint *b)
6476 {
6477   return b->loc == NULL;
6478 }
6479
6480 /* Print information on breakpoints (including watchpoints and tracepoints).
6481
6482    If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6483    understood by number_or_range_parser.  Only breakpoints included in this
6484    list are then printed.
6485
6486    If SHOW_INTERNAL is true, print internal breakpoints.
6487
6488    If FILTER is non-NULL, call it on each breakpoint and only include the
6489    ones for which it returns true.
6490
6491    Return the total number of breakpoints listed.  */
6492
6493 static int
6494 breakpoint_1 (const char *bp_num_list, bool show_internal,
6495               bool (*filter) (const struct breakpoint *))
6496 {
6497   struct bp_location *last_loc = NULL;
6498   int nr_printable_breakpoints;
6499   struct value_print_options opts;
6500   int print_address_bits = 0;
6501   int print_type_col_width = 14;
6502   struct ui_out *uiout = current_uiout;
6503   bool has_disabled_by_cond_location = false;
6504
6505   get_user_print_options (&opts);
6506
6507   /* Compute the number of rows in the table, as well as the size
6508      required for address fields.  */
6509   nr_printable_breakpoints = 0;
6510   for (breakpoint *b : all_breakpoints ())
6511     {
6512       /* If we have a filter, only list the breakpoints it accepts.  */
6513       if (filter && !filter (b))
6514         continue;
6515
6516       /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6517          accept.  Skip the others.  */
6518       if (bp_num_list != NULL && *bp_num_list != '\0')
6519         {
6520           if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
6521             continue;
6522           if (!show_internal && !number_is_in_list (bp_num_list, b->number))
6523             continue;
6524         }
6525
6526       if (show_internal || user_breakpoint_p (b))
6527         {
6528           int addr_bit, type_len;
6529
6530           addr_bit = breakpoint_address_bits (b);
6531           if (addr_bit > print_address_bits)
6532             print_address_bits = addr_bit;
6533
6534           type_len = strlen (bptype_string (b->type));
6535           if (type_len > print_type_col_width)
6536             print_type_col_width = type_len;
6537
6538           nr_printable_breakpoints++;
6539         }
6540     }
6541
6542   {
6543     ui_out_emit_table table_emitter (uiout,
6544                                      opts.addressprint ? 6 : 5,
6545                                      nr_printable_breakpoints,
6546                                      "BreakpointTable");
6547
6548     if (nr_printable_breakpoints > 0)
6549       annotate_breakpoints_headers ();
6550     if (nr_printable_breakpoints > 0)
6551       annotate_field (0);
6552     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6553     if (nr_printable_breakpoints > 0)
6554       annotate_field (1);
6555     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6556     if (nr_printable_breakpoints > 0)
6557       annotate_field (2);
6558     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6559     if (nr_printable_breakpoints > 0)
6560       annotate_field (3);
6561     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6562     if (opts.addressprint)
6563       {
6564         if (nr_printable_breakpoints > 0)
6565           annotate_field (4);
6566         if (print_address_bits <= 32)
6567           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6568         else
6569           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6570       }
6571     if (nr_printable_breakpoints > 0)
6572       annotate_field (5);
6573     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6574     uiout->table_body ();
6575     if (nr_printable_breakpoints > 0)
6576       annotate_breakpoints_table ();
6577
6578     for (breakpoint *b : all_breakpoints ())
6579       {
6580         QUIT;
6581         /* If we have a filter, only list the breakpoints it accepts.  */
6582         if (filter && !filter (b))
6583           continue;
6584
6585         /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6586            accept.  Skip the others.  */
6587
6588         if (bp_num_list != NULL && *bp_num_list != '\0')
6589           {
6590             if (show_internal)  /* maintenance info breakpoint */
6591               {
6592                 if (parse_and_eval_long (bp_num_list) != b->number)
6593                   continue;
6594               }
6595             else                /* all others */
6596               {
6597                 if (!number_is_in_list (bp_num_list, b->number))
6598                   continue;
6599               }
6600           }
6601         /* We only print out user settable breakpoints unless the
6602            show_internal is set.  */
6603         if (show_internal || user_breakpoint_p (b))
6604           {
6605             print_one_breakpoint (b, &last_loc, show_internal);
6606             for (bp_location *loc : b->locations ())
6607               if (loc->disabled_by_cond)
6608                 has_disabled_by_cond_location = true;
6609           }
6610       }
6611   }
6612
6613   if (nr_printable_breakpoints == 0)
6614     {
6615       /* If there's a filter, let the caller decide how to report
6616          empty list.  */
6617       if (!filter)
6618         {
6619           if (bp_num_list == NULL || *bp_num_list == '\0')
6620             uiout->message ("No breakpoints or watchpoints.\n");
6621           else
6622             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6623                             bp_num_list);
6624         }
6625     }
6626   else
6627     {
6628       if (last_loc && !server_command)
6629         set_next_address (last_loc->gdbarch, last_loc->address);
6630
6631       if (has_disabled_by_cond_location && !uiout->is_mi_like_p ())
6632         uiout->message (_("(*): Breakpoint condition is invalid at this "
6633                           "location.\n"));
6634     }
6635
6636   /* FIXME?  Should this be moved up so that it is only called when
6637      there have been breakpoints? */
6638   annotate_breakpoints_table_end ();
6639
6640   return nr_printable_breakpoints;
6641 }
6642
6643 /* Display the value of default-collect in a way that is generally
6644    compatible with the breakpoint list.  */
6645
6646 static void
6647 default_collect_info (void)
6648 {
6649   struct ui_out *uiout = current_uiout;
6650
6651   /* If it has no value (which is frequently the case), say nothing; a
6652      message like "No default-collect." gets in user's face when it's
6653      not wanted.  */
6654   if (default_collect.empty ())
6655     return;
6656
6657   /* The following phrase lines up nicely with per-tracepoint collect
6658      actions.  */
6659   uiout->text ("default collect ");
6660   uiout->field_string ("default-collect", default_collect);
6661   uiout->text (" \n");
6662 }
6663   
6664 static void
6665 info_breakpoints_command (const char *args, int from_tty)
6666 {
6667   breakpoint_1 (args, false, NULL);
6668
6669   default_collect_info ();
6670 }
6671
6672 static void
6673 info_watchpoints_command (const char *args, int from_tty)
6674 {
6675   int num_printed = breakpoint_1 (args, false, is_watchpoint);
6676   struct ui_out *uiout = current_uiout;
6677
6678   if (num_printed == 0)
6679     {
6680       if (args == NULL || *args == '\0')
6681         uiout->message ("No watchpoints.\n");
6682       else
6683         uiout->message ("No watchpoint matching '%s'.\n", args);
6684     }
6685 }
6686
6687 static void
6688 maintenance_info_breakpoints (const char *args, int from_tty)
6689 {
6690   breakpoint_1 (args, true, NULL);
6691
6692   default_collect_info ();
6693 }
6694
6695 static int
6696 breakpoint_has_pc (struct breakpoint *b,
6697                    struct program_space *pspace,
6698                    CORE_ADDR pc, struct obj_section *section)
6699 {
6700   for (bp_location *bl : b->locations ())
6701     {
6702       if (bl->pspace == pspace
6703           && bl->address == pc
6704           && (!overlay_debugging || bl->section == section))
6705         return 1;         
6706     }
6707   return 0;
6708 }
6709
6710 /* Print a message describing any user-breakpoints set at PC.  This
6711    concerns with logical breakpoints, so we match program spaces, not
6712    address spaces.  */
6713
6714 static void
6715 describe_other_breakpoints (struct gdbarch *gdbarch,
6716                             struct program_space *pspace, CORE_ADDR pc,
6717                             struct obj_section *section, int thread)
6718 {
6719   int others = 0;
6720
6721   for (breakpoint *b : all_breakpoints ())
6722     others += (user_breakpoint_p (b)
6723                && breakpoint_has_pc (b, pspace, pc, section));
6724
6725   if (others > 0)
6726     {
6727       if (others == 1)
6728         printf_filtered (_("Note: breakpoint "));
6729       else /* if (others == ???) */
6730         printf_filtered (_("Note: breakpoints "));
6731       for (breakpoint *b : all_breakpoints ())
6732         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6733           {
6734             others--;
6735             printf_filtered ("%d", b->number);
6736             if (b->thread == -1 && thread != -1)
6737               printf_filtered (" (all threads)");
6738             else if (b->thread != -1)
6739               printf_filtered (" (thread %d)", b->thread);
6740             printf_filtered ("%s%s ",
6741                              ((b->enable_state == bp_disabled
6742                                || b->enable_state == bp_call_disabled)
6743                               ? " (disabled)"
6744                               : ""),
6745                              (others > 1) ? "," 
6746                              : ((others == 1) ? " and" : ""));
6747           }
6748       current_uiout->message (_("also set at pc %ps.\n"),
6749                               styled_string (address_style.style (),
6750                                              paddress (gdbarch, pc)));
6751     }
6752 }
6753 \f
6754
6755 /* Return true iff it is meaningful to use the address member of LOC.
6756    For some breakpoint types, the locations' address members are
6757    irrelevant and it makes no sense to attempt to compare them to
6758    other addresses (or use them for any other purpose either).
6759
6760    More specifically, software watchpoints and catchpoints that are
6761    not backed by breakpoints always have a zero valued location
6762    address and we don't want to mark breakpoints of any of these types
6763    to be a duplicate of an actual breakpoint location at address
6764    zero.  */
6765
6766 static bool
6767 bl_address_is_meaningful (bp_location *loc)
6768 {
6769   return loc->loc_type != bp_loc_other;
6770 }
6771
6772 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6773    true if LOC1 and LOC2 represent the same watchpoint location.  */
6774
6775 static int
6776 watchpoint_locations_match (struct bp_location *loc1, 
6777                             struct bp_location *loc2)
6778 {
6779   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6780   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6781
6782   /* Both of them must exist.  */
6783   gdb_assert (w1 != NULL);
6784   gdb_assert (w2 != NULL);
6785
6786   /* If the target can evaluate the condition expression in hardware,
6787      then we we need to insert both watchpoints even if they are at
6788      the same place.  Otherwise the watchpoint will only trigger when
6789      the condition of whichever watchpoint was inserted evaluates to
6790      true, not giving a chance for GDB to check the condition of the
6791      other watchpoint.  */
6792   if ((w1->cond_exp
6793        && target_can_accel_watchpoint_condition (loc1->address, 
6794                                                  loc1->length,
6795                                                  loc1->watchpoint_type,
6796                                                  w1->cond_exp.get ()))
6797       || (w2->cond_exp
6798           && target_can_accel_watchpoint_condition (loc2->address, 
6799                                                     loc2->length,
6800                                                     loc2->watchpoint_type,
6801                                                     w2->cond_exp.get ())))
6802     return 0;
6803
6804   /* Note that this checks the owner's type, not the location's.  In
6805      case the target does not support read watchpoints, but does
6806      support access watchpoints, we'll have bp_read_watchpoint
6807      watchpoints with hw_access locations.  Those should be considered
6808      duplicates of hw_read locations.  The hw_read locations will
6809      become hw_access locations later.  */
6810   return (loc1->owner->type == loc2->owner->type
6811           && loc1->pspace->aspace == loc2->pspace->aspace
6812           && loc1->address == loc2->address
6813           && loc1->length == loc2->length);
6814 }
6815
6816 /* See breakpoint.h.  */
6817
6818 int
6819 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6820                           const address_space *aspace2, CORE_ADDR addr2)
6821 {
6822   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6823            || aspace1 == aspace2)
6824           && addr1 == addr2);
6825 }
6826
6827 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6828    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6829    matches ASPACE2.  On targets that have global breakpoints, the address
6830    space doesn't really matter.  */
6831
6832 static int
6833 breakpoint_address_match_range (const address_space *aspace1,
6834                                 CORE_ADDR addr1,
6835                                 int len1, const address_space *aspace2,
6836                                 CORE_ADDR addr2)
6837 {
6838   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6839            || aspace1 == aspace2)
6840           && addr2 >= addr1 && addr2 < addr1 + len1);
6841 }
6842
6843 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6844    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6845    matches the breakpoint's address space.  On targets that have global
6846    breakpoints, the address space doesn't really matter.  */
6847
6848 static int
6849 breakpoint_location_address_match (struct bp_location *bl,
6850                                    const address_space *aspace,
6851                                    CORE_ADDR addr)
6852 {
6853   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6854                                     aspace, addr)
6855           || (bl->length
6856               && breakpoint_address_match_range (bl->pspace->aspace,
6857                                                  bl->address, bl->length,
6858                                                  aspace, addr)));
6859 }
6860
6861 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6862    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6863    match happens only if ASPACE matches the breakpoint's address
6864    space.  On targets that have global breakpoints, the address space
6865    doesn't really matter.  */
6866
6867 static int
6868 breakpoint_location_address_range_overlap (struct bp_location *bl,
6869                                            const address_space *aspace,
6870                                            CORE_ADDR addr, int len)
6871 {
6872   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6873       || bl->pspace->aspace == aspace)
6874     {
6875       int bl_len = bl->length != 0 ? bl->length : 1;
6876
6877       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6878         return 1;
6879     }
6880   return 0;
6881 }
6882
6883 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6884    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6885    true, otherwise returns false.  */
6886
6887 static int
6888 tracepoint_locations_match (struct bp_location *loc1,
6889                             struct bp_location *loc2)
6890 {
6891   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6892     /* Since tracepoint locations are never duplicated with others', tracepoint
6893        locations at the same address of different tracepoints are regarded as
6894        different locations.  */
6895     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6896   else
6897     return 0;
6898 }
6899
6900 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6901    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
6902    the same location.  If SW_HW_BPS_MATCH is true, then software
6903    breakpoint locations and hardware breakpoint locations match,
6904    otherwise they don't.  */
6905
6906 static int
6907 breakpoint_locations_match (struct bp_location *loc1,
6908                             struct bp_location *loc2,
6909                             bool sw_hw_bps_match)
6910 {
6911   int hw_point1, hw_point2;
6912
6913   /* Both of them must not be in moribund_locations.  */
6914   gdb_assert (loc1->owner != NULL);
6915   gdb_assert (loc2->owner != NULL);
6916
6917   hw_point1 = is_hardware_watchpoint (loc1->owner);
6918   hw_point2 = is_hardware_watchpoint (loc2->owner);
6919
6920   if (hw_point1 != hw_point2)
6921     return 0;
6922   else if (hw_point1)
6923     return watchpoint_locations_match (loc1, loc2);
6924   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6925     return tracepoint_locations_match (loc1, loc2);
6926   else
6927     /* We compare bp_location.length in order to cover ranged
6928        breakpoints.  Keep this in sync with
6929        bp_location_is_less_than.  */
6930     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6931                                      loc2->pspace->aspace, loc2->address)
6932             && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
6933             && loc1->length == loc2->length);
6934 }
6935
6936 static void
6937 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6938                                int bnum, int have_bnum)
6939 {
6940   /* The longest string possibly returned by hex_string_custom
6941      is 50 chars.  These must be at least that big for safety.  */
6942   char astr1[64];
6943   char astr2[64];
6944
6945   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6946   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6947   if (have_bnum)
6948     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6949              bnum, astr1, astr2);
6950   else
6951     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6952 }
6953
6954 /* Adjust a breakpoint's address to account for architectural
6955    constraints on breakpoint placement.  Return the adjusted address.
6956    Note: Very few targets require this kind of adjustment.  For most
6957    targets, this function is simply the identity function.  */
6958
6959 static CORE_ADDR
6960 adjust_breakpoint_address (struct gdbarch *gdbarch,
6961                            CORE_ADDR bpaddr, enum bptype bptype)
6962 {
6963   if (bptype == bp_watchpoint
6964       || bptype == bp_hardware_watchpoint
6965       || bptype == bp_read_watchpoint
6966       || bptype == bp_access_watchpoint
6967       || bptype == bp_catchpoint)
6968     {
6969       /* Watchpoints and the various bp_catch_* eventpoints should not
6970          have their addresses modified.  */
6971       return bpaddr;
6972     }
6973   else if (bptype == bp_single_step)
6974     {
6975       /* Single-step breakpoints should not have their addresses
6976          modified.  If there's any architectural constrain that
6977          applies to this address, then it should have already been
6978          taken into account when the breakpoint was created in the
6979          first place.  If we didn't do this, stepping through e.g.,
6980          Thumb-2 IT blocks would break.  */
6981       return bpaddr;
6982     }
6983   else
6984     {
6985       CORE_ADDR adjusted_bpaddr = bpaddr;
6986
6987       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6988         {
6989           /* Some targets have architectural constraints on the placement
6990              of breakpoint instructions.  Obtain the adjusted address.  */
6991           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6992         }
6993
6994       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6995
6996       /* An adjusted breakpoint address can significantly alter
6997          a user's expectations.  Print a warning if an adjustment
6998          is required.  */
6999       if (adjusted_bpaddr != bpaddr)
7000         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7001
7002       return adjusted_bpaddr;
7003     }
7004 }
7005
7006 static bp_loc_type
7007 bp_location_from_bp_type (bptype type)
7008 {
7009   switch (type)
7010     {
7011     case bp_breakpoint:
7012     case bp_single_step:
7013     case bp_until:
7014     case bp_finish:
7015     case bp_longjmp:
7016     case bp_longjmp_resume:
7017     case bp_longjmp_call_dummy:
7018     case bp_exception:
7019     case bp_exception_resume:
7020     case bp_step_resume:
7021     case bp_hp_step_resume:
7022     case bp_watchpoint_scope:
7023     case bp_call_dummy:
7024     case bp_std_terminate:
7025     case bp_shlib_event:
7026     case bp_thread_event:
7027     case bp_overlay_event:
7028     case bp_jit_event:
7029     case bp_longjmp_master:
7030     case bp_std_terminate_master:
7031     case bp_exception_master:
7032     case bp_gnu_ifunc_resolver:
7033     case bp_gnu_ifunc_resolver_return:
7034     case bp_dprintf:
7035       return bp_loc_software_breakpoint;
7036     case bp_hardware_breakpoint:
7037       return bp_loc_hardware_breakpoint;
7038     case bp_hardware_watchpoint:
7039     case bp_read_watchpoint:
7040     case bp_access_watchpoint:
7041       return bp_loc_hardware_watchpoint;
7042     case bp_watchpoint:
7043     case bp_catchpoint:
7044     case bp_tracepoint:
7045     case bp_fast_tracepoint:
7046     case bp_static_tracepoint:
7047       return bp_loc_other;
7048     default:
7049       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7050     }
7051 }
7052
7053 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
7054 {
7055   this->owner = owner;
7056   this->cond_bytecode = NULL;
7057   this->shlib_disabled = 0;
7058   this->enabled = 1;
7059   this->disabled_by_cond = false;
7060
7061   this->loc_type = type;
7062
7063   if (this->loc_type == bp_loc_software_breakpoint
7064       || this->loc_type == bp_loc_hardware_breakpoint)
7065     mark_breakpoint_location_modified (this);
7066
7067   incref ();
7068 }
7069
7070 bp_location::bp_location (breakpoint *owner)
7071   : bp_location::bp_location (owner,
7072                               bp_location_from_bp_type (owner->type))
7073 {
7074 }
7075
7076 /* Allocate a struct bp_location.  */
7077
7078 static struct bp_location *
7079 allocate_bp_location (struct breakpoint *bpt)
7080 {
7081   return bpt->ops->allocate_location (bpt);
7082 }
7083
7084 /* Decrement reference count.  If the reference count reaches 0,
7085    destroy the bp_location.  Sets *BLP to NULL.  */
7086
7087 static void
7088 decref_bp_location (struct bp_location **blp)
7089 {
7090   bp_location_ref_policy::decref (*blp);
7091   *blp = NULL;
7092 }
7093
7094 /* Add breakpoint B at the end of the global breakpoint chain.  */
7095
7096 static breakpoint *
7097 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7098 {
7099   struct breakpoint *b1;
7100   struct breakpoint *result = b.get ();
7101
7102   /* Add this breakpoint to the end of the chain so that a list of
7103      breakpoints will come out in order of increasing numbers.  */
7104
7105   b1 = breakpoint_chain;
7106   if (b1 == 0)
7107     breakpoint_chain = b.release ();
7108   else
7109     {
7110       while (b1->next)
7111         b1 = b1->next;
7112       b1->next = b.release ();
7113     }
7114
7115   return result;
7116 }
7117
7118 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7119
7120 static void
7121 init_raw_breakpoint_without_location (struct breakpoint *b,
7122                                       struct gdbarch *gdbarch,
7123                                       enum bptype bptype,
7124                                       const struct breakpoint_ops *ops)
7125 {
7126   gdb_assert (ops != NULL);
7127
7128   b->ops = ops;
7129   b->type = bptype;
7130   b->gdbarch = gdbarch;
7131   b->language = current_language->la_language;
7132   b->input_radix = input_radix;
7133   b->related_breakpoint = b;
7134 }
7135
7136 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7137    that has type BPTYPE and has no locations as yet.  */
7138
7139 static struct breakpoint *
7140 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7141                                      enum bptype bptype,
7142                                      const struct breakpoint_ops *ops)
7143 {
7144   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7145
7146   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7147   return add_to_breakpoint_chain (std::move (b));
7148 }
7149
7150 /* Initialize loc->function_name.  */
7151
7152 static void
7153 set_breakpoint_location_function (struct bp_location *loc)
7154 {
7155   gdb_assert (loc->owner != NULL);
7156
7157   if (loc->owner->type == bp_breakpoint
7158       || loc->owner->type == bp_hardware_breakpoint
7159       || is_tracepoint (loc->owner))
7160     {
7161       const char *function_name;
7162
7163       if (loc->msymbol != NULL
7164           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7165               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
7166         {
7167           struct breakpoint *b = loc->owner;
7168
7169           function_name = loc->msymbol->linkage_name ();
7170
7171           if (b->type == bp_breakpoint && b->loc == loc
7172               && loc->next == NULL && b->related_breakpoint == b)
7173             {
7174               /* Create only the whole new breakpoint of this type but do not
7175                  mess more complicated breakpoints with multiple locations.  */
7176               b->type = bp_gnu_ifunc_resolver;
7177               /* Remember the resolver's address for use by the return
7178                  breakpoint.  */
7179               loc->related_address = loc->address;
7180             }
7181         }
7182       else
7183         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7184
7185       if (function_name)
7186         loc->function_name = make_unique_xstrdup (function_name);
7187     }
7188 }
7189
7190 /* Attempt to determine architecture of location identified by SAL.  */
7191 struct gdbarch *
7192 get_sal_arch (struct symtab_and_line sal)
7193 {
7194   if (sal.section)
7195     return sal.section->objfile->arch ();
7196   if (sal.symtab)
7197     return sal.symtab->objfile ()->arch ();
7198
7199   return NULL;
7200 }
7201
7202 /* Low level routine for partially initializing a breakpoint of type
7203    BPTYPE.  The newly created breakpoint's address, section, source
7204    file name, and line number are provided by SAL.
7205
7206    It is expected that the caller will complete the initialization of
7207    the newly created breakpoint struct as well as output any status
7208    information regarding the creation of a new breakpoint.  */
7209
7210 static void
7211 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7212                      struct symtab_and_line sal, enum bptype bptype,
7213                      const struct breakpoint_ops *ops)
7214 {
7215   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7216
7217   add_location_to_breakpoint (b, &sal);
7218
7219   if (bptype != bp_catchpoint)
7220     gdb_assert (sal.pspace != NULL);
7221
7222   /* Store the program space that was used to set the breakpoint,
7223      except for ordinary breakpoints, which are independent of the
7224      program space.  */
7225   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7226     b->pspace = sal.pspace;
7227 }
7228
7229 /* set_raw_breakpoint is a low level routine for allocating and
7230    partially initializing a breakpoint of type BPTYPE.  The newly
7231    created breakpoint's address, section, source file name, and line
7232    number are provided by SAL.  The newly created and partially
7233    initialized breakpoint is added to the breakpoint chain and
7234    is also returned as the value of this function.
7235
7236    It is expected that the caller will complete the initialization of
7237    the newly created breakpoint struct as well as output any status
7238    information regarding the creation of a new breakpoint.  In
7239    particular, set_raw_breakpoint does NOT set the breakpoint
7240    number!  Care should be taken to not allow an error to occur
7241    prior to completing the initialization of the breakpoint.  If this
7242    should happen, a bogus breakpoint will be left on the chain.  */
7243
7244 static struct breakpoint *
7245 set_raw_breakpoint (struct gdbarch *gdbarch,
7246                     struct symtab_and_line sal, enum bptype bptype,
7247                     const struct breakpoint_ops *ops)
7248 {
7249   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7250
7251   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7252   return add_to_breakpoint_chain (std::move (b));
7253 }
7254
7255 /* Call this routine when stepping and nexting to enable a breakpoint
7256    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7257    initiated the operation.  */
7258
7259 void
7260 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7261 {
7262   int thread = tp->global_num;
7263
7264   /* To avoid having to rescan all objfile symbols at every step,
7265      we maintain a list of continually-inserted but always disabled
7266      longjmp "master" breakpoints.  Here, we simply create momentary
7267      clones of those and enable them for the requested thread.  */
7268   for (breakpoint *b : all_breakpoints_safe ())
7269     if (b->pspace == current_program_space
7270         && (b->type == bp_longjmp_master
7271             || b->type == bp_exception_master))
7272       {
7273         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7274         struct breakpoint *clone;
7275
7276         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7277            after their removal.  */
7278         clone = momentary_breakpoint_from_master (b, type,
7279                                                   &momentary_breakpoint_ops, 1);
7280         clone->thread = thread;
7281       }
7282
7283   tp->initiating_frame = frame;
7284 }
7285
7286 /* Delete all longjmp breakpoints from THREAD.  */
7287 void
7288 delete_longjmp_breakpoint (int thread)
7289 {
7290   for (breakpoint *b : all_breakpoints_safe ())
7291     if (b->type == bp_longjmp || b->type == bp_exception)
7292       {
7293         if (b->thread == thread)
7294           delete_breakpoint (b);
7295       }
7296 }
7297
7298 void
7299 delete_longjmp_breakpoint_at_next_stop (int thread)
7300 {
7301   for (breakpoint *b : all_breakpoints_safe ())
7302     if (b->type == bp_longjmp || b->type == bp_exception)
7303       {
7304         if (b->thread == thread)
7305           b->disposition = disp_del_at_next_stop;
7306       }
7307 }
7308
7309 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7310    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7311    pointer to any of them.  Return NULL if this system cannot place longjmp
7312    breakpoints.  */
7313
7314 struct breakpoint *
7315 set_longjmp_breakpoint_for_call_dummy (void)
7316 {
7317   breakpoint *retval = nullptr;
7318
7319   for (breakpoint *b : all_breakpoints ())
7320     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7321       {
7322         struct breakpoint *new_b;
7323
7324         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7325                                                   &momentary_breakpoint_ops,
7326                                                   1);
7327         new_b->thread = inferior_thread ()->global_num;
7328
7329         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7330
7331         gdb_assert (new_b->related_breakpoint == new_b);
7332         if (retval == NULL)
7333           retval = new_b;
7334         new_b->related_breakpoint = retval;
7335         while (retval->related_breakpoint != new_b->related_breakpoint)
7336           retval = retval->related_breakpoint;
7337         retval->related_breakpoint = new_b;
7338       }
7339
7340   return retval;
7341 }
7342
7343 /* Verify all existing dummy frames and their associated breakpoints for
7344    TP.  Remove those which can no longer be found in the current frame
7345    stack.
7346
7347    If the unwind fails then there is not sufficient information to discard
7348    dummy frames.  In this case, elide the clean up and the dummy frames will
7349    be cleaned up next time this function is called from a location where
7350    unwinding is possible.  */
7351
7352 void
7353 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7354 {
7355   struct breakpoint *b, *b_tmp;
7356
7357   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7358     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7359       {
7360         struct breakpoint *dummy_b = b->related_breakpoint;
7361
7362         /* Find the bp_call_dummy breakpoint in the list of breakpoints
7363            chained off b->related_breakpoint.  */
7364         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7365           dummy_b = dummy_b->related_breakpoint;
7366
7367         /* If there was no bp_call_dummy breakpoint then there's nothing
7368            more to do.  Or, if the dummy frame associated with the
7369            bp_call_dummy is still on the stack then we need to leave this
7370            bp_call_dummy in place.  */
7371         if (dummy_b->type != bp_call_dummy
7372             || frame_find_by_id (dummy_b->frame_id) != NULL)
7373           continue;
7374
7375         /* We didn't find the dummy frame on the stack, this could be
7376            because we have longjmp'd to a stack frame that is previous to
7377            the dummy frame, or it could be because the stack unwind is
7378            broken at some point between the longjmp frame and the dummy
7379            frame.
7380
7381            Next we figure out why the stack unwind stopped.  If it looks
7382            like the unwind is complete then we assume the dummy frame has
7383            been jumped over, however, if the unwind stopped for an
7384            unexpected reason then we assume the stack unwind is currently
7385            broken, and that we will (eventually) return to the dummy
7386            frame.
7387
7388            It might be tempting to consider using frame_id_inner here, but
7389            that is not safe.   There is no guarantee that the stack frames
7390            we are looking at here are even on the same stack as the
7391            original dummy frame, hence frame_id_inner can't be used.  See
7392            the comments on frame_id_inner for more details.  */
7393         bool unwind_finished_unexpectedly = false;
7394         for (struct frame_info *fi = get_current_frame (); fi != nullptr; )
7395           {
7396             struct frame_info *prev = get_prev_frame (fi);
7397             if (prev == nullptr)
7398               {
7399                 /* FI is the last stack frame.  Why did this frame not
7400                    unwind further?  */
7401                 auto stop_reason = get_frame_unwind_stop_reason (fi);
7402                 if (stop_reason != UNWIND_NO_REASON
7403                     && stop_reason != UNWIND_OUTERMOST)
7404                   unwind_finished_unexpectedly = true;
7405               }
7406             fi = prev;
7407           }
7408         if (unwind_finished_unexpectedly)
7409           continue;
7410
7411         dummy_frame_discard (dummy_b->frame_id, tp);
7412
7413         while (b->related_breakpoint != b)
7414           {
7415             if (b_tmp == b->related_breakpoint)
7416               b_tmp = b->related_breakpoint->next;
7417             delete_breakpoint (b->related_breakpoint);
7418           }
7419         delete_breakpoint (b);
7420       }
7421 }
7422
7423 void
7424 enable_overlay_breakpoints (void)
7425 {
7426   for (breakpoint *b : all_breakpoints ())
7427     if (b->type == bp_overlay_event)
7428       {
7429         b->enable_state = bp_enabled;
7430         update_global_location_list (UGLL_MAY_INSERT);
7431         overlay_events_enabled = 1;
7432       }
7433 }
7434
7435 void
7436 disable_overlay_breakpoints (void)
7437 {
7438   for (breakpoint *b : all_breakpoints ())
7439     if (b->type == bp_overlay_event)
7440       {
7441         b->enable_state = bp_disabled;
7442         update_global_location_list (UGLL_DONT_INSERT);
7443         overlay_events_enabled = 0;
7444       }
7445 }
7446
7447 /* Set an active std::terminate breakpoint for each std::terminate
7448    master breakpoint.  */
7449 void
7450 set_std_terminate_breakpoint (void)
7451 {
7452   for (breakpoint *b : all_breakpoints_safe ())
7453     if (b->pspace == current_program_space
7454         && b->type == bp_std_terminate_master)
7455       {
7456         momentary_breakpoint_from_master (b, bp_std_terminate,
7457                                           &momentary_breakpoint_ops, 1);
7458       }
7459 }
7460
7461 /* Delete all the std::terminate breakpoints.  */
7462 void
7463 delete_std_terminate_breakpoint (void)
7464 {
7465   for (breakpoint *b : all_breakpoints_safe ())
7466     if (b->type == bp_std_terminate)
7467       delete_breakpoint (b);
7468 }
7469
7470 struct breakpoint *
7471 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7472 {
7473   struct breakpoint *b;
7474
7475   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7476                                   &internal_breakpoint_ops);
7477
7478   b->enable_state = bp_enabled;
7479   /* location has to be used or breakpoint_re_set will delete me.  */
7480   b->location = new_address_location (b->loc->address, NULL, 0);
7481
7482   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7483
7484   return b;
7485 }
7486
7487 struct lang_and_radix
7488   {
7489     enum language lang;
7490     int radix;
7491   };
7492
7493 /* Create a breakpoint for JIT code registration and unregistration.  */
7494
7495 struct breakpoint *
7496 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7497 {
7498   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7499                                      &internal_breakpoint_ops);
7500 }
7501
7502 /* Remove JIT code registration and unregistration breakpoint(s).  */
7503
7504 void
7505 remove_jit_event_breakpoints (void)
7506 {
7507   for (breakpoint *b : all_breakpoints_safe ())
7508     if (b->type == bp_jit_event
7509         && b->loc->pspace == current_program_space)
7510       delete_breakpoint (b);
7511 }
7512
7513 void
7514 remove_solib_event_breakpoints (void)
7515 {
7516   for (breakpoint *b : all_breakpoints_safe ())
7517     if (b->type == bp_shlib_event
7518         && b->loc->pspace == current_program_space)
7519       delete_breakpoint (b);
7520 }
7521
7522 /* See breakpoint.h.  */
7523
7524 void
7525 remove_solib_event_breakpoints_at_next_stop (void)
7526 {
7527   for (breakpoint *b : all_breakpoints_safe ())
7528     if (b->type == bp_shlib_event
7529         && b->loc->pspace == current_program_space)
7530       b->disposition = disp_del_at_next_stop;
7531 }
7532
7533 /* Helper for create_solib_event_breakpoint /
7534    create_and_insert_solib_event_breakpoint.  Allows specifying which
7535    INSERT_MODE to pass through to update_global_location_list.  */
7536
7537 static struct breakpoint *
7538 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7539                                  enum ugll_insert_mode insert_mode)
7540 {
7541   struct breakpoint *b;
7542
7543   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7544                                   &internal_breakpoint_ops);
7545   update_global_location_list_nothrow (insert_mode);
7546   return b;
7547 }
7548
7549 struct breakpoint *
7550 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7551 {
7552   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7553 }
7554
7555 /* See breakpoint.h.  */
7556
7557 struct breakpoint *
7558 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7559 {
7560   struct breakpoint *b;
7561
7562   /* Explicitly tell update_global_location_list to insert
7563      locations.  */
7564   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7565   if (!b->loc->inserted)
7566     {
7567       delete_breakpoint (b);
7568       return NULL;
7569     }
7570   return b;
7571 }
7572
7573 /* Disable any breakpoints that are on code in shared libraries.  Only
7574    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7575
7576 void
7577 disable_breakpoints_in_shlibs (void)
7578 {
7579   for (bp_location *loc : all_bp_locations ())
7580     {
7581       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7582       struct breakpoint *b = loc->owner;
7583
7584       /* We apply the check to all breakpoints, including disabled for
7585          those with loc->duplicate set.  This is so that when breakpoint
7586          becomes enabled, or the duplicate is removed, gdb will try to
7587          insert all breakpoints.  If we don't set shlib_disabled here,
7588          we'll try to insert those breakpoints and fail.  */
7589       if (((b->type == bp_breakpoint)
7590            || (b->type == bp_jit_event)
7591            || (b->type == bp_hardware_breakpoint)
7592            || (is_tracepoint (b)))
7593           && loc->pspace == current_program_space
7594           && !loc->shlib_disabled
7595           && solib_name_from_address (loc->pspace, loc->address)
7596           )
7597         {
7598           loc->shlib_disabled = 1;
7599         }
7600     }
7601 }
7602
7603 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7604    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7605    disabled ones can just stay disabled.  */
7606
7607 static void
7608 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7609 {
7610   int disabled_shlib_breaks = 0;
7611
7612   for (bp_location *loc : all_bp_locations ())
7613     {
7614       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7615       struct breakpoint *b = loc->owner;
7616
7617       if (solib->pspace == loc->pspace
7618           && !loc->shlib_disabled
7619           && (((b->type == bp_breakpoint
7620                 || b->type == bp_jit_event
7621                 || b->type == bp_hardware_breakpoint)
7622                && (loc->loc_type == bp_loc_hardware_breakpoint
7623                    || loc->loc_type == bp_loc_software_breakpoint))
7624               || is_tracepoint (b))
7625           && solib_contains_address_p (solib, loc->address))
7626         {
7627           loc->shlib_disabled = 1;
7628           /* At this point, we cannot rely on remove_breakpoint
7629              succeeding so we must mark the breakpoint as not inserted
7630              to prevent future errors occurring in remove_breakpoints.  */
7631           loc->inserted = 0;
7632
7633           /* This may cause duplicate notifications for the same breakpoint.  */
7634           gdb::observers::breakpoint_modified.notify (b);
7635
7636           if (!disabled_shlib_breaks)
7637             {
7638               target_terminal::ours_for_output ();
7639               warning (_("Temporarily disabling breakpoints "
7640                          "for unloaded shared library \"%s\""),
7641                        solib->so_name);
7642             }
7643           disabled_shlib_breaks = 1;
7644         }
7645     }
7646 }
7647
7648 /* Disable any breakpoints and tracepoints in OBJFILE upon
7649    notification of free_objfile.  Only apply to enabled breakpoints,
7650    disabled ones can just stay disabled.  */
7651
7652 static void
7653 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7654 {
7655   if (objfile == NULL)
7656     return;
7657
7658   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7659      managed by the user with add-symbol-file/remove-symbol-file.
7660      Similarly to how breakpoints in shared libraries are handled in
7661      response to "nosharedlibrary", mark breakpoints in such modules
7662      shlib_disabled so they end up uninserted on the next global
7663      location list update.  Shared libraries not loaded by the user
7664      aren't handled here -- they're already handled in
7665      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7666      solib_unloaded observer.  We skip objfiles that are not
7667      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7668      main objfile).  */
7669   if ((objfile->flags & OBJF_SHARED) == 0
7670       || (objfile->flags & OBJF_USERLOADED) == 0)
7671     return;
7672
7673   for (breakpoint *b : all_breakpoints ())
7674     {
7675       int bp_modified = 0;
7676
7677       if (!is_breakpoint (b) && !is_tracepoint (b))
7678         continue;
7679
7680       for (bp_location *loc : b->locations ())
7681         {
7682           CORE_ADDR loc_addr = loc->address;
7683
7684           if (loc->loc_type != bp_loc_hardware_breakpoint
7685               && loc->loc_type != bp_loc_software_breakpoint)
7686             continue;
7687
7688           if (loc->shlib_disabled != 0)
7689             continue;
7690
7691           if (objfile->pspace != loc->pspace)
7692             continue;
7693
7694           if (loc->loc_type != bp_loc_hardware_breakpoint
7695               && loc->loc_type != bp_loc_software_breakpoint)
7696             continue;
7697
7698           if (is_addr_in_objfile (loc_addr, objfile))
7699             {
7700               loc->shlib_disabled = 1;
7701               /* At this point, we don't know whether the object was
7702                  unmapped from the inferior or not, so leave the
7703                  inserted flag alone.  We'll handle failure to
7704                  uninsert quietly, in case the object was indeed
7705                  unmapped.  */
7706
7707               mark_breakpoint_location_modified (loc);
7708
7709               bp_modified = 1;
7710             }
7711         }
7712
7713       if (bp_modified)
7714         gdb::observers::breakpoint_modified.notify (b);
7715     }
7716 }
7717
7718 /* An instance of this type is used to represent an solib catchpoint.
7719    A breakpoint is really of this type iff its ops pointer points to
7720    CATCH_SOLIB_BREAKPOINT_OPS.  */
7721
7722 struct solib_catchpoint : public breakpoint
7723 {
7724   /* True for "catch load", false for "catch unload".  */
7725   bool is_load;
7726
7727   /* Regular expression to match, if any.  COMPILED is only valid when
7728      REGEX is non-NULL.  */
7729   gdb::unique_xmalloc_ptr<char> regex;
7730   std::unique_ptr<compiled_regex> compiled;
7731 };
7732
7733 static int
7734 insert_catch_solib (struct bp_location *ignore)
7735 {
7736   return 0;
7737 }
7738
7739 static int
7740 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7741 {
7742   return 0;
7743 }
7744
7745 static int
7746 breakpoint_hit_catch_solib (const struct bp_location *bl,
7747                             const address_space *aspace,
7748                             CORE_ADDR bp_addr,
7749                             const target_waitstatus &ws)
7750 {
7751   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7752
7753   if (ws.kind () == TARGET_WAITKIND_LOADED)
7754     return 1;
7755
7756   for (breakpoint *other : all_breakpoints ())
7757     {
7758       if (other == bl->owner)
7759         continue;
7760
7761       if (other->type != bp_shlib_event)
7762         continue;
7763
7764       if (self->pspace != NULL && other->pspace != self->pspace)
7765         continue;
7766
7767       for (bp_location *other_bl : other->locations ())
7768         {
7769           if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7770             return 1;
7771         }
7772     }
7773
7774   return 0;
7775 }
7776
7777 static void
7778 check_status_catch_solib (struct bpstat *bs)
7779 {
7780   struct solib_catchpoint *self
7781     = (struct solib_catchpoint *) bs->breakpoint_at;
7782
7783   if (self->is_load)
7784     {
7785       for (so_list *iter : current_program_space->added_solibs)
7786         {
7787           if (!self->regex
7788               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7789             return;
7790         }
7791     }
7792   else
7793     {
7794       for (const std::string &iter : current_program_space->deleted_solibs)
7795         {
7796           if (!self->regex
7797               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7798             return;
7799         }
7800     }
7801
7802   bs->stop = 0;
7803   bs->print_it = print_it_noop;
7804 }
7805
7806 static enum print_stop_action
7807 print_it_catch_solib (bpstat *bs)
7808 {
7809   struct breakpoint *b = bs->breakpoint_at;
7810   struct ui_out *uiout = current_uiout;
7811
7812   annotate_catchpoint (b->number);
7813   maybe_print_thread_hit_breakpoint (uiout);
7814   if (b->disposition == disp_del)
7815     uiout->text ("Temporary catchpoint ");
7816   else
7817     uiout->text ("Catchpoint ");
7818   uiout->field_signed ("bkptno", b->number);
7819   uiout->text ("\n");
7820   if (uiout->is_mi_like_p ())
7821     uiout->field_string ("disp", bpdisp_text (b->disposition));
7822   print_solib_event (1);
7823   return PRINT_SRC_AND_LOC;
7824 }
7825
7826 static void
7827 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7828 {
7829   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7830   struct value_print_options opts;
7831   struct ui_out *uiout = current_uiout;
7832
7833   get_user_print_options (&opts);
7834   /* Field 4, the address, is omitted (which makes the columns not
7835      line up too nicely with the headers, but the effect is relatively
7836      readable).  */
7837   if (opts.addressprint)
7838     {
7839       annotate_field (4);
7840       uiout->field_skip ("addr");
7841     }
7842
7843   std::string msg;
7844   annotate_field (5);
7845   if (self->is_load)
7846     {
7847       if (self->regex)
7848         msg = string_printf (_("load of library matching %s"),
7849                              self->regex.get ());
7850       else
7851         msg = _("load of library");
7852     }
7853   else
7854     {
7855       if (self->regex)
7856         msg = string_printf (_("unload of library matching %s"),
7857                              self->regex.get ());
7858       else
7859         msg = _("unload of library");
7860     }
7861   uiout->field_string ("what", msg);
7862
7863   if (uiout->is_mi_like_p ())
7864     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
7865 }
7866
7867 static void
7868 print_mention_catch_solib (struct breakpoint *b)
7869 {
7870   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7871
7872   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7873                    self->is_load ? "load" : "unload");
7874 }
7875
7876 static void
7877 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7878 {
7879   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7880
7881   fprintf_unfiltered (fp, "%s %s",
7882                       b->disposition == disp_del ? "tcatch" : "catch",
7883                       self->is_load ? "load" : "unload");
7884   if (self->regex)
7885     fprintf_unfiltered (fp, " %s", self->regex.get ());
7886   fprintf_unfiltered (fp, "\n");
7887 }
7888
7889 static struct breakpoint_ops catch_solib_breakpoint_ops;
7890
7891 /* See breakpoint.h.  */
7892
7893 void
7894 add_solib_catchpoint (const char *arg, bool is_load, bool is_temp, bool enabled)
7895 {
7896   struct gdbarch *gdbarch = get_current_arch ();
7897
7898   if (!arg)
7899     arg = "";
7900   arg = skip_spaces (arg);
7901
7902   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
7903
7904   if (*arg != '\0')
7905     {
7906       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
7907                                              _("Invalid regexp")));
7908       c->regex = make_unique_xstrdup (arg);
7909     }
7910
7911   c->is_load = is_load;
7912   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
7913                    &catch_solib_breakpoint_ops);
7914
7915   c->enable_state = enabled ? bp_enabled : bp_disabled;
7916
7917   install_breakpoint (0, std::move (c), 1);
7918 }
7919
7920 /* A helper function that does all the work for "catch load" and
7921    "catch unload".  */
7922
7923 static void
7924 catch_load_or_unload (const char *arg, int from_tty, int is_load,
7925                       struct cmd_list_element *command)
7926 {
7927   const int enabled = 1;
7928   bool temp = command->context () == CATCH_TEMPORARY;
7929
7930   add_solib_catchpoint (arg, is_load, temp, enabled);
7931 }
7932
7933 static void
7934 catch_load_command_1 (const char *arg, int from_tty,
7935                       struct cmd_list_element *command)
7936 {
7937   catch_load_or_unload (arg, from_tty, 1, command);
7938 }
7939
7940 static void
7941 catch_unload_command_1 (const char *arg, int from_tty,
7942                         struct cmd_list_element *command)
7943 {
7944   catch_load_or_unload (arg, from_tty, 0, command);
7945 }
7946
7947 /* See breakpoint.h.  */
7948
7949 void
7950 init_catchpoint (struct breakpoint *b,
7951                  struct gdbarch *gdbarch, bool temp,
7952                  const char *cond_string,
7953                  const struct breakpoint_ops *ops)
7954 {
7955   symtab_and_line sal;
7956   sal.pspace = current_program_space;
7957
7958   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
7959
7960   if (cond_string == nullptr)
7961     b->cond_string.reset ();
7962   else
7963     b->cond_string = make_unique_xstrdup (cond_string);
7964   b->disposition = temp ? disp_del : disp_donttouch;
7965 }
7966
7967 void
7968 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
7969 {
7970   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
7971   set_breakpoint_number (internal, b);
7972   if (is_tracepoint (b))
7973     set_tracepoint_count (breakpoint_count);
7974   if (!internal)
7975     mention (b);
7976   gdb::observers::breakpoint_created.notify (b);
7977
7978   if (update_gll)
7979     update_global_location_list (UGLL_MAY_INSERT);
7980 }
7981
7982 static int
7983 hw_breakpoint_used_count (void)
7984 {
7985   int i = 0;
7986
7987   for (breakpoint *b : all_breakpoints ())
7988     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
7989       for (bp_location *bl : b->locations ())
7990         {
7991           /* Special types of hardware breakpoints may use more than
7992              one register.  */
7993           i += b->ops->resources_needed (bl);
7994         }
7995
7996   return i;
7997 }
7998
7999 /* Returns the resources B would use if it were a hardware
8000    watchpoint.  */
8001
8002 static int
8003 hw_watchpoint_use_count (struct breakpoint *b)
8004 {
8005   int i = 0;
8006
8007   if (!breakpoint_enabled (b))
8008     return 0;
8009
8010   for (bp_location *bl : b->locations ())
8011     {
8012       /* Special types of hardware watchpoints may use more than
8013          one register.  */
8014       i += b->ops->resources_needed (bl);
8015     }
8016
8017   return i;
8018 }
8019
8020 /* Returns the sum the used resources of all hardware watchpoints of
8021    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8022    the sum of the used resources of all hardware watchpoints of other
8023    types _not_ TYPE.  */
8024
8025 static int
8026 hw_watchpoint_used_count_others (struct breakpoint *except,
8027                                  enum bptype type, int *other_type_used)
8028 {
8029   int i = 0;
8030
8031   *other_type_used = 0;
8032   for (breakpoint *b : all_breakpoints ())
8033     {
8034       if (b == except)
8035         continue;
8036       if (!breakpoint_enabled (b))
8037         continue;
8038
8039       if (b->type == type)
8040         i += hw_watchpoint_use_count (b);
8041       else if (is_hardware_watchpoint (b))
8042         *other_type_used = 1;
8043     }
8044
8045   return i;
8046 }
8047
8048 void
8049 disable_watchpoints_before_interactive_call_start (void)
8050 {
8051   for (breakpoint *b : all_breakpoints ())
8052     if (is_watchpoint (b) && breakpoint_enabled (b))
8053       {
8054         b->enable_state = bp_call_disabled;
8055         update_global_location_list (UGLL_DONT_INSERT);
8056       }
8057 }
8058
8059 void
8060 enable_watchpoints_after_interactive_call_stop (void)
8061 {
8062   for (breakpoint *b : all_breakpoints ())
8063     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8064       {
8065         b->enable_state = bp_enabled;
8066         update_global_location_list (UGLL_MAY_INSERT);
8067       }
8068 }
8069
8070 void
8071 disable_breakpoints_before_startup (void)
8072 {
8073   current_program_space->executing_startup = 1;
8074   update_global_location_list (UGLL_DONT_INSERT);
8075 }
8076
8077 void
8078 enable_breakpoints_after_startup (void)
8079 {
8080   current_program_space->executing_startup = 0;
8081   breakpoint_re_set ();
8082 }
8083
8084 /* Create a new single-step breakpoint for thread THREAD, with no
8085    locations.  */
8086
8087 static struct breakpoint *
8088 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8089 {
8090   std::unique_ptr<breakpoint> b (new breakpoint ());
8091
8092   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8093                                         &momentary_breakpoint_ops);
8094
8095   b->disposition = disp_donttouch;
8096   b->frame_id = null_frame_id;
8097
8098   b->thread = thread;
8099   gdb_assert (b->thread != 0);
8100
8101   return add_to_breakpoint_chain (std::move (b));
8102 }
8103
8104 /* Set a momentary breakpoint of type TYPE at address specified by
8105    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8106    frame.  */
8107
8108 breakpoint_up
8109 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8110                           struct frame_id frame_id, enum bptype type)
8111 {
8112   struct breakpoint *b;
8113
8114   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8115      tail-called one.  */
8116   gdb_assert (!frame_id_artificial_p (frame_id));
8117
8118   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8119   b->enable_state = bp_enabled;
8120   b->disposition = disp_donttouch;
8121   b->frame_id = frame_id;
8122
8123   b->thread = inferior_thread ()->global_num;
8124
8125   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8126
8127   return breakpoint_up (b);
8128 }
8129
8130 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8131    The new breakpoint will have type TYPE, use OPS as its
8132    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8133
8134 static struct breakpoint *
8135 momentary_breakpoint_from_master (struct breakpoint *orig,
8136                                   enum bptype type,
8137                                   const struct breakpoint_ops *ops,
8138                                   int loc_enabled)
8139 {
8140   struct breakpoint *copy;
8141
8142   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8143   copy->loc = allocate_bp_location (copy);
8144   set_breakpoint_location_function (copy->loc);
8145
8146   copy->loc->gdbarch = orig->loc->gdbarch;
8147   copy->loc->requested_address = orig->loc->requested_address;
8148   copy->loc->address = orig->loc->address;
8149   copy->loc->section = orig->loc->section;
8150   copy->loc->pspace = orig->loc->pspace;
8151   copy->loc->probe = orig->loc->probe;
8152   copy->loc->line_number = orig->loc->line_number;
8153   copy->loc->symtab = orig->loc->symtab;
8154   copy->loc->enabled = loc_enabled;
8155   copy->frame_id = orig->frame_id;
8156   copy->thread = orig->thread;
8157   copy->pspace = orig->pspace;
8158
8159   copy->enable_state = bp_enabled;
8160   copy->disposition = disp_donttouch;
8161   copy->number = internal_breakpoint_number--;
8162
8163   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8164   return copy;
8165 }
8166
8167 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8168    ORIG is NULL.  */
8169
8170 struct breakpoint *
8171 clone_momentary_breakpoint (struct breakpoint *orig)
8172 {
8173   /* If there's nothing to clone, then return nothing.  */
8174   if (orig == NULL)
8175     return NULL;
8176
8177   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8178 }
8179
8180 breakpoint_up
8181 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8182                                 enum bptype type)
8183 {
8184   struct symtab_and_line sal;
8185
8186   sal = find_pc_line (pc, 0);
8187   sal.pc = pc;
8188   sal.section = find_pc_overlay (pc);
8189   sal.explicit_pc = 1;
8190
8191   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8192 }
8193 \f
8194
8195 /* Tell the user we have just set a breakpoint B.  */
8196
8197 static void
8198 mention (struct breakpoint *b)
8199 {
8200   b->ops->print_mention (b);
8201   current_uiout->text ("\n");
8202 }
8203 \f
8204
8205 static bool bp_loc_is_permanent (struct bp_location *loc);
8206
8207 /* Handle "set breakpoint auto-hw on".
8208
8209    If the explicitly specified breakpoint type is not hardware
8210    breakpoint, check the memory map to see whether the breakpoint
8211    address is in read-only memory.
8212
8213    - location type is not hardware breakpoint, memory is read-only.
8214    We change the type of the location to hardware breakpoint.
8215
8216    - location type is hardware breakpoint, memory is read-write.  This
8217    means we've previously made the location hardware one, but then the
8218    memory map changed, so we undo.
8219 */
8220
8221 static void
8222 handle_automatic_hardware_breakpoints (bp_location *bl)
8223 {
8224   if (automatic_hardware_breakpoints
8225       && bl->owner->type != bp_hardware_breakpoint
8226       && (bl->loc_type == bp_loc_software_breakpoint
8227           || bl->loc_type == bp_loc_hardware_breakpoint))
8228     {
8229       /* When breakpoints are removed, remove_breakpoints will use
8230          location types we've just set here, the only possible problem
8231          is that memory map has changed during running program, but
8232          it's not going to work anyway with current gdb.  */
8233       mem_region *mr = lookup_mem_region (bl->address);
8234
8235       if (mr != nullptr)
8236         {
8237           enum bp_loc_type new_type;
8238
8239           if (mr->attrib.mode != MEM_RW)
8240             new_type = bp_loc_hardware_breakpoint;
8241           else
8242             new_type = bp_loc_software_breakpoint;
8243
8244           if (new_type != bl->loc_type)
8245             {
8246               static bool said = false;
8247
8248               bl->loc_type = new_type;
8249               if (!said)
8250                 {
8251                   printf_filtered (_("Note: automatically using "
8252                                      "hardware breakpoints for "
8253                                      "read-only addresses.\n"));
8254                   said = true;
8255                 }
8256             }
8257         }
8258     }
8259 }
8260
8261 static struct bp_location *
8262 add_location_to_breakpoint (struct breakpoint *b,
8263                             const struct symtab_and_line *sal)
8264 {
8265   struct bp_location *loc, **tmp;
8266   CORE_ADDR adjusted_address;
8267   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8268
8269   if (loc_gdbarch == NULL)
8270     loc_gdbarch = b->gdbarch;
8271
8272   /* Adjust the breakpoint's address prior to allocating a location.
8273      Once we call allocate_bp_location(), that mostly uninitialized
8274      location will be placed on the location chain.  Adjustment of the
8275      breakpoint may cause target_read_memory() to be called and we do
8276      not want its scan of the location chain to find a breakpoint and
8277      location that's only been partially initialized.  */
8278   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8279                                                 sal->pc, b->type);
8280
8281   /* Sort the locations by their ADDRESS.  */
8282   loc = allocate_bp_location (b);
8283   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8284        tmp = &((*tmp)->next))
8285     ;
8286   loc->next = *tmp;
8287   *tmp = loc;
8288
8289   loc->requested_address = sal->pc;
8290   loc->address = adjusted_address;
8291   loc->pspace = sal->pspace;
8292   loc->probe.prob = sal->prob;
8293   loc->probe.objfile = sal->objfile;
8294   gdb_assert (loc->pspace != NULL);
8295   loc->section = sal->section;
8296   loc->gdbarch = loc_gdbarch;
8297   loc->line_number = sal->line;
8298   loc->symtab = sal->symtab;
8299   loc->symbol = sal->symbol;
8300   loc->msymbol = sal->msymbol;
8301   loc->objfile = sal->objfile;
8302
8303   set_breakpoint_location_function (loc);
8304
8305   /* While by definition, permanent breakpoints are already present in the
8306      code, we don't mark the location as inserted.  Normally one would expect
8307      that GDB could rely on that breakpoint instruction to stop the program,
8308      thus removing the need to insert its own breakpoint, except that executing
8309      the breakpoint instruction can kill the target instead of reporting a
8310      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8311      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8312      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8313      breakpoint be inserted normally results in QEMU knowing about the GDB
8314      breakpoint, and thus trap before the breakpoint instruction is executed.
8315      (If GDB later needs to continue execution past the permanent breakpoint,
8316      it manually increments the PC, thus avoiding executing the breakpoint
8317      instruction.)  */
8318   if (bp_loc_is_permanent (loc))
8319     loc->permanent = 1;
8320
8321   return loc;
8322 }
8323 \f
8324
8325 /* Return true if LOC is pointing to a permanent breakpoint,
8326    return false otherwise.  */
8327
8328 static bool
8329 bp_loc_is_permanent (struct bp_location *loc)
8330 {
8331   gdb_assert (loc != NULL);
8332
8333   /* If we have a non-breakpoint-backed catchpoint or a software
8334      watchpoint, just return 0.  We should not attempt to read from
8335      the addresses the locations of these breakpoint types point to.
8336      gdbarch_program_breakpoint_here_p, below, will attempt to read
8337      memory.  */
8338   if (!bl_address_is_meaningful (loc))
8339     return false;
8340
8341   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8342   switch_to_program_space_and_thread (loc->pspace);
8343   return gdbarch_program_breakpoint_here_p (loc->gdbarch, loc->address);
8344 }
8345
8346 /* Build a command list for the dprintf corresponding to the current
8347    settings of the dprintf style options.  */
8348
8349 static void
8350 update_dprintf_command_list (struct breakpoint *b)
8351 {
8352   const char *dprintf_args = b->extra_string.get ();
8353   gdb::unique_xmalloc_ptr<char> printf_line = nullptr;
8354
8355   if (!dprintf_args)
8356     return;
8357
8358   dprintf_args = skip_spaces (dprintf_args);
8359
8360   /* Allow a comma, as it may have terminated a location, but don't
8361      insist on it.  */
8362   if (*dprintf_args == ',')
8363     ++dprintf_args;
8364   dprintf_args = skip_spaces (dprintf_args);
8365
8366   if (*dprintf_args != '"')
8367     error (_("Bad format string, missing '\"'."));
8368
8369   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8370     printf_line = xstrprintf ("printf %s", dprintf_args);
8371   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8372     {
8373       if (dprintf_function.empty ())
8374         error (_("No function supplied for dprintf call"));
8375
8376       if (!dprintf_channel.empty ())
8377         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8378                                   dprintf_function.c_str (),
8379                                   dprintf_channel.c_str (),
8380                                   dprintf_args);
8381       else
8382         printf_line = xstrprintf ("call (void) %s (%s)",
8383                                   dprintf_function.c_str (),
8384                                   dprintf_args);
8385     }
8386   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8387     {
8388       if (target_can_run_breakpoint_commands ())
8389         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8390       else
8391         {
8392           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8393           printf_line = xstrprintf ("printf %s", dprintf_args);
8394         }
8395     }
8396   else
8397     internal_error (__FILE__, __LINE__,
8398                     _("Invalid dprintf style."));
8399
8400   gdb_assert (printf_line != NULL);
8401
8402   /* Manufacture a printf sequence.  */
8403   struct command_line *printf_cmd_line
8404     = new struct command_line (simple_control, printf_line.release ());
8405   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8406                                                     command_lines_deleter ()));
8407 }
8408
8409 /* Update all dprintf commands, making their command lists reflect
8410    current style settings.  */
8411
8412 static void
8413 update_dprintf_commands (const char *args, int from_tty,
8414                          struct cmd_list_element *c)
8415 {
8416   for (breakpoint *b : all_breakpoints ())
8417     if (b->type == bp_dprintf)
8418         update_dprintf_command_list (b);
8419 }
8420
8421 /* Create a breakpoint with SAL as location.  Use LOCATION
8422    as a description of the location, and COND_STRING
8423    as condition expression.  If LOCATION is NULL then create an
8424    "address location" from the address in the SAL.  */
8425
8426 static void
8427 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8428                      gdb::array_view<const symtab_and_line> sals,
8429                      event_location_up &&location,
8430                      gdb::unique_xmalloc_ptr<char> filter,
8431                      gdb::unique_xmalloc_ptr<char> cond_string,
8432                      gdb::unique_xmalloc_ptr<char> extra_string,
8433                      enum bptype type, enum bpdisp disposition,
8434                      int thread, int task, int ignore_count,
8435                      const struct breakpoint_ops *ops, int from_tty,
8436                      int enabled, int internal, unsigned flags,
8437                      int display_canonical)
8438 {
8439   int i;
8440
8441   if (type == bp_hardware_breakpoint)
8442     {
8443       int target_resources_ok;
8444
8445       i = hw_breakpoint_used_count ();
8446       target_resources_ok =
8447         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8448                                             i + 1, 0);
8449       if (target_resources_ok == 0)
8450         error (_("No hardware breakpoint support in the target."));
8451       else if (target_resources_ok < 0)
8452         error (_("Hardware breakpoints used exceeds limit."));
8453     }
8454
8455   gdb_assert (!sals.empty ());
8456
8457   for (const auto &sal : sals)
8458     {
8459       struct bp_location *loc;
8460
8461       if (from_tty)
8462         {
8463           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8464           if (!loc_gdbarch)
8465             loc_gdbarch = gdbarch;
8466
8467           describe_other_breakpoints (loc_gdbarch,
8468                                       sal.pspace, sal.pc, sal.section, thread);
8469         }
8470
8471       if (&sal == &sals[0])
8472         {
8473           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8474           b->thread = thread;
8475           b->task = task;
8476
8477           b->cond_string = std::move (cond_string);
8478           b->extra_string = std::move (extra_string);
8479           b->ignore_count = ignore_count;
8480           b->enable_state = enabled ? bp_enabled : bp_disabled;
8481           b->disposition = disposition;
8482
8483           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8484             b->loc->inserted = 1;
8485
8486           if (type == bp_static_tracepoint)
8487             {
8488               struct tracepoint *t = (struct tracepoint *) b;
8489               struct static_tracepoint_marker marker;
8490
8491               if (strace_marker_p (b))
8492                 {
8493                   /* We already know the marker exists, otherwise, we
8494                      wouldn't see a sal for it.  */
8495                   const char *p
8496                     = &event_location_to_string (b->location.get ())[3];
8497                   const char *endp;
8498
8499                   p = skip_spaces (p);
8500
8501                   endp = skip_to_space (p);
8502
8503                   t->static_trace_marker_id.assign (p, endp - p);
8504
8505                   printf_filtered (_("Probed static tracepoint "
8506                                      "marker \"%s\"\n"),
8507                                    t->static_trace_marker_id.c_str ());
8508                 }
8509               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8510                 {
8511                   t->static_trace_marker_id = std::move (marker.str_id);
8512
8513                   printf_filtered (_("Probed static tracepoint "
8514                                      "marker \"%s\"\n"),
8515                                    t->static_trace_marker_id.c_str ());
8516                 }
8517               else
8518                 warning (_("Couldn't determine the static "
8519                            "tracepoint marker to probe"));
8520             }
8521
8522           loc = b->loc;
8523         }
8524       else
8525         {
8526           loc = add_location_to_breakpoint (b, &sal);
8527           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8528             loc->inserted = 1;
8529         }
8530
8531       /* Do not set breakpoint locations conditions yet.  As locations
8532          are inserted, they get sorted based on their addresses.  Let
8533          the list stabilize to have reliable location numbers.  */
8534
8535       /* Dynamic printf requires and uses additional arguments on the
8536          command line, otherwise it's an error.  */
8537       if (type == bp_dprintf)
8538         {
8539           if (b->extra_string)
8540             update_dprintf_command_list (b);
8541           else
8542             error (_("Format string required"));
8543         }
8544       else if (b->extra_string)
8545         error (_("Garbage '%s' at end of command"), b->extra_string.get ());
8546     }
8547
8548
8549   /* The order of the locations is now stable.  Set the location
8550      condition using the location's number.  */
8551   int loc_num = 1;
8552   for (bp_location *loc : b->locations ())
8553     {
8554       if (b->cond_string != nullptr)
8555         set_breakpoint_location_condition (b->cond_string.get (), loc,
8556                                            b->number, loc_num);
8557
8558       ++loc_num;
8559     }
8560
8561   b->display_canonical = display_canonical;
8562   if (location != NULL)
8563     b->location = std::move (location);
8564   else
8565     b->location = new_address_location (b->loc->address, NULL, 0);
8566   b->filter = std::move (filter);
8567 }
8568
8569 static void
8570 create_breakpoint_sal (struct gdbarch *gdbarch,
8571                        gdb::array_view<const symtab_and_line> sals,
8572                        event_location_up &&location,
8573                        gdb::unique_xmalloc_ptr<char> filter,
8574                        gdb::unique_xmalloc_ptr<char> cond_string,
8575                        gdb::unique_xmalloc_ptr<char> extra_string,
8576                        enum bptype type, enum bpdisp disposition,
8577                        int thread, int task, int ignore_count,
8578                        const struct breakpoint_ops *ops, int from_tty,
8579                        int enabled, int internal, unsigned flags,
8580                        int display_canonical)
8581 {
8582   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8583
8584   init_breakpoint_sal (b.get (), gdbarch,
8585                        sals, std::move (location),
8586                        std::move (filter),
8587                        std::move (cond_string),
8588                        std::move (extra_string),
8589                        type, disposition,
8590                        thread, task, ignore_count,
8591                        ops, from_tty,
8592                        enabled, internal, flags,
8593                        display_canonical);
8594
8595   install_breakpoint (internal, std::move (b), 0);
8596 }
8597
8598 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8599    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8600    value.  COND_STRING, if not NULL, specified the condition to be
8601    used for all breakpoints.  Essentially the only case where
8602    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8603    function.  In that case, it's still not possible to specify
8604    separate conditions for different overloaded functions, so
8605    we take just a single condition string.
8606    
8607    NOTE: If the function succeeds, the caller is expected to cleanup
8608    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8609    array contents).  If the function fails (error() is called), the
8610    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8611    COND and SALS arrays and each of those arrays contents.  */
8612
8613 static void
8614 create_breakpoints_sal (struct gdbarch *gdbarch,
8615                         struct linespec_result *canonical,
8616                         gdb::unique_xmalloc_ptr<char> cond_string,
8617                         gdb::unique_xmalloc_ptr<char> extra_string,
8618                         enum bptype type, enum bpdisp disposition,
8619                         int thread, int task, int ignore_count,
8620                         const struct breakpoint_ops *ops, int from_tty,
8621                         int enabled, int internal, unsigned flags)
8622 {
8623   if (canonical->pre_expanded)
8624     gdb_assert (canonical->lsals.size () == 1);
8625
8626   for (const auto &lsal : canonical->lsals)
8627     {
8628       /* Note that 'location' can be NULL in the case of a plain
8629          'break', without arguments.  */
8630       event_location_up location
8631         = (canonical->location != NULL
8632            ? copy_event_location (canonical->location.get ()) : NULL);
8633       gdb::unique_xmalloc_ptr<char> filter_string
8634         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8635
8636       create_breakpoint_sal (gdbarch, lsal.sals,
8637                              std::move (location),
8638                              std::move (filter_string),
8639                              std::move (cond_string),
8640                              std::move (extra_string),
8641                              type, disposition,
8642                              thread, task, ignore_count, ops,
8643                              from_tty, enabled, internal, flags,
8644                              canonical->special_display);
8645     }
8646 }
8647
8648 /* Parse LOCATION which is assumed to be a SAL specification possibly
8649    followed by conditionals.  On return, SALS contains an array of SAL
8650    addresses found.  LOCATION points to the end of the SAL (for
8651    linespec locations).
8652
8653    The array and the line spec strings are allocated on the heap, it is
8654    the caller's responsibility to free them.  */
8655
8656 static void
8657 parse_breakpoint_sals (struct event_location *location,
8658                        struct linespec_result *canonical)
8659 {
8660   struct symtab_and_line cursal;
8661
8662   if (event_location_type (location) == LINESPEC_LOCATION)
8663     {
8664       const char *spec = get_linespec_location (location)->spec_string;
8665
8666       if (spec == NULL)
8667         {
8668           /* The last displayed codepoint, if it's valid, is our default
8669              breakpoint address.  */
8670           if (last_displayed_sal_is_valid ())
8671             {
8672               /* Set sal's pspace, pc, symtab, and line to the values
8673                  corresponding to the last call to print_frame_info.
8674                  Be sure to reinitialize LINE with NOTCURRENT == 0
8675                  as the breakpoint line number is inappropriate otherwise.
8676                  find_pc_line would adjust PC, re-set it back.  */
8677               symtab_and_line sal = get_last_displayed_sal ();
8678               CORE_ADDR pc = sal.pc;
8679
8680               sal = find_pc_line (pc, 0);
8681
8682               /* "break" without arguments is equivalent to "break *PC"
8683                  where PC is the last displayed codepoint's address.  So
8684                  make sure to set sal.explicit_pc to prevent GDB from
8685                  trying to expand the list of sals to include all other
8686                  instances with the same symtab and line.  */
8687               sal.pc = pc;
8688               sal.explicit_pc = 1;
8689
8690               struct linespec_sals lsal;
8691               lsal.sals = {sal};
8692               lsal.canonical = NULL;
8693
8694               canonical->lsals.push_back (std::move (lsal));
8695               return;
8696             }
8697           else
8698             error (_("No default breakpoint address now."));
8699         }
8700     }
8701
8702   /* Force almost all breakpoints to be in terms of the
8703      current_source_symtab (which is decode_line_1's default).
8704      This should produce the results we want almost all of the
8705      time while leaving default_breakpoint_* alone.
8706
8707      ObjC: However, don't match an Objective-C method name which
8708      may have a '+' or '-' succeeded by a '['.  */
8709   cursal = get_current_source_symtab_and_line ();
8710   if (last_displayed_sal_is_valid ())
8711     {
8712       const char *spec = NULL;
8713
8714       if (event_location_type (location) == LINESPEC_LOCATION)
8715         spec = get_linespec_location (location)->spec_string;
8716
8717       if (!cursal.symtab
8718           || (spec != NULL
8719               && strchr ("+-", spec[0]) != NULL
8720               && spec[1] != '['))
8721         {
8722           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
8723                             get_last_displayed_symtab (),
8724                             get_last_displayed_line (),
8725                             canonical, NULL, NULL);
8726           return;
8727         }
8728     }
8729
8730   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
8731                     cursal.symtab, cursal.line, canonical, NULL, NULL);
8732 }
8733
8734
8735 /* Convert each SAL into a real PC.  Verify that the PC can be
8736    inserted as a breakpoint.  If it can't throw an error.  */
8737
8738 static void
8739 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
8740 {    
8741   for (auto &sal : sals)
8742     resolve_sal_pc (&sal);
8743 }
8744
8745 /* Fast tracepoints may have restrictions on valid locations.  For
8746    instance, a fast tracepoint using a jump instead of a trap will
8747    likely have to overwrite more bytes than a trap would, and so can
8748    only be placed where the instruction is longer than the jump, or a
8749    multi-instruction sequence does not have a jump into the middle of
8750    it, etc.  */
8751
8752 static void
8753 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8754                             gdb::array_view<const symtab_and_line> sals)
8755 {
8756   for (const auto &sal : sals)
8757     {
8758       struct gdbarch *sarch;
8759
8760       sarch = get_sal_arch (sal);
8761       /* We fall back to GDBARCH if there is no architecture
8762          associated with SAL.  */
8763       if (sarch == NULL)
8764         sarch = gdbarch;
8765       std::string msg;
8766       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
8767         error (_("May not have a fast tracepoint at %s%s"),
8768                paddress (sarch, sal.pc), msg.c_str ());
8769     }
8770 }
8771
8772 /* Given TOK, a string specification of condition and thread, as
8773    accepted by the 'break' command, extract the condition
8774    string and thread number and set *COND_STRING and *THREAD.
8775    PC identifies the context at which the condition should be parsed.
8776    If no condition is found, *COND_STRING is set to NULL.
8777    If no thread is found, *THREAD is set to -1.  */
8778
8779 static void
8780 find_condition_and_thread (const char *tok, CORE_ADDR pc,
8781                            gdb::unique_xmalloc_ptr<char> *cond_string,
8782                            int *thread, int *task,
8783                            gdb::unique_xmalloc_ptr<char> *rest)
8784 {
8785   cond_string->reset ();
8786   *thread = -1;
8787   *task = 0;
8788   rest->reset ();
8789   bool force = false;
8790
8791   while (tok && *tok)
8792     {
8793       const char *end_tok;
8794       int toklen;
8795       const char *cond_start = NULL;
8796       const char *cond_end = NULL;
8797
8798       tok = skip_spaces (tok);
8799
8800       if ((*tok == '"' || *tok == ',') && rest)
8801         {
8802           rest->reset (savestring (tok, strlen (tok)));
8803           return;
8804         }
8805
8806       end_tok = skip_to_space (tok);
8807
8808       toklen = end_tok - tok;
8809
8810       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8811         {
8812           tok = cond_start = end_tok + 1;
8813           try
8814             {
8815               parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
8816             }
8817           catch (const gdb_exception_error &)
8818             {
8819               if (!force)
8820                 throw;
8821               else
8822                 tok = tok + strlen (tok);
8823             }
8824           cond_end = tok;
8825           cond_string->reset (savestring (cond_start, cond_end - cond_start));
8826         }
8827       else if (toklen >= 1 && strncmp (tok, "-force-condition", toklen) == 0)
8828         {
8829           tok = tok + toklen;
8830           force = true;
8831         }
8832       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8833         {
8834           const char *tmptok;
8835           struct thread_info *thr;
8836
8837           tok = end_tok + 1;
8838           thr = parse_thread_id (tok, &tmptok);
8839           if (tok == tmptok)
8840             error (_("Junk after thread keyword."));
8841           *thread = thr->global_num;
8842           tok = tmptok;
8843         }
8844       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8845         {
8846           char *tmptok;
8847
8848           tok = end_tok + 1;
8849           *task = strtol (tok, &tmptok, 0);
8850           if (tok == tmptok)
8851             error (_("Junk after task keyword."));
8852           if (!valid_task_id (*task))
8853             error (_("Unknown task %d."), *task);
8854           tok = tmptok;
8855         }
8856       else if (rest)
8857         {
8858           rest->reset (savestring (tok, strlen (tok)));
8859           return;
8860         }
8861       else
8862         error (_("Junk at end of arguments."));
8863     }
8864 }
8865
8866 /* Call 'find_condition_and_thread' for each sal in SALS until a parse
8867    succeeds.  The parsed values are written to COND_STRING, THREAD,
8868    TASK, and REST.  See the comment of 'find_condition_and_thread'
8869    for the description of these parameters and INPUT.  */
8870
8871 static void
8872 find_condition_and_thread_for_sals (const std::vector<symtab_and_line> &sals,
8873                                     const char *input,
8874                                     gdb::unique_xmalloc_ptr<char> *cond_string,
8875                                     int *thread, int *task,
8876                                     gdb::unique_xmalloc_ptr<char> *rest)
8877 {
8878   int num_failures = 0;
8879   for (auto &sal : sals)
8880     {
8881       gdb::unique_xmalloc_ptr<char> cond;
8882       int thread_id = 0;
8883       int task_id = 0;
8884       gdb::unique_xmalloc_ptr<char> remaining;
8885
8886       /* Here we want to parse 'arg' to separate condition from thread
8887          number.  But because parsing happens in a context and the
8888          contexts of sals might be different, try each until there is
8889          success.  Finding one successful parse is sufficient for our
8890          goal.  When setting the breakpoint we'll re-parse the
8891          condition in the context of each sal.  */
8892       try
8893         {
8894           find_condition_and_thread (input, sal.pc, &cond, &thread_id,
8895                                      &task_id, &remaining);
8896           *cond_string = std::move (cond);
8897           *thread = thread_id;
8898           *task = task_id;
8899           *rest = std::move (remaining);
8900           break;
8901         }
8902       catch (const gdb_exception_error &e)
8903         {
8904           num_failures++;
8905           /* If no sal remains, do not continue.  */
8906           if (num_failures == sals.size ())
8907             throw;
8908         }
8909     }
8910 }
8911
8912 /* Decode a static tracepoint marker spec.  */
8913
8914 static std::vector<symtab_and_line>
8915 decode_static_tracepoint_spec (const char **arg_p)
8916 {
8917   const char *p = &(*arg_p)[3];
8918   const char *endp;
8919
8920   p = skip_spaces (p);
8921
8922   endp = skip_to_space (p);
8923
8924   std::string marker_str (p, endp - p);
8925
8926   std::vector<static_tracepoint_marker> markers
8927     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
8928   if (markers.empty ())
8929     error (_("No known static tracepoint marker named %s"),
8930            marker_str.c_str ());
8931
8932   std::vector<symtab_and_line> sals;
8933   sals.reserve (markers.size ());
8934
8935   for (const static_tracepoint_marker &marker : markers)
8936     {
8937       symtab_and_line sal = find_pc_line (marker.address, 0);
8938       sal.pc = marker.address;
8939       sals.push_back (sal);
8940    }
8941
8942   *arg_p = endp;
8943   return sals;
8944 }
8945
8946 /* Returns the breakpoint ops appropriate for use with with LOCATION_TYPE and
8947    according to IS_TRACEPOINT.  */
8948
8949 static const struct breakpoint_ops *
8950 breakpoint_ops_for_event_location_type (enum event_location_type location_type,
8951                                         bool is_tracepoint)
8952 {
8953   if (is_tracepoint)
8954     {
8955       if (location_type == PROBE_LOCATION)
8956         return &tracepoint_probe_breakpoint_ops;
8957       else
8958         return &tracepoint_breakpoint_ops;
8959     }
8960   else
8961     {
8962       if (location_type == PROBE_LOCATION)
8963         return &bkpt_probe_breakpoint_ops;
8964       else
8965         return &bkpt_breakpoint_ops;
8966     }
8967 }
8968
8969 /* See breakpoint.h.  */
8970
8971 const struct breakpoint_ops *
8972 breakpoint_ops_for_event_location (const struct event_location *location,
8973                                    bool is_tracepoint)
8974 {
8975   if (location != nullptr)
8976     return breakpoint_ops_for_event_location_type
8977       (event_location_type (location), is_tracepoint);
8978   return is_tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops;
8979 }
8980
8981 /* See breakpoint.h.  */
8982
8983 int
8984 create_breakpoint (struct gdbarch *gdbarch,
8985                    struct event_location *location,
8986                    const char *cond_string,
8987                    int thread, const char *extra_string,
8988                    bool force_condition, int parse_extra,
8989                    int tempflag, enum bptype type_wanted,
8990                    int ignore_count,
8991                    enum auto_boolean pending_break_support,
8992                    const struct breakpoint_ops *ops,
8993                    int from_tty, int enabled, int internal,
8994                    unsigned flags)
8995 {
8996   struct linespec_result canonical;
8997   int pending = 0;
8998   int task = 0;
8999   int prev_bkpt_count = breakpoint_count;
9000
9001   gdb_assert (ops != NULL);
9002
9003   /* If extra_string isn't useful, set it to NULL.  */
9004   if (extra_string != NULL && *extra_string == '\0')
9005     extra_string = NULL;
9006
9007   try
9008     {
9009       ops->create_sals_from_location (location, &canonical, type_wanted);
9010     }
9011   catch (const gdb_exception_error &e)
9012     {
9013       /* If caller is interested in rc value from parse, set
9014          value.  */
9015       if (e.error == NOT_FOUND_ERROR)
9016         {
9017           /* If pending breakpoint support is turned off, throw
9018              error.  */
9019
9020           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9021             throw;
9022
9023           exception_print (gdb_stderr, e);
9024
9025           /* If pending breakpoint support is auto query and the user
9026              selects no, then simply return the error code.  */
9027           if (pending_break_support == AUTO_BOOLEAN_AUTO
9028               && !nquery (_("Make %s pending on future shared library load? "),
9029                           bptype_string (type_wanted)))
9030             return 0;
9031
9032           /* At this point, either the user was queried about setting
9033              a pending breakpoint and selected yes, or pending
9034              breakpoint behavior is on and thus a pending breakpoint
9035              is defaulted on behalf of the user.  */
9036           pending = 1;
9037         }
9038       else
9039         throw;
9040     }
9041
9042   if (!pending && canonical.lsals.empty ())
9043     return 0;
9044
9045   /* Resolve all line numbers to PC's and verify that the addresses
9046      are ok for the target.  */
9047   if (!pending)
9048     {
9049       for (auto &lsal : canonical.lsals)
9050         breakpoint_sals_to_pc (lsal.sals);
9051     }
9052
9053   /* Fast tracepoints may have additional restrictions on location.  */
9054   if (!pending && type_wanted == bp_fast_tracepoint)
9055     {
9056       for (const auto &lsal : canonical.lsals)
9057         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9058     }
9059
9060   /* Verify that condition can be parsed, before setting any
9061      breakpoints.  Allocate a separate condition expression for each
9062      breakpoint.  */
9063   if (!pending)
9064     {
9065       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9066       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9067
9068       if (parse_extra)
9069         {
9070           gdb::unique_xmalloc_ptr<char> rest;
9071           gdb::unique_xmalloc_ptr<char> cond;
9072
9073           const linespec_sals &lsal = canonical.lsals[0];
9074
9075           find_condition_and_thread_for_sals (lsal.sals, extra_string,
9076                                               &cond, &thread, &task, &rest);
9077           cond_string_copy = std::move (cond);
9078           extra_string_copy = std::move (rest);
9079         }
9080       else
9081         {
9082           if (type_wanted != bp_dprintf
9083               && extra_string != NULL && *extra_string != '\0')
9084                 error (_("Garbage '%s' at end of location"), extra_string);
9085
9086           /* Check the validity of the condition.  We should error out
9087              if the condition is invalid at all of the locations and
9088              if it is not forced.  In the PARSE_EXTRA case above, this
9089              check is done when parsing the EXTRA_STRING.  */
9090           if (cond_string != nullptr && !force_condition)
9091             {
9092               int num_failures = 0;
9093               const linespec_sals &lsal = canonical.lsals[0];
9094               for (const auto &sal : lsal.sals)
9095                 {
9096                   const char *cond = cond_string;
9097                   try
9098                     {
9099                       parse_exp_1 (&cond, sal.pc, block_for_pc (sal.pc), 0);
9100                       /* One success is sufficient to keep going.  */
9101                       break;
9102                     }
9103                   catch (const gdb_exception_error &)
9104                     {
9105                       num_failures++;
9106                       /* If this is the last sal, error out.  */
9107                       if (num_failures == lsal.sals.size ())
9108                         throw;
9109                     }
9110                 }
9111             }
9112
9113           /* Create a private copy of condition string.  */
9114           if (cond_string)
9115             cond_string_copy.reset (xstrdup (cond_string));
9116           /* Create a private copy of any extra string.  */
9117           if (extra_string)
9118             extra_string_copy.reset (xstrdup (extra_string));
9119         }
9120
9121       ops->create_breakpoints_sal (gdbarch, &canonical,
9122                                    std::move (cond_string_copy),
9123                                    std::move (extra_string_copy),
9124                                    type_wanted,
9125                                    tempflag ? disp_del : disp_donttouch,
9126                                    thread, task, ignore_count, ops,
9127                                    from_tty, enabled, internal, flags);
9128     }
9129   else
9130     {
9131       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9132
9133       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9134       b->location = copy_event_location (location);
9135
9136       if (parse_extra)
9137         b->cond_string = NULL;
9138       else
9139         {
9140           /* Create a private copy of condition string.  */
9141           b->cond_string.reset (cond_string != NULL
9142                                 ? xstrdup (cond_string)
9143                                 : NULL);
9144           b->thread = thread;
9145         }
9146
9147       /* Create a private copy of any extra string.  */
9148       b->extra_string.reset (extra_string != NULL
9149                              ? xstrdup (extra_string)
9150                              : NULL);
9151       b->ignore_count = ignore_count;
9152       b->disposition = tempflag ? disp_del : disp_donttouch;
9153       b->condition_not_parsed = 1;
9154       b->enable_state = enabled ? bp_enabled : bp_disabled;
9155       if ((type_wanted != bp_breakpoint
9156            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9157         b->pspace = current_program_space;
9158
9159       install_breakpoint (internal, std::move (b), 0);
9160     }
9161   
9162   if (canonical.lsals.size () > 1)
9163     {
9164       warning (_("Multiple breakpoints were set.\nUse the "
9165                  "\"delete\" command to delete unwanted breakpoints."));
9166       prev_breakpoint_count = prev_bkpt_count;
9167     }
9168
9169   update_global_location_list (UGLL_MAY_INSERT);
9170
9171   return 1;
9172 }
9173
9174 /* Set a breakpoint.
9175    ARG is a string describing breakpoint address,
9176    condition, and thread.
9177    FLAG specifies if a breakpoint is hardware on,
9178    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9179    and BP_TEMPFLAG.  */
9180
9181 static void
9182 break_command_1 (const char *arg, int flag, int from_tty)
9183 {
9184   int tempflag = flag & BP_TEMPFLAG;
9185   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9186                              ? bp_hardware_breakpoint
9187                              : bp_breakpoint);
9188
9189   event_location_up location = string_to_event_location (&arg, current_language);
9190   const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
9191     (location.get (), false /* is_tracepoint */);
9192
9193   create_breakpoint (get_current_arch (),
9194                      location.get (),
9195                      NULL, 0, arg, false, 1 /* parse arg */,
9196                      tempflag, type_wanted,
9197                      0 /* Ignore count */,
9198                      pending_break_support,
9199                      ops,
9200                      from_tty,
9201                      1 /* enabled */,
9202                      0 /* internal */,
9203                      0);
9204 }
9205
9206 /* Helper function for break_command_1 and disassemble_command.  */
9207
9208 void
9209 resolve_sal_pc (struct symtab_and_line *sal)
9210 {
9211   CORE_ADDR pc;
9212
9213   if (sal->pc == 0 && sal->symtab != NULL)
9214     {
9215       if (!find_line_pc (sal->symtab, sal->line, &pc))
9216         error (_("No line %d in file \"%s\"."),
9217                sal->line, symtab_to_filename_for_display (sal->symtab));
9218       sal->pc = pc;
9219
9220       /* If this SAL corresponds to a breakpoint inserted using a line
9221          number, then skip the function prologue if necessary.  */
9222       if (sal->explicit_line)
9223         skip_prologue_sal (sal);
9224     }
9225
9226   if (sal->section == 0 && sal->symtab != NULL)
9227     {
9228       const struct blockvector *bv;
9229       const struct block *b;
9230       struct symbol *sym;
9231
9232       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9233                                     sal->symtab->compunit ());
9234       if (bv != NULL)
9235         {
9236           sym = block_linkage_function (b);
9237           if (sym != NULL)
9238             {
9239               fixup_symbol_section (sym, sal->symtab->objfile ());
9240               sal->section = sym->obj_section (sal->symtab->objfile ());
9241             }
9242           else
9243             {
9244               /* It really is worthwhile to have the section, so we'll
9245                  just have to look harder. This case can be executed
9246                  if we have line numbers but no functions (as can
9247                  happen in assembly source).  */
9248
9249               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9250               switch_to_program_space_and_thread (sal->pspace);
9251
9252               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9253               if (msym.minsym)
9254                 sal->section = msym.obj_section ();
9255             }
9256         }
9257     }
9258 }
9259
9260 void
9261 break_command (const char *arg, int from_tty)
9262 {
9263   break_command_1 (arg, 0, from_tty);
9264 }
9265
9266 void
9267 tbreak_command (const char *arg, int from_tty)
9268 {
9269   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9270 }
9271
9272 static void
9273 hbreak_command (const char *arg, int from_tty)
9274 {
9275   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9276 }
9277
9278 static void
9279 thbreak_command (const char *arg, int from_tty)
9280 {
9281   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9282 }
9283
9284 static void
9285 stop_command (const char *arg, int from_tty)
9286 {
9287   printf_filtered (_("Specify the type of breakpoint to set.\n\
9288 Usage: stop in <function | address>\n\
9289        stop at <line>\n"));
9290 }
9291
9292 static void
9293 stopin_command (const char *arg, int from_tty)
9294 {
9295   int badInput = 0;
9296
9297   if (arg == NULL)
9298     badInput = 1;
9299   else if (*arg != '*')
9300     {
9301       const char *argptr = arg;
9302       int hasColon = 0;
9303
9304       /* Look for a ':'.  If this is a line number specification, then
9305          say it is bad, otherwise, it should be an address or
9306          function/method name.  */
9307       while (*argptr && !hasColon)
9308         {
9309           hasColon = (*argptr == ':');
9310           argptr++;
9311         }
9312
9313       if (hasColon)
9314         badInput = (*argptr != ':');    /* Not a class::method */
9315       else
9316         badInput = isdigit (*arg);      /* a simple line number */
9317     }
9318
9319   if (badInput)
9320     printf_filtered (_("Usage: stop in <function | address>\n"));
9321   else
9322     break_command_1 (arg, 0, from_tty);
9323 }
9324
9325 static void
9326 stopat_command (const char *arg, int from_tty)
9327 {
9328   int badInput = 0;
9329
9330   if (arg == NULL || *arg == '*')       /* no line number */
9331     badInput = 1;
9332   else
9333     {
9334       const char *argptr = arg;
9335       int hasColon = 0;
9336
9337       /* Look for a ':'.  If there is a '::' then get out, otherwise
9338          it is probably a line number.  */
9339       while (*argptr && !hasColon)
9340         {
9341           hasColon = (*argptr == ':');
9342           argptr++;
9343         }
9344
9345       if (hasColon)
9346         badInput = (*argptr == ':');    /* we have class::method */
9347       else
9348         badInput = !isdigit (*arg);     /* not a line number */
9349     }
9350
9351   if (badInput)
9352     printf_filtered (_("Usage: stop at LINE\n"));
9353   else
9354     break_command_1 (arg, 0, from_tty);
9355 }
9356
9357 /* The dynamic printf command is mostly like a regular breakpoint, but
9358    with a prewired command list consisting of a single output command,
9359    built from extra arguments supplied on the dprintf command
9360    line.  */
9361
9362 static void
9363 dprintf_command (const char *arg, int from_tty)
9364 {
9365   event_location_up location = string_to_event_location (&arg, current_language);
9366
9367   /* If non-NULL, ARG should have been advanced past the location;
9368      the next character must be ','.  */
9369   if (arg != NULL)
9370     {
9371       if (arg[0] != ',' || arg[1] == '\0')
9372         error (_("Format string required"));
9373       else
9374         {
9375           /* Skip the comma.  */
9376           ++arg;
9377         }
9378     }
9379
9380   create_breakpoint (get_current_arch (),
9381                      location.get (),
9382                      NULL, 0, arg, false, 1 /* parse arg */,
9383                      0, bp_dprintf,
9384                      0 /* Ignore count */,
9385                      pending_break_support,
9386                      &dprintf_breakpoint_ops,
9387                      from_tty,
9388                      1 /* enabled */,
9389                      0 /* internal */,
9390                      0);
9391 }
9392
9393 static void
9394 agent_printf_command (const char *arg, int from_tty)
9395 {
9396   error (_("May only run agent-printf on the target"));
9397 }
9398
9399 /* Implement the "breakpoint_hit" breakpoint_ops method for
9400    ranged breakpoints.  */
9401
9402 static int
9403 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9404                                   const address_space *aspace,
9405                                   CORE_ADDR bp_addr,
9406                                   const target_waitstatus &ws)
9407 {
9408   if (ws.kind () != TARGET_WAITKIND_STOPPED
9409       || ws.sig () != GDB_SIGNAL_TRAP)
9410     return 0;
9411
9412   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9413                                          bl->length, aspace, bp_addr);
9414 }
9415
9416 /* Implement the "resources_needed" breakpoint_ops method for
9417    ranged breakpoints.  */
9418
9419 static int
9420 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9421 {
9422   return target_ranged_break_num_registers ();
9423 }
9424
9425 /* Implement the "print_it" breakpoint_ops method for
9426    ranged breakpoints.  */
9427
9428 static enum print_stop_action
9429 print_it_ranged_breakpoint (bpstat *bs)
9430 {
9431   struct breakpoint *b = bs->breakpoint_at;
9432   struct bp_location *bl = b->loc;
9433   struct ui_out *uiout = current_uiout;
9434
9435   gdb_assert (b->type == bp_hardware_breakpoint);
9436
9437   /* Ranged breakpoints have only one location.  */
9438   gdb_assert (bl && bl->next == NULL);
9439
9440   annotate_breakpoint (b->number);
9441
9442   maybe_print_thread_hit_breakpoint (uiout);
9443
9444   if (b->disposition == disp_del)
9445     uiout->text ("Temporary ranged breakpoint ");
9446   else
9447     uiout->text ("Ranged breakpoint ");
9448   if (uiout->is_mi_like_p ())
9449     {
9450       uiout->field_string ("reason",
9451                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9452       uiout->field_string ("disp", bpdisp_text (b->disposition));
9453     }
9454   uiout->field_signed ("bkptno", b->number);
9455   uiout->text (", ");
9456
9457   return PRINT_SRC_AND_LOC;
9458 }
9459
9460 /* Implement the "print_one" breakpoint_ops method for
9461    ranged breakpoints.  */
9462
9463 static void
9464 print_one_ranged_breakpoint (struct breakpoint *b,
9465                              struct bp_location **last_loc)
9466 {
9467   struct bp_location *bl = b->loc;
9468   struct value_print_options opts;
9469   struct ui_out *uiout = current_uiout;
9470
9471   /* Ranged breakpoints have only one location.  */
9472   gdb_assert (bl && bl->next == NULL);
9473
9474   get_user_print_options (&opts);
9475
9476   if (opts.addressprint)
9477     /* We don't print the address range here, it will be printed later
9478        by print_one_detail_ranged_breakpoint.  */
9479     uiout->field_skip ("addr");
9480   annotate_field (5);
9481   print_breakpoint_location (b, bl);
9482   *last_loc = bl;
9483 }
9484
9485 /* Implement the "print_one_detail" breakpoint_ops method for
9486    ranged breakpoints.  */
9487
9488 static void
9489 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9490                                     struct ui_out *uiout)
9491 {
9492   CORE_ADDR address_start, address_end;
9493   struct bp_location *bl = b->loc;
9494   string_file stb;
9495
9496   gdb_assert (bl);
9497
9498   address_start = bl->address;
9499   address_end = address_start + bl->length - 1;
9500
9501   uiout->text ("\taddress range: ");
9502   stb.printf ("[%s, %s]",
9503               print_core_address (bl->gdbarch, address_start),
9504               print_core_address (bl->gdbarch, address_end));
9505   uiout->field_stream ("addr", stb);
9506   uiout->text ("\n");
9507 }
9508
9509 /* Implement the "print_mention" breakpoint_ops method for
9510    ranged breakpoints.  */
9511
9512 static void
9513 print_mention_ranged_breakpoint (struct breakpoint *b)
9514 {
9515   struct bp_location *bl = b->loc;
9516   struct ui_out *uiout = current_uiout;
9517
9518   gdb_assert (bl);
9519   gdb_assert (b->type == bp_hardware_breakpoint);
9520
9521   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9522                   b->number, paddress (bl->gdbarch, bl->address),
9523                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9524 }
9525
9526 /* Implement the "print_recreate" breakpoint_ops method for
9527    ranged breakpoints.  */
9528
9529 static void
9530 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9531 {
9532   fprintf_unfiltered (fp, "break-range %s, %s",
9533                       event_location_to_string (b->location.get ()),
9534                       event_location_to_string (b->location_range_end.get ()));
9535   print_recreate_thread (b, fp);
9536 }
9537
9538 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9539
9540 static struct breakpoint_ops ranged_breakpoint_ops;
9541
9542 /* Find the address where the end of the breakpoint range should be
9543    placed, given the SAL of the end of the range.  This is so that if
9544    the user provides a line number, the end of the range is set to the
9545    last instruction of the given line.  */
9546
9547 static CORE_ADDR
9548 find_breakpoint_range_end (struct symtab_and_line sal)
9549 {
9550   CORE_ADDR end;
9551
9552   /* If the user provided a PC value, use it.  Otherwise,
9553      find the address of the end of the given location.  */
9554   if (sal.explicit_pc)
9555     end = sal.pc;
9556   else
9557     {
9558       int ret;
9559       CORE_ADDR start;
9560
9561       ret = find_line_pc_range (sal, &start, &end);
9562       if (!ret)
9563         error (_("Could not find location of the end of the range."));
9564
9565       /* find_line_pc_range returns the start of the next line.  */
9566       end--;
9567     }
9568
9569   return end;
9570 }
9571
9572 /* Implement the "break-range" CLI command.  */
9573
9574 static void
9575 break_range_command (const char *arg, int from_tty)
9576 {
9577   const char *arg_start;
9578   struct linespec_result canonical_start, canonical_end;
9579   int bp_count, can_use_bp, length;
9580   CORE_ADDR end;
9581   struct breakpoint *b;
9582
9583   /* We don't support software ranged breakpoints.  */
9584   if (target_ranged_break_num_registers () < 0)
9585     error (_("This target does not support hardware ranged breakpoints."));
9586
9587   bp_count = hw_breakpoint_used_count ();
9588   bp_count += target_ranged_break_num_registers ();
9589   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9590                                                    bp_count, 0);
9591   if (can_use_bp < 0)
9592     error (_("Hardware breakpoints used exceeds limit."));
9593
9594   arg = skip_spaces (arg);
9595   if (arg == NULL || arg[0] == '\0')
9596     error(_("No address range specified."));
9597
9598   arg_start = arg;
9599   event_location_up start_location = string_to_event_location (&arg,
9600                                                                current_language);
9601   parse_breakpoint_sals (start_location.get (), &canonical_start);
9602
9603   if (arg[0] != ',')
9604     error (_("Too few arguments."));
9605   else if (canonical_start.lsals.empty ())
9606     error (_("Could not find location of the beginning of the range."));
9607
9608   const linespec_sals &lsal_start = canonical_start.lsals[0];
9609
9610   if (canonical_start.lsals.size () > 1
9611       || lsal_start.sals.size () != 1)
9612     error (_("Cannot create a ranged breakpoint with multiple locations."));
9613
9614   const symtab_and_line &sal_start = lsal_start.sals[0];
9615   std::string addr_string_start (arg_start, arg - arg_start);
9616
9617   arg++;        /* Skip the comma.  */
9618   arg = skip_spaces (arg);
9619
9620   /* Parse the end location.  */
9621
9622   arg_start = arg;
9623
9624   /* We call decode_line_full directly here instead of using
9625      parse_breakpoint_sals because we need to specify the start location's
9626      symtab and line as the default symtab and line for the end of the
9627      range.  This makes it possible to have ranges like "foo.c:27, +14",
9628      where +14 means 14 lines from the start location.  */
9629   event_location_up end_location = string_to_event_location (&arg,
9630                                                              current_language);
9631   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9632                     sal_start.symtab, sal_start.line,
9633                     &canonical_end, NULL, NULL);
9634
9635   if (canonical_end.lsals.empty ())
9636     error (_("Could not find location of the end of the range."));
9637
9638   const linespec_sals &lsal_end = canonical_end.lsals[0];
9639   if (canonical_end.lsals.size () > 1
9640       || lsal_end.sals.size () != 1)
9641     error (_("Cannot create a ranged breakpoint with multiple locations."));
9642
9643   const symtab_and_line &sal_end = lsal_end.sals[0];
9644
9645   end = find_breakpoint_range_end (sal_end);
9646   if (sal_start.pc > end)
9647     error (_("Invalid address range, end precedes start."));
9648
9649   length = end - sal_start.pc + 1;
9650   if (length < 0)
9651     /* Length overflowed.  */
9652     error (_("Address range too large."));
9653   else if (length == 1)
9654     {
9655       /* This range is simple enough to be handled by
9656          the `hbreak' command.  */
9657       hbreak_command (&addr_string_start[0], 1);
9658
9659       return;
9660     }
9661
9662   /* Now set up the breakpoint.  */
9663   b = set_raw_breakpoint (get_current_arch (), sal_start,
9664                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9665   set_breakpoint_count (breakpoint_count + 1);
9666   b->number = breakpoint_count;
9667   b->disposition = disp_donttouch;
9668   b->location = std::move (start_location);
9669   b->location_range_end = std::move (end_location);
9670   b->loc->length = length;
9671
9672   mention (b);
9673   gdb::observers::breakpoint_created.notify (b);
9674   update_global_location_list (UGLL_MAY_INSERT);
9675 }
9676
9677 /*  Return non-zero if EXP is verified as constant.  Returned zero
9678     means EXP is variable.  Also the constant detection may fail for
9679     some constant expressions and in such case still falsely return
9680     zero.  */
9681
9682 static bool
9683 watchpoint_exp_is_const (const struct expression *exp)
9684 {
9685   return exp->op->constant_p ();
9686 }
9687
9688 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9689
9690 static void
9691 re_set_watchpoint (struct breakpoint *b)
9692 {
9693   struct watchpoint *w = (struct watchpoint *) b;
9694
9695   /* Watchpoint can be either on expression using entirely global
9696      variables, or it can be on local variables.
9697
9698      Watchpoints of the first kind are never auto-deleted, and even
9699      persist across program restarts.  Since they can use variables
9700      from shared libraries, we need to reparse expression as libraries
9701      are loaded and unloaded.
9702
9703      Watchpoints on local variables can also change meaning as result
9704      of solib event.  For example, if a watchpoint uses both a local
9705      and a global variables in expression, it's a local watchpoint,
9706      but unloading of a shared library will make the expression
9707      invalid.  This is not a very common use case, but we still
9708      re-evaluate expression, to avoid surprises to the user.
9709
9710      Note that for local watchpoints, we re-evaluate it only if
9711      watchpoints frame id is still valid.  If it's not, it means the
9712      watchpoint is out of scope and will be deleted soon.  In fact,
9713      I'm not sure we'll ever be called in this case.
9714
9715      If a local watchpoint's frame id is still valid, then
9716      w->exp_valid_block is likewise valid, and we can safely use it.
9717
9718      Don't do anything about disabled watchpoints, since they will be
9719      reevaluated again when enabled.  */
9720   update_watchpoint (w, 1 /* reparse */);
9721 }
9722
9723 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
9724
9725 static int
9726 insert_watchpoint (struct bp_location *bl)
9727 {
9728   struct watchpoint *w = (struct watchpoint *) bl->owner;
9729   int length = w->exact ? 1 : bl->length;
9730
9731   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9732                                    w->cond_exp.get ());
9733 }
9734
9735 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
9736
9737 static int
9738 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
9739 {
9740   struct watchpoint *w = (struct watchpoint *) bl->owner;
9741   int length = w->exact ? 1 : bl->length;
9742
9743   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9744                                    w->cond_exp.get ());
9745 }
9746
9747 static int
9748 breakpoint_hit_watchpoint (const struct bp_location *bl,
9749                            const address_space *aspace, CORE_ADDR bp_addr,
9750                            const target_waitstatus &ws)
9751 {
9752   struct breakpoint *b = bl->owner;
9753   struct watchpoint *w = (struct watchpoint *) b;
9754
9755   /* Continuable hardware watchpoints are treated as non-existent if the
9756      reason we stopped wasn't a hardware watchpoint (we didn't stop on
9757      some data address).  Otherwise gdb won't stop on a break instruction
9758      in the code (not from a breakpoint) when a hardware watchpoint has
9759      been defined.  Also skip watchpoints which we know did not trigger
9760      (did not match the data address).  */
9761   if (is_hardware_watchpoint (b)
9762       && w->watchpoint_triggered == watch_triggered_no)
9763     return 0;
9764
9765   return 1;
9766 }
9767
9768 static void
9769 check_status_watchpoint (bpstat *bs)
9770 {
9771   gdb_assert (is_watchpoint (bs->breakpoint_at));
9772
9773   bpstat_check_watchpoint (bs);
9774 }
9775
9776 /* Implement the "resources_needed" breakpoint_ops method for
9777    hardware watchpoints.  */
9778
9779 static int
9780 resources_needed_watchpoint (const struct bp_location *bl)
9781 {
9782   struct watchpoint *w = (struct watchpoint *) bl->owner;
9783   int length = w->exact? 1 : bl->length;
9784
9785   return target_region_ok_for_hw_watchpoint (bl->address, length);
9786 }
9787
9788 /* Implement the "works_in_software_mode" breakpoint_ops method for
9789    hardware watchpoints.  */
9790
9791 static int
9792 works_in_software_mode_watchpoint (const struct breakpoint *b)
9793 {
9794   /* Read and access watchpoints only work with hardware support.  */
9795   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9796 }
9797
9798 static enum print_stop_action
9799 print_it_watchpoint (bpstat *bs)
9800 {
9801   struct breakpoint *b;
9802   enum print_stop_action result;
9803   struct watchpoint *w;
9804   struct ui_out *uiout = current_uiout;
9805
9806   gdb_assert (bs->bp_location_at != NULL);
9807
9808   b = bs->breakpoint_at;
9809   w = (struct watchpoint *) b;
9810
9811   annotate_watchpoint (b->number);
9812   maybe_print_thread_hit_breakpoint (uiout);
9813
9814   string_file stb;
9815
9816   gdb::optional<ui_out_emit_tuple> tuple_emitter;
9817   switch (b->type)
9818     {
9819     case bp_watchpoint:
9820     case bp_hardware_watchpoint:
9821       if (uiout->is_mi_like_p ())
9822         uiout->field_string
9823           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9824       mention (b);
9825       tuple_emitter.emplace (uiout, "value");
9826       uiout->text ("\nOld value = ");
9827       watchpoint_value_print (bs->old_val.get (), &stb);
9828       uiout->field_stream ("old", stb);
9829       uiout->text ("\nNew value = ");
9830       watchpoint_value_print (w->val.get (), &stb);
9831       uiout->field_stream ("new", stb);
9832       uiout->text ("\n");
9833       /* More than one watchpoint may have been triggered.  */
9834       result = PRINT_UNKNOWN;
9835       break;
9836
9837     case bp_read_watchpoint:
9838       if (uiout->is_mi_like_p ())
9839         uiout->field_string
9840           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
9841       mention (b);
9842       tuple_emitter.emplace (uiout, "value");
9843       uiout->text ("\nValue = ");
9844       watchpoint_value_print (w->val.get (), &stb);
9845       uiout->field_stream ("value", stb);
9846       uiout->text ("\n");
9847       result = PRINT_UNKNOWN;
9848       break;
9849
9850     case bp_access_watchpoint:
9851       if (bs->old_val != NULL)
9852         {
9853           if (uiout->is_mi_like_p ())
9854             uiout->field_string
9855               ("reason",
9856                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9857           mention (b);
9858           tuple_emitter.emplace (uiout, "value");
9859           uiout->text ("\nOld value = ");
9860           watchpoint_value_print (bs->old_val.get (), &stb);
9861           uiout->field_stream ("old", stb);
9862           uiout->text ("\nNew value = ");
9863         }
9864       else
9865         {
9866           mention (b);
9867           if (uiout->is_mi_like_p ())
9868             uiout->field_string
9869               ("reason",
9870                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
9871           tuple_emitter.emplace (uiout, "value");
9872           uiout->text ("\nValue = ");
9873         }
9874       watchpoint_value_print (w->val.get (), &stb);
9875       uiout->field_stream ("new", stb);
9876       uiout->text ("\n");
9877       result = PRINT_UNKNOWN;
9878       break;
9879     default:
9880       result = PRINT_UNKNOWN;
9881     }
9882
9883   return result;
9884 }
9885
9886 /* Implement the "print_mention" breakpoint_ops method for hardware
9887    watchpoints.  */
9888
9889 static void
9890 print_mention_watchpoint (struct breakpoint *b)
9891 {
9892   struct watchpoint *w = (struct watchpoint *) b;
9893   struct ui_out *uiout = current_uiout;
9894   const char *tuple_name;
9895
9896   switch (b->type)
9897     {
9898     case bp_watchpoint:
9899       uiout->text ("Watchpoint ");
9900       tuple_name = "wpt";
9901       break;
9902     case bp_hardware_watchpoint:
9903       uiout->text ("Hardware watchpoint ");
9904       tuple_name = "wpt";
9905       break;
9906     case bp_read_watchpoint:
9907       uiout->text ("Hardware read watchpoint ");
9908       tuple_name = "hw-rwpt";
9909       break;
9910     case bp_access_watchpoint:
9911       uiout->text ("Hardware access (read/write) watchpoint ");
9912       tuple_name = "hw-awpt";
9913       break;
9914     default:
9915       internal_error (__FILE__, __LINE__,
9916                       _("Invalid hardware watchpoint type."));
9917     }
9918
9919   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
9920   uiout->field_signed ("number", b->number);
9921   uiout->text (": ");
9922   uiout->field_string ("exp", w->exp_string.get ());
9923 }
9924
9925 /* Implement the "print_recreate" breakpoint_ops method for
9926    watchpoints.  */
9927
9928 static void
9929 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
9930 {
9931   struct watchpoint *w = (struct watchpoint *) b;
9932
9933   switch (b->type)
9934     {
9935     case bp_watchpoint:
9936     case bp_hardware_watchpoint:
9937       fprintf_unfiltered (fp, "watch");
9938       break;
9939     case bp_read_watchpoint:
9940       fprintf_unfiltered (fp, "rwatch");
9941       break;
9942     case bp_access_watchpoint:
9943       fprintf_unfiltered (fp, "awatch");
9944       break;
9945     default:
9946       internal_error (__FILE__, __LINE__,
9947                       _("Invalid watchpoint type."));
9948     }
9949
9950   fprintf_unfiltered (fp, " %s", w->exp_string.get ());
9951   print_recreate_thread (b, fp);
9952 }
9953
9954 /* Implement the "explains_signal" breakpoint_ops method for
9955    watchpoints.  */
9956
9957 static int
9958 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
9959 {
9960   /* A software watchpoint cannot cause a signal other than
9961      GDB_SIGNAL_TRAP.  */
9962   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
9963     return 0;
9964
9965   return 1;
9966 }
9967
9968 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
9969
9970 static struct breakpoint_ops watchpoint_breakpoint_ops;
9971
9972 /* Implement the "insert" breakpoint_ops method for
9973    masked hardware watchpoints.  */
9974
9975 static int
9976 insert_masked_watchpoint (struct bp_location *bl)
9977 {
9978   struct watchpoint *w = (struct watchpoint *) bl->owner;
9979
9980   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
9981                                         bl->watchpoint_type);
9982 }
9983
9984 /* Implement the "remove" breakpoint_ops method for
9985    masked hardware watchpoints.  */
9986
9987 static int
9988 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
9989 {
9990   struct watchpoint *w = (struct watchpoint *) bl->owner;
9991
9992   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
9993                                         bl->watchpoint_type);
9994 }
9995
9996 /* Implement the "resources_needed" breakpoint_ops method for
9997    masked hardware watchpoints.  */
9998
9999 static int
10000 resources_needed_masked_watchpoint (const struct bp_location *bl)
10001 {
10002   struct watchpoint *w = (struct watchpoint *) bl->owner;
10003
10004   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10005 }
10006
10007 /* Implement the "works_in_software_mode" breakpoint_ops method for
10008    masked hardware watchpoints.  */
10009
10010 static int
10011 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10012 {
10013   return 0;
10014 }
10015
10016 /* Implement the "print_it" breakpoint_ops method for
10017    masked hardware watchpoints.  */
10018
10019 static enum print_stop_action
10020 print_it_masked_watchpoint (bpstat *bs)
10021 {
10022   struct breakpoint *b = bs->breakpoint_at;
10023   struct ui_out *uiout = current_uiout;
10024
10025   /* Masked watchpoints have only one location.  */
10026   gdb_assert (b->loc && b->loc->next == NULL);
10027
10028   annotate_watchpoint (b->number);
10029   maybe_print_thread_hit_breakpoint (uiout);
10030
10031   switch (b->type)
10032     {
10033     case bp_hardware_watchpoint:
10034       if (uiout->is_mi_like_p ())
10035         uiout->field_string
10036           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10037       break;
10038
10039     case bp_read_watchpoint:
10040       if (uiout->is_mi_like_p ())
10041         uiout->field_string
10042           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10043       break;
10044
10045     case bp_access_watchpoint:
10046       if (uiout->is_mi_like_p ())
10047         uiout->field_string
10048           ("reason",
10049            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10050       break;
10051     default:
10052       internal_error (__FILE__, __LINE__,
10053                       _("Invalid hardware watchpoint type."));
10054     }
10055
10056   mention (b);
10057   uiout->text (_("\n\
10058 Check the underlying instruction at PC for the memory\n\
10059 address and value which triggered this watchpoint.\n"));
10060   uiout->text ("\n");
10061
10062   /* More than one watchpoint may have been triggered.  */
10063   return PRINT_UNKNOWN;
10064 }
10065
10066 /* Implement the "print_one_detail" breakpoint_ops method for
10067    masked hardware watchpoints.  */
10068
10069 static void
10070 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10071                                     struct ui_out *uiout)
10072 {
10073   struct watchpoint *w = (struct watchpoint *) b;
10074
10075   /* Masked watchpoints have only one location.  */
10076   gdb_assert (b->loc && b->loc->next == NULL);
10077
10078   uiout->text ("\tmask ");
10079   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10080   uiout->text ("\n");
10081 }
10082
10083 /* Implement the "print_mention" breakpoint_ops method for
10084    masked hardware watchpoints.  */
10085
10086 static void
10087 print_mention_masked_watchpoint (struct breakpoint *b)
10088 {
10089   struct watchpoint *w = (struct watchpoint *) b;
10090   struct ui_out *uiout = current_uiout;
10091   const char *tuple_name;
10092
10093   switch (b->type)
10094     {
10095     case bp_hardware_watchpoint:
10096       uiout->text ("Masked hardware watchpoint ");
10097       tuple_name = "wpt";
10098       break;
10099     case bp_read_watchpoint:
10100       uiout->text ("Masked hardware read watchpoint ");
10101       tuple_name = "hw-rwpt";
10102       break;
10103     case bp_access_watchpoint:
10104       uiout->text ("Masked hardware access (read/write) watchpoint ");
10105       tuple_name = "hw-awpt";
10106       break;
10107     default:
10108       internal_error (__FILE__, __LINE__,
10109                       _("Invalid hardware watchpoint type."));
10110     }
10111
10112   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10113   uiout->field_signed ("number", b->number);
10114   uiout->text (": ");
10115   uiout->field_string ("exp", w->exp_string.get ());
10116 }
10117
10118 /* Implement the "print_recreate" breakpoint_ops method for
10119    masked hardware watchpoints.  */
10120
10121 static void
10122 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10123 {
10124   struct watchpoint *w = (struct watchpoint *) b;
10125
10126   switch (b->type)
10127     {
10128     case bp_hardware_watchpoint:
10129       fprintf_unfiltered (fp, "watch");
10130       break;
10131     case bp_read_watchpoint:
10132       fprintf_unfiltered (fp, "rwatch");
10133       break;
10134     case bp_access_watchpoint:
10135       fprintf_unfiltered (fp, "awatch");
10136       break;
10137     default:
10138       internal_error (__FILE__, __LINE__,
10139                       _("Invalid hardware watchpoint type."));
10140     }
10141
10142   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string.get (),
10143                       phex (w->hw_wp_mask, sizeof (CORE_ADDR)));
10144   print_recreate_thread (b, fp);
10145 }
10146
10147 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10148
10149 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10150
10151 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10152
10153 static bool
10154 is_masked_watchpoint (const struct breakpoint *b)
10155 {
10156   return b->ops == &masked_watchpoint_breakpoint_ops;
10157 }
10158
10159 /* accessflag:  hw_write:  watch write, 
10160                 hw_read:   watch read, 
10161                 hw_access: watch access (read or write) */
10162 static void
10163 watch_command_1 (const char *arg, int accessflag, int from_tty,
10164                  bool just_location, bool internal)
10165 {
10166   struct breakpoint *scope_breakpoint = NULL;
10167   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10168   struct value *result;
10169   int saved_bitpos = 0, saved_bitsize = 0;
10170   const char *exp_start = NULL;
10171   const char *exp_end = NULL;
10172   const char *tok, *end_tok;
10173   int toklen = -1;
10174   const char *cond_start = NULL;
10175   const char *cond_end = NULL;
10176   enum bptype bp_type;
10177   int thread = -1;
10178   /* Flag to indicate whether we are going to use masks for
10179      the hardware watchpoint.  */
10180   bool use_mask = false;
10181   CORE_ADDR mask = 0;
10182   int task = 0;
10183
10184   /* Make sure that we actually have parameters to parse.  */
10185   if (arg != NULL && arg[0] != '\0')
10186     {
10187       const char *value_start;
10188
10189       exp_end = arg + strlen (arg);
10190
10191       /* Look for "parameter value" pairs at the end
10192          of the arguments string.  */
10193       for (tok = exp_end - 1; tok > arg; tok--)
10194         {
10195           /* Skip whitespace at the end of the argument list.  */
10196           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10197             tok--;
10198
10199           /* Find the beginning of the last token.
10200              This is the value of the parameter.  */
10201           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10202             tok--;
10203           value_start = tok + 1;
10204
10205           /* Skip whitespace.  */
10206           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10207             tok--;
10208
10209           end_tok = tok;
10210
10211           /* Find the beginning of the second to last token.
10212              This is the parameter itself.  */
10213           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10214             tok--;
10215           tok++;
10216           toklen = end_tok - tok + 1;
10217
10218           if (toklen == 6 && startswith (tok, "thread"))
10219             {
10220               struct thread_info *thr;
10221               /* At this point we've found a "thread" token, which means
10222                  the user is trying to set a watchpoint that triggers
10223                  only in a specific thread.  */
10224               const char *endp;
10225
10226               if (thread != -1)
10227                 error(_("You can specify only one thread."));
10228
10229               /* Extract the thread ID from the next token.  */
10230               thr = parse_thread_id (value_start, &endp);
10231
10232               /* Check if the user provided a valid thread ID.  */
10233               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10234                 invalid_thread_id_error (value_start);
10235
10236               thread = thr->global_num;
10237             }
10238           else if (toklen == 4 && startswith (tok, "task"))
10239             {
10240               char *tmp;
10241
10242               task = strtol (value_start, &tmp, 0);
10243               if (tmp == value_start)
10244                 error (_("Junk after task keyword."));
10245               if (!valid_task_id (task))
10246                 error (_("Unknown task %d."), task);
10247             }
10248           else if (toklen == 4 && startswith (tok, "mask"))
10249             {
10250               /* We've found a "mask" token, which means the user wants to
10251                  create a hardware watchpoint that is going to have the mask
10252                  facility.  */
10253               struct value *mask_value, *mark;
10254
10255               if (use_mask)
10256                 error(_("You can specify only one mask."));
10257
10258               use_mask = just_location = true;
10259
10260               mark = value_mark ();
10261               mask_value = parse_to_comma_and_eval (&value_start);
10262               mask = value_as_address (mask_value);
10263               value_free_to_mark (mark);
10264             }
10265           else
10266             /* We didn't recognize what we found.  We should stop here.  */
10267             break;
10268
10269           /* Truncate the string and get rid of the "parameter value" pair before
10270              the arguments string is parsed by the parse_exp_1 function.  */
10271           exp_end = tok;
10272         }
10273     }
10274   else
10275     exp_end = arg;
10276
10277   /* Parse the rest of the arguments.  From here on out, everything
10278      is in terms of a newly allocated string instead of the original
10279      ARG.  */
10280   std::string expression (arg, exp_end - arg);
10281   exp_start = arg = expression.c_str ();
10282   innermost_block_tracker tracker;
10283   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10284   exp_end = arg;
10285   /* Remove trailing whitespace from the expression before saving it.
10286      This makes the eventual display of the expression string a bit
10287      prettier.  */
10288   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10289     --exp_end;
10290
10291   /* Checking if the expression is not constant.  */
10292   if (watchpoint_exp_is_const (exp.get ()))
10293     {
10294       int len;
10295
10296       len = exp_end - exp_start;
10297       while (len > 0 && isspace (exp_start[len - 1]))
10298         len--;
10299       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10300     }
10301
10302   exp_valid_block = tracker.block ();
10303   struct value *mark = value_mark ();
10304   struct value *val_as_value = nullptr;
10305   fetch_subexp_value (exp.get (), exp->op.get (), &val_as_value, &result, NULL,
10306                       just_location);
10307
10308   if (val_as_value != NULL && just_location)
10309     {
10310       saved_bitpos = value_bitpos (val_as_value);
10311       saved_bitsize = value_bitsize (val_as_value);
10312     }
10313
10314   value_ref_ptr val;
10315   if (just_location)
10316     {
10317       int ret;
10318
10319       exp_valid_block = NULL;
10320       val = release_value (value_addr (result));
10321       value_free_to_mark (mark);
10322
10323       if (use_mask)
10324         {
10325           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10326                                                    mask);
10327           if (ret == -1)
10328             error (_("This target does not support masked watchpoints."));
10329           else if (ret == -2)
10330             error (_("Invalid mask or memory region."));
10331         }
10332     }
10333   else if (val_as_value != NULL)
10334     val = release_value (val_as_value);
10335
10336   tok = skip_spaces (arg);
10337   end_tok = skip_to_space (tok);
10338
10339   toklen = end_tok - tok;
10340   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10341     {
10342       tok = cond_start = end_tok + 1;
10343       innermost_block_tracker if_tracker;
10344       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10345
10346       /* The watchpoint expression may not be local, but the condition
10347          may still be.  E.g.: `watch global if local > 0'.  */
10348       cond_exp_valid_block = if_tracker.block ();
10349
10350       cond_end = tok;
10351     }
10352   if (*tok)
10353     error (_("Junk at end of command."));
10354
10355   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10356
10357   /* Save this because create_internal_breakpoint below invalidates
10358      'wp_frame'.  */
10359   frame_id watchpoint_frame = get_frame_id (wp_frame);
10360
10361   /* If the expression is "local", then set up a "watchpoint scope"
10362      breakpoint at the point where we've left the scope of the watchpoint
10363      expression.  Create the scope breakpoint before the watchpoint, so
10364      that we will encounter it first in bpstat_stop_status.  */
10365   if (exp_valid_block != NULL && wp_frame != NULL)
10366     {
10367       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10368
10369       if (frame_id_p (caller_frame_id))
10370         {
10371           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10372           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10373
10374           scope_breakpoint
10375             = create_internal_breakpoint (caller_arch, caller_pc,
10376                                           bp_watchpoint_scope,
10377                                           &momentary_breakpoint_ops);
10378
10379           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10380           wp_frame = NULL;
10381
10382           scope_breakpoint->enable_state = bp_enabled;
10383
10384           /* Automatically delete the breakpoint when it hits.  */
10385           scope_breakpoint->disposition = disp_del;
10386
10387           /* Only break in the proper frame (help with recursion).  */
10388           scope_breakpoint->frame_id = caller_frame_id;
10389
10390           /* Set the address at which we will stop.  */
10391           scope_breakpoint->loc->gdbarch = caller_arch;
10392           scope_breakpoint->loc->requested_address = caller_pc;
10393           scope_breakpoint->loc->address
10394             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10395                                          scope_breakpoint->loc->requested_address,
10396                                          scope_breakpoint->type);
10397         }
10398     }
10399
10400   /* Now set up the breakpoint.  We create all watchpoints as hardware
10401      watchpoints here even if hardware watchpoints are turned off, a call
10402      to update_watchpoint later in this function will cause the type to
10403      drop back to bp_watchpoint (software watchpoint) if required.  */
10404
10405   if (accessflag == hw_read)
10406     bp_type = bp_read_watchpoint;
10407   else if (accessflag == hw_access)
10408     bp_type = bp_access_watchpoint;
10409   else
10410     bp_type = bp_hardware_watchpoint;
10411
10412   std::unique_ptr<watchpoint> w (new watchpoint ());
10413
10414   if (use_mask)
10415     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10416                                           &masked_watchpoint_breakpoint_ops);
10417   else
10418     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10419                                           &watchpoint_breakpoint_ops);
10420   w->thread = thread;
10421   w->task = task;
10422   w->disposition = disp_donttouch;
10423   w->pspace = current_program_space;
10424   w->exp = std::move (exp);
10425   w->exp_valid_block = exp_valid_block;
10426   w->cond_exp_valid_block = cond_exp_valid_block;
10427   if (just_location)
10428     {
10429       struct type *t = value_type (val.get ());
10430       CORE_ADDR addr = value_as_address (val.get ());
10431
10432       w->exp_string_reparse
10433         = current_language->watch_location_expression (t, addr);
10434
10435       w->exp_string = xstrprintf ("-location %.*s",
10436                                   (int) (exp_end - exp_start), exp_start);
10437     }
10438   else
10439     w->exp_string.reset (savestring (exp_start, exp_end - exp_start));
10440
10441   if (use_mask)
10442     {
10443       w->hw_wp_mask = mask;
10444     }
10445   else
10446     {
10447       w->val = val;
10448       w->val_bitpos = saved_bitpos;
10449       w->val_bitsize = saved_bitsize;
10450       w->val_valid = true;
10451     }
10452
10453   if (cond_start)
10454     w->cond_string.reset (savestring (cond_start, cond_end - cond_start));
10455   else
10456     w->cond_string = 0;
10457
10458   if (frame_id_p (watchpoint_frame))
10459     {
10460       w->watchpoint_frame = watchpoint_frame;
10461       w->watchpoint_thread = inferior_ptid;
10462     }
10463   else
10464     {
10465       w->watchpoint_frame = null_frame_id;
10466       w->watchpoint_thread = null_ptid;
10467     }
10468
10469   if (scope_breakpoint != NULL)
10470     {
10471       /* The scope breakpoint is related to the watchpoint.  We will
10472          need to act on them together.  */
10473       w->related_breakpoint = scope_breakpoint;
10474       scope_breakpoint->related_breakpoint = w.get ();
10475     }
10476
10477   if (!just_location)
10478     value_free_to_mark (mark);
10479
10480   /* Finally update the new watchpoint.  This creates the locations
10481      that should be inserted.  */
10482   update_watchpoint (w.get (), 1);
10483
10484   install_breakpoint (internal, std::move (w), 1);
10485 }
10486
10487 /* Return count of debug registers needed to watch the given expression.
10488    If the watchpoint cannot be handled in hardware return zero.  */
10489
10490 static int
10491 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10492 {
10493   int found_memory_cnt = 0;
10494
10495   /* Did the user specifically forbid us to use hardware watchpoints? */
10496   if (!can_use_hw_watchpoints)
10497     return 0;
10498
10499   gdb_assert (!vals.empty ());
10500   struct value *head = vals[0].get ();
10501
10502   /* Make sure that the value of the expression depends only upon
10503      memory contents, and values computed from them within GDB.  If we
10504      find any register references or function calls, we can't use a
10505      hardware watchpoint.
10506
10507      The idea here is that evaluating an expression generates a series
10508      of values, one holding the value of every subexpression.  (The
10509      expression a*b+c has five subexpressions: a, b, a*b, c, and
10510      a*b+c.)  GDB's values hold almost enough information to establish
10511      the criteria given above --- they identify memory lvalues,
10512      register lvalues, computed values, etcetera.  So we can evaluate
10513      the expression, and then scan the chain of values that leaves
10514      behind to decide whether we can detect any possible change to the
10515      expression's final value using only hardware watchpoints.
10516
10517      However, I don't think that the values returned by inferior
10518      function calls are special in any way.  So this function may not
10519      notice that an expression involving an inferior function call
10520      can't be watched with hardware watchpoints.  FIXME.  */
10521   for (const value_ref_ptr &iter : vals)
10522     {
10523       struct value *v = iter.get ();
10524
10525       if (VALUE_LVAL (v) == lval_memory)
10526         {
10527           if (v != head && value_lazy (v))
10528             /* A lazy memory lvalue in the chain is one that GDB never
10529                needed to fetch; we either just used its address (e.g.,
10530                `a' in `a.b') or we never needed it at all (e.g., `a'
10531                in `a,b').  This doesn't apply to HEAD; if that is
10532                lazy then it was not readable, but watch it anyway.  */
10533             ;
10534           else
10535             {
10536               /* Ahh, memory we actually used!  Check if we can cover
10537                  it with hardware watchpoints.  */
10538               struct type *vtype = check_typedef (value_type (v));
10539
10540               /* We only watch structs and arrays if user asked for it
10541                  explicitly, never if they just happen to appear in a
10542                  middle of some value chain.  */
10543               if (v == head
10544                   || (vtype->code () != TYPE_CODE_STRUCT
10545                       && vtype->code () != TYPE_CODE_ARRAY))
10546                 {
10547                   CORE_ADDR vaddr = value_address (v);
10548                   int len;
10549                   int num_regs;
10550
10551                   len = (target_exact_watchpoints
10552                          && is_scalar_type_recursive (vtype))?
10553                     1 : TYPE_LENGTH (value_type (v));
10554
10555                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10556                   if (!num_regs)
10557                     return 0;
10558                   else
10559                     found_memory_cnt += num_regs;
10560                 }
10561             }
10562         }
10563       else if (VALUE_LVAL (v) != not_lval
10564                && deprecated_value_modifiable (v) == 0)
10565         return 0;       /* These are values from the history (e.g., $1).  */
10566       else if (VALUE_LVAL (v) == lval_register)
10567         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10568     }
10569
10570   /* The expression itself looks suitable for using a hardware
10571      watchpoint, but give the target machine a chance to reject it.  */
10572   return found_memory_cnt;
10573 }
10574
10575 void
10576 watch_command_wrapper (const char *arg, int from_tty, bool internal)
10577 {
10578   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10579 }
10580
10581 /* Options for the watch, awatch, and rwatch commands.  */
10582
10583 struct watch_options
10584 {
10585   /* For -location.  */
10586   bool location = false;
10587 };
10588
10589 /* Definitions of options for the "watch", "awatch", and "rwatch" commands.
10590
10591    Historically GDB always accepted both '-location' and '-l' flags for
10592    these commands (both flags being synonyms).  When converting to the
10593    newer option scheme only '-location' is added here.  That's fine (for
10594    backward compatibility) as any non-ambiguous prefix of a flag will be
10595    accepted, so '-l', '-loc', are now all accepted.
10596
10597    What this means is that, if in the future, we add any new flag here
10598    that starts with '-l' then this will break backward compatibility, so
10599    please, don't do that!  */
10600
10601 static const gdb::option::option_def watch_option_defs[] = {
10602   gdb::option::flag_option_def<watch_options> {
10603     "location",
10604     [] (watch_options *opt) { return &opt->location; },
10605     N_("\
10606 This evaluates EXPRESSION and watches the memory to which is refers.\n\
10607 -l can be used as a short form of -location."),
10608   },
10609 };
10610
10611 /* Returns the option group used by 'watch', 'awatch', and 'rwatch'
10612    commands.  */
10613
10614 static gdb::option::option_def_group
10615 make_watch_options_def_group (watch_options *opts)
10616 {
10617   return {{watch_option_defs}, opts};
10618 }
10619
10620 /* A helper function that looks for the "-location" argument and then
10621    calls watch_command_1.  */
10622
10623 static void
10624 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10625 {
10626   watch_options opts;
10627   auto grp = make_watch_options_def_group (&opts);
10628   gdb::option::process_options
10629     (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
10630   if (arg != nullptr && *arg == '\0')
10631     arg = nullptr;
10632
10633   watch_command_1 (arg, accessflag, from_tty, opts.location, false);
10634 }
10635
10636 /* Command completion for 'watch', 'awatch', and 'rwatch' commands.   */
10637 static void
10638 watch_command_completer (struct cmd_list_element *ignore,
10639                          completion_tracker &tracker,
10640                          const char *text, const char * /*word*/)
10641 {
10642   const auto group = make_watch_options_def_group (nullptr);
10643   if (gdb::option::complete_options
10644       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
10645     return;
10646
10647   const char *word = advance_to_expression_complete_word_point (tracker, text);
10648   expression_completer (ignore, tracker, text, word);
10649 }
10650
10651 static void
10652 watch_command (const char *arg, int from_tty)
10653 {
10654   watch_maybe_just_location (arg, hw_write, from_tty);
10655 }
10656
10657 void
10658 rwatch_command_wrapper (const char *arg, int from_tty, bool internal)
10659 {
10660   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10661 }
10662
10663 static void
10664 rwatch_command (const char *arg, int from_tty)
10665 {
10666   watch_maybe_just_location (arg, hw_read, from_tty);
10667 }
10668
10669 void
10670 awatch_command_wrapper (const char *arg, int from_tty, bool internal)
10671 {
10672   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10673 }
10674
10675 static void
10676 awatch_command (const char *arg, int from_tty)
10677 {
10678   watch_maybe_just_location (arg, hw_access, from_tty);
10679 }
10680 \f
10681
10682 /* Data for the FSM that manages the until(location)/advance commands
10683    in infcmd.c.  Here because it uses the mechanisms of
10684    breakpoints.  */
10685
10686 struct until_break_fsm : public thread_fsm
10687 {
10688   /* The thread that was current when the command was executed.  */
10689   int thread;
10690
10691   /* The breakpoint set at the return address in the caller frame,
10692      plus breakpoints at all the destination locations.  */
10693   std::vector<breakpoint_up> breakpoints;
10694
10695   until_break_fsm (struct interp *cmd_interp, int thread,
10696                    std::vector<breakpoint_up> &&breakpoints)
10697     : thread_fsm (cmd_interp),
10698       thread (thread),
10699       breakpoints (std::move (breakpoints))
10700   {
10701   }
10702
10703   void clean_up (struct thread_info *thread) override;
10704   bool should_stop (struct thread_info *thread) override;
10705   enum async_reply_reason do_async_reply_reason () override;
10706 };
10707
10708 /* Implementation of the 'should_stop' FSM method for the
10709    until(location)/advance commands.  */
10710
10711 bool
10712 until_break_fsm::should_stop (struct thread_info *tp)
10713 {
10714   for (const breakpoint_up &bp : breakpoints)
10715     if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10716                                 bp.get ()) != NULL)
10717       {
10718         set_finished ();
10719         break;
10720       }
10721
10722   return true;
10723 }
10724
10725 /* Implementation of the 'clean_up' FSM method for the
10726    until(location)/advance commands.  */
10727
10728 void
10729 until_break_fsm::clean_up (struct thread_info *)
10730 {
10731   /* Clean up our temporary breakpoints.  */
10732   breakpoints.clear ();
10733   delete_longjmp_breakpoint (thread);
10734 }
10735
10736 /* Implementation of the 'async_reply_reason' FSM method for the
10737    until(location)/advance commands.  */
10738
10739 enum async_reply_reason
10740 until_break_fsm::do_async_reply_reason ()
10741 {
10742   return EXEC_ASYNC_LOCATION_REACHED;
10743 }
10744
10745 void
10746 until_break_command (const char *arg, int from_tty, int anywhere)
10747 {
10748   struct frame_info *frame;
10749   struct gdbarch *frame_gdbarch;
10750   struct frame_id stack_frame_id;
10751   struct frame_id caller_frame_id;
10752   int thread;
10753   struct thread_info *tp;
10754
10755   clear_proceed_status (0);
10756
10757   /* Set a breakpoint where the user wants it and at return from
10758      this function.  */
10759
10760   event_location_up location = string_to_event_location (&arg, current_language);
10761
10762   std::vector<symtab_and_line> sals
10763     = (last_displayed_sal_is_valid ()
10764        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10765                         get_last_displayed_symtab (),
10766                         get_last_displayed_line ())
10767        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
10768                         NULL, NULL, 0));
10769
10770   if (sals.empty ())
10771     error (_("Couldn't get information on specified line."));
10772
10773   if (*arg)
10774     error (_("Junk at end of arguments."));
10775
10776   tp = inferior_thread ();
10777   thread = tp->global_num;
10778
10779   /* Note linespec handling above invalidates the frame chain.
10780      Installing a breakpoint also invalidates the frame chain (as it
10781      may need to switch threads), so do any frame handling before
10782      that.  */
10783
10784   frame = get_selected_frame (NULL);
10785   frame_gdbarch = get_frame_arch (frame);
10786   stack_frame_id = get_stack_frame_id (frame);
10787   caller_frame_id = frame_unwind_caller_id (frame);
10788
10789   /* Keep within the current frame, or in frames called by the current
10790      one.  */
10791
10792   std::vector<breakpoint_up> breakpoints;
10793
10794   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
10795
10796   if (frame_id_p (caller_frame_id))
10797     {
10798       struct symtab_and_line sal2;
10799       struct gdbarch *caller_gdbarch;
10800
10801       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10802       sal2.pc = frame_unwind_caller_pc (frame);
10803       caller_gdbarch = frame_unwind_caller_arch (frame);
10804
10805       breakpoint_up caller_breakpoint
10806         = set_momentary_breakpoint (caller_gdbarch, sal2,
10807                                     caller_frame_id, bp_until);
10808       breakpoints.emplace_back (std::move (caller_breakpoint));
10809
10810       set_longjmp_breakpoint (tp, caller_frame_id);
10811       lj_deleter.emplace (thread);
10812     }
10813
10814   /* set_momentary_breakpoint could invalidate FRAME.  */
10815   frame = NULL;
10816
10817   /* If the user told us to continue until a specified location, we
10818      don't specify a frame at which we need to stop.  Otherwise,
10819      specify the selected frame, because we want to stop only at the
10820      very same frame.  */
10821   frame_id stop_frame_id = anywhere ? null_frame_id : stack_frame_id;
10822
10823   for (symtab_and_line &sal : sals)
10824     {
10825       resolve_sal_pc (&sal);
10826
10827       breakpoint_up location_breakpoint
10828         = set_momentary_breakpoint (frame_gdbarch, sal,
10829                                     stop_frame_id, bp_until);
10830       breakpoints.emplace_back (std::move (location_breakpoint));
10831     }
10832
10833   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
10834                                         std::move (breakpoints));
10835
10836   if (lj_deleter)
10837     lj_deleter->release ();
10838
10839   proceed (-1, GDB_SIGNAL_DEFAULT);
10840 }
10841
10842 void
10843 init_ada_exception_breakpoint (struct breakpoint *b,
10844                                struct gdbarch *gdbarch,
10845                                struct symtab_and_line sal,
10846                                const char *addr_string,
10847                                const struct breakpoint_ops *ops,
10848                                int tempflag,
10849                                int enabled,
10850                                int from_tty)
10851 {
10852   if (from_tty)
10853     {
10854       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
10855       if (!loc_gdbarch)
10856         loc_gdbarch = gdbarch;
10857
10858       describe_other_breakpoints (loc_gdbarch,
10859                                   sal.pspace, sal.pc, sal.section, -1);
10860       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
10861          version for exception catchpoints, because two catchpoints
10862          used for different exception names will use the same address.
10863          In this case, a "breakpoint ... also set at..." warning is
10864          unproductive.  Besides, the warning phrasing is also a bit
10865          inappropriate, we should use the word catchpoint, and tell
10866          the user what type of catchpoint it is.  The above is good
10867          enough for now, though.  */
10868     }
10869
10870   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
10871
10872   b->enable_state = enabled ? bp_enabled : bp_disabled;
10873   b->disposition = tempflag ? disp_del : disp_donttouch;
10874   b->location = string_to_event_location (&addr_string,
10875                                           language_def (language_ada));
10876   b->language = language_ada;
10877 }
10878
10879 \f
10880
10881 /* Compare two breakpoints and return a strcmp-like result.  */
10882
10883 static int
10884 compare_breakpoints (const breakpoint *a, const breakpoint *b)
10885 {
10886   uintptr_t ua = (uintptr_t) a;
10887   uintptr_t ub = (uintptr_t) b;
10888
10889   if (a->number < b->number)
10890     return -1;
10891   else if (a->number > b->number)
10892     return 1;
10893
10894   /* Now sort by address, in case we see, e..g, two breakpoints with
10895      the number 0.  */
10896   if (ua < ub)
10897     return -1;
10898   return ua > ub ? 1 : 0;
10899 }
10900
10901 /* Delete breakpoints by address or line.  */
10902
10903 static void
10904 clear_command (const char *arg, int from_tty)
10905 {
10906   int default_match;
10907
10908   std::vector<symtab_and_line> decoded_sals;
10909   symtab_and_line last_sal;
10910   gdb::array_view<symtab_and_line> sals;
10911   if (arg)
10912     {
10913       decoded_sals
10914         = decode_line_with_current_source (arg,
10915                                            (DECODE_LINE_FUNFIRSTLINE
10916                                             | DECODE_LINE_LIST_MODE));
10917       default_match = 0;
10918       sals = decoded_sals;
10919     }
10920   else
10921     {
10922       /* Set sal's line, symtab, pc, and pspace to the values
10923          corresponding to the last call to print_frame_info.  If the
10924          codepoint is not valid, this will set all the fields to 0.  */
10925       last_sal = get_last_displayed_sal ();
10926       if (last_sal.symtab == 0)
10927         error (_("No source file specified."));
10928
10929       default_match = 1;
10930       sals = last_sal;
10931     }
10932
10933   /* We don't call resolve_sal_pc here.  That's not as bad as it
10934      seems, because all existing breakpoints typically have both
10935      file/line and pc set.  So, if clear is given file/line, we can
10936      match this to existing breakpoint without obtaining pc at all.
10937
10938      We only support clearing given the address explicitly 
10939      present in breakpoint table.  Say, we've set breakpoint 
10940      at file:line.  There were several PC values for that file:line,
10941      due to optimization, all in one block.
10942
10943      We've picked one PC value.  If "clear" is issued with another
10944      PC corresponding to the same file:line, the breakpoint won't
10945      be cleared.  We probably can still clear the breakpoint, but 
10946      since the other PC value is never presented to user, user
10947      can only find it by guessing, and it does not seem important
10948      to support that.  */
10949
10950   /* For each line spec given, delete bps which correspond to it.  Do
10951      it in two passes, solely to preserve the current behavior that
10952      from_tty is forced true if we delete more than one
10953      breakpoint.  */
10954
10955   std::vector<struct breakpoint *> found;
10956   for (const auto &sal : sals)
10957     {
10958       const char *sal_fullname;
10959
10960       /* If exact pc given, clear bpts at that pc.
10961          If line given (pc == 0), clear all bpts on specified line.
10962          If defaulting, clear all bpts on default line
10963          or at default pc.
10964
10965          defaulting    sal.pc != 0    tests to do
10966
10967          0              1             pc
10968          1              1             pc _and_ line
10969          0              0             line
10970          1              0             <can't happen> */
10971
10972       sal_fullname = (sal.symtab == NULL
10973                       ? NULL : symtab_to_fullname (sal.symtab));
10974
10975       /* Find all matching breakpoints and add them to 'found'.  */
10976       for (breakpoint *b : all_breakpoints ())
10977         {
10978           int match = 0;
10979           /* Are we going to delete b?  */
10980           if (b->type != bp_none && !is_watchpoint (b))
10981             {
10982               for (bp_location *loc : b->locations ())
10983                 {
10984                   /* If the user specified file:line, don't allow a PC
10985                      match.  This matches historical gdb behavior.  */
10986                   int pc_match = (!sal.explicit_line
10987                                   && sal.pc
10988                                   && (loc->pspace == sal.pspace)
10989                                   && (loc->address == sal.pc)
10990                                   && (!section_is_overlay (loc->section)
10991                                       || loc->section == sal.section));
10992                   int line_match = 0;
10993
10994                   if ((default_match || sal.explicit_line)
10995                       && loc->symtab != NULL
10996                       && sal_fullname != NULL
10997                       && sal.pspace == loc->pspace
10998                       && loc->line_number == sal.line
10999                       && filename_cmp (symtab_to_fullname (loc->symtab),
11000                                        sal_fullname) == 0)
11001                     line_match = 1;
11002
11003                   if (pc_match || line_match)
11004                     {
11005                       match = 1;
11006                       break;
11007                     }
11008                 }
11009             }
11010
11011           if (match)
11012             found.push_back (b);
11013         }
11014     }
11015
11016   /* Now go thru the 'found' chain and delete them.  */
11017   if (found.empty ())
11018     {
11019       if (arg)
11020         error (_("No breakpoint at %s."), arg);
11021       else
11022         error (_("No breakpoint at this line."));
11023     }
11024
11025   /* Remove duplicates from the vec.  */
11026   std::sort (found.begin (), found.end (),
11027              [] (const breakpoint *bp_a, const breakpoint *bp_b)
11028              {
11029                return compare_breakpoints (bp_a, bp_b) < 0;
11030              });
11031   found.erase (std::unique (found.begin (), found.end (),
11032                             [] (const breakpoint *bp_a, const breakpoint *bp_b)
11033                             {
11034                               return compare_breakpoints (bp_a, bp_b) == 0;
11035                             }),
11036                found.end ());
11037
11038   if (found.size () > 1)
11039     from_tty = 1;       /* Always report if deleted more than one.  */
11040   if (from_tty)
11041     {
11042       if (found.size () == 1)
11043         printf_filtered (_("Deleted breakpoint "));
11044       else
11045         printf_filtered (_("Deleted breakpoints "));
11046     }
11047
11048   for (breakpoint *iter : found)
11049     {
11050       if (from_tty)
11051         printf_filtered ("%d ", iter->number);
11052       delete_breakpoint (iter);
11053     }
11054   if (from_tty)
11055     putchar_filtered ('\n');
11056 }
11057 \f
11058 /* Delete breakpoint in BS if they are `delete' breakpoints and
11059    all breakpoints that are marked for deletion, whether hit or not.
11060    This is called after any breakpoint is hit, or after errors.  */
11061
11062 void
11063 breakpoint_auto_delete (bpstat *bs)
11064 {
11065   for (; bs; bs = bs->next)
11066     if (bs->breakpoint_at
11067         && bs->breakpoint_at->disposition == disp_del
11068         && bs->stop)
11069       delete_breakpoint (bs->breakpoint_at);
11070
11071   for (breakpoint *b : all_breakpoints_safe ())
11072     if (b->disposition == disp_del_at_next_stop)
11073       delete_breakpoint (b);
11074 }
11075
11076 /* A comparison function for bp_location AP and BP being interfaced to
11077    std::sort.  Sort elements primarily by their ADDRESS (no matter what
11078    bl_address_is_meaningful says), secondarily by ordering first
11079    permanent elements and terciarily just ensuring the array is sorted
11080    stable way despite std::sort being an unstable algorithm.  */
11081
11082 static int
11083 bp_location_is_less_than (const bp_location *a, const bp_location *b)
11084 {
11085   if (a->address != b->address)
11086     return a->address < b->address;
11087
11088   /* Sort locations at the same address by their pspace number, keeping
11089      locations of the same inferior (in a multi-inferior environment)
11090      grouped.  */
11091
11092   if (a->pspace->num != b->pspace->num)
11093     return a->pspace->num < b->pspace->num;
11094
11095   /* Sort permanent breakpoints first.  */
11096   if (a->permanent != b->permanent)
11097     return a->permanent > b->permanent;
11098
11099   /* Sort by type in order to make duplicate determination easier.
11100      See update_global_location_list.  This is kept in sync with
11101      breakpoint_locations_match.  */
11102   if (a->loc_type < b->loc_type)
11103     return true;
11104
11105   /* Likewise, for range-breakpoints, sort by length.  */
11106   if (a->loc_type == bp_loc_hardware_breakpoint
11107       && b->loc_type == bp_loc_hardware_breakpoint
11108       && a->length < b->length)
11109     return true;
11110
11111   /* Make the internal GDB representation stable across GDB runs
11112      where A and B memory inside GDB can differ.  Breakpoint locations of
11113      the same type at the same address can be sorted in arbitrary order.  */
11114
11115   if (a->owner->number != b->owner->number)
11116     return a->owner->number < b->owner->number;
11117
11118   return a < b;
11119 }
11120
11121 /* Set bp_locations_placed_address_before_address_max and
11122    bp_locations_shadow_len_after_address_max according to the current
11123    content of the bp_locations array.  */
11124
11125 static void
11126 bp_locations_target_extensions_update (void)
11127 {
11128   bp_locations_placed_address_before_address_max = 0;
11129   bp_locations_shadow_len_after_address_max = 0;
11130
11131   for (bp_location *bl : all_bp_locations ())
11132     {
11133       CORE_ADDR start, end, addr;
11134
11135       if (!bp_location_has_shadow (bl))
11136         continue;
11137
11138       start = bl->target_info.placed_address;
11139       end = start + bl->target_info.shadow_len;
11140
11141       gdb_assert (bl->address >= start);
11142       addr = bl->address - start;
11143       if (addr > bp_locations_placed_address_before_address_max)
11144         bp_locations_placed_address_before_address_max = addr;
11145
11146       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11147
11148       gdb_assert (bl->address < end);
11149       addr = end - bl->address;
11150       if (addr > bp_locations_shadow_len_after_address_max)
11151         bp_locations_shadow_len_after_address_max = addr;
11152     }
11153 }
11154
11155 /* Download tracepoint locations if they haven't been.  */
11156
11157 static void
11158 download_tracepoint_locations (void)
11159 {
11160   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11161
11162   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11163
11164   for (breakpoint *b : all_tracepoints ())
11165     {
11166       struct tracepoint *t;
11167       int bp_location_downloaded = 0;
11168
11169       if ((b->type == bp_fast_tracepoint
11170            ? !may_insert_fast_tracepoints
11171            : !may_insert_tracepoints))
11172         continue;
11173
11174       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11175         {
11176           if (target_can_download_tracepoint ())
11177             can_download_tracepoint = TRIBOOL_TRUE;
11178           else
11179             can_download_tracepoint = TRIBOOL_FALSE;
11180         }
11181
11182       if (can_download_tracepoint == TRIBOOL_FALSE)
11183         break;
11184
11185       for (bp_location *bl : b->locations ())
11186         {
11187           /* In tracepoint, locations are _never_ duplicated, so
11188              should_be_inserted is equivalent to
11189              unduplicated_should_be_inserted.  */
11190           if (!should_be_inserted (bl) || bl->inserted)
11191             continue;
11192
11193           switch_to_program_space_and_thread (bl->pspace);
11194
11195           target_download_tracepoint (bl);
11196
11197           bl->inserted = 1;
11198           bp_location_downloaded = 1;
11199         }
11200       t = (struct tracepoint *) b;
11201       t->number_on_target = b->number;
11202       if (bp_location_downloaded)
11203         gdb::observers::breakpoint_modified.notify (b);
11204     }
11205 }
11206
11207 /* Swap the insertion/duplication state between two locations.  */
11208
11209 static void
11210 swap_insertion (struct bp_location *left, struct bp_location *right)
11211 {
11212   const int left_inserted = left->inserted;
11213   const int left_duplicate = left->duplicate;
11214   const int left_needs_update = left->needs_update;
11215   const struct bp_target_info left_target_info = left->target_info;
11216
11217   /* Locations of tracepoints can never be duplicated.  */
11218   if (is_tracepoint (left->owner))
11219     gdb_assert (!left->duplicate);
11220   if (is_tracepoint (right->owner))
11221     gdb_assert (!right->duplicate);
11222
11223   left->inserted = right->inserted;
11224   left->duplicate = right->duplicate;
11225   left->needs_update = right->needs_update;
11226   left->target_info = right->target_info;
11227   right->inserted = left_inserted;
11228   right->duplicate = left_duplicate;
11229   right->needs_update = left_needs_update;
11230   right->target_info = left_target_info;
11231 }
11232
11233 /* Force the re-insertion of the locations at ADDRESS.  This is called
11234    once a new/deleted/modified duplicate location is found and we are evaluating
11235    conditions on the target's side.  Such conditions need to be updated on
11236    the target.  */
11237
11238 static void
11239 force_breakpoint_reinsertion (struct bp_location *bl)
11240 {
11241   CORE_ADDR address = 0;
11242   int pspace_num;
11243
11244   address = bl->address;
11245   pspace_num = bl->pspace->num;
11246
11247   /* This is only meaningful if the target is
11248      evaluating conditions and if the user has
11249      opted for condition evaluation on the target's
11250      side.  */
11251   if (gdb_evaluates_breakpoint_condition_p ()
11252       || !target_supports_evaluation_of_breakpoint_conditions ())
11253     return;
11254
11255   /* Flag all breakpoint locations with this address and
11256      the same program space as the location
11257      as "its condition has changed".  We need to
11258      update the conditions on the target's side.  */
11259   for (bp_location *loc : all_bp_locations_at_addr (address))
11260     {
11261       if (!is_breakpoint (loc->owner)
11262           || pspace_num != loc->pspace->num)
11263         continue;
11264
11265       /* Flag the location appropriately.  We use a different state to
11266          let everyone know that we already updated the set of locations
11267          with addr bl->address and program space bl->pspace.  This is so
11268          we don't have to keep calling these functions just to mark locations
11269          that have already been marked.  */
11270       loc->condition_changed = condition_updated;
11271
11272       /* Free the agent expression bytecode as well.  We will compute
11273          it later on.  */
11274       loc->cond_bytecode.reset ();
11275     }
11276 }
11277
11278 /* Called whether new breakpoints are created, or existing breakpoints
11279    deleted, to update the global location list and recompute which
11280    locations are duplicate of which.
11281
11282    The INSERT_MODE flag determines whether locations may not, may, or
11283    shall be inserted now.  See 'enum ugll_insert_mode' for more
11284    info.  */
11285
11286 static void
11287 update_global_location_list (enum ugll_insert_mode insert_mode)
11288 {
11289   /* Last breakpoint location address that was marked for update.  */
11290   CORE_ADDR last_addr = 0;
11291   /* Last breakpoint location program space that was marked for update.  */
11292   int last_pspace_num = -1;
11293
11294   /* Used in the duplicates detection below.  When iterating over all
11295      bp_locations, points to the first bp_location of a given address.
11296      Breakpoints and watchpoints of different types are never
11297      duplicates of each other.  Keep one pointer for each type of
11298      breakpoint/watchpoint, so we only need to loop over all locations
11299      once.  */
11300   struct bp_location *bp_loc_first;  /* breakpoint */
11301   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11302   struct bp_location *awp_loc_first; /* access watchpoint */
11303   struct bp_location *rwp_loc_first; /* read watchpoint */
11304
11305   /* Saved former bp_locations array which we compare against the newly
11306      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11307   std::vector<bp_location *> old_locations = std::move (bp_locations);
11308   bp_locations.clear ();
11309
11310   for (breakpoint *b : all_breakpoints ())
11311     for (bp_location *loc : b->locations ())
11312       bp_locations.push_back (loc);
11313
11314   /* See if we need to "upgrade" a software breakpoint to a hardware
11315      breakpoint.  Do this before deciding whether locations are
11316      duplicates.  Also do this before sorting because sorting order
11317      depends on location type.  */
11318   for (bp_location *loc : bp_locations)
11319     if (!loc->inserted && should_be_inserted (loc))
11320         handle_automatic_hardware_breakpoints (loc);
11321
11322   std::sort (bp_locations.begin (), bp_locations.end (),
11323              bp_location_is_less_than);
11324
11325   bp_locations_target_extensions_update ();
11326
11327   /* Identify bp_location instances that are no longer present in the
11328      new list, and therefore should be freed.  Note that it's not
11329      necessary that those locations should be removed from inferior --
11330      if there's another location at the same address (previously
11331      marked as duplicate), we don't need to remove/insert the
11332      location.
11333      
11334      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11335      and former bp_location array state respectively.  */
11336
11337   size_t loc_i = 0;
11338   for (bp_location *old_loc : old_locations)
11339     {
11340       /* Tells if 'old_loc' is found among the new locations.  If
11341          not, we have to free it.  */
11342       int found_object = 0;
11343       /* Tells if the location should remain inserted in the target.  */
11344       int keep_in_target = 0;
11345       int removed = 0;
11346
11347       /* Skip LOCP entries which will definitely never be needed.
11348          Stop either at or being the one matching OLD_LOC.  */
11349       while (loc_i < bp_locations.size ()
11350              && bp_locations[loc_i]->address < old_loc->address)
11351         loc_i++;
11352
11353       for (size_t loc2_i = loc_i;
11354            (loc2_i < bp_locations.size ()
11355             && bp_locations[loc2_i]->address == old_loc->address);
11356            loc2_i++)
11357         {
11358           /* Check if this is a new/duplicated location or a duplicated
11359              location that had its condition modified.  If so, we want to send
11360              its condition to the target if evaluation of conditions is taking
11361              place there.  */
11362           if (bp_locations[loc2_i]->condition_changed == condition_modified
11363               && (last_addr != old_loc->address
11364                   || last_pspace_num != old_loc->pspace->num))
11365             {
11366               force_breakpoint_reinsertion (bp_locations[loc2_i]);
11367               last_pspace_num = old_loc->pspace->num;
11368             }
11369
11370           if (bp_locations[loc2_i] == old_loc)
11371             found_object = 1;
11372         }
11373
11374       /* We have already handled this address, update it so that we don't
11375          have to go through updates again.  */
11376       last_addr = old_loc->address;
11377
11378       /* Target-side condition evaluation: Handle deleted locations.  */
11379       if (!found_object)
11380         force_breakpoint_reinsertion (old_loc);
11381
11382       /* If this location is no longer present, and inserted, look if
11383          there's maybe a new location at the same address.  If so,
11384          mark that one inserted, and don't remove this one.  This is
11385          needed so that we don't have a time window where a breakpoint
11386          at certain location is not inserted.  */
11387
11388       if (old_loc->inserted)
11389         {
11390           /* If the location is inserted now, we might have to remove
11391              it.  */
11392
11393           if (found_object && should_be_inserted (old_loc))
11394             {
11395               /* The location is still present in the location list,
11396                  and still should be inserted.  Don't do anything.  */
11397               keep_in_target = 1;
11398             }
11399           else
11400             {
11401               /* This location still exists, but it won't be kept in the
11402                  target since it may have been disabled.  We proceed to
11403                  remove its target-side condition.  */
11404
11405               /* The location is either no longer present, or got
11406                  disabled.  See if there's another location at the
11407                  same address, in which case we don't need to remove
11408                  this one from the target.  */
11409
11410               /* OLD_LOC comes from existing struct breakpoint.  */
11411               if (bl_address_is_meaningful (old_loc))
11412                 {
11413                   for (size_t loc2_i = loc_i;
11414                        (loc2_i < bp_locations.size ()
11415                         && bp_locations[loc2_i]->address == old_loc->address);
11416                        loc2_i++)
11417                     {
11418                       bp_location *loc2 = bp_locations[loc2_i];
11419
11420                       if (loc2 == old_loc)
11421                         continue;
11422
11423                       if (breakpoint_locations_match (loc2, old_loc))
11424                         {
11425                           /* Read watchpoint locations are switched to
11426                              access watchpoints, if the former are not
11427                              supported, but the latter are.  */
11428                           if (is_hardware_watchpoint (old_loc->owner))
11429                             {
11430                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11431                               loc2->watchpoint_type = old_loc->watchpoint_type;
11432                             }
11433
11434                           /* loc2 is a duplicated location. We need to check
11435                              if it should be inserted in case it will be
11436                              unduplicated.  */
11437                           if (unduplicated_should_be_inserted (loc2))
11438                             {
11439                               swap_insertion (old_loc, loc2);
11440                               keep_in_target = 1;
11441                               break;
11442                             }
11443                         }
11444                     }
11445                 }
11446             }
11447
11448           if (!keep_in_target)
11449             {
11450               if (remove_breakpoint (old_loc))
11451                 {
11452                   /* This is just about all we can do.  We could keep
11453                      this location on the global list, and try to
11454                      remove it next time, but there's no particular
11455                      reason why we will succeed next time.
11456                      
11457                      Note that at this point, old_loc->owner is still
11458                      valid, as delete_breakpoint frees the breakpoint
11459                      only after calling us.  */
11460                   printf_filtered (_("warning: Error removing "
11461                                      "breakpoint %d\n"), 
11462                                    old_loc->owner->number);
11463                 }
11464               removed = 1;
11465             }
11466         }
11467
11468       if (!found_object)
11469         {
11470           if (removed && target_is_non_stop_p ()
11471               && need_moribund_for_location_type (old_loc))
11472             {
11473               /* This location was removed from the target.  In
11474                  non-stop mode, a race condition is possible where
11475                  we've removed a breakpoint, but stop events for that
11476                  breakpoint are already queued and will arrive later.
11477                  We apply an heuristic to be able to distinguish such
11478                  SIGTRAPs from other random SIGTRAPs: we keep this
11479                  breakpoint location for a bit, and will retire it
11480                  after we see some number of events.  The theory here
11481                  is that reporting of events should, "on the average",
11482                  be fair, so after a while we'll see events from all
11483                  threads that have anything of interest, and no longer
11484                  need to keep this breakpoint location around.  We
11485                  don't hold locations forever so to reduce chances of
11486                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11487                  SIGTRAP.
11488
11489                  The heuristic failing can be disastrous on
11490                  decr_pc_after_break targets.
11491
11492                  On decr_pc_after_break targets, like e.g., x86-linux,
11493                  if we fail to recognize a late breakpoint SIGTRAP,
11494                  because events_till_retirement has reached 0 too
11495                  soon, we'll fail to do the PC adjustment, and report
11496                  a random SIGTRAP to the user.  When the user resumes
11497                  the inferior, it will most likely immediately crash
11498                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11499                  corrupted, because of being resumed e.g., in the
11500                  middle of a multi-byte instruction, or skipped a
11501                  one-byte instruction.  This was actually seen happen
11502                  on native x86-linux, and should be less rare on
11503                  targets that do not support new thread events, like
11504                  remote, due to the heuristic depending on
11505                  thread_count.
11506
11507                  Mistaking a random SIGTRAP for a breakpoint trap
11508                  causes similar symptoms (PC adjustment applied when
11509                  it shouldn't), but then again, playing with SIGTRAPs
11510                  behind the debugger's back is asking for trouble.
11511
11512                  Since hardware watchpoint traps are always
11513                  distinguishable from other traps, so we don't need to
11514                  apply keep hardware watchpoint moribund locations
11515                  around.  We simply always ignore hardware watchpoint
11516                  traps we can no longer explain.  */
11517
11518               process_stratum_target *proc_target = nullptr;
11519               for (inferior *inf : all_inferiors ())
11520                 if (inf->pspace == old_loc->pspace)
11521                   {
11522                     proc_target = inf->process_target ();
11523                     break;
11524                   }
11525               if (proc_target != nullptr)
11526                 old_loc->events_till_retirement
11527                   = 3 * (thread_count (proc_target) + 1);
11528               else
11529                 old_loc->events_till_retirement = 1;
11530               old_loc->owner = NULL;
11531
11532               moribund_locations.push_back (old_loc);
11533             }
11534           else
11535             {
11536               old_loc->owner = NULL;
11537               decref_bp_location (&old_loc);
11538             }
11539         }
11540     }
11541
11542   /* Rescan breakpoints at the same address and section, marking the
11543      first one as "first" and any others as "duplicates".  This is so
11544      that the bpt instruction is only inserted once.  If we have a
11545      permanent breakpoint at the same place as BPT, make that one the
11546      official one, and the rest as duplicates.  Permanent breakpoints
11547      are sorted first for the same address.
11548
11549      Do the same for hardware watchpoints, but also considering the
11550      watchpoint's type (regular/access/read) and length.  */
11551
11552   bp_loc_first = NULL;
11553   wp_loc_first = NULL;
11554   awp_loc_first = NULL;
11555   rwp_loc_first = NULL;
11556
11557   for (bp_location *loc : all_bp_locations ())
11558     {
11559       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11560          non-NULL.  */
11561       struct bp_location **loc_first_p;
11562       breakpoint *b = loc->owner;
11563
11564       if (!unduplicated_should_be_inserted (loc)
11565           || !bl_address_is_meaningful (loc)
11566           /* Don't detect duplicate for tracepoint locations because they are
11567            never duplicated.  See the comments in field `duplicate' of
11568            `struct bp_location'.  */
11569           || is_tracepoint (b))
11570         {
11571           /* Clear the condition modification flag.  */
11572           loc->condition_changed = condition_unchanged;
11573           continue;
11574         }
11575
11576       if (b->type == bp_hardware_watchpoint)
11577         loc_first_p = &wp_loc_first;
11578       else if (b->type == bp_read_watchpoint)
11579         loc_first_p = &rwp_loc_first;
11580       else if (b->type == bp_access_watchpoint)
11581         loc_first_p = &awp_loc_first;
11582       else
11583         loc_first_p = &bp_loc_first;
11584
11585       if (*loc_first_p == NULL
11586           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11587           || !breakpoint_locations_match (loc, *loc_first_p))
11588         {
11589           *loc_first_p = loc;
11590           loc->duplicate = 0;
11591
11592           if (is_breakpoint (loc->owner) && loc->condition_changed)
11593             {
11594               loc->needs_update = 1;
11595               /* Clear the condition modification flag.  */
11596               loc->condition_changed = condition_unchanged;
11597             }
11598           continue;
11599         }
11600
11601
11602       /* This and the above ensure the invariant that the first location
11603          is not duplicated, and is the inserted one.
11604          All following are marked as duplicated, and are not inserted.  */
11605       if (loc->inserted)
11606         swap_insertion (loc, *loc_first_p);
11607       loc->duplicate = 1;
11608
11609       /* Clear the condition modification flag.  */
11610       loc->condition_changed = condition_unchanged;
11611     }
11612
11613   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11614     {
11615       if (insert_mode != UGLL_DONT_INSERT)
11616         insert_breakpoint_locations ();
11617       else
11618         {
11619           /* Even though the caller told us to not insert new
11620              locations, we may still need to update conditions on the
11621              target's side of breakpoints that were already inserted
11622              if the target is evaluating breakpoint conditions.  We
11623              only update conditions for locations that are marked
11624              "needs_update".  */
11625           update_inserted_breakpoint_locations ();
11626         }
11627     }
11628
11629   if (insert_mode != UGLL_DONT_INSERT)
11630     download_tracepoint_locations ();
11631 }
11632
11633 void
11634 breakpoint_retire_moribund (void)
11635 {
11636   for (int ix = 0; ix < moribund_locations.size (); ++ix)
11637     {
11638       struct bp_location *loc = moribund_locations[ix];
11639       if (--(loc->events_till_retirement) == 0)
11640         {
11641           decref_bp_location (&loc);
11642           unordered_remove (moribund_locations, ix);
11643           --ix;
11644         }
11645     }
11646 }
11647
11648 static void
11649 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
11650 {
11651
11652   try
11653     {
11654       update_global_location_list (insert_mode);
11655     }
11656   catch (const gdb_exception_error &e)
11657     {
11658     }
11659 }
11660
11661 /* Clear BKP from a BPS.  */
11662
11663 static void
11664 bpstat_remove_bp_location (bpstat *bps, struct breakpoint *bpt)
11665 {
11666   bpstat *bs;
11667
11668   for (bs = bps; bs; bs = bs->next)
11669     if (bs->breakpoint_at == bpt)
11670       {
11671         bs->breakpoint_at = NULL;
11672         bs->old_val = NULL;
11673         /* bs->commands will be freed later.  */
11674       }
11675 }
11676
11677 /* Callback for iterate_over_threads.  */
11678 static int
11679 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
11680 {
11681   struct breakpoint *bpt = (struct breakpoint *) data;
11682
11683   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
11684   return 0;
11685 }
11686
11687 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
11688    callbacks.  */
11689
11690 static void
11691 say_where (struct breakpoint *b)
11692 {
11693   struct value_print_options opts;
11694
11695   get_user_print_options (&opts);
11696
11697   /* i18n: cagney/2005-02-11: Below needs to be merged into a
11698      single string.  */
11699   if (b->loc == NULL)
11700     {
11701       /* For pending locations, the output differs slightly based
11702          on b->extra_string.  If this is non-NULL, it contains either
11703          a condition or dprintf arguments.  */
11704       if (b->extra_string == NULL)
11705         {
11706           printf_filtered (_(" (%s) pending."),
11707                            event_location_to_string (b->location.get ()));
11708         }
11709       else if (b->type == bp_dprintf)
11710         {
11711           printf_filtered (_(" (%s,%s) pending."),
11712                            event_location_to_string (b->location.get ()),
11713                            b->extra_string.get ());
11714         }
11715       else
11716         {
11717           printf_filtered (_(" (%s %s) pending."),
11718                            event_location_to_string (b->location.get ()),
11719                            b->extra_string.get ());
11720         }
11721     }
11722   else
11723     {
11724       if (opts.addressprint || b->loc->symtab == NULL)
11725         printf_filtered (" at %ps",
11726                          styled_string (address_style.style (),
11727                                         paddress (b->loc->gdbarch,
11728                                                   b->loc->address)));
11729       if (b->loc->symtab != NULL)
11730         {
11731           /* If there is a single location, we can print the location
11732              more nicely.  */
11733           if (b->loc->next == NULL)
11734             {
11735               const char *filename
11736                 = symtab_to_filename_for_display (b->loc->symtab);
11737               printf_filtered (": file %ps, line %d.",
11738                                styled_string (file_name_style.style (),
11739                                               filename),
11740                                b->loc->line_number);
11741             }
11742           else
11743             /* This is not ideal, but each location may have a
11744                different file name, and this at least reflects the
11745                real situation somewhat.  */
11746             printf_filtered (": %s.",
11747                              event_location_to_string (b->location.get ()));
11748         }
11749
11750       if (b->loc->next)
11751         {
11752           struct bp_location *loc = b->loc;
11753           int n = 0;
11754           for (; loc; loc = loc->next)
11755             ++n;
11756           printf_filtered (" (%d locations)", n);
11757         }
11758     }
11759 }
11760
11761 /* See breakpoint.h.  */
11762
11763 bp_location_range breakpoint::locations ()
11764 {
11765   return bp_location_range (this->loc);
11766 }
11767
11768 static struct bp_location *
11769 base_breakpoint_allocate_location (struct breakpoint *self)
11770 {
11771   return new bp_location (self);
11772 }
11773
11774 static void
11775 base_breakpoint_re_set (struct breakpoint *b)
11776 {
11777   /* Nothing to re-set. */
11778 }
11779
11780 #define internal_error_pure_virtual_called() \
11781   gdb_assert_not_reached ("pure virtual function called")
11782
11783 static int
11784 base_breakpoint_insert_location (struct bp_location *bl)
11785 {
11786   internal_error_pure_virtual_called ();
11787 }
11788
11789 static int
11790 base_breakpoint_remove_location (struct bp_location *bl,
11791                                  enum remove_bp_reason reason)
11792 {
11793   internal_error_pure_virtual_called ();
11794 }
11795
11796 static int
11797 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
11798                                 const address_space *aspace,
11799                                 CORE_ADDR bp_addr,
11800                                 const target_waitstatus &ws)
11801 {
11802   internal_error_pure_virtual_called ();
11803 }
11804
11805 static void
11806 base_breakpoint_check_status (bpstat *bs)
11807 {
11808   /* Always stop.   */
11809 }
11810
11811 /* A "works_in_software_mode" breakpoint_ops method that just internal
11812    errors.  */
11813
11814 static int
11815 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
11816 {
11817   internal_error_pure_virtual_called ();
11818 }
11819
11820 /* A "resources_needed" breakpoint_ops method that just internal
11821    errors.  */
11822
11823 static int
11824 base_breakpoint_resources_needed (const struct bp_location *bl)
11825 {
11826   internal_error_pure_virtual_called ();
11827 }
11828
11829 static enum print_stop_action
11830 base_breakpoint_print_it (bpstat *bs)
11831 {
11832   internal_error_pure_virtual_called ();
11833 }
11834
11835 static void
11836 base_breakpoint_print_one_detail (const struct breakpoint *self,
11837                                   struct ui_out *uiout)
11838 {
11839   /* nothing */
11840 }
11841
11842 static void
11843 base_breakpoint_print_mention (struct breakpoint *b)
11844 {
11845   internal_error_pure_virtual_called ();
11846 }
11847
11848 static void
11849 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
11850 {
11851   internal_error_pure_virtual_called ();
11852 }
11853
11854 static void
11855 base_breakpoint_create_sals_from_location
11856   (struct event_location *location,
11857    struct linespec_result *canonical,
11858    enum bptype type_wanted)
11859 {
11860   internal_error_pure_virtual_called ();
11861 }
11862
11863 static void
11864 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
11865                                         struct linespec_result *c,
11866                                         gdb::unique_xmalloc_ptr<char> cond_string,
11867                                         gdb::unique_xmalloc_ptr<char> extra_string,
11868                                         enum bptype type_wanted,
11869                                         enum bpdisp disposition,
11870                                         int thread,
11871                                         int task, int ignore_count,
11872                                         const struct breakpoint_ops *o,
11873                                         int from_tty, int enabled,
11874                                         int internal, unsigned flags)
11875 {
11876   internal_error_pure_virtual_called ();
11877 }
11878
11879 static std::vector<symtab_and_line>
11880 base_breakpoint_decode_location (struct breakpoint *b,
11881                                  struct event_location *location,
11882                                  struct program_space *search_pspace)
11883 {
11884   internal_error_pure_virtual_called ();
11885 }
11886
11887 /* The default 'explains_signal' method.  */
11888
11889 static int
11890 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
11891 {
11892   return 1;
11893 }
11894
11895 /* The default "after_condition_true" method.  */
11896
11897 static void
11898 base_breakpoint_after_condition_true (struct bpstat *bs)
11899 {
11900   /* Nothing to do.   */
11901 }
11902
11903 struct breakpoint_ops base_breakpoint_ops =
11904 {
11905   base_breakpoint_allocate_location,
11906   base_breakpoint_re_set,
11907   base_breakpoint_insert_location,
11908   base_breakpoint_remove_location,
11909   base_breakpoint_breakpoint_hit,
11910   base_breakpoint_check_status,
11911   base_breakpoint_resources_needed,
11912   base_breakpoint_works_in_software_mode,
11913   base_breakpoint_print_it,
11914   NULL,
11915   base_breakpoint_print_one_detail,
11916   base_breakpoint_print_mention,
11917   base_breakpoint_print_recreate,
11918   base_breakpoint_create_sals_from_location,
11919   base_breakpoint_create_breakpoints_sal,
11920   base_breakpoint_decode_location,
11921   base_breakpoint_explains_signal,
11922   base_breakpoint_after_condition_true,
11923 };
11924
11925 /* Default breakpoint_ops methods.  */
11926
11927 static void
11928 bkpt_re_set (struct breakpoint *b)
11929 {
11930   /* FIXME: is this still reachable?  */
11931   if (breakpoint_event_location_empty_p (b))
11932     {
11933       /* Anything without a location can't be re-set.  */
11934       delete_breakpoint (b);
11935       return;
11936     }
11937
11938   breakpoint_re_set_default (b);
11939 }
11940
11941 static int
11942 bkpt_insert_location (struct bp_location *bl)
11943 {
11944   CORE_ADDR addr = bl->target_info.reqstd_address;
11945
11946   bl->target_info.kind = breakpoint_kind (bl, &addr);
11947   bl->target_info.placed_address = addr;
11948
11949   if (bl->loc_type == bp_loc_hardware_breakpoint)
11950     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
11951   else
11952     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
11953 }
11954
11955 static int
11956 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
11957 {
11958   if (bl->loc_type == bp_loc_hardware_breakpoint)
11959     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
11960   else
11961     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
11962 }
11963
11964 static int
11965 bkpt_breakpoint_hit (const struct bp_location *bl,
11966                      const address_space *aspace, CORE_ADDR bp_addr,
11967                      const target_waitstatus &ws)
11968 {
11969   if (ws.kind () != TARGET_WAITKIND_STOPPED
11970       || ws.sig () != GDB_SIGNAL_TRAP)
11971     return 0;
11972
11973   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
11974                                  aspace, bp_addr))
11975     return 0;
11976
11977   if (overlay_debugging         /* unmapped overlay section */
11978       && section_is_overlay (bl->section)
11979       && !section_is_mapped (bl->section))
11980     return 0;
11981
11982   return 1;
11983 }
11984
11985 static int
11986 dprintf_breakpoint_hit (const struct bp_location *bl,
11987                         const address_space *aspace, CORE_ADDR bp_addr,
11988                         const target_waitstatus &ws)
11989 {
11990   if (dprintf_style == dprintf_style_agent
11991       && target_can_run_breakpoint_commands ())
11992     {
11993       /* An agent-style dprintf never causes a stop.  If we see a trap
11994          for this address it must be for a breakpoint that happens to
11995          be set at the same address.  */
11996       return 0;
11997     }
11998
11999   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12000 }
12001
12002 static int
12003 bkpt_resources_needed (const struct bp_location *bl)
12004 {
12005   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12006
12007   return 1;
12008 }
12009
12010 static enum print_stop_action
12011 bkpt_print_it (bpstat *bs)
12012 {
12013   struct breakpoint *b;
12014   const struct bp_location *bl;
12015   int bp_temp;
12016   struct ui_out *uiout = current_uiout;
12017
12018   gdb_assert (bs->bp_location_at != NULL);
12019
12020   bl = bs->bp_location_at.get ();
12021   b = bs->breakpoint_at;
12022
12023   bp_temp = b->disposition == disp_del;
12024   if (bl->address != bl->requested_address)
12025     breakpoint_adjustment_warning (bl->requested_address,
12026                                    bl->address,
12027                                    b->number, 1);
12028   annotate_breakpoint (b->number);
12029   maybe_print_thread_hit_breakpoint (uiout);
12030
12031   if (uiout->is_mi_like_p ())
12032     {
12033       uiout->field_string ("reason",
12034                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12035       uiout->field_string ("disp", bpdisp_text (b->disposition));
12036     }
12037   if (bp_temp)
12038     uiout->message ("Temporary breakpoint %pF, ",
12039                     signed_field ("bkptno", b->number));
12040   else
12041     uiout->message ("Breakpoint %pF, ",
12042                     signed_field ("bkptno", b->number));
12043
12044   return PRINT_SRC_AND_LOC;
12045 }
12046
12047 static void
12048 bkpt_print_mention (struct breakpoint *b)
12049 {
12050   if (current_uiout->is_mi_like_p ())
12051     return;
12052
12053   switch (b->type)
12054     {
12055     case bp_breakpoint:
12056     case bp_gnu_ifunc_resolver:
12057       if (b->disposition == disp_del)
12058         printf_filtered (_("Temporary breakpoint"));
12059       else
12060         printf_filtered (_("Breakpoint"));
12061       printf_filtered (_(" %d"), b->number);
12062       if (b->type == bp_gnu_ifunc_resolver)
12063         printf_filtered (_(" at gnu-indirect-function resolver"));
12064       break;
12065     case bp_hardware_breakpoint:
12066       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12067       break;
12068     case bp_dprintf:
12069       printf_filtered (_("Dprintf %d"), b->number);
12070       break;
12071     }
12072
12073   say_where (b);
12074 }
12075
12076 static void
12077 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12078 {
12079   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12080     fprintf_unfiltered (fp, "tbreak");
12081   else if (tp->type == bp_breakpoint)
12082     fprintf_unfiltered (fp, "break");
12083   else if (tp->type == bp_hardware_breakpoint
12084            && tp->disposition == disp_del)
12085     fprintf_unfiltered (fp, "thbreak");
12086   else if (tp->type == bp_hardware_breakpoint)
12087     fprintf_unfiltered (fp, "hbreak");
12088   else
12089     internal_error (__FILE__, __LINE__,
12090                     _("unhandled breakpoint type %d"), (int) tp->type);
12091
12092   fprintf_unfiltered (fp, " %s",
12093                       event_location_to_string (tp->location.get ()));
12094
12095   /* Print out extra_string if this breakpoint is pending.  It might
12096      contain, for example, conditions that were set by the user.  */
12097   if (tp->loc == NULL && tp->extra_string != NULL)
12098     fprintf_unfiltered (fp, " %s", tp->extra_string.get ());
12099
12100   print_recreate_thread (tp, fp);
12101 }
12102
12103 static void
12104 bkpt_create_sals_from_location (struct event_location *location,
12105                                 struct linespec_result *canonical,
12106                                 enum bptype type_wanted)
12107 {
12108   create_sals_from_location_default (location, canonical, type_wanted);
12109 }
12110
12111 static void
12112 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12113                              struct linespec_result *canonical,
12114                              gdb::unique_xmalloc_ptr<char> cond_string,
12115                              gdb::unique_xmalloc_ptr<char> extra_string,
12116                              enum bptype type_wanted,
12117                              enum bpdisp disposition,
12118                              int thread,
12119                              int task, int ignore_count,
12120                              const struct breakpoint_ops *ops,
12121                              int from_tty, int enabled,
12122                              int internal, unsigned flags)
12123 {
12124   create_breakpoints_sal_default (gdbarch, canonical,
12125                                   std::move (cond_string),
12126                                   std::move (extra_string),
12127                                   type_wanted,
12128                                   disposition, thread, task,
12129                                   ignore_count, ops, from_tty,
12130                                   enabled, internal, flags);
12131 }
12132
12133 static std::vector<symtab_and_line>
12134 bkpt_decode_location (struct breakpoint *b,
12135                       struct event_location *location,
12136                       struct program_space *search_pspace)
12137 {
12138   return decode_location_default (b, location, search_pspace);
12139 }
12140
12141 /* Virtual table for internal breakpoints.  */
12142
12143 static void
12144 internal_bkpt_re_set (struct breakpoint *b)
12145 {
12146   switch (b->type)
12147     {
12148       /* Delete overlay event and longjmp master breakpoints; they
12149          will be reset later by breakpoint_re_set.  */
12150     case bp_overlay_event:
12151     case bp_longjmp_master:
12152     case bp_std_terminate_master:
12153     case bp_exception_master:
12154       delete_breakpoint (b);
12155       break;
12156
12157       /* This breakpoint is special, it's set up when the inferior
12158          starts and we really don't want to touch it.  */
12159     case bp_shlib_event:
12160
12161       /* Like bp_shlib_event, this breakpoint type is special.  Once
12162          it is set up, we do not want to touch it.  */
12163     case bp_thread_event:
12164       break;
12165     }
12166 }
12167
12168 static void
12169 internal_bkpt_check_status (bpstat *bs)
12170 {
12171   if (bs->breakpoint_at->type == bp_shlib_event)
12172     {
12173       /* If requested, stop when the dynamic linker notifies GDB of
12174          events.  This allows the user to get control and place
12175          breakpoints in initializer routines for dynamically loaded
12176          objects (among other things).  */
12177       bs->stop = stop_on_solib_events;
12178       bs->print = stop_on_solib_events;
12179     }
12180   else
12181     bs->stop = 0;
12182 }
12183
12184 static enum print_stop_action
12185 internal_bkpt_print_it (bpstat *bs)
12186 {
12187   struct breakpoint *b;
12188
12189   b = bs->breakpoint_at;
12190
12191   switch (b->type)
12192     {
12193     case bp_shlib_event:
12194       /* Did we stop because the user set the stop_on_solib_events
12195          variable?  (If so, we report this as a generic, "Stopped due
12196          to shlib event" message.) */
12197       print_solib_event (0);
12198       break;
12199
12200     case bp_thread_event:
12201       /* Not sure how we will get here.
12202          GDB should not stop for these breakpoints.  */
12203       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12204       break;
12205
12206     case bp_overlay_event:
12207       /* By analogy with the thread event, GDB should not stop for these.  */
12208       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12209       break;
12210
12211     case bp_longjmp_master:
12212       /* These should never be enabled.  */
12213       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12214       break;
12215
12216     case bp_std_terminate_master:
12217       /* These should never be enabled.  */
12218       printf_filtered (_("std::terminate Master Breakpoint: "
12219                          "gdb should not stop!\n"));
12220       break;
12221
12222     case bp_exception_master:
12223       /* These should never be enabled.  */
12224       printf_filtered (_("Exception Master Breakpoint: "
12225                          "gdb should not stop!\n"));
12226       break;
12227     }
12228
12229   return PRINT_NOTHING;
12230 }
12231
12232 static void
12233 internal_bkpt_print_mention (struct breakpoint *b)
12234 {
12235   /* Nothing to mention.  These breakpoints are internal.  */
12236 }
12237
12238 /* Virtual table for momentary breakpoints  */
12239
12240 static void
12241 momentary_bkpt_re_set (struct breakpoint *b)
12242 {
12243   /* Keep temporary breakpoints, which can be encountered when we step
12244      over a dlopen call and solib_add is resetting the breakpoints.
12245      Otherwise these should have been blown away via the cleanup chain
12246      or by breakpoint_init_inferior when we rerun the executable.  */
12247 }
12248
12249 static void
12250 momentary_bkpt_check_status (bpstat *bs)
12251 {
12252   /* Nothing.  The point of these breakpoints is causing a stop.  */
12253 }
12254
12255 static enum print_stop_action
12256 momentary_bkpt_print_it (bpstat *bs)
12257 {
12258   return PRINT_UNKNOWN;
12259 }
12260
12261 static void
12262 momentary_bkpt_print_mention (struct breakpoint *b)
12263 {
12264   /* Nothing to mention.  These breakpoints are internal.  */
12265 }
12266
12267 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12268
12269    It gets cleared already on the removal of the first one of such placed
12270    breakpoints.  This is OK as they get all removed altogether.  */
12271
12272 longjmp_breakpoint::~longjmp_breakpoint ()
12273 {
12274   thread_info *tp = find_thread_global_id (this->thread);
12275
12276   if (tp != NULL)
12277     tp->initiating_frame = null_frame_id;
12278 }
12279
12280 /* Specific methods for probe breakpoints.  */
12281
12282 static int
12283 bkpt_probe_insert_location (struct bp_location *bl)
12284 {
12285   int v = bkpt_insert_location (bl);
12286
12287   if (v == 0)
12288     {
12289       /* The insertion was successful, now let's set the probe's semaphore
12290          if needed.  */
12291       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12292     }
12293
12294   return v;
12295 }
12296
12297 static int
12298 bkpt_probe_remove_location (struct bp_location *bl,
12299                             enum remove_bp_reason reason)
12300 {
12301   /* Let's clear the semaphore before removing the location.  */
12302   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12303
12304   return bkpt_remove_location (bl, reason);
12305 }
12306
12307 static void
12308 bkpt_probe_create_sals_from_location (struct event_location *location,
12309                                       struct linespec_result *canonical,
12310                                       enum bptype type_wanted)
12311 {
12312   struct linespec_sals lsal;
12313
12314   lsal.sals = parse_probes (location, NULL, canonical);
12315   lsal.canonical
12316     = xstrdup (event_location_to_string (canonical->location.get ()));
12317   canonical->lsals.push_back (std::move (lsal));
12318 }
12319
12320 static std::vector<symtab_and_line>
12321 bkpt_probe_decode_location (struct breakpoint *b,
12322                             struct event_location *location,
12323                             struct program_space *search_pspace)
12324 {
12325   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12326   if (sals.empty ())
12327     error (_("probe not found"));
12328   return sals;
12329 }
12330
12331 /* The breakpoint_ops structure to be used in tracepoints.  */
12332
12333 static void
12334 tracepoint_re_set (struct breakpoint *b)
12335 {
12336   breakpoint_re_set_default (b);
12337 }
12338
12339 static int
12340 tracepoint_breakpoint_hit (const struct bp_location *bl,
12341                            const address_space *aspace, CORE_ADDR bp_addr,
12342                            const target_waitstatus &ws)
12343 {
12344   /* By definition, the inferior does not report stops at
12345      tracepoints.  */
12346   return 0;
12347 }
12348
12349 static void
12350 tracepoint_print_one_detail (const struct breakpoint *self,
12351                              struct ui_out *uiout)
12352 {
12353   struct tracepoint *tp = (struct tracepoint *) self;
12354   if (!tp->static_trace_marker_id.empty ())
12355     {
12356       gdb_assert (self->type == bp_static_tracepoint);
12357
12358       uiout->message ("\tmarker id is %pF\n",
12359                       string_field ("static-tracepoint-marker-string-id",
12360                                     tp->static_trace_marker_id.c_str ()));
12361     }
12362 }
12363
12364 static void
12365 tracepoint_print_mention (struct breakpoint *b)
12366 {
12367   if (current_uiout->is_mi_like_p ())
12368     return;
12369
12370   switch (b->type)
12371     {
12372     case bp_tracepoint:
12373       printf_filtered (_("Tracepoint"));
12374       printf_filtered (_(" %d"), b->number);
12375       break;
12376     case bp_fast_tracepoint:
12377       printf_filtered (_("Fast tracepoint"));
12378       printf_filtered (_(" %d"), b->number);
12379       break;
12380     case bp_static_tracepoint:
12381       printf_filtered (_("Static tracepoint"));
12382       printf_filtered (_(" %d"), b->number);
12383       break;
12384     default:
12385       internal_error (__FILE__, __LINE__,
12386                       _("unhandled tracepoint type %d"), (int) b->type);
12387     }
12388
12389   say_where (b);
12390 }
12391
12392 static void
12393 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12394 {
12395   struct tracepoint *tp = (struct tracepoint *) self;
12396
12397   if (self->type == bp_fast_tracepoint)
12398     fprintf_unfiltered (fp, "ftrace");
12399   else if (self->type == bp_static_tracepoint)
12400     fprintf_unfiltered (fp, "strace");
12401   else if (self->type == bp_tracepoint)
12402     fprintf_unfiltered (fp, "trace");
12403   else
12404     internal_error (__FILE__, __LINE__,
12405                     _("unhandled tracepoint type %d"), (int) self->type);
12406
12407   fprintf_unfiltered (fp, " %s",
12408                       event_location_to_string (self->location.get ()));
12409   print_recreate_thread (self, fp);
12410
12411   if (tp->pass_count)
12412     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12413 }
12414
12415 static void
12416 tracepoint_create_sals_from_location (struct event_location *location,
12417                                       struct linespec_result *canonical,
12418                                       enum bptype type_wanted)
12419 {
12420   create_sals_from_location_default (location, canonical, type_wanted);
12421 }
12422
12423 static void
12424 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12425                                    struct linespec_result *canonical,
12426                                    gdb::unique_xmalloc_ptr<char> cond_string,
12427                                    gdb::unique_xmalloc_ptr<char> extra_string,
12428                                    enum bptype type_wanted,
12429                                    enum bpdisp disposition,
12430                                    int thread,
12431                                    int task, int ignore_count,
12432                                    const struct breakpoint_ops *ops,
12433                                    int from_tty, int enabled,
12434                                    int internal, unsigned flags)
12435 {
12436   create_breakpoints_sal_default (gdbarch, canonical,
12437                                   std::move (cond_string),
12438                                   std::move (extra_string),
12439                                   type_wanted,
12440                                   disposition, thread, task,
12441                                   ignore_count, ops, from_tty,
12442                                   enabled, internal, flags);
12443 }
12444
12445 static std::vector<symtab_and_line>
12446 tracepoint_decode_location (struct breakpoint *b,
12447                             struct event_location *location,
12448                             struct program_space *search_pspace)
12449 {
12450   return decode_location_default (b, location, search_pspace);
12451 }
12452
12453 struct breakpoint_ops tracepoint_breakpoint_ops;
12454
12455 /* Virtual table for tracepoints on static probes.  */
12456
12457 static void
12458 tracepoint_probe_create_sals_from_location
12459   (struct event_location *location,
12460    struct linespec_result *canonical,
12461    enum bptype type_wanted)
12462 {
12463   /* We use the same method for breakpoint on probes.  */
12464   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12465 }
12466
12467 static std::vector<symtab_and_line>
12468 tracepoint_probe_decode_location (struct breakpoint *b,
12469                                   struct event_location *location,
12470                                   struct program_space *search_pspace)
12471 {
12472   /* We use the same method for breakpoint on probes.  */
12473   return bkpt_probe_decode_location (b, location, search_pspace);
12474 }
12475
12476 /* Dprintf breakpoint_ops methods.  */
12477
12478 static void
12479 dprintf_re_set (struct breakpoint *b)
12480 {
12481   breakpoint_re_set_default (b);
12482
12483   /* extra_string should never be non-NULL for dprintf.  */
12484   gdb_assert (b->extra_string != NULL);
12485
12486   /* 1 - connect to target 1, that can run breakpoint commands.
12487      2 - create a dprintf, which resolves fine.
12488      3 - disconnect from target 1
12489      4 - connect to target 2, that can NOT run breakpoint commands.
12490
12491      After steps #3/#4, you'll want the dprintf command list to
12492      be updated, because target 1 and 2 may well return different
12493      answers for target_can_run_breakpoint_commands().
12494      Given absence of finer grained resetting, we get to do
12495      it all the time.  */
12496   if (b->extra_string != NULL)
12497     update_dprintf_command_list (b);
12498 }
12499
12500 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12501
12502 static void
12503 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12504 {
12505   fprintf_unfiltered (fp, "dprintf %s,%s",
12506                       event_location_to_string (tp->location.get ()),
12507                       tp->extra_string.get ());
12508   print_recreate_thread (tp, fp);
12509 }
12510
12511 /* Implement the "after_condition_true" breakpoint_ops method for
12512    dprintf.
12513
12514    dprintf's are implemented with regular commands in their command
12515    list, but we run the commands here instead of before presenting the
12516    stop to the user, as dprintf's don't actually cause a stop.  This
12517    also makes it so that the commands of multiple dprintfs at the same
12518    address are all handled.  */
12519
12520 static void
12521 dprintf_after_condition_true (struct bpstat *bs)
12522 {
12523   /* dprintf's never cause a stop.  This wasn't set in the
12524      check_status hook instead because that would make the dprintf's
12525      condition not be evaluated.  */
12526   bs->stop = 0;
12527
12528   /* Run the command list here.  Take ownership of it instead of
12529      copying.  We never want these commands to run later in
12530      bpstat_do_actions, if a breakpoint that causes a stop happens to
12531      be set at same address as this dprintf, or even if running the
12532      commands here throws.  */
12533   counted_command_line cmds = std::move (bs->commands);
12534   gdb_assert (cmds != nullptr);
12535   execute_control_commands (cmds.get (), 0);
12536 }
12537
12538 /* The breakpoint_ops structure to be used on static tracepoints with
12539    markers (`-m').  */
12540
12541 static void
12542 strace_marker_create_sals_from_location (struct event_location *location,
12543                                          struct linespec_result *canonical,
12544                                          enum bptype type_wanted)
12545 {
12546   struct linespec_sals lsal;
12547   const char *arg_start, *arg;
12548
12549   arg = arg_start = get_linespec_location (location)->spec_string;
12550   lsal.sals = decode_static_tracepoint_spec (&arg);
12551
12552   std::string str (arg_start, arg - arg_start);
12553   const char *ptr = str.c_str ();
12554   canonical->location
12555     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12556
12557   lsal.canonical
12558     = xstrdup (event_location_to_string (canonical->location.get ()));
12559   canonical->lsals.push_back (std::move (lsal));
12560 }
12561
12562 static void
12563 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12564                                       struct linespec_result *canonical,
12565                                       gdb::unique_xmalloc_ptr<char> cond_string,
12566                                       gdb::unique_xmalloc_ptr<char> extra_string,
12567                                       enum bptype type_wanted,
12568                                       enum bpdisp disposition,
12569                                       int thread,
12570                                       int task, int ignore_count,
12571                                       const struct breakpoint_ops *ops,
12572                                       int from_tty, int enabled,
12573                                       int internal, unsigned flags)
12574 {
12575   const linespec_sals &lsal = canonical->lsals[0];
12576
12577   /* If the user is creating a static tracepoint by marker id
12578      (strace -m MARKER_ID), then store the sals index, so that
12579      breakpoint_re_set can try to match up which of the newly
12580      found markers corresponds to this one, and, don't try to
12581      expand multiple locations for each sal, given than SALS
12582      already should contain all sals for MARKER_ID.  */
12583
12584   for (size_t i = 0; i < lsal.sals.size (); i++)
12585     {
12586       event_location_up location
12587         = copy_event_location (canonical->location.get ());
12588
12589       std::unique_ptr<tracepoint> tp (new tracepoint ());
12590       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
12591                            std::move (location), NULL,
12592                            std::move (cond_string),
12593                            std::move (extra_string),
12594                            type_wanted, disposition,
12595                            thread, task, ignore_count, ops,
12596                            from_tty, enabled, internal, flags,
12597                            canonical->special_display);
12598       /* Given that its possible to have multiple markers with
12599          the same string id, if the user is creating a static
12600          tracepoint by marker id ("strace -m MARKER_ID"), then
12601          store the sals index, so that breakpoint_re_set can
12602          try to match up which of the newly found markers
12603          corresponds to this one  */
12604       tp->static_trace_marker_id_idx = i;
12605
12606       install_breakpoint (internal, std::move (tp), 0);
12607     }
12608 }
12609
12610 static std::vector<symtab_and_line>
12611 strace_marker_decode_location (struct breakpoint *b,
12612                                struct event_location *location,
12613                                struct program_space *search_pspace)
12614 {
12615   struct tracepoint *tp = (struct tracepoint *) b;
12616   const char *s = get_linespec_location (location)->spec_string;
12617
12618   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12619   if (sals.size () > tp->static_trace_marker_id_idx)
12620     {
12621       sals[0] = sals[tp->static_trace_marker_id_idx];
12622       sals.resize (1);
12623       return sals;
12624     }
12625   else
12626     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
12627 }
12628
12629 static struct breakpoint_ops strace_marker_breakpoint_ops;
12630
12631 static int
12632 strace_marker_p (struct breakpoint *b)
12633 {
12634   return b->ops == &strace_marker_breakpoint_ops;
12635 }
12636
12637 /* Delete a breakpoint and clean up all traces of it in the data
12638    structures.  */
12639
12640 void
12641 delete_breakpoint (struct breakpoint *bpt)
12642 {
12643   gdb_assert (bpt != NULL);
12644
12645   /* Has this bp already been deleted?  This can happen because
12646      multiple lists can hold pointers to bp's.  bpstat lists are
12647      especial culprits.
12648
12649      One example of this happening is a watchpoint's scope bp.  When
12650      the scope bp triggers, we notice that the watchpoint is out of
12651      scope, and delete it.  We also delete its scope bp.  But the
12652      scope bp is marked "auto-deleting", and is already on a bpstat.
12653      That bpstat is then checked for auto-deleting bp's, which are
12654      deleted.
12655
12656      A real solution to this problem might involve reference counts in
12657      bp's, and/or giving them pointers back to their referencing
12658      bpstat's, and teaching delete_breakpoint to only free a bp's
12659      storage when no more references were extent.  A cheaper bandaid
12660      was chosen.  */
12661   if (bpt->type == bp_none)
12662     return;
12663
12664   /* At least avoid this stale reference until the reference counting
12665      of breakpoints gets resolved.  */
12666   if (bpt->related_breakpoint != bpt)
12667     {
12668       struct breakpoint *related;
12669       struct watchpoint *w;
12670
12671       if (bpt->type == bp_watchpoint_scope)
12672         w = (struct watchpoint *) bpt->related_breakpoint;
12673       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
12674         w = (struct watchpoint *) bpt;
12675       else
12676         w = NULL;
12677       if (w != NULL)
12678         watchpoint_del_at_next_stop (w);
12679
12680       /* Unlink bpt from the bpt->related_breakpoint ring.  */
12681       for (related = bpt; related->related_breakpoint != bpt;
12682            related = related->related_breakpoint);
12683       related->related_breakpoint = bpt->related_breakpoint;
12684       bpt->related_breakpoint = bpt;
12685     }
12686
12687   /* watch_command_1 creates a watchpoint but only sets its number if
12688      update_watchpoint succeeds in creating its bp_locations.  If there's
12689      a problem in that process, we'll be asked to delete the half-created
12690      watchpoint.  In that case, don't announce the deletion.  */
12691   if (bpt->number)
12692     gdb::observers::breakpoint_deleted.notify (bpt);
12693
12694   if (breakpoint_chain == bpt)
12695     breakpoint_chain = bpt->next;
12696
12697   for (breakpoint *b : all_breakpoints ())
12698     if (b->next == bpt)
12699       {
12700         b->next = bpt->next;
12701         break;
12702       }
12703
12704   /* Be sure no bpstat's are pointing at the breakpoint after it's
12705      been freed.  */
12706   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
12707      in all threads for now.  Note that we cannot just remove bpstats
12708      pointing at bpt from the stop_bpstat list entirely, as breakpoint
12709      commands are associated with the bpstat; if we remove it here,
12710      then the later call to bpstat_do_actions (&stop_bpstat); in
12711      event-top.c won't do anything, and temporary breakpoints with
12712      commands won't work.  */
12713
12714   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
12715
12716   /* Now that breakpoint is removed from breakpoint list, update the
12717      global location list.  This will remove locations that used to
12718      belong to this breakpoint.  Do this before freeing the breakpoint
12719      itself, since remove_breakpoint looks at location's owner.  It
12720      might be better design to have location completely
12721      self-contained, but it's not the case now.  */
12722   update_global_location_list (UGLL_DONT_INSERT);
12723
12724   /* On the chance that someone will soon try again to delete this
12725      same bp, we mark it as deleted before freeing its storage.  */
12726   bpt->type = bp_none;
12727   delete bpt;
12728 }
12729
12730 /* Iterator function to call a user-provided callback function once
12731    for each of B and its related breakpoints.  */
12732
12733 static void
12734 iterate_over_related_breakpoints (struct breakpoint *b,
12735                                   gdb::function_view<void (breakpoint *)> function)
12736 {
12737   struct breakpoint *related;
12738
12739   related = b;
12740   do
12741     {
12742       struct breakpoint *next;
12743
12744       /* FUNCTION may delete RELATED.  */
12745       next = related->related_breakpoint;
12746
12747       if (next == related)
12748         {
12749           /* RELATED is the last ring entry.  */
12750           function (related);
12751
12752           /* FUNCTION may have deleted it, so we'd never reach back to
12753              B.  There's nothing left to do anyway, so just break
12754              out.  */
12755           break;
12756         }
12757       else
12758         function (related);
12759
12760       related = next;
12761     }
12762   while (related != b);
12763 }
12764
12765 static void
12766 delete_command (const char *arg, int from_tty)
12767 {
12768   dont_repeat ();
12769
12770   if (arg == 0)
12771     {
12772       int breaks_to_delete = 0;
12773
12774       /* Delete all breakpoints if no argument.  Do not delete
12775          internal breakpoints, these have to be deleted with an
12776          explicit breakpoint number argument.  */
12777       for (breakpoint *b : all_breakpoints ())
12778         if (user_breakpoint_p (b))
12779           {
12780             breaks_to_delete = 1;
12781             break;
12782           }
12783
12784       /* Ask user only if there are some breakpoints to delete.  */
12785       if (!from_tty
12786           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
12787         for (breakpoint *b : all_breakpoints_safe ())
12788           if (user_breakpoint_p (b))
12789             delete_breakpoint (b);
12790     }
12791   else
12792     map_breakpoint_numbers
12793       (arg, [&] (breakpoint *br)
12794        {
12795          iterate_over_related_breakpoints (br, delete_breakpoint);
12796        });
12797 }
12798
12799 /* Return true if all locations of B bound to PSPACE are pending.  If
12800    PSPACE is NULL, all locations of all program spaces are
12801    considered.  */
12802
12803 static int
12804 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
12805 {
12806   for (bp_location *loc : b->locations ())
12807     if ((pspace == NULL
12808          || loc->pspace == pspace)
12809         && !loc->shlib_disabled
12810         && !loc->pspace->executing_startup)
12811       return 0;
12812   return 1;
12813 }
12814
12815 /* Subroutine of update_breakpoint_locations to simplify it.
12816    Return non-zero if multiple fns in list LOC have the same name.
12817    Null names are ignored.  */
12818
12819 static int
12820 ambiguous_names_p (struct bp_location *loc)
12821 {
12822   struct bp_location *l;
12823   htab_up htab (htab_create_alloc (13, htab_hash_string, htab_eq_string, NULL,
12824                                    xcalloc, xfree));
12825
12826   for (l = loc; l != NULL; l = l->next)
12827     {
12828       const char **slot;
12829       const char *name = l->function_name.get ();
12830
12831       /* Allow for some names to be NULL, ignore them.  */
12832       if (name == NULL)
12833         continue;
12834
12835       slot = (const char **) htab_find_slot (htab.get (), (const void *) name,
12836                                              INSERT);
12837       /* NOTE: We can assume slot != NULL here because xcalloc never
12838          returns NULL.  */
12839       if (*slot != NULL)
12840         return 1;
12841       *slot = name;
12842     }
12843
12844   return 0;
12845 }
12846
12847 /* When symbols change, it probably means the sources changed as well,
12848    and it might mean the static tracepoint markers are no longer at
12849    the same address or line numbers they used to be at last we
12850    checked.  Losing your static tracepoints whenever you rebuild is
12851    undesirable.  This function tries to resync/rematch gdb static
12852    tracepoints with the markers on the target, for static tracepoints
12853    that have not been set by marker id.  Static tracepoint that have
12854    been set by marker id are reset by marker id in breakpoint_re_set.
12855    The heuristic is:
12856
12857    1) For a tracepoint set at a specific address, look for a marker at
12858    the old PC.  If one is found there, assume to be the same marker.
12859    If the name / string id of the marker found is different from the
12860    previous known name, assume that means the user renamed the marker
12861    in the sources, and output a warning.
12862
12863    2) For a tracepoint set at a given line number, look for a marker
12864    at the new address of the old line number.  If one is found there,
12865    assume to be the same marker.  If the name / string id of the
12866    marker found is different from the previous known name, assume that
12867    means the user renamed the marker in the sources, and output a
12868    warning.
12869
12870    3) If a marker is no longer found at the same address or line, it
12871    may mean the marker no longer exists.  But it may also just mean
12872    the code changed a bit.  Maybe the user added a few lines of code
12873    that made the marker move up or down (in line number terms).  Ask
12874    the target for info about the marker with the string id as we knew
12875    it.  If found, update line number and address in the matching
12876    static tracepoint.  This will get confused if there's more than one
12877    marker with the same ID (possible in UST, although unadvised
12878    precisely because it confuses tools).  */
12879
12880 static struct symtab_and_line
12881 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
12882 {
12883   struct tracepoint *tp = (struct tracepoint *) b;
12884   struct static_tracepoint_marker marker;
12885   CORE_ADDR pc;
12886
12887   pc = sal.pc;
12888   if (sal.line)
12889     find_line_pc (sal.symtab, sal.line, &pc);
12890
12891   if (target_static_tracepoint_marker_at (pc, &marker))
12892     {
12893       if (tp->static_trace_marker_id != marker.str_id)
12894         warning (_("static tracepoint %d changed probed marker from %s to %s"),
12895                  b->number, tp->static_trace_marker_id.c_str (),
12896                  marker.str_id.c_str ());
12897
12898       tp->static_trace_marker_id = std::move (marker.str_id);
12899
12900       return sal;
12901     }
12902
12903   /* Old marker wasn't found on target at lineno.  Try looking it up
12904      by string ID.  */
12905   if (!sal.explicit_pc
12906       && sal.line != 0
12907       && sal.symtab != NULL
12908       && !tp->static_trace_marker_id.empty ())
12909     {
12910       std::vector<static_tracepoint_marker> markers
12911         = target_static_tracepoint_markers_by_strid
12912             (tp->static_trace_marker_id.c_str ());
12913
12914       if (!markers.empty ())
12915         {
12916           struct symbol *sym;
12917           struct static_tracepoint_marker *tpmarker;
12918           struct ui_out *uiout = current_uiout;
12919           struct explicit_location explicit_loc;
12920
12921           tpmarker = &markers[0];
12922
12923           tp->static_trace_marker_id = std::move (tpmarker->str_id);
12924
12925           warning (_("marker for static tracepoint %d (%s) not "
12926                      "found at previous line number"),
12927                    b->number, tp->static_trace_marker_id.c_str ());
12928
12929           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
12930           sym = find_pc_sect_function (tpmarker->address, NULL);
12931           uiout->text ("Now in ");
12932           if (sym)
12933             {
12934               uiout->field_string ("func", sym->print_name (),
12935                                    function_name_style.style ());
12936               uiout->text (" at ");
12937             }
12938           uiout->field_string ("file",
12939                                symtab_to_filename_for_display (sal2.symtab),
12940                                file_name_style.style ());
12941           uiout->text (":");
12942
12943           if (uiout->is_mi_like_p ())
12944             {
12945               const char *fullname = symtab_to_fullname (sal2.symtab);
12946
12947               uiout->field_string ("fullname", fullname);
12948             }
12949
12950           uiout->field_signed ("line", sal2.line);
12951           uiout->text ("\n");
12952
12953           b->loc->line_number = sal2.line;
12954           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
12955
12956           b->location.reset (NULL);
12957           initialize_explicit_location (&explicit_loc);
12958           explicit_loc.source_filename
12959             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
12960           explicit_loc.line_offset.offset = b->loc->line_number;
12961           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
12962           b->location = new_explicit_location (&explicit_loc);
12963
12964           /* Might be nice to check if function changed, and warn if
12965              so.  */
12966         }
12967     }
12968   return sal;
12969 }
12970
12971 /* Returns 1 iff locations A and B are sufficiently same that
12972    we don't need to report breakpoint as changed.  */
12973
12974 static int
12975 locations_are_equal (struct bp_location *a, struct bp_location *b)
12976 {
12977   while (a && b)
12978     {
12979       if (a->address != b->address)
12980         return 0;
12981
12982       if (a->shlib_disabled != b->shlib_disabled)
12983         return 0;
12984
12985       if (a->enabled != b->enabled)
12986         return 0;
12987
12988       if (a->disabled_by_cond != b->disabled_by_cond)
12989         return 0;
12990
12991       a = a->next;
12992       b = b->next;
12993     }
12994
12995   if ((a == NULL) != (b == NULL))
12996     return 0;
12997
12998   return 1;
12999 }
13000
13001 /* Split all locations of B that are bound to PSPACE out of B's
13002    location list to a separate list and return that list's head.  If
13003    PSPACE is NULL, hoist out all locations of B.  */
13004
13005 static struct bp_location *
13006 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13007 {
13008   struct bp_location head;
13009   struct bp_location *i = b->loc;
13010   struct bp_location **i_link = &b->loc;
13011   struct bp_location *hoisted = &head;
13012
13013   if (pspace == NULL)
13014     {
13015       i = b->loc;
13016       b->loc = NULL;
13017       return i;
13018     }
13019
13020   head.next = NULL;
13021
13022   while (i != NULL)
13023     {
13024       if (i->pspace == pspace)
13025         {
13026           *i_link = i->next;
13027           i->next = NULL;
13028           hoisted->next = i;
13029           hoisted = i;
13030         }
13031       else
13032         i_link = &i->next;
13033       i = *i_link;
13034     }
13035
13036   return head.next;
13037 }
13038
13039 /* Create new breakpoint locations for B (a hardware or software
13040    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13041    zero, then B is a ranged breakpoint.  Only recreates locations for
13042    FILTER_PSPACE.  Locations of other program spaces are left
13043    untouched.  */
13044
13045 void
13046 update_breakpoint_locations (struct breakpoint *b,
13047                              struct program_space *filter_pspace,
13048                              gdb::array_view<const symtab_and_line> sals,
13049                              gdb::array_view<const symtab_and_line> sals_end)
13050 {
13051   struct bp_location *existing_locations;
13052
13053   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13054     {
13055       /* Ranged breakpoints have only one start location and one end
13056          location.  */
13057       b->enable_state = bp_disabled;
13058       fprintf_unfiltered (gdb_stderr,
13059                           _("Could not reset ranged breakpoint %d: "
13060                             "multiple locations found\n"),
13061                           b->number);
13062       return;
13063     }
13064
13065   /* If there's no new locations, and all existing locations are
13066      pending, don't do anything.  This optimizes the common case where
13067      all locations are in the same shared library, that was unloaded.
13068      We'd like to retain the location, so that when the library is
13069      loaded again, we don't loose the enabled/disabled status of the
13070      individual locations.  */
13071   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13072     return;
13073
13074   existing_locations = hoist_existing_locations (b, filter_pspace);
13075
13076   for (const auto &sal : sals)
13077     {
13078       struct bp_location *new_loc;
13079
13080       switch_to_program_space_and_thread (sal.pspace);
13081
13082       new_loc = add_location_to_breakpoint (b, &sal);
13083
13084       /* Reparse conditions, they might contain references to the
13085          old symtab.  */
13086       if (b->cond_string != NULL)
13087         {
13088           const char *s;
13089
13090           s = b->cond_string.get ();
13091           try
13092             {
13093               new_loc->cond = parse_exp_1 (&s, sal.pc,
13094                                            block_for_pc (sal.pc),
13095                                            0);
13096             }
13097           catch (const gdb_exception_error &e)
13098             {
13099               new_loc->disabled_by_cond = true;
13100             }
13101         }
13102
13103       if (!sals_end.empty ())
13104         {
13105           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13106
13107           new_loc->length = end - sals[0].pc + 1;
13108         }
13109     }
13110
13111   /* If possible, carry over 'disable' status from existing
13112      breakpoints.  */
13113   {
13114     struct bp_location *e = existing_locations;
13115     /* If there are multiple breakpoints with the same function name,
13116        e.g. for inline functions, comparing function names won't work.
13117        Instead compare pc addresses; this is just a heuristic as things
13118        may have moved, but in practice it gives the correct answer
13119        often enough until a better solution is found.  */
13120     int have_ambiguous_names = ambiguous_names_p (b->loc);
13121
13122     for (; e; e = e->next)
13123       {
13124         if ((!e->enabled || e->disabled_by_cond) && e->function_name)
13125           {
13126             if (have_ambiguous_names)
13127               {
13128                 for (bp_location *l : b->locations ())
13129                   {
13130                     /* Ignore software vs hardware location type at
13131                        this point, because with "set breakpoint
13132                        auto-hw", after a re-set, locations that were
13133                        hardware can end up as software, or vice versa.
13134                        As mentioned above, this is an heuristic and in
13135                        practice should give the correct answer often
13136                        enough.  */
13137                     if (breakpoint_locations_match (e, l, true))
13138                       {
13139                         l->enabled = e->enabled;
13140                         l->disabled_by_cond = e->disabled_by_cond;
13141                         break;
13142                       }
13143                   }
13144               }
13145             else
13146               {
13147                 for (bp_location *l : b->locations ())
13148                   if (l->function_name
13149                       && strcmp (e->function_name.get (),
13150                                  l->function_name.get ()) == 0)
13151                     {
13152                       l->enabled = e->enabled;
13153                       l->disabled_by_cond = e->disabled_by_cond;
13154                       break;
13155                     }
13156               }
13157           }
13158       }
13159   }
13160
13161   if (!locations_are_equal (existing_locations, b->loc))
13162     gdb::observers::breakpoint_modified.notify (b);
13163 }
13164
13165 /* Find the SaL locations corresponding to the given LOCATION.
13166    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13167
13168 static std::vector<symtab_and_line>
13169 location_to_sals (struct breakpoint *b, struct event_location *location,
13170                   struct program_space *search_pspace, int *found)
13171 {
13172   struct gdb_exception exception;
13173
13174   gdb_assert (b->ops != NULL);
13175
13176   std::vector<symtab_and_line> sals;
13177
13178   try
13179     {
13180       sals = b->ops->decode_location (b, location, search_pspace);
13181     }
13182   catch (gdb_exception_error &e)
13183     {
13184       int not_found_and_ok = 0;
13185
13186       /* For pending breakpoints, it's expected that parsing will
13187          fail until the right shared library is loaded.  User has
13188          already told to create pending breakpoints and don't need
13189          extra messages.  If breakpoint is in bp_shlib_disabled
13190          state, then user already saw the message about that
13191          breakpoint being disabled, and don't want to see more
13192          errors.  */
13193       if (e.error == NOT_FOUND_ERROR
13194           && (b->condition_not_parsed
13195               || (b->loc != NULL
13196                   && search_pspace != NULL
13197                   && b->loc->pspace != search_pspace)
13198               || (b->loc && b->loc->shlib_disabled)
13199               || (b->loc && b->loc->pspace->executing_startup)
13200               || b->enable_state == bp_disabled))
13201         not_found_and_ok = 1;
13202
13203       if (!not_found_and_ok)
13204         {
13205           /* We surely don't want to warn about the same breakpoint
13206              10 times.  One solution, implemented here, is disable
13207              the breakpoint on error.  Another solution would be to
13208              have separate 'warning emitted' flag.  Since this
13209              happens only when a binary has changed, I don't know
13210              which approach is better.  */
13211           b->enable_state = bp_disabled;
13212           throw;
13213         }
13214
13215       exception = std::move (e);
13216     }
13217
13218   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13219     {
13220       for (auto &sal : sals)
13221         resolve_sal_pc (&sal);
13222       if (b->condition_not_parsed && b->extra_string != NULL)
13223         {
13224           gdb::unique_xmalloc_ptr<char> cond_string, extra_string;
13225           int thread, task;
13226
13227           find_condition_and_thread_for_sals (sals, b->extra_string.get (),
13228                                               &cond_string, &thread,
13229                                               &task, &extra_string);
13230           gdb_assert (b->cond_string == NULL);
13231           if (cond_string)
13232             b->cond_string = std::move (cond_string);
13233           b->thread = thread;
13234           b->task = task;
13235           if (extra_string)
13236             b->extra_string = std::move (extra_string);
13237           b->condition_not_parsed = 0;
13238         }
13239
13240       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13241         sals[0] = update_static_tracepoint (b, sals[0]);
13242
13243       *found = 1;
13244     }
13245   else
13246     *found = 0;
13247
13248   return sals;
13249 }
13250
13251 /* The default re_set method, for typical hardware or software
13252    breakpoints.  Reevaluate the breakpoint and recreate its
13253    locations.  */
13254
13255 static void
13256 breakpoint_re_set_default (struct breakpoint *b)
13257 {
13258   struct program_space *filter_pspace = current_program_space;
13259   std::vector<symtab_and_line> expanded, expanded_end;
13260
13261   int found;
13262   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13263                                                         filter_pspace, &found);
13264   if (found)
13265     expanded = std::move (sals);
13266
13267   if (b->location_range_end != NULL)
13268     {
13269       std::vector<symtab_and_line> sals_end
13270         = location_to_sals (b, b->location_range_end.get (),
13271                             filter_pspace, &found);
13272       if (found)
13273         expanded_end = std::move (sals_end);
13274     }
13275
13276   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13277 }
13278
13279 /* Default method for creating SALs from an address string.  It basically
13280    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13281
13282 static void
13283 create_sals_from_location_default (struct event_location *location,
13284                                    struct linespec_result *canonical,
13285                                    enum bptype type_wanted)
13286 {
13287   parse_breakpoint_sals (location, canonical);
13288 }
13289
13290 /* Call create_breakpoints_sal for the given arguments.  This is the default
13291    function for the `create_breakpoints_sal' method of
13292    breakpoint_ops.  */
13293
13294 static void
13295 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13296                                 struct linespec_result *canonical,
13297                                 gdb::unique_xmalloc_ptr<char> cond_string,
13298                                 gdb::unique_xmalloc_ptr<char> extra_string,
13299                                 enum bptype type_wanted,
13300                                 enum bpdisp disposition,
13301                                 int thread,
13302                                 int task, int ignore_count,
13303                                 const struct breakpoint_ops *ops,
13304                                 int from_tty, int enabled,
13305                                 int internal, unsigned flags)
13306 {
13307   create_breakpoints_sal (gdbarch, canonical,
13308                           std::move (cond_string),
13309                           std::move (extra_string),
13310                           type_wanted, disposition,
13311                           thread, task, ignore_count, ops, from_tty,
13312                           enabled, internal, flags);
13313 }
13314
13315 /* Decode the line represented by S by calling decode_line_full.  This is the
13316    default function for the `decode_location' method of breakpoint_ops.  */
13317
13318 static std::vector<symtab_and_line>
13319 decode_location_default (struct breakpoint *b,
13320                          struct event_location *location,
13321                          struct program_space *search_pspace)
13322 {
13323   struct linespec_result canonical;
13324
13325   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13326                     NULL, 0, &canonical, multiple_symbols_all,
13327                     b->filter.get ());
13328
13329   /* We should get 0 or 1 resulting SALs.  */
13330   gdb_assert (canonical.lsals.size () < 2);
13331
13332   if (!canonical.lsals.empty ())
13333     {
13334       const linespec_sals &lsal = canonical.lsals[0];
13335       return std::move (lsal.sals);
13336     }
13337   return {};
13338 }
13339
13340 /* Reset a breakpoint.  */
13341
13342 static void
13343 breakpoint_re_set_one (breakpoint *b)
13344 {
13345   input_radix = b->input_radix;
13346   set_language (b->language);
13347
13348   b->ops->re_set (b);
13349 }
13350
13351 /* Re-set breakpoint locations for the current program space.
13352    Locations bound to other program spaces are left untouched.  */
13353
13354 void
13355 breakpoint_re_set (void)
13356 {
13357   {
13358     scoped_restore_current_language save_language;
13359     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13360     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13361
13362     /* breakpoint_re_set_one sets the current_language to the language
13363        of the breakpoint it is resetting (see prepare_re_set_context)
13364        before re-evaluating the breakpoint's location.  This change can
13365        unfortunately get undone by accident if the language_mode is set
13366        to auto, and we either switch frames, or more likely in this context,
13367        we select the current frame.
13368
13369        We prevent this by temporarily turning the language_mode to
13370        language_mode_manual.  We restore it once all breakpoints
13371        have been reset.  */
13372     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13373     language_mode = language_mode_manual;
13374
13375     /* Note: we must not try to insert locations until after all
13376        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13377        breakpoint 1, we'd insert the locations of breakpoint 2, which
13378        hadn't been re-set yet, and thus may have stale locations.  */
13379
13380     for (breakpoint *b : all_breakpoints_safe ())
13381       {
13382         try
13383           {
13384             breakpoint_re_set_one (b);
13385           }
13386         catch (const gdb_exception &ex)
13387           {
13388             exception_fprintf (gdb_stderr, ex,
13389                                "Error in re-setting breakpoint %d: ",
13390                                b->number);
13391           }
13392       }
13393
13394     jit_breakpoint_re_set ();
13395   }
13396
13397   create_overlay_event_breakpoint ();
13398   create_longjmp_master_breakpoint ();
13399   create_std_terminate_master_breakpoint ();
13400   create_exception_master_breakpoint ();
13401
13402   /* Now we can insert.  */
13403   update_global_location_list (UGLL_MAY_INSERT);
13404 }
13405 \f
13406 /* Reset the thread number of this breakpoint:
13407
13408    - If the breakpoint is for all threads, leave it as-is.
13409    - Else, reset it to the current thread for inferior_ptid.  */
13410 void
13411 breakpoint_re_set_thread (struct breakpoint *b)
13412 {
13413   if (b->thread != -1)
13414     {
13415       b->thread = inferior_thread ()->global_num;
13416
13417       /* We're being called after following a fork.  The new fork is
13418          selected as current, and unless this was a vfork will have a
13419          different program space from the original thread.  Reset that
13420          as well.  */
13421       b->loc->pspace = current_program_space;
13422     }
13423 }
13424
13425 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13426    If from_tty is nonzero, it prints a message to that effect,
13427    which ends with a period (no newline).  */
13428
13429 void
13430 set_ignore_count (int bptnum, int count, int from_tty)
13431 {
13432   if (count < 0)
13433     count = 0;
13434
13435   for (breakpoint *b : all_breakpoints ())
13436     if (b->number == bptnum)
13437       {
13438         if (is_tracepoint (b))
13439           {
13440             if (from_tty && count != 0)
13441               printf_filtered (_("Ignore count ignored for tracepoint %d."),
13442                                bptnum);
13443             return;
13444           }
13445
13446         b->ignore_count = count;
13447         if (from_tty)
13448           {
13449             if (count == 0)
13450               printf_filtered (_("Will stop next time "
13451                                  "breakpoint %d is reached."),
13452                                bptnum);
13453             else if (count == 1)
13454               printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13455                                bptnum);
13456             else
13457               printf_filtered (_("Will ignore next %d "
13458                                  "crossings of breakpoint %d."),
13459                                count, bptnum);
13460           }
13461         gdb::observers::breakpoint_modified.notify (b);
13462         return;
13463       }
13464
13465   error (_("No breakpoint number %d."), bptnum);
13466 }
13467
13468 /* Command to set ignore-count of breakpoint N to COUNT.  */
13469
13470 static void
13471 ignore_command (const char *args, int from_tty)
13472 {
13473   const char *p = args;
13474   int num;
13475
13476   if (p == 0)
13477     error_no_arg (_("a breakpoint number"));
13478
13479   num = get_number (&p);
13480   if (num == 0)
13481     error (_("bad breakpoint number: '%s'"), args);
13482   if (*p == 0)
13483     error (_("Second argument (specified ignore-count) is missing."));
13484
13485   set_ignore_count (num,
13486                     longest_to_int (value_as_long (parse_and_eval (p))),
13487                     from_tty);
13488   if (from_tty)
13489     printf_filtered ("\n");
13490 }
13491 \f
13492
13493 /* Call FUNCTION on each of the breakpoints with numbers in the range
13494    defined by BP_NUM_RANGE (an inclusive range).  */
13495
13496 static void
13497 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13498                              gdb::function_view<void (breakpoint *)> function)
13499 {
13500   if (bp_num_range.first == 0)
13501     {
13502       warning (_("bad breakpoint number at or near '%d'"),
13503                bp_num_range.first);
13504     }
13505   else
13506     {
13507       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13508         {
13509           bool match = false;
13510
13511           for (breakpoint *b : all_breakpoints_safe ())
13512             if (b->number == i)
13513               {
13514                 match = true;
13515                 function (b);
13516                 break;
13517               }
13518           if (!match)
13519             printf_filtered (_("No breakpoint number %d.\n"), i);
13520         }
13521     }
13522 }
13523
13524 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13525    ARGS.  */
13526
13527 static void
13528 map_breakpoint_numbers (const char *args,
13529                         gdb::function_view<void (breakpoint *)> function)
13530 {
13531   if (args == NULL || *args == '\0')
13532     error_no_arg (_("one or more breakpoint numbers"));
13533
13534   number_or_range_parser parser (args);
13535
13536   while (!parser.finished ())
13537     {
13538       int num = parser.get_number ();
13539       map_breakpoint_number_range (std::make_pair (num, num), function);
13540     }
13541 }
13542
13543 /* Return the breakpoint location structure corresponding to the
13544    BP_NUM and LOC_NUM values.  */
13545
13546 static struct bp_location *
13547 find_location_by_number (int bp_num, int loc_num)
13548 {
13549   breakpoint *b = get_breakpoint (bp_num);
13550
13551   if (!b || b->number != bp_num)
13552     error (_("Bad breakpoint number '%d'"), bp_num);
13553   
13554   if (loc_num == 0)
13555     error (_("Bad breakpoint location number '%d'"), loc_num);
13556
13557   int n = 0;
13558   for (bp_location *loc : b->locations ())
13559     if (++n == loc_num)
13560       return loc;
13561
13562   error (_("Bad breakpoint location number '%d'"), loc_num);
13563 }
13564
13565 /* Modes of operation for extract_bp_num.  */
13566 enum class extract_bp_kind
13567 {
13568   /* Extracting a breakpoint number.  */
13569   bp,
13570
13571   /* Extracting a location number.  */
13572   loc,
13573 };
13574
13575 /* Extract a breakpoint or location number (as determined by KIND)
13576    from the string starting at START.  TRAILER is a character which
13577    can be found after the number.  If you don't want a trailer, use
13578    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
13579    string.  This always returns a positive integer.  */
13580
13581 static int
13582 extract_bp_num (extract_bp_kind kind, const char *start,
13583                 int trailer, const char **end_out = NULL)
13584 {
13585   const char *end = start;
13586   int num = get_number_trailer (&end, trailer);
13587   if (num < 0)
13588     error (kind == extract_bp_kind::bp
13589            ? _("Negative breakpoint number '%.*s'")
13590            : _("Negative breakpoint location number '%.*s'"),
13591            int (end - start), start);
13592   if (num == 0)
13593     error (kind == extract_bp_kind::bp
13594            ? _("Bad breakpoint number '%.*s'")
13595            : _("Bad breakpoint location number '%.*s'"),
13596            int (end - start), start);
13597
13598   if (end_out != NULL)
13599     *end_out = end;
13600   return num;
13601 }
13602
13603 /* Extract a breakpoint or location range (as determined by KIND) in
13604    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
13605    representing the (inclusive) range.  The returned pair's elements
13606    are always positive integers.  */
13607
13608 static std::pair<int, int>
13609 extract_bp_or_bp_range (extract_bp_kind kind,
13610                         const std::string &arg,
13611                         std::string::size_type arg_offset)
13612 {
13613   std::pair<int, int> range;
13614   const char *bp_loc = &arg[arg_offset];
13615   std::string::size_type dash = arg.find ('-', arg_offset);
13616   if (dash != std::string::npos)
13617     {
13618       /* bp_loc is a range (x-z).  */
13619       if (arg.length () == dash + 1)
13620         error (kind == extract_bp_kind::bp
13621                ? _("Bad breakpoint number at or near: '%s'")
13622                : _("Bad breakpoint location number at or near: '%s'"),
13623                bp_loc);
13624
13625       const char *end;
13626       const char *start_first = bp_loc;
13627       const char *start_second = &arg[dash + 1];
13628       range.first = extract_bp_num (kind, start_first, '-');
13629       range.second = extract_bp_num (kind, start_second, '\0', &end);
13630
13631       if (range.first > range.second)
13632         error (kind == extract_bp_kind::bp
13633                ? _("Inverted breakpoint range at '%.*s'")
13634                : _("Inverted breakpoint location range at '%.*s'"),
13635                int (end - start_first), start_first);
13636     }
13637   else
13638     {
13639       /* bp_loc is a single value.  */
13640       range.first = extract_bp_num (kind, bp_loc, '\0');
13641       range.second = range.first;
13642     }
13643   return range;
13644 }
13645
13646 /* Extract the breakpoint/location range specified by ARG.  Returns
13647    the breakpoint range in BP_NUM_RANGE, and the location range in
13648    BP_LOC_RANGE.
13649
13650    ARG may be in any of the following forms:
13651
13652    x     where 'x' is a breakpoint number.
13653    x-y   where 'x' and 'y' specify a breakpoint numbers range.
13654    x.y   where 'x' is a breakpoint number and 'y' a location number.
13655    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
13656          location number range.
13657 */
13658
13659 static void
13660 extract_bp_number_and_location (const std::string &arg,
13661                                 std::pair<int, int> &bp_num_range,
13662                                 std::pair<int, int> &bp_loc_range)
13663 {
13664   std::string::size_type dot = arg.find ('.');
13665
13666   if (dot != std::string::npos)
13667     {
13668       /* Handle 'x.y' and 'x.y-z' cases.  */
13669
13670       if (arg.length () == dot + 1 || dot == 0)
13671         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
13672
13673       bp_num_range.first
13674         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
13675       bp_num_range.second = bp_num_range.first;
13676
13677       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
13678                                              arg, dot + 1);
13679     }
13680   else
13681     {
13682       /* Handle x and x-y cases.  */
13683
13684       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
13685       bp_loc_range.first = 0;
13686       bp_loc_range.second = 0;
13687     }
13688 }
13689
13690 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
13691    specifies whether to enable or disable.  */
13692
13693 static void
13694 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
13695 {
13696   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
13697   if (loc != NULL)
13698     {
13699       if (loc->disabled_by_cond && enable)
13700         error (_("Breakpoint %d's condition is invalid at location %d, "
13701                  "cannot enable."), bp_num, loc_num);
13702
13703       if (loc->enabled != enable)
13704         {
13705           loc->enabled = enable;
13706           mark_breakpoint_location_modified (loc);
13707         }
13708       if (target_supports_enable_disable_tracepoint ()
13709           && current_trace_status ()->running && loc->owner
13710           && is_tracepoint (loc->owner))
13711         target_disable_tracepoint (loc);
13712     }
13713   update_global_location_list (UGLL_DONT_INSERT);
13714
13715   gdb::observers::breakpoint_modified.notify (loc->owner);
13716 }
13717
13718 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
13719    number of the breakpoint, and BP_LOC_RANGE specifies the
13720    (inclusive) range of location numbers of that breakpoint to
13721    enable/disable.  ENABLE specifies whether to enable or disable the
13722    location.  */
13723
13724 static void
13725 enable_disable_breakpoint_location_range (int bp_num,
13726                                           std::pair<int, int> &bp_loc_range,
13727                                           bool enable)
13728 {
13729   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
13730     enable_disable_bp_num_loc (bp_num, i, enable);
13731 }
13732
13733 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13734    If from_tty is nonzero, it prints a message to that effect,
13735    which ends with a period (no newline).  */
13736
13737 void
13738 disable_breakpoint (struct breakpoint *bpt)
13739 {
13740   /* Never disable a watchpoint scope breakpoint; we want to
13741      hit them when we leave scope so we can delete both the
13742      watchpoint and its scope breakpoint at that time.  */
13743   if (bpt->type == bp_watchpoint_scope)
13744     return;
13745
13746   bpt->enable_state = bp_disabled;
13747
13748   /* Mark breakpoint locations modified.  */
13749   mark_breakpoint_modified (bpt);
13750
13751   if (target_supports_enable_disable_tracepoint ()
13752       && current_trace_status ()->running && is_tracepoint (bpt))
13753     {
13754       for (bp_location *location : bpt->locations ())
13755         target_disable_tracepoint (location);
13756     }
13757
13758   update_global_location_list (UGLL_DONT_INSERT);
13759
13760   gdb::observers::breakpoint_modified.notify (bpt);
13761 }
13762
13763 /* Enable or disable the breakpoint(s) or breakpoint location(s)
13764    specified in ARGS.  ARGS may be in any of the formats handled by
13765    extract_bp_number_and_location.  ENABLE specifies whether to enable
13766    or disable the breakpoints/locations.  */
13767
13768 static void
13769 enable_disable_command (const char *args, int from_tty, bool enable)
13770 {
13771   if (args == 0)
13772     {
13773       for (breakpoint *bpt : all_breakpoints ())
13774         if (user_breakpoint_p (bpt))
13775           {
13776             if (enable)
13777               enable_breakpoint (bpt);
13778             else
13779               disable_breakpoint (bpt);
13780           }
13781     }
13782   else
13783     {
13784       std::string num = extract_arg (&args);
13785
13786       while (!num.empty ())
13787         {
13788           std::pair<int, int> bp_num_range, bp_loc_range;
13789
13790           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
13791
13792           if (bp_loc_range.first == bp_loc_range.second
13793               && bp_loc_range.first == 0)
13794             {
13795               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
13796               map_breakpoint_number_range (bp_num_range,
13797                                            enable
13798                                            ? enable_breakpoint
13799                                            : disable_breakpoint);
13800             }
13801           else
13802             {
13803               /* Handle breakpoint ids with formats 'x.y' or
13804                  'x.y-z'.  */
13805               enable_disable_breakpoint_location_range
13806                 (bp_num_range.first, bp_loc_range, enable);
13807             }
13808           num = extract_arg (&args);
13809         }
13810     }
13811 }
13812
13813 /* The disable command disables the specified breakpoints/locations
13814    (or all defined breakpoints) so they're no longer effective in
13815    stopping the inferior.  ARGS may be in any of the forms defined in
13816    extract_bp_number_and_location.  */
13817
13818 static void
13819 disable_command (const char *args, int from_tty)
13820 {
13821   enable_disable_command (args, from_tty, false);
13822 }
13823
13824 static void
13825 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
13826                         int count)
13827 {
13828   int target_resources_ok;
13829
13830   if (bpt->type == bp_hardware_breakpoint)
13831     {
13832       int i;
13833       i = hw_breakpoint_used_count ();
13834       target_resources_ok = 
13835         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
13836                                             i + 1, 0);
13837       if (target_resources_ok == 0)
13838         error (_("No hardware breakpoint support in the target."));
13839       else if (target_resources_ok < 0)
13840         error (_("Hardware breakpoints used exceeds limit."));
13841     }
13842
13843   if (is_watchpoint (bpt))
13844     {
13845       /* Initialize it just to avoid a GCC false warning.  */
13846       enum enable_state orig_enable_state = bp_disabled;
13847
13848       try
13849         {
13850           struct watchpoint *w = (struct watchpoint *) bpt;
13851
13852           orig_enable_state = bpt->enable_state;
13853           bpt->enable_state = bp_enabled;
13854           update_watchpoint (w, 1 /* reparse */);
13855         }
13856       catch (const gdb_exception &e)
13857         {
13858           bpt->enable_state = orig_enable_state;
13859           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
13860                              bpt->number);
13861           return;
13862         }
13863     }
13864
13865   bpt->enable_state = bp_enabled;
13866
13867   /* Mark breakpoint locations modified.  */
13868   mark_breakpoint_modified (bpt);
13869
13870   if (target_supports_enable_disable_tracepoint ()
13871       && current_trace_status ()->running && is_tracepoint (bpt))
13872     {
13873       for (bp_location *location : bpt->locations ())
13874         target_enable_tracepoint (location);
13875     }
13876
13877   bpt->disposition = disposition;
13878   bpt->enable_count = count;
13879   update_global_location_list (UGLL_MAY_INSERT);
13880
13881   gdb::observers::breakpoint_modified.notify (bpt);
13882 }
13883
13884
13885 void
13886 enable_breakpoint (struct breakpoint *bpt)
13887 {
13888   enable_breakpoint_disp (bpt, bpt->disposition, 0);
13889 }
13890
13891 /* The enable command enables the specified breakpoints/locations (or
13892    all defined breakpoints) so they once again become (or continue to
13893    be) effective in stopping the inferior.  ARGS may be in any of the
13894    forms defined in extract_bp_number_and_location.  */
13895
13896 static void
13897 enable_command (const char *args, int from_tty)
13898 {
13899   enable_disable_command (args, from_tty, true);
13900 }
13901
13902 static void
13903 enable_once_command (const char *args, int from_tty)
13904 {
13905   map_breakpoint_numbers
13906     (args, [&] (breakpoint *b)
13907      {
13908        iterate_over_related_breakpoints
13909          (b, [&] (breakpoint *bpt)
13910           {
13911             enable_breakpoint_disp (bpt, disp_disable, 1);
13912           });
13913      });
13914 }
13915
13916 static void
13917 enable_count_command (const char *args, int from_tty)
13918 {
13919   int count;
13920
13921   if (args == NULL)
13922     error_no_arg (_("hit count"));
13923
13924   count = get_number (&args);
13925
13926   map_breakpoint_numbers
13927     (args, [&] (breakpoint *b)
13928      {
13929        iterate_over_related_breakpoints
13930          (b, [&] (breakpoint *bpt)
13931           {
13932             enable_breakpoint_disp (bpt, disp_disable, count);
13933           });
13934      });
13935 }
13936
13937 static void
13938 enable_delete_command (const char *args, int from_tty)
13939 {
13940   map_breakpoint_numbers
13941     (args, [&] (breakpoint *b)
13942      {
13943        iterate_over_related_breakpoints
13944          (b, [&] (breakpoint *bpt)
13945           {
13946             enable_breakpoint_disp (bpt, disp_del, 1);
13947           });
13948      });
13949 }
13950 \f
13951 /* Invalidate last known value of any hardware watchpoint if
13952    the memory which that value represents has been written to by
13953    GDB itself.  */
13954
13955 static void
13956 invalidate_bp_value_on_memory_change (struct inferior *inferior,
13957                                       CORE_ADDR addr, ssize_t len,
13958                                       const bfd_byte *data)
13959 {
13960   for (breakpoint *bp : all_breakpoints ())
13961     if (bp->enable_state == bp_enabled
13962         && bp->type == bp_hardware_watchpoint)
13963       {
13964         struct watchpoint *wp = (struct watchpoint *) bp;
13965
13966         if (wp->val_valid && wp->val != nullptr)
13967           {
13968             for (bp_location *loc : bp->locations ())
13969               if (loc->loc_type == bp_loc_hardware_watchpoint
13970                   && loc->address + loc->length > addr
13971                   && addr + len > loc->address)
13972                 {
13973                   wp->val = NULL;
13974                   wp->val_valid = false;
13975                 }
13976           }
13977       }
13978 }
13979
13980 /* Create and insert a breakpoint for software single step.  */
13981
13982 void
13983 insert_single_step_breakpoint (struct gdbarch *gdbarch,
13984                                const address_space *aspace,
13985                                CORE_ADDR next_pc)
13986 {
13987   struct thread_info *tp = inferior_thread ();
13988   struct symtab_and_line sal;
13989   CORE_ADDR pc = next_pc;
13990
13991   if (tp->control.single_step_breakpoints == NULL)
13992     {
13993       tp->control.single_step_breakpoints
13994         = new_single_step_breakpoint (tp->global_num, gdbarch);
13995     }
13996
13997   sal = find_pc_line (pc, 0);
13998   sal.pc = pc;
13999   sal.section = find_pc_overlay (pc);
14000   sal.explicit_pc = 1;
14001   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14002
14003   update_global_location_list (UGLL_INSERT);
14004 }
14005
14006 /* Insert single step breakpoints according to the current state.  */
14007
14008 int
14009 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14010 {
14011   struct regcache *regcache = get_current_regcache ();
14012   std::vector<CORE_ADDR> next_pcs;
14013
14014   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14015
14016   if (!next_pcs.empty ())
14017     {
14018       struct frame_info *frame = get_current_frame ();
14019       const address_space *aspace = get_frame_address_space (frame);
14020
14021       for (CORE_ADDR pc : next_pcs)
14022         insert_single_step_breakpoint (gdbarch, aspace, pc);
14023
14024       return 1;
14025     }
14026   else
14027     return 0;
14028 }
14029
14030 /* See breakpoint.h.  */
14031
14032 int
14033 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14034                                        const address_space *aspace,
14035                                        CORE_ADDR pc)
14036 {
14037   for (bp_location *loc : bp->locations ())
14038     if (loc->inserted
14039         && breakpoint_location_address_match (loc, aspace, pc))
14040       return 1;
14041
14042   return 0;
14043 }
14044
14045 /* Check whether a software single-step breakpoint is inserted at
14046    PC.  */
14047
14048 int
14049 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14050                                         CORE_ADDR pc)
14051 {
14052   for (breakpoint *bpt : all_breakpoints ())
14053     {
14054       if (bpt->type == bp_single_step
14055           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14056         return 1;
14057     }
14058   return 0;
14059 }
14060
14061 /* Tracepoint-specific operations.  */
14062
14063 /* Set tracepoint count to NUM.  */
14064 static void
14065 set_tracepoint_count (int num)
14066 {
14067   tracepoint_count = num;
14068   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14069 }
14070
14071 static void
14072 trace_command (const char *arg, int from_tty)
14073 {
14074   event_location_up location = string_to_event_location (&arg,
14075                                                          current_language);
14076   const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
14077     (location.get (), true /* is_tracepoint */);
14078
14079   create_breakpoint (get_current_arch (),
14080                      location.get (),
14081                      NULL, 0, arg, false, 1 /* parse arg */,
14082                      0 /* tempflag */,
14083                      bp_tracepoint /* type_wanted */,
14084                      0 /* Ignore count */,
14085                      pending_break_support,
14086                      ops,
14087                      from_tty,
14088                      1 /* enabled */,
14089                      0 /* internal */, 0);
14090 }
14091
14092 static void
14093 ftrace_command (const char *arg, int from_tty)
14094 {
14095   event_location_up location = string_to_event_location (&arg,
14096                                                          current_language);
14097   create_breakpoint (get_current_arch (),
14098                      location.get (),
14099                      NULL, 0, arg, false, 1 /* parse arg */,
14100                      0 /* tempflag */,
14101                      bp_fast_tracepoint /* type_wanted */,
14102                      0 /* Ignore count */,
14103                      pending_break_support,
14104                      &tracepoint_breakpoint_ops,
14105                      from_tty,
14106                      1 /* enabled */,
14107                      0 /* internal */, 0);
14108 }
14109
14110 /* strace command implementation.  Creates a static tracepoint.  */
14111
14112 static void
14113 strace_command (const char *arg, int from_tty)
14114 {
14115   struct breakpoint_ops *ops;
14116   event_location_up location;
14117
14118   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14119      or with a normal static tracepoint.  */
14120   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14121     {
14122       ops = &strace_marker_breakpoint_ops;
14123       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14124     }
14125   else
14126     {
14127       ops = &tracepoint_breakpoint_ops;
14128       location = string_to_event_location (&arg, current_language);
14129     }
14130
14131   create_breakpoint (get_current_arch (),
14132                      location.get (),
14133                      NULL, 0, arg, false, 1 /* parse arg */,
14134                      0 /* tempflag */,
14135                      bp_static_tracepoint /* type_wanted */,
14136                      0 /* Ignore count */,
14137                      pending_break_support,
14138                      ops,
14139                      from_tty,
14140                      1 /* enabled */,
14141                      0 /* internal */, 0);
14142 }
14143
14144 /* Set up a fake reader function that gets command lines from a linked
14145    list that was acquired during tracepoint uploading.  */
14146
14147 static struct uploaded_tp *this_utp;
14148 static int next_cmd;
14149
14150 static char *
14151 read_uploaded_action (void)
14152 {
14153   char *rslt = nullptr;
14154
14155   if (next_cmd < this_utp->cmd_strings.size ())
14156     {
14157       rslt = this_utp->cmd_strings[next_cmd].get ();
14158       next_cmd++;
14159     }
14160
14161   return rslt;
14162 }
14163
14164 /* Given information about a tracepoint as recorded on a target (which
14165    can be either a live system or a trace file), attempt to create an
14166    equivalent GDB tracepoint.  This is not a reliable process, since
14167    the target does not necessarily have all the information used when
14168    the tracepoint was originally defined.  */
14169   
14170 struct tracepoint *
14171 create_tracepoint_from_upload (struct uploaded_tp *utp)
14172 {
14173   const char *addr_str;
14174   char small_buf[100];
14175   struct tracepoint *tp;
14176
14177   if (utp->at_string)
14178     addr_str = utp->at_string.get ();
14179   else
14180     {
14181       /* In the absence of a source location, fall back to raw
14182          address.  Since there is no way to confirm that the address
14183          means the same thing as when the trace was started, warn the
14184          user.  */
14185       warning (_("Uploaded tracepoint %d has no "
14186                  "source location, using raw address"),
14187                utp->number);
14188       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14189       addr_str = small_buf;
14190     }
14191
14192   /* There's not much we can do with a sequence of bytecodes.  */
14193   if (utp->cond && !utp->cond_string)
14194     warning (_("Uploaded tracepoint %d condition "
14195                "has no source form, ignoring it"),
14196              utp->number);
14197
14198   event_location_up location = string_to_event_location (&addr_str,
14199                                                          current_language);
14200   if (!create_breakpoint (get_current_arch (),
14201                           location.get (),
14202                           utp->cond_string.get (), -1, addr_str,
14203                           false /* force_condition */,
14204                           0 /* parse cond/thread */,
14205                           0 /* tempflag */,
14206                           utp->type /* type_wanted */,
14207                           0 /* Ignore count */,
14208                           pending_break_support,
14209                           &tracepoint_breakpoint_ops,
14210                           0 /* from_tty */,
14211                           utp->enabled /* enabled */,
14212                           0 /* internal */,
14213                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14214     return NULL;
14215
14216   /* Get the tracepoint we just created.  */
14217   tp = get_tracepoint (tracepoint_count);
14218   gdb_assert (tp != NULL);
14219
14220   if (utp->pass > 0)
14221     {
14222       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14223                  tp->number);
14224
14225       trace_pass_command (small_buf, 0);
14226     }
14227
14228   /* If we have uploaded versions of the original commands, set up a
14229      special-purpose "reader" function and call the usual command line
14230      reader, then pass the result to the breakpoint command-setting
14231      function.  */
14232   if (!utp->cmd_strings.empty ())
14233     {
14234       counted_command_line cmd_list;
14235
14236       this_utp = utp;
14237       next_cmd = 0;
14238
14239       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14240
14241       breakpoint_set_commands (tp, std::move (cmd_list));
14242     }
14243   else if (!utp->actions.empty ()
14244            || !utp->step_actions.empty ())
14245     warning (_("Uploaded tracepoint %d actions "
14246                "have no source form, ignoring them"),
14247              utp->number);
14248
14249   /* Copy any status information that might be available.  */
14250   tp->hit_count = utp->hit_count;
14251   tp->traceframe_usage = utp->traceframe_usage;
14252
14253   return tp;
14254 }
14255   
14256 /* Print information on tracepoint number TPNUM_EXP, or all if
14257    omitted.  */
14258
14259 static void
14260 info_tracepoints_command (const char *args, int from_tty)
14261 {
14262   struct ui_out *uiout = current_uiout;
14263   int num_printed;
14264
14265   num_printed = breakpoint_1 (args, false, is_tracepoint);
14266
14267   if (num_printed == 0)
14268     {
14269       if (args == NULL || *args == '\0')
14270         uiout->message ("No tracepoints.\n");
14271       else
14272         uiout->message ("No tracepoint matching '%s'.\n", args);
14273     }
14274
14275   default_collect_info ();
14276 }
14277
14278 /* The 'enable trace' command enables tracepoints.
14279    Not supported by all targets.  */
14280 static void
14281 enable_trace_command (const char *args, int from_tty)
14282 {
14283   enable_command (args, from_tty);
14284 }
14285
14286 /* The 'disable trace' command disables tracepoints.
14287    Not supported by all targets.  */
14288 static void
14289 disable_trace_command (const char *args, int from_tty)
14290 {
14291   disable_command (args, from_tty);
14292 }
14293
14294 /* Remove a tracepoint (or all if no argument).  */
14295 static void
14296 delete_trace_command (const char *arg, int from_tty)
14297 {
14298   dont_repeat ();
14299
14300   if (arg == 0)
14301     {
14302       int breaks_to_delete = 0;
14303
14304       /* Delete all breakpoints if no argument.
14305          Do not delete internal or call-dummy breakpoints, these
14306          have to be deleted with an explicit breakpoint number 
14307          argument.  */
14308       for (breakpoint *tp : all_tracepoints ())
14309         if (is_tracepoint (tp) && user_breakpoint_p (tp))
14310           {
14311             breaks_to_delete = 1;
14312             break;
14313           }
14314
14315       /* Ask user only if there are some breakpoints to delete.  */
14316       if (!from_tty
14317           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14318         {
14319           for (breakpoint *b : all_breakpoints_safe ())
14320             if (is_tracepoint (b) && user_breakpoint_p (b))
14321               delete_breakpoint (b);
14322         }
14323     }
14324   else
14325     map_breakpoint_numbers
14326       (arg, [&] (breakpoint *br)
14327        {
14328          iterate_over_related_breakpoints (br, delete_breakpoint);
14329        });
14330 }
14331
14332 /* Helper function for trace_pass_command.  */
14333
14334 static void
14335 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14336 {
14337   tp->pass_count = count;
14338   gdb::observers::breakpoint_modified.notify (tp);
14339   if (from_tty)
14340     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14341                      tp->number, count);
14342 }
14343
14344 /* Set passcount for tracepoint.
14345
14346    First command argument is passcount, second is tracepoint number.
14347    If tracepoint number omitted, apply to most recently defined.
14348    Also accepts special argument "all".  */
14349
14350 static void
14351 trace_pass_command (const char *args, int from_tty)
14352 {
14353   struct tracepoint *t1;
14354   ULONGEST count;
14355
14356   if (args == 0 || *args == 0)
14357     error (_("passcount command requires an "
14358              "argument (count + optional TP num)"));
14359
14360   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14361
14362   args = skip_spaces (args);
14363   if (*args && strncasecmp (args, "all", 3) == 0)
14364     {
14365       args += 3;                        /* Skip special argument "all".  */
14366       if (*args)
14367         error (_("Junk at end of arguments."));
14368
14369       for (breakpoint *b : all_tracepoints ())
14370         {
14371           t1 = (struct tracepoint *) b;
14372           trace_pass_set_count (t1, count, from_tty);
14373         }
14374     }
14375   else if (*args == '\0')
14376     {
14377       t1 = get_tracepoint_by_number (&args, NULL);
14378       if (t1)
14379         trace_pass_set_count (t1, count, from_tty);
14380     }
14381   else
14382     {
14383       number_or_range_parser parser (args);
14384       while (!parser.finished ())
14385         {
14386           t1 = get_tracepoint_by_number (&args, &parser);
14387           if (t1)
14388             trace_pass_set_count (t1, count, from_tty);
14389         }
14390     }
14391 }
14392
14393 struct tracepoint *
14394 get_tracepoint (int num)
14395 {
14396   for (breakpoint *t : all_tracepoints ())
14397     if (t->number == num)
14398       return (struct tracepoint *) t;
14399
14400   return NULL;
14401 }
14402
14403 /* Find the tracepoint with the given target-side number (which may be
14404    different from the tracepoint number after disconnecting and
14405    reconnecting).  */
14406
14407 struct tracepoint *
14408 get_tracepoint_by_number_on_target (int num)
14409 {
14410   for (breakpoint *b : all_tracepoints ())
14411     {
14412       struct tracepoint *t = (struct tracepoint *) b;
14413
14414       if (t->number_on_target == num)
14415         return t;
14416     }
14417
14418   return NULL;
14419 }
14420
14421 /* Utility: parse a tracepoint number and look it up in the list.
14422    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14423    If the argument is missing, the most recent tracepoint
14424    (tracepoint_count) is returned.  */
14425
14426 struct tracepoint *
14427 get_tracepoint_by_number (const char **arg,
14428                           number_or_range_parser *parser)
14429 {
14430   int tpnum;
14431   const char *instring = arg == NULL ? NULL : *arg;
14432
14433   if (parser != NULL)
14434     {
14435       gdb_assert (!parser->finished ());
14436       tpnum = parser->get_number ();
14437     }
14438   else if (arg == NULL || *arg == NULL || ! **arg)
14439     tpnum = tracepoint_count;
14440   else
14441     tpnum = get_number (arg);
14442
14443   if (tpnum <= 0)
14444     {
14445       if (instring && *instring)
14446         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14447                          instring);
14448       else
14449         printf_filtered (_("No previous tracepoint\n"));
14450       return NULL;
14451     }
14452
14453   for (breakpoint *t : all_tracepoints ())
14454     if (t->number == tpnum)
14455       return (struct tracepoint *) t;
14456
14457   printf_filtered ("No tracepoint number %d.\n", tpnum);
14458   return NULL;
14459 }
14460
14461 void
14462 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14463 {
14464   if (b->thread != -1)
14465     fprintf_unfiltered (fp, " thread %d", b->thread);
14466
14467   if (b->task != 0)
14468     fprintf_unfiltered (fp, " task %d", b->task);
14469
14470   fprintf_unfiltered (fp, "\n");
14471 }
14472
14473 /* Save information on user settable breakpoints (watchpoints, etc) to
14474    a new script file named FILENAME.  If FILTER is non-NULL, call it
14475    on each breakpoint and only include the ones for which it returns
14476    true.  */
14477
14478 static void
14479 save_breakpoints (const char *filename, int from_tty,
14480                   bool (*filter) (const struct breakpoint *))
14481 {
14482   int any = 0;
14483   int extra_trace_bits = 0;
14484
14485   if (filename == 0 || *filename == 0)
14486     error (_("Argument required (file name in which to save)"));
14487
14488   /* See if we have anything to save.  */
14489   for (breakpoint *tp : all_breakpoints ())
14490     {
14491       /* Skip internal and momentary breakpoints.  */
14492       if (!user_breakpoint_p (tp))
14493         continue;
14494
14495       /* If we have a filter, only save the breakpoints it accepts.  */
14496       if (filter && !filter (tp))
14497         continue;
14498
14499       any = 1;
14500
14501       if (is_tracepoint (tp))
14502         {
14503           extra_trace_bits = 1;
14504
14505           /* We can stop searching.  */
14506           break;
14507         }
14508     }
14509
14510   if (!any)
14511     {
14512       warning (_("Nothing to save."));
14513       return;
14514     }
14515
14516   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14517
14518   stdio_file fp;
14519
14520   if (!fp.open (expanded_filename.get (), "w"))
14521     error (_("Unable to open file '%s' for saving (%s)"),
14522            expanded_filename.get (), safe_strerror (errno));
14523
14524   if (extra_trace_bits)
14525     save_trace_state_variables (&fp);
14526
14527   for (breakpoint *tp : all_breakpoints ())
14528     {
14529       /* Skip internal and momentary breakpoints.  */
14530       if (!user_breakpoint_p (tp))
14531         continue;
14532
14533       /* If we have a filter, only save the breakpoints it accepts.  */
14534       if (filter && !filter (tp))
14535         continue;
14536
14537       tp->ops->print_recreate (tp, &fp);
14538
14539       /* Note, we can't rely on tp->number for anything, as we can't
14540          assume the recreated breakpoint numbers will match.  Use $bpnum
14541          instead.  */
14542
14543       if (tp->cond_string)
14544         fp.printf ("  condition $bpnum %s\n", tp->cond_string.get ());
14545
14546       if (tp->ignore_count)
14547         fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
14548
14549       if (tp->type != bp_dprintf && tp->commands)
14550         {
14551           fp.puts ("  commands\n");
14552
14553           current_uiout->redirect (&fp);
14554           try
14555             {
14556               print_command_lines (current_uiout, tp->commands.get (), 2);
14557             }
14558           catch (const gdb_exception &ex)
14559             {
14560             current_uiout->redirect (NULL);
14561               throw;
14562             }
14563
14564           current_uiout->redirect (NULL);
14565           fp.puts ("  end\n");
14566         }
14567
14568       if (tp->enable_state == bp_disabled)
14569         fp.puts ("disable $bpnum\n");
14570
14571       /* If this is a multi-location breakpoint, check if the locations
14572          should be individually disabled.  Watchpoint locations are
14573          special, and not user visible.  */
14574       if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
14575         {
14576           int n = 1;
14577
14578           for (bp_location *loc : tp->locations ())
14579             {
14580               if (!loc->enabled)
14581                 fp.printf ("disable $bpnum.%d\n", n);
14582
14583               n++;
14584             }
14585         }
14586     }
14587
14588   if (extra_trace_bits && !default_collect.empty ())
14589     fp.printf ("set default-collect %s\n", default_collect.c_str ());
14590
14591   if (from_tty)
14592     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
14593 }
14594
14595 /* The `save breakpoints' command.  */
14596
14597 static void
14598 save_breakpoints_command (const char *args, int from_tty)
14599 {
14600   save_breakpoints (args, from_tty, NULL);
14601 }
14602
14603 /* The `save tracepoints' command.  */
14604
14605 static void
14606 save_tracepoints_command (const char *args, int from_tty)
14607 {
14608   save_breakpoints (args, from_tty, is_tracepoint);
14609 }
14610
14611 \f
14612 /* This help string is used to consolidate all the help string for specifying
14613    locations used by several commands.  */
14614
14615 #define LOCATION_HELP_STRING \
14616 "Linespecs are colon-separated lists of location parameters, such as\n\
14617 source filename, function name, label name, and line number.\n\
14618 Example: To specify the start of a label named \"the_top\" in the\n\
14619 function \"fact\" in the file \"factorial.c\", use\n\
14620 \"factorial.c:fact:the_top\".\n\
14621 \n\
14622 Address locations begin with \"*\" and specify an exact address in the\n\
14623 program.  Example: To specify the fourth byte past the start function\n\
14624 \"main\", use \"*main + 4\".\n\
14625 \n\
14626 Explicit locations are similar to linespecs but use an option/argument\n\
14627 syntax to specify location parameters.\n\
14628 Example: To specify the start of the label named \"the_top\" in the\n\
14629 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
14630 -function fact -label the_top\".\n\
14631 \n\
14632 By default, a specified function is matched against the program's\n\
14633 functions in all scopes.  For C++, this means in all namespaces and\n\
14634 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
14635 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
14636 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
14637 specified name as a complete fully-qualified name instead."
14638
14639 /* This help string is used for the break, hbreak, tbreak and thbreak
14640    commands.  It is defined as a macro to prevent duplication.
14641    COMMAND should be a string constant containing the name of the
14642    command.  */
14643
14644 #define BREAK_ARGS_HELP(command) \
14645 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]\n\
14646 \t[-force-condition] [if CONDITION]\n\
14647 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
14648 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
14649 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
14650 `-probe-dtrace' (for a DTrace probe).\n\
14651 LOCATION may be a linespec, address, or explicit location as described\n\
14652 below.\n\
14653 \n\
14654 With no LOCATION, uses current execution address of the selected\n\
14655 stack frame.  This is useful for breaking on return to a stack frame.\n\
14656 \n\
14657 THREADNUM is the number from \"info threads\".\n\
14658 CONDITION is a boolean expression.\n\
14659 \n\
14660 With the \"-force-condition\" flag, the condition is defined even when\n\
14661 it is invalid for all current locations.\n\
14662 \n" LOCATION_HELP_STRING "\n\n\
14663 Multiple breakpoints at one place are permitted, and useful if their\n\
14664 conditions are different.\n\
14665 \n\
14666 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
14667
14668 /* List of subcommands for "catch".  */
14669 static struct cmd_list_element *catch_cmdlist;
14670
14671 /* List of subcommands for "tcatch".  */
14672 static struct cmd_list_element *tcatch_cmdlist;
14673
14674 void
14675 add_catch_command (const char *name, const char *docstring,
14676                    cmd_func_ftype *func,
14677                    completer_ftype *completer,
14678                    void *user_data_catch,
14679                    void *user_data_tcatch)
14680 {
14681   struct cmd_list_element *command;
14682
14683   command = add_cmd (name, class_breakpoint, docstring,
14684                      &catch_cmdlist);
14685   command->func = func;
14686   command->set_context (user_data_catch);
14687   set_cmd_completer (command, completer);
14688
14689   command = add_cmd (name, class_breakpoint, docstring,
14690                      &tcatch_cmdlist);
14691   command->func = func;
14692   command->set_context (user_data_tcatch);
14693   set_cmd_completer (command, completer);
14694 }
14695
14696 /* Zero if any of the breakpoint's locations could be a location where
14697    functions have been inlined, nonzero otherwise.  */
14698
14699 static int
14700 is_non_inline_function (struct breakpoint *b)
14701 {
14702   /* The shared library event breakpoint is set on the address of a
14703      non-inline function.  */
14704   if (b->type == bp_shlib_event)
14705     return 1;
14706
14707   return 0;
14708 }
14709
14710 /* Nonzero if the specified PC cannot be a location where functions
14711    have been inlined.  */
14712
14713 int
14714 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
14715                            const target_waitstatus &ws)
14716 {
14717   for (breakpoint *b : all_breakpoints ())
14718     {
14719       if (!is_non_inline_function (b))
14720         continue;
14721
14722       for (bp_location *bl : b->locations ())
14723         {
14724           if (!bl->shlib_disabled
14725               && bpstat_check_location (bl, aspace, pc, ws))
14726             return 1;
14727         }
14728     }
14729
14730   return 0;
14731 }
14732
14733 /* Remove any references to OBJFILE which is going to be freed.  */
14734
14735 void
14736 breakpoint_free_objfile (struct objfile *objfile)
14737 {
14738   for (bp_location *loc : all_bp_locations ())
14739     if (loc->symtab != NULL && loc->symtab->objfile () == objfile)
14740       loc->symtab = NULL;
14741 }
14742
14743 void
14744 initialize_breakpoint_ops (void)
14745 {
14746   static int initialized = 0;
14747
14748   struct breakpoint_ops *ops;
14749
14750   if (initialized)
14751     return;
14752   initialized = 1;
14753
14754   /* The breakpoint_ops structure to be inherit by all kinds of
14755      breakpoints (real breakpoints, i.e., user "break" breakpoints,
14756      internal and momentary breakpoints, etc.).  */
14757   ops = &bkpt_base_breakpoint_ops;
14758   *ops = base_breakpoint_ops;
14759   ops->re_set = bkpt_re_set;
14760   ops->insert_location = bkpt_insert_location;
14761   ops->remove_location = bkpt_remove_location;
14762   ops->breakpoint_hit = bkpt_breakpoint_hit;
14763   ops->create_sals_from_location = bkpt_create_sals_from_location;
14764   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
14765   ops->decode_location = bkpt_decode_location;
14766
14767   /* The breakpoint_ops structure to be used in regular breakpoints.  */
14768   ops = &bkpt_breakpoint_ops;
14769   *ops = bkpt_base_breakpoint_ops;
14770   ops->re_set = bkpt_re_set;
14771   ops->resources_needed = bkpt_resources_needed;
14772   ops->print_it = bkpt_print_it;
14773   ops->print_mention = bkpt_print_mention;
14774   ops->print_recreate = bkpt_print_recreate;
14775
14776   /* Ranged breakpoints.  */
14777   ops = &ranged_breakpoint_ops;
14778   *ops = bkpt_breakpoint_ops;
14779   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
14780   ops->resources_needed = resources_needed_ranged_breakpoint;
14781   ops->print_it = print_it_ranged_breakpoint;
14782   ops->print_one = print_one_ranged_breakpoint;
14783   ops->print_one_detail = print_one_detail_ranged_breakpoint;
14784   ops->print_mention = print_mention_ranged_breakpoint;
14785   ops->print_recreate = print_recreate_ranged_breakpoint;
14786
14787   /* Internal breakpoints.  */
14788   ops = &internal_breakpoint_ops;
14789   *ops = bkpt_base_breakpoint_ops;
14790   ops->re_set = internal_bkpt_re_set;
14791   ops->check_status = internal_bkpt_check_status;
14792   ops->print_it = internal_bkpt_print_it;
14793   ops->print_mention = internal_bkpt_print_mention;
14794
14795   /* Momentary breakpoints.  */
14796   ops = &momentary_breakpoint_ops;
14797   *ops = bkpt_base_breakpoint_ops;
14798   ops->re_set = momentary_bkpt_re_set;
14799   ops->check_status = momentary_bkpt_check_status;
14800   ops->print_it = momentary_bkpt_print_it;
14801   ops->print_mention = momentary_bkpt_print_mention;
14802
14803   /* Probe breakpoints.  */
14804   ops = &bkpt_probe_breakpoint_ops;
14805   *ops = bkpt_breakpoint_ops;
14806   ops->insert_location = bkpt_probe_insert_location;
14807   ops->remove_location = bkpt_probe_remove_location;
14808   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
14809   ops->decode_location = bkpt_probe_decode_location;
14810
14811   /* Watchpoints.  */
14812   ops = &watchpoint_breakpoint_ops;
14813   *ops = base_breakpoint_ops;
14814   ops->re_set = re_set_watchpoint;
14815   ops->insert_location = insert_watchpoint;
14816   ops->remove_location = remove_watchpoint;
14817   ops->breakpoint_hit = breakpoint_hit_watchpoint;
14818   ops->check_status = check_status_watchpoint;
14819   ops->resources_needed = resources_needed_watchpoint;
14820   ops->works_in_software_mode = works_in_software_mode_watchpoint;
14821   ops->print_it = print_it_watchpoint;
14822   ops->print_mention = print_mention_watchpoint;
14823   ops->print_recreate = print_recreate_watchpoint;
14824   ops->explains_signal = explains_signal_watchpoint;
14825
14826   /* Masked watchpoints.  */
14827   ops = &masked_watchpoint_breakpoint_ops;
14828   *ops = watchpoint_breakpoint_ops;
14829   ops->insert_location = insert_masked_watchpoint;
14830   ops->remove_location = remove_masked_watchpoint;
14831   ops->resources_needed = resources_needed_masked_watchpoint;
14832   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
14833   ops->print_it = print_it_masked_watchpoint;
14834   ops->print_one_detail = print_one_detail_masked_watchpoint;
14835   ops->print_mention = print_mention_masked_watchpoint;
14836   ops->print_recreate = print_recreate_masked_watchpoint;
14837
14838   /* Tracepoints.  */
14839   ops = &tracepoint_breakpoint_ops;
14840   *ops = base_breakpoint_ops;
14841   ops->re_set = tracepoint_re_set;
14842   ops->breakpoint_hit = tracepoint_breakpoint_hit;
14843   ops->print_one_detail = tracepoint_print_one_detail;
14844   ops->print_mention = tracepoint_print_mention;
14845   ops->print_recreate = tracepoint_print_recreate;
14846   ops->create_sals_from_location = tracepoint_create_sals_from_location;
14847   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
14848   ops->decode_location = tracepoint_decode_location;
14849
14850   /* Probe tracepoints.  */
14851   ops = &tracepoint_probe_breakpoint_ops;
14852   *ops = tracepoint_breakpoint_ops;
14853   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
14854   ops->decode_location = tracepoint_probe_decode_location;
14855
14856   /* Static tracepoints with marker (`-m').  */
14857   ops = &strace_marker_breakpoint_ops;
14858   *ops = tracepoint_breakpoint_ops;
14859   ops->create_sals_from_location = strace_marker_create_sals_from_location;
14860   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
14861   ops->decode_location = strace_marker_decode_location;
14862
14863   /* Solib-related catchpoints.  */
14864   ops = &catch_solib_breakpoint_ops;
14865   *ops = base_breakpoint_ops;
14866   ops->insert_location = insert_catch_solib;
14867   ops->remove_location = remove_catch_solib;
14868   ops->breakpoint_hit = breakpoint_hit_catch_solib;
14869   ops->check_status = check_status_catch_solib;
14870   ops->print_it = print_it_catch_solib;
14871   ops->print_one = print_one_catch_solib;
14872   ops->print_mention = print_mention_catch_solib;
14873   ops->print_recreate = print_recreate_catch_solib;
14874
14875   ops = &dprintf_breakpoint_ops;
14876   *ops = bkpt_base_breakpoint_ops;
14877   ops->re_set = dprintf_re_set;
14878   ops->resources_needed = bkpt_resources_needed;
14879   ops->print_it = bkpt_print_it;
14880   ops->print_mention = bkpt_print_mention;
14881   ops->print_recreate = dprintf_print_recreate;
14882   ops->after_condition_true = dprintf_after_condition_true;
14883   ops->breakpoint_hit = dprintf_breakpoint_hit;
14884 }
14885
14886 /* Chain containing all defined "enable breakpoint" subcommands.  */
14887
14888 static struct cmd_list_element *enablebreaklist = NULL;
14889
14890 /* See breakpoint.h.  */
14891
14892 cmd_list_element *commands_cmd_element = nullptr;
14893
14894 void _initialize_breakpoint ();
14895 void
14896 _initialize_breakpoint ()
14897 {
14898   struct cmd_list_element *c;
14899
14900   initialize_breakpoint_ops ();
14901
14902   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib,
14903                                          "breakpoint");
14904   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile,
14905                                        "breakpoint");
14906   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change,
14907                                          "breakpoint");
14908
14909   breakpoint_chain = 0;
14910   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
14911      before a breakpoint is set.  */
14912   breakpoint_count = 0;
14913
14914   tracepoint_count = 0;
14915
14916   add_com ("ignore", class_breakpoint, ignore_command, _("\
14917 Set ignore-count of breakpoint number N to COUNT.\n\
14918 Usage is `ignore N COUNT'."));
14919
14920   commands_cmd_element = add_com ("commands", class_breakpoint,
14921                                   commands_command, _("\
14922 Set commands to be executed when the given breakpoints are hit.\n\
14923 Give a space-separated breakpoint list as argument after \"commands\".\n\
14924 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
14925 (e.g. `5-7').\n\
14926 With no argument, the targeted breakpoint is the last one set.\n\
14927 The commands themselves follow starting on the next line.\n\
14928 Type a line containing \"end\" to indicate the end of them.\n\
14929 Give \"silent\" as the first line to make the breakpoint silent;\n\
14930 then no output is printed when it is hit, except what the commands print."));
14931
14932   const auto cc_opts = make_condition_command_options_def_group (nullptr);
14933   static std::string condition_command_help
14934     = gdb::option::build_help (_("\
14935 Specify breakpoint number N to break only if COND is true.\n\
14936 Usage is `condition [OPTION] N COND', where N is an integer and COND\n\
14937 is an expression to be evaluated whenever breakpoint N is reached.\n\
14938 \n\
14939 Options:\n\
14940 %OPTIONS%"), cc_opts);
14941
14942   c = add_com ("condition", class_breakpoint, condition_command,
14943                condition_command_help.c_str ());
14944   set_cmd_completer_handle_brkchars (c, condition_completer);
14945
14946   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
14947 Set a temporary breakpoint.\n\
14948 Like \"break\" except the breakpoint is only temporary,\n\
14949 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
14950 by using \"enable delete\" on the breakpoint number.\n\
14951 \n"
14952 BREAK_ARGS_HELP ("tbreak")));
14953   set_cmd_completer (c, location_completer);
14954
14955   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
14956 Set a hardware assisted breakpoint.\n\
14957 Like \"break\" except the breakpoint requires hardware support,\n\
14958 some target hardware may not have this support.\n\
14959 \n"
14960 BREAK_ARGS_HELP ("hbreak")));
14961   set_cmd_completer (c, location_completer);
14962
14963   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
14964 Set a temporary hardware assisted breakpoint.\n\
14965 Like \"hbreak\" except the breakpoint is only temporary,\n\
14966 so it will be deleted when hit.\n\
14967 \n"
14968 BREAK_ARGS_HELP ("thbreak")));
14969   set_cmd_completer (c, location_completer);
14970
14971   cmd_list_element *enable_cmd
14972     = add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
14973 Enable all or some breakpoints.\n\
14974 Usage: enable [BREAKPOINTNUM]...\n\
14975 Give breakpoint numbers (separated by spaces) as arguments.\n\
14976 With no subcommand, breakpoints are enabled until you command otherwise.\n\
14977 This is used to cancel the effect of the \"disable\" command.\n\
14978 With a subcommand you can enable temporarily."),
14979                       &enablelist, 1, &cmdlist);
14980
14981   add_com_alias ("en", enable_cmd, class_breakpoint, 1);
14982
14983   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
14984 Enable all or some breakpoints.\n\
14985 Usage: enable breakpoints [BREAKPOINTNUM]...\n\
14986 Give breakpoint numbers (separated by spaces) as arguments.\n\
14987 This is used to cancel the effect of the \"disable\" command.\n\
14988 May be abbreviated to simply \"enable\"."),
14989                    &enablebreaklist, 1, &enablelist);
14990
14991   add_cmd ("once", no_class, enable_once_command, _("\
14992 Enable some breakpoints for one hit.\n\
14993 Usage: enable breakpoints once BREAKPOINTNUM...\n\
14994 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
14995            &enablebreaklist);
14996
14997   add_cmd ("delete", no_class, enable_delete_command, _("\
14998 Enable some breakpoints and delete when hit.\n\
14999 Usage: enable breakpoints delete BREAKPOINTNUM...\n\
15000 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15001            &enablebreaklist);
15002
15003   add_cmd ("count", no_class, enable_count_command, _("\
15004 Enable some breakpoints for COUNT hits.\n\
15005 Usage: enable breakpoints count COUNT BREAKPOINTNUM...\n\
15006 If a breakpoint is hit while enabled in this fashion,\n\
15007 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15008            &enablebreaklist);
15009
15010   add_cmd ("delete", no_class, enable_delete_command, _("\
15011 Enable some breakpoints and delete when hit.\n\
15012 Usage: enable delete BREAKPOINTNUM...\n\
15013 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15014            &enablelist);
15015
15016   add_cmd ("once", no_class, enable_once_command, _("\
15017 Enable some breakpoints for one hit.\n\
15018 Usage: enable once BREAKPOINTNUM...\n\
15019 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15020            &enablelist);
15021
15022   add_cmd ("count", no_class, enable_count_command, _("\
15023 Enable some breakpoints for COUNT hits.\n\
15024 Usage: enable count COUNT BREAKPOINTNUM...\n\
15025 If a breakpoint is hit while enabled in this fashion,\n\
15026 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15027            &enablelist);
15028
15029   cmd_list_element *disable_cmd
15030     = add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15031 Disable all or some breakpoints.\n\
15032 Usage: disable [BREAKPOINTNUM]...\n\
15033 Arguments are breakpoint numbers with spaces in between.\n\
15034 To disable all breakpoints, give no argument.\n\
15035 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15036                       &disablelist, 1, &cmdlist);
15037   add_com_alias ("dis", disable_cmd, class_breakpoint, 1);
15038   add_com_alias ("disa", disable_cmd, class_breakpoint, 1);
15039
15040   add_cmd ("breakpoints", class_breakpoint, disable_command, _("\
15041 Disable all or some breakpoints.\n\
15042 Usage: disable breakpoints [BREAKPOINTNUM]...\n\
15043 Arguments are breakpoint numbers with spaces in between.\n\
15044 To disable all breakpoints, give no argument.\n\
15045 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15046 This command may be abbreviated \"disable\"."),
15047            &disablelist);
15048
15049   cmd_list_element *delete_cmd
15050     = add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15051 Delete all or some breakpoints.\n\
15052 Usage: delete [BREAKPOINTNUM]...\n\
15053 Arguments are breakpoint numbers with spaces in between.\n\
15054 To delete all breakpoints, give no argument.\n\
15055 \n\
15056 Also a prefix command for deletion of other GDB objects."),
15057                       &deletelist, 1, &cmdlist);
15058   add_com_alias ("d", delete_cmd, class_breakpoint, 1);
15059   add_com_alias ("del", delete_cmd, class_breakpoint, 1);
15060
15061   add_cmd ("breakpoints", class_breakpoint, delete_command, _("\
15062 Delete all or some breakpoints or auto-display expressions.\n\
15063 Usage: delete breakpoints [BREAKPOINTNUM]...\n\
15064 Arguments are breakpoint numbers with spaces in between.\n\
15065 To delete all breakpoints, give no argument.\n\
15066 This command may be abbreviated \"delete\"."),
15067            &deletelist);
15068
15069   cmd_list_element *clear_cmd
15070    = add_com ("clear", class_breakpoint, clear_command, _("\
15071 Clear breakpoint at specified location.\n\
15072 Argument may be a linespec, explicit, or address location as described below.\n\
15073 \n\
15074 With no argument, clears all breakpoints in the line that the selected frame\n\
15075 is executing in.\n"
15076 "\n" LOCATION_HELP_STRING "\n\n\
15077 See also the \"delete\" command which clears breakpoints by number."));
15078   add_com_alias ("cl", clear_cmd, class_breakpoint, 1);
15079
15080   cmd_list_element *break_cmd
15081     = add_com ("break", class_breakpoint, break_command, _("\
15082 Set breakpoint at specified location.\n"
15083 BREAK_ARGS_HELP ("break")));
15084   set_cmd_completer (break_cmd, location_completer);
15085
15086   add_com_alias ("b", break_cmd, class_run, 1);
15087   add_com_alias ("br", break_cmd, class_run, 1);
15088   add_com_alias ("bre", break_cmd, class_run, 1);
15089   add_com_alias ("brea", break_cmd, class_run, 1);
15090
15091   if (dbx_commands)
15092     {
15093       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15094 Break in function/address or break at a line in the current file."),
15095                              &stoplist, 1, &cmdlist);
15096       add_cmd ("in", class_breakpoint, stopin_command,
15097                _("Break in function or address."), &stoplist);
15098       add_cmd ("at", class_breakpoint, stopat_command,
15099                _("Break at a line in the current file."), &stoplist);
15100       add_com ("status", class_info, info_breakpoints_command, _("\
15101 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15102 The \"Type\" column indicates one of:\n\
15103 \tbreakpoint     - normal breakpoint\n\
15104 \twatchpoint     - watchpoint\n\
15105 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15106 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15107 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15108 address and file/line number respectively.\n\
15109 \n\
15110 Convenience variable \"$_\" and default examine address for \"x\"\n\
15111 are set to the address of the last breakpoint listed unless the command\n\
15112 is prefixed with \"server \".\n\n\
15113 Convenience variable \"$bpnum\" contains the number of the last\n\
15114 breakpoint set."));
15115     }
15116
15117   cmd_list_element *info_breakpoints_cmd
15118     = add_info ("breakpoints", info_breakpoints_command, _("\
15119 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15120 The \"Type\" column indicates one of:\n\
15121 \tbreakpoint     - normal breakpoint\n\
15122 \twatchpoint     - watchpoint\n\
15123 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15124 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15125 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15126 address and file/line number respectively.\n\
15127 \n\
15128 Convenience variable \"$_\" and default examine address for \"x\"\n\
15129 are set to the address of the last breakpoint listed unless the command\n\
15130 is prefixed with \"server \".\n\n\
15131 Convenience variable \"$bpnum\" contains the number of the last\n\
15132 breakpoint set."));
15133
15134   add_info_alias ("b", info_breakpoints_cmd, 1);
15135
15136   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15137 Status of all breakpoints, or breakpoint number NUMBER.\n\
15138 The \"Type\" column indicates one of:\n\
15139 \tbreakpoint     - normal breakpoint\n\
15140 \twatchpoint     - watchpoint\n\
15141 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15142 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15143 \tuntil          - internal breakpoint used by the \"until\" command\n\
15144 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15145 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15146 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15147 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15148 address and file/line number respectively.\n\
15149 \n\
15150 Convenience variable \"$_\" and default examine address for \"x\"\n\
15151 are set to the address of the last breakpoint listed unless the command\n\
15152 is prefixed with \"server \".\n\n\
15153 Convenience variable \"$bpnum\" contains the number of the last\n\
15154 breakpoint set."),
15155            &maintenanceinfolist);
15156
15157   add_basic_prefix_cmd ("catch", class_breakpoint, _("\
15158 Set catchpoints to catch events."),
15159                         &catch_cmdlist,
15160                         0/*allow-unknown*/, &cmdlist);
15161
15162   add_basic_prefix_cmd ("tcatch", class_breakpoint, _("\
15163 Set temporary catchpoints to catch events."),
15164                         &tcatch_cmdlist,
15165                         0/*allow-unknown*/, &cmdlist);
15166
15167   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15168 Usage: catch load [REGEX]\n\
15169 If REGEX is given, only stop for libraries matching the regular expression."),
15170                      catch_load_command_1,
15171                      NULL,
15172                      CATCH_PERMANENT,
15173                      CATCH_TEMPORARY);
15174   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15175 Usage: catch unload [REGEX]\n\
15176 If REGEX is given, only stop for libraries matching the regular expression."),
15177                      catch_unload_command_1,
15178                      NULL,
15179                      CATCH_PERMANENT,
15180                      CATCH_TEMPORARY);
15181
15182   const auto opts = make_watch_options_def_group (nullptr);
15183
15184   static const std::string watch_help = gdb::option::build_help (_("\
15185 Set a watchpoint for EXPRESSION.\n\
15186 Usage: watch [-location] EXPRESSION\n\
15187 \n\
15188 Options:\n\
15189 %OPTIONS%\n\
15190 \n\
15191 A watchpoint stops execution of your program whenever the value of\n\
15192 an expression changes."), opts);
15193   c = add_com ("watch", class_breakpoint, watch_command,
15194                watch_help.c_str ());
15195   set_cmd_completer_handle_brkchars (c, watch_command_completer);
15196
15197   static const std::string rwatch_help = gdb::option::build_help (_("\
15198 Set a read watchpoint for EXPRESSION.\n\
15199 Usage: rwatch [-location] EXPRESSION\n\
15200 \n\
15201 Options:\n\
15202 %OPTIONS%\n\
15203 \n\
15204 A read watchpoint stops execution of your program whenever the value of\n\
15205 an expression is read."), opts);
15206   c = add_com ("rwatch", class_breakpoint, rwatch_command,
15207                rwatch_help.c_str ());
15208   set_cmd_completer_handle_brkchars (c, watch_command_completer);
15209
15210   static const std::string awatch_help = gdb::option::build_help (_("\
15211 Set an access watchpoint for EXPRESSION.\n\
15212 Usage: awatch [-location] EXPRESSION\n\
15213 \n\
15214 Options:\n\
15215 %OPTIONS%\n\
15216 \n\
15217 An access watchpoint stops execution of your program whenever the value\n\
15218 of an expression is either read or written."), opts);
15219   c = add_com ("awatch", class_breakpoint, awatch_command,
15220                awatch_help.c_str ());
15221   set_cmd_completer_handle_brkchars (c, watch_command_completer);
15222
15223   add_info ("watchpoints", info_watchpoints_command, _("\
15224 Status of specified watchpoints (all watchpoints if no argument)."));
15225
15226   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15227      respond to changes - contrary to the description.  */
15228   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15229                             &can_use_hw_watchpoints, _("\
15230 Set debugger's willingness to use watchpoint hardware."), _("\
15231 Show debugger's willingness to use watchpoint hardware."), _("\
15232 If zero, gdb will not use hardware for new watchpoints, even if\n\
15233 such is available.  (However, any hardware watchpoints that were\n\
15234 created before setting this to nonzero, will continue to use watchpoint\n\
15235 hardware.)"),
15236                             NULL,
15237                             show_can_use_hw_watchpoints,
15238                             &setlist, &showlist);
15239
15240   can_use_hw_watchpoints = 1;
15241
15242   /* Tracepoint manipulation commands.  */
15243
15244   cmd_list_element *trace_cmd
15245     = add_com ("trace", class_breakpoint, trace_command, _("\
15246 Set a tracepoint at specified location.\n\
15247 \n"
15248 BREAK_ARGS_HELP ("trace") "\n\
15249 Do \"help tracepoints\" for info on other tracepoint commands."));
15250   set_cmd_completer (trace_cmd, location_completer);
15251
15252   add_com_alias ("tp", trace_cmd, class_breakpoint, 0);
15253   add_com_alias ("tr", trace_cmd, class_breakpoint, 1);
15254   add_com_alias ("tra", trace_cmd, class_breakpoint, 1);
15255   add_com_alias ("trac", trace_cmd, class_breakpoint, 1);
15256
15257   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15258 Set a fast tracepoint at specified location.\n\
15259 \n"
15260 BREAK_ARGS_HELP ("ftrace") "\n\
15261 Do \"help tracepoints\" for info on other tracepoint commands."));
15262   set_cmd_completer (c, location_completer);
15263
15264   c = add_com ("strace", class_breakpoint, strace_command, _("\
15265 Set a static tracepoint at location or marker.\n\
15266 \n\
15267 strace [LOCATION] [if CONDITION]\n\
15268 LOCATION may be a linespec, explicit, or address location (described below) \n\
15269 or -m MARKER_ID.\n\n\
15270 If a marker id is specified, probe the marker with that name.  With\n\
15271 no LOCATION, uses current execution address of the selected stack frame.\n\
15272 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15273 This collects arbitrary user data passed in the probe point call to the\n\
15274 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15275 by printing the $_sdata variable like any other convenience variable.\n\
15276 \n\
15277 CONDITION is a boolean expression.\n\
15278 \n" LOCATION_HELP_STRING "\n\n\
15279 Multiple tracepoints at one place are permitted, and useful if their\n\
15280 conditions are different.\n\
15281 \n\
15282 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15283 Do \"help tracepoints\" for info on other tracepoint commands."));
15284   set_cmd_completer (c, location_completer);
15285
15286   cmd_list_element *info_tracepoints_cmd
15287     = add_info ("tracepoints", info_tracepoints_command, _("\
15288 Status of specified tracepoints (all tracepoints if no argument).\n\
15289 Convenience variable \"$tpnum\" contains the number of the\n\
15290 last tracepoint set."));
15291
15292   add_info_alias ("tp", info_tracepoints_cmd, 1);
15293
15294   cmd_list_element *delete_tracepoints_cmd
15295     = add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15296 Delete specified tracepoints.\n\
15297 Arguments are tracepoint numbers, separated by spaces.\n\
15298 No argument means delete all tracepoints."),
15299            &deletelist);
15300   add_alias_cmd ("tr", delete_tracepoints_cmd, class_trace, 1, &deletelist);
15301
15302   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15303 Disable specified tracepoints.\n\
15304 Arguments are tracepoint numbers, separated by spaces.\n\
15305 No argument means disable all tracepoints."),
15306            &disablelist);
15307   deprecate_cmd (c, "disable");
15308
15309   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15310 Enable specified tracepoints.\n\
15311 Arguments are tracepoint numbers, separated by spaces.\n\
15312 No argument means enable all tracepoints."),
15313            &enablelist);
15314   deprecate_cmd (c, "enable");
15315
15316   add_com ("passcount", class_trace, trace_pass_command, _("\
15317 Set the passcount for a tracepoint.\n\
15318 The trace will end when the tracepoint has been passed 'count' times.\n\
15319 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15320 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15321
15322   add_basic_prefix_cmd ("save", class_breakpoint,
15323                         _("Save breakpoint definitions as a script."),
15324                         &save_cmdlist,
15325                         0/*allow-unknown*/, &cmdlist);
15326
15327   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15328 Save current breakpoint definitions as a script.\n\
15329 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15330 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15331 session to restore them."),
15332                &save_cmdlist);
15333   set_cmd_completer (c, filename_completer);
15334
15335   cmd_list_element *save_tracepoints_cmd
15336     = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15337 Save current tracepoint definitions as a script.\n\
15338 Use the 'source' command in another debug session to restore them."),
15339                &save_cmdlist);
15340   set_cmd_completer (save_tracepoints_cmd, filename_completer);
15341
15342   c = add_com_alias ("save-tracepoints", save_tracepoints_cmd, class_trace, 0);
15343   deprecate_cmd (c, "save tracepoints");
15344
15345   add_setshow_prefix_cmd ("breakpoint", class_maintenance,
15346                           _("\
15347 Breakpoint specific settings.\n\
15348 Configure various breakpoint-specific variables such as\n\
15349 pending breakpoint behavior."),
15350                           _("\
15351 Breakpoint specific settings.\n\
15352 Configure various breakpoint-specific variables such as\n\
15353 pending breakpoint behavior."),
15354                           &breakpoint_set_cmdlist, &breakpoint_show_cmdlist,
15355                           &setlist, &showlist);
15356
15357   add_setshow_auto_boolean_cmd ("pending", no_class,
15358                                 &pending_break_support, _("\
15359 Set debugger's behavior regarding pending breakpoints."), _("\
15360 Show debugger's behavior regarding pending breakpoints."), _("\
15361 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15362 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15363 an error.  If auto, an unrecognized breakpoint location results in a\n\
15364 user-query to see if a pending breakpoint should be created."),
15365                                 NULL,
15366                                 show_pending_break_support,
15367                                 &breakpoint_set_cmdlist,
15368                                 &breakpoint_show_cmdlist);
15369
15370   pending_break_support = AUTO_BOOLEAN_AUTO;
15371
15372   add_setshow_boolean_cmd ("auto-hw", no_class,
15373                            &automatic_hardware_breakpoints, _("\
15374 Set automatic usage of hardware breakpoints."), _("\
15375 Show automatic usage of hardware breakpoints."), _("\
15376 If set, the debugger will automatically use hardware breakpoints for\n\
15377 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15378 a warning will be emitted for such breakpoints."),
15379                            NULL,
15380                            show_automatic_hardware_breakpoints,
15381                            &breakpoint_set_cmdlist,
15382                            &breakpoint_show_cmdlist);
15383
15384   add_setshow_boolean_cmd ("always-inserted", class_support,
15385                            &always_inserted_mode, _("\
15386 Set mode for inserting breakpoints."), _("\
15387 Show mode for inserting breakpoints."), _("\
15388 When this mode is on, breakpoints are inserted immediately as soon as\n\
15389 they're created, kept inserted even when execution stops, and removed\n\
15390 only when the user deletes them.  When this mode is off (the default),\n\
15391 breakpoints are inserted only when execution continues, and removed\n\
15392 when execution stops."),
15393                                 NULL,
15394                                 &show_always_inserted_mode,
15395                                 &breakpoint_set_cmdlist,
15396                                 &breakpoint_show_cmdlist);
15397
15398   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15399                         condition_evaluation_enums,
15400                         &condition_evaluation_mode_1, _("\
15401 Set mode of breakpoint condition evaluation."), _("\
15402 Show mode of breakpoint condition evaluation."), _("\
15403 When this is set to \"host\", breakpoint conditions will be\n\
15404 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15405 breakpoint conditions will be downloaded to the target (if the target\n\
15406 supports such feature) and conditions will be evaluated on the target's side.\n\
15407 If this is set to \"auto\" (default), this will be automatically set to\n\
15408 \"target\" if it supports condition evaluation, otherwise it will\n\
15409 be set to \"host\"."),
15410                            &set_condition_evaluation_mode,
15411                            &show_condition_evaluation_mode,
15412                            &breakpoint_set_cmdlist,
15413                            &breakpoint_show_cmdlist);
15414
15415   add_com ("break-range", class_breakpoint, break_range_command, _("\
15416 Set a breakpoint for an address range.\n\
15417 break-range START-LOCATION, END-LOCATION\n\
15418 where START-LOCATION and END-LOCATION can be one of the following:\n\
15419   LINENUM, for that line in the current file,\n\
15420   FILE:LINENUM, for that line in that file,\n\
15421   +OFFSET, for that number of lines after the current line\n\
15422            or the start of the range\n\
15423   FUNCTION, for the first line in that function,\n\
15424   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15425   *ADDRESS, for the instruction at that address.\n\
15426 \n\
15427 The breakpoint will stop execution of the inferior whenever it executes\n\
15428 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15429 range (including START-LOCATION and END-LOCATION)."));
15430
15431   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15432 Set a dynamic printf at specified location.\n\
15433 dprintf location,format string,arg1,arg2,...\n\
15434 location may be a linespec, explicit, or address location.\n"
15435 "\n" LOCATION_HELP_STRING));
15436   set_cmd_completer (c, location_completer);
15437
15438   add_setshow_enum_cmd ("dprintf-style", class_support,
15439                         dprintf_style_enums, &dprintf_style, _("\
15440 Set the style of usage for dynamic printf."), _("\
15441 Show the style of usage for dynamic printf."), _("\
15442 This setting chooses how GDB will do a dynamic printf.\n\
15443 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15444 console, as with the \"printf\" command.\n\
15445 If the value is \"call\", the print is done by calling a function in your\n\
15446 program; by default printf(), but you can choose a different function or\n\
15447 output stream by setting dprintf-function and dprintf-channel."),
15448                         update_dprintf_commands, NULL,
15449                         &setlist, &showlist);
15450
15451   add_setshow_string_cmd ("dprintf-function", class_support,
15452                           &dprintf_function, _("\
15453 Set the function to use for dynamic printf."), _("\
15454 Show the function to use for dynamic printf."), NULL,
15455                           update_dprintf_commands, NULL,
15456                           &setlist, &showlist);
15457
15458   add_setshow_string_cmd ("dprintf-channel", class_support,
15459                           &dprintf_channel, _("\
15460 Set the channel to use for dynamic printf."), _("\
15461 Show the channel to use for dynamic printf."), NULL,
15462                           update_dprintf_commands, NULL,
15463                           &setlist, &showlist);
15464
15465   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15466                            &disconnected_dprintf, _("\
15467 Set whether dprintf continues after GDB disconnects."), _("\
15468 Show whether dprintf continues after GDB disconnects."), _("\
15469 Use this to let dprintf commands continue to hit and produce output\n\
15470 even if GDB disconnects or detaches from the target."),
15471                            NULL,
15472                            NULL,
15473                            &setlist, &showlist);
15474
15475   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15476 Target agent only formatted printing, like the C \"printf\" function.\n\
15477 Usage: agent-printf \"format string\", ARG1, ARG2, ARG3, ..., ARGN\n\
15478 This supports most C printf format specifications, like %s, %d, etc.\n\
15479 This is useful for formatted output in user-defined commands."));
15480
15481   automatic_hardware_breakpoints = true;
15482
15483   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed,
15484                                            "breakpoint");
15485   gdb::observers::thread_exit.attach (remove_threaded_breakpoints,
15486                                       "breakpoint");
15487 }
This page took 0.906224 seconds and 4 git commands to generate.