breakpoint: Make is_*point functions return bool
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2019 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "ui-out.h"
48 #include "cli/cli-script.h"
49 #include "block.h"
50 #include "solib.h"
51 #include "solist.h"
52 #include "observable.h"
53 #include "memattr.h"
54 #include "ada-lang.h"
55 #include "top.h"
56 #include "valprint.h"
57 #include "jit.h"
58 #include "parser-defs.h"
59 #include "gdb_regex.h"
60 #include "probe.h"
61 #include "cli/cli-utils.h"
62 #include "continuations.h"
63 #include "stack.h"
64 #include "skip.h"
65 #include "ax-gdb.h"
66 #include "dummy-frame.h"
67 #include "interps.h"
68 #include "gdbsupport/format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71 #include "cli/cli-style.h"
72 #include "mi/mi-main.h"
73
74 /* readline include files */
75 #include "readline/readline.h"
76 #include "readline/history.h"
77
78 /* readline defines this.  */
79 #undef savestring
80
81 #include "mi/mi-common.h"
82 #include "extension.h"
83 #include <algorithm>
84 #include "progspace-and-thread.h"
85 #include "gdbsupport/array-view.h"
86 #include "gdbsupport/gdb_optional.h"
87
88 /* Prototypes for local functions.  */
89
90 static void map_breakpoint_numbers (const char *,
91                                     gdb::function_view<void (breakpoint *)>);
92
93 static void breakpoint_re_set_default (struct breakpoint *);
94
95 static void
96   create_sals_from_location_default (const struct event_location *location,
97                                      struct linespec_result *canonical,
98                                      enum bptype type_wanted);
99
100 static void create_breakpoints_sal_default (struct gdbarch *,
101                                             struct linespec_result *,
102                                             gdb::unique_xmalloc_ptr<char>,
103                                             gdb::unique_xmalloc_ptr<char>,
104                                             enum bptype,
105                                             enum bpdisp, int, int,
106                                             int,
107                                             const struct breakpoint_ops *,
108                                             int, int, int, unsigned);
109
110 static std::vector<symtab_and_line> decode_location_default
111   (struct breakpoint *b, const struct event_location *location,
112    struct program_space *search_pspace);
113
114 static int can_use_hardware_watchpoint
115     (const std::vector<value_ref_ptr> &vals);
116
117 static void mention (struct breakpoint *);
118
119 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
120                                                                enum bptype,
121                                                                const struct breakpoint_ops *);
122 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
123                                                        const struct symtab_and_line *);
124
125 /* This function is used in gdbtk sources and thus can not be made
126    static.  */
127 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
128                                        struct symtab_and_line,
129                                        enum bptype,
130                                        const struct breakpoint_ops *);
131
132 static struct breakpoint *
133   momentary_breakpoint_from_master (struct breakpoint *orig,
134                                     enum bptype type,
135                                     const struct breakpoint_ops *ops,
136                                     int loc_enabled);
137
138 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
139
140 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
141                                             CORE_ADDR bpaddr,
142                                             enum bptype bptype);
143
144 static void describe_other_breakpoints (struct gdbarch *,
145                                         struct program_space *, CORE_ADDR,
146                                         struct obj_section *, int);
147
148 static int watchpoint_locations_match (struct bp_location *loc1,
149                                        struct bp_location *loc2);
150
151 static int breakpoint_location_address_match (struct bp_location *bl,
152                                               const struct address_space *aspace,
153                                               CORE_ADDR addr);
154
155 static int breakpoint_location_address_range_overlap (struct bp_location *,
156                                                       const address_space *,
157                                                       CORE_ADDR, int);
158
159 static int remove_breakpoint (struct bp_location *);
160 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
161
162 static enum print_stop_action print_bp_stop_message (bpstat bs);
163
164 static int hw_breakpoint_used_count (void);
165
166 static int hw_watchpoint_use_count (struct breakpoint *);
167
168 static int hw_watchpoint_used_count_others (struct breakpoint *except,
169                                             enum bptype type,
170                                             int *other_type_used);
171
172 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
173                                     int count);
174
175 static void free_bp_location (struct bp_location *loc);
176 static void incref_bp_location (struct bp_location *loc);
177 static void decref_bp_location (struct bp_location **loc);
178
179 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
180
181 /* update_global_location_list's modes of operation wrt to whether to
182    insert locations now.  */
183 enum ugll_insert_mode
184 {
185   /* Don't insert any breakpoint locations into the inferior, only
186      remove already-inserted locations that no longer should be
187      inserted.  Functions that delete a breakpoint or breakpoints
188      should specify this mode, so that deleting a breakpoint doesn't
189      have the side effect of inserting the locations of other
190      breakpoints that are marked not-inserted, but should_be_inserted
191      returns true on them.
192
193      This behavior is useful is situations close to tear-down -- e.g.,
194      after an exec, while the target still has execution, but
195      breakpoint shadows of the previous executable image should *NOT*
196      be restored to the new image; or before detaching, where the
197      target still has execution and wants to delete breakpoints from
198      GDB's lists, and all breakpoints had already been removed from
199      the inferior.  */
200   UGLL_DONT_INSERT,
201
202   /* May insert breakpoints iff breakpoints_should_be_inserted_now
203      claims breakpoints should be inserted now.  */
204   UGLL_MAY_INSERT,
205
206   /* Insert locations now, irrespective of
207      breakpoints_should_be_inserted_now.  E.g., say all threads are
208      stopped right now, and the user did "continue".  We need to
209      insert breakpoints _before_ resuming the target, but
210      UGLL_MAY_INSERT wouldn't insert them, because
211      breakpoints_should_be_inserted_now returns false at that point,
212      as no thread is running yet.  */
213   UGLL_INSERT
214 };
215
216 static void update_global_location_list (enum ugll_insert_mode);
217
218 static void update_global_location_list_nothrow (enum ugll_insert_mode);
219
220 static void insert_breakpoint_locations (void);
221
222 static void trace_pass_command (const char *, int);
223
224 static void set_tracepoint_count (int num);
225
226 static bool is_masked_watchpoint (const struct breakpoint *b);
227
228 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
229
230 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
231    otherwise.  */
232
233 static int strace_marker_p (struct breakpoint *b);
234
235 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
236    that are implemented on top of software or hardware breakpoints
237    (user breakpoints, internal and momentary breakpoints, etc.).  */
238 static struct breakpoint_ops bkpt_base_breakpoint_ops;
239
240 /* Internal breakpoints class type.  */
241 static struct breakpoint_ops internal_breakpoint_ops;
242
243 /* Momentary breakpoints class type.  */
244 static struct breakpoint_ops momentary_breakpoint_ops;
245
246 /* The breakpoint_ops structure to be used in regular user created
247    breakpoints.  */
248 struct breakpoint_ops bkpt_breakpoint_ops;
249
250 /* Breakpoints set on probes.  */
251 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
252
253 /* 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 char *dprintf_function;
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 char *dprintf_channel;
290
291 /* True if dprintf commands should continue to operate even if GDB
292    has disconnected.  */
293 static int disconnected_dprintf = 1;
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 int 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 1, gdb will automatically use hardware breakpoints for breakpoints
350    set with "break" but falling in read-only memory.
351    If 0, gdb will warn about such breakpoints, but won't automatically
352    use hardware breakpoints.  */
353 static int 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 int always_inserted_mode = 0;
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 if (target_has_execution)
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       if (threads_are_executing ())
403         return 1;
404
405       /* Don't remove breakpoints yet if, even though all threads are
406          stopped, we still have events to process.  */
407       for (thread_info *tp : all_non_exited_threads ())
408         if (tp->resumed
409             && tp->suspend.waitstatus_pending_p)
410           return 1;
411     }
412   return 0;
413 }
414
415 static const char condition_evaluation_both[] = "host or target";
416
417 /* Modes for breakpoint condition evaluation.  */
418 static const char condition_evaluation_auto[] = "auto";
419 static const char condition_evaluation_host[] = "host";
420 static const char condition_evaluation_target[] = "target";
421 static const char *const condition_evaluation_enums[] = {
422   condition_evaluation_auto,
423   condition_evaluation_host,
424   condition_evaluation_target,
425   NULL
426 };
427
428 /* Global that holds the current mode for breakpoint condition evaluation.  */
429 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
430
431 /* Global that we use to display information to the user (gets its value from
432    condition_evaluation_mode_1.  */
433 static const char *condition_evaluation_mode = condition_evaluation_auto;
434
435 /* Translate a condition evaluation mode MODE into either "host"
436    or "target".  This is used mostly to translate from "auto" to the
437    real setting that is being used.  It returns the translated
438    evaluation mode.  */
439
440 static const char *
441 translate_condition_evaluation_mode (const char *mode)
442 {
443   if (mode == condition_evaluation_auto)
444     {
445       if (target_supports_evaluation_of_breakpoint_conditions ())
446         return condition_evaluation_target;
447       else
448         return condition_evaluation_host;
449     }
450   else
451     return mode;
452 }
453
454 /* Discovers what condition_evaluation_auto translates to.  */
455
456 static const char *
457 breakpoint_condition_evaluation_mode (void)
458 {
459   return translate_condition_evaluation_mode (condition_evaluation_mode);
460 }
461
462 /* Return true if GDB should evaluate breakpoint conditions or false
463    otherwise.  */
464
465 static int
466 gdb_evaluates_breakpoint_condition_p (void)
467 {
468   const char *mode = breakpoint_condition_evaluation_mode ();
469
470   return (mode == condition_evaluation_host);
471 }
472
473 /* Are we executing breakpoint commands?  */
474 static int executing_breakpoint_commands;
475
476 /* Are overlay event breakpoints enabled? */
477 static int overlay_events_enabled;
478
479 /* See description in breakpoint.h. */
480 int target_exact_watchpoints = 0;
481
482 /* Walk the following statement or block through all breakpoints.
483    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
484    current breakpoint.  */
485
486 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
487
488 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
489         for (B = breakpoint_chain;      \
490              B ? (TMP=B->next, 1): 0;   \
491              B = TMP)
492
493 /* Similar iterator for the low-level breakpoints.  SAFE variant is
494    not provided so update_global_location_list must not be called
495    while executing the block of ALL_BP_LOCATIONS.  */
496
497 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
498         for (BP_TMP = bp_locations;                                     \
499              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
500              BP_TMP++)
501
502 /* Iterates through locations with address ADDRESS for the currently selected
503    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
504    to where the loop should start from.
505    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
506    appropriate location to start with.  */
507
508 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
509         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
510              BP_LOCP_TMP = BP_LOCP_START;                               \
511              BP_LOCP_START                                              \
512              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
513              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
514              BP_LOCP_TMP++)
515
516 /* Iterator for tracepoints only.  */
517
518 #define ALL_TRACEPOINTS(B)  \
519   for (B = breakpoint_chain; B; B = B->next)  \
520     if (is_tracepoint (B))
521
522 /* Chains of all breakpoints defined.  */
523
524 struct breakpoint *breakpoint_chain;
525
526 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
527
528 static struct bp_location **bp_locations;
529
530 /* Number of elements of BP_LOCATIONS.  */
531
532 static unsigned bp_locations_count;
533
534 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
535    ADDRESS for the current elements of BP_LOCATIONS which get a valid
536    result from bp_location_has_shadow.  You can use it for roughly
537    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
538    an address you need to read.  */
539
540 static CORE_ADDR bp_locations_placed_address_before_address_max;
541
542 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
543    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
544    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
545    You can use it for roughly limiting the subrange of BP_LOCATIONS to
546    scan for shadow bytes for an address you need to read.  */
547
548 static CORE_ADDR bp_locations_shadow_len_after_address_max;
549
550 /* The locations that no longer correspond to any breakpoint, unlinked
551    from the bp_locations array, but for which a hit may still be
552    reported by a target.  */
553 static std::vector<bp_location *> moribund_locations;
554
555 /* Number of last breakpoint made.  */
556
557 static int breakpoint_count;
558
559 /* The value of `breakpoint_count' before the last command that
560    created breakpoints.  If the last (break-like) command created more
561    than one breakpoint, then the difference between BREAKPOINT_COUNT
562    and PREV_BREAKPOINT_COUNT is more than one.  */
563 static int prev_breakpoint_count;
564
565 /* Number of last tracepoint made.  */
566
567 static int tracepoint_count;
568
569 static struct cmd_list_element *breakpoint_set_cmdlist;
570 static struct cmd_list_element *breakpoint_show_cmdlist;
571 struct cmd_list_element *save_cmdlist;
572
573 /* See declaration at breakpoint.h.  */
574
575 struct breakpoint *
576 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
577                     void *user_data)
578 {
579   struct breakpoint *b = NULL;
580
581   ALL_BREAKPOINTS (b)
582     {
583       if (func (b, user_data) != 0)
584         break;
585     }
586
587   return b;
588 }
589
590 /* Return whether a breakpoint is an active enabled breakpoint.  */
591 static int
592 breakpoint_enabled (struct breakpoint *b)
593 {
594   return (b->enable_state == bp_enabled);
595 }
596
597 /* Set breakpoint count to NUM.  */
598
599 static void
600 set_breakpoint_count (int num)
601 {
602   prev_breakpoint_count = breakpoint_count;
603   breakpoint_count = num;
604   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
605 }
606
607 /* Used by `start_rbreak_breakpoints' below, to record the current
608    breakpoint count before "rbreak" creates any breakpoint.  */
609 static int rbreak_start_breakpoint_count;
610
611 /* Called at the start an "rbreak" command to record the first
612    breakpoint made.  */
613
614 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
615 {
616   rbreak_start_breakpoint_count = breakpoint_count;
617 }
618
619 /* Called at the end of an "rbreak" command to record the last
620    breakpoint made.  */
621
622 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
623 {
624   prev_breakpoint_count = rbreak_start_breakpoint_count;
625 }
626
627 /* Used in run_command to zero the hit count when a new run starts.  */
628
629 void
630 clear_breakpoint_hit_counts (void)
631 {
632   struct breakpoint *b;
633
634   ALL_BREAKPOINTS (b)
635     b->hit_count = 0;
636 }
637
638 \f
639 /* Return the breakpoint with the specified number, or NULL
640    if the number does not refer to an existing breakpoint.  */
641
642 struct breakpoint *
643 get_breakpoint (int num)
644 {
645   struct breakpoint *b;
646
647   ALL_BREAKPOINTS (b)
648     if (b->number == num)
649       return b;
650   
651   return NULL;
652 }
653
654 \f
655
656 /* Mark locations as "conditions have changed" in case the target supports
657    evaluating conditions on its side.  */
658
659 static void
660 mark_breakpoint_modified (struct breakpoint *b)
661 {
662   struct bp_location *loc;
663
664   /* This is only meaningful if the target is
665      evaluating conditions and if the user has
666      opted for condition evaluation on the target's
667      side.  */
668   if (gdb_evaluates_breakpoint_condition_p ()
669       || !target_supports_evaluation_of_breakpoint_conditions ())
670     return;
671
672   if (!is_breakpoint (b))
673     return;
674
675   for (loc = b->loc; loc; loc = loc->next)
676     loc->condition_changed = condition_modified;
677 }
678
679 /* Mark location as "conditions have changed" in case the target supports
680    evaluating conditions on its side.  */
681
682 static void
683 mark_breakpoint_location_modified (struct bp_location *loc)
684 {
685   /* This is only meaningful if the target is
686      evaluating conditions and if the user has
687      opted for condition evaluation on the target's
688      side.  */
689   if (gdb_evaluates_breakpoint_condition_p ()
690       || !target_supports_evaluation_of_breakpoint_conditions ())
691
692     return;
693
694   if (!is_breakpoint (loc->owner))
695     return;
696
697   loc->condition_changed = condition_modified;
698 }
699
700 /* Sets the condition-evaluation mode using the static global
701    condition_evaluation_mode.  */
702
703 static void
704 set_condition_evaluation_mode (const char *args, int from_tty,
705                                struct cmd_list_element *c)
706 {
707   const char *old_mode, *new_mode;
708
709   if ((condition_evaluation_mode_1 == condition_evaluation_target)
710       && !target_supports_evaluation_of_breakpoint_conditions ())
711     {
712       condition_evaluation_mode_1 = condition_evaluation_mode;
713       warning (_("Target does not support breakpoint condition evaluation.\n"
714                  "Using host evaluation mode instead."));
715       return;
716     }
717
718   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
719   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
720
721   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
722      settings was "auto".  */
723   condition_evaluation_mode = condition_evaluation_mode_1;
724
725   /* Only update the mode if the user picked a different one.  */
726   if (new_mode != old_mode)
727     {
728       struct bp_location *loc, **loc_tmp;
729       /* If the user switched to a different evaluation mode, we
730          need to synch the changes with the target as follows:
731
732          "host" -> "target": Send all (valid) conditions to the target.
733          "target" -> "host": Remove all the conditions from the target.
734       */
735
736       if (new_mode == condition_evaluation_target)
737         {
738           /* Mark everything modified and synch conditions with the
739              target.  */
740           ALL_BP_LOCATIONS (loc, loc_tmp)
741             mark_breakpoint_location_modified (loc);
742         }
743       else
744         {
745           /* Manually mark non-duplicate locations to synch conditions
746              with the target.  We do this to remove all the conditions the
747              target knows about.  */
748           ALL_BP_LOCATIONS (loc, loc_tmp)
749             if (is_breakpoint (loc->owner) && loc->inserted)
750               loc->needs_update = 1;
751         }
752
753       /* Do the update.  */
754       update_global_location_list (UGLL_MAY_INSERT);
755     }
756
757   return;
758 }
759
760 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
761    what "auto" is translating to.  */
762
763 static void
764 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
765                                 struct cmd_list_element *c, const char *value)
766 {
767   if (condition_evaluation_mode == condition_evaluation_auto)
768     fprintf_filtered (file,
769                       _("Breakpoint condition evaluation "
770                         "mode is %s (currently %s).\n"),
771                       value,
772                       breakpoint_condition_evaluation_mode ());
773   else
774     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
775                       value);
776 }
777
778 /* A comparison function for bp_location AP and BP that is used by
779    bsearch.  This comparison function only cares about addresses, unlike
780    the more general bp_locations_compare function.  */
781
782 static int
783 bp_locations_compare_addrs (const void *ap, const void *bp)
784 {
785   const struct bp_location *a = *(const struct bp_location **) ap;
786   const struct bp_location *b = *(const struct bp_location **) bp;
787
788   if (a->address == b->address)
789     return 0;
790   else
791     return ((a->address > b->address) - (a->address < b->address));
792 }
793
794 /* Helper function to skip all bp_locations with addresses
795    less than ADDRESS.  It returns the first bp_location that
796    is greater than or equal to ADDRESS.  If none is found, just
797    return NULL.  */
798
799 static struct bp_location **
800 get_first_locp_gte_addr (CORE_ADDR address)
801 {
802   struct bp_location dummy_loc;
803   struct bp_location *dummy_locp = &dummy_loc;
804   struct bp_location **locp_found = NULL;
805
806   /* Initialize the dummy location's address field.  */
807   dummy_loc.address = address;
808
809   /* Find a close match to the first location at ADDRESS.  */
810   locp_found = ((struct bp_location **)
811                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
812                          sizeof (struct bp_location **),
813                          bp_locations_compare_addrs));
814
815   /* Nothing was found, nothing left to do.  */
816   if (locp_found == NULL)
817     return NULL;
818
819   /* We may have found a location that is at ADDRESS but is not the first in the
820      location's list.  Go backwards (if possible) and locate the first one.  */
821   while ((locp_found - 1) >= bp_locations
822          && (*(locp_found - 1))->address == address)
823     locp_found--;
824
825   return locp_found;
826 }
827
828 void
829 set_breakpoint_condition (struct breakpoint *b, const char *exp,
830                           int from_tty)
831 {
832   xfree (b->cond_string);
833   b->cond_string = NULL;
834
835   if (is_watchpoint (b))
836     {
837       struct watchpoint *w = (struct watchpoint *) b;
838
839       w->cond_exp.reset ();
840     }
841   else
842     {
843       struct bp_location *loc;
844
845       for (loc = b->loc; loc; loc = loc->next)
846         {
847           loc->cond.reset ();
848
849           /* No need to free the condition agent expression
850              bytecode (if we have one).  We will handle this
851              when we go through update_global_location_list.  */
852         }
853     }
854
855   if (*exp == 0)
856     {
857       if (from_tty)
858         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
859     }
860   else
861     {
862       const char *arg = exp;
863
864       /* I don't know if it matters whether this is the string the user
865          typed in or the decompiled expression.  */
866       b->cond_string = xstrdup (arg);
867       b->condition_not_parsed = 0;
868
869       if (is_watchpoint (b))
870         {
871           struct watchpoint *w = (struct watchpoint *) b;
872
873           innermost_block_tracker tracker;
874           arg = exp;
875           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
876           if (*arg)
877             error (_("Junk at end of expression"));
878           w->cond_exp_valid_block = tracker.block ();
879         }
880       else
881         {
882           struct bp_location *loc;
883
884           for (loc = b->loc; loc; loc = loc->next)
885             {
886               arg = exp;
887               loc->cond =
888                 parse_exp_1 (&arg, loc->address,
889                              block_for_pc (loc->address), 0);
890               if (*arg)
891                 error (_("Junk at end of expression"));
892             }
893         }
894     }
895   mark_breakpoint_modified (b);
896
897   gdb::observers::breakpoint_modified.notify (b);
898 }
899
900 /* Completion for the "condition" command.  */
901
902 static void
903 condition_completer (struct cmd_list_element *cmd,
904                      completion_tracker &tracker,
905                      const char *text, const char *word)
906 {
907   const char *space;
908
909   text = skip_spaces (text);
910   space = skip_to_space (text);
911   if (*space == '\0')
912     {
913       int len;
914       struct breakpoint *b;
915
916       if (text[0] == '$')
917         {
918           /* We don't support completion of history indices.  */
919           if (!isdigit (text[1]))
920             complete_internalvar (tracker, &text[1]);
921           return;
922         }
923
924       /* We're completing the breakpoint number.  */
925       len = strlen (text);
926
927       ALL_BREAKPOINTS (b)
928         {
929           char number[50];
930
931           xsnprintf (number, sizeof (number), "%d", b->number);
932
933           if (strncmp (number, text, len) == 0)
934             tracker.add_completion (make_unique_xstrdup (number));
935         }
936
937       return;
938     }
939
940   /* We're completing the expression part.  */
941   text = skip_spaces (space);
942   expression_completer (cmd, tracker, text, word);
943 }
944
945 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
946
947 static void
948 condition_command (const char *arg, int from_tty)
949 {
950   struct breakpoint *b;
951   const char *p;
952   int bnum;
953
954   if (arg == 0)
955     error_no_arg (_("breakpoint number"));
956
957   p = arg;
958   bnum = get_number (&p);
959   if (bnum == 0)
960     error (_("Bad breakpoint argument: '%s'"), arg);
961
962   ALL_BREAKPOINTS (b)
963     if (b->number == bnum)
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, p, from_tty);
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."), bnum);
986 }
987
988 /* Check that COMMAND do not contain commands that are suitable
989    only for tracepoints and not suitable for ordinary breakpoints.
990    Throw if any such commands is found.  */
991
992 static void
993 check_no_tracepoint_commands (struct command_line *commands)
994 {
995   struct command_line *c;
996
997   for (c = commands; c; c = c->next)
998     {
999       if (c->control_type == while_stepping_control)
1000         error (_("The 'while-stepping' command can "
1001                  "only be used for tracepoints"));
1002
1003       check_no_tracepoint_commands (c->body_list_0.get ());
1004       check_no_tracepoint_commands (c->body_list_1.get ());
1005
1006       /* Not that command parsing removes leading whitespace and comment
1007          lines and also empty lines.  So, we only need to check for
1008          command directly.  */
1009       if (strstr (c->line, "collect ") == c->line)
1010         error (_("The 'collect' command can only be used for tracepoints"));
1011
1012       if (strstr (c->line, "teval ") == c->line)
1013         error (_("The 'teval' command can only be used for tracepoints"));
1014     }
1015 }
1016
1017 struct longjmp_breakpoint : public breakpoint
1018 {
1019   ~longjmp_breakpoint () override;
1020 };
1021
1022 /* Encapsulate tests for different types of tracepoints.  */
1023
1024 static bool
1025 is_tracepoint_type (bptype type)
1026 {
1027   return (type == bp_tracepoint
1028           || type == bp_fast_tracepoint
1029           || type == bp_static_tracepoint);
1030 }
1031
1032 static bool
1033 is_longjmp_type (bptype type)
1034 {
1035   return type == bp_longjmp || type == bp_exception;
1036 }
1037
1038 /* See breakpoint.h.  */
1039
1040 bool
1041 is_tracepoint (const struct breakpoint *b)
1042 {
1043   return is_tracepoint_type (b->type);
1044 }
1045
1046 /* Factory function to create an appropriate instance of breakpoint given
1047    TYPE.  */
1048
1049 static std::unique_ptr<breakpoint>
1050 new_breakpoint_from_type (bptype type)
1051 {
1052   breakpoint *b;
1053
1054   if (is_tracepoint_type (type))
1055     b = new tracepoint ();
1056   else if (is_longjmp_type (type))
1057     b = new longjmp_breakpoint ();
1058   else
1059     b = new breakpoint ();
1060
1061   return std::unique_ptr<breakpoint> (b);
1062 }
1063
1064 /* A helper function that validates that COMMANDS are valid for a
1065    breakpoint.  This function will throw an exception if a problem is
1066    found.  */
1067
1068 static void
1069 validate_commands_for_breakpoint (struct breakpoint *b,
1070                                   struct command_line *commands)
1071 {
1072   if (is_tracepoint (b))
1073     {
1074       struct tracepoint *t = (struct tracepoint *) b;
1075       struct command_line *c;
1076       struct command_line *while_stepping = 0;
1077
1078       /* Reset the while-stepping step count.  The previous commands
1079          might have included a while-stepping action, while the new
1080          ones might not.  */
1081       t->step_count = 0;
1082
1083       /* We need to verify that each top-level element of commands is
1084          valid for tracepoints, that there's at most one
1085          while-stepping element, and that the while-stepping's body
1086          has valid tracing commands excluding nested while-stepping.
1087          We also need to validate the tracepoint action line in the
1088          context of the tracepoint --- validate_actionline actually
1089          has side effects, like setting the tracepoint's
1090          while-stepping STEP_COUNT, in addition to checking if the
1091          collect/teval actions parse and make sense in the
1092          tracepoint's context.  */
1093       for (c = commands; c; c = c->next)
1094         {
1095           if (c->control_type == while_stepping_control)
1096             {
1097               if (b->type == bp_fast_tracepoint)
1098                 error (_("The 'while-stepping' command "
1099                          "cannot be used for fast tracepoint"));
1100               else if (b->type == bp_static_tracepoint)
1101                 error (_("The 'while-stepping' command "
1102                          "cannot be used for static tracepoint"));
1103
1104               if (while_stepping)
1105                 error (_("The 'while-stepping' command "
1106                          "can be used only once"));
1107               else
1108                 while_stepping = c;
1109             }
1110
1111           validate_actionline (c->line, b);
1112         }
1113       if (while_stepping)
1114         {
1115           struct command_line *c2;
1116
1117           gdb_assert (while_stepping->body_list_1 == nullptr);
1118           c2 = while_stepping->body_list_0.get ();
1119           for (; c2; c2 = c2->next)
1120             {
1121               if (c2->control_type == while_stepping_control)
1122                 error (_("The 'while-stepping' command cannot be nested"));
1123             }
1124         }
1125     }
1126   else
1127     {
1128       check_no_tracepoint_commands (commands);
1129     }
1130 }
1131
1132 /* Return a vector of all the static tracepoints set at ADDR.  The
1133    caller is responsible for releasing the vector.  */
1134
1135 std::vector<breakpoint *>
1136 static_tracepoints_here (CORE_ADDR addr)
1137 {
1138   struct breakpoint *b;
1139   std::vector<breakpoint *> found;
1140   struct bp_location *loc;
1141
1142   ALL_BREAKPOINTS (b)
1143     if (b->type == bp_static_tracepoint)
1144       {
1145         for (loc = b->loc; loc; loc = loc->next)
1146           if (loc->address == addr)
1147             found.push_back (b);
1148       }
1149
1150   return found;
1151 }
1152
1153 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1154    validate that only allowed commands are included.  */
1155
1156 void
1157 breakpoint_set_commands (struct breakpoint *b, 
1158                          counted_command_line &&commands)
1159 {
1160   validate_commands_for_breakpoint (b, commands.get ());
1161
1162   b->commands = std::move (commands);
1163   gdb::observers::breakpoint_modified.notify (b);
1164 }
1165
1166 /* Set the internal `silent' flag on the breakpoint.  Note that this
1167    is not the same as the "silent" that may appear in the breakpoint's
1168    commands.  */
1169
1170 void
1171 breakpoint_set_silent (struct breakpoint *b, int silent)
1172 {
1173   int old_silent = b->silent;
1174
1175   b->silent = silent;
1176   if (old_silent != silent)
1177     gdb::observers::breakpoint_modified.notify (b);
1178 }
1179
1180 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1181    breakpoint work for any thread.  */
1182
1183 void
1184 breakpoint_set_thread (struct breakpoint *b, int thread)
1185 {
1186   int old_thread = b->thread;
1187
1188   b->thread = thread;
1189   if (old_thread != thread)
1190     gdb::observers::breakpoint_modified.notify (b);
1191 }
1192
1193 /* Set the task for this breakpoint.  If TASK is 0, make the
1194    breakpoint work for any task.  */
1195
1196 void
1197 breakpoint_set_task (struct breakpoint *b, int task)
1198 {
1199   int old_task = b->task;
1200
1201   b->task = task;
1202   if (old_task != task)
1203     gdb::observers::breakpoint_modified.notify (b);
1204 }
1205
1206 static void
1207 commands_command_1 (const char *arg, int from_tty,
1208                     struct command_line *control)
1209 {
1210   counted_command_line cmd;
1211   /* cmd_read will be true once we have read cmd.  Note that cmd might still be
1212      NULL after the call to read_command_lines if the user provides an empty
1213      list of command by just typing "end".  */
1214   bool cmd_read = false;
1215
1216   std::string new_arg;
1217
1218   if (arg == NULL || !*arg)
1219     {
1220       if (breakpoint_count - prev_breakpoint_count > 1)
1221         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1222                                  breakpoint_count);
1223       else if (breakpoint_count > 0)
1224         new_arg = string_printf ("%d", breakpoint_count);
1225       arg = new_arg.c_str ();
1226     }
1227
1228   map_breakpoint_numbers
1229     (arg, [&] (breakpoint *b)
1230      {
1231        if (!cmd_read)
1232          {
1233            gdb_assert (cmd == NULL);
1234            if (control != NULL)
1235              cmd = control->body_list_0;
1236            else
1237              {
1238                std::string str
1239                  = string_printf (_("Type commands for breakpoint(s) "
1240                                     "%s, one per line."),
1241                                   arg);
1242
1243                auto do_validate = [=] (const char *line)
1244                                   {
1245                                     validate_actionline (line, b);
1246                                   };
1247                gdb::function_view<void (const char *)> validator;
1248                if (is_tracepoint (b))
1249                  validator = do_validate;
1250
1251                cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1252              }
1253            cmd_read = true;
1254          }
1255
1256        /* If a breakpoint was on the list more than once, we don't need to
1257           do anything.  */
1258        if (b->commands != cmd)
1259          {
1260            validate_commands_for_breakpoint (b, cmd.get ());
1261            b->commands = cmd;
1262            gdb::observers::breakpoint_modified.notify (b);
1263          }
1264      });
1265 }
1266
1267 static void
1268 commands_command (const char *arg, int from_tty)
1269 {
1270   commands_command_1 (arg, from_tty, NULL);
1271 }
1272
1273 /* Like commands_command, but instead of reading the commands from
1274    input stream, takes them from an already parsed command structure.
1275
1276    This is used by cli-script.c to DTRT with breakpoint commands
1277    that are part of if and while bodies.  */
1278 enum command_control_type
1279 commands_from_control_command (const char *arg, struct command_line *cmd)
1280 {
1281   commands_command_1 (arg, 0, cmd);
1282   return simple_control;
1283 }
1284
1285 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1286
1287 static int
1288 bp_location_has_shadow (struct bp_location *bl)
1289 {
1290   if (bl->loc_type != bp_loc_software_breakpoint)
1291     return 0;
1292   if (!bl->inserted)
1293     return 0;
1294   if (bl->target_info.shadow_len == 0)
1295     /* BL isn't valid, or doesn't shadow memory.  */
1296     return 0;
1297   return 1;
1298 }
1299
1300 /* Update BUF, which is LEN bytes read from the target address
1301    MEMADDR, by replacing a memory breakpoint with its shadowed
1302    contents.
1303
1304    If READBUF is not NULL, this buffer must not overlap with the of
1305    the breakpoint location's shadow_contents buffer.  Otherwise, a
1306    failed assertion internal error will be raised.  */
1307
1308 static void
1309 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1310                             const gdb_byte *writebuf_org,
1311                             ULONGEST memaddr, LONGEST len,
1312                             struct bp_target_info *target_info,
1313                             struct gdbarch *gdbarch)
1314 {
1315   /* Now do full processing of the found relevant range of elements.  */
1316   CORE_ADDR bp_addr = 0;
1317   int bp_size = 0;
1318   int bptoffset = 0;
1319
1320   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1321                                  current_program_space->aspace, 0))
1322     {
1323       /* The breakpoint is inserted in a different address space.  */
1324       return;
1325     }
1326
1327   /* Addresses and length of the part of the breakpoint that
1328      we need to copy.  */
1329   bp_addr = target_info->placed_address;
1330   bp_size = target_info->shadow_len;
1331
1332   if (bp_addr + bp_size <= memaddr)
1333     {
1334       /* The breakpoint is entirely before the chunk of memory we are
1335          reading.  */
1336       return;
1337     }
1338
1339   if (bp_addr >= memaddr + len)
1340     {
1341       /* The breakpoint is entirely after the chunk of memory we are
1342          reading.  */
1343       return;
1344     }
1345
1346   /* Offset within shadow_contents.  */
1347   if (bp_addr < memaddr)
1348     {
1349       /* Only copy the second part of the breakpoint.  */
1350       bp_size -= memaddr - bp_addr;
1351       bptoffset = memaddr - bp_addr;
1352       bp_addr = memaddr;
1353     }
1354
1355   if (bp_addr + bp_size > memaddr + len)
1356     {
1357       /* Only copy the first part of the breakpoint.  */
1358       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1359     }
1360
1361   if (readbuf != NULL)
1362     {
1363       /* Verify that the readbuf buffer does not overlap with the
1364          shadow_contents buffer.  */
1365       gdb_assert (target_info->shadow_contents >= readbuf + len
1366                   || readbuf >= (target_info->shadow_contents
1367                                  + target_info->shadow_len));
1368
1369       /* Update the read buffer with this inserted breakpoint's
1370          shadow.  */
1371       memcpy (readbuf + bp_addr - memaddr,
1372               target_info->shadow_contents + bptoffset, bp_size);
1373     }
1374   else
1375     {
1376       const unsigned char *bp;
1377       CORE_ADDR addr = target_info->reqstd_address;
1378       int placed_size;
1379
1380       /* Update the shadow with what we want to write to memory.  */
1381       memcpy (target_info->shadow_contents + bptoffset,
1382               writebuf_org + bp_addr - memaddr, bp_size);
1383
1384       /* Determine appropriate breakpoint contents and size for this
1385          address.  */
1386       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1387
1388       /* Update the final write buffer with this inserted
1389          breakpoint's INSN.  */
1390       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1391     }
1392 }
1393
1394 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1395    by replacing any memory breakpoints with their shadowed contents.
1396
1397    If READBUF is not NULL, this buffer must not overlap with any of
1398    the breakpoint location's shadow_contents buffers.  Otherwise,
1399    a failed assertion internal error will be raised.
1400
1401    The range of shadowed area by each bp_location is:
1402      bl->address - bp_locations_placed_address_before_address_max
1403      up to bl->address + bp_locations_shadow_len_after_address_max
1404    The range we were requested to resolve shadows for is:
1405      memaddr ... memaddr + len
1406    Thus the safe cutoff boundaries for performance optimization are
1407      memaddr + len <= (bl->address
1408                        - bp_locations_placed_address_before_address_max)
1409    and:
1410      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1411
1412 void
1413 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1414                         const gdb_byte *writebuf_org,
1415                         ULONGEST memaddr, LONGEST len)
1416 {
1417   /* Left boundary, right boundary and median element of our binary
1418      search.  */
1419   unsigned bc_l, bc_r, bc;
1420
1421   /* Find BC_L which is a leftmost element which may affect BUF
1422      content.  It is safe to report lower value but a failure to
1423      report higher one.  */
1424
1425   bc_l = 0;
1426   bc_r = bp_locations_count;
1427   while (bc_l + 1 < bc_r)
1428     {
1429       struct bp_location *bl;
1430
1431       bc = (bc_l + bc_r) / 2;
1432       bl = bp_locations[bc];
1433
1434       /* Check first BL->ADDRESS will not overflow due to the added
1435          constant.  Then advance the left boundary only if we are sure
1436          the BC element can in no way affect the BUF content (MEMADDR
1437          to MEMADDR + LEN range).
1438
1439          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1440          offset so that we cannot miss a breakpoint with its shadow
1441          range tail still reaching MEMADDR.  */
1442
1443       if ((bl->address + bp_locations_shadow_len_after_address_max
1444            >= bl->address)
1445           && (bl->address + bp_locations_shadow_len_after_address_max
1446               <= memaddr))
1447         bc_l = bc;
1448       else
1449         bc_r = bc;
1450     }
1451
1452   /* Due to the binary search above, we need to make sure we pick the
1453      first location that's at BC_L's address.  E.g., if there are
1454      multiple locations at the same address, BC_L may end up pointing
1455      at a duplicate location, and miss the "master"/"inserted"
1456      location.  Say, given locations L1, L2 and L3 at addresses A and
1457      B:
1458
1459       L1@A, L2@A, L3@B, ...
1460
1461      BC_L could end up pointing at location L2, while the "master"
1462      location could be L1.  Since the `loc->inserted' flag is only set
1463      on "master" locations, we'd forget to restore the shadow of L1
1464      and L2.  */
1465   while (bc_l > 0
1466          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1467     bc_l--;
1468
1469   /* Now do full processing of the found relevant range of elements.  */
1470
1471   for (bc = bc_l; bc < bp_locations_count; bc++)
1472   {
1473     struct bp_location *bl = bp_locations[bc];
1474
1475     /* bp_location array has BL->OWNER always non-NULL.  */
1476     if (bl->owner->type == bp_none)
1477       warning (_("reading through apparently deleted breakpoint #%d?"),
1478                bl->owner->number);
1479
1480     /* Performance optimization: any further element can no longer affect BUF
1481        content.  */
1482
1483     if (bl->address >= bp_locations_placed_address_before_address_max
1484         && memaddr + len <= (bl->address
1485                              - bp_locations_placed_address_before_address_max))
1486       break;
1487
1488     if (!bp_location_has_shadow (bl))
1489       continue;
1490
1491     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1492                                 memaddr, len, &bl->target_info, bl->gdbarch);
1493   }
1494 }
1495
1496 /* See breakpoint.h.  */
1497
1498 bool
1499 is_breakpoint (const struct breakpoint *bpt)
1500 {
1501   return (bpt->type == bp_breakpoint
1502           || bpt->type == bp_hardware_breakpoint
1503           || bpt->type == bp_dprintf);
1504 }
1505
1506 /* Return true if BPT is of any hardware watchpoint kind.  */
1507
1508 static bool
1509 is_hardware_watchpoint (const struct breakpoint *bpt)
1510 {
1511   return (bpt->type == bp_hardware_watchpoint
1512           || bpt->type == bp_read_watchpoint
1513           || bpt->type == bp_access_watchpoint);
1514 }
1515
1516 /* See breakpoint.h.  */
1517
1518 bool
1519 is_watchpoint (const struct breakpoint *bpt)
1520 {
1521   return (is_hardware_watchpoint (bpt)
1522           || bpt->type == bp_watchpoint);
1523 }
1524
1525 /* Returns true if the current thread and its running state are safe
1526    to evaluate or update watchpoint B.  Watchpoints on local
1527    expressions need to be evaluated in the context of the thread that
1528    was current when the watchpoint was created, and, that thread needs
1529    to be stopped to be able to select the correct frame context.
1530    Watchpoints on global expressions can be evaluated on any thread,
1531    and in any state.  It is presently left to the target allowing
1532    memory accesses when threads are running.  */
1533
1534 static int
1535 watchpoint_in_thread_scope (struct watchpoint *b)
1536 {
1537   return (b->pspace == current_program_space
1538           && (b->watchpoint_thread == null_ptid
1539               || (inferior_ptid == b->watchpoint_thread
1540                   && !inferior_thread ()->executing)));
1541 }
1542
1543 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1544    associated bp_watchpoint_scope breakpoint.  */
1545
1546 static void
1547 watchpoint_del_at_next_stop (struct watchpoint *w)
1548 {
1549   if (w->related_breakpoint != w)
1550     {
1551       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1552       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1553       w->related_breakpoint->disposition = disp_del_at_next_stop;
1554       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1555       w->related_breakpoint = w;
1556     }
1557   w->disposition = disp_del_at_next_stop;
1558 }
1559
1560 /* Extract a bitfield value from value VAL using the bit parameters contained in
1561    watchpoint W.  */
1562
1563 static struct value *
1564 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1565 {
1566   struct value *bit_val;
1567
1568   if (val == NULL)
1569     return NULL;
1570
1571   bit_val = allocate_value (value_type (val));
1572
1573   unpack_value_bitfield (bit_val,
1574                          w->val_bitpos,
1575                          w->val_bitsize,
1576                          value_contents_for_printing (val),
1577                          value_offset (val),
1578                          val);
1579
1580   return bit_val;
1581 }
1582
1583 /* Allocate a dummy location and add it to B, which must be a software
1584    watchpoint.  This is required because even if a software watchpoint
1585    is not watching any memory, bpstat_stop_status requires a location
1586    to be able to report stops.  */
1587
1588 static void
1589 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1590                                             struct program_space *pspace)
1591 {
1592   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1593
1594   b->loc = allocate_bp_location (b);
1595   b->loc->pspace = pspace;
1596   b->loc->address = -1;
1597   b->loc->length = -1;
1598 }
1599
1600 /* Returns true if B is a software watchpoint that is not watching any
1601    memory (e.g., "watch $pc").  */
1602
1603 static bool
1604 is_no_memory_software_watchpoint (struct breakpoint *b)
1605 {
1606   return (b->type == bp_watchpoint
1607           && b->loc != NULL
1608           && b->loc->next == NULL
1609           && b->loc->address == -1
1610           && b->loc->length == -1);
1611 }
1612
1613 /* Assuming that B is a watchpoint:
1614    - Reparse watchpoint expression, if REPARSE is non-zero
1615    - Evaluate expression and store the result in B->val
1616    - Evaluate the condition if there is one, and store the result
1617      in b->loc->cond.
1618    - Update the list of values that must be watched in B->loc.
1619
1620    If the watchpoint disposition is disp_del_at_next_stop, then do
1621    nothing.  If this is local watchpoint that is out of scope, delete
1622    it.
1623
1624    Even with `set breakpoint always-inserted on' the watchpoints are
1625    removed + inserted on each stop here.  Normal breakpoints must
1626    never be removed because they might be missed by a running thread
1627    when debugging in non-stop mode.  On the other hand, hardware
1628    watchpoints (is_hardware_watchpoint; processed here) are specific
1629    to each LWP since they are stored in each LWP's hardware debug
1630    registers.  Therefore, such LWP must be stopped first in order to
1631    be able to modify its hardware watchpoints.
1632
1633    Hardware watchpoints must be reset exactly once after being
1634    presented to the user.  It cannot be done sooner, because it would
1635    reset the data used to present the watchpoint hit to the user.  And
1636    it must not be done later because it could display the same single
1637    watchpoint hit during multiple GDB stops.  Note that the latter is
1638    relevant only to the hardware watchpoint types bp_read_watchpoint
1639    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1640    not user-visible - its hit is suppressed if the memory content has
1641    not changed.
1642
1643    The following constraints influence the location where we can reset
1644    hardware watchpoints:
1645
1646    * target_stopped_by_watchpoint and target_stopped_data_address are
1647      called several times when GDB stops.
1648
1649    [linux] 
1650    * Multiple hardware watchpoints can be hit at the same time,
1651      causing GDB to stop.  GDB only presents one hardware watchpoint
1652      hit at a time as the reason for stopping, and all the other hits
1653      are presented later, one after the other, each time the user
1654      requests the execution to be resumed.  Execution is not resumed
1655      for the threads still having pending hit event stored in
1656      LWP_INFO->STATUS.  While the watchpoint is already removed from
1657      the inferior on the first stop the thread hit event is kept being
1658      reported from its cached value by linux_nat_stopped_data_address
1659      until the real thread resume happens after the watchpoint gets
1660      presented and thus its LWP_INFO->STATUS gets reset.
1661
1662    Therefore the hardware watchpoint hit can get safely reset on the
1663    watchpoint removal from inferior.  */
1664
1665 static void
1666 update_watchpoint (struct watchpoint *b, int reparse)
1667 {
1668   int within_current_scope;
1669   struct frame_id saved_frame_id;
1670   int frame_saved;
1671
1672   /* If this is a local watchpoint, we only want to check if the
1673      watchpoint frame is in scope if the current thread is the thread
1674      that was used to create the watchpoint.  */
1675   if (!watchpoint_in_thread_scope (b))
1676     return;
1677
1678   if (b->disposition == disp_del_at_next_stop)
1679     return;
1680  
1681   frame_saved = 0;
1682
1683   /* Determine if the watchpoint is within scope.  */
1684   if (b->exp_valid_block == NULL)
1685     within_current_scope = 1;
1686   else
1687     {
1688       struct frame_info *fi = get_current_frame ();
1689       struct gdbarch *frame_arch = get_frame_arch (fi);
1690       CORE_ADDR frame_pc = get_frame_pc (fi);
1691
1692       /* If we're at a point where the stack has been destroyed
1693          (e.g. in a function epilogue), unwinding may not work
1694          properly. Do not attempt to recreate locations at this
1695          point.  See similar comments in watchpoint_check.  */
1696       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1697         return;
1698
1699       /* Save the current frame's ID so we can restore it after
1700          evaluating the watchpoint expression on its own frame.  */
1701       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1702          took a frame parameter, so that we didn't have to change the
1703          selected frame.  */
1704       frame_saved = 1;
1705       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1706
1707       fi = frame_find_by_id (b->watchpoint_frame);
1708       within_current_scope = (fi != NULL);
1709       if (within_current_scope)
1710         select_frame (fi);
1711     }
1712
1713   /* We don't free locations.  They are stored in the bp_location array
1714      and update_global_location_list will eventually delete them and
1715      remove breakpoints if needed.  */
1716   b->loc = NULL;
1717
1718   if (within_current_scope && reparse)
1719     {
1720       const char *s;
1721
1722       b->exp.reset ();
1723       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1724       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1725       /* If the meaning of expression itself changed, the old value is
1726          no longer relevant.  We don't want to report a watchpoint hit
1727          to the user when the old value and the new value may actually
1728          be completely different objects.  */
1729       b->val = NULL;
1730       b->val_valid = 0;
1731
1732       /* Note that unlike with breakpoints, the watchpoint's condition
1733          expression is stored in the breakpoint object, not in the
1734          locations (re)created below.  */
1735       if (b->cond_string != NULL)
1736         {
1737           b->cond_exp.reset ();
1738
1739           s = b->cond_string;
1740           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1741         }
1742     }
1743
1744   /* If we failed to parse the expression, for example because
1745      it refers to a global variable in a not-yet-loaded shared library,
1746      don't try to insert watchpoint.  We don't automatically delete
1747      such watchpoint, though, since failure to parse expression
1748      is different from out-of-scope watchpoint.  */
1749   if (!target_has_execution)
1750     {
1751       /* Without execution, memory can't change.  No use to try and
1752          set watchpoint locations.  The watchpoint will be reset when
1753          the target gains execution, through breakpoint_re_set.  */
1754       if (!can_use_hw_watchpoints)
1755         {
1756           if (b->ops->works_in_software_mode (b))
1757             b->type = bp_watchpoint;
1758           else
1759             error (_("Can't set read/access watchpoint when "
1760                      "hardware watchpoints are disabled."));
1761         }
1762     }
1763   else if (within_current_scope && b->exp)
1764     {
1765       int pc = 0;
1766       std::vector<value_ref_ptr> val_chain;
1767       struct value *v, *result;
1768       struct program_space *frame_pspace;
1769
1770       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1771
1772       /* Avoid setting b->val if it's already set.  The meaning of
1773          b->val is 'the last value' user saw, and we should update
1774          it only if we reported that last value to user.  As it
1775          happens, the code that reports it updates b->val directly.
1776          We don't keep track of the memory value for masked
1777          watchpoints.  */
1778       if (!b->val_valid && !is_masked_watchpoint (b))
1779         {
1780           if (b->val_bitsize != 0)
1781             v = extract_bitfield_from_watchpoint_value (b, v);
1782           b->val = release_value (v);
1783           b->val_valid = 1;
1784         }
1785
1786       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1787
1788       /* Look at each value on the value chain.  */
1789       gdb_assert (!val_chain.empty ());
1790       for (const value_ref_ptr &iter : val_chain)
1791         {
1792           v = iter.get ();
1793
1794           /* If it's a memory location, and GDB actually needed
1795              its contents to evaluate the expression, then we
1796              must watch it.  If the first value returned is
1797              still lazy, that means an error occurred reading it;
1798              watch it anyway in case it becomes readable.  */
1799           if (VALUE_LVAL (v) == lval_memory
1800               && (v == val_chain[0] || ! value_lazy (v)))
1801             {
1802               struct type *vtype = check_typedef (value_type (v));
1803
1804               /* We only watch structs and arrays if user asked
1805                  for it explicitly, never if they just happen to
1806                  appear in the middle of some value chain.  */
1807               if (v == result
1808                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1809                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1810                 {
1811                   CORE_ADDR addr;
1812                   enum target_hw_bp_type type;
1813                   struct bp_location *loc, **tmp;
1814                   int bitpos = 0, bitsize = 0;
1815
1816                   if (value_bitsize (v) != 0)
1817                     {
1818                       /* Extract the bit parameters out from the bitfield
1819                          sub-expression.  */
1820                       bitpos = value_bitpos (v);
1821                       bitsize = value_bitsize (v);
1822                     }
1823                   else if (v == result && b->val_bitsize != 0)
1824                     {
1825                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1826                         lvalue whose bit parameters are saved in the fields
1827                         VAL_BITPOS and VAL_BITSIZE.  */
1828                       bitpos = b->val_bitpos;
1829                       bitsize = b->val_bitsize;
1830                     }
1831
1832                   addr = value_address (v);
1833                   if (bitsize != 0)
1834                     {
1835                       /* Skip the bytes that don't contain the bitfield.  */
1836                       addr += bitpos / 8;
1837                     }
1838
1839                   type = hw_write;
1840                   if (b->type == bp_read_watchpoint)
1841                     type = hw_read;
1842                   else if (b->type == bp_access_watchpoint)
1843                     type = hw_access;
1844
1845                   loc = allocate_bp_location (b);
1846                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1847                     ;
1848                   *tmp = loc;
1849                   loc->gdbarch = get_type_arch (value_type (v));
1850
1851                   loc->pspace = frame_pspace;
1852                   loc->address = address_significant (loc->gdbarch, addr);
1853
1854                   if (bitsize != 0)
1855                     {
1856                       /* Just cover the bytes that make up the bitfield.  */
1857                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1858                     }
1859                   else
1860                     loc->length = TYPE_LENGTH (value_type (v));
1861
1862                   loc->watchpoint_type = type;
1863                 }
1864             }
1865         }
1866
1867       /* Change the type of breakpoint between hardware assisted or
1868          an ordinary watchpoint depending on the hardware support
1869          and free hardware slots.  REPARSE is set when the inferior
1870          is started.  */
1871       if (reparse)
1872         {
1873           int reg_cnt;
1874           enum bp_loc_type loc_type;
1875           struct bp_location *bl;
1876
1877           reg_cnt = can_use_hardware_watchpoint (val_chain);
1878
1879           if (reg_cnt)
1880             {
1881               int i, target_resources_ok, other_type_used;
1882               enum bptype type;
1883
1884               /* Use an exact watchpoint when there's only one memory region to be
1885                  watched, and only one debug register is needed to watch it.  */
1886               b->exact = target_exact_watchpoints && reg_cnt == 1;
1887
1888               /* We need to determine how many resources are already
1889                  used for all other hardware watchpoints plus this one
1890                  to see if we still have enough resources to also fit
1891                  this watchpoint in as well.  */
1892
1893               /* If this is a software watchpoint, we try to turn it
1894                  to a hardware one -- count resources as if B was of
1895                  hardware watchpoint type.  */
1896               type = b->type;
1897               if (type == bp_watchpoint)
1898                 type = bp_hardware_watchpoint;
1899
1900               /* This watchpoint may or may not have been placed on
1901                  the list yet at this point (it won't be in the list
1902                  if we're trying to create it for the first time,
1903                  through watch_command), so always account for it
1904                  manually.  */
1905
1906               /* Count resources used by all watchpoints except B.  */
1907               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1908
1909               /* Add in the resources needed for B.  */
1910               i += hw_watchpoint_use_count (b);
1911
1912               target_resources_ok
1913                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1914               if (target_resources_ok <= 0)
1915                 {
1916                   int sw_mode = b->ops->works_in_software_mode (b);
1917
1918                   if (target_resources_ok == 0 && !sw_mode)
1919                     error (_("Target does not support this type of "
1920                              "hardware watchpoint."));
1921                   else if (target_resources_ok < 0 && !sw_mode)
1922                     error (_("There are not enough available hardware "
1923                              "resources for this watchpoint."));
1924
1925                   /* Downgrade to software watchpoint.  */
1926                   b->type = bp_watchpoint;
1927                 }
1928               else
1929                 {
1930                   /* If this was a software watchpoint, we've just
1931                      found we have enough resources to turn it to a
1932                      hardware watchpoint.  Otherwise, this is a
1933                      nop.  */
1934                   b->type = type;
1935                 }
1936             }
1937           else if (!b->ops->works_in_software_mode (b))
1938             {
1939               if (!can_use_hw_watchpoints)
1940                 error (_("Can't set read/access watchpoint when "
1941                          "hardware watchpoints are disabled."));
1942               else
1943                 error (_("Expression cannot be implemented with "
1944                          "read/access watchpoint."));
1945             }
1946           else
1947             b->type = bp_watchpoint;
1948
1949           loc_type = (b->type == bp_watchpoint? bp_loc_other
1950                       : bp_loc_hardware_watchpoint);
1951           for (bl = b->loc; bl; bl = bl->next)
1952             bl->loc_type = loc_type;
1953         }
1954
1955       /* If a software watchpoint is not watching any memory, then the
1956          above left it without any location set up.  But,
1957          bpstat_stop_status requires a location to be able to report
1958          stops, so make sure there's at least a dummy one.  */
1959       if (b->type == bp_watchpoint && b->loc == NULL)
1960         software_watchpoint_add_no_memory_location (b, frame_pspace);
1961     }
1962   else if (!within_current_scope)
1963     {
1964       printf_filtered (_("\
1965 Watchpoint %d deleted because the program has left the block\n\
1966 in which its expression is valid.\n"),
1967                        b->number);
1968       watchpoint_del_at_next_stop (b);
1969     }
1970
1971   /* Restore the selected frame.  */
1972   if (frame_saved)
1973     select_frame (frame_find_by_id (saved_frame_id));
1974 }
1975
1976
1977 /* Returns 1 iff breakpoint location should be
1978    inserted in the inferior.  We don't differentiate the type of BL's owner
1979    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1980    breakpoint_ops is not defined, because in insert_bp_location,
1981    tracepoint's insert_location will not be called.  */
1982 static int
1983 should_be_inserted (struct bp_location *bl)
1984 {
1985   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1986     return 0;
1987
1988   if (bl->owner->disposition == disp_del_at_next_stop)
1989     return 0;
1990
1991   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1992     return 0;
1993
1994   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1995     return 0;
1996
1997   /* This is set for example, when we're attached to the parent of a
1998      vfork, and have detached from the child.  The child is running
1999      free, and we expect it to do an exec or exit, at which point the
2000      OS makes the parent schedulable again (and the target reports
2001      that the vfork is done).  Until the child is done with the shared
2002      memory region, do not insert breakpoints in the parent, otherwise
2003      the child could still trip on the parent's breakpoints.  Since
2004      the parent is blocked anyway, it won't miss any breakpoint.  */
2005   if (bl->pspace->breakpoints_not_allowed)
2006     return 0;
2007
2008   /* Don't insert a breakpoint if we're trying to step past its
2009      location, except if the breakpoint is a single-step breakpoint,
2010      and the breakpoint's thread is the thread which is stepping past
2011      a breakpoint.  */
2012   if ((bl->loc_type == bp_loc_software_breakpoint
2013        || bl->loc_type == bp_loc_hardware_breakpoint)
2014       && stepping_past_instruction_at (bl->pspace->aspace,
2015                                        bl->address)
2016       /* The single-step breakpoint may be inserted at the location
2017          we're trying to step if the instruction branches to itself.
2018          However, the instruction won't be executed at all and it may
2019          break the semantics of the instruction, for example, the
2020          instruction is a conditional branch or updates some flags.
2021          We can't fix it unless GDB is able to emulate the instruction
2022          or switch to displaced stepping.  */
2023       && !(bl->owner->type == bp_single_step
2024            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2025     {
2026       if (debug_infrun)
2027         {
2028           fprintf_unfiltered (gdb_stdlog,
2029                               "infrun: skipping breakpoint: "
2030                               "stepping past insn at: %s\n",
2031                               paddress (bl->gdbarch, bl->address));
2032         }
2033       return 0;
2034     }
2035
2036   /* Don't insert watchpoints if we're trying to step past the
2037      instruction that triggered one.  */
2038   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2039       && stepping_past_nonsteppable_watchpoint ())
2040     {
2041       if (debug_infrun)
2042         {
2043           fprintf_unfiltered (gdb_stdlog,
2044                               "infrun: stepping past non-steppable watchpoint. "
2045                               "skipping watchpoint at %s:%d\n",
2046                               paddress (bl->gdbarch, bl->address),
2047                               bl->length);
2048         }
2049       return 0;
2050     }
2051
2052   return 1;
2053 }
2054
2055 /* Same as should_be_inserted but does the check assuming
2056    that the location is not duplicated.  */
2057
2058 static int
2059 unduplicated_should_be_inserted (struct bp_location *bl)
2060 {
2061   int result;
2062   const int save_duplicate = bl->duplicate;
2063
2064   bl->duplicate = 0;
2065   result = should_be_inserted (bl);
2066   bl->duplicate = save_duplicate;
2067   return result;
2068 }
2069
2070 /* Parses a conditional described by an expression COND into an
2071    agent expression bytecode suitable for evaluation
2072    by the bytecode interpreter.  Return NULL if there was
2073    any error during parsing.  */
2074
2075 static agent_expr_up
2076 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2077 {
2078   if (cond == NULL)
2079     return NULL;
2080
2081   agent_expr_up aexpr;
2082
2083   /* We don't want to stop processing, so catch any errors
2084      that may show up.  */
2085   try
2086     {
2087       aexpr = gen_eval_for_expr (scope, cond);
2088     }
2089
2090   catch (const gdb_exception_error &ex)
2091     {
2092       /* If we got here, it means the condition could not be parsed to a valid
2093          bytecode expression and thus can't be evaluated on the target's side.
2094          It's no use iterating through the conditions.  */
2095     }
2096
2097   /* We have a valid agent expression.  */
2098   return aexpr;
2099 }
2100
2101 /* Based on location BL, create a list of breakpoint conditions to be
2102    passed on to the target.  If we have duplicated locations with different
2103    conditions, we will add such conditions to the list.  The idea is that the
2104    target will evaluate the list of conditions and will only notify GDB when
2105    one of them is true.  */
2106
2107 static void
2108 build_target_condition_list (struct bp_location *bl)
2109 {
2110   struct bp_location **locp = NULL, **loc2p;
2111   int null_condition_or_parse_error = 0;
2112   int modified = bl->needs_update;
2113   struct bp_location *loc;
2114
2115   /* Release conditions left over from a previous insert.  */
2116   bl->target_info.conditions.clear ();
2117
2118   /* This is only meaningful if the target is
2119      evaluating conditions and if the user has
2120      opted for condition evaluation on the target's
2121      side.  */
2122   if (gdb_evaluates_breakpoint_condition_p ()
2123       || !target_supports_evaluation_of_breakpoint_conditions ())
2124     return;
2125
2126   /* Do a first pass to check for locations with no assigned
2127      conditions or conditions that fail to parse to a valid agent expression
2128      bytecode.  If any of these happen, then it's no use to send conditions
2129      to the target since this location will always trigger and generate a
2130      response back to GDB.  */
2131   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2132     {
2133       loc = (*loc2p);
2134       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2135         {
2136           if (modified)
2137             {
2138               /* Re-parse the conditions since something changed.  In that
2139                  case we already freed the condition bytecodes (see
2140                  force_breakpoint_reinsertion).  We just
2141                  need to parse the condition to bytecodes again.  */
2142               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2143                                                         loc->cond.get ());
2144             }
2145
2146           /* If we have a NULL bytecode expression, it means something
2147              went wrong or we have a null condition expression.  */
2148           if (!loc->cond_bytecode)
2149             {
2150               null_condition_or_parse_error = 1;
2151               break;
2152             }
2153         }
2154     }
2155
2156   /* If any of these happened, it means we will have to evaluate the conditions
2157      for the location's address on gdb's side.  It is no use keeping bytecodes
2158      for all the other duplicate locations, thus we free all of them here.
2159
2160      This is so we have a finer control over which locations' conditions are
2161      being evaluated by GDB or the remote stub.  */
2162   if (null_condition_or_parse_error)
2163     {
2164       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2165         {
2166           loc = (*loc2p);
2167           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2168             {
2169               /* Only go as far as the first NULL bytecode is
2170                  located.  */
2171               if (!loc->cond_bytecode)
2172                 return;
2173
2174               loc->cond_bytecode.reset ();
2175             }
2176         }
2177     }
2178
2179   /* No NULL conditions or failed bytecode generation.  Build a condition list
2180      for this location's address.  */
2181   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2182     {
2183       loc = (*loc2p);
2184       if (loc->cond
2185           && is_breakpoint (loc->owner)
2186           && loc->pspace->num == bl->pspace->num
2187           && loc->owner->enable_state == bp_enabled
2188           && loc->enabled)
2189         {
2190           /* Add the condition to the vector.  This will be used later
2191              to send the conditions to the target.  */
2192           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2193         }
2194     }
2195
2196   return;
2197 }
2198
2199 /* Parses a command described by string CMD into an agent expression
2200    bytecode suitable for evaluation by the bytecode interpreter.
2201    Return NULL if there was any error during parsing.  */
2202
2203 static agent_expr_up
2204 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2205 {
2206   const char *cmdrest;
2207   const char *format_start, *format_end;
2208   struct gdbarch *gdbarch = get_current_arch ();
2209
2210   if (cmd == NULL)
2211     return NULL;
2212
2213   cmdrest = cmd;
2214
2215   if (*cmdrest == ',')
2216     ++cmdrest;
2217   cmdrest = skip_spaces (cmdrest);
2218
2219   if (*cmdrest++ != '"')
2220     error (_("No format string following the location"));
2221
2222   format_start = cmdrest;
2223
2224   format_pieces fpieces (&cmdrest);
2225
2226   format_end = cmdrest;
2227
2228   if (*cmdrest++ != '"')
2229     error (_("Bad format string, non-terminated '\"'."));
2230   
2231   cmdrest = skip_spaces (cmdrest);
2232
2233   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2234     error (_("Invalid argument syntax"));
2235
2236   if (*cmdrest == ',')
2237     cmdrest++;
2238   cmdrest = skip_spaces (cmdrest);
2239
2240   /* For each argument, make an expression.  */
2241
2242   std::vector<struct expression *> argvec;
2243   while (*cmdrest != '\0')
2244     {
2245       const char *cmd1;
2246
2247       cmd1 = cmdrest;
2248       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2249       argvec.push_back (expr.release ());
2250       cmdrest = cmd1;
2251       if (*cmdrest == ',')
2252         ++cmdrest;
2253     }
2254
2255   agent_expr_up aexpr;
2256
2257   /* We don't want to stop processing, so catch any errors
2258      that may show up.  */
2259   try
2260     {
2261       aexpr = gen_printf (scope, gdbarch, 0, 0,
2262                           format_start, format_end - format_start,
2263                           argvec.size (), argvec.data ());
2264     }
2265   catch (const gdb_exception_error &ex)
2266     {
2267       /* If we got here, it means the command could not be parsed to a valid
2268          bytecode expression and thus can't be evaluated on the target's side.
2269          It's no use iterating through the other commands.  */
2270     }
2271
2272   /* We have a valid agent expression, return it.  */
2273   return aexpr;
2274 }
2275
2276 /* Based on location BL, create a list of breakpoint commands to be
2277    passed on to the target.  If we have duplicated locations with
2278    different commands, we will add any such to the list.  */
2279
2280 static void
2281 build_target_command_list (struct bp_location *bl)
2282 {
2283   struct bp_location **locp = NULL, **loc2p;
2284   int null_command_or_parse_error = 0;
2285   int modified = bl->needs_update;
2286   struct bp_location *loc;
2287
2288   /* Clear commands left over from a previous insert.  */
2289   bl->target_info.tcommands.clear ();
2290
2291   if (!target_can_run_breakpoint_commands ())
2292     return;
2293
2294   /* For now, limit to agent-style dprintf breakpoints.  */
2295   if (dprintf_style != dprintf_style_agent)
2296     return;
2297
2298   /* For now, if we have any duplicate location that isn't a dprintf,
2299      don't install the target-side commands, as that would make the
2300      breakpoint not be reported to the core, and we'd lose
2301      control.  */
2302   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2303     {
2304       loc = (*loc2p);
2305       if (is_breakpoint (loc->owner)
2306           && loc->pspace->num == bl->pspace->num
2307           && loc->owner->type != bp_dprintf)
2308         return;
2309     }
2310
2311   /* Do a first pass to check for locations with no assigned
2312      conditions or conditions that fail to parse to a valid agent expression
2313      bytecode.  If any of these happen, then it's no use to send conditions
2314      to the target since this location will always trigger and generate a
2315      response back to GDB.  */
2316   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2317     {
2318       loc = (*loc2p);
2319       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2320         {
2321           if (modified)
2322             {
2323               /* Re-parse the commands since something changed.  In that
2324                  case we already freed the command bytecodes (see
2325                  force_breakpoint_reinsertion).  We just
2326                  need to parse the command to bytecodes again.  */
2327               loc->cmd_bytecode
2328                 = parse_cmd_to_aexpr (bl->address,
2329                                       loc->owner->extra_string);
2330             }
2331
2332           /* If we have a NULL bytecode expression, it means something
2333              went wrong or we have a null command expression.  */
2334           if (!loc->cmd_bytecode)
2335             {
2336               null_command_or_parse_error = 1;
2337               break;
2338             }
2339         }
2340     }
2341
2342   /* If anything failed, then we're not doing target-side commands,
2343      and so clean up.  */
2344   if (null_command_or_parse_error)
2345     {
2346       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2347         {
2348           loc = (*loc2p);
2349           if (is_breakpoint (loc->owner)
2350               && loc->pspace->num == bl->pspace->num)
2351             {
2352               /* Only go as far as the first NULL bytecode is
2353                  located.  */
2354               if (loc->cmd_bytecode == NULL)
2355                 return;
2356
2357               loc->cmd_bytecode.reset ();
2358             }
2359         }
2360     }
2361
2362   /* No NULL commands or failed bytecode generation.  Build a command list
2363      for this location's address.  */
2364   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2365     {
2366       loc = (*loc2p);
2367       if (loc->owner->extra_string
2368           && is_breakpoint (loc->owner)
2369           && loc->pspace->num == bl->pspace->num
2370           && loc->owner->enable_state == bp_enabled
2371           && loc->enabled)
2372         {
2373           /* Add the command to the vector.  This will be used later
2374              to send the commands to the target.  */
2375           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2376         }
2377     }
2378
2379   bl->target_info.persist = 0;
2380   /* Maybe flag this location as persistent.  */
2381   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2382     bl->target_info.persist = 1;
2383 }
2384
2385 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2386    of breakpoint according to ADDR except single-step breakpoint.
2387    Get the kind of single-step breakpoint according to the current
2388    registers state.  */
2389
2390 static int
2391 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2392 {
2393   if (bl->owner->type == bp_single_step)
2394     {
2395       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2396       struct regcache *regcache;
2397
2398       regcache = get_thread_regcache (thr);
2399
2400       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2401                                                          regcache, addr);
2402     }
2403   else
2404     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2405 }
2406
2407 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2408    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2409    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2410    Returns 0 for success, 1 if the bp_location type is not supported or
2411    -1 for failure.
2412
2413    NOTE drow/2003-09-09: This routine could be broken down to an
2414    object-style method for each breakpoint or catchpoint type.  */
2415 static int
2416 insert_bp_location (struct bp_location *bl,
2417                     struct ui_file *tmp_error_stream,
2418                     int *disabled_breaks,
2419                     int *hw_breakpoint_error,
2420                     int *hw_bp_error_explained_already)
2421 {
2422   gdb_exception bp_excpt;
2423
2424   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2425     return 0;
2426
2427   /* Note we don't initialize bl->target_info, as that wipes out
2428      the breakpoint location's shadow_contents if the breakpoint
2429      is still inserted at that location.  This in turn breaks
2430      target_read_memory which depends on these buffers when
2431      a memory read is requested at the breakpoint location:
2432      Once the target_info has been wiped, we fail to see that
2433      we have a breakpoint inserted at that address and thus
2434      read the breakpoint instead of returning the data saved in
2435      the breakpoint location's shadow contents.  */
2436   bl->target_info.reqstd_address = bl->address;
2437   bl->target_info.placed_address_space = bl->pspace->aspace;
2438   bl->target_info.length = bl->length;
2439
2440   /* When working with target-side conditions, we must pass all the conditions
2441      for the same breakpoint address down to the target since GDB will not
2442      insert those locations.  With a list of breakpoint conditions, the target
2443      can decide when to stop and notify GDB.  */
2444
2445   if (is_breakpoint (bl->owner))
2446     {
2447       build_target_condition_list (bl);
2448       build_target_command_list (bl);
2449       /* Reset the modification marker.  */
2450       bl->needs_update = 0;
2451     }
2452
2453   if (bl->loc_type == bp_loc_software_breakpoint
2454       || bl->loc_type == bp_loc_hardware_breakpoint)
2455     {
2456       if (bl->owner->type != bp_hardware_breakpoint)
2457         {
2458           /* If the explicitly specified breakpoint type
2459              is not hardware breakpoint, check the memory map to see
2460              if the breakpoint address is in read only memory or not.
2461
2462              Two important cases are:
2463              - location type is not hardware breakpoint, memory
2464              is readonly.  We change the type of the location to
2465              hardware breakpoint.
2466              - location type is hardware breakpoint, memory is
2467              read-write.  This means we've previously made the
2468              location hardware one, but then the memory map changed,
2469              so we undo.
2470              
2471              When breakpoints are removed, remove_breakpoints will use
2472              location types we've just set here, the only possible
2473              problem is that memory map has changed during running
2474              program, but it's not going to work anyway with current
2475              gdb.  */
2476           struct mem_region *mr 
2477             = lookup_mem_region (bl->target_info.reqstd_address);
2478           
2479           if (mr)
2480             {
2481               if (automatic_hardware_breakpoints)
2482                 {
2483                   enum bp_loc_type new_type;
2484                   
2485                   if (mr->attrib.mode != MEM_RW)
2486                     new_type = bp_loc_hardware_breakpoint;
2487                   else 
2488                     new_type = bp_loc_software_breakpoint;
2489                   
2490                   if (new_type != bl->loc_type)
2491                     {
2492                       static int said = 0;
2493
2494                       bl->loc_type = new_type;
2495                       if (!said)
2496                         {
2497                           fprintf_filtered (gdb_stdout,
2498                                             _("Note: automatically using "
2499                                               "hardware breakpoints for "
2500                                               "read-only addresses.\n"));
2501                           said = 1;
2502                         }
2503                     }
2504                 }
2505               else if (bl->loc_type == bp_loc_software_breakpoint
2506                        && mr->attrib.mode != MEM_RW)
2507                 {
2508                   fprintf_unfiltered (tmp_error_stream,
2509                                       _("Cannot insert breakpoint %d.\n"
2510                                         "Cannot set software breakpoint "
2511                                         "at read-only address %s\n"),
2512                                       bl->owner->number,
2513                                       paddress (bl->gdbarch, bl->address));
2514                   return 1;
2515                 }
2516             }
2517         }
2518         
2519       /* First check to see if we have to handle an overlay.  */
2520       if (overlay_debugging == ovly_off
2521           || bl->section == NULL
2522           || !(section_is_overlay (bl->section)))
2523         {
2524           /* No overlay handling: just set the breakpoint.  */
2525           try
2526             {
2527               int val;
2528
2529               val = bl->owner->ops->insert_location (bl);
2530               if (val)
2531                 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2532             }
2533           catch (gdb_exception &e)
2534             {
2535               bp_excpt = std::move (e);
2536             }
2537         }
2538       else
2539         {
2540           /* This breakpoint is in an overlay section.
2541              Shall we set a breakpoint at the LMA?  */
2542           if (!overlay_events_enabled)
2543             {
2544               /* Yes -- overlay event support is not active, 
2545                  so we must try to set a breakpoint at the LMA.
2546                  This will not work for a hardware breakpoint.  */
2547               if (bl->loc_type == bp_loc_hardware_breakpoint)
2548                 warning (_("hardware breakpoint %d not supported in overlay!"),
2549                          bl->owner->number);
2550               else
2551                 {
2552                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2553                                                              bl->section);
2554                   /* Set a software (trap) breakpoint at the LMA.  */
2555                   bl->overlay_target_info = bl->target_info;
2556                   bl->overlay_target_info.reqstd_address = addr;
2557
2558                   /* No overlay handling: just set the breakpoint.  */
2559                   try
2560                     {
2561                       int val;
2562
2563                       bl->overlay_target_info.kind
2564                         = breakpoint_kind (bl, &addr);
2565                       bl->overlay_target_info.placed_address = addr;
2566                       val = target_insert_breakpoint (bl->gdbarch,
2567                                                       &bl->overlay_target_info);
2568                       if (val)
2569                         bp_excpt
2570                           = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2571                     }
2572                   catch (gdb_exception &e)
2573                     {
2574                       bp_excpt = std::move (e);
2575                     }
2576
2577                   if (bp_excpt.reason != 0)
2578                     fprintf_unfiltered (tmp_error_stream,
2579                                         "Overlay breakpoint %d "
2580                                         "failed: in ROM?\n",
2581                                         bl->owner->number);
2582                 }
2583             }
2584           /* Shall we set a breakpoint at the VMA? */
2585           if (section_is_mapped (bl->section))
2586             {
2587               /* Yes.  This overlay section is mapped into memory.  */
2588               try
2589                 {
2590                   int val;
2591
2592                   val = bl->owner->ops->insert_location (bl);
2593                   if (val)
2594                     bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2595                 }
2596               catch (gdb_exception &e)
2597                 {
2598                   bp_excpt = std::move (e);
2599                 }
2600             }
2601           else
2602             {
2603               /* No.  This breakpoint will not be inserted.  
2604                  No error, but do not mark the bp as 'inserted'.  */
2605               return 0;
2606             }
2607         }
2608
2609       if (bp_excpt.reason != 0)
2610         {
2611           /* Can't set the breakpoint.  */
2612
2613           /* In some cases, we might not be able to insert a
2614              breakpoint in a shared library that has already been
2615              removed, but we have not yet processed the shlib unload
2616              event.  Unfortunately, some targets that implement
2617              breakpoint insertion themselves can't tell why the
2618              breakpoint insertion failed (e.g., the remote target
2619              doesn't define error codes), so we must treat generic
2620              errors as memory errors.  */
2621           if (bp_excpt.reason == RETURN_ERROR
2622               && (bp_excpt.error == GENERIC_ERROR
2623                   || bp_excpt.error == MEMORY_ERROR)
2624               && bl->loc_type == bp_loc_software_breakpoint
2625               && (solib_name_from_address (bl->pspace, bl->address)
2626                   || shared_objfile_contains_address_p (bl->pspace,
2627                                                         bl->address)))
2628             {
2629               /* See also: disable_breakpoints_in_shlibs.  */
2630               bl->shlib_disabled = 1;
2631               gdb::observers::breakpoint_modified.notify (bl->owner);
2632               if (!*disabled_breaks)
2633                 {
2634                   fprintf_unfiltered (tmp_error_stream, 
2635                                       "Cannot insert breakpoint %d.\n", 
2636                                       bl->owner->number);
2637                   fprintf_unfiltered (tmp_error_stream, 
2638                                       "Temporarily disabling shared "
2639                                       "library breakpoints:\n");
2640                 }
2641               *disabled_breaks = 1;
2642               fprintf_unfiltered (tmp_error_stream,
2643                                   "breakpoint #%d\n", bl->owner->number);
2644               return 0;
2645             }
2646           else
2647             {
2648               if (bl->loc_type == bp_loc_hardware_breakpoint)
2649                 {
2650                   *hw_breakpoint_error = 1;
2651                   *hw_bp_error_explained_already = bp_excpt.message != NULL;
2652                   fprintf_unfiltered (tmp_error_stream,
2653                                       "Cannot insert hardware breakpoint %d%s",
2654                                       bl->owner->number,
2655                                       bp_excpt.message ? ":" : ".\n");
2656                   if (bp_excpt.message != NULL)
2657                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2658                                         bp_excpt.what ());
2659                 }
2660               else
2661                 {
2662                   if (bp_excpt.message == NULL)
2663                     {
2664                       std::string message
2665                         = memory_error_message (TARGET_XFER_E_IO,
2666                                                 bl->gdbarch, bl->address);
2667
2668                       fprintf_unfiltered (tmp_error_stream,
2669                                           "Cannot insert breakpoint %d.\n"
2670                                           "%s\n",
2671                                           bl->owner->number, message.c_str ());
2672                     }
2673                   else
2674                     {
2675                       fprintf_unfiltered (tmp_error_stream,
2676                                           "Cannot insert breakpoint %d: %s\n",
2677                                           bl->owner->number,
2678                                           bp_excpt.what ());
2679                     }
2680                 }
2681               return 1;
2682
2683             }
2684         }
2685       else
2686         bl->inserted = 1;
2687
2688       return 0;
2689     }
2690
2691   else if (bl->loc_type == bp_loc_hardware_watchpoint
2692            /* NOTE drow/2003-09-08: This state only exists for removing
2693               watchpoints.  It's not clear that it's necessary...  */
2694            && bl->owner->disposition != disp_del_at_next_stop)
2695     {
2696       int val;
2697
2698       gdb_assert (bl->owner->ops != NULL
2699                   && bl->owner->ops->insert_location != NULL);
2700
2701       val = bl->owner->ops->insert_location (bl);
2702
2703       /* If trying to set a read-watchpoint, and it turns out it's not
2704          supported, try emulating one with an access watchpoint.  */
2705       if (val == 1 && bl->watchpoint_type == hw_read)
2706         {
2707           struct bp_location *loc, **loc_temp;
2708
2709           /* But don't try to insert it, if there's already another
2710              hw_access location that would be considered a duplicate
2711              of this one.  */
2712           ALL_BP_LOCATIONS (loc, loc_temp)
2713             if (loc != bl
2714                 && loc->watchpoint_type == hw_access
2715                 && watchpoint_locations_match (bl, loc))
2716               {
2717                 bl->duplicate = 1;
2718                 bl->inserted = 1;
2719                 bl->target_info = loc->target_info;
2720                 bl->watchpoint_type = hw_access;
2721                 val = 0;
2722                 break;
2723               }
2724
2725           if (val == 1)
2726             {
2727               bl->watchpoint_type = hw_access;
2728               val = bl->owner->ops->insert_location (bl);
2729
2730               if (val)
2731                 /* Back to the original value.  */
2732                 bl->watchpoint_type = hw_read;
2733             }
2734         }
2735
2736       bl->inserted = (val == 0);
2737     }
2738
2739   else if (bl->owner->type == bp_catchpoint)
2740     {
2741       int val;
2742
2743       gdb_assert (bl->owner->ops != NULL
2744                   && bl->owner->ops->insert_location != NULL);
2745
2746       val = bl->owner->ops->insert_location (bl);
2747       if (val)
2748         {
2749           bl->owner->enable_state = bp_disabled;
2750
2751           if (val == 1)
2752             warning (_("\
2753 Error inserting catchpoint %d: Your system does not support this type\n\
2754 of catchpoint."), bl->owner->number);
2755           else
2756             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2757         }
2758
2759       bl->inserted = (val == 0);
2760
2761       /* We've already printed an error message if there was a problem
2762          inserting this catchpoint, and we've disabled the catchpoint,
2763          so just return success.  */
2764       return 0;
2765     }
2766
2767   return 0;
2768 }
2769
2770 /* This function is called when program space PSPACE is about to be
2771    deleted.  It takes care of updating breakpoints to not reference
2772    PSPACE anymore.  */
2773
2774 void
2775 breakpoint_program_space_exit (struct program_space *pspace)
2776 {
2777   struct breakpoint *b, *b_temp;
2778   struct bp_location *loc, **loc_temp;
2779
2780   /* Remove any breakpoint that was set through this program space.  */
2781   ALL_BREAKPOINTS_SAFE (b, b_temp)
2782     {
2783       if (b->pspace == pspace)
2784         delete_breakpoint (b);
2785     }
2786
2787   /* Breakpoints set through other program spaces could have locations
2788      bound to PSPACE as well.  Remove those.  */
2789   ALL_BP_LOCATIONS (loc, loc_temp)
2790     {
2791       struct bp_location *tmp;
2792
2793       if (loc->pspace == pspace)
2794         {
2795           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2796           if (loc->owner->loc == loc)
2797             loc->owner->loc = loc->next;
2798           else
2799             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2800               if (tmp->next == loc)
2801                 {
2802                   tmp->next = loc->next;
2803                   break;
2804                 }
2805         }
2806     }
2807
2808   /* Now update the global location list to permanently delete the
2809      removed locations above.  */
2810   update_global_location_list (UGLL_DONT_INSERT);
2811 }
2812
2813 /* Make sure all breakpoints are inserted in inferior.
2814    Throws exception on any error.
2815    A breakpoint that is already inserted won't be inserted
2816    again, so calling this function twice is safe.  */
2817 void
2818 insert_breakpoints (void)
2819 {
2820   struct breakpoint *bpt;
2821
2822   ALL_BREAKPOINTS (bpt)
2823     if (is_hardware_watchpoint (bpt))
2824       {
2825         struct watchpoint *w = (struct watchpoint *) bpt;
2826
2827         update_watchpoint (w, 0 /* don't reparse.  */);
2828       }
2829
2830   /* Updating watchpoints creates new locations, so update the global
2831      location list.  Explicitly tell ugll to insert locations and
2832      ignore breakpoints_always_inserted_mode.  */
2833   update_global_location_list (UGLL_INSERT);
2834 }
2835
2836 /* Invoke CALLBACK for each of bp_location.  */
2837
2838 void
2839 iterate_over_bp_locations (walk_bp_location_callback callback)
2840 {
2841   struct bp_location *loc, **loc_tmp;
2842
2843   ALL_BP_LOCATIONS (loc, loc_tmp)
2844     {
2845       callback (loc, NULL);
2846     }
2847 }
2848
2849 /* This is used when we need to synch breakpoint conditions between GDB and the
2850    target.  It is the case with deleting and disabling of breakpoints when using
2851    always-inserted mode.  */
2852
2853 static void
2854 update_inserted_breakpoint_locations (void)
2855 {
2856   struct bp_location *bl, **blp_tmp;
2857   int error_flag = 0;
2858   int val = 0;
2859   int disabled_breaks = 0;
2860   int hw_breakpoint_error = 0;
2861   int hw_bp_details_reported = 0;
2862
2863   string_file tmp_error_stream;
2864
2865   /* Explicitly mark the warning -- this will only be printed if
2866      there was an error.  */
2867   tmp_error_stream.puts ("Warning:\n");
2868
2869   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2870
2871   ALL_BP_LOCATIONS (bl, blp_tmp)
2872     {
2873       /* We only want to update software breakpoints and hardware
2874          breakpoints.  */
2875       if (!is_breakpoint (bl->owner))
2876         continue;
2877
2878       /* We only want to update locations that are already inserted
2879          and need updating.  This is to avoid unwanted insertion during
2880          deletion of breakpoints.  */
2881       if (!bl->inserted || !bl->needs_update)
2882         continue;
2883
2884       switch_to_program_space_and_thread (bl->pspace);
2885
2886       /* For targets that support global breakpoints, there's no need
2887          to select an inferior to insert breakpoint to.  In fact, even
2888          if we aren't attached to any process yet, we should still
2889          insert breakpoints.  */
2890       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2891           && inferior_ptid == null_ptid)
2892         continue;
2893
2894       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2895                                     &hw_breakpoint_error, &hw_bp_details_reported);
2896       if (val)
2897         error_flag = val;
2898     }
2899
2900   if (error_flag)
2901     {
2902       target_terminal::ours_for_output ();
2903       error_stream (tmp_error_stream);
2904     }
2905 }
2906
2907 /* Used when starting or continuing the program.  */
2908
2909 static void
2910 insert_breakpoint_locations (void)
2911 {
2912   struct breakpoint *bpt;
2913   struct bp_location *bl, **blp_tmp;
2914   int error_flag = 0;
2915   int val = 0;
2916   int disabled_breaks = 0;
2917   int hw_breakpoint_error = 0;
2918   int hw_bp_error_explained_already = 0;
2919
2920   string_file tmp_error_stream;
2921
2922   /* Explicitly mark the warning -- this will only be printed if
2923      there was an error.  */
2924   tmp_error_stream.puts ("Warning:\n");
2925
2926   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2927
2928   ALL_BP_LOCATIONS (bl, blp_tmp)
2929     {
2930       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2931         continue;
2932
2933       /* There is no point inserting thread-specific breakpoints if
2934          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2935          has BL->OWNER always non-NULL.  */
2936       if (bl->owner->thread != -1
2937           && !valid_global_thread_id (bl->owner->thread))
2938         continue;
2939
2940       switch_to_program_space_and_thread (bl->pspace);
2941
2942       /* For targets that support global breakpoints, there's no need
2943          to select an inferior to insert breakpoint to.  In fact, even
2944          if we aren't attached to any process yet, we should still
2945          insert breakpoints.  */
2946       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2947           && inferior_ptid == null_ptid)
2948         continue;
2949
2950       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2951                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2952       if (val)
2953         error_flag = val;
2954     }
2955
2956   /* If we failed to insert all locations of a watchpoint, remove
2957      them, as half-inserted watchpoint is of limited use.  */
2958   ALL_BREAKPOINTS (bpt)  
2959     {
2960       int some_failed = 0;
2961       struct bp_location *loc;
2962
2963       if (!is_hardware_watchpoint (bpt))
2964         continue;
2965
2966       if (!breakpoint_enabled (bpt))
2967         continue;
2968
2969       if (bpt->disposition == disp_del_at_next_stop)
2970         continue;
2971       
2972       for (loc = bpt->loc; loc; loc = loc->next)
2973         if (!loc->inserted && should_be_inserted (loc))
2974           {
2975             some_failed = 1;
2976             break;
2977           }
2978       if (some_failed)
2979         {
2980           for (loc = bpt->loc; loc; loc = loc->next)
2981             if (loc->inserted)
2982               remove_breakpoint (loc);
2983
2984           hw_breakpoint_error = 1;
2985           tmp_error_stream.printf ("Could not insert "
2986                                    "hardware watchpoint %d.\n",
2987                                    bpt->number);
2988           error_flag = -1;
2989         }
2990     }
2991
2992   if (error_flag)
2993     {
2994       /* If a hardware breakpoint or watchpoint was inserted, add a
2995          message about possibly exhausted resources.  */
2996       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2997         {
2998           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
2999 You may have requested too many hardware breakpoints/watchpoints.\n");
3000         }
3001       target_terminal::ours_for_output ();
3002       error_stream (tmp_error_stream);
3003     }
3004 }
3005
3006 /* Used when the program stops.
3007    Returns zero if successful, or non-zero if there was a problem
3008    removing a breakpoint location.  */
3009
3010 int
3011 remove_breakpoints (void)
3012 {
3013   struct bp_location *bl, **blp_tmp;
3014   int val = 0;
3015
3016   ALL_BP_LOCATIONS (bl, blp_tmp)
3017   {
3018     if (bl->inserted && !is_tracepoint (bl->owner))
3019       val |= remove_breakpoint (bl);
3020   }
3021   return val;
3022 }
3023
3024 /* When a thread exits, remove breakpoints that are related to
3025    that thread.  */
3026
3027 static void
3028 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3029 {
3030   struct breakpoint *b, *b_tmp;
3031
3032   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3033     {
3034       if (b->thread == tp->global_num && user_breakpoint_p (b))
3035         {
3036           b->disposition = disp_del_at_next_stop;
3037
3038           printf_filtered (_("\
3039 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3040                            b->number, print_thread_id (tp));
3041
3042           /* Hide it from the user.  */
3043           b->number = 0;
3044        }
3045     }
3046 }
3047
3048 /* See breakpoint.h.  */
3049
3050 void
3051 remove_breakpoints_inf (inferior *inf)
3052 {
3053   struct bp_location *bl, **blp_tmp;
3054   int val;
3055
3056   ALL_BP_LOCATIONS (bl, blp_tmp)
3057   {
3058     if (bl->pspace != inf->pspace)
3059       continue;
3060
3061     if (bl->inserted && !bl->target_info.persist)
3062       {
3063         val = remove_breakpoint (bl);
3064         if (val != 0)
3065           return;
3066       }
3067   }
3068 }
3069
3070 static int internal_breakpoint_number = -1;
3071
3072 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3073    If INTERNAL is non-zero, the breakpoint number will be populated
3074    from internal_breakpoint_number and that variable decremented.
3075    Otherwise the breakpoint number will be populated from
3076    breakpoint_count and that value incremented.  Internal breakpoints
3077    do not set the internal var bpnum.  */
3078 static void
3079 set_breakpoint_number (int internal, struct breakpoint *b)
3080 {
3081   if (internal)
3082     b->number = internal_breakpoint_number--;
3083   else
3084     {
3085       set_breakpoint_count (breakpoint_count + 1);
3086       b->number = breakpoint_count;
3087     }
3088 }
3089
3090 static struct breakpoint *
3091 create_internal_breakpoint (struct gdbarch *gdbarch,
3092                             CORE_ADDR address, enum bptype type,
3093                             const struct breakpoint_ops *ops)
3094 {
3095   symtab_and_line sal;
3096   sal.pc = address;
3097   sal.section = find_pc_overlay (sal.pc);
3098   sal.pspace = current_program_space;
3099
3100   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3101   b->number = internal_breakpoint_number--;
3102   b->disposition = disp_donttouch;
3103
3104   return b;
3105 }
3106
3107 static const char *const longjmp_names[] =
3108   {
3109     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3110   };
3111 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3112
3113 /* Per-objfile data private to breakpoint.c.  */
3114 struct breakpoint_objfile_data
3115 {
3116   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3117   struct bound_minimal_symbol overlay_msym {};
3118
3119   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3120   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3121
3122   /* True if we have looked for longjmp probes.  */
3123   int longjmp_searched = 0;
3124
3125   /* SystemTap probe points for longjmp (if any).  These are non-owning
3126      references.  */
3127   std::vector<probe *> longjmp_probes;
3128
3129   /* Minimal symbol for "std::terminate()" (if any).  */
3130   struct bound_minimal_symbol terminate_msym {};
3131
3132   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3133   struct bound_minimal_symbol exception_msym {};
3134
3135   /* True if we have looked for exception probes.  */
3136   int exception_searched = 0;
3137
3138   /* SystemTap probe points for unwinding (if any).  These are non-owning
3139      references.  */
3140   std::vector<probe *> exception_probes;
3141 };
3142
3143 static const struct objfile_key<breakpoint_objfile_data>
3144   breakpoint_objfile_key;
3145
3146 /* Minimal symbol not found sentinel.  */
3147 static struct minimal_symbol msym_not_found;
3148
3149 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3150
3151 static int
3152 msym_not_found_p (const struct minimal_symbol *msym)
3153 {
3154   return msym == &msym_not_found;
3155 }
3156
3157 /* Return per-objfile data needed by breakpoint.c.
3158    Allocate the data if necessary.  */
3159
3160 static struct breakpoint_objfile_data *
3161 get_breakpoint_objfile_data (struct objfile *objfile)
3162 {
3163   struct breakpoint_objfile_data *bp_objfile_data;
3164
3165   bp_objfile_data = breakpoint_objfile_key.get (objfile);
3166   if (bp_objfile_data == NULL)
3167     bp_objfile_data = breakpoint_objfile_key.emplace (objfile);
3168   return bp_objfile_data;
3169 }
3170
3171 static void
3172 create_overlay_event_breakpoint (void)
3173 {
3174   const char *const func_name = "_ovly_debug_event";
3175
3176   for (objfile *objfile : current_program_space->objfiles ())
3177     {
3178       struct breakpoint *b;
3179       struct breakpoint_objfile_data *bp_objfile_data;
3180       CORE_ADDR addr;
3181       struct explicit_location explicit_loc;
3182
3183       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3184
3185       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3186         continue;
3187
3188       if (bp_objfile_data->overlay_msym.minsym == NULL)
3189         {
3190           struct bound_minimal_symbol m;
3191
3192           m = lookup_minimal_symbol_text (func_name, objfile);
3193           if (m.minsym == NULL)
3194             {
3195               /* Avoid future lookups in this objfile.  */
3196               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3197               continue;
3198             }
3199           bp_objfile_data->overlay_msym = m;
3200         }
3201
3202       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3203       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3204                                       bp_overlay_event,
3205                                       &internal_breakpoint_ops);
3206       initialize_explicit_location (&explicit_loc);
3207       explicit_loc.function_name = ASTRDUP (func_name);
3208       b->location = new_explicit_location (&explicit_loc);
3209
3210       if (overlay_debugging == ovly_auto)
3211         {
3212           b->enable_state = bp_enabled;
3213           overlay_events_enabled = 1;
3214         }
3215       else
3216        {
3217          b->enable_state = bp_disabled;
3218          overlay_events_enabled = 0;
3219        }
3220     }
3221 }
3222
3223 static void
3224 create_longjmp_master_breakpoint (void)
3225 {
3226   struct program_space *pspace;
3227
3228   scoped_restore_current_program_space restore_pspace;
3229
3230   ALL_PSPACES (pspace)
3231   {
3232     set_current_program_space (pspace);
3233
3234     for (objfile *objfile : current_program_space->objfiles ())
3235       {
3236         int i;
3237         struct gdbarch *gdbarch;
3238         struct breakpoint_objfile_data *bp_objfile_data;
3239
3240         gdbarch = get_objfile_arch (objfile);
3241
3242         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3243
3244         if (!bp_objfile_data->longjmp_searched)
3245           {
3246             std::vector<probe *> ret
3247               = find_probes_in_objfile (objfile, "libc", "longjmp");
3248
3249             if (!ret.empty ())
3250               {
3251                 /* We are only interested in checking one element.  */
3252                 probe *p = ret[0];
3253
3254                 if (!p->can_evaluate_arguments ())
3255                   {
3256                     /* We cannot use the probe interface here, because it does
3257                        not know how to evaluate arguments.  */
3258                     ret.clear ();
3259                   }
3260               }
3261             bp_objfile_data->longjmp_probes = ret;
3262             bp_objfile_data->longjmp_searched = 1;
3263           }
3264
3265         if (!bp_objfile_data->longjmp_probes.empty ())
3266           {
3267             for (probe *p : bp_objfile_data->longjmp_probes)
3268               {
3269                 struct breakpoint *b;
3270
3271                 b = create_internal_breakpoint (gdbarch,
3272                                                 p->get_relocated_address (objfile),
3273                                                 bp_longjmp_master,
3274                                                 &internal_breakpoint_ops);
3275                 b->location = new_probe_location ("-probe-stap libc:longjmp");
3276                 b->enable_state = bp_disabled;
3277               }
3278
3279             continue;
3280           }
3281
3282         if (!gdbarch_get_longjmp_target_p (gdbarch))
3283           continue;
3284
3285         for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3286           {
3287             struct breakpoint *b;
3288             const char *func_name;
3289             CORE_ADDR addr;
3290             struct explicit_location explicit_loc;
3291
3292             if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3293               continue;
3294
3295             func_name = longjmp_names[i];
3296             if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3297               {
3298                 struct bound_minimal_symbol m;
3299
3300                 m = lookup_minimal_symbol_text (func_name, objfile);
3301                 if (m.minsym == NULL)
3302                   {
3303                     /* Prevent future lookups in this objfile.  */
3304                     bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3305                     continue;
3306                   }
3307                 bp_objfile_data->longjmp_msym[i] = m;
3308               }
3309
3310             addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3311             b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3312                                             &internal_breakpoint_ops);
3313             initialize_explicit_location (&explicit_loc);
3314             explicit_loc.function_name = ASTRDUP (func_name);
3315             b->location = new_explicit_location (&explicit_loc);
3316             b->enable_state = bp_disabled;
3317           }
3318       }
3319   }
3320 }
3321
3322 /* Create a master std::terminate breakpoint.  */
3323 static void
3324 create_std_terminate_master_breakpoint (void)
3325 {
3326   struct program_space *pspace;
3327   const char *const func_name = "std::terminate()";
3328
3329   scoped_restore_current_program_space restore_pspace;
3330
3331   ALL_PSPACES (pspace)
3332   {
3333     CORE_ADDR addr;
3334
3335     set_current_program_space (pspace);
3336
3337     for (objfile *objfile : current_program_space->objfiles ())
3338       {
3339         struct breakpoint *b;
3340         struct breakpoint_objfile_data *bp_objfile_data;
3341         struct explicit_location explicit_loc;
3342
3343         bp_objfile_data = get_breakpoint_objfile_data (objfile);
3344
3345         if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3346           continue;
3347
3348         if (bp_objfile_data->terminate_msym.minsym == NULL)
3349           {
3350             struct bound_minimal_symbol m;
3351
3352             m = lookup_minimal_symbol (func_name, NULL, objfile);
3353             if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3354                                      && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3355               {
3356                 /* Prevent future lookups in this objfile.  */
3357                 bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3358                 continue;
3359               }
3360             bp_objfile_data->terminate_msym = m;
3361           }
3362
3363         addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3364         b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3365                                         bp_std_terminate_master,
3366                                         &internal_breakpoint_ops);
3367         initialize_explicit_location (&explicit_loc);
3368         explicit_loc.function_name = ASTRDUP (func_name);
3369         b->location = new_explicit_location (&explicit_loc);
3370         b->enable_state = bp_disabled;
3371       }
3372   }
3373 }
3374
3375 /* Install a master breakpoint on the unwinder's debug hook.  */
3376
3377 static void
3378 create_exception_master_breakpoint (void)
3379 {
3380   const char *const func_name = "_Unwind_DebugHook";
3381
3382   for (objfile *objfile : current_program_space->objfiles ())
3383     {
3384       struct breakpoint *b;
3385       struct gdbarch *gdbarch;
3386       struct breakpoint_objfile_data *bp_objfile_data;
3387       CORE_ADDR addr;
3388       struct explicit_location explicit_loc;
3389
3390       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3391
3392       /* We prefer the SystemTap probe point if it exists.  */
3393       if (!bp_objfile_data->exception_searched)
3394         {
3395           std::vector<probe *> ret
3396             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3397
3398           if (!ret.empty ())
3399             {
3400               /* We are only interested in checking one element.  */
3401               probe *p = ret[0];
3402
3403               if (!p->can_evaluate_arguments ())
3404                 {
3405                   /* We cannot use the probe interface here, because it does
3406                      not know how to evaluate arguments.  */
3407                   ret.clear ();
3408                 }
3409             }
3410           bp_objfile_data->exception_probes = ret;
3411           bp_objfile_data->exception_searched = 1;
3412         }
3413
3414       if (!bp_objfile_data->exception_probes.empty ())
3415         {
3416           gdbarch = get_objfile_arch (objfile);
3417
3418           for (probe *p : bp_objfile_data->exception_probes)
3419             {
3420               b = create_internal_breakpoint (gdbarch,
3421                                               p->get_relocated_address (objfile),
3422                                               bp_exception_master,
3423                                               &internal_breakpoint_ops);
3424               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3425               b->enable_state = bp_disabled;
3426             }
3427
3428           continue;
3429         }
3430
3431       /* Otherwise, try the hook function.  */
3432
3433       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3434         continue;
3435
3436       gdbarch = get_objfile_arch (objfile);
3437
3438       if (bp_objfile_data->exception_msym.minsym == NULL)
3439         {
3440           struct bound_minimal_symbol debug_hook;
3441
3442           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3443           if (debug_hook.minsym == NULL)
3444             {
3445               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3446               continue;
3447             }
3448
3449           bp_objfile_data->exception_msym = debug_hook;
3450         }
3451
3452       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3453       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3454                                                  current_top_target ());
3455       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3456                                       &internal_breakpoint_ops);
3457       initialize_explicit_location (&explicit_loc);
3458       explicit_loc.function_name = ASTRDUP (func_name);
3459       b->location = new_explicit_location (&explicit_loc);
3460       b->enable_state = bp_disabled;
3461     }
3462 }
3463
3464 /* Does B have a location spec?  */
3465
3466 static int
3467 breakpoint_event_location_empty_p (const struct breakpoint *b)
3468 {
3469   return b->location != NULL && event_location_empty_p (b->location.get ());
3470 }
3471
3472 void
3473 update_breakpoints_after_exec (void)
3474 {
3475   struct breakpoint *b, *b_tmp;
3476   struct bp_location *bploc, **bplocp_tmp;
3477
3478   /* We're about to delete breakpoints from GDB's lists.  If the
3479      INSERTED flag is true, GDB will try to lift the breakpoints by
3480      writing the breakpoints' "shadow contents" back into memory.  The
3481      "shadow contents" are NOT valid after an exec, so GDB should not
3482      do that.  Instead, the target is responsible from marking
3483      breakpoints out as soon as it detects an exec.  We don't do that
3484      here instead, because there may be other attempts to delete
3485      breakpoints after detecting an exec and before reaching here.  */
3486   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3487     if (bploc->pspace == current_program_space)
3488       gdb_assert (!bploc->inserted);
3489
3490   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3491   {
3492     if (b->pspace != current_program_space)
3493       continue;
3494
3495     /* Solib breakpoints must be explicitly reset after an exec().  */
3496     if (b->type == bp_shlib_event)
3497       {
3498         delete_breakpoint (b);
3499         continue;
3500       }
3501
3502     /* JIT breakpoints must be explicitly reset after an exec().  */
3503     if (b->type == bp_jit_event)
3504       {
3505         delete_breakpoint (b);
3506         continue;
3507       }
3508
3509     /* Thread event breakpoints must be set anew after an exec(),
3510        as must overlay event and longjmp master breakpoints.  */
3511     if (b->type == bp_thread_event || b->type == bp_overlay_event
3512         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3513         || b->type == bp_exception_master)
3514       {
3515         delete_breakpoint (b);
3516         continue;
3517       }
3518
3519     /* Step-resume breakpoints are meaningless after an exec().  */
3520     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3521       {
3522         delete_breakpoint (b);
3523         continue;
3524       }
3525
3526     /* Just like single-step breakpoints.  */
3527     if (b->type == bp_single_step)
3528       {
3529         delete_breakpoint (b);
3530         continue;
3531       }
3532
3533     /* Longjmp and longjmp-resume breakpoints are also meaningless
3534        after an exec.  */
3535     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3536         || b->type == bp_longjmp_call_dummy
3537         || b->type == bp_exception || b->type == bp_exception_resume)
3538       {
3539         delete_breakpoint (b);
3540         continue;
3541       }
3542
3543     if (b->type == bp_catchpoint)
3544       {
3545         /* For now, none of the bp_catchpoint breakpoints need to
3546            do anything at this point.  In the future, if some of
3547            the catchpoints need to something, we will need to add
3548            a new method, and call this method from here.  */
3549         continue;
3550       }
3551
3552     /* bp_finish is a special case.  The only way we ought to be able
3553        to see one of these when an exec() has happened, is if the user
3554        caught a vfork, and then said "finish".  Ordinarily a finish just
3555        carries them to the call-site of the current callee, by setting
3556        a temporary bp there and resuming.  But in this case, the finish
3557        will carry them entirely through the vfork & exec.
3558
3559        We don't want to allow a bp_finish to remain inserted now.  But
3560        we can't safely delete it, 'cause finish_command has a handle to
3561        the bp on a bpstat, and will later want to delete it.  There's a
3562        chance (and I've seen it happen) that if we delete the bp_finish
3563        here, that its storage will get reused by the time finish_command
3564        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3565        We really must allow finish_command to delete a bp_finish.
3566
3567        In the absence of a general solution for the "how do we know
3568        it's safe to delete something others may have handles to?"
3569        problem, what we'll do here is just uninsert the bp_finish, and
3570        let finish_command delete it.
3571
3572        (We know the bp_finish is "doomed" in the sense that it's
3573        momentary, and will be deleted as soon as finish_command sees
3574        the inferior stopped.  So it doesn't matter that the bp's
3575        address is probably bogus in the new a.out, unlike e.g., the
3576        solib breakpoints.)  */
3577
3578     if (b->type == bp_finish)
3579       {
3580         continue;
3581       }
3582
3583     /* Without a symbolic address, we have little hope of the
3584        pre-exec() address meaning the same thing in the post-exec()
3585        a.out.  */
3586     if (breakpoint_event_location_empty_p (b))
3587       {
3588         delete_breakpoint (b);
3589         continue;
3590       }
3591   }
3592 }
3593
3594 int
3595 detach_breakpoints (ptid_t ptid)
3596 {
3597   struct bp_location *bl, **blp_tmp;
3598   int val = 0;
3599   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3600   struct inferior *inf = current_inferior ();
3601
3602   if (ptid.pid () == inferior_ptid.pid ())
3603     error (_("Cannot detach breakpoints of inferior_ptid"));
3604
3605   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3606   inferior_ptid = ptid;
3607   ALL_BP_LOCATIONS (bl, blp_tmp)
3608   {
3609     if (bl->pspace != inf->pspace)
3610       continue;
3611
3612     /* This function must physically remove breakpoints locations
3613        from the specified ptid, without modifying the breakpoint
3614        package's state.  Locations of type bp_loc_other are only
3615        maintained at GDB side.  So, there is no need to remove
3616        these bp_loc_other locations.  Moreover, removing these
3617        would modify the breakpoint package's state.  */
3618     if (bl->loc_type == bp_loc_other)
3619       continue;
3620
3621     if (bl->inserted)
3622       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3623   }
3624
3625   return val;
3626 }
3627
3628 /* Remove the breakpoint location BL from the current address space.
3629    Note that this is used to detach breakpoints from a child fork.
3630    When we get here, the child isn't in the inferior list, and neither
3631    do we have objects to represent its address space --- we should
3632    *not* look at bl->pspace->aspace here.  */
3633
3634 static int
3635 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3636 {
3637   int val;
3638
3639   /* BL is never in moribund_locations by our callers.  */
3640   gdb_assert (bl->owner != NULL);
3641
3642   /* The type of none suggests that owner is actually deleted.
3643      This should not ever happen.  */
3644   gdb_assert (bl->owner->type != bp_none);
3645
3646   if (bl->loc_type == bp_loc_software_breakpoint
3647       || bl->loc_type == bp_loc_hardware_breakpoint)
3648     {
3649       /* "Normal" instruction breakpoint: either the standard
3650          trap-instruction bp (bp_breakpoint), or a
3651          bp_hardware_breakpoint.  */
3652
3653       /* First check to see if we have to handle an overlay.  */
3654       if (overlay_debugging == ovly_off
3655           || bl->section == NULL
3656           || !(section_is_overlay (bl->section)))
3657         {
3658           /* No overlay handling: just remove the breakpoint.  */
3659
3660           /* If we're trying to uninsert a memory breakpoint that we
3661              know is set in a dynamic object that is marked
3662              shlib_disabled, then either the dynamic object was
3663              removed with "remove-symbol-file" or with
3664              "nosharedlibrary".  In the former case, we don't know
3665              whether another dynamic object might have loaded over the
3666              breakpoint's address -- the user might well let us know
3667              about it next with add-symbol-file (the whole point of
3668              add-symbol-file is letting the user manually maintain a
3669              list of dynamically loaded objects).  If we have the
3670              breakpoint's shadow memory, that is, this is a software
3671              breakpoint managed by GDB, check whether the breakpoint
3672              is still inserted in memory, to avoid overwriting wrong
3673              code with stale saved shadow contents.  Note that HW
3674              breakpoints don't have shadow memory, as they're
3675              implemented using a mechanism that is not dependent on
3676              being able to modify the target's memory, and as such
3677              they should always be removed.  */
3678           if (bl->shlib_disabled
3679               && bl->target_info.shadow_len != 0
3680               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3681             val = 0;
3682           else
3683             val = bl->owner->ops->remove_location (bl, reason);
3684         }
3685       else
3686         {
3687           /* This breakpoint is in an overlay section.
3688              Did we set a breakpoint at the LMA?  */
3689           if (!overlay_events_enabled)
3690               {
3691                 /* Yes -- overlay event support is not active, so we
3692                    should have set a breakpoint at the LMA.  Remove it.  
3693                 */
3694                 /* Ignore any failures: if the LMA is in ROM, we will
3695                    have already warned when we failed to insert it.  */
3696                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3697                   target_remove_hw_breakpoint (bl->gdbarch,
3698                                                &bl->overlay_target_info);
3699                 else
3700                   target_remove_breakpoint (bl->gdbarch,
3701                                             &bl->overlay_target_info,
3702                                             reason);
3703               }
3704           /* Did we set a breakpoint at the VMA? 
3705              If so, we will have marked the breakpoint 'inserted'.  */
3706           if (bl->inserted)
3707             {
3708               /* Yes -- remove it.  Previously we did not bother to
3709                  remove the breakpoint if the section had been
3710                  unmapped, but let's not rely on that being safe.  We
3711                  don't know what the overlay manager might do.  */
3712
3713               /* However, we should remove *software* breakpoints only
3714                  if the section is still mapped, or else we overwrite
3715                  wrong code with the saved shadow contents.  */
3716               if (bl->loc_type == bp_loc_hardware_breakpoint
3717                   || section_is_mapped (bl->section))
3718                 val = bl->owner->ops->remove_location (bl, reason);
3719               else
3720                 val = 0;
3721             }
3722           else
3723             {
3724               /* No -- not inserted, so no need to remove.  No error.  */
3725               val = 0;
3726             }
3727         }
3728
3729       /* In some cases, we might not be able to remove a breakpoint in
3730          a shared library that has already been removed, but we have
3731          not yet processed the shlib unload event.  Similarly for an
3732          unloaded add-symbol-file object - the user might not yet have
3733          had the chance to remove-symbol-file it.  shlib_disabled will
3734          be set if the library/object has already been removed, but
3735          the breakpoint hasn't been uninserted yet, e.g., after
3736          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3737          always-inserted mode.  */
3738       if (val
3739           && (bl->loc_type == bp_loc_software_breakpoint
3740               && (bl->shlib_disabled
3741                   || solib_name_from_address (bl->pspace, bl->address)
3742                   || shared_objfile_contains_address_p (bl->pspace,
3743                                                         bl->address))))
3744         val = 0;
3745
3746       if (val)
3747         return val;
3748       bl->inserted = (reason == DETACH_BREAKPOINT);
3749     }
3750   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3751     {
3752       gdb_assert (bl->owner->ops != NULL
3753                   && bl->owner->ops->remove_location != NULL);
3754
3755       bl->inserted = (reason == DETACH_BREAKPOINT);
3756       bl->owner->ops->remove_location (bl, reason);
3757
3758       /* Failure to remove any of the hardware watchpoints comes here.  */
3759       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3760         warning (_("Could not remove hardware watchpoint %d."),
3761                  bl->owner->number);
3762     }
3763   else if (bl->owner->type == bp_catchpoint
3764            && breakpoint_enabled (bl->owner)
3765            && !bl->duplicate)
3766     {
3767       gdb_assert (bl->owner->ops != NULL
3768                   && bl->owner->ops->remove_location != NULL);
3769
3770       val = bl->owner->ops->remove_location (bl, reason);
3771       if (val)
3772         return val;
3773
3774       bl->inserted = (reason == DETACH_BREAKPOINT);
3775     }
3776
3777   return 0;
3778 }
3779
3780 static int
3781 remove_breakpoint (struct bp_location *bl)
3782 {
3783   /* BL is never in moribund_locations by our callers.  */
3784   gdb_assert (bl->owner != NULL);
3785
3786   /* The type of none suggests that owner is actually deleted.
3787      This should not ever happen.  */
3788   gdb_assert (bl->owner->type != bp_none);
3789
3790   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3791
3792   switch_to_program_space_and_thread (bl->pspace);
3793
3794   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3795 }
3796
3797 /* Clear the "inserted" flag in all breakpoints.  */
3798
3799 void
3800 mark_breakpoints_out (void)
3801 {
3802   struct bp_location *bl, **blp_tmp;
3803
3804   ALL_BP_LOCATIONS (bl, blp_tmp)
3805     if (bl->pspace == current_program_space)
3806       bl->inserted = 0;
3807 }
3808
3809 /* Clear the "inserted" flag in all breakpoints and delete any
3810    breakpoints which should go away between runs of the program.
3811
3812    Plus other such housekeeping that has to be done for breakpoints
3813    between runs.
3814
3815    Note: this function gets called at the end of a run (by
3816    generic_mourn_inferior) and when a run begins (by
3817    init_wait_for_inferior).  */
3818
3819
3820
3821 void
3822 breakpoint_init_inferior (enum inf_context context)
3823 {
3824   struct breakpoint *b, *b_tmp;
3825   struct program_space *pspace = current_program_space;
3826
3827   /* If breakpoint locations are shared across processes, then there's
3828      nothing to do.  */
3829   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3830     return;
3831
3832   mark_breakpoints_out ();
3833
3834   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3835   {
3836     if (b->loc && b->loc->pspace != pspace)
3837       continue;
3838
3839     switch (b->type)
3840       {
3841       case bp_call_dummy:
3842       case bp_longjmp_call_dummy:
3843
3844         /* If the call dummy breakpoint is at the entry point it will
3845            cause problems when the inferior is rerun, so we better get
3846            rid of it.  */
3847
3848       case bp_watchpoint_scope:
3849
3850         /* Also get rid of scope breakpoints.  */
3851
3852       case bp_shlib_event:
3853
3854         /* Also remove solib event breakpoints.  Their addresses may
3855            have changed since the last time we ran the program.
3856            Actually we may now be debugging against different target;
3857            and so the solib backend that installed this breakpoint may
3858            not be used in by the target.  E.g.,
3859
3860            (gdb) file prog-linux
3861            (gdb) run               # native linux target
3862            ...
3863            (gdb) kill
3864            (gdb) file prog-win.exe
3865            (gdb) tar rem :9999     # remote Windows gdbserver.
3866         */
3867
3868       case bp_step_resume:
3869
3870         /* Also remove step-resume breakpoints.  */
3871
3872       case bp_single_step:
3873
3874         /* Also remove single-step breakpoints.  */
3875
3876         delete_breakpoint (b);
3877         break;
3878
3879       case bp_watchpoint:
3880       case bp_hardware_watchpoint:
3881       case bp_read_watchpoint:
3882       case bp_access_watchpoint:
3883         {
3884           struct watchpoint *w = (struct watchpoint *) b;
3885
3886           /* Likewise for watchpoints on local expressions.  */
3887           if (w->exp_valid_block != NULL)
3888             delete_breakpoint (b);
3889           else
3890             {
3891               /* Get rid of existing locations, which are no longer
3892                  valid.  New ones will be created in
3893                  update_watchpoint, when the inferior is restarted.
3894                  The next update_global_location_list call will
3895                  garbage collect them.  */
3896               b->loc = NULL;
3897
3898               if (context == inf_starting)
3899                 {
3900                   /* Reset val field to force reread of starting value in
3901                      insert_breakpoints.  */
3902                   w->val.reset (nullptr);
3903                   w->val_valid = 0;
3904                 }
3905             }
3906         }
3907         break;
3908       default:
3909         break;
3910       }
3911   }
3912
3913   /* Get rid of the moribund locations.  */
3914   for (bp_location *bl : moribund_locations)
3915     decref_bp_location (&bl);
3916   moribund_locations.clear ();
3917 }
3918
3919 /* These functions concern about actual breakpoints inserted in the
3920    target --- to e.g. check if we need to do decr_pc adjustment or if
3921    we need to hop over the bkpt --- so we check for address space
3922    match, not program space.  */
3923
3924 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3925    exists at PC.  It returns ordinary_breakpoint_here if it's an
3926    ordinary breakpoint, or permanent_breakpoint_here if it's a
3927    permanent breakpoint.
3928    - When continuing from a location with an ordinary breakpoint, we
3929      actually single step once before calling insert_breakpoints.
3930    - When continuing from a location with a permanent breakpoint, we
3931      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3932      the target, to advance the PC past the breakpoint.  */
3933
3934 enum breakpoint_here
3935 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3936 {
3937   struct bp_location *bl, **blp_tmp;
3938   int any_breakpoint_here = 0;
3939
3940   ALL_BP_LOCATIONS (bl, blp_tmp)
3941     {
3942       if (bl->loc_type != bp_loc_software_breakpoint
3943           && bl->loc_type != bp_loc_hardware_breakpoint)
3944         continue;
3945
3946       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3947       if ((breakpoint_enabled (bl->owner)
3948            || bl->permanent)
3949           && breakpoint_location_address_match (bl, aspace, pc))
3950         {
3951           if (overlay_debugging 
3952               && section_is_overlay (bl->section)
3953               && !section_is_mapped (bl->section))
3954             continue;           /* unmapped overlay -- can't be a match */
3955           else if (bl->permanent)
3956             return permanent_breakpoint_here;
3957           else
3958             any_breakpoint_here = 1;
3959         }
3960     }
3961
3962   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
3963 }
3964
3965 /* See breakpoint.h.  */
3966
3967 int
3968 breakpoint_in_range_p (const address_space *aspace,
3969                        CORE_ADDR addr, ULONGEST len)
3970 {
3971   struct bp_location *bl, **blp_tmp;
3972
3973   ALL_BP_LOCATIONS (bl, blp_tmp)
3974     {
3975       if (bl->loc_type != bp_loc_software_breakpoint
3976           && bl->loc_type != bp_loc_hardware_breakpoint)
3977         continue;
3978
3979       if ((breakpoint_enabled (bl->owner)
3980            || bl->permanent)
3981           && breakpoint_location_address_range_overlap (bl, aspace,
3982                                                         addr, len))
3983         {
3984           if (overlay_debugging
3985               && section_is_overlay (bl->section)
3986               && !section_is_mapped (bl->section))
3987             {
3988               /* Unmapped overlay -- can't be a match.  */
3989               continue;
3990             }
3991
3992           return 1;
3993         }
3994     }
3995
3996   return 0;
3997 }
3998
3999 /* Return true if there's a moribund breakpoint at PC.  */
4000
4001 int
4002 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4003 {
4004   for (bp_location *loc : moribund_locations)
4005     if (breakpoint_location_address_match (loc, aspace, pc))
4006       return 1;
4007
4008   return 0;
4009 }
4010
4011 /* Returns non-zero iff BL is inserted at PC, in address space
4012    ASPACE.  */
4013
4014 static int
4015 bp_location_inserted_here_p (struct bp_location *bl,
4016                              const address_space *aspace, CORE_ADDR pc)
4017 {
4018   if (bl->inserted
4019       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4020                                    aspace, pc))
4021     {
4022       if (overlay_debugging
4023           && section_is_overlay (bl->section)
4024           && !section_is_mapped (bl->section))
4025         return 0;               /* unmapped overlay -- can't be a match */
4026       else
4027         return 1;
4028     }
4029   return 0;
4030 }
4031
4032 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4033
4034 int
4035 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4036 {
4037   struct bp_location **blp, **blp_tmp = NULL;
4038
4039   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4040     {
4041       struct bp_location *bl = *blp;
4042
4043       if (bl->loc_type != bp_loc_software_breakpoint
4044           && bl->loc_type != bp_loc_hardware_breakpoint)
4045         continue;
4046
4047       if (bp_location_inserted_here_p (bl, aspace, pc))
4048         return 1;
4049     }
4050   return 0;
4051 }
4052
4053 /* This function returns non-zero iff there is a software breakpoint
4054    inserted at PC.  */
4055
4056 int
4057 software_breakpoint_inserted_here_p (const address_space *aspace,
4058                                      CORE_ADDR pc)
4059 {
4060   struct bp_location **blp, **blp_tmp = NULL;
4061
4062   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4063     {
4064       struct bp_location *bl = *blp;
4065
4066       if (bl->loc_type != bp_loc_software_breakpoint)
4067         continue;
4068
4069       if (bp_location_inserted_here_p (bl, aspace, pc))
4070         return 1;
4071     }
4072
4073   return 0;
4074 }
4075
4076 /* See breakpoint.h.  */
4077
4078 int
4079 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4080                                      CORE_ADDR pc)
4081 {
4082   struct bp_location **blp, **blp_tmp = NULL;
4083
4084   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4085     {
4086       struct bp_location *bl = *blp;
4087
4088       if (bl->loc_type != bp_loc_hardware_breakpoint)
4089         continue;
4090
4091       if (bp_location_inserted_here_p (bl, aspace, pc))
4092         return 1;
4093     }
4094
4095   return 0;
4096 }
4097
4098 int
4099 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4100                                        CORE_ADDR addr, ULONGEST len)
4101 {
4102   struct breakpoint *bpt;
4103
4104   ALL_BREAKPOINTS (bpt)
4105     {
4106       struct bp_location *loc;
4107
4108       if (bpt->type != bp_hardware_watchpoint
4109           && bpt->type != bp_access_watchpoint)
4110         continue;
4111
4112       if (!breakpoint_enabled (bpt))
4113         continue;
4114
4115       for (loc = bpt->loc; loc; loc = loc->next)
4116         if (loc->pspace->aspace == aspace && loc->inserted)
4117           {
4118             CORE_ADDR l, h;
4119
4120             /* Check for intersection.  */
4121             l = std::max<CORE_ADDR> (loc->address, addr);
4122             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4123             if (l < h)
4124               return 1;
4125           }
4126     }
4127   return 0;
4128 }
4129
4130 /* See breakpoint.h.  */
4131
4132 bool
4133 is_catchpoint (struct breakpoint *b)
4134 {
4135   return (b->type == bp_catchpoint);
4136 }
4137
4138 /* Frees any storage that is part of a bpstat.  Does not walk the
4139    'next' chain.  */
4140
4141 bpstats::~bpstats ()
4142 {
4143   if (bp_location_at != NULL)
4144     decref_bp_location (&bp_location_at);
4145 }
4146
4147 /* Clear a bpstat so that it says we are not at any breakpoint.
4148    Also free any storage that is part of a bpstat.  */
4149
4150 void
4151 bpstat_clear (bpstat *bsp)
4152 {
4153   bpstat p;
4154   bpstat q;
4155
4156   if (bsp == 0)
4157     return;
4158   p = *bsp;
4159   while (p != NULL)
4160     {
4161       q = p->next;
4162       delete p;
4163       p = q;
4164     }
4165   *bsp = NULL;
4166 }
4167
4168 bpstats::bpstats (const bpstats &other)
4169   : next (NULL),
4170     bp_location_at (other.bp_location_at),
4171     breakpoint_at (other.breakpoint_at),
4172     commands (other.commands),
4173     print (other.print),
4174     stop (other.stop),
4175     print_it (other.print_it)
4176 {
4177   if (other.old_val != NULL)
4178     old_val = release_value (value_copy (other.old_val.get ()));
4179   incref_bp_location (bp_location_at);
4180 }
4181
4182 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4183    is part of the bpstat is copied as well.  */
4184
4185 bpstat
4186 bpstat_copy (bpstat bs)
4187 {
4188   bpstat p = NULL;
4189   bpstat tmp;
4190   bpstat retval = NULL;
4191
4192   if (bs == NULL)
4193     return bs;
4194
4195   for (; bs != NULL; bs = bs->next)
4196     {
4197       tmp = new bpstats (*bs);
4198
4199       if (p == NULL)
4200         /* This is the first thing in the chain.  */
4201         retval = tmp;
4202       else
4203         p->next = tmp;
4204       p = tmp;
4205     }
4206   p->next = NULL;
4207   return retval;
4208 }
4209
4210 /* Find the bpstat associated with this breakpoint.  */
4211
4212 bpstat
4213 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4214 {
4215   if (bsp == NULL)
4216     return NULL;
4217
4218   for (; bsp != NULL; bsp = bsp->next)
4219     {
4220       if (bsp->breakpoint_at == breakpoint)
4221         return bsp;
4222     }
4223   return NULL;
4224 }
4225
4226 /* See breakpoint.h.  */
4227
4228 bool
4229 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4230 {
4231   for (; bsp != NULL; bsp = bsp->next)
4232     {
4233       if (bsp->breakpoint_at == NULL)
4234         {
4235           /* A moribund location can never explain a signal other than
4236              GDB_SIGNAL_TRAP.  */
4237           if (sig == GDB_SIGNAL_TRAP)
4238             return true;
4239         }
4240       else
4241         {
4242           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4243                                                         sig))
4244             return true;
4245         }
4246     }
4247
4248   return false;
4249 }
4250
4251 /* Put in *NUM the breakpoint number of the first breakpoint we are
4252    stopped at.  *BSP upon return is a bpstat which points to the
4253    remaining breakpoints stopped at (but which is not guaranteed to be
4254    good for anything but further calls to bpstat_num).
4255
4256    Return 0 if passed a bpstat which does not indicate any breakpoints.
4257    Return -1 if stopped at a breakpoint that has been deleted since
4258    we set it.
4259    Return 1 otherwise.  */
4260
4261 int
4262 bpstat_num (bpstat *bsp, int *num)
4263 {
4264   struct breakpoint *b;
4265
4266   if ((*bsp) == NULL)
4267     return 0;                   /* No more breakpoint values */
4268
4269   /* We assume we'll never have several bpstats that correspond to a
4270      single breakpoint -- otherwise, this function might return the
4271      same number more than once and this will look ugly.  */
4272   b = (*bsp)->breakpoint_at;
4273   *bsp = (*bsp)->next;
4274   if (b == NULL)
4275     return -1;                  /* breakpoint that's been deleted since */
4276
4277   *num = b->number;             /* We have its number */
4278   return 1;
4279 }
4280
4281 /* See breakpoint.h.  */
4282
4283 void
4284 bpstat_clear_actions (void)
4285 {
4286   bpstat bs;
4287
4288   if (inferior_ptid == null_ptid)
4289     return;
4290
4291   thread_info *tp = inferior_thread ();
4292   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4293     {
4294       bs->commands = NULL;
4295       bs->old_val.reset (nullptr);
4296     }
4297 }
4298
4299 /* Called when a command is about to proceed the inferior.  */
4300
4301 static void
4302 breakpoint_about_to_proceed (void)
4303 {
4304   if (inferior_ptid != null_ptid)
4305     {
4306       struct thread_info *tp = inferior_thread ();
4307
4308       /* Allow inferior function calls in breakpoint commands to not
4309          interrupt the command list.  When the call finishes
4310          successfully, the inferior will be standing at the same
4311          breakpoint as if nothing happened.  */
4312       if (tp->control.in_infcall)
4313         return;
4314     }
4315
4316   breakpoint_proceeded = 1;
4317 }
4318
4319 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4320    or its equivalent.  */
4321
4322 static int
4323 command_line_is_silent (struct command_line *cmd)
4324 {
4325   return cmd && (strcmp ("silent", cmd->line) == 0);
4326 }
4327
4328 /* Execute all the commands associated with all the breakpoints at
4329    this location.  Any of these commands could cause the process to
4330    proceed beyond this point, etc.  We look out for such changes by
4331    checking the global "breakpoint_proceeded" after each command.
4332
4333    Returns true if a breakpoint command resumed the inferior.  In that
4334    case, it is the caller's responsibility to recall it again with the
4335    bpstat of the current thread.  */
4336
4337 static int
4338 bpstat_do_actions_1 (bpstat *bsp)
4339 {
4340   bpstat bs;
4341   int again = 0;
4342
4343   /* Avoid endless recursion if a `source' command is contained
4344      in bs->commands.  */
4345   if (executing_breakpoint_commands)
4346     return 0;
4347
4348   scoped_restore save_executing
4349     = make_scoped_restore (&executing_breakpoint_commands, 1);
4350
4351   scoped_restore preventer = prevent_dont_repeat ();
4352
4353   /* This pointer will iterate over the list of bpstat's.  */
4354   bs = *bsp;
4355
4356   breakpoint_proceeded = 0;
4357   for (; bs != NULL; bs = bs->next)
4358     {
4359       struct command_line *cmd = NULL;
4360
4361       /* Take ownership of the BSP's command tree, if it has one.
4362
4363          The command tree could legitimately contain commands like
4364          'step' and 'next', which call clear_proceed_status, which
4365          frees stop_bpstat's command tree.  To make sure this doesn't
4366          free the tree we're executing out from under us, we need to
4367          take ownership of the tree ourselves.  Since a given bpstat's
4368          commands are only executed once, we don't need to copy it; we
4369          can clear the pointer in the bpstat, and make sure we free
4370          the tree when we're done.  */
4371       counted_command_line ccmd = bs->commands;
4372       bs->commands = NULL;
4373       if (ccmd != NULL)
4374         cmd = ccmd.get ();
4375       if (command_line_is_silent (cmd))
4376         {
4377           /* The action has been already done by bpstat_stop_status.  */
4378           cmd = cmd->next;
4379         }
4380
4381       while (cmd != NULL)
4382         {
4383           execute_control_command (cmd);
4384
4385           if (breakpoint_proceeded)
4386             break;
4387           else
4388             cmd = cmd->next;
4389         }
4390
4391       if (breakpoint_proceeded)
4392         {
4393           if (current_ui->async)
4394             /* If we are in async mode, then the target might be still
4395                running, not stopped at any breakpoint, so nothing for
4396                us to do here -- just return to the event loop.  */
4397             ;
4398           else
4399             /* In sync mode, when execute_control_command returns
4400                we're already standing on the next breakpoint.
4401                Breakpoint commands for that stop were not run, since
4402                execute_command does not run breakpoint commands --
4403                only command_line_handler does, but that one is not
4404                involved in execution of breakpoint commands.  So, we
4405                can now execute breakpoint commands.  It should be
4406                noted that making execute_command do bpstat actions is
4407                not an option -- in this case we'll have recursive
4408                invocation of bpstat for each breakpoint with a
4409                command, and can easily blow up GDB stack.  Instead, we
4410                return true, which will trigger the caller to recall us
4411                with the new stop_bpstat.  */
4412             again = 1;
4413           break;
4414         }
4415     }
4416   return again;
4417 }
4418
4419 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4420    one, is alive and has execution.  Return NULL otherwise.  */
4421
4422 static thread_info *
4423 get_bpstat_thread ()
4424 {
4425   if (inferior_ptid == null_ptid || !target_has_execution)
4426     return NULL;
4427
4428   thread_info *tp = inferior_thread ();
4429   if (tp->state == THREAD_EXITED || tp->executing)
4430     return NULL;
4431   return tp;
4432 }
4433
4434 void
4435 bpstat_do_actions (void)
4436 {
4437   auto cleanup_if_error = make_scope_exit (bpstat_clear_actions);
4438   thread_info *tp;
4439
4440   /* Do any commands attached to breakpoint we are stopped at.  */
4441   while ((tp = get_bpstat_thread ()) != NULL)
4442     {
4443       /* Since in sync mode, bpstat_do_actions may resume the
4444          inferior, and only return when it is stopped at the next
4445          breakpoint, we keep doing breakpoint actions until it returns
4446          false to indicate the inferior was not resumed.  */
4447       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4448         break;
4449     }
4450
4451   cleanup_if_error.release ();
4452 }
4453
4454 /* Print out the (old or new) value associated with a watchpoint.  */
4455
4456 static void
4457 watchpoint_value_print (struct value *val, struct ui_file *stream)
4458 {
4459   if (val == NULL)
4460     fprintf_unfiltered (stream, _("<unreadable>"));
4461   else
4462     {
4463       struct value_print_options opts;
4464       get_user_print_options (&opts);
4465       value_print (val, stream, &opts);
4466     }
4467 }
4468
4469 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4470    debugging multiple threads.  */
4471
4472 void
4473 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4474 {
4475   if (uiout->is_mi_like_p ())
4476     return;
4477
4478   uiout->text ("\n");
4479
4480   if (show_thread_that_caused_stop ())
4481     {
4482       const char *name;
4483       struct thread_info *thr = inferior_thread ();
4484
4485       uiout->text ("Thread ");
4486       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4487
4488       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4489       if (name != NULL)
4490         {
4491           uiout->text (" \"");
4492           uiout->field_fmt ("name", "%s", name);
4493           uiout->text ("\"");
4494         }
4495
4496       uiout->text (" hit ");
4497     }
4498 }
4499
4500 /* Generic routine for printing messages indicating why we
4501    stopped.  The behavior of this function depends on the value
4502    'print_it' in the bpstat structure.  Under some circumstances we
4503    may decide not to print anything here and delegate the task to
4504    normal_stop().  */
4505
4506 static enum print_stop_action
4507 print_bp_stop_message (bpstat bs)
4508 {
4509   switch (bs->print_it)
4510     {
4511     case print_it_noop:
4512       /* Nothing should be printed for this bpstat entry.  */
4513       return PRINT_UNKNOWN;
4514       break;
4515
4516     case print_it_done:
4517       /* We still want to print the frame, but we already printed the
4518          relevant messages.  */
4519       return PRINT_SRC_AND_LOC;
4520       break;
4521
4522     case print_it_normal:
4523       {
4524         struct breakpoint *b = bs->breakpoint_at;
4525
4526         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4527            which has since been deleted.  */
4528         if (b == NULL)
4529           return PRINT_UNKNOWN;
4530
4531         /* Normal case.  Call the breakpoint's print_it method.  */
4532         return b->ops->print_it (bs);
4533       }
4534       break;
4535
4536     default:
4537       internal_error (__FILE__, __LINE__,
4538                       _("print_bp_stop_message: unrecognized enum value"));
4539       break;
4540     }
4541 }
4542
4543 /* A helper function that prints a shared library stopped event.  */
4544
4545 static void
4546 print_solib_event (int is_catchpoint)
4547 {
4548   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4549   bool any_added = !current_program_space->added_solibs.empty ();
4550
4551   if (!is_catchpoint)
4552     {
4553       if (any_added || any_deleted)
4554         current_uiout->text (_("Stopped due to shared library event:\n"));
4555       else
4556         current_uiout->text (_("Stopped due to shared library event (no "
4557                                "libraries added or removed)\n"));
4558     }
4559
4560   if (current_uiout->is_mi_like_p ())
4561     current_uiout->field_string ("reason",
4562                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4563
4564   if (any_deleted)
4565     {
4566       current_uiout->text (_("  Inferior unloaded "));
4567       ui_out_emit_list list_emitter (current_uiout, "removed");
4568       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4569         {
4570           const std::string &name = current_program_space->deleted_solibs[ix];
4571
4572           if (ix > 0)
4573             current_uiout->text ("    ");
4574           current_uiout->field_string ("library", name);
4575           current_uiout->text ("\n");
4576         }
4577     }
4578
4579   if (any_added)
4580     {
4581       current_uiout->text (_("  Inferior loaded "));
4582       ui_out_emit_list list_emitter (current_uiout, "added");
4583       bool first = true;
4584       for (so_list *iter : current_program_space->added_solibs)
4585         {
4586           if (!first)
4587             current_uiout->text ("    ");
4588           first = false;
4589           current_uiout->field_string ("library", iter->so_name);
4590           current_uiout->text ("\n");
4591         }
4592     }
4593 }
4594
4595 /* Print a message indicating what happened.  This is called from
4596    normal_stop().  The input to this routine is the head of the bpstat
4597    list - a list of the eventpoints that caused this stop.  KIND is
4598    the target_waitkind for the stopping event.  This
4599    routine calls the generic print routine for printing a message
4600    about reasons for stopping.  This will print (for example) the
4601    "Breakpoint n," part of the output.  The return value of this
4602    routine is one of:
4603
4604    PRINT_UNKNOWN: Means we printed nothing.
4605    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4606    code to print the location.  An example is 
4607    "Breakpoint 1, " which should be followed by
4608    the location.
4609    PRINT_SRC_ONLY: Means we printed something, but there is no need
4610    to also print the location part of the message.
4611    An example is the catch/throw messages, which
4612    don't require a location appended to the end.
4613    PRINT_NOTHING: We have done some printing and we don't need any 
4614    further info to be printed.  */
4615
4616 enum print_stop_action
4617 bpstat_print (bpstat bs, int kind)
4618 {
4619   enum print_stop_action val;
4620
4621   /* Maybe another breakpoint in the chain caused us to stop.
4622      (Currently all watchpoints go on the bpstat whether hit or not.
4623      That probably could (should) be changed, provided care is taken
4624      with respect to bpstat_explains_signal).  */
4625   for (; bs; bs = bs->next)
4626     {
4627       val = print_bp_stop_message (bs);
4628       if (val == PRINT_SRC_ONLY 
4629           || val == PRINT_SRC_AND_LOC 
4630           || val == PRINT_NOTHING)
4631         return val;
4632     }
4633
4634   /* If we had hit a shared library event breakpoint,
4635      print_bp_stop_message would print out this message.  If we hit an
4636      OS-level shared library event, do the same thing.  */
4637   if (kind == TARGET_WAITKIND_LOADED)
4638     {
4639       print_solib_event (0);
4640       return PRINT_NOTHING;
4641     }
4642
4643   /* We reached the end of the chain, or we got a null BS to start
4644      with and nothing was printed.  */
4645   return PRINT_UNKNOWN;
4646 }
4647
4648 /* Evaluate the boolean expression EXP and return the result.  */
4649
4650 static bool
4651 breakpoint_cond_eval (expression *exp)
4652 {
4653   struct value *mark = value_mark ();
4654   bool res = value_true (evaluate_expression (exp));
4655
4656   value_free_to_mark (mark);
4657   return res;
4658 }
4659
4660 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4661
4662 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4663   : next (NULL),
4664     bp_location_at (bl),
4665     breakpoint_at (bl->owner),
4666     commands (NULL),
4667     print (0),
4668     stop (0),
4669     print_it (print_it_normal)
4670 {
4671   incref_bp_location (bl);
4672   **bs_link_pointer = this;
4673   *bs_link_pointer = &next;
4674 }
4675
4676 bpstats::bpstats ()
4677   : next (NULL),
4678     bp_location_at (NULL),
4679     breakpoint_at (NULL),
4680     commands (NULL),
4681     print (0),
4682     stop (0),
4683     print_it (print_it_normal)
4684 {
4685 }
4686 \f
4687 /* The target has stopped with waitstatus WS.  Check if any hardware
4688    watchpoints have triggered, according to the target.  */
4689
4690 int
4691 watchpoints_triggered (struct target_waitstatus *ws)
4692 {
4693   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4694   CORE_ADDR addr;
4695   struct breakpoint *b;
4696
4697   if (!stopped_by_watchpoint)
4698     {
4699       /* We were not stopped by a watchpoint.  Mark all watchpoints
4700          as not triggered.  */
4701       ALL_BREAKPOINTS (b)
4702         if (is_hardware_watchpoint (b))
4703           {
4704             struct watchpoint *w = (struct watchpoint *) b;
4705
4706             w->watchpoint_triggered = watch_triggered_no;
4707           }
4708
4709       return 0;
4710     }
4711
4712   if (!target_stopped_data_address (current_top_target (), &addr))
4713     {
4714       /* We were stopped by a watchpoint, but we don't know where.
4715          Mark all watchpoints as unknown.  */
4716       ALL_BREAKPOINTS (b)
4717         if (is_hardware_watchpoint (b))
4718           {
4719             struct watchpoint *w = (struct watchpoint *) b;
4720
4721             w->watchpoint_triggered = watch_triggered_unknown;
4722           }
4723
4724       return 1;
4725     }
4726
4727   /* The target could report the data address.  Mark watchpoints
4728      affected by this data address as triggered, and all others as not
4729      triggered.  */
4730
4731   ALL_BREAKPOINTS (b)
4732     if (is_hardware_watchpoint (b))
4733       {
4734         struct watchpoint *w = (struct watchpoint *) b;
4735         struct bp_location *loc;
4736
4737         w->watchpoint_triggered = watch_triggered_no;
4738         for (loc = b->loc; loc; loc = loc->next)
4739           {
4740             if (is_masked_watchpoint (b))
4741               {
4742                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4743                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4744
4745                 if (newaddr == start)
4746                   {
4747                     w->watchpoint_triggered = watch_triggered_yes;
4748                     break;
4749                   }
4750               }
4751             /* Exact match not required.  Within range is sufficient.  */
4752             else if (target_watchpoint_addr_within_range (current_top_target (),
4753                                                          addr, loc->address,
4754                                                          loc->length))
4755               {
4756                 w->watchpoint_triggered = watch_triggered_yes;
4757                 break;
4758               }
4759           }
4760       }
4761
4762   return 1;
4763 }
4764
4765 /* Possible return values for watchpoint_check.  */
4766 enum wp_check_result
4767   {
4768     /* The watchpoint has been deleted.  */
4769     WP_DELETED = 1,
4770
4771     /* The value has changed.  */
4772     WP_VALUE_CHANGED = 2,
4773
4774     /* The value has not changed.  */
4775     WP_VALUE_NOT_CHANGED = 3,
4776
4777     /* Ignore this watchpoint, no matter if the value changed or not.  */
4778     WP_IGNORE = 4,
4779   };
4780
4781 #define BP_TEMPFLAG 1
4782 #define BP_HARDWAREFLAG 2
4783
4784 /* Evaluate watchpoint condition expression and check if its value
4785    changed.  */
4786
4787 static wp_check_result
4788 watchpoint_check (bpstat bs)
4789 {
4790   struct watchpoint *b;
4791   struct frame_info *fr;
4792   int within_current_scope;
4793
4794   /* BS is built from an existing struct breakpoint.  */
4795   gdb_assert (bs->breakpoint_at != NULL);
4796   b = (struct watchpoint *) bs->breakpoint_at;
4797
4798   /* If this is a local watchpoint, we only want to check if the
4799      watchpoint frame is in scope if the current thread is the thread
4800      that was used to create the watchpoint.  */
4801   if (!watchpoint_in_thread_scope (b))
4802     return WP_IGNORE;
4803
4804   if (b->exp_valid_block == NULL)
4805     within_current_scope = 1;
4806   else
4807     {
4808       struct frame_info *frame = get_current_frame ();
4809       struct gdbarch *frame_arch = get_frame_arch (frame);
4810       CORE_ADDR frame_pc = get_frame_pc (frame);
4811
4812       /* stack_frame_destroyed_p() returns a non-zero value if we're
4813          still in the function but the stack frame has already been
4814          invalidated.  Since we can't rely on the values of local
4815          variables after the stack has been destroyed, we are treating
4816          the watchpoint in that state as `not changed' without further
4817          checking.  Don't mark watchpoints as changed if the current
4818          frame is in an epilogue - even if they are in some other
4819          frame, our view of the stack is likely to be wrong and
4820          frame_find_by_id could error out.  */
4821       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4822         return WP_IGNORE;
4823
4824       fr = frame_find_by_id (b->watchpoint_frame);
4825       within_current_scope = (fr != NULL);
4826
4827       /* If we've gotten confused in the unwinder, we might have
4828          returned a frame that can't describe this variable.  */
4829       if (within_current_scope)
4830         {
4831           struct symbol *function;
4832
4833           function = get_frame_function (fr);
4834           if (function == NULL
4835               || !contained_in (b->exp_valid_block,
4836                                 SYMBOL_BLOCK_VALUE (function)))
4837             within_current_scope = 0;
4838         }
4839
4840       if (within_current_scope)
4841         /* If we end up stopping, the current frame will get selected
4842            in normal_stop.  So this call to select_frame won't affect
4843            the user.  */
4844         select_frame (fr);
4845     }
4846
4847   if (within_current_scope)
4848     {
4849       /* We use value_{,free_to_}mark because it could be a *long*
4850          time before we return to the command level and call
4851          free_all_values.  We can't call free_all_values because we
4852          might be in the middle of evaluating a function call.  */
4853
4854       int pc = 0;
4855       struct value *mark;
4856       struct value *new_val;
4857
4858       if (is_masked_watchpoint (b))
4859         /* Since we don't know the exact trigger address (from
4860            stopped_data_address), just tell the user we've triggered
4861            a mask watchpoint.  */
4862         return WP_VALUE_CHANGED;
4863
4864       mark = value_mark ();
4865       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4866
4867       if (b->val_bitsize != 0)
4868         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4869
4870       /* We use value_equal_contents instead of value_equal because
4871          the latter coerces an array to a pointer, thus comparing just
4872          the address of the array instead of its contents.  This is
4873          not what we want.  */
4874       if ((b->val != NULL) != (new_val != NULL)
4875           || (b->val != NULL && !value_equal_contents (b->val.get (),
4876                                                        new_val)))
4877         {
4878           bs->old_val = b->val;
4879           b->val = release_value (new_val);
4880           b->val_valid = 1;
4881           if (new_val != NULL)
4882             value_free_to_mark (mark);
4883           return WP_VALUE_CHANGED;
4884         }
4885       else
4886         {
4887           /* Nothing changed.  */
4888           value_free_to_mark (mark);
4889           return WP_VALUE_NOT_CHANGED;
4890         }
4891     }
4892   else
4893     {
4894       /* This seems like the only logical thing to do because
4895          if we temporarily ignored the watchpoint, then when
4896          we reenter the block in which it is valid it contains
4897          garbage (in the case of a function, it may have two
4898          garbage values, one before and one after the prologue).
4899          So we can't even detect the first assignment to it and
4900          watch after that (since the garbage may or may not equal
4901          the first value assigned).  */
4902       /* We print all the stop information in
4903          breakpoint_ops->print_it, but in this case, by the time we
4904          call breakpoint_ops->print_it this bp will be deleted
4905          already.  So we have no choice but print the information
4906          here.  */
4907
4908       SWITCH_THRU_ALL_UIS ()
4909         {
4910           struct ui_out *uiout = current_uiout;
4911
4912           if (uiout->is_mi_like_p ())
4913             uiout->field_string
4914               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4915           uiout->text ("\nWatchpoint ");
4916           uiout->field_int ("wpnum", b->number);
4917           uiout->text (" deleted because the program has left the block in\n"
4918                        "which its expression is valid.\n");
4919         }
4920
4921       /* Make sure the watchpoint's commands aren't executed.  */
4922       b->commands = NULL;
4923       watchpoint_del_at_next_stop (b);
4924
4925       return WP_DELETED;
4926     }
4927 }
4928
4929 /* Return true if it looks like target has stopped due to hitting
4930    breakpoint location BL.  This function does not check if we should
4931    stop, only if BL explains the stop.  */
4932
4933 static int
4934 bpstat_check_location (const struct bp_location *bl,
4935                        const address_space *aspace, CORE_ADDR bp_addr,
4936                        const struct target_waitstatus *ws)
4937 {
4938   struct breakpoint *b = bl->owner;
4939
4940   /* BL is from an existing breakpoint.  */
4941   gdb_assert (b != NULL);
4942
4943   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4944 }
4945
4946 /* Determine if the watched values have actually changed, and we
4947    should stop.  If not, set BS->stop to 0.  */
4948
4949 static void
4950 bpstat_check_watchpoint (bpstat bs)
4951 {
4952   const struct bp_location *bl;
4953   struct watchpoint *b;
4954
4955   /* BS is built for existing struct breakpoint.  */
4956   bl = bs->bp_location_at;
4957   gdb_assert (bl != NULL);
4958   b = (struct watchpoint *) bs->breakpoint_at;
4959   gdb_assert (b != NULL);
4960
4961     {
4962       int must_check_value = 0;
4963       
4964       if (b->type == bp_watchpoint)
4965         /* For a software watchpoint, we must always check the
4966            watched value.  */
4967         must_check_value = 1;
4968       else if (b->watchpoint_triggered == watch_triggered_yes)
4969         /* We have a hardware watchpoint (read, write, or access)
4970            and the target earlier reported an address watched by
4971            this watchpoint.  */
4972         must_check_value = 1;
4973       else if (b->watchpoint_triggered == watch_triggered_unknown
4974                && b->type == bp_hardware_watchpoint)
4975         /* We were stopped by a hardware watchpoint, but the target could
4976            not report the data address.  We must check the watchpoint's
4977            value.  Access and read watchpoints are out of luck; without
4978            a data address, we can't figure it out.  */
4979         must_check_value = 1;
4980
4981       if (must_check_value)
4982         {
4983           wp_check_result e;
4984
4985           try
4986             {
4987               e = watchpoint_check (bs);
4988             }
4989           catch (const gdb_exception &ex)
4990             {
4991               exception_fprintf (gdb_stderr, ex,
4992                                  "Error evaluating expression "
4993                                  "for watchpoint %d\n",
4994                                  b->number);
4995
4996               SWITCH_THRU_ALL_UIS ()
4997                 {
4998                   printf_filtered (_("Watchpoint %d deleted.\n"),
4999                                    b->number);
5000                 }
5001               watchpoint_del_at_next_stop (b);
5002               e = WP_DELETED;
5003             }
5004
5005           switch (e)
5006             {
5007             case WP_DELETED:
5008               /* We've already printed what needs to be printed.  */
5009               bs->print_it = print_it_done;
5010               /* Stop.  */
5011               break;
5012             case WP_IGNORE:
5013               bs->print_it = print_it_noop;
5014               bs->stop = 0;
5015               break;
5016             case WP_VALUE_CHANGED:
5017               if (b->type == bp_read_watchpoint)
5018                 {
5019                   /* There are two cases to consider here:
5020
5021                      1. We're watching the triggered memory for reads.
5022                      In that case, trust the target, and always report
5023                      the watchpoint hit to the user.  Even though
5024                      reads don't cause value changes, the value may
5025                      have changed since the last time it was read, and
5026                      since we're not trapping writes, we will not see
5027                      those, and as such we should ignore our notion of
5028                      old value.
5029
5030                      2. We're watching the triggered memory for both
5031                      reads and writes.  There are two ways this may
5032                      happen:
5033
5034                      2.1. This is a target that can't break on data
5035                      reads only, but can break on accesses (reads or
5036                      writes), such as e.g., x86.  We detect this case
5037                      at the time we try to insert read watchpoints.
5038
5039                      2.2. Otherwise, the target supports read
5040                      watchpoints, but, the user set an access or write
5041                      watchpoint watching the same memory as this read
5042                      watchpoint.
5043
5044                      If we're watching memory writes as well as reads,
5045                      ignore watchpoint hits when we find that the
5046                      value hasn't changed, as reads don't cause
5047                      changes.  This still gives false positives when
5048                      the program writes the same value to memory as
5049                      what there was already in memory (we will confuse
5050                      it for a read), but it's much better than
5051                      nothing.  */
5052
5053                   int other_write_watchpoint = 0;
5054
5055                   if (bl->watchpoint_type == hw_read)
5056                     {
5057                       struct breakpoint *other_b;
5058
5059                       ALL_BREAKPOINTS (other_b)
5060                         if (other_b->type == bp_hardware_watchpoint
5061                             || other_b->type == bp_access_watchpoint)
5062                           {
5063                             struct watchpoint *other_w =
5064                               (struct watchpoint *) other_b;
5065
5066                             if (other_w->watchpoint_triggered
5067                                 == watch_triggered_yes)
5068                               {
5069                                 other_write_watchpoint = 1;
5070                                 break;
5071                               }
5072                           }
5073                     }
5074
5075                   if (other_write_watchpoint
5076                       || bl->watchpoint_type == hw_access)
5077                     {
5078                       /* We're watching the same memory for writes,
5079                          and the value changed since the last time we
5080                          updated it, so this trap must be for a write.
5081                          Ignore it.  */
5082                       bs->print_it = print_it_noop;
5083                       bs->stop = 0;
5084                     }
5085                 }
5086               break;
5087             case WP_VALUE_NOT_CHANGED:
5088               if (b->type == bp_hardware_watchpoint
5089                   || b->type == bp_watchpoint)
5090                 {
5091                   /* Don't stop: write watchpoints shouldn't fire if
5092                      the value hasn't changed.  */
5093                   bs->print_it = print_it_noop;
5094                   bs->stop = 0;
5095                 }
5096               /* Stop.  */
5097               break;
5098             default:
5099               /* Can't happen.  */
5100               break;
5101             }
5102         }
5103       else      /* must_check_value == 0 */
5104         {
5105           /* This is a case where some watchpoint(s) triggered, but
5106              not at the address of this watchpoint, or else no
5107              watchpoint triggered after all.  So don't print
5108              anything for this watchpoint.  */
5109           bs->print_it = print_it_noop;
5110           bs->stop = 0;
5111         }
5112     }
5113 }
5114
5115 /* For breakpoints that are currently marked as telling gdb to stop,
5116    check conditions (condition proper, frame, thread and ignore count)
5117    of breakpoint referred to by BS.  If we should not stop for this
5118    breakpoint, set BS->stop to 0.  */
5119
5120 static void
5121 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5122 {
5123   const struct bp_location *bl;
5124   struct breakpoint *b;
5125   /* Assume stop.  */
5126   bool condition_result = true;
5127   struct expression *cond;
5128
5129   gdb_assert (bs->stop);
5130
5131   /* BS is built for existing struct breakpoint.  */
5132   bl = bs->bp_location_at;
5133   gdb_assert (bl != NULL);
5134   b = bs->breakpoint_at;
5135   gdb_assert (b != NULL);
5136
5137   /* Even if the target evaluated the condition on its end and notified GDB, we
5138      need to do so again since GDB does not know if we stopped due to a
5139      breakpoint or a single step breakpoint.  */
5140
5141   if (frame_id_p (b->frame_id)
5142       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5143     {
5144       bs->stop = 0;
5145       return;
5146     }
5147
5148   /* If this is a thread/task-specific breakpoint, don't waste cpu
5149      evaluating the condition if this isn't the specified
5150      thread/task.  */
5151   if ((b->thread != -1 && b->thread != thread->global_num)
5152       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5153     {
5154       bs->stop = 0;
5155       return;
5156     }
5157
5158   /* Evaluate extension language breakpoints that have a "stop" method
5159      implemented.  */
5160   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5161
5162   if (is_watchpoint (b))
5163     {
5164       struct watchpoint *w = (struct watchpoint *) b;
5165
5166       cond = w->cond_exp.get ();
5167     }
5168   else
5169     cond = bl->cond.get ();
5170
5171   if (cond && b->disposition != disp_del_at_next_stop)
5172     {
5173       int within_current_scope = 1;
5174       struct watchpoint * w;
5175
5176       /* We use value_mark and value_free_to_mark because it could
5177          be a long time before we return to the command level and
5178          call free_all_values.  We can't call free_all_values
5179          because we might be in the middle of evaluating a
5180          function call.  */
5181       struct value *mark = value_mark ();
5182
5183       if (is_watchpoint (b))
5184         w = (struct watchpoint *) b;
5185       else
5186         w = NULL;
5187
5188       /* Need to select the frame, with all that implies so that
5189          the conditions will have the right context.  Because we
5190          use the frame, we will not see an inlined function's
5191          variables when we arrive at a breakpoint at the start
5192          of the inlined function; the current frame will be the
5193          call site.  */
5194       if (w == NULL || w->cond_exp_valid_block == NULL)
5195         select_frame (get_current_frame ());
5196       else
5197         {
5198           struct frame_info *frame;
5199
5200           /* For local watchpoint expressions, which particular
5201              instance of a local is being watched matters, so we
5202              keep track of the frame to evaluate the expression
5203              in.  To evaluate the condition however, it doesn't
5204              really matter which instantiation of the function
5205              where the condition makes sense triggers the
5206              watchpoint.  This allows an expression like "watch
5207              global if q > 10" set in `func', catch writes to
5208              global on all threads that call `func', or catch
5209              writes on all recursive calls of `func' by a single
5210              thread.  We simply always evaluate the condition in
5211              the innermost frame that's executing where it makes
5212              sense to evaluate the condition.  It seems
5213              intuitive.  */
5214           frame = block_innermost_frame (w->cond_exp_valid_block);
5215           if (frame != NULL)
5216             select_frame (frame);
5217           else
5218             within_current_scope = 0;
5219         }
5220       if (within_current_scope)
5221         {
5222           try
5223             {
5224               condition_result = breakpoint_cond_eval (cond);
5225             }
5226           catch (const gdb_exception &ex)
5227             {
5228               exception_fprintf (gdb_stderr, ex,
5229                                  "Error in testing breakpoint condition:\n");
5230             }
5231         }
5232       else
5233         {
5234           warning (_("Watchpoint condition cannot be tested "
5235                      "in the current scope"));
5236           /* If we failed to set the right context for this
5237              watchpoint, unconditionally report it.  */
5238         }
5239       /* FIXME-someday, should give breakpoint #.  */
5240       value_free_to_mark (mark);
5241     }
5242
5243   if (cond && !condition_result)
5244     {
5245       bs->stop = 0;
5246     }
5247   else if (b->ignore_count > 0)
5248     {
5249       b->ignore_count--;
5250       bs->stop = 0;
5251       /* Increase the hit count even though we don't stop.  */
5252       ++(b->hit_count);
5253       gdb::observers::breakpoint_modified.notify (b);
5254     }   
5255 }
5256
5257 /* Returns true if we need to track moribund locations of LOC's type
5258    on the current target.  */
5259
5260 static int
5261 need_moribund_for_location_type (struct bp_location *loc)
5262 {
5263   return ((loc->loc_type == bp_loc_software_breakpoint
5264            && !target_supports_stopped_by_sw_breakpoint ())
5265           || (loc->loc_type == bp_loc_hardware_breakpoint
5266               && !target_supports_stopped_by_hw_breakpoint ()));
5267 }
5268
5269 /* See breakpoint.h.  */
5270
5271 bpstat
5272 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5273                     const struct target_waitstatus *ws)
5274 {
5275   struct breakpoint *b;
5276   bpstat bs_head = NULL, *bs_link = &bs_head;
5277
5278   ALL_BREAKPOINTS (b)
5279     {
5280       if (!breakpoint_enabled (b))
5281         continue;
5282
5283       for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5284         {
5285           /* For hardware watchpoints, we look only at the first
5286              location.  The watchpoint_check function will work on the
5287              entire expression, not the individual locations.  For
5288              read watchpoints, the watchpoints_triggered function has
5289              checked all locations already.  */
5290           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5291             break;
5292
5293           if (!bl->enabled || bl->shlib_disabled)
5294             continue;
5295
5296           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5297             continue;
5298
5299           /* Come here if it's a watchpoint, or if the break address
5300              matches.  */
5301
5302           bpstat bs = new bpstats (bl, &bs_link);       /* Alloc a bpstat to
5303                                                            explain stop.  */
5304
5305           /* Assume we stop.  Should we find a watchpoint that is not
5306              actually triggered, or if the condition of the breakpoint
5307              evaluates as false, we'll reset 'stop' to 0.  */
5308           bs->stop = 1;
5309           bs->print = 1;
5310
5311           /* If this is a scope breakpoint, mark the associated
5312              watchpoint as triggered so that we will handle the
5313              out-of-scope event.  We'll get to the watchpoint next
5314              iteration.  */
5315           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5316             {
5317               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5318
5319               w->watchpoint_triggered = watch_triggered_yes;
5320             }
5321         }
5322     }
5323
5324   /* Check if a moribund breakpoint explains the stop.  */
5325   if (!target_supports_stopped_by_sw_breakpoint ()
5326       || !target_supports_stopped_by_hw_breakpoint ())
5327     {
5328       for (bp_location *loc : moribund_locations)
5329         {
5330           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5331               && need_moribund_for_location_type (loc))
5332             {
5333               bpstat bs = new bpstats (loc, &bs_link);
5334               /* For hits of moribund locations, we should just proceed.  */
5335               bs->stop = 0;
5336               bs->print = 0;
5337               bs->print_it = print_it_noop;
5338             }
5339         }
5340     }
5341
5342   return bs_head;
5343 }
5344
5345 /* See breakpoint.h.  */
5346
5347 bpstat
5348 bpstat_stop_status (const address_space *aspace,
5349                     CORE_ADDR bp_addr, thread_info *thread,
5350                     const struct target_waitstatus *ws,
5351                     bpstat stop_chain)
5352 {
5353   struct breakpoint *b = NULL;
5354   /* First item of allocated bpstat's.  */
5355   bpstat bs_head = stop_chain;
5356   bpstat bs;
5357   int need_remove_insert;
5358   int removed_any;
5359
5360   /* First, build the bpstat chain with locations that explain a
5361      target stop, while being careful to not set the target running,
5362      as that may invalidate locations (in particular watchpoint
5363      locations are recreated).  Resuming will happen here with
5364      breakpoint conditions or watchpoint expressions that include
5365      inferior function calls.  */
5366   if (bs_head == NULL)
5367     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5368
5369   /* A bit of special processing for shlib breakpoints.  We need to
5370      process solib loading here, so that the lists of loaded and
5371      unloaded libraries are correct before we handle "catch load" and
5372      "catch unload".  */
5373   for (bs = bs_head; bs != NULL; bs = bs->next)
5374     {
5375       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5376         {
5377           handle_solib_event ();
5378           break;
5379         }
5380     }
5381
5382   /* Now go through the locations that caused the target to stop, and
5383      check whether we're interested in reporting this stop to higher
5384      layers, or whether we should resume the target transparently.  */
5385
5386   removed_any = 0;
5387
5388   for (bs = bs_head; bs != NULL; bs = bs->next)
5389     {
5390       if (!bs->stop)
5391         continue;
5392
5393       b = bs->breakpoint_at;
5394       b->ops->check_status (bs);
5395       if (bs->stop)
5396         {
5397           bpstat_check_breakpoint_conditions (bs, thread);
5398
5399           if (bs->stop)
5400             {
5401               ++(b->hit_count);
5402               gdb::observers::breakpoint_modified.notify (b);
5403
5404               /* We will stop here.  */
5405               if (b->disposition == disp_disable)
5406                 {
5407                   --(b->enable_count);
5408                   if (b->enable_count <= 0)
5409                     b->enable_state = bp_disabled;
5410                   removed_any = 1;
5411                 }
5412               if (b->silent)
5413                 bs->print = 0;
5414               bs->commands = b->commands;
5415               if (command_line_is_silent (bs->commands
5416                                           ? bs->commands.get () : NULL))
5417                 bs->print = 0;
5418
5419               b->ops->after_condition_true (bs);
5420             }
5421
5422         }
5423
5424       /* Print nothing for this entry if we don't stop or don't
5425          print.  */
5426       if (!bs->stop || !bs->print)
5427         bs->print_it = print_it_noop;
5428     }
5429
5430   /* If we aren't stopping, the value of some hardware watchpoint may
5431      not have changed, but the intermediate memory locations we are
5432      watching may have.  Don't bother if we're stopping; this will get
5433      done later.  */
5434   need_remove_insert = 0;
5435   if (! bpstat_causes_stop (bs_head))
5436     for (bs = bs_head; bs != NULL; bs = bs->next)
5437       if (!bs->stop
5438           && bs->breakpoint_at
5439           && is_hardware_watchpoint (bs->breakpoint_at))
5440         {
5441           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5442
5443           update_watchpoint (w, 0 /* don't reparse.  */);
5444           need_remove_insert = 1;
5445         }
5446
5447   if (need_remove_insert)
5448     update_global_location_list (UGLL_MAY_INSERT);
5449   else if (removed_any)
5450     update_global_location_list (UGLL_DONT_INSERT);
5451
5452   return bs_head;
5453 }
5454
5455 static void
5456 handle_jit_event (void)
5457 {
5458   struct frame_info *frame;
5459   struct gdbarch *gdbarch;
5460
5461   if (debug_infrun)
5462     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5463
5464   /* Switch terminal for any messages produced by
5465      breakpoint_re_set.  */
5466   target_terminal::ours_for_output ();
5467
5468   frame = get_current_frame ();
5469   gdbarch = get_frame_arch (frame);
5470
5471   jit_event_handler (gdbarch);
5472
5473   target_terminal::inferior ();
5474 }
5475
5476 /* Prepare WHAT final decision for infrun.  */
5477
5478 /* Decide what infrun needs to do with this bpstat.  */
5479
5480 struct bpstat_what
5481 bpstat_what (bpstat bs_head)
5482 {
5483   struct bpstat_what retval;
5484   bpstat bs;
5485
5486   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5487   retval.call_dummy = STOP_NONE;
5488   retval.is_longjmp = false;
5489
5490   for (bs = bs_head; bs != NULL; bs = bs->next)
5491     {
5492       /* Extract this BS's action.  After processing each BS, we check
5493          if its action overrides all we've seem so far.  */
5494       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5495       enum bptype bptype;
5496
5497       if (bs->breakpoint_at == NULL)
5498         {
5499           /* I suspect this can happen if it was a momentary
5500              breakpoint which has since been deleted.  */
5501           bptype = bp_none;
5502         }
5503       else
5504         bptype = bs->breakpoint_at->type;
5505
5506       switch (bptype)
5507         {
5508         case bp_none:
5509           break;
5510         case bp_breakpoint:
5511         case bp_hardware_breakpoint:
5512         case bp_single_step:
5513         case bp_until:
5514         case bp_finish:
5515         case bp_shlib_event:
5516           if (bs->stop)
5517             {
5518               if (bs->print)
5519                 this_action = BPSTAT_WHAT_STOP_NOISY;
5520               else
5521                 this_action = BPSTAT_WHAT_STOP_SILENT;
5522             }
5523           else
5524             this_action = BPSTAT_WHAT_SINGLE;
5525           break;
5526         case bp_watchpoint:
5527         case bp_hardware_watchpoint:
5528         case bp_read_watchpoint:
5529         case bp_access_watchpoint:
5530           if (bs->stop)
5531             {
5532               if (bs->print)
5533                 this_action = BPSTAT_WHAT_STOP_NOISY;
5534               else
5535                 this_action = BPSTAT_WHAT_STOP_SILENT;
5536             }
5537           else
5538             {
5539               /* There was a watchpoint, but we're not stopping.
5540                  This requires no further action.  */
5541             }
5542           break;
5543         case bp_longjmp:
5544         case bp_longjmp_call_dummy:
5545         case bp_exception:
5546           if (bs->stop)
5547             {
5548               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5549               retval.is_longjmp = bptype != bp_exception;
5550             }
5551           else
5552             this_action = BPSTAT_WHAT_SINGLE;
5553           break;
5554         case bp_longjmp_resume:
5555         case bp_exception_resume:
5556           if (bs->stop)
5557             {
5558               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5559               retval.is_longjmp = bptype == bp_longjmp_resume;
5560             }
5561           else
5562             this_action = BPSTAT_WHAT_SINGLE;
5563           break;
5564         case bp_step_resume:
5565           if (bs->stop)
5566             this_action = BPSTAT_WHAT_STEP_RESUME;
5567           else
5568             {
5569               /* It is for the wrong frame.  */
5570               this_action = BPSTAT_WHAT_SINGLE;
5571             }
5572           break;
5573         case bp_hp_step_resume:
5574           if (bs->stop)
5575             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5576           else
5577             {
5578               /* It is for the wrong frame.  */
5579               this_action = BPSTAT_WHAT_SINGLE;
5580             }
5581           break;
5582         case bp_watchpoint_scope:
5583         case bp_thread_event:
5584         case bp_overlay_event:
5585         case bp_longjmp_master:
5586         case bp_std_terminate_master:
5587         case bp_exception_master:
5588           this_action = BPSTAT_WHAT_SINGLE;
5589           break;
5590         case bp_catchpoint:
5591           if (bs->stop)
5592             {
5593               if (bs->print)
5594                 this_action = BPSTAT_WHAT_STOP_NOISY;
5595               else
5596                 this_action = BPSTAT_WHAT_STOP_SILENT;
5597             }
5598           else
5599             {
5600               /* Some catchpoints are implemented with breakpoints.
5601                  For those, we need to step over the breakpoint.  */
5602               if (bs->bp_location_at->loc_type != bp_loc_other)
5603                 this_action = BPSTAT_WHAT_SINGLE;
5604             }
5605           break;
5606         case bp_jit_event:
5607           this_action = BPSTAT_WHAT_SINGLE;
5608           break;
5609         case bp_call_dummy:
5610           /* Make sure the action is stop (silent or noisy),
5611              so infrun.c pops the dummy frame.  */
5612           retval.call_dummy = STOP_STACK_DUMMY;
5613           this_action = BPSTAT_WHAT_STOP_SILENT;
5614           break;
5615         case bp_std_terminate:
5616           /* Make sure the action is stop (silent or noisy),
5617              so infrun.c pops the dummy frame.  */
5618           retval.call_dummy = STOP_STD_TERMINATE;
5619           this_action = BPSTAT_WHAT_STOP_SILENT;
5620           break;
5621         case bp_tracepoint:
5622         case bp_fast_tracepoint:
5623         case bp_static_tracepoint:
5624           /* Tracepoint hits should not be reported back to GDB, and
5625              if one got through somehow, it should have been filtered
5626              out already.  */
5627           internal_error (__FILE__, __LINE__,
5628                           _("bpstat_what: tracepoint encountered"));
5629           break;
5630         case bp_gnu_ifunc_resolver:
5631           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5632           this_action = BPSTAT_WHAT_SINGLE;
5633           break;
5634         case bp_gnu_ifunc_resolver_return:
5635           /* The breakpoint will be removed, execution will restart from the
5636              PC of the former breakpoint.  */
5637           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5638           break;
5639
5640         case bp_dprintf:
5641           if (bs->stop)
5642             this_action = BPSTAT_WHAT_STOP_SILENT;
5643           else
5644             this_action = BPSTAT_WHAT_SINGLE;
5645           break;
5646
5647         default:
5648           internal_error (__FILE__, __LINE__,
5649                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5650         }
5651
5652       retval.main_action = std::max (retval.main_action, this_action);
5653     }
5654
5655   return retval;
5656 }
5657
5658 void
5659 bpstat_run_callbacks (bpstat bs_head)
5660 {
5661   bpstat bs;
5662
5663   for (bs = bs_head; bs != NULL; bs = bs->next)
5664     {
5665       struct breakpoint *b = bs->breakpoint_at;
5666
5667       if (b == NULL)
5668         continue;
5669       switch (b->type)
5670         {
5671         case bp_jit_event:
5672           handle_jit_event ();
5673           break;
5674         case bp_gnu_ifunc_resolver:
5675           gnu_ifunc_resolver_stop (b);
5676           break;
5677         case bp_gnu_ifunc_resolver_return:
5678           gnu_ifunc_resolver_return_stop (b);
5679           break;
5680         }
5681     }
5682 }
5683
5684 /* See breakpoint.h.  */
5685
5686 bool
5687 bpstat_should_step ()
5688 {
5689   struct breakpoint *b;
5690
5691   ALL_BREAKPOINTS (b)
5692     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5693       return true;
5694   return false;
5695 }
5696
5697 /* See breakpoint.h.  */
5698
5699 bool
5700 bpstat_causes_stop (bpstat bs)
5701 {
5702   for (; bs != NULL; bs = bs->next)
5703     if (bs->stop)
5704       return true;
5705
5706   return false;
5707 }
5708
5709 \f
5710
5711 /* Compute a string of spaces suitable to indent the next line
5712    so it starts at the position corresponding to the table column
5713    named COL_NAME in the currently active table of UIOUT.  */
5714
5715 static char *
5716 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5717 {
5718   static char wrap_indent[80];
5719   int i, total_width, width, align;
5720   const char *text;
5721
5722   total_width = 0;
5723   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5724     {
5725       if (strcmp (text, col_name) == 0)
5726         {
5727           gdb_assert (total_width < sizeof wrap_indent);
5728           memset (wrap_indent, ' ', total_width);
5729           wrap_indent[total_width] = 0;
5730
5731           return wrap_indent;
5732         }
5733
5734       total_width += width + 1;
5735     }
5736
5737   return NULL;
5738 }
5739
5740 /* Determine if the locations of this breakpoint will have their conditions
5741    evaluated by the target, host or a mix of both.  Returns the following:
5742
5743     "host": Host evals condition.
5744     "host or target": Host or Target evals condition.
5745     "target": Target evals condition.
5746 */
5747
5748 static const char *
5749 bp_condition_evaluator (struct breakpoint *b)
5750 {
5751   struct bp_location *bl;
5752   char host_evals = 0;
5753   char target_evals = 0;
5754
5755   if (!b)
5756     return NULL;
5757
5758   if (!is_breakpoint (b))
5759     return NULL;
5760
5761   if (gdb_evaluates_breakpoint_condition_p ()
5762       || !target_supports_evaluation_of_breakpoint_conditions ())
5763     return condition_evaluation_host;
5764
5765   for (bl = b->loc; bl; bl = bl->next)
5766     {
5767       if (bl->cond_bytecode)
5768         target_evals++;
5769       else
5770         host_evals++;
5771     }
5772
5773   if (host_evals && target_evals)
5774     return condition_evaluation_both;
5775   else if (target_evals)
5776     return condition_evaluation_target;
5777   else
5778     return condition_evaluation_host;
5779 }
5780
5781 /* Determine the breakpoint location's condition evaluator.  This is
5782    similar to bp_condition_evaluator, but for locations.  */
5783
5784 static const char *
5785 bp_location_condition_evaluator (struct bp_location *bl)
5786 {
5787   if (bl && !is_breakpoint (bl->owner))
5788     return NULL;
5789
5790   if (gdb_evaluates_breakpoint_condition_p ()
5791       || !target_supports_evaluation_of_breakpoint_conditions ())
5792     return condition_evaluation_host;
5793
5794   if (bl && bl->cond_bytecode)
5795     return condition_evaluation_target;
5796   else
5797     return condition_evaluation_host;
5798 }
5799
5800 /* Print the LOC location out of the list of B->LOC locations.  */
5801
5802 static void
5803 print_breakpoint_location (struct breakpoint *b,
5804                            struct bp_location *loc)
5805 {
5806   struct ui_out *uiout = current_uiout;
5807
5808   scoped_restore_current_program_space restore_pspace;
5809
5810   if (loc != NULL && loc->shlib_disabled)
5811     loc = NULL;
5812
5813   if (loc != NULL)
5814     set_current_program_space (loc->pspace);
5815
5816   if (b->display_canonical)
5817     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5818   else if (loc && loc->symtab)
5819     {
5820       const struct symbol *sym = loc->symbol;
5821
5822       if (sym)
5823         {
5824           uiout->text ("in ");
5825           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
5826                                ui_out_style_kind::FUNCTION);
5827           uiout->text (" ");
5828           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5829           uiout->text ("at ");
5830         }
5831       uiout->field_string ("file",
5832                            symtab_to_filename_for_display (loc->symtab),
5833                            ui_out_style_kind::FILE);
5834       uiout->text (":");
5835
5836       if (uiout->is_mi_like_p ())
5837         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5838       
5839       uiout->field_int ("line", loc->line_number);
5840     }
5841   else if (loc)
5842     {
5843       string_file stb;
5844
5845       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5846                               demangle, "");
5847       uiout->field_stream ("at", stb);
5848     }
5849   else
5850     {
5851       uiout->field_string ("pending",
5852                            event_location_to_string (b->location.get ()));
5853       /* If extra_string is available, it could be holding a condition
5854          or dprintf arguments.  In either case, make sure it is printed,
5855          too, but only for non-MI streams.  */
5856       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5857         {
5858           if (b->type == bp_dprintf)
5859             uiout->text (",");
5860           else
5861             uiout->text (" ");
5862           uiout->text (b->extra_string);
5863         }
5864     }
5865
5866   if (loc && is_breakpoint (b)
5867       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5868       && bp_condition_evaluator (b) == condition_evaluation_both)
5869     {
5870       uiout->text (" (");
5871       uiout->field_string ("evaluated-by",
5872                            bp_location_condition_evaluator (loc));
5873       uiout->text (")");
5874     }
5875 }
5876
5877 static const char *
5878 bptype_string (enum bptype type)
5879 {
5880   struct ep_type_description
5881     {
5882       enum bptype type;
5883       const char *description;
5884     };
5885   static struct ep_type_description bptypes[] =
5886   {
5887     {bp_none, "?deleted?"},
5888     {bp_breakpoint, "breakpoint"},
5889     {bp_hardware_breakpoint, "hw breakpoint"},
5890     {bp_single_step, "sw single-step"},
5891     {bp_until, "until"},
5892     {bp_finish, "finish"},
5893     {bp_watchpoint, "watchpoint"},
5894     {bp_hardware_watchpoint, "hw watchpoint"},
5895     {bp_read_watchpoint, "read watchpoint"},
5896     {bp_access_watchpoint, "acc watchpoint"},
5897     {bp_longjmp, "longjmp"},
5898     {bp_longjmp_resume, "longjmp resume"},
5899     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5900     {bp_exception, "exception"},
5901     {bp_exception_resume, "exception resume"},
5902     {bp_step_resume, "step resume"},
5903     {bp_hp_step_resume, "high-priority step resume"},
5904     {bp_watchpoint_scope, "watchpoint scope"},
5905     {bp_call_dummy, "call dummy"},
5906     {bp_std_terminate, "std::terminate"},
5907     {bp_shlib_event, "shlib events"},
5908     {bp_thread_event, "thread events"},
5909     {bp_overlay_event, "overlay events"},
5910     {bp_longjmp_master, "longjmp master"},
5911     {bp_std_terminate_master, "std::terminate master"},
5912     {bp_exception_master, "exception master"},
5913     {bp_catchpoint, "catchpoint"},
5914     {bp_tracepoint, "tracepoint"},
5915     {bp_fast_tracepoint, "fast tracepoint"},
5916     {bp_static_tracepoint, "static tracepoint"},
5917     {bp_dprintf, "dprintf"},
5918     {bp_jit_event, "jit events"},
5919     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5920     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5921   };
5922
5923   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5924       || ((int) type != bptypes[(int) type].type))
5925     internal_error (__FILE__, __LINE__,
5926                     _("bptypes table does not describe type #%d."),
5927                     (int) type);
5928
5929   return bptypes[(int) type].description;
5930 }
5931
5932 /* For MI, output a field named 'thread-groups' with a list as the value.
5933    For CLI, prefix the list with the string 'inf'. */
5934
5935 static void
5936 output_thread_groups (struct ui_out *uiout,
5937                       const char *field_name,
5938                       const std::vector<int> &inf_nums,
5939                       int mi_only)
5940 {
5941   int is_mi = uiout->is_mi_like_p ();
5942
5943   /* For backward compatibility, don't display inferiors in CLI unless
5944      there are several.  Always display them for MI. */
5945   if (!is_mi && mi_only)
5946     return;
5947
5948   ui_out_emit_list list_emitter (uiout, field_name);
5949
5950   for (size_t i = 0; i < inf_nums.size (); i++)
5951     {
5952       if (is_mi)
5953         {
5954           char mi_group[10];
5955
5956           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
5957           uiout->field_string (NULL, mi_group);
5958         }
5959       else
5960         {
5961           if (i == 0)
5962             uiout->text (" inf ");
5963           else
5964             uiout->text (", ");
5965         
5966           uiout->text (plongest (inf_nums[i]));
5967         }
5968     }
5969 }
5970
5971 /* Print B to gdb_stdout.  If RAW_LOC, print raw breakpoint locations
5972    instead of going via breakpoint_ops::print_one.  This makes "maint
5973    info breakpoints" show the software breakpoint locations of
5974    catchpoints, which are considered internal implementation
5975    detail.  */
5976
5977 static void
5978 print_one_breakpoint_location (struct breakpoint *b,
5979                                struct bp_location *loc,
5980                                int loc_number,
5981                                struct bp_location **last_loc,
5982                                int allflag, bool raw_loc)
5983 {
5984   struct command_line *l;
5985   static char bpenables[] = "nynny";
5986
5987   struct ui_out *uiout = current_uiout;
5988   int header_of_multiple = 0;
5989   int part_of_multiple = (loc != NULL);
5990   struct value_print_options opts;
5991
5992   get_user_print_options (&opts);
5993
5994   gdb_assert (!loc || loc_number != 0);
5995   /* See comment in print_one_breakpoint concerning treatment of
5996      breakpoints with single disabled location.  */
5997   if (loc == NULL 
5998       && (b->loc != NULL 
5999           && (b->loc->next != NULL || !b->loc->enabled)))
6000     header_of_multiple = 1;
6001   if (loc == NULL)
6002     loc = b->loc;
6003
6004   annotate_record ();
6005
6006   /* 1 */
6007   annotate_field (0);
6008   if (part_of_multiple)
6009     uiout->field_fmt ("number", "%d.%d", b->number, loc_number);
6010   else
6011     uiout->field_int ("number", b->number);
6012
6013   /* 2 */
6014   annotate_field (1);
6015   if (part_of_multiple)
6016     uiout->field_skip ("type");
6017   else
6018     uiout->field_string ("type", bptype_string (b->type));
6019
6020   /* 3 */
6021   annotate_field (2);
6022   if (part_of_multiple)
6023     uiout->field_skip ("disp");
6024   else
6025     uiout->field_string ("disp", bpdisp_text (b->disposition));
6026
6027   /* 4 */
6028   annotate_field (3);
6029   if (part_of_multiple)
6030     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6031   else
6032     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6033
6034   /* 5 and 6 */
6035   if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
6036     b->ops->print_one (b, last_loc);
6037   else
6038     {
6039       if (is_watchpoint (b))
6040         {
6041           struct watchpoint *w = (struct watchpoint *) b;
6042
6043           /* Field 4, the address, is omitted (which makes the columns
6044              not line up too nicely with the headers, but the effect
6045              is relatively readable).  */
6046           if (opts.addressprint)
6047             uiout->field_skip ("addr");
6048           annotate_field (5);
6049           uiout->field_string ("what", w->exp_string);
6050         }
6051       else if (!is_catchpoint (b) || is_exception_catchpoint (b)
6052                || is_ada_exception_catchpoint (b))
6053         {
6054           if (opts.addressprint)
6055             {
6056               annotate_field (4);
6057               if (header_of_multiple)
6058                 uiout->field_string ("addr", "<MULTIPLE>");
6059               else if (b->loc == NULL || loc->shlib_disabled)
6060                 uiout->field_string ("addr", "<PENDING>");
6061               else
6062                 uiout->field_core_addr ("addr",
6063                                         loc->gdbarch, loc->address);
6064             }
6065           annotate_field (5);
6066           if (!header_of_multiple)
6067             print_breakpoint_location (b, loc);
6068           if (b->loc)
6069             *last_loc = b->loc;
6070         }
6071     }
6072
6073   if (loc != NULL && !header_of_multiple)
6074     {
6075       std::vector<int> inf_nums;
6076       int mi_only = 1;
6077
6078       for (inferior *inf : all_inferiors ())
6079         {
6080           if (inf->pspace == loc->pspace)
6081             inf_nums.push_back (inf->num);
6082         }
6083
6084         /* For backward compatibility, don't display inferiors in CLI unless
6085            there are several.  Always display for MI. */
6086         if (allflag
6087             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6088                 && (number_of_program_spaces () > 1
6089                     || number_of_inferiors () > 1)
6090                 /* LOC is for existing B, it cannot be in
6091                    moribund_locations and thus having NULL OWNER.  */
6092                 && loc->owner->type != bp_catchpoint))
6093         mi_only = 0;
6094       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6095     }
6096
6097   if (!part_of_multiple)
6098     {
6099       if (b->thread != -1)
6100         {
6101           /* FIXME: This seems to be redundant and lost here; see the
6102              "stop only in" line a little further down.  */
6103           uiout->text (" thread ");
6104           uiout->field_int ("thread", b->thread);
6105         }
6106       else if (b->task != 0)
6107         {
6108           uiout->text (" task ");
6109           uiout->field_int ("task", b->task);
6110         }
6111     }
6112
6113   uiout->text ("\n");
6114
6115   if (!part_of_multiple)
6116     b->ops->print_one_detail (b, uiout);
6117
6118   if (part_of_multiple && frame_id_p (b->frame_id))
6119     {
6120       annotate_field (6);
6121       uiout->text ("\tstop only in stack frame at ");
6122       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6123          the frame ID.  */
6124       uiout->field_core_addr ("frame",
6125                               b->gdbarch, b->frame_id.stack_addr);
6126       uiout->text ("\n");
6127     }
6128   
6129   if (!part_of_multiple && b->cond_string)
6130     {
6131       annotate_field (7);
6132       if (is_tracepoint (b))
6133         uiout->text ("\ttrace only if ");
6134       else
6135         uiout->text ("\tstop only if ");
6136       uiout->field_string ("cond", b->cond_string);
6137
6138       /* Print whether the target is doing the breakpoint's condition
6139          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6140       if (is_breakpoint (b)
6141           && breakpoint_condition_evaluation_mode ()
6142           == condition_evaluation_target)
6143         {
6144           uiout->text (" (");
6145           uiout->field_string ("evaluated-by",
6146                                bp_condition_evaluator (b));
6147           uiout->text (" evals)");
6148         }
6149       uiout->text ("\n");
6150     }
6151
6152   if (!part_of_multiple && b->thread != -1)
6153     {
6154       /* FIXME should make an annotation for this.  */
6155       uiout->text ("\tstop only in thread ");
6156       if (uiout->is_mi_like_p ())
6157         uiout->field_int ("thread", b->thread);
6158       else
6159         {
6160           struct thread_info *thr = find_thread_global_id (b->thread);
6161
6162           uiout->field_string ("thread", print_thread_id (thr));
6163         }
6164       uiout->text ("\n");
6165     }
6166   
6167   if (!part_of_multiple)
6168     {
6169       if (b->hit_count)
6170         {
6171           /* FIXME should make an annotation for this.  */
6172           if (is_catchpoint (b))
6173             uiout->text ("\tcatchpoint");
6174           else if (is_tracepoint (b))
6175             uiout->text ("\ttracepoint");
6176           else
6177             uiout->text ("\tbreakpoint");
6178           uiout->text (" already hit ");
6179           uiout->field_int ("times", b->hit_count);
6180           if (b->hit_count == 1)
6181             uiout->text (" time\n");
6182           else
6183             uiout->text (" times\n");
6184         }
6185       else
6186         {
6187           /* Output the count also if it is zero, but only if this is mi.  */
6188           if (uiout->is_mi_like_p ())
6189             uiout->field_int ("times", b->hit_count);
6190         }
6191     }
6192
6193   if (!part_of_multiple && b->ignore_count)
6194     {
6195       annotate_field (8);
6196       uiout->text ("\tignore next ");
6197       uiout->field_int ("ignore", b->ignore_count);
6198       uiout->text (" hits\n");
6199     }
6200
6201   /* Note that an enable count of 1 corresponds to "enable once"
6202      behavior, which is reported by the combination of enablement and
6203      disposition, so we don't need to mention it here.  */
6204   if (!part_of_multiple && b->enable_count > 1)
6205     {
6206       annotate_field (8);
6207       uiout->text ("\tdisable after ");
6208       /* Tweak the wording to clarify that ignore and enable counts
6209          are distinct, and have additive effect.  */
6210       if (b->ignore_count)
6211         uiout->text ("additional ");
6212       else
6213         uiout->text ("next ");
6214       uiout->field_int ("enable", b->enable_count);
6215       uiout->text (" hits\n");
6216     }
6217
6218   if (!part_of_multiple && is_tracepoint (b))
6219     {
6220       struct tracepoint *tp = (struct tracepoint *) b;
6221
6222       if (tp->traceframe_usage)
6223         {
6224           uiout->text ("\ttrace buffer usage ");
6225           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6226           uiout->text (" bytes\n");
6227         }
6228     }
6229
6230   l = b->commands ? b->commands.get () : NULL;
6231   if (!part_of_multiple && l)
6232     {
6233       annotate_field (9);
6234       ui_out_emit_tuple tuple_emitter (uiout, "script");
6235       print_command_lines (uiout, l, 4);
6236     }
6237
6238   if (is_tracepoint (b))
6239     {
6240       struct tracepoint *t = (struct tracepoint *) b;
6241
6242       if (!part_of_multiple && t->pass_count)
6243         {
6244           annotate_field (10);
6245           uiout->text ("\tpass count ");
6246           uiout->field_int ("pass", t->pass_count);
6247           uiout->text (" \n");
6248         }
6249
6250       /* Don't display it when tracepoint or tracepoint location is
6251          pending.   */
6252       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6253         {
6254           annotate_field (11);
6255
6256           if (uiout->is_mi_like_p ())
6257             uiout->field_string ("installed",
6258                                  loc->inserted ? "y" : "n");
6259           else
6260             {
6261               if (loc->inserted)
6262                 uiout->text ("\t");
6263               else
6264                 uiout->text ("\tnot ");
6265               uiout->text ("installed on target\n");
6266             }
6267         }
6268     }
6269
6270   if (uiout->is_mi_like_p () && !part_of_multiple)
6271     {
6272       if (is_watchpoint (b))
6273         {
6274           struct watchpoint *w = (struct watchpoint *) b;
6275
6276           uiout->field_string ("original-location", w->exp_string);
6277         }
6278       else if (b->location != NULL
6279                && event_location_to_string (b->location.get ()) != NULL)
6280         uiout->field_string ("original-location",
6281                              event_location_to_string (b->location.get ()));
6282     }
6283 }
6284
6285 /* See breakpoint.h. */
6286
6287 bool fix_multi_location_breakpoint_output_globally = false;
6288
6289 static void
6290 print_one_breakpoint (struct breakpoint *b,
6291                       struct bp_location **last_loc, 
6292                       int allflag)
6293 {
6294   struct ui_out *uiout = current_uiout;
6295   bool use_fixed_output
6296     = (uiout->test_flags (fix_multi_location_breakpoint_output)
6297        || fix_multi_location_breakpoint_output_globally);
6298
6299   gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
6300   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
6301
6302   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
6303      are outside.  */
6304   if (!use_fixed_output)
6305     bkpt_tuple_emitter.reset ();
6306
6307   /* If this breakpoint has custom print function,
6308      it's already printed.  Otherwise, print individual
6309      locations, if any.  */
6310   if (b->ops == NULL
6311       || b->ops->print_one == NULL
6312       || allflag)
6313     {
6314       /* If breakpoint has a single location that is disabled, we
6315          print it as if it had several locations, since otherwise it's
6316          hard to represent "breakpoint enabled, location disabled"
6317          situation.
6318
6319          Note that while hardware watchpoints have several locations
6320          internally, that's not a property exposed to users.
6321
6322          Likewise, while catchpoints may be implemented with
6323          breakpoints (e.g., catch throw), that's not a property
6324          exposed to users.  We do however display the internal
6325          breakpoint locations with "maint info breakpoints".  */
6326       if (!is_hardware_watchpoint (b)
6327           && (!is_catchpoint (b) || is_exception_catchpoint (b)
6328               || is_ada_exception_catchpoint (b))
6329           && (allflag
6330               || (b->loc && (b->loc->next || !b->loc->enabled))))
6331         {
6332           gdb::optional<ui_out_emit_list> locations_list;
6333
6334           /* For MI version <= 2, keep the behavior where GDB outputs an invalid
6335              MI record.  For later versions, place breakpoint locations in a
6336              list.  */
6337           if (uiout->is_mi_like_p () && use_fixed_output)
6338             locations_list.emplace (uiout, "locations");
6339
6340           int n = 1;
6341           for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
6342             {
6343               ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
6344               print_one_breakpoint_location (b, loc, n, last_loc,
6345                                              allflag, allflag);
6346             }
6347         }
6348     }
6349 }
6350
6351 static int
6352 breakpoint_address_bits (struct breakpoint *b)
6353 {
6354   int print_address_bits = 0;
6355   struct bp_location *loc;
6356
6357   /* Software watchpoints that aren't watching memory don't have an
6358      address to print.  */
6359   if (is_no_memory_software_watchpoint (b))
6360     return 0;
6361
6362   for (loc = b->loc; loc; loc = loc->next)
6363     {
6364       int addr_bit;
6365
6366       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6367       if (addr_bit > print_address_bits)
6368         print_address_bits = addr_bit;
6369     }
6370
6371   return print_address_bits;
6372 }
6373
6374 /* See breakpoint.h.  */
6375
6376 void
6377 print_breakpoint (breakpoint *b)
6378 {
6379   struct bp_location *dummy_loc = NULL;
6380   print_one_breakpoint (b, &dummy_loc, 0);
6381 }
6382
6383 /* Return true if this breakpoint was set by the user, false if it is
6384    internal or momentary.  */
6385
6386 int
6387 user_breakpoint_p (struct breakpoint *b)
6388 {
6389   return b->number > 0;
6390 }
6391
6392 /* See breakpoint.h.  */
6393
6394 int
6395 pending_breakpoint_p (struct breakpoint *b)
6396 {
6397   return b->loc == NULL;
6398 }
6399
6400 /* Print information on breakpoints (including watchpoints and tracepoints).
6401
6402    If non-NULL, BP_NUM_LIST is a list of numbers and number ranges as
6403    understood by number_or_range_parser.  Only breakpoints included in this
6404    list are then printed.
6405
6406    If SHOW_INTERNAL is true, print internal breakpoints.
6407
6408    If FILTER is non-NULL, call it on each breakpoint and only include the
6409    ones for which it returns true.
6410
6411    Return the total number of breakpoints listed.  */
6412
6413 static int
6414 breakpoint_1 (const char *bp_num_list, bool show_internal,
6415               bool (*filter) (const struct breakpoint *))
6416 {
6417   struct breakpoint *b;
6418   struct bp_location *last_loc = NULL;
6419   int nr_printable_breakpoints;
6420   struct value_print_options opts;
6421   int print_address_bits = 0;
6422   int print_type_col_width = 14;
6423   struct ui_out *uiout = current_uiout;
6424
6425   get_user_print_options (&opts);
6426
6427   /* Compute the number of rows in the table, as well as the size
6428      required for address fields.  */
6429   nr_printable_breakpoints = 0;
6430   ALL_BREAKPOINTS (b)
6431     {
6432       /* If we have a filter, only list the breakpoints it accepts.  */
6433       if (filter && !filter (b))
6434         continue;
6435
6436       /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6437          accept.  Skip the others.  */
6438       if (bp_num_list != NULL && *bp_num_list != '\0')
6439         {
6440           if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
6441             continue;
6442           if (!show_internal && !number_is_in_list (bp_num_list, b->number))
6443             continue;
6444         }
6445
6446       if (show_internal || user_breakpoint_p (b))
6447         {
6448           int addr_bit, type_len;
6449
6450           addr_bit = breakpoint_address_bits (b);
6451           if (addr_bit > print_address_bits)
6452             print_address_bits = addr_bit;
6453
6454           type_len = strlen (bptype_string (b->type));
6455           if (type_len > print_type_col_width)
6456             print_type_col_width = type_len;
6457
6458           nr_printable_breakpoints++;
6459         }
6460     }
6461
6462   {
6463     ui_out_emit_table table_emitter (uiout,
6464                                      opts.addressprint ? 6 : 5,
6465                                      nr_printable_breakpoints,
6466                                      "BreakpointTable");
6467
6468     if (nr_printable_breakpoints > 0)
6469       annotate_breakpoints_headers ();
6470     if (nr_printable_breakpoints > 0)
6471       annotate_field (0);
6472     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6473     if (nr_printable_breakpoints > 0)
6474       annotate_field (1);
6475     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6476     if (nr_printable_breakpoints > 0)
6477       annotate_field (2);
6478     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6479     if (nr_printable_breakpoints > 0)
6480       annotate_field (3);
6481     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6482     if (opts.addressprint)
6483       {
6484         if (nr_printable_breakpoints > 0)
6485           annotate_field (4);
6486         if (print_address_bits <= 32)
6487           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6488         else
6489           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6490       }
6491     if (nr_printable_breakpoints > 0)
6492       annotate_field (5);
6493     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6494     uiout->table_body ();
6495     if (nr_printable_breakpoints > 0)
6496       annotate_breakpoints_table ();
6497
6498     ALL_BREAKPOINTS (b)
6499       {
6500         QUIT;
6501         /* If we have a filter, only list the breakpoints it accepts.  */
6502         if (filter && !filter (b))
6503           continue;
6504
6505         /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
6506            accept.  Skip the others.  */
6507
6508         if (bp_num_list != NULL && *bp_num_list != '\0')
6509           {
6510             if (show_internal)  /* maintenance info breakpoint */
6511               {
6512                 if (parse_and_eval_long (bp_num_list) != b->number)
6513                   continue;
6514               }
6515             else                /* all others */
6516               {
6517                 if (!number_is_in_list (bp_num_list, b->number))
6518                   continue;
6519               }
6520           }
6521         /* We only print out user settable breakpoints unless the
6522            show_internal is set.  */
6523         if (show_internal || user_breakpoint_p (b))
6524           print_one_breakpoint (b, &last_loc, show_internal);
6525       }
6526   }
6527
6528   if (nr_printable_breakpoints == 0)
6529     {
6530       /* If there's a filter, let the caller decide how to report
6531          empty list.  */
6532       if (!filter)
6533         {
6534           if (bp_num_list == NULL || *bp_num_list == '\0')
6535             uiout->message ("No breakpoints or watchpoints.\n");
6536           else
6537             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6538                             bp_num_list);
6539         }
6540     }
6541   else
6542     {
6543       if (last_loc && !server_command)
6544         set_next_address (last_loc->gdbarch, last_loc->address);
6545     }
6546
6547   /* FIXME?  Should this be moved up so that it is only called when
6548      there have been breakpoints? */
6549   annotate_breakpoints_table_end ();
6550
6551   return nr_printable_breakpoints;
6552 }
6553
6554 /* Display the value of default-collect in a way that is generally
6555    compatible with the breakpoint list.  */
6556
6557 static void
6558 default_collect_info (void)
6559 {
6560   struct ui_out *uiout = current_uiout;
6561
6562   /* If it has no value (which is frequently the case), say nothing; a
6563      message like "No default-collect." gets in user's face when it's
6564      not wanted.  */
6565   if (!*default_collect)
6566     return;
6567
6568   /* The following phrase lines up nicely with per-tracepoint collect
6569      actions.  */
6570   uiout->text ("default collect ");
6571   uiout->field_string ("default-collect", default_collect);
6572   uiout->text (" \n");
6573 }
6574   
6575 static void
6576 info_breakpoints_command (const char *args, int from_tty)
6577 {
6578   breakpoint_1 (args, false, NULL);
6579
6580   default_collect_info ();
6581 }
6582
6583 static void
6584 info_watchpoints_command (const char *args, int from_tty)
6585 {
6586   int num_printed = breakpoint_1 (args, false, is_watchpoint);
6587   struct ui_out *uiout = current_uiout;
6588
6589   if (num_printed == 0)
6590     {
6591       if (args == NULL || *args == '\0')
6592         uiout->message ("No watchpoints.\n");
6593       else
6594         uiout->message ("No watchpoint matching '%s'.\n", args);
6595     }
6596 }
6597
6598 static void
6599 maintenance_info_breakpoints (const char *args, int from_tty)
6600 {
6601   breakpoint_1 (args, true, NULL);
6602
6603   default_collect_info ();
6604 }
6605
6606 static int
6607 breakpoint_has_pc (struct breakpoint *b,
6608                    struct program_space *pspace,
6609                    CORE_ADDR pc, struct obj_section *section)
6610 {
6611   struct bp_location *bl = b->loc;
6612
6613   for (; bl; bl = bl->next)
6614     {
6615       if (bl->pspace == pspace
6616           && bl->address == pc
6617           && (!overlay_debugging || bl->section == section))
6618         return 1;         
6619     }
6620   return 0;
6621 }
6622
6623 /* Print a message describing any user-breakpoints set at PC.  This
6624    concerns with logical breakpoints, so we match program spaces, not
6625    address spaces.  */
6626
6627 static void
6628 describe_other_breakpoints (struct gdbarch *gdbarch,
6629                             struct program_space *pspace, CORE_ADDR pc,
6630                             struct obj_section *section, int thread)
6631 {
6632   int others = 0;
6633   struct breakpoint *b;
6634
6635   ALL_BREAKPOINTS (b)
6636     others += (user_breakpoint_p (b)
6637                && breakpoint_has_pc (b, pspace, pc, section));
6638   if (others > 0)
6639     {
6640       if (others == 1)
6641         printf_filtered (_("Note: breakpoint "));
6642       else /* if (others == ???) */
6643         printf_filtered (_("Note: breakpoints "));
6644       ALL_BREAKPOINTS (b)
6645         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6646           {
6647             others--;
6648             printf_filtered ("%d", b->number);
6649             if (b->thread == -1 && thread != -1)
6650               printf_filtered (" (all threads)");
6651             else if (b->thread != -1)
6652               printf_filtered (" (thread %d)", b->thread);
6653             printf_filtered ("%s%s ",
6654                              ((b->enable_state == bp_disabled
6655                                || b->enable_state == bp_call_disabled)
6656                               ? " (disabled)"
6657                               : ""),
6658                              (others > 1) ? "," 
6659                              : ((others == 1) ? " and" : ""));
6660           }
6661       printf_filtered (_("also set at pc "));
6662       fputs_styled (paddress (gdbarch, pc), address_style.style (), gdb_stdout);
6663       printf_filtered (".\n");
6664     }
6665 }
6666 \f
6667
6668 /* Return true iff it is meaningful to use the address member of LOC.
6669    For some breakpoint types, the locations' address members are
6670    irrelevant and it makes no sense to attempt to compare them to
6671    other addresses (or use them for any other purpose either).
6672
6673    More specifically, software watchpoints and catchpoints that are
6674    not backed by breakpoints always have a zero valued location
6675    address and we don't want to mark breakpoints of any of these types
6676    to be a duplicate of an actual breakpoint location at address
6677    zero.  */
6678
6679 static bool
6680 bl_address_is_meaningful (bp_location *loc)
6681 {
6682   return loc->loc_type != bp_loc_other;
6683 }
6684
6685 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6686    true if LOC1 and LOC2 represent the same watchpoint location.  */
6687
6688 static int
6689 watchpoint_locations_match (struct bp_location *loc1, 
6690                             struct bp_location *loc2)
6691 {
6692   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6693   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6694
6695   /* Both of them must exist.  */
6696   gdb_assert (w1 != NULL);
6697   gdb_assert (w2 != NULL);
6698
6699   /* If the target can evaluate the condition expression in hardware,
6700      then we we need to insert both watchpoints even if they are at
6701      the same place.  Otherwise the watchpoint will only trigger when
6702      the condition of whichever watchpoint was inserted evaluates to
6703      true, not giving a chance for GDB to check the condition of the
6704      other watchpoint.  */
6705   if ((w1->cond_exp
6706        && target_can_accel_watchpoint_condition (loc1->address, 
6707                                                  loc1->length,
6708                                                  loc1->watchpoint_type,
6709                                                  w1->cond_exp.get ()))
6710       || (w2->cond_exp
6711           && target_can_accel_watchpoint_condition (loc2->address, 
6712                                                     loc2->length,
6713                                                     loc2->watchpoint_type,
6714                                                     w2->cond_exp.get ())))
6715     return 0;
6716
6717   /* Note that this checks the owner's type, not the location's.  In
6718      case the target does not support read watchpoints, but does
6719      support access watchpoints, we'll have bp_read_watchpoint
6720      watchpoints with hw_access locations.  Those should be considered
6721      duplicates of hw_read locations.  The hw_read locations will
6722      become hw_access locations later.  */
6723   return (loc1->owner->type == loc2->owner->type
6724           && loc1->pspace->aspace == loc2->pspace->aspace
6725           && loc1->address == loc2->address
6726           && loc1->length == loc2->length);
6727 }
6728
6729 /* See breakpoint.h.  */
6730
6731 int
6732 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6733                           const address_space *aspace2, CORE_ADDR addr2)
6734 {
6735   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6736            || aspace1 == aspace2)
6737           && addr1 == addr2);
6738 }
6739
6740 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6741    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6742    matches ASPACE2.  On targets that have global breakpoints, the address
6743    space doesn't really matter.  */
6744
6745 static int
6746 breakpoint_address_match_range (const address_space *aspace1,
6747                                 CORE_ADDR addr1,
6748                                 int len1, const address_space *aspace2,
6749                                 CORE_ADDR addr2)
6750 {
6751   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6752            || aspace1 == aspace2)
6753           && addr2 >= addr1 && addr2 < addr1 + len1);
6754 }
6755
6756 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6757    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6758    matches the breakpoint's address space.  On targets that have global
6759    breakpoints, the address space doesn't really matter.  */
6760
6761 static int
6762 breakpoint_location_address_match (struct bp_location *bl,
6763                                    const address_space *aspace,
6764                                    CORE_ADDR addr)
6765 {
6766   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6767                                     aspace, addr)
6768           || (bl->length
6769               && breakpoint_address_match_range (bl->pspace->aspace,
6770                                                  bl->address, bl->length,
6771                                                  aspace, addr)));
6772 }
6773
6774 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6775    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6776    match happens only if ASPACE matches the breakpoint's address
6777    space.  On targets that have global breakpoints, the address space
6778    doesn't really matter.  */
6779
6780 static int
6781 breakpoint_location_address_range_overlap (struct bp_location *bl,
6782                                            const address_space *aspace,
6783                                            CORE_ADDR addr, int len)
6784 {
6785   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6786       || bl->pspace->aspace == aspace)
6787     {
6788       int bl_len = bl->length != 0 ? bl->length : 1;
6789
6790       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6791         return 1;
6792     }
6793   return 0;
6794 }
6795
6796 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6797    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6798    true, otherwise returns false.  */
6799
6800 static int
6801 tracepoint_locations_match (struct bp_location *loc1,
6802                             struct bp_location *loc2)
6803 {
6804   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6805     /* Since tracepoint locations are never duplicated with others', tracepoint
6806        locations at the same address of different tracepoints are regarded as
6807        different locations.  */
6808     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6809   else
6810     return 0;
6811 }
6812
6813 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6814    (bl_address_is_meaningful), returns true if LOC1 and LOC2 represent
6815    the same location.  */
6816
6817 static int
6818 breakpoint_locations_match (struct bp_location *loc1, 
6819                             struct bp_location *loc2)
6820 {
6821   int hw_point1, hw_point2;
6822
6823   /* Both of them must not be in moribund_locations.  */
6824   gdb_assert (loc1->owner != NULL);
6825   gdb_assert (loc2->owner != NULL);
6826
6827   hw_point1 = is_hardware_watchpoint (loc1->owner);
6828   hw_point2 = is_hardware_watchpoint (loc2->owner);
6829
6830   if (hw_point1 != hw_point2)
6831     return 0;
6832   else if (hw_point1)
6833     return watchpoint_locations_match (loc1, loc2);
6834   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6835     return tracepoint_locations_match (loc1, loc2);
6836   else
6837     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6838     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6839                                      loc2->pspace->aspace, loc2->address)
6840             && loc1->length == loc2->length);
6841 }
6842
6843 static void
6844 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6845                                int bnum, int have_bnum)
6846 {
6847   /* The longest string possibly returned by hex_string_custom
6848      is 50 chars.  These must be at least that big for safety.  */
6849   char astr1[64];
6850   char astr2[64];
6851
6852   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6853   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6854   if (have_bnum)
6855     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6856              bnum, astr1, astr2);
6857   else
6858     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6859 }
6860
6861 /* Adjust a breakpoint's address to account for architectural
6862    constraints on breakpoint placement.  Return the adjusted address.
6863    Note: Very few targets require this kind of adjustment.  For most
6864    targets, this function is simply the identity function.  */
6865
6866 static CORE_ADDR
6867 adjust_breakpoint_address (struct gdbarch *gdbarch,
6868                            CORE_ADDR bpaddr, enum bptype bptype)
6869 {
6870   if (bptype == bp_watchpoint
6871       || bptype == bp_hardware_watchpoint
6872       || bptype == bp_read_watchpoint
6873       || bptype == bp_access_watchpoint
6874       || bptype == bp_catchpoint)
6875     {
6876       /* Watchpoints and the various bp_catch_* eventpoints should not
6877          have their addresses modified.  */
6878       return bpaddr;
6879     }
6880   else if (bptype == bp_single_step)
6881     {
6882       /* Single-step breakpoints should not have their addresses
6883          modified.  If there's any architectural constrain that
6884          applies to this address, then it should have already been
6885          taken into account when the breakpoint was created in the
6886          first place.  If we didn't do this, stepping through e.g.,
6887          Thumb-2 IT blocks would break.  */
6888       return bpaddr;
6889     }
6890   else
6891     {
6892       CORE_ADDR adjusted_bpaddr = bpaddr;
6893
6894       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6895         {
6896           /* Some targets have architectural constraints on the placement
6897              of breakpoint instructions.  Obtain the adjusted address.  */
6898           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6899         }
6900
6901       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6902
6903       /* An adjusted breakpoint address can significantly alter
6904          a user's expectations.  Print a warning if an adjustment
6905          is required.  */
6906       if (adjusted_bpaddr != bpaddr)
6907         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6908
6909       return adjusted_bpaddr;
6910     }
6911 }
6912
6913 static bp_loc_type
6914 bp_location_from_bp_type (bptype type)
6915 {
6916   switch (type)
6917     {
6918     case bp_breakpoint:
6919     case bp_single_step:
6920     case bp_until:
6921     case bp_finish:
6922     case bp_longjmp:
6923     case bp_longjmp_resume:
6924     case bp_longjmp_call_dummy:
6925     case bp_exception:
6926     case bp_exception_resume:
6927     case bp_step_resume:
6928     case bp_hp_step_resume:
6929     case bp_watchpoint_scope:
6930     case bp_call_dummy:
6931     case bp_std_terminate:
6932     case bp_shlib_event:
6933     case bp_thread_event:
6934     case bp_overlay_event:
6935     case bp_jit_event:
6936     case bp_longjmp_master:
6937     case bp_std_terminate_master:
6938     case bp_exception_master:
6939     case bp_gnu_ifunc_resolver:
6940     case bp_gnu_ifunc_resolver_return:
6941     case bp_dprintf:
6942       return bp_loc_software_breakpoint;
6943     case bp_hardware_breakpoint:
6944       return bp_loc_hardware_breakpoint;
6945     case bp_hardware_watchpoint:
6946     case bp_read_watchpoint:
6947     case bp_access_watchpoint:
6948       return bp_loc_hardware_watchpoint;
6949     case bp_watchpoint:
6950     case bp_catchpoint:
6951     case bp_tracepoint:
6952     case bp_fast_tracepoint:
6953     case bp_static_tracepoint:
6954       return bp_loc_other;
6955     default:
6956       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6957     }
6958 }
6959
6960 bp_location::bp_location (breakpoint *owner, bp_loc_type type)
6961 {
6962   this->owner = owner;
6963   this->cond_bytecode = NULL;
6964   this->shlib_disabled = 0;
6965   this->enabled = 1;
6966
6967   this->loc_type = type;
6968
6969   if (this->loc_type == bp_loc_software_breakpoint
6970       || this->loc_type == bp_loc_hardware_breakpoint)
6971     mark_breakpoint_location_modified (this);
6972
6973   this->refc = 1;
6974 }
6975
6976 bp_location::bp_location (breakpoint *owner)
6977   : bp_location::bp_location (owner,
6978                               bp_location_from_bp_type (owner->type))
6979 {
6980 }
6981
6982 /* Allocate a struct bp_location.  */
6983
6984 static struct bp_location *
6985 allocate_bp_location (struct breakpoint *bpt)
6986 {
6987   return bpt->ops->allocate_location (bpt);
6988 }
6989
6990 static void
6991 free_bp_location (struct bp_location *loc)
6992 {
6993   delete loc;
6994 }
6995
6996 /* Increment reference count.  */
6997
6998 static void
6999 incref_bp_location (struct bp_location *bl)
7000 {
7001   ++bl->refc;
7002 }
7003
7004 /* Decrement reference count.  If the reference count reaches 0,
7005    destroy the bp_location.  Sets *BLP to NULL.  */
7006
7007 static void
7008 decref_bp_location (struct bp_location **blp)
7009 {
7010   gdb_assert ((*blp)->refc > 0);
7011
7012   if (--(*blp)->refc == 0)
7013     free_bp_location (*blp);
7014   *blp = NULL;
7015 }
7016
7017 /* Add breakpoint B at the end of the global breakpoint chain.  */
7018
7019 static breakpoint *
7020 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7021 {
7022   struct breakpoint *b1;
7023   struct breakpoint *result = b.get ();
7024
7025   /* Add this breakpoint to the end of the chain so that a list of
7026      breakpoints will come out in order of increasing numbers.  */
7027
7028   b1 = breakpoint_chain;
7029   if (b1 == 0)
7030     breakpoint_chain = b.release ();
7031   else
7032     {
7033       while (b1->next)
7034         b1 = b1->next;
7035       b1->next = b.release ();
7036     }
7037
7038   return result;
7039 }
7040
7041 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7042
7043 static void
7044 init_raw_breakpoint_without_location (struct breakpoint *b,
7045                                       struct gdbarch *gdbarch,
7046                                       enum bptype bptype,
7047                                       const struct breakpoint_ops *ops)
7048 {
7049   gdb_assert (ops != NULL);
7050
7051   b->ops = ops;
7052   b->type = bptype;
7053   b->gdbarch = gdbarch;
7054   b->language = current_language->la_language;
7055   b->input_radix = input_radix;
7056   b->related_breakpoint = b;
7057 }
7058
7059 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7060    that has type BPTYPE and has no locations as yet.  */
7061
7062 static struct breakpoint *
7063 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7064                                      enum bptype bptype,
7065                                      const struct breakpoint_ops *ops)
7066 {
7067   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7068
7069   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7070   return add_to_breakpoint_chain (std::move (b));
7071 }
7072
7073 /* Initialize loc->function_name.  */
7074
7075 static void
7076 set_breakpoint_location_function (struct bp_location *loc)
7077 {
7078   gdb_assert (loc->owner != NULL);
7079
7080   if (loc->owner->type == bp_breakpoint
7081       || loc->owner->type == bp_hardware_breakpoint
7082       || is_tracepoint (loc->owner))
7083     {
7084       const char *function_name;
7085
7086       if (loc->msymbol != NULL
7087           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7088               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
7089         {
7090           struct breakpoint *b = loc->owner;
7091
7092           function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7093
7094           if (b->type == bp_breakpoint && b->loc == loc
7095               && loc->next == NULL && b->related_breakpoint == b)
7096             {
7097               /* Create only the whole new breakpoint of this type but do not
7098                  mess more complicated breakpoints with multiple locations.  */
7099               b->type = bp_gnu_ifunc_resolver;
7100               /* Remember the resolver's address for use by the return
7101                  breakpoint.  */
7102               loc->related_address = loc->address;
7103             }
7104         }
7105       else
7106         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7107
7108       if (function_name)
7109         loc->function_name = xstrdup (function_name);
7110     }
7111 }
7112
7113 /* Attempt to determine architecture of location identified by SAL.  */
7114 struct gdbarch *
7115 get_sal_arch (struct symtab_and_line sal)
7116 {
7117   if (sal.section)
7118     return get_objfile_arch (sal.section->objfile);
7119   if (sal.symtab)
7120     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7121
7122   return NULL;
7123 }
7124
7125 /* Low level routine for partially initializing a breakpoint of type
7126    BPTYPE.  The newly created breakpoint's address, section, source
7127    file name, and line number are provided by SAL.
7128
7129    It is expected that the caller will complete the initialization of
7130    the newly created breakpoint struct as well as output any status
7131    information regarding the creation of a new breakpoint.  */
7132
7133 static void
7134 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7135                      struct symtab_and_line sal, enum bptype bptype,
7136                      const struct breakpoint_ops *ops)
7137 {
7138   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7139
7140   add_location_to_breakpoint (b, &sal);
7141
7142   if (bptype != bp_catchpoint)
7143     gdb_assert (sal.pspace != NULL);
7144
7145   /* Store the program space that was used to set the breakpoint,
7146      except for ordinary breakpoints, which are independent of the
7147      program space.  */
7148   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7149     b->pspace = sal.pspace;
7150 }
7151
7152 /* set_raw_breakpoint is a low level routine for allocating and
7153    partially initializing a breakpoint of type BPTYPE.  The newly
7154    created breakpoint's address, section, source file name, and line
7155    number are provided by SAL.  The newly created and partially
7156    initialized breakpoint is added to the breakpoint chain and
7157    is also returned as the value of this function.
7158
7159    It is expected that the caller will complete the initialization of
7160    the newly created breakpoint struct as well as output any status
7161    information regarding the creation of a new breakpoint.  In
7162    particular, set_raw_breakpoint does NOT set the breakpoint
7163    number!  Care should be taken to not allow an error to occur
7164    prior to completing the initialization of the breakpoint.  If this
7165    should happen, a bogus breakpoint will be left on the chain.  */
7166
7167 struct breakpoint *
7168 set_raw_breakpoint (struct gdbarch *gdbarch,
7169                     struct symtab_and_line sal, enum bptype bptype,
7170                     const struct breakpoint_ops *ops)
7171 {
7172   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7173
7174   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7175   return add_to_breakpoint_chain (std::move (b));
7176 }
7177
7178 /* Call this routine when stepping and nexting to enable a breakpoint
7179    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7180    initiated the operation.  */
7181
7182 void
7183 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7184 {
7185   struct breakpoint *b, *b_tmp;
7186   int thread = tp->global_num;
7187
7188   /* To avoid having to rescan all objfile symbols at every step,
7189      we maintain a list of continually-inserted but always disabled
7190      longjmp "master" breakpoints.  Here, we simply create momentary
7191      clones of those and enable them for the requested thread.  */
7192   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7193     if (b->pspace == current_program_space
7194         && (b->type == bp_longjmp_master
7195             || b->type == bp_exception_master))
7196       {
7197         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7198         struct breakpoint *clone;
7199
7200         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7201            after their removal.  */
7202         clone = momentary_breakpoint_from_master (b, type,
7203                                                   &momentary_breakpoint_ops, 1);
7204         clone->thread = thread;
7205       }
7206
7207   tp->initiating_frame = frame;
7208 }
7209
7210 /* Delete all longjmp breakpoints from THREAD.  */
7211 void
7212 delete_longjmp_breakpoint (int thread)
7213 {
7214   struct breakpoint *b, *b_tmp;
7215
7216   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7217     if (b->type == bp_longjmp || b->type == bp_exception)
7218       {
7219         if (b->thread == thread)
7220           delete_breakpoint (b);
7221       }
7222 }
7223
7224 void
7225 delete_longjmp_breakpoint_at_next_stop (int thread)
7226 {
7227   struct breakpoint *b, *b_tmp;
7228
7229   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7230     if (b->type == bp_longjmp || b->type == bp_exception)
7231       {
7232         if (b->thread == thread)
7233           b->disposition = disp_del_at_next_stop;
7234       }
7235 }
7236
7237 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7238    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7239    pointer to any of them.  Return NULL if this system cannot place longjmp
7240    breakpoints.  */
7241
7242 struct breakpoint *
7243 set_longjmp_breakpoint_for_call_dummy (void)
7244 {
7245   struct breakpoint *b, *retval = NULL;
7246
7247   ALL_BREAKPOINTS (b)
7248     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7249       {
7250         struct breakpoint *new_b;
7251
7252         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7253                                                   &momentary_breakpoint_ops,
7254                                                   1);
7255         new_b->thread = inferior_thread ()->global_num;
7256
7257         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7258
7259         gdb_assert (new_b->related_breakpoint == new_b);
7260         if (retval == NULL)
7261           retval = new_b;
7262         new_b->related_breakpoint = retval;
7263         while (retval->related_breakpoint != new_b->related_breakpoint)
7264           retval = retval->related_breakpoint;
7265         retval->related_breakpoint = new_b;
7266       }
7267
7268   return retval;
7269 }
7270
7271 /* Verify all existing dummy frames and their associated breakpoints for
7272    TP.  Remove those which can no longer be found in the current frame
7273    stack.
7274
7275    You should call this function only at places where it is safe to currently
7276    unwind the whole stack.  Failed stack unwind would discard live dummy
7277    frames.  */
7278
7279 void
7280 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7281 {
7282   struct breakpoint *b, *b_tmp;
7283
7284   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7285     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7286       {
7287         struct breakpoint *dummy_b = b->related_breakpoint;
7288
7289         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7290           dummy_b = dummy_b->related_breakpoint;
7291         if (dummy_b->type != bp_call_dummy
7292             || frame_find_by_id (dummy_b->frame_id) != NULL)
7293           continue;
7294         
7295         dummy_frame_discard (dummy_b->frame_id, tp);
7296
7297         while (b->related_breakpoint != b)
7298           {
7299             if (b_tmp == b->related_breakpoint)
7300               b_tmp = b->related_breakpoint->next;
7301             delete_breakpoint (b->related_breakpoint);
7302           }
7303         delete_breakpoint (b);
7304       }
7305 }
7306
7307 void
7308 enable_overlay_breakpoints (void)
7309 {
7310   struct breakpoint *b;
7311
7312   ALL_BREAKPOINTS (b)
7313     if (b->type == bp_overlay_event)
7314     {
7315       b->enable_state = bp_enabled;
7316       update_global_location_list (UGLL_MAY_INSERT);
7317       overlay_events_enabled = 1;
7318     }
7319 }
7320
7321 void
7322 disable_overlay_breakpoints (void)
7323 {
7324   struct breakpoint *b;
7325
7326   ALL_BREAKPOINTS (b)
7327     if (b->type == bp_overlay_event)
7328     {
7329       b->enable_state = bp_disabled;
7330       update_global_location_list (UGLL_DONT_INSERT);
7331       overlay_events_enabled = 0;
7332     }
7333 }
7334
7335 /* Set an active std::terminate breakpoint for each std::terminate
7336    master breakpoint.  */
7337 void
7338 set_std_terminate_breakpoint (void)
7339 {
7340   struct breakpoint *b, *b_tmp;
7341
7342   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7343     if (b->pspace == current_program_space
7344         && b->type == bp_std_terminate_master)
7345       {
7346         momentary_breakpoint_from_master (b, bp_std_terminate,
7347                                           &momentary_breakpoint_ops, 1);
7348       }
7349 }
7350
7351 /* Delete all the std::terminate breakpoints.  */
7352 void
7353 delete_std_terminate_breakpoint (void)
7354 {
7355   struct breakpoint *b, *b_tmp;
7356
7357   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7358     if (b->type == bp_std_terminate)
7359       delete_breakpoint (b);
7360 }
7361
7362 struct breakpoint *
7363 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7364 {
7365   struct breakpoint *b;
7366
7367   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7368                                   &internal_breakpoint_ops);
7369
7370   b->enable_state = bp_enabled;
7371   /* location has to be used or breakpoint_re_set will delete me.  */
7372   b->location = new_address_location (b->loc->address, NULL, 0);
7373
7374   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7375
7376   return b;
7377 }
7378
7379 struct lang_and_radix
7380   {
7381     enum language lang;
7382     int radix;
7383   };
7384
7385 /* Create a breakpoint for JIT code registration and unregistration.  */
7386
7387 struct breakpoint *
7388 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7389 {
7390   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7391                                      &internal_breakpoint_ops);
7392 }
7393
7394 /* Remove JIT code registration and unregistration breakpoint(s).  */
7395
7396 void
7397 remove_jit_event_breakpoints (void)
7398 {
7399   struct breakpoint *b, *b_tmp;
7400
7401   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7402     if (b->type == bp_jit_event
7403         && b->loc->pspace == current_program_space)
7404       delete_breakpoint (b);
7405 }
7406
7407 void
7408 remove_solib_event_breakpoints (void)
7409 {
7410   struct breakpoint *b, *b_tmp;
7411
7412   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7413     if (b->type == bp_shlib_event
7414         && b->loc->pspace == current_program_space)
7415       delete_breakpoint (b);
7416 }
7417
7418 /* See breakpoint.h.  */
7419
7420 void
7421 remove_solib_event_breakpoints_at_next_stop (void)
7422 {
7423   struct breakpoint *b, *b_tmp;
7424
7425   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7426     if (b->type == bp_shlib_event
7427         && b->loc->pspace == current_program_space)
7428       b->disposition = disp_del_at_next_stop;
7429 }
7430
7431 /* Helper for create_solib_event_breakpoint /
7432    create_and_insert_solib_event_breakpoint.  Allows specifying which
7433    INSERT_MODE to pass through to update_global_location_list.  */
7434
7435 static struct breakpoint *
7436 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7437                                  enum ugll_insert_mode insert_mode)
7438 {
7439   struct breakpoint *b;
7440
7441   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7442                                   &internal_breakpoint_ops);
7443   update_global_location_list_nothrow (insert_mode);
7444   return b;
7445 }
7446
7447 struct breakpoint *
7448 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7449 {
7450   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7451 }
7452
7453 /* See breakpoint.h.  */
7454
7455 struct breakpoint *
7456 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7457 {
7458   struct breakpoint *b;
7459
7460   /* Explicitly tell update_global_location_list to insert
7461      locations.  */
7462   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7463   if (!b->loc->inserted)
7464     {
7465       delete_breakpoint (b);
7466       return NULL;
7467     }
7468   return b;
7469 }
7470
7471 /* Disable any breakpoints that are on code in shared libraries.  Only
7472    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7473
7474 void
7475 disable_breakpoints_in_shlibs (void)
7476 {
7477   struct bp_location *loc, **locp_tmp;
7478
7479   ALL_BP_LOCATIONS (loc, locp_tmp)
7480   {
7481     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7482     struct breakpoint *b = loc->owner;
7483
7484     /* We apply the check to all breakpoints, including disabled for
7485        those with loc->duplicate set.  This is so that when breakpoint
7486        becomes enabled, or the duplicate is removed, gdb will try to
7487        insert all breakpoints.  If we don't set shlib_disabled here,
7488        we'll try to insert those breakpoints and fail.  */
7489     if (((b->type == bp_breakpoint)
7490          || (b->type == bp_jit_event)
7491          || (b->type == bp_hardware_breakpoint)
7492          || (is_tracepoint (b)))
7493         && loc->pspace == current_program_space
7494         && !loc->shlib_disabled
7495         && solib_name_from_address (loc->pspace, loc->address)
7496         )
7497       {
7498         loc->shlib_disabled = 1;
7499       }
7500   }
7501 }
7502
7503 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7504    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7505    disabled ones can just stay disabled.  */
7506
7507 static void
7508 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7509 {
7510   struct bp_location *loc, **locp_tmp;
7511   int disabled_shlib_breaks = 0;
7512
7513   ALL_BP_LOCATIONS (loc, locp_tmp)
7514   {
7515     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7516     struct breakpoint *b = loc->owner;
7517
7518     if (solib->pspace == loc->pspace
7519         && !loc->shlib_disabled
7520         && (((b->type == bp_breakpoint
7521               || b->type == bp_jit_event
7522               || b->type == bp_hardware_breakpoint)
7523              && (loc->loc_type == bp_loc_hardware_breakpoint
7524                  || loc->loc_type == bp_loc_software_breakpoint))
7525             || is_tracepoint (b))
7526         && solib_contains_address_p (solib, loc->address))
7527       {
7528         loc->shlib_disabled = 1;
7529         /* At this point, we cannot rely on remove_breakpoint
7530            succeeding so we must mark the breakpoint as not inserted
7531            to prevent future errors occurring in remove_breakpoints.  */
7532         loc->inserted = 0;
7533
7534         /* This may cause duplicate notifications for the same breakpoint.  */
7535         gdb::observers::breakpoint_modified.notify (b);
7536
7537         if (!disabled_shlib_breaks)
7538           {
7539             target_terminal::ours_for_output ();
7540             warning (_("Temporarily disabling breakpoints "
7541                        "for unloaded shared library \"%s\""),
7542                      solib->so_name);
7543           }
7544         disabled_shlib_breaks = 1;
7545       }
7546   }
7547 }
7548
7549 /* Disable any breakpoints and tracepoints in OBJFILE upon
7550    notification of free_objfile.  Only apply to enabled breakpoints,
7551    disabled ones can just stay disabled.  */
7552
7553 static void
7554 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7555 {
7556   struct breakpoint *b;
7557
7558   if (objfile == NULL)
7559     return;
7560
7561   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7562      managed by the user with add-symbol-file/remove-symbol-file.
7563      Similarly to how breakpoints in shared libraries are handled in
7564      response to "nosharedlibrary", mark breakpoints in such modules
7565      shlib_disabled so they end up uninserted on the next global
7566      location list update.  Shared libraries not loaded by the user
7567      aren't handled here -- they're already handled in
7568      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7569      solib_unloaded observer.  We skip objfiles that are not
7570      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7571      main objfile).  */
7572   if ((objfile->flags & OBJF_SHARED) == 0
7573       || (objfile->flags & OBJF_USERLOADED) == 0)
7574     return;
7575
7576   ALL_BREAKPOINTS (b)
7577     {
7578       struct bp_location *loc;
7579       int bp_modified = 0;
7580
7581       if (!is_breakpoint (b) && !is_tracepoint (b))
7582         continue;
7583
7584       for (loc = b->loc; loc != NULL; loc = loc->next)
7585         {
7586           CORE_ADDR loc_addr = loc->address;
7587
7588           if (loc->loc_type != bp_loc_hardware_breakpoint
7589               && loc->loc_type != bp_loc_software_breakpoint)
7590             continue;
7591
7592           if (loc->shlib_disabled != 0)
7593             continue;
7594
7595           if (objfile->pspace != loc->pspace)
7596             continue;
7597
7598           if (loc->loc_type != bp_loc_hardware_breakpoint
7599               && loc->loc_type != bp_loc_software_breakpoint)
7600             continue;
7601
7602           if (is_addr_in_objfile (loc_addr, objfile))
7603             {
7604               loc->shlib_disabled = 1;
7605               /* At this point, we don't know whether the object was
7606                  unmapped from the inferior or not, so leave the
7607                  inserted flag alone.  We'll handle failure to
7608                  uninsert quietly, in case the object was indeed
7609                  unmapped.  */
7610
7611               mark_breakpoint_location_modified (loc);
7612
7613               bp_modified = 1;
7614             }
7615         }
7616
7617       if (bp_modified)
7618         gdb::observers::breakpoint_modified.notify (b);
7619     }
7620 }
7621
7622 /* FORK & VFORK catchpoints.  */
7623
7624 /* An instance of this type is used to represent a fork or vfork
7625    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7626    to CATCH_FORK_BREAKPOINT_OPS.  */
7627
7628 struct fork_catchpoint : public breakpoint
7629 {
7630   /* Process id of a child process whose forking triggered this
7631      catchpoint.  This field is only valid immediately after this
7632      catchpoint has triggered.  */
7633   ptid_t forked_inferior_pid;
7634 };
7635
7636 /* Implement the "insert" breakpoint_ops method for fork
7637    catchpoints.  */
7638
7639 static int
7640 insert_catch_fork (struct bp_location *bl)
7641 {
7642   return target_insert_fork_catchpoint (inferior_ptid.pid ());
7643 }
7644
7645 /* Implement the "remove" breakpoint_ops method for fork
7646    catchpoints.  */
7647
7648 static int
7649 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7650 {
7651   return target_remove_fork_catchpoint (inferior_ptid.pid ());
7652 }
7653
7654 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7655    catchpoints.  */
7656
7657 static int
7658 breakpoint_hit_catch_fork (const struct bp_location *bl,
7659                            const address_space *aspace, CORE_ADDR bp_addr,
7660                            const struct target_waitstatus *ws)
7661 {
7662   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7663
7664   if (ws->kind != TARGET_WAITKIND_FORKED)
7665     return 0;
7666
7667   c->forked_inferior_pid = ws->value.related_pid;
7668   return 1;
7669 }
7670
7671 /* Implement the "print_it" breakpoint_ops method for fork
7672    catchpoints.  */
7673
7674 static enum print_stop_action
7675 print_it_catch_fork (bpstat bs)
7676 {
7677   struct ui_out *uiout = current_uiout;
7678   struct breakpoint *b = bs->breakpoint_at;
7679   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7680
7681   annotate_catchpoint (b->number);
7682   maybe_print_thread_hit_breakpoint (uiout);
7683   if (b->disposition == disp_del)
7684     uiout->text ("Temporary catchpoint ");
7685   else
7686     uiout->text ("Catchpoint ");
7687   if (uiout->is_mi_like_p ())
7688     {
7689       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7690       uiout->field_string ("disp", bpdisp_text (b->disposition));
7691     }
7692   uiout->field_int ("bkptno", b->number);
7693   uiout->text (" (forked process ");
7694   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7695   uiout->text ("), ");
7696   return PRINT_SRC_AND_LOC;
7697 }
7698
7699 /* Implement the "print_one" breakpoint_ops method for fork
7700    catchpoints.  */
7701
7702 static void
7703 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7704 {
7705   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7706   struct value_print_options opts;
7707   struct ui_out *uiout = current_uiout;
7708
7709   get_user_print_options (&opts);
7710
7711   /* Field 4, the address, is omitted (which makes the columns not
7712      line up too nicely with the headers, but the effect is relatively
7713      readable).  */
7714   if (opts.addressprint)
7715     uiout->field_skip ("addr");
7716   annotate_field (5);
7717   uiout->text ("fork");
7718   if (c->forked_inferior_pid != null_ptid)
7719     {
7720       uiout->text (", process ");
7721       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7722       uiout->spaces (1);
7723     }
7724
7725   if (uiout->is_mi_like_p ())
7726     uiout->field_string ("catch-type", "fork");
7727 }
7728
7729 /* Implement the "print_mention" breakpoint_ops method for fork
7730    catchpoints.  */
7731
7732 static void
7733 print_mention_catch_fork (struct breakpoint *b)
7734 {
7735   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7736 }
7737
7738 /* Implement the "print_recreate" breakpoint_ops method for fork
7739    catchpoints.  */
7740
7741 static void
7742 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7743 {
7744   fprintf_unfiltered (fp, "catch fork");
7745   print_recreate_thread (b, fp);
7746 }
7747
7748 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7749
7750 static struct breakpoint_ops catch_fork_breakpoint_ops;
7751
7752 /* Implement the "insert" breakpoint_ops method for vfork
7753    catchpoints.  */
7754
7755 static int
7756 insert_catch_vfork (struct bp_location *bl)
7757 {
7758   return target_insert_vfork_catchpoint (inferior_ptid.pid ());
7759 }
7760
7761 /* Implement the "remove" breakpoint_ops method for vfork
7762    catchpoints.  */
7763
7764 static int
7765 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7766 {
7767   return target_remove_vfork_catchpoint (inferior_ptid.pid ());
7768 }
7769
7770 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7771    catchpoints.  */
7772
7773 static int
7774 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7775                             const address_space *aspace, CORE_ADDR bp_addr,
7776                             const struct target_waitstatus *ws)
7777 {
7778   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7779
7780   if (ws->kind != TARGET_WAITKIND_VFORKED)
7781     return 0;
7782
7783   c->forked_inferior_pid = ws->value.related_pid;
7784   return 1;
7785 }
7786
7787 /* Implement the "print_it" breakpoint_ops method for vfork
7788    catchpoints.  */
7789
7790 static enum print_stop_action
7791 print_it_catch_vfork (bpstat bs)
7792 {
7793   struct ui_out *uiout = current_uiout;
7794   struct breakpoint *b = bs->breakpoint_at;
7795   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7796
7797   annotate_catchpoint (b->number);
7798   maybe_print_thread_hit_breakpoint (uiout);
7799   if (b->disposition == disp_del)
7800     uiout->text ("Temporary catchpoint ");
7801   else
7802     uiout->text ("Catchpoint ");
7803   if (uiout->is_mi_like_p ())
7804     {
7805       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7806       uiout->field_string ("disp", bpdisp_text (b->disposition));
7807     }
7808   uiout->field_int ("bkptno", b->number);
7809   uiout->text (" (vforked process ");
7810   uiout->field_int ("newpid", c->forked_inferior_pid.pid ());
7811   uiout->text ("), ");
7812   return PRINT_SRC_AND_LOC;
7813 }
7814
7815 /* Implement the "print_one" breakpoint_ops method for vfork
7816    catchpoints.  */
7817
7818 static void
7819 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7820 {
7821   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7822   struct value_print_options opts;
7823   struct ui_out *uiout = current_uiout;
7824
7825   get_user_print_options (&opts);
7826   /* Field 4, the address, is omitted (which makes the columns not
7827      line up too nicely with the headers, but the effect is relatively
7828      readable).  */
7829   if (opts.addressprint)
7830     uiout->field_skip ("addr");
7831   annotate_field (5);
7832   uiout->text ("vfork");
7833   if (c->forked_inferior_pid != null_ptid)
7834     {
7835       uiout->text (", process ");
7836       uiout->field_int ("what", c->forked_inferior_pid.pid ());
7837       uiout->spaces (1);
7838     }
7839
7840   if (uiout->is_mi_like_p ())
7841     uiout->field_string ("catch-type", "vfork");
7842 }
7843
7844 /* Implement the "print_mention" breakpoint_ops method for vfork
7845    catchpoints.  */
7846
7847 static void
7848 print_mention_catch_vfork (struct breakpoint *b)
7849 {
7850   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7851 }
7852
7853 /* Implement the "print_recreate" breakpoint_ops method for vfork
7854    catchpoints.  */
7855
7856 static void
7857 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7858 {
7859   fprintf_unfiltered (fp, "catch vfork");
7860   print_recreate_thread (b, fp);
7861 }
7862
7863 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7864
7865 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7866
7867 /* An instance of this type is used to represent an solib catchpoint.
7868    A breakpoint is really of this type iff its ops pointer points to
7869    CATCH_SOLIB_BREAKPOINT_OPS.  */
7870
7871 struct solib_catchpoint : public breakpoint
7872 {
7873   ~solib_catchpoint () override;
7874
7875   /* True for "catch load", false for "catch unload".  */
7876   unsigned char is_load;
7877
7878   /* Regular expression to match, if any.  COMPILED is only valid when
7879      REGEX is non-NULL.  */
7880   char *regex;
7881   std::unique_ptr<compiled_regex> compiled;
7882 };
7883
7884 solib_catchpoint::~solib_catchpoint ()
7885 {
7886   xfree (this->regex);
7887 }
7888
7889 static int
7890 insert_catch_solib (struct bp_location *ignore)
7891 {
7892   return 0;
7893 }
7894
7895 static int
7896 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7897 {
7898   return 0;
7899 }
7900
7901 static int
7902 breakpoint_hit_catch_solib (const struct bp_location *bl,
7903                             const address_space *aspace,
7904                             CORE_ADDR bp_addr,
7905                             const struct target_waitstatus *ws)
7906 {
7907   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7908   struct breakpoint *other;
7909
7910   if (ws->kind == TARGET_WAITKIND_LOADED)
7911     return 1;
7912
7913   ALL_BREAKPOINTS (other)
7914   {
7915     struct bp_location *other_bl;
7916
7917     if (other == bl->owner)
7918       continue;
7919
7920     if (other->type != bp_shlib_event)
7921       continue;
7922
7923     if (self->pspace != NULL && other->pspace != self->pspace)
7924       continue;
7925
7926     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7927       {
7928         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7929           return 1;
7930       }
7931   }
7932
7933   return 0;
7934 }
7935
7936 static void
7937 check_status_catch_solib (struct bpstats *bs)
7938 {
7939   struct solib_catchpoint *self
7940     = (struct solib_catchpoint *) bs->breakpoint_at;
7941
7942   if (self->is_load)
7943     {
7944       for (so_list *iter : current_program_space->added_solibs)
7945         {
7946           if (!self->regex
7947               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
7948             return;
7949         }
7950     }
7951   else
7952     {
7953       for (const std::string &iter : current_program_space->deleted_solibs)
7954         {
7955           if (!self->regex
7956               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
7957             return;
7958         }
7959     }
7960
7961   bs->stop = 0;
7962   bs->print_it = print_it_noop;
7963 }
7964
7965 static enum print_stop_action
7966 print_it_catch_solib (bpstat bs)
7967 {
7968   struct breakpoint *b = bs->breakpoint_at;
7969   struct ui_out *uiout = current_uiout;
7970
7971   annotate_catchpoint (b->number);
7972   maybe_print_thread_hit_breakpoint (uiout);
7973   if (b->disposition == disp_del)
7974     uiout->text ("Temporary catchpoint ");
7975   else
7976     uiout->text ("Catchpoint ");
7977   uiout->field_int ("bkptno", b->number);
7978   uiout->text ("\n");
7979   if (uiout->is_mi_like_p ())
7980     uiout->field_string ("disp", bpdisp_text (b->disposition));
7981   print_solib_event (1);
7982   return PRINT_SRC_AND_LOC;
7983 }
7984
7985 static void
7986 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7987 {
7988   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7989   struct value_print_options opts;
7990   struct ui_out *uiout = current_uiout;
7991
7992   get_user_print_options (&opts);
7993   /* Field 4, the address, is omitted (which makes the columns not
7994      line up too nicely with the headers, but the effect is relatively
7995      readable).  */
7996   if (opts.addressprint)
7997     {
7998       annotate_field (4);
7999       uiout->field_skip ("addr");
8000     }
8001
8002   std::string msg;
8003   annotate_field (5);
8004   if (self->is_load)
8005     {
8006       if (self->regex)
8007         msg = string_printf (_("load of library matching %s"), self->regex);
8008       else
8009         msg = _("load of library");
8010     }
8011   else
8012     {
8013       if (self->regex)
8014         msg = string_printf (_("unload of library matching %s"), self->regex);
8015       else
8016         msg = _("unload of library");
8017     }
8018   uiout->field_string ("what", msg);
8019
8020   if (uiout->is_mi_like_p ())
8021     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8022 }
8023
8024 static void
8025 print_mention_catch_solib (struct breakpoint *b)
8026 {
8027   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8028
8029   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8030                    self->is_load ? "load" : "unload");
8031 }
8032
8033 static void
8034 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8035 {
8036   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8037
8038   fprintf_unfiltered (fp, "%s %s",
8039                       b->disposition == disp_del ? "tcatch" : "catch",
8040                       self->is_load ? "load" : "unload");
8041   if (self->regex)
8042     fprintf_unfiltered (fp, " %s", self->regex);
8043   fprintf_unfiltered (fp, "\n");
8044 }
8045
8046 static struct breakpoint_ops catch_solib_breakpoint_ops;
8047
8048 /* Shared helper function (MI and CLI) for creating and installing
8049    a shared object event catchpoint.  If IS_LOAD is non-zero then
8050    the events to be caught are load events, otherwise they are
8051    unload events.  If IS_TEMP is non-zero the catchpoint is a
8052    temporary one.  If ENABLED is non-zero the catchpoint is
8053    created in an enabled state.  */
8054
8055 void
8056 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8057 {
8058   struct gdbarch *gdbarch = get_current_arch ();
8059
8060   if (!arg)
8061     arg = "";
8062   arg = skip_spaces (arg);
8063
8064   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8065
8066   if (*arg != '\0')
8067     {
8068       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8069                                              _("Invalid regexp")));
8070       c->regex = xstrdup (arg);
8071     }
8072
8073   c->is_load = is_load;
8074   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8075                    &catch_solib_breakpoint_ops);
8076
8077   c->enable_state = enabled ? bp_enabled : bp_disabled;
8078
8079   install_breakpoint (0, std::move (c), 1);
8080 }
8081
8082 /* A helper function that does all the work for "catch load" and
8083    "catch unload".  */
8084
8085 static void
8086 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8087                       struct cmd_list_element *command)
8088 {
8089   int tempflag;
8090   const int enabled = 1;
8091
8092   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8093
8094   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8095 }
8096
8097 static void
8098 catch_load_command_1 (const char *arg, int from_tty,
8099                       struct cmd_list_element *command)
8100 {
8101   catch_load_or_unload (arg, from_tty, 1, command);
8102 }
8103
8104 static void
8105 catch_unload_command_1 (const char *arg, int from_tty,
8106                         struct cmd_list_element *command)
8107 {
8108   catch_load_or_unload (arg, from_tty, 0, command);
8109 }
8110
8111 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8112    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8113    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8114    the breakpoint_ops structure associated to the catchpoint.  */
8115
8116 void
8117 init_catchpoint (struct breakpoint *b,
8118                  struct gdbarch *gdbarch, int tempflag,
8119                  const char *cond_string,
8120                  const struct breakpoint_ops *ops)
8121 {
8122   symtab_and_line sal;
8123   sal.pspace = current_program_space;
8124
8125   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8126
8127   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8128   b->disposition = tempflag ? disp_del : disp_donttouch;
8129 }
8130
8131 void
8132 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8133 {
8134   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8135   set_breakpoint_number (internal, b);
8136   if (is_tracepoint (b))
8137     set_tracepoint_count (breakpoint_count);
8138   if (!internal)
8139     mention (b);
8140   gdb::observers::breakpoint_created.notify (b);
8141
8142   if (update_gll)
8143     update_global_location_list (UGLL_MAY_INSERT);
8144 }
8145
8146 static void
8147 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8148                                     int tempflag, const char *cond_string,
8149                                     const struct breakpoint_ops *ops)
8150 {
8151   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8152
8153   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8154
8155   c->forked_inferior_pid = null_ptid;
8156
8157   install_breakpoint (0, std::move (c), 1);
8158 }
8159
8160 /* Exec catchpoints.  */
8161
8162 /* An instance of this type is used to represent an exec catchpoint.
8163    A breakpoint is really of this type iff its ops pointer points to
8164    CATCH_EXEC_BREAKPOINT_OPS.  */
8165
8166 struct exec_catchpoint : public breakpoint
8167 {
8168   ~exec_catchpoint () override;
8169
8170   /* Filename of a program whose exec triggered this catchpoint.
8171      This field is only valid immediately after this catchpoint has
8172      triggered.  */
8173   char *exec_pathname;
8174 };
8175
8176 /* Exec catchpoint destructor.  */
8177
8178 exec_catchpoint::~exec_catchpoint ()
8179 {
8180   xfree (this->exec_pathname);
8181 }
8182
8183 static int
8184 insert_catch_exec (struct bp_location *bl)
8185 {
8186   return target_insert_exec_catchpoint (inferior_ptid.pid ());
8187 }
8188
8189 static int
8190 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8191 {
8192   return target_remove_exec_catchpoint (inferior_ptid.pid ());
8193 }
8194
8195 static int
8196 breakpoint_hit_catch_exec (const struct bp_location *bl,
8197                            const address_space *aspace, CORE_ADDR bp_addr,
8198                            const struct target_waitstatus *ws)
8199 {
8200   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8201
8202   if (ws->kind != TARGET_WAITKIND_EXECD)
8203     return 0;
8204
8205   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8206   return 1;
8207 }
8208
8209 static enum print_stop_action
8210 print_it_catch_exec (bpstat bs)
8211 {
8212   struct ui_out *uiout = current_uiout;
8213   struct breakpoint *b = bs->breakpoint_at;
8214   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8215
8216   annotate_catchpoint (b->number);
8217   maybe_print_thread_hit_breakpoint (uiout);
8218   if (b->disposition == disp_del)
8219     uiout->text ("Temporary catchpoint ");
8220   else
8221     uiout->text ("Catchpoint ");
8222   if (uiout->is_mi_like_p ())
8223     {
8224       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8225       uiout->field_string ("disp", bpdisp_text (b->disposition));
8226     }
8227   uiout->field_int ("bkptno", b->number);
8228   uiout->text (" (exec'd ");
8229   uiout->field_string ("new-exec", c->exec_pathname);
8230   uiout->text ("), ");
8231
8232   return PRINT_SRC_AND_LOC;
8233 }
8234
8235 static void
8236 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8237 {
8238   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8239   struct value_print_options opts;
8240   struct ui_out *uiout = current_uiout;
8241
8242   get_user_print_options (&opts);
8243
8244   /* Field 4, the address, is omitted (which makes the columns
8245      not line up too nicely with the headers, but the effect
8246      is relatively readable).  */
8247   if (opts.addressprint)
8248     uiout->field_skip ("addr");
8249   annotate_field (5);
8250   uiout->text ("exec");
8251   if (c->exec_pathname != NULL)
8252     {
8253       uiout->text (", program \"");
8254       uiout->field_string ("what", c->exec_pathname);
8255       uiout->text ("\" ");
8256     }
8257
8258   if (uiout->is_mi_like_p ())
8259     uiout->field_string ("catch-type", "exec");
8260 }
8261
8262 static void
8263 print_mention_catch_exec (struct breakpoint *b)
8264 {
8265   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8266 }
8267
8268 /* Implement the "print_recreate" breakpoint_ops method for exec
8269    catchpoints.  */
8270
8271 static void
8272 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8273 {
8274   fprintf_unfiltered (fp, "catch exec");
8275   print_recreate_thread (b, fp);
8276 }
8277
8278 static struct breakpoint_ops catch_exec_breakpoint_ops;
8279
8280 static int
8281 hw_breakpoint_used_count (void)
8282 {
8283   int i = 0;
8284   struct breakpoint *b;
8285   struct bp_location *bl;
8286
8287   ALL_BREAKPOINTS (b)
8288   {
8289     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8290       for (bl = b->loc; bl; bl = bl->next)
8291         {
8292           /* Special types of hardware breakpoints may use more than
8293              one register.  */
8294           i += b->ops->resources_needed (bl);
8295         }
8296   }
8297
8298   return i;
8299 }
8300
8301 /* Returns the resources B would use if it were a hardware
8302    watchpoint.  */
8303
8304 static int
8305 hw_watchpoint_use_count (struct breakpoint *b)
8306 {
8307   int i = 0;
8308   struct bp_location *bl;
8309
8310   if (!breakpoint_enabled (b))
8311     return 0;
8312
8313   for (bl = b->loc; bl; bl = bl->next)
8314     {
8315       /* Special types of hardware watchpoints may use more than
8316          one register.  */
8317       i += b->ops->resources_needed (bl);
8318     }
8319
8320   return i;
8321 }
8322
8323 /* Returns the sum the used resources of all hardware watchpoints of
8324    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8325    the sum of the used resources of all hardware watchpoints of other
8326    types _not_ TYPE.  */
8327
8328 static int
8329 hw_watchpoint_used_count_others (struct breakpoint *except,
8330                                  enum bptype type, int *other_type_used)
8331 {
8332   int i = 0;
8333   struct breakpoint *b;
8334
8335   *other_type_used = 0;
8336   ALL_BREAKPOINTS (b)
8337     {
8338       if (b == except)
8339         continue;
8340       if (!breakpoint_enabled (b))
8341         continue;
8342
8343       if (b->type == type)
8344         i += hw_watchpoint_use_count (b);
8345       else if (is_hardware_watchpoint (b))
8346         *other_type_used = 1;
8347     }
8348
8349   return i;
8350 }
8351
8352 void
8353 disable_watchpoints_before_interactive_call_start (void)
8354 {
8355   struct breakpoint *b;
8356
8357   ALL_BREAKPOINTS (b)
8358   {
8359     if (is_watchpoint (b) && breakpoint_enabled (b))
8360       {
8361         b->enable_state = bp_call_disabled;
8362         update_global_location_list (UGLL_DONT_INSERT);
8363       }
8364   }
8365 }
8366
8367 void
8368 enable_watchpoints_after_interactive_call_stop (void)
8369 {
8370   struct breakpoint *b;
8371
8372   ALL_BREAKPOINTS (b)
8373   {
8374     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8375       {
8376         b->enable_state = bp_enabled;
8377         update_global_location_list (UGLL_MAY_INSERT);
8378       }
8379   }
8380 }
8381
8382 void
8383 disable_breakpoints_before_startup (void)
8384 {
8385   current_program_space->executing_startup = 1;
8386   update_global_location_list (UGLL_DONT_INSERT);
8387 }
8388
8389 void
8390 enable_breakpoints_after_startup (void)
8391 {
8392   current_program_space->executing_startup = 0;
8393   breakpoint_re_set ();
8394 }
8395
8396 /* Create a new single-step breakpoint for thread THREAD, with no
8397    locations.  */
8398
8399 static struct breakpoint *
8400 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8401 {
8402   std::unique_ptr<breakpoint> b (new breakpoint ());
8403
8404   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8405                                         &momentary_breakpoint_ops);
8406
8407   b->disposition = disp_donttouch;
8408   b->frame_id = null_frame_id;
8409
8410   b->thread = thread;
8411   gdb_assert (b->thread != 0);
8412
8413   return add_to_breakpoint_chain (std::move (b));
8414 }
8415
8416 /* Set a momentary breakpoint of type TYPE at address specified by
8417    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8418    frame.  */
8419
8420 breakpoint_up
8421 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8422                           struct frame_id frame_id, enum bptype type)
8423 {
8424   struct breakpoint *b;
8425
8426   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8427      tail-called one.  */
8428   gdb_assert (!frame_id_artificial_p (frame_id));
8429
8430   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8431   b->enable_state = bp_enabled;
8432   b->disposition = disp_donttouch;
8433   b->frame_id = frame_id;
8434
8435   b->thread = inferior_thread ()->global_num;
8436
8437   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8438
8439   return breakpoint_up (b);
8440 }
8441
8442 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8443    The new breakpoint will have type TYPE, use OPS as its
8444    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8445
8446 static struct breakpoint *
8447 momentary_breakpoint_from_master (struct breakpoint *orig,
8448                                   enum bptype type,
8449                                   const struct breakpoint_ops *ops,
8450                                   int loc_enabled)
8451 {
8452   struct breakpoint *copy;
8453
8454   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8455   copy->loc = allocate_bp_location (copy);
8456   set_breakpoint_location_function (copy->loc);
8457
8458   copy->loc->gdbarch = orig->loc->gdbarch;
8459   copy->loc->requested_address = orig->loc->requested_address;
8460   copy->loc->address = orig->loc->address;
8461   copy->loc->section = orig->loc->section;
8462   copy->loc->pspace = orig->loc->pspace;
8463   copy->loc->probe = orig->loc->probe;
8464   copy->loc->line_number = orig->loc->line_number;
8465   copy->loc->symtab = orig->loc->symtab;
8466   copy->loc->enabled = loc_enabled;
8467   copy->frame_id = orig->frame_id;
8468   copy->thread = orig->thread;
8469   copy->pspace = orig->pspace;
8470
8471   copy->enable_state = bp_enabled;
8472   copy->disposition = disp_donttouch;
8473   copy->number = internal_breakpoint_number--;
8474
8475   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8476   return copy;
8477 }
8478
8479 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8480    ORIG is NULL.  */
8481
8482 struct breakpoint *
8483 clone_momentary_breakpoint (struct breakpoint *orig)
8484 {
8485   /* If there's nothing to clone, then return nothing.  */
8486   if (orig == NULL)
8487     return NULL;
8488
8489   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8490 }
8491
8492 breakpoint_up
8493 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8494                                 enum bptype type)
8495 {
8496   struct symtab_and_line sal;
8497
8498   sal = find_pc_line (pc, 0);
8499   sal.pc = pc;
8500   sal.section = find_pc_overlay (pc);
8501   sal.explicit_pc = 1;
8502
8503   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8504 }
8505 \f
8506
8507 /* Tell the user we have just set a breakpoint B.  */
8508
8509 static void
8510 mention (struct breakpoint *b)
8511 {
8512   b->ops->print_mention (b);
8513   current_uiout->text ("\n");
8514 }
8515 \f
8516
8517 static int bp_loc_is_permanent (struct bp_location *loc);
8518
8519 static struct bp_location *
8520 add_location_to_breakpoint (struct breakpoint *b,
8521                             const struct symtab_and_line *sal)
8522 {
8523   struct bp_location *loc, **tmp;
8524   CORE_ADDR adjusted_address;
8525   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8526
8527   if (loc_gdbarch == NULL)
8528     loc_gdbarch = b->gdbarch;
8529
8530   /* Adjust the breakpoint's address prior to allocating a location.
8531      Once we call allocate_bp_location(), that mostly uninitialized
8532      location will be placed on the location chain.  Adjustment of the
8533      breakpoint may cause target_read_memory() to be called and we do
8534      not want its scan of the location chain to find a breakpoint and
8535      location that's only been partially initialized.  */
8536   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8537                                                 sal->pc, b->type);
8538
8539   /* Sort the locations by their ADDRESS.  */
8540   loc = allocate_bp_location (b);
8541   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8542        tmp = &((*tmp)->next))
8543     ;
8544   loc->next = *tmp;
8545   *tmp = loc;
8546
8547   loc->requested_address = sal->pc;
8548   loc->address = adjusted_address;
8549   loc->pspace = sal->pspace;
8550   loc->probe.prob = sal->prob;
8551   loc->probe.objfile = sal->objfile;
8552   gdb_assert (loc->pspace != NULL);
8553   loc->section = sal->section;
8554   loc->gdbarch = loc_gdbarch;
8555   loc->line_number = sal->line;
8556   loc->symtab = sal->symtab;
8557   loc->symbol = sal->symbol;
8558   loc->msymbol = sal->msymbol;
8559   loc->objfile = sal->objfile;
8560
8561   set_breakpoint_location_function (loc);
8562
8563   /* While by definition, permanent breakpoints are already present in the
8564      code, we don't mark the location as inserted.  Normally one would expect
8565      that GDB could rely on that breakpoint instruction to stop the program,
8566      thus removing the need to insert its own breakpoint, except that executing
8567      the breakpoint instruction can kill the target instead of reporting a
8568      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8569      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8570      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8571      breakpoint be inserted normally results in QEMU knowing about the GDB
8572      breakpoint, and thus trap before the breakpoint instruction is executed.
8573      (If GDB later needs to continue execution past the permanent breakpoint,
8574      it manually increments the PC, thus avoiding executing the breakpoint
8575      instruction.)  */
8576   if (bp_loc_is_permanent (loc))
8577     loc->permanent = 1;
8578
8579   return loc;
8580 }
8581 \f
8582
8583 /* See breakpoint.h.  */
8584
8585 int
8586 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8587 {
8588   int len;
8589   CORE_ADDR addr;
8590   const gdb_byte *bpoint;
8591   gdb_byte *target_mem;
8592
8593   addr = address;
8594   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8595
8596   /* Software breakpoints unsupported?  */
8597   if (bpoint == NULL)
8598     return 0;
8599
8600   target_mem = (gdb_byte *) alloca (len);
8601
8602   /* Enable the automatic memory restoration from breakpoints while
8603      we read the memory.  Otherwise we could say about our temporary
8604      breakpoints they are permanent.  */
8605   scoped_restore restore_memory
8606     = make_scoped_restore_show_memory_breakpoints (0);
8607
8608   if (target_read_memory (address, target_mem, len) == 0
8609       && memcmp (target_mem, bpoint, len) == 0)
8610     return 1;
8611
8612   return 0;
8613 }
8614
8615 /* Return 1 if LOC is pointing to a permanent breakpoint,
8616    return 0 otherwise.  */
8617
8618 static int
8619 bp_loc_is_permanent (struct bp_location *loc)
8620 {
8621   gdb_assert (loc != NULL);
8622
8623   /* If we have a non-breakpoint-backed catchpoint or a software
8624      watchpoint, just return 0.  We should not attempt to read from
8625      the addresses the locations of these breakpoint types point to.
8626      program_breakpoint_here_p, below, will attempt to read
8627      memory.  */
8628   if (!bl_address_is_meaningful (loc))
8629     return 0;
8630
8631   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8632   switch_to_program_space_and_thread (loc->pspace);
8633   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8634 }
8635
8636 /* Build a command list for the dprintf corresponding to the current
8637    settings of the dprintf style options.  */
8638
8639 static void
8640 update_dprintf_command_list (struct breakpoint *b)
8641 {
8642   char *dprintf_args = b->extra_string;
8643   char *printf_line = NULL;
8644
8645   if (!dprintf_args)
8646     return;
8647
8648   dprintf_args = skip_spaces (dprintf_args);
8649
8650   /* Allow a comma, as it may have terminated a location, but don't
8651      insist on it.  */
8652   if (*dprintf_args == ',')
8653     ++dprintf_args;
8654   dprintf_args = skip_spaces (dprintf_args);
8655
8656   if (*dprintf_args != '"')
8657     error (_("Bad format string, missing '\"'."));
8658
8659   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8660     printf_line = xstrprintf ("printf %s", dprintf_args);
8661   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8662     {
8663       if (!dprintf_function)
8664         error (_("No function supplied for dprintf call"));
8665
8666       if (dprintf_channel && strlen (dprintf_channel) > 0)
8667         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8668                                   dprintf_function,
8669                                   dprintf_channel,
8670                                   dprintf_args);
8671       else
8672         printf_line = xstrprintf ("call (void) %s (%s)",
8673                                   dprintf_function,
8674                                   dprintf_args);
8675     }
8676   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8677     {
8678       if (target_can_run_breakpoint_commands ())
8679         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8680       else
8681         {
8682           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8683           printf_line = xstrprintf ("printf %s", dprintf_args);
8684         }
8685     }
8686   else
8687     internal_error (__FILE__, __LINE__,
8688                     _("Invalid dprintf style."));
8689
8690   gdb_assert (printf_line != NULL);
8691
8692   /* Manufacture a printf sequence.  */
8693   struct command_line *printf_cmd_line
8694     = new struct command_line (simple_control, printf_line);
8695   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8696                                                     command_lines_deleter ()));
8697 }
8698
8699 /* Update all dprintf commands, making their command lists reflect
8700    current style settings.  */
8701
8702 static void
8703 update_dprintf_commands (const char *args, int from_tty,
8704                          struct cmd_list_element *c)
8705 {
8706   struct breakpoint *b;
8707
8708   ALL_BREAKPOINTS (b)
8709     {
8710       if (b->type == bp_dprintf)
8711         update_dprintf_command_list (b);
8712     }
8713 }
8714
8715 /* Create a breakpoint with SAL as location.  Use LOCATION
8716    as a description of the location, and COND_STRING
8717    as condition expression.  If LOCATION is NULL then create an
8718    "address location" from the address in the SAL.  */
8719
8720 static void
8721 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8722                      gdb::array_view<const symtab_and_line> sals,
8723                      event_location_up &&location,
8724                      gdb::unique_xmalloc_ptr<char> filter,
8725                      gdb::unique_xmalloc_ptr<char> cond_string,
8726                      gdb::unique_xmalloc_ptr<char> extra_string,
8727                      enum bptype type, enum bpdisp disposition,
8728                      int thread, int task, int ignore_count,
8729                      const struct breakpoint_ops *ops, int from_tty,
8730                      int enabled, int internal, unsigned flags,
8731                      int display_canonical)
8732 {
8733   int i;
8734
8735   if (type == bp_hardware_breakpoint)
8736     {
8737       int target_resources_ok;
8738
8739       i = hw_breakpoint_used_count ();
8740       target_resources_ok =
8741         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8742                                             i + 1, 0);
8743       if (target_resources_ok == 0)
8744         error (_("No hardware breakpoint support in the target."));
8745       else if (target_resources_ok < 0)
8746         error (_("Hardware breakpoints used exceeds limit."));
8747     }
8748
8749   gdb_assert (!sals.empty ());
8750
8751   for (const auto &sal : sals)
8752     {
8753       struct bp_location *loc;
8754
8755       if (from_tty)
8756         {
8757           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8758           if (!loc_gdbarch)
8759             loc_gdbarch = gdbarch;
8760
8761           describe_other_breakpoints (loc_gdbarch,
8762                                       sal.pspace, sal.pc, sal.section, thread);
8763         }
8764
8765       if (&sal == &sals[0])
8766         {
8767           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8768           b->thread = thread;
8769           b->task = task;
8770
8771           b->cond_string = cond_string.release ();
8772           b->extra_string = extra_string.release ();
8773           b->ignore_count = ignore_count;
8774           b->enable_state = enabled ? bp_enabled : bp_disabled;
8775           b->disposition = disposition;
8776
8777           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8778             b->loc->inserted = 1;
8779
8780           if (type == bp_static_tracepoint)
8781             {
8782               struct tracepoint *t = (struct tracepoint *) b;
8783               struct static_tracepoint_marker marker;
8784
8785               if (strace_marker_p (b))
8786                 {
8787                   /* We already know the marker exists, otherwise, we
8788                      wouldn't see a sal for it.  */
8789                   const char *p
8790                     = &event_location_to_string (b->location.get ())[3];
8791                   const char *endp;
8792
8793                   p = skip_spaces (p);
8794
8795                   endp = skip_to_space (p);
8796
8797                   t->static_trace_marker_id.assign (p, endp - p);
8798
8799                   printf_filtered (_("Probed static tracepoint "
8800                                      "marker \"%s\"\n"),
8801                                    t->static_trace_marker_id.c_str ());
8802                 }
8803               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8804                 {
8805                   t->static_trace_marker_id = std::move (marker.str_id);
8806
8807                   printf_filtered (_("Probed static tracepoint "
8808                                      "marker \"%s\"\n"),
8809                                    t->static_trace_marker_id.c_str ());
8810                 }
8811               else
8812                 warning (_("Couldn't determine the static "
8813                            "tracepoint marker to probe"));
8814             }
8815
8816           loc = b->loc;
8817         }
8818       else
8819         {
8820           loc = add_location_to_breakpoint (b, &sal);
8821           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8822             loc->inserted = 1;
8823         }
8824
8825       if (b->cond_string)
8826         {
8827           const char *arg = b->cond_string;
8828
8829           loc->cond = parse_exp_1 (&arg, loc->address,
8830                                    block_for_pc (loc->address), 0);
8831           if (*arg)
8832               error (_("Garbage '%s' follows condition"), arg);
8833         }
8834
8835       /* Dynamic printf requires and uses additional arguments on the
8836          command line, otherwise it's an error.  */
8837       if (type == bp_dprintf)
8838         {
8839           if (b->extra_string)
8840             update_dprintf_command_list (b);
8841           else
8842             error (_("Format string required"));
8843         }
8844       else if (b->extra_string)
8845         error (_("Garbage '%s' at end of command"), b->extra_string);
8846     }
8847
8848   b->display_canonical = display_canonical;
8849   if (location != NULL)
8850     b->location = std::move (location);
8851   else
8852     b->location = new_address_location (b->loc->address, NULL, 0);
8853   b->filter = filter.release ();
8854 }
8855
8856 static void
8857 create_breakpoint_sal (struct gdbarch *gdbarch,
8858                        gdb::array_view<const symtab_and_line> sals,
8859                        event_location_up &&location,
8860                        gdb::unique_xmalloc_ptr<char> filter,
8861                        gdb::unique_xmalloc_ptr<char> cond_string,
8862                        gdb::unique_xmalloc_ptr<char> extra_string,
8863                        enum bptype type, enum bpdisp disposition,
8864                        int thread, int task, int ignore_count,
8865                        const struct breakpoint_ops *ops, int from_tty,
8866                        int enabled, int internal, unsigned flags,
8867                        int display_canonical)
8868 {
8869   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8870
8871   init_breakpoint_sal (b.get (), gdbarch,
8872                        sals, std::move (location),
8873                        std::move (filter),
8874                        std::move (cond_string),
8875                        std::move (extra_string),
8876                        type, disposition,
8877                        thread, task, ignore_count,
8878                        ops, from_tty,
8879                        enabled, internal, flags,
8880                        display_canonical);
8881
8882   install_breakpoint (internal, std::move (b), 0);
8883 }
8884
8885 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8886    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8887    value.  COND_STRING, if not NULL, specified the condition to be
8888    used for all breakpoints.  Essentially the only case where
8889    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8890    function.  In that case, it's still not possible to specify
8891    separate conditions for different overloaded functions, so
8892    we take just a single condition string.
8893    
8894    NOTE: If the function succeeds, the caller is expected to cleanup
8895    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8896    array contents).  If the function fails (error() is called), the
8897    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8898    COND and SALS arrays and each of those arrays contents.  */
8899
8900 static void
8901 create_breakpoints_sal (struct gdbarch *gdbarch,
8902                         struct linespec_result *canonical,
8903                         gdb::unique_xmalloc_ptr<char> cond_string,
8904                         gdb::unique_xmalloc_ptr<char> extra_string,
8905                         enum bptype type, enum bpdisp disposition,
8906                         int thread, int task, int ignore_count,
8907                         const struct breakpoint_ops *ops, int from_tty,
8908                         int enabled, int internal, unsigned flags)
8909 {
8910   if (canonical->pre_expanded)
8911     gdb_assert (canonical->lsals.size () == 1);
8912
8913   for (const auto &lsal : canonical->lsals)
8914     {
8915       /* Note that 'location' can be NULL in the case of a plain
8916          'break', without arguments.  */
8917       event_location_up location
8918         = (canonical->location != NULL
8919            ? copy_event_location (canonical->location.get ()) : NULL);
8920       gdb::unique_xmalloc_ptr<char> filter_string
8921         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8922
8923       create_breakpoint_sal (gdbarch, lsal.sals,
8924                              std::move (location),
8925                              std::move (filter_string),
8926                              std::move (cond_string),
8927                              std::move (extra_string),
8928                              type, disposition,
8929                              thread, task, ignore_count, ops,
8930                              from_tty, enabled, internal, flags,
8931                              canonical->special_display);
8932     }
8933 }
8934
8935 /* Parse LOCATION which is assumed to be a SAL specification possibly
8936    followed by conditionals.  On return, SALS contains an array of SAL
8937    addresses found.  LOCATION points to the end of the SAL (for
8938    linespec locations).
8939
8940    The array and the line spec strings are allocated on the heap, it is
8941    the caller's responsibility to free them.  */
8942
8943 static void
8944 parse_breakpoint_sals (const struct event_location *location,
8945                        struct linespec_result *canonical)
8946 {
8947   struct symtab_and_line cursal;
8948
8949   if (event_location_type (location) == LINESPEC_LOCATION)
8950     {
8951       const char *spec = get_linespec_location (location)->spec_string;
8952
8953       if (spec == NULL)
8954         {
8955           /* The last displayed codepoint, if it's valid, is our default
8956              breakpoint address.  */
8957           if (last_displayed_sal_is_valid ())
8958             {
8959               /* Set sal's pspace, pc, symtab, and line to the values
8960                  corresponding to the last call to print_frame_info.
8961                  Be sure to reinitialize LINE with NOTCURRENT == 0
8962                  as the breakpoint line number is inappropriate otherwise.
8963                  find_pc_line would adjust PC, re-set it back.  */
8964               symtab_and_line sal = get_last_displayed_sal ();
8965               CORE_ADDR pc = sal.pc;
8966
8967               sal = find_pc_line (pc, 0);
8968
8969               /* "break" without arguments is equivalent to "break *PC"
8970                  where PC is the last displayed codepoint's address.  So
8971                  make sure to set sal.explicit_pc to prevent GDB from
8972                  trying to expand the list of sals to include all other
8973                  instances with the same symtab and line.  */
8974               sal.pc = pc;
8975               sal.explicit_pc = 1;
8976
8977               struct linespec_sals lsal;
8978               lsal.sals = {sal};
8979               lsal.canonical = NULL;
8980
8981               canonical->lsals.push_back (std::move (lsal));
8982               return;
8983             }
8984           else
8985             error (_("No default breakpoint address now."));
8986         }
8987     }
8988
8989   /* Force almost all breakpoints to be in terms of the
8990      current_source_symtab (which is decode_line_1's default).
8991      This should produce the results we want almost all of the
8992      time while leaving default_breakpoint_* alone.
8993
8994      ObjC: However, don't match an Objective-C method name which
8995      may have a '+' or '-' succeeded by a '['.  */
8996   cursal = get_current_source_symtab_and_line ();
8997   if (last_displayed_sal_is_valid ())
8998     {
8999       const char *spec = NULL;
9000
9001       if (event_location_type (location) == LINESPEC_LOCATION)
9002         spec = get_linespec_location (location)->spec_string;
9003
9004       if (!cursal.symtab
9005           || (spec != NULL
9006               && strchr ("+-", spec[0]) != NULL
9007               && spec[1] != '['))
9008         {
9009           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9010                             get_last_displayed_symtab (),
9011                             get_last_displayed_line (),
9012                             canonical, NULL, NULL);
9013           return;
9014         }
9015     }
9016
9017   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9018                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9019 }
9020
9021
9022 /* Convert each SAL into a real PC.  Verify that the PC can be
9023    inserted as a breakpoint.  If it can't throw an error.  */
9024
9025 static void
9026 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9027 {    
9028   for (auto &sal : sals)
9029     resolve_sal_pc (&sal);
9030 }
9031
9032 /* Fast tracepoints may have restrictions on valid locations.  For
9033    instance, a fast tracepoint using a jump instead of a trap will
9034    likely have to overwrite more bytes than a trap would, and so can
9035    only be placed where the instruction is longer than the jump, or a
9036    multi-instruction sequence does not have a jump into the middle of
9037    it, etc.  */
9038
9039 static void
9040 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9041                             gdb::array_view<const symtab_and_line> sals)
9042 {
9043   for (const auto &sal : sals)
9044     {
9045       struct gdbarch *sarch;
9046
9047       sarch = get_sal_arch (sal);
9048       /* We fall back to GDBARCH if there is no architecture
9049          associated with SAL.  */
9050       if (sarch == NULL)
9051         sarch = gdbarch;
9052       std::string msg;
9053       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9054         error (_("May not have a fast tracepoint at %s%s"),
9055                paddress (sarch, sal.pc), msg.c_str ());
9056     }
9057 }
9058
9059 /* Given TOK, a string specification of condition and thread, as
9060    accepted by the 'break' command, extract the condition
9061    string and thread number and set *COND_STRING and *THREAD.
9062    PC identifies the context at which the condition should be parsed.
9063    If no condition is found, *COND_STRING is set to NULL.
9064    If no thread is found, *THREAD is set to -1.  */
9065
9066 static void
9067 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9068                            char **cond_string, int *thread, int *task,
9069                            char **rest)
9070 {
9071   *cond_string = NULL;
9072   *thread = -1;
9073   *task = 0;
9074   *rest = NULL;
9075
9076   while (tok && *tok)
9077     {
9078       const char *end_tok;
9079       int toklen;
9080       const char *cond_start = NULL;
9081       const char *cond_end = NULL;
9082
9083       tok = skip_spaces (tok);
9084
9085       if ((*tok == '"' || *tok == ',') && rest)
9086         {
9087           *rest = savestring (tok, strlen (tok));
9088           return;
9089         }
9090
9091       end_tok = skip_to_space (tok);
9092
9093       toklen = end_tok - tok;
9094
9095       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9096         {
9097           tok = cond_start = end_tok + 1;
9098           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9099           cond_end = tok;
9100           *cond_string = savestring (cond_start, cond_end - cond_start);
9101         }
9102       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9103         {
9104           const char *tmptok;
9105           struct thread_info *thr;
9106
9107           tok = end_tok + 1;
9108           thr = parse_thread_id (tok, &tmptok);
9109           if (tok == tmptok)
9110             error (_("Junk after thread keyword."));
9111           *thread = thr->global_num;
9112           tok = tmptok;
9113         }
9114       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9115         {
9116           char *tmptok;
9117
9118           tok = end_tok + 1;
9119           *task = strtol (tok, &tmptok, 0);
9120           if (tok == tmptok)
9121             error (_("Junk after task keyword."));
9122           if (!valid_task_id (*task))
9123             error (_("Unknown task %d."), *task);
9124           tok = tmptok;
9125         }
9126       else if (rest)
9127         {
9128           *rest = savestring (tok, strlen (tok));
9129           return;
9130         }
9131       else
9132         error (_("Junk at end of arguments."));
9133     }
9134 }
9135
9136 /* Decode a static tracepoint marker spec.  */
9137
9138 static std::vector<symtab_and_line>
9139 decode_static_tracepoint_spec (const char **arg_p)
9140 {
9141   const char *p = &(*arg_p)[3];
9142   const char *endp;
9143
9144   p = skip_spaces (p);
9145
9146   endp = skip_to_space (p);
9147
9148   std::string marker_str (p, endp - p);
9149
9150   std::vector<static_tracepoint_marker> markers
9151     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9152   if (markers.empty ())
9153     error (_("No known static tracepoint marker named %s"),
9154            marker_str.c_str ());
9155
9156   std::vector<symtab_and_line> sals;
9157   sals.reserve (markers.size ());
9158
9159   for (const static_tracepoint_marker &marker : markers)
9160     {
9161       symtab_and_line sal = find_pc_line (marker.address, 0);
9162       sal.pc = marker.address;
9163       sals.push_back (sal);
9164    }
9165
9166   *arg_p = endp;
9167   return sals;
9168 }
9169
9170 /* See breakpoint.h.  */
9171
9172 int
9173 create_breakpoint (struct gdbarch *gdbarch,
9174                    const struct event_location *location,
9175                    const char *cond_string,
9176                    int thread, const char *extra_string,
9177                    int parse_extra,
9178                    int tempflag, enum bptype type_wanted,
9179                    int ignore_count,
9180                    enum auto_boolean pending_break_support,
9181                    const struct breakpoint_ops *ops,
9182                    int from_tty, int enabled, int internal,
9183                    unsigned flags)
9184 {
9185   struct linespec_result canonical;
9186   int pending = 0;
9187   int task = 0;
9188   int prev_bkpt_count = breakpoint_count;
9189
9190   gdb_assert (ops != NULL);
9191
9192   /* If extra_string isn't useful, set it to NULL.  */
9193   if (extra_string != NULL && *extra_string == '\0')
9194     extra_string = NULL;
9195
9196   try
9197     {
9198       ops->create_sals_from_location (location, &canonical, type_wanted);
9199     }
9200   catch (const gdb_exception_error &e)
9201     {
9202       /* If caller is interested in rc value from parse, set
9203          value.  */
9204       if (e.error == NOT_FOUND_ERROR)
9205         {
9206           /* If pending breakpoint support is turned off, throw
9207              error.  */
9208
9209           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9210             throw;
9211
9212           exception_print (gdb_stderr, e);
9213
9214           /* If pending breakpoint support is auto query and the user
9215              selects no, then simply return the error code.  */
9216           if (pending_break_support == AUTO_BOOLEAN_AUTO
9217               && !nquery (_("Make %s pending on future shared library load? "),
9218                           bptype_string (type_wanted)))
9219             return 0;
9220
9221           /* At this point, either the user was queried about setting
9222              a pending breakpoint and selected yes, or pending
9223              breakpoint behavior is on and thus a pending breakpoint
9224              is defaulted on behalf of the user.  */
9225           pending = 1;
9226         }
9227       else
9228         throw;
9229     }
9230
9231   if (!pending && canonical.lsals.empty ())
9232     return 0;
9233
9234   /* Resolve all line numbers to PC's and verify that the addresses
9235      are ok for the target.  */
9236   if (!pending)
9237     {
9238       for (auto &lsal : canonical.lsals)
9239         breakpoint_sals_to_pc (lsal.sals);
9240     }
9241
9242   /* Fast tracepoints may have additional restrictions on location.  */
9243   if (!pending && type_wanted == bp_fast_tracepoint)
9244     {
9245       for (const auto &lsal : canonical.lsals)
9246         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9247     }
9248
9249   /* Verify that condition can be parsed, before setting any
9250      breakpoints.  Allocate a separate condition expression for each
9251      breakpoint.  */
9252   if (!pending)
9253     {
9254       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9255       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9256
9257       if (parse_extra)
9258         {
9259           char *rest;
9260           char *cond;
9261
9262           const linespec_sals &lsal = canonical.lsals[0];
9263
9264           /* Here we only parse 'arg' to separate condition
9265              from thread number, so parsing in context of first
9266              sal is OK.  When setting the breakpoint we'll
9267              re-parse it in context of each sal.  */
9268
9269           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9270                                      &cond, &thread, &task, &rest);
9271           cond_string_copy.reset (cond);
9272           extra_string_copy.reset (rest);
9273         }
9274       else
9275         {
9276           if (type_wanted != bp_dprintf
9277               && extra_string != NULL && *extra_string != '\0')
9278                 error (_("Garbage '%s' at end of location"), extra_string);
9279
9280           /* Create a private copy of condition string.  */
9281           if (cond_string)
9282             cond_string_copy.reset (xstrdup (cond_string));
9283           /* Create a private copy of any extra string.  */
9284           if (extra_string)
9285             extra_string_copy.reset (xstrdup (extra_string));
9286         }
9287
9288       ops->create_breakpoints_sal (gdbarch, &canonical,
9289                                    std::move (cond_string_copy),
9290                                    std::move (extra_string_copy),
9291                                    type_wanted,
9292                                    tempflag ? disp_del : disp_donttouch,
9293                                    thread, task, ignore_count, ops,
9294                                    from_tty, enabled, internal, flags);
9295     }
9296   else
9297     {
9298       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9299
9300       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9301       b->location = copy_event_location (location);
9302
9303       if (parse_extra)
9304         b->cond_string = NULL;
9305       else
9306         {
9307           /* Create a private copy of condition string.  */
9308           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9309           b->thread = thread;
9310         }
9311
9312       /* Create a private copy of any extra string.  */
9313       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9314       b->ignore_count = ignore_count;
9315       b->disposition = tempflag ? disp_del : disp_donttouch;
9316       b->condition_not_parsed = 1;
9317       b->enable_state = enabled ? bp_enabled : bp_disabled;
9318       if ((type_wanted != bp_breakpoint
9319            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9320         b->pspace = current_program_space;
9321
9322       install_breakpoint (internal, std::move (b), 0);
9323     }
9324   
9325   if (canonical.lsals.size () > 1)
9326     {
9327       warning (_("Multiple breakpoints were set.\nUse the "
9328                  "\"delete\" command to delete unwanted breakpoints."));
9329       prev_breakpoint_count = prev_bkpt_count;
9330     }
9331
9332   update_global_location_list (UGLL_MAY_INSERT);
9333
9334   return 1;
9335 }
9336
9337 /* Set a breakpoint.
9338    ARG is a string describing breakpoint address,
9339    condition, and thread.
9340    FLAG specifies if a breakpoint is hardware on,
9341    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9342    and BP_TEMPFLAG.  */
9343
9344 static void
9345 break_command_1 (const char *arg, int flag, int from_tty)
9346 {
9347   int tempflag = flag & BP_TEMPFLAG;
9348   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9349                              ? bp_hardware_breakpoint
9350                              : bp_breakpoint);
9351   struct breakpoint_ops *ops;
9352
9353   event_location_up location = string_to_event_location (&arg, current_language);
9354
9355   /* Matching breakpoints on probes.  */
9356   if (location != NULL
9357       && event_location_type (location.get ()) == PROBE_LOCATION)
9358     ops = &bkpt_probe_breakpoint_ops;
9359   else
9360     ops = &bkpt_breakpoint_ops;
9361
9362   create_breakpoint (get_current_arch (),
9363                      location.get (),
9364                      NULL, 0, arg, 1 /* parse arg */,
9365                      tempflag, type_wanted,
9366                      0 /* Ignore count */,
9367                      pending_break_support,
9368                      ops,
9369                      from_tty,
9370                      1 /* enabled */,
9371                      0 /* internal */,
9372                      0);
9373 }
9374
9375 /* Helper function for break_command_1 and disassemble_command.  */
9376
9377 void
9378 resolve_sal_pc (struct symtab_and_line *sal)
9379 {
9380   CORE_ADDR pc;
9381
9382   if (sal->pc == 0 && sal->symtab != NULL)
9383     {
9384       if (!find_line_pc (sal->symtab, sal->line, &pc))
9385         error (_("No line %d in file \"%s\"."),
9386                sal->line, symtab_to_filename_for_display (sal->symtab));
9387       sal->pc = pc;
9388
9389       /* If this SAL corresponds to a breakpoint inserted using a line
9390          number, then skip the function prologue if necessary.  */
9391       if (sal->explicit_line)
9392         skip_prologue_sal (sal);
9393     }
9394
9395   if (sal->section == 0 && sal->symtab != NULL)
9396     {
9397       const struct blockvector *bv;
9398       const struct block *b;
9399       struct symbol *sym;
9400
9401       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9402                                     SYMTAB_COMPUNIT (sal->symtab));
9403       if (bv != NULL)
9404         {
9405           sym = block_linkage_function (b);
9406           if (sym != NULL)
9407             {
9408               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9409               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9410                                                  sym);
9411             }
9412           else
9413             {
9414               /* It really is worthwhile to have the section, so we'll
9415                  just have to look harder. This case can be executed
9416                  if we have line numbers but no functions (as can
9417                  happen in assembly source).  */
9418
9419               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9420               switch_to_program_space_and_thread (sal->pspace);
9421
9422               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9423               if (msym.minsym)
9424                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9425             }
9426         }
9427     }
9428 }
9429
9430 void
9431 break_command (const char *arg, int from_tty)
9432 {
9433   break_command_1 (arg, 0, from_tty);
9434 }
9435
9436 void
9437 tbreak_command (const char *arg, int from_tty)
9438 {
9439   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9440 }
9441
9442 static void
9443 hbreak_command (const char *arg, int from_tty)
9444 {
9445   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9446 }
9447
9448 static void
9449 thbreak_command (const char *arg, int from_tty)
9450 {
9451   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9452 }
9453
9454 static void
9455 stop_command (const char *arg, int from_tty)
9456 {
9457   printf_filtered (_("Specify the type of breakpoint to set.\n\
9458 Usage: stop in <function | address>\n\
9459        stop at <line>\n"));
9460 }
9461
9462 static void
9463 stopin_command (const char *arg, int from_tty)
9464 {
9465   int badInput = 0;
9466
9467   if (arg == NULL)
9468     badInput = 1;
9469   else if (*arg != '*')
9470     {
9471       const char *argptr = arg;
9472       int hasColon = 0;
9473
9474       /* Look for a ':'.  If this is a line number specification, then
9475          say it is bad, otherwise, it should be an address or
9476          function/method name.  */
9477       while (*argptr && !hasColon)
9478         {
9479           hasColon = (*argptr == ':');
9480           argptr++;
9481         }
9482
9483       if (hasColon)
9484         badInput = (*argptr != ':');    /* Not a class::method */
9485       else
9486         badInput = isdigit (*arg);      /* a simple line number */
9487     }
9488
9489   if (badInput)
9490     printf_filtered (_("Usage: stop in <function | address>\n"));
9491   else
9492     break_command_1 (arg, 0, from_tty);
9493 }
9494
9495 static void
9496 stopat_command (const char *arg, int from_tty)
9497 {
9498   int badInput = 0;
9499
9500   if (arg == NULL || *arg == '*')       /* no line number */
9501     badInput = 1;
9502   else
9503     {
9504       const char *argptr = arg;
9505       int hasColon = 0;
9506
9507       /* Look for a ':'.  If there is a '::' then get out, otherwise
9508          it is probably a line number.  */
9509       while (*argptr && !hasColon)
9510         {
9511           hasColon = (*argptr == ':');
9512           argptr++;
9513         }
9514
9515       if (hasColon)
9516         badInput = (*argptr == ':');    /* we have class::method */
9517       else
9518         badInput = !isdigit (*arg);     /* not a line number */
9519     }
9520
9521   if (badInput)
9522     printf_filtered (_("Usage: stop at LINE\n"));
9523   else
9524     break_command_1 (arg, 0, from_tty);
9525 }
9526
9527 /* The dynamic printf command is mostly like a regular breakpoint, but
9528    with a prewired command list consisting of a single output command,
9529    built from extra arguments supplied on the dprintf command
9530    line.  */
9531
9532 static void
9533 dprintf_command (const char *arg, int from_tty)
9534 {
9535   event_location_up location = string_to_event_location (&arg, current_language);
9536
9537   /* If non-NULL, ARG should have been advanced past the location;
9538      the next character must be ','.  */
9539   if (arg != NULL)
9540     {
9541       if (arg[0] != ',' || arg[1] == '\0')
9542         error (_("Format string required"));
9543       else
9544         {
9545           /* Skip the comma.  */
9546           ++arg;
9547         }
9548     }
9549
9550   create_breakpoint (get_current_arch (),
9551                      location.get (),
9552                      NULL, 0, arg, 1 /* parse arg */,
9553                      0, bp_dprintf,
9554                      0 /* Ignore count */,
9555                      pending_break_support,
9556                      &dprintf_breakpoint_ops,
9557                      from_tty,
9558                      1 /* enabled */,
9559                      0 /* internal */,
9560                      0);
9561 }
9562
9563 static void
9564 agent_printf_command (const char *arg, int from_tty)
9565 {
9566   error (_("May only run agent-printf on the target"));
9567 }
9568
9569 /* Implement the "breakpoint_hit" breakpoint_ops method for
9570    ranged breakpoints.  */
9571
9572 static int
9573 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9574                                   const address_space *aspace,
9575                                   CORE_ADDR bp_addr,
9576                                   const struct target_waitstatus *ws)
9577 {
9578   if (ws->kind != TARGET_WAITKIND_STOPPED
9579       || ws->value.sig != GDB_SIGNAL_TRAP)
9580     return 0;
9581
9582   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9583                                          bl->length, aspace, bp_addr);
9584 }
9585
9586 /* Implement the "resources_needed" breakpoint_ops method for
9587    ranged breakpoints.  */
9588
9589 static int
9590 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9591 {
9592   return target_ranged_break_num_registers ();
9593 }
9594
9595 /* Implement the "print_it" breakpoint_ops method for
9596    ranged breakpoints.  */
9597
9598 static enum print_stop_action
9599 print_it_ranged_breakpoint (bpstat bs)
9600 {
9601   struct breakpoint *b = bs->breakpoint_at;
9602   struct bp_location *bl = b->loc;
9603   struct ui_out *uiout = current_uiout;
9604
9605   gdb_assert (b->type == bp_hardware_breakpoint);
9606
9607   /* Ranged breakpoints have only one location.  */
9608   gdb_assert (bl && bl->next == NULL);
9609
9610   annotate_breakpoint (b->number);
9611
9612   maybe_print_thread_hit_breakpoint (uiout);
9613
9614   if (b->disposition == disp_del)
9615     uiout->text ("Temporary ranged breakpoint ");
9616   else
9617     uiout->text ("Ranged breakpoint ");
9618   if (uiout->is_mi_like_p ())
9619     {
9620       uiout->field_string ("reason",
9621                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9622       uiout->field_string ("disp", bpdisp_text (b->disposition));
9623     }
9624   uiout->field_int ("bkptno", b->number);
9625   uiout->text (", ");
9626
9627   return PRINT_SRC_AND_LOC;
9628 }
9629
9630 /* Implement the "print_one" breakpoint_ops method for
9631    ranged breakpoints.  */
9632
9633 static void
9634 print_one_ranged_breakpoint (struct breakpoint *b,
9635                              struct bp_location **last_loc)
9636 {
9637   struct bp_location *bl = b->loc;
9638   struct value_print_options opts;
9639   struct ui_out *uiout = current_uiout;
9640
9641   /* Ranged breakpoints have only one location.  */
9642   gdb_assert (bl && bl->next == NULL);
9643
9644   get_user_print_options (&opts);
9645
9646   if (opts.addressprint)
9647     /* We don't print the address range here, it will be printed later
9648        by print_one_detail_ranged_breakpoint.  */
9649     uiout->field_skip ("addr");
9650   annotate_field (5);
9651   print_breakpoint_location (b, bl);
9652   *last_loc = bl;
9653 }
9654
9655 /* Implement the "print_one_detail" breakpoint_ops method for
9656    ranged breakpoints.  */
9657
9658 static void
9659 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9660                                     struct ui_out *uiout)
9661 {
9662   CORE_ADDR address_start, address_end;
9663   struct bp_location *bl = b->loc;
9664   string_file stb;
9665
9666   gdb_assert (bl);
9667
9668   address_start = bl->address;
9669   address_end = address_start + bl->length - 1;
9670
9671   uiout->text ("\taddress range: ");
9672   stb.printf ("[%s, %s]",
9673               print_core_address (bl->gdbarch, address_start),
9674               print_core_address (bl->gdbarch, address_end));
9675   uiout->field_stream ("addr", stb);
9676   uiout->text ("\n");
9677 }
9678
9679 /* Implement the "print_mention" breakpoint_ops method for
9680    ranged breakpoints.  */
9681
9682 static void
9683 print_mention_ranged_breakpoint (struct breakpoint *b)
9684 {
9685   struct bp_location *bl = b->loc;
9686   struct ui_out *uiout = current_uiout;
9687
9688   gdb_assert (bl);
9689   gdb_assert (b->type == bp_hardware_breakpoint);
9690
9691   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9692                   b->number, paddress (bl->gdbarch, bl->address),
9693                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9694 }
9695
9696 /* Implement the "print_recreate" breakpoint_ops method for
9697    ranged breakpoints.  */
9698
9699 static void
9700 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9701 {
9702   fprintf_unfiltered (fp, "break-range %s, %s",
9703                       event_location_to_string (b->location.get ()),
9704                       event_location_to_string (b->location_range_end.get ()));
9705   print_recreate_thread (b, fp);
9706 }
9707
9708 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9709
9710 static struct breakpoint_ops ranged_breakpoint_ops;
9711
9712 /* Find the address where the end of the breakpoint range should be
9713    placed, given the SAL of the end of the range.  This is so that if
9714    the user provides a line number, the end of the range is set to the
9715    last instruction of the given line.  */
9716
9717 static CORE_ADDR
9718 find_breakpoint_range_end (struct symtab_and_line sal)
9719 {
9720   CORE_ADDR end;
9721
9722   /* If the user provided a PC value, use it.  Otherwise,
9723      find the address of the end of the given location.  */
9724   if (sal.explicit_pc)
9725     end = sal.pc;
9726   else
9727     {
9728       int ret;
9729       CORE_ADDR start;
9730
9731       ret = find_line_pc_range (sal, &start, &end);
9732       if (!ret)
9733         error (_("Could not find location of the end of the range."));
9734
9735       /* find_line_pc_range returns the start of the next line.  */
9736       end--;
9737     }
9738
9739   return end;
9740 }
9741
9742 /* Implement the "break-range" CLI command.  */
9743
9744 static void
9745 break_range_command (const char *arg, int from_tty)
9746 {
9747   const char *arg_start;
9748   struct linespec_result canonical_start, canonical_end;
9749   int bp_count, can_use_bp, length;
9750   CORE_ADDR end;
9751   struct breakpoint *b;
9752
9753   /* We don't support software ranged breakpoints.  */
9754   if (target_ranged_break_num_registers () < 0)
9755     error (_("This target does not support hardware ranged breakpoints."));
9756
9757   bp_count = hw_breakpoint_used_count ();
9758   bp_count += target_ranged_break_num_registers ();
9759   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9760                                                    bp_count, 0);
9761   if (can_use_bp < 0)
9762     error (_("Hardware breakpoints used exceeds limit."));
9763
9764   arg = skip_spaces (arg);
9765   if (arg == NULL || arg[0] == '\0')
9766     error(_("No address range specified."));
9767
9768   arg_start = arg;
9769   event_location_up start_location = string_to_event_location (&arg,
9770                                                                current_language);
9771   parse_breakpoint_sals (start_location.get (), &canonical_start);
9772
9773   if (arg[0] != ',')
9774     error (_("Too few arguments."));
9775   else if (canonical_start.lsals.empty ())
9776     error (_("Could not find location of the beginning of the range."));
9777
9778   const linespec_sals &lsal_start = canonical_start.lsals[0];
9779
9780   if (canonical_start.lsals.size () > 1
9781       || lsal_start.sals.size () != 1)
9782     error (_("Cannot create a ranged breakpoint with multiple locations."));
9783
9784   const symtab_and_line &sal_start = lsal_start.sals[0];
9785   std::string addr_string_start (arg_start, arg - arg_start);
9786
9787   arg++;        /* Skip the comma.  */
9788   arg = skip_spaces (arg);
9789
9790   /* Parse the end location.  */
9791
9792   arg_start = arg;
9793
9794   /* We call decode_line_full directly here instead of using
9795      parse_breakpoint_sals because we need to specify the start location's
9796      symtab and line as the default symtab and line for the end of the
9797      range.  This makes it possible to have ranges like "foo.c:27, +14",
9798      where +14 means 14 lines from the start location.  */
9799   event_location_up end_location = string_to_event_location (&arg,
9800                                                              current_language);
9801   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9802                     sal_start.symtab, sal_start.line,
9803                     &canonical_end, NULL, NULL);
9804
9805   if (canonical_end.lsals.empty ())
9806     error (_("Could not find location of the end of the range."));
9807
9808   const linespec_sals &lsal_end = canonical_end.lsals[0];
9809   if (canonical_end.lsals.size () > 1
9810       || lsal_end.sals.size () != 1)
9811     error (_("Cannot create a ranged breakpoint with multiple locations."));
9812
9813   const symtab_and_line &sal_end = lsal_end.sals[0];
9814
9815   end = find_breakpoint_range_end (sal_end);
9816   if (sal_start.pc > end)
9817     error (_("Invalid address range, end precedes start."));
9818
9819   length = end - sal_start.pc + 1;
9820   if (length < 0)
9821     /* Length overflowed.  */
9822     error (_("Address range too large."));
9823   else if (length == 1)
9824     {
9825       /* This range is simple enough to be handled by
9826          the `hbreak' command.  */
9827       hbreak_command (&addr_string_start[0], 1);
9828
9829       return;
9830     }
9831
9832   /* Now set up the breakpoint.  */
9833   b = set_raw_breakpoint (get_current_arch (), sal_start,
9834                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9835   set_breakpoint_count (breakpoint_count + 1);
9836   b->number = breakpoint_count;
9837   b->disposition = disp_donttouch;
9838   b->location = std::move (start_location);
9839   b->location_range_end = std::move (end_location);
9840   b->loc->length = length;
9841
9842   mention (b);
9843   gdb::observers::breakpoint_created.notify (b);
9844   update_global_location_list (UGLL_MAY_INSERT);
9845 }
9846
9847 /*  Return non-zero if EXP is verified as constant.  Returned zero
9848     means EXP is variable.  Also the constant detection may fail for
9849     some constant expressions and in such case still falsely return
9850     zero.  */
9851
9852 static int
9853 watchpoint_exp_is_const (const struct expression *exp)
9854 {
9855   int i = exp->nelts;
9856
9857   while (i > 0)
9858     {
9859       int oplenp, argsp;
9860
9861       /* We are only interested in the descriptor of each element.  */
9862       operator_length (exp, i, &oplenp, &argsp);
9863       i -= oplenp;
9864
9865       switch (exp->elts[i].opcode)
9866         {
9867         case BINOP_ADD:
9868         case BINOP_SUB:
9869         case BINOP_MUL:
9870         case BINOP_DIV:
9871         case BINOP_REM:
9872         case BINOP_MOD:
9873         case BINOP_LSH:
9874         case BINOP_RSH:
9875         case BINOP_LOGICAL_AND:
9876         case BINOP_LOGICAL_OR:
9877         case BINOP_BITWISE_AND:
9878         case BINOP_BITWISE_IOR:
9879         case BINOP_BITWISE_XOR:
9880         case BINOP_EQUAL:
9881         case BINOP_NOTEQUAL:
9882         case BINOP_LESS:
9883         case BINOP_GTR:
9884         case BINOP_LEQ:
9885         case BINOP_GEQ:
9886         case BINOP_REPEAT:
9887         case BINOP_COMMA:
9888         case BINOP_EXP:
9889         case BINOP_MIN:
9890         case BINOP_MAX:
9891         case BINOP_INTDIV:
9892         case BINOP_CONCAT:
9893         case TERNOP_COND:
9894         case TERNOP_SLICE:
9895
9896         case OP_LONG:
9897         case OP_FLOAT:
9898         case OP_LAST:
9899         case OP_COMPLEX:
9900         case OP_STRING:
9901         case OP_ARRAY:
9902         case OP_TYPE:
9903         case OP_TYPEOF:
9904         case OP_DECLTYPE:
9905         case OP_TYPEID:
9906         case OP_NAME:
9907         case OP_OBJC_NSSTRING:
9908
9909         case UNOP_NEG:
9910         case UNOP_LOGICAL_NOT:
9911         case UNOP_COMPLEMENT:
9912         case UNOP_ADDR:
9913         case UNOP_HIGH:
9914         case UNOP_CAST:
9915
9916         case UNOP_CAST_TYPE:
9917         case UNOP_REINTERPRET_CAST:
9918         case UNOP_DYNAMIC_CAST:
9919           /* Unary, binary and ternary operators: We have to check
9920              their operands.  If they are constant, then so is the
9921              result of that operation.  For instance, if A and B are
9922              determined to be constants, then so is "A + B".
9923
9924              UNOP_IND is one exception to the rule above, because the
9925              value of *ADDR is not necessarily a constant, even when
9926              ADDR is.  */
9927           break;
9928
9929         case OP_VAR_VALUE:
9930           /* Check whether the associated symbol is a constant.
9931
9932              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9933              possible that a buggy compiler could mark a variable as
9934              constant even when it is not, and TYPE_CONST would return
9935              true in this case, while SYMBOL_CLASS wouldn't.
9936
9937              We also have to check for function symbols because they
9938              are always constant.  */
9939           {
9940             struct symbol *s = exp->elts[i + 2].symbol;
9941
9942             if (SYMBOL_CLASS (s) != LOC_BLOCK
9943                 && SYMBOL_CLASS (s) != LOC_CONST
9944                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9945               return 0;
9946             break;
9947           }
9948
9949         /* The default action is to return 0 because we are using
9950            the optimistic approach here: If we don't know something,
9951            then it is not a constant.  */
9952         default:
9953           return 0;
9954         }
9955     }
9956
9957   return 1;
9958 }
9959
9960 /* Watchpoint destructor.  */
9961
9962 watchpoint::~watchpoint ()
9963 {
9964   xfree (this->exp_string);
9965   xfree (this->exp_string_reparse);
9966 }
9967
9968 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9969
9970 static void
9971 re_set_watchpoint (struct breakpoint *b)
9972 {
9973   struct watchpoint *w = (struct watchpoint *) b;
9974
9975   /* Watchpoint can be either on expression using entirely global
9976      variables, or it can be on local variables.
9977
9978      Watchpoints of the first kind are never auto-deleted, and even
9979      persist across program restarts.  Since they can use variables
9980      from shared libraries, we need to reparse expression as libraries
9981      are loaded and unloaded.
9982
9983      Watchpoints on local variables can also change meaning as result
9984      of solib event.  For example, if a watchpoint uses both a local
9985      and a global variables in expression, it's a local watchpoint,
9986      but unloading of a shared library will make the expression
9987      invalid.  This is not a very common use case, but we still
9988      re-evaluate expression, to avoid surprises to the user.
9989
9990      Note that for local watchpoints, we re-evaluate it only if
9991      watchpoints frame id is still valid.  If it's not, it means the
9992      watchpoint is out of scope and will be deleted soon.  In fact,
9993      I'm not sure we'll ever be called in this case.
9994
9995      If a local watchpoint's frame id is still valid, then
9996      w->exp_valid_block is likewise valid, and we can safely use it.
9997
9998      Don't do anything about disabled watchpoints, since they will be
9999      reevaluated again when enabled.  */
10000   update_watchpoint (w, 1 /* reparse */);
10001 }
10002
10003 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10004
10005 static int
10006 insert_watchpoint (struct bp_location *bl)
10007 {
10008   struct watchpoint *w = (struct watchpoint *) bl->owner;
10009   int length = w->exact ? 1 : bl->length;
10010
10011   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10012                                    w->cond_exp.get ());
10013 }
10014
10015 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10016
10017 static int
10018 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10019 {
10020   struct watchpoint *w = (struct watchpoint *) bl->owner;
10021   int length = w->exact ? 1 : bl->length;
10022
10023   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10024                                    w->cond_exp.get ());
10025 }
10026
10027 static int
10028 breakpoint_hit_watchpoint (const struct bp_location *bl,
10029                            const address_space *aspace, CORE_ADDR bp_addr,
10030                            const struct target_waitstatus *ws)
10031 {
10032   struct breakpoint *b = bl->owner;
10033   struct watchpoint *w = (struct watchpoint *) b;
10034
10035   /* Continuable hardware watchpoints are treated as non-existent if the
10036      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10037      some data address).  Otherwise gdb won't stop on a break instruction
10038      in the code (not from a breakpoint) when a hardware watchpoint has
10039      been defined.  Also skip watchpoints which we know did not trigger
10040      (did not match the data address).  */
10041   if (is_hardware_watchpoint (b)
10042       && w->watchpoint_triggered == watch_triggered_no)
10043     return 0;
10044
10045   return 1;
10046 }
10047
10048 static void
10049 check_status_watchpoint (bpstat bs)
10050 {
10051   gdb_assert (is_watchpoint (bs->breakpoint_at));
10052
10053   bpstat_check_watchpoint (bs);
10054 }
10055
10056 /* Implement the "resources_needed" breakpoint_ops method for
10057    hardware watchpoints.  */
10058
10059 static int
10060 resources_needed_watchpoint (const struct bp_location *bl)
10061 {
10062   struct watchpoint *w = (struct watchpoint *) bl->owner;
10063   int length = w->exact? 1 : bl->length;
10064
10065   return target_region_ok_for_hw_watchpoint (bl->address, length);
10066 }
10067
10068 /* Implement the "works_in_software_mode" breakpoint_ops method for
10069    hardware watchpoints.  */
10070
10071 static int
10072 works_in_software_mode_watchpoint (const struct breakpoint *b)
10073 {
10074   /* Read and access watchpoints only work with hardware support.  */
10075   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10076 }
10077
10078 static enum print_stop_action
10079 print_it_watchpoint (bpstat bs)
10080 {
10081   struct breakpoint *b;
10082   enum print_stop_action result;
10083   struct watchpoint *w;
10084   struct ui_out *uiout = current_uiout;
10085
10086   gdb_assert (bs->bp_location_at != NULL);
10087
10088   b = bs->breakpoint_at;
10089   w = (struct watchpoint *) b;
10090
10091   annotate_watchpoint (b->number);
10092   maybe_print_thread_hit_breakpoint (uiout);
10093
10094   string_file stb;
10095
10096   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10097   switch (b->type)
10098     {
10099     case bp_watchpoint:
10100     case bp_hardware_watchpoint:
10101       if (uiout->is_mi_like_p ())
10102         uiout->field_string
10103           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10104       mention (b);
10105       tuple_emitter.emplace (uiout, "value");
10106       uiout->text ("\nOld value = ");
10107       watchpoint_value_print (bs->old_val.get (), &stb);
10108       uiout->field_stream ("old", stb);
10109       uiout->text ("\nNew value = ");
10110       watchpoint_value_print (w->val.get (), &stb);
10111       uiout->field_stream ("new", stb);
10112       uiout->text ("\n");
10113       /* More than one watchpoint may have been triggered.  */
10114       result = PRINT_UNKNOWN;
10115       break;
10116
10117     case bp_read_watchpoint:
10118       if (uiout->is_mi_like_p ())
10119         uiout->field_string
10120           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10121       mention (b);
10122       tuple_emitter.emplace (uiout, "value");
10123       uiout->text ("\nValue = ");
10124       watchpoint_value_print (w->val.get (), &stb);
10125       uiout->field_stream ("value", stb);
10126       uiout->text ("\n");
10127       result = PRINT_UNKNOWN;
10128       break;
10129
10130     case bp_access_watchpoint:
10131       if (bs->old_val != NULL)
10132         {
10133           if (uiout->is_mi_like_p ())
10134             uiout->field_string
10135               ("reason",
10136                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10137           mention (b);
10138           tuple_emitter.emplace (uiout, "value");
10139           uiout->text ("\nOld value = ");
10140           watchpoint_value_print (bs->old_val.get (), &stb);
10141           uiout->field_stream ("old", stb);
10142           uiout->text ("\nNew value = ");
10143         }
10144       else
10145         {
10146           mention (b);
10147           if (uiout->is_mi_like_p ())
10148             uiout->field_string
10149               ("reason",
10150                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10151           tuple_emitter.emplace (uiout, "value");
10152           uiout->text ("\nValue = ");
10153         }
10154       watchpoint_value_print (w->val.get (), &stb);
10155       uiout->field_stream ("new", stb);
10156       uiout->text ("\n");
10157       result = PRINT_UNKNOWN;
10158       break;
10159     default:
10160       result = PRINT_UNKNOWN;
10161     }
10162
10163   return result;
10164 }
10165
10166 /* Implement the "print_mention" breakpoint_ops method for hardware
10167    watchpoints.  */
10168
10169 static void
10170 print_mention_watchpoint (struct breakpoint *b)
10171 {
10172   struct watchpoint *w = (struct watchpoint *) b;
10173   struct ui_out *uiout = current_uiout;
10174   const char *tuple_name;
10175
10176   switch (b->type)
10177     {
10178     case bp_watchpoint:
10179       uiout->text ("Watchpoint ");
10180       tuple_name = "wpt";
10181       break;
10182     case bp_hardware_watchpoint:
10183       uiout->text ("Hardware watchpoint ");
10184       tuple_name = "wpt";
10185       break;
10186     case bp_read_watchpoint:
10187       uiout->text ("Hardware read watchpoint ");
10188       tuple_name = "hw-rwpt";
10189       break;
10190     case bp_access_watchpoint:
10191       uiout->text ("Hardware access (read/write) watchpoint ");
10192       tuple_name = "hw-awpt";
10193       break;
10194     default:
10195       internal_error (__FILE__, __LINE__,
10196                       _("Invalid hardware watchpoint type."));
10197     }
10198
10199   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10200   uiout->field_int ("number", b->number);
10201   uiout->text (": ");
10202   uiout->field_string ("exp", w->exp_string);
10203 }
10204
10205 /* Implement the "print_recreate" breakpoint_ops method for
10206    watchpoints.  */
10207
10208 static void
10209 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10210 {
10211   struct watchpoint *w = (struct watchpoint *) b;
10212
10213   switch (b->type)
10214     {
10215     case bp_watchpoint:
10216     case bp_hardware_watchpoint:
10217       fprintf_unfiltered (fp, "watch");
10218       break;
10219     case bp_read_watchpoint:
10220       fprintf_unfiltered (fp, "rwatch");
10221       break;
10222     case bp_access_watchpoint:
10223       fprintf_unfiltered (fp, "awatch");
10224       break;
10225     default:
10226       internal_error (__FILE__, __LINE__,
10227                       _("Invalid watchpoint type."));
10228     }
10229
10230   fprintf_unfiltered (fp, " %s", w->exp_string);
10231   print_recreate_thread (b, fp);
10232 }
10233
10234 /* Implement the "explains_signal" breakpoint_ops method for
10235    watchpoints.  */
10236
10237 static int
10238 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10239 {
10240   /* A software watchpoint cannot cause a signal other than
10241      GDB_SIGNAL_TRAP.  */
10242   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10243     return 0;
10244
10245   return 1;
10246 }
10247
10248 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10249
10250 static struct breakpoint_ops watchpoint_breakpoint_ops;
10251
10252 /* Implement the "insert" breakpoint_ops method for
10253    masked hardware watchpoints.  */
10254
10255 static int
10256 insert_masked_watchpoint (struct bp_location *bl)
10257 {
10258   struct watchpoint *w = (struct watchpoint *) bl->owner;
10259
10260   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10261                                         bl->watchpoint_type);
10262 }
10263
10264 /* Implement the "remove" breakpoint_ops method for
10265    masked hardware watchpoints.  */
10266
10267 static int
10268 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10269 {
10270   struct watchpoint *w = (struct watchpoint *) bl->owner;
10271
10272   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10273                                         bl->watchpoint_type);
10274 }
10275
10276 /* Implement the "resources_needed" breakpoint_ops method for
10277    masked hardware watchpoints.  */
10278
10279 static int
10280 resources_needed_masked_watchpoint (const struct bp_location *bl)
10281 {
10282   struct watchpoint *w = (struct watchpoint *) bl->owner;
10283
10284   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10285 }
10286
10287 /* Implement the "works_in_software_mode" breakpoint_ops method for
10288    masked hardware watchpoints.  */
10289
10290 static int
10291 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10292 {
10293   return 0;
10294 }
10295
10296 /* Implement the "print_it" breakpoint_ops method for
10297    masked hardware watchpoints.  */
10298
10299 static enum print_stop_action
10300 print_it_masked_watchpoint (bpstat bs)
10301 {
10302   struct breakpoint *b = bs->breakpoint_at;
10303   struct ui_out *uiout = current_uiout;
10304
10305   /* Masked watchpoints have only one location.  */
10306   gdb_assert (b->loc && b->loc->next == NULL);
10307
10308   annotate_watchpoint (b->number);
10309   maybe_print_thread_hit_breakpoint (uiout);
10310
10311   switch (b->type)
10312     {
10313     case bp_hardware_watchpoint:
10314       if (uiout->is_mi_like_p ())
10315         uiout->field_string
10316           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10317       break;
10318
10319     case bp_read_watchpoint:
10320       if (uiout->is_mi_like_p ())
10321         uiout->field_string
10322           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10323       break;
10324
10325     case bp_access_watchpoint:
10326       if (uiout->is_mi_like_p ())
10327         uiout->field_string
10328           ("reason",
10329            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10330       break;
10331     default:
10332       internal_error (__FILE__, __LINE__,
10333                       _("Invalid hardware watchpoint type."));
10334     }
10335
10336   mention (b);
10337   uiout->text (_("\n\
10338 Check the underlying instruction at PC for the memory\n\
10339 address and value which triggered this watchpoint.\n"));
10340   uiout->text ("\n");
10341
10342   /* More than one watchpoint may have been triggered.  */
10343   return PRINT_UNKNOWN;
10344 }
10345
10346 /* Implement the "print_one_detail" breakpoint_ops method for
10347    masked hardware watchpoints.  */
10348
10349 static void
10350 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10351                                     struct ui_out *uiout)
10352 {
10353   struct watchpoint *w = (struct watchpoint *) b;
10354
10355   /* Masked watchpoints have only one location.  */
10356   gdb_assert (b->loc && b->loc->next == NULL);
10357
10358   uiout->text ("\tmask ");
10359   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10360   uiout->text ("\n");
10361 }
10362
10363 /* Implement the "print_mention" breakpoint_ops method for
10364    masked hardware watchpoints.  */
10365
10366 static void
10367 print_mention_masked_watchpoint (struct breakpoint *b)
10368 {
10369   struct watchpoint *w = (struct watchpoint *) b;
10370   struct ui_out *uiout = current_uiout;
10371   const char *tuple_name;
10372
10373   switch (b->type)
10374     {
10375     case bp_hardware_watchpoint:
10376       uiout->text ("Masked hardware watchpoint ");
10377       tuple_name = "wpt";
10378       break;
10379     case bp_read_watchpoint:
10380       uiout->text ("Masked hardware read watchpoint ");
10381       tuple_name = "hw-rwpt";
10382       break;
10383     case bp_access_watchpoint:
10384       uiout->text ("Masked hardware access (read/write) watchpoint ");
10385       tuple_name = "hw-awpt";
10386       break;
10387     default:
10388       internal_error (__FILE__, __LINE__,
10389                       _("Invalid hardware watchpoint type."));
10390     }
10391
10392   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10393   uiout->field_int ("number", b->number);
10394   uiout->text (": ");
10395   uiout->field_string ("exp", w->exp_string);
10396 }
10397
10398 /* Implement the "print_recreate" breakpoint_ops method for
10399    masked hardware watchpoints.  */
10400
10401 static void
10402 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10403 {
10404   struct watchpoint *w = (struct watchpoint *) b;
10405   char tmp[40];
10406
10407   switch (b->type)
10408     {
10409     case bp_hardware_watchpoint:
10410       fprintf_unfiltered (fp, "watch");
10411       break;
10412     case bp_read_watchpoint:
10413       fprintf_unfiltered (fp, "rwatch");
10414       break;
10415     case bp_access_watchpoint:
10416       fprintf_unfiltered (fp, "awatch");
10417       break;
10418     default:
10419       internal_error (__FILE__, __LINE__,
10420                       _("Invalid hardware watchpoint type."));
10421     }
10422
10423   sprintf_vma (tmp, w->hw_wp_mask);
10424   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10425   print_recreate_thread (b, fp);
10426 }
10427
10428 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10429
10430 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10431
10432 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10433
10434 static bool
10435 is_masked_watchpoint (const struct breakpoint *b)
10436 {
10437   return b->ops == &masked_watchpoint_breakpoint_ops;
10438 }
10439
10440 /* accessflag:  hw_write:  watch write, 
10441                 hw_read:   watch read, 
10442                 hw_access: watch access (read or write) */
10443 static void
10444 watch_command_1 (const char *arg, int accessflag, int from_tty,
10445                  int just_location, int internal)
10446 {
10447   struct breakpoint *scope_breakpoint = NULL;
10448   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10449   struct value *result;
10450   int saved_bitpos = 0, saved_bitsize = 0;
10451   const char *exp_start = NULL;
10452   const char *exp_end = NULL;
10453   const char *tok, *end_tok;
10454   int toklen = -1;
10455   const char *cond_start = NULL;
10456   const char *cond_end = NULL;
10457   enum bptype bp_type;
10458   int thread = -1;
10459   int pc = 0;
10460   /* Flag to indicate whether we are going to use masks for
10461      the hardware watchpoint.  */
10462   int use_mask = 0;
10463   CORE_ADDR mask = 0;
10464
10465   /* Make sure that we actually have parameters to parse.  */
10466   if (arg != NULL && arg[0] != '\0')
10467     {
10468       const char *value_start;
10469
10470       exp_end = arg + strlen (arg);
10471
10472       /* Look for "parameter value" pairs at the end
10473          of the arguments string.  */
10474       for (tok = exp_end - 1; tok > arg; tok--)
10475         {
10476           /* Skip whitespace at the end of the argument list.  */
10477           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10478             tok--;
10479
10480           /* Find the beginning of the last token.
10481              This is the value of the parameter.  */
10482           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10483             tok--;
10484           value_start = tok + 1;
10485
10486           /* Skip whitespace.  */
10487           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10488             tok--;
10489
10490           end_tok = tok;
10491
10492           /* Find the beginning of the second to last token.
10493              This is the parameter itself.  */
10494           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10495             tok--;
10496           tok++;
10497           toklen = end_tok - tok + 1;
10498
10499           if (toklen == 6 && startswith (tok, "thread"))
10500             {
10501               struct thread_info *thr;
10502               /* At this point we've found a "thread" token, which means
10503                  the user is trying to set a watchpoint that triggers
10504                  only in a specific thread.  */
10505               const char *endp;
10506
10507               if (thread != -1)
10508                 error(_("You can specify only one thread."));
10509
10510               /* Extract the thread ID from the next token.  */
10511               thr = parse_thread_id (value_start, &endp);
10512
10513               /* Check if the user provided a valid thread ID.  */
10514               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10515                 invalid_thread_id_error (value_start);
10516
10517               thread = thr->global_num;
10518             }
10519           else if (toklen == 4 && startswith (tok, "mask"))
10520             {
10521               /* We've found a "mask" token, which means the user wants to
10522                  create a hardware watchpoint that is going to have the mask
10523                  facility.  */
10524               struct value *mask_value, *mark;
10525
10526               if (use_mask)
10527                 error(_("You can specify only one mask."));
10528
10529               use_mask = just_location = 1;
10530
10531               mark = value_mark ();
10532               mask_value = parse_to_comma_and_eval (&value_start);
10533               mask = value_as_address (mask_value);
10534               value_free_to_mark (mark);
10535             }
10536           else
10537             /* We didn't recognize what we found.  We should stop here.  */
10538             break;
10539
10540           /* Truncate the string and get rid of the "parameter value" pair before
10541              the arguments string is parsed by the parse_exp_1 function.  */
10542           exp_end = tok;
10543         }
10544     }
10545   else
10546     exp_end = arg;
10547
10548   /* Parse the rest of the arguments.  From here on out, everything
10549      is in terms of a newly allocated string instead of the original
10550      ARG.  */
10551   std::string expression (arg, exp_end - arg);
10552   exp_start = arg = expression.c_str ();
10553   innermost_block_tracker tracker;
10554   expression_up exp = parse_exp_1 (&arg, 0, 0, 0, &tracker);
10555   exp_end = arg;
10556   /* Remove trailing whitespace from the expression before saving it.
10557      This makes the eventual display of the expression string a bit
10558      prettier.  */
10559   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10560     --exp_end;
10561
10562   /* Checking if the expression is not constant.  */
10563   if (watchpoint_exp_is_const (exp.get ()))
10564     {
10565       int len;
10566
10567       len = exp_end - exp_start;
10568       while (len > 0 && isspace (exp_start[len - 1]))
10569         len--;
10570       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10571     }
10572
10573   exp_valid_block = tracker.block ();
10574   struct value *mark = value_mark ();
10575   struct value *val_as_value = nullptr;
10576   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10577                       just_location);
10578
10579   if (val_as_value != NULL && just_location)
10580     {
10581       saved_bitpos = value_bitpos (val_as_value);
10582       saved_bitsize = value_bitsize (val_as_value);
10583     }
10584
10585   value_ref_ptr val;
10586   if (just_location)
10587     {
10588       int ret;
10589
10590       exp_valid_block = NULL;
10591       val = release_value (value_addr (result));
10592       value_free_to_mark (mark);
10593
10594       if (use_mask)
10595         {
10596           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10597                                                    mask);
10598           if (ret == -1)
10599             error (_("This target does not support masked watchpoints."));
10600           else if (ret == -2)
10601             error (_("Invalid mask or memory region."));
10602         }
10603     }
10604   else if (val_as_value != NULL)
10605     val = release_value (val_as_value);
10606
10607   tok = skip_spaces (arg);
10608   end_tok = skip_to_space (tok);
10609
10610   toklen = end_tok - tok;
10611   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10612     {
10613       tok = cond_start = end_tok + 1;
10614       innermost_block_tracker if_tracker;
10615       parse_exp_1 (&tok, 0, 0, 0, &if_tracker);
10616
10617       /* The watchpoint expression may not be local, but the condition
10618          may still be.  E.g.: `watch global if local > 0'.  */
10619       cond_exp_valid_block = if_tracker.block ();
10620
10621       cond_end = tok;
10622     }
10623   if (*tok)
10624     error (_("Junk at end of command."));
10625
10626   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10627
10628   /* Save this because create_internal_breakpoint below invalidates
10629      'wp_frame'.  */
10630   frame_id watchpoint_frame = get_frame_id (wp_frame);
10631
10632   /* If the expression is "local", then set up a "watchpoint scope"
10633      breakpoint at the point where we've left the scope of the watchpoint
10634      expression.  Create the scope breakpoint before the watchpoint, so
10635      that we will encounter it first in bpstat_stop_status.  */
10636   if (exp_valid_block != NULL && wp_frame != NULL)
10637     {
10638       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10639
10640       if (frame_id_p (caller_frame_id))
10641         {
10642           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10643           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10644
10645           scope_breakpoint
10646             = create_internal_breakpoint (caller_arch, caller_pc,
10647                                           bp_watchpoint_scope,
10648                                           &momentary_breakpoint_ops);
10649
10650           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10651           wp_frame = NULL;
10652
10653           scope_breakpoint->enable_state = bp_enabled;
10654
10655           /* Automatically delete the breakpoint when it hits.  */
10656           scope_breakpoint->disposition = disp_del;
10657
10658           /* Only break in the proper frame (help with recursion).  */
10659           scope_breakpoint->frame_id = caller_frame_id;
10660
10661           /* Set the address at which we will stop.  */
10662           scope_breakpoint->loc->gdbarch = caller_arch;
10663           scope_breakpoint->loc->requested_address = caller_pc;
10664           scope_breakpoint->loc->address
10665             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10666                                          scope_breakpoint->loc->requested_address,
10667                                          scope_breakpoint->type);
10668         }
10669     }
10670
10671   /* Now set up the breakpoint.  We create all watchpoints as hardware
10672      watchpoints here even if hardware watchpoints are turned off, a call
10673      to update_watchpoint later in this function will cause the type to
10674      drop back to bp_watchpoint (software watchpoint) if required.  */
10675
10676   if (accessflag == hw_read)
10677     bp_type = bp_read_watchpoint;
10678   else if (accessflag == hw_access)
10679     bp_type = bp_access_watchpoint;
10680   else
10681     bp_type = bp_hardware_watchpoint;
10682
10683   std::unique_ptr<watchpoint> w (new watchpoint ());
10684
10685   if (use_mask)
10686     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10687                                           &masked_watchpoint_breakpoint_ops);
10688   else
10689     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10690                                           &watchpoint_breakpoint_ops);
10691   w->thread = thread;
10692   w->disposition = disp_donttouch;
10693   w->pspace = current_program_space;
10694   w->exp = std::move (exp);
10695   w->exp_valid_block = exp_valid_block;
10696   w->cond_exp_valid_block = cond_exp_valid_block;
10697   if (just_location)
10698     {
10699       struct type *t = value_type (val.get ());
10700       CORE_ADDR addr = value_as_address (val.get ());
10701
10702       w->exp_string_reparse
10703         = current_language->la_watch_location_expression (t, addr).release ();
10704
10705       w->exp_string = xstrprintf ("-location %.*s",
10706                                   (int) (exp_end - exp_start), exp_start);
10707     }
10708   else
10709     w->exp_string = savestring (exp_start, exp_end - exp_start);
10710
10711   if (use_mask)
10712     {
10713       w->hw_wp_mask = mask;
10714     }
10715   else
10716     {
10717       w->val = val;
10718       w->val_bitpos = saved_bitpos;
10719       w->val_bitsize = saved_bitsize;
10720       w->val_valid = 1;
10721     }
10722
10723   if (cond_start)
10724     w->cond_string = savestring (cond_start, cond_end - cond_start);
10725   else
10726     w->cond_string = 0;
10727
10728   if (frame_id_p (watchpoint_frame))
10729     {
10730       w->watchpoint_frame = watchpoint_frame;
10731       w->watchpoint_thread = inferior_ptid;
10732     }
10733   else
10734     {
10735       w->watchpoint_frame = null_frame_id;
10736       w->watchpoint_thread = null_ptid;
10737     }
10738
10739   if (scope_breakpoint != NULL)
10740     {
10741       /* The scope breakpoint is related to the watchpoint.  We will
10742          need to act on them together.  */
10743       w->related_breakpoint = scope_breakpoint;
10744       scope_breakpoint->related_breakpoint = w.get ();
10745     }
10746
10747   if (!just_location)
10748     value_free_to_mark (mark);
10749
10750   /* Finally update the new watchpoint.  This creates the locations
10751      that should be inserted.  */
10752   update_watchpoint (w.get (), 1);
10753
10754   install_breakpoint (internal, std::move (w), 1);
10755 }
10756
10757 /* Return count of debug registers needed to watch the given expression.
10758    If the watchpoint cannot be handled in hardware return zero.  */
10759
10760 static int
10761 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10762 {
10763   int found_memory_cnt = 0;
10764
10765   /* Did the user specifically forbid us to use hardware watchpoints? */
10766   if (!can_use_hw_watchpoints)
10767     return 0;
10768
10769   gdb_assert (!vals.empty ());
10770   struct value *head = vals[0].get ();
10771
10772   /* Make sure that the value of the expression depends only upon
10773      memory contents, and values computed from them within GDB.  If we
10774      find any register references or function calls, we can't use a
10775      hardware watchpoint.
10776
10777      The idea here is that evaluating an expression generates a series
10778      of values, one holding the value of every subexpression.  (The
10779      expression a*b+c has five subexpressions: a, b, a*b, c, and
10780      a*b+c.)  GDB's values hold almost enough information to establish
10781      the criteria given above --- they identify memory lvalues,
10782      register lvalues, computed values, etcetera.  So we can evaluate
10783      the expression, and then scan the chain of values that leaves
10784      behind to decide whether we can detect any possible change to the
10785      expression's final value using only hardware watchpoints.
10786
10787      However, I don't think that the values returned by inferior
10788      function calls are special in any way.  So this function may not
10789      notice that an expression involving an inferior function call
10790      can't be watched with hardware watchpoints.  FIXME.  */
10791   for (const value_ref_ptr &iter : vals)
10792     {
10793       struct value *v = iter.get ();
10794
10795       if (VALUE_LVAL (v) == lval_memory)
10796         {
10797           if (v != head && value_lazy (v))
10798             /* A lazy memory lvalue in the chain is one that GDB never
10799                needed to fetch; we either just used its address (e.g.,
10800                `a' in `a.b') or we never needed it at all (e.g., `a'
10801                in `a,b').  This doesn't apply to HEAD; if that is
10802                lazy then it was not readable, but watch it anyway.  */
10803             ;
10804           else
10805             {
10806               /* Ahh, memory we actually used!  Check if we can cover
10807                  it with hardware watchpoints.  */
10808               struct type *vtype = check_typedef (value_type (v));
10809
10810               /* We only watch structs and arrays if user asked for it
10811                  explicitly, never if they just happen to appear in a
10812                  middle of some value chain.  */
10813               if (v == head
10814                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10815                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10816                 {
10817                   CORE_ADDR vaddr = value_address (v);
10818                   int len;
10819                   int num_regs;
10820
10821                   len = (target_exact_watchpoints
10822                          && is_scalar_type_recursive (vtype))?
10823                     1 : TYPE_LENGTH (value_type (v));
10824
10825                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10826                   if (!num_regs)
10827                     return 0;
10828                   else
10829                     found_memory_cnt += num_regs;
10830                 }
10831             }
10832         }
10833       else if (VALUE_LVAL (v) != not_lval
10834                && deprecated_value_modifiable (v) == 0)
10835         return 0;       /* These are values from the history (e.g., $1).  */
10836       else if (VALUE_LVAL (v) == lval_register)
10837         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10838     }
10839
10840   /* The expression itself looks suitable for using a hardware
10841      watchpoint, but give the target machine a chance to reject it.  */
10842   return found_memory_cnt;
10843 }
10844
10845 void
10846 watch_command_wrapper (const char *arg, int from_tty, int internal)
10847 {
10848   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10849 }
10850
10851 /* A helper function that looks for the "-location" argument and then
10852    calls watch_command_1.  */
10853
10854 static void
10855 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10856 {
10857   int just_location = 0;
10858
10859   if (arg
10860       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10861           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10862     just_location = 1;
10863
10864   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10865 }
10866
10867 static void
10868 watch_command (const char *arg, int from_tty)
10869 {
10870   watch_maybe_just_location (arg, hw_write, from_tty);
10871 }
10872
10873 void
10874 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10875 {
10876   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10877 }
10878
10879 static void
10880 rwatch_command (const char *arg, int from_tty)
10881 {
10882   watch_maybe_just_location (arg, hw_read, from_tty);
10883 }
10884
10885 void
10886 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10887 {
10888   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10889 }
10890
10891 static void
10892 awatch_command (const char *arg, int from_tty)
10893 {
10894   watch_maybe_just_location (arg, hw_access, from_tty);
10895 }
10896 \f
10897
10898 /* Data for the FSM that manages the until(location)/advance commands
10899    in infcmd.c.  Here because it uses the mechanisms of
10900    breakpoints.  */
10901
10902 struct until_break_fsm : public thread_fsm
10903 {
10904   /* The thread that was current when the command was executed.  */
10905   int thread;
10906
10907   /* The breakpoint set at the destination location.  */
10908   breakpoint_up location_breakpoint;
10909
10910   /* Breakpoint set at the return address in the caller frame.  May be
10911      NULL.  */
10912   breakpoint_up caller_breakpoint;
10913
10914   until_break_fsm (struct interp *cmd_interp, int thread,
10915                    breakpoint_up &&location_breakpoint,
10916                    breakpoint_up &&caller_breakpoint)
10917     : thread_fsm (cmd_interp),
10918       thread (thread),
10919       location_breakpoint (std::move (location_breakpoint)),
10920       caller_breakpoint (std::move (caller_breakpoint))
10921   {
10922   }
10923
10924   void clean_up (struct thread_info *thread) override;
10925   bool should_stop (struct thread_info *thread) override;
10926   enum async_reply_reason do_async_reply_reason () override;
10927 };
10928
10929 /* Implementation of the 'should_stop' FSM method for the
10930    until(location)/advance commands.  */
10931
10932 bool
10933 until_break_fsm::should_stop (struct thread_info *tp)
10934 {
10935   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
10936                               location_breakpoint.get ()) != NULL
10937       || (caller_breakpoint != NULL
10938           && bpstat_find_breakpoint (tp->control.stop_bpstat,
10939                                      caller_breakpoint.get ()) != NULL))
10940     set_finished ();
10941
10942   return true;
10943 }
10944
10945 /* Implementation of the 'clean_up' FSM method for the
10946    until(location)/advance commands.  */
10947
10948 void
10949 until_break_fsm::clean_up (struct thread_info *)
10950 {
10951   /* Clean up our temporary breakpoints.  */
10952   location_breakpoint.reset ();
10953   caller_breakpoint.reset ();
10954   delete_longjmp_breakpoint (thread);
10955 }
10956
10957 /* Implementation of the 'async_reply_reason' FSM method for the
10958    until(location)/advance commands.  */
10959
10960 enum async_reply_reason
10961 until_break_fsm::do_async_reply_reason ()
10962 {
10963   return EXEC_ASYNC_LOCATION_REACHED;
10964 }
10965
10966 void
10967 until_break_command (const char *arg, int from_tty, int anywhere)
10968 {
10969   struct frame_info *frame;
10970   struct gdbarch *frame_gdbarch;
10971   struct frame_id stack_frame_id;
10972   struct frame_id caller_frame_id;
10973   int thread;
10974   struct thread_info *tp;
10975
10976   clear_proceed_status (0);
10977
10978   /* Set a breakpoint where the user wants it and at return from
10979      this function.  */
10980
10981   event_location_up location = string_to_event_location (&arg, current_language);
10982
10983   std::vector<symtab_and_line> sals
10984     = (last_displayed_sal_is_valid ()
10985        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
10986                         get_last_displayed_symtab (),
10987                         get_last_displayed_line ())
10988        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
10989                         NULL, NULL, 0));
10990
10991   if (sals.size () != 1)
10992     error (_("Couldn't get information on specified line."));
10993
10994   symtab_and_line &sal = sals[0];
10995
10996   if (*arg)
10997     error (_("Junk at end of arguments."));
10998
10999   resolve_sal_pc (&sal);
11000
11001   tp = inferior_thread ();
11002   thread = tp->global_num;
11003
11004   /* Note linespec handling above invalidates the frame chain.
11005      Installing a breakpoint also invalidates the frame chain (as it
11006      may need to switch threads), so do any frame handling before
11007      that.  */
11008
11009   frame = get_selected_frame (NULL);
11010   frame_gdbarch = get_frame_arch (frame);
11011   stack_frame_id = get_stack_frame_id (frame);
11012   caller_frame_id = frame_unwind_caller_id (frame);
11013
11014   /* Keep within the current frame, or in frames called by the current
11015      one.  */
11016
11017   breakpoint_up caller_breakpoint;
11018
11019   gdb::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
11020
11021   if (frame_id_p (caller_frame_id))
11022     {
11023       struct symtab_and_line sal2;
11024       struct gdbarch *caller_gdbarch;
11025
11026       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11027       sal2.pc = frame_unwind_caller_pc (frame);
11028       caller_gdbarch = frame_unwind_caller_arch (frame);
11029       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11030                                                     sal2,
11031                                                     caller_frame_id,
11032                                                     bp_until);
11033
11034       set_longjmp_breakpoint (tp, caller_frame_id);
11035       lj_deleter.emplace (thread);
11036     }
11037
11038   /* set_momentary_breakpoint could invalidate FRAME.  */
11039   frame = NULL;
11040
11041   breakpoint_up location_breakpoint;
11042   if (anywhere)
11043     /* If the user told us to continue until a specified location,
11044        we don't specify a frame at which we need to stop.  */
11045     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11046                                                     null_frame_id, bp_until);
11047   else
11048     /* Otherwise, specify the selected frame, because we want to stop
11049        only at the very same frame.  */
11050     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11051                                                     stack_frame_id, bp_until);
11052
11053   tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
11054                                         std::move (location_breakpoint),
11055                                         std::move (caller_breakpoint));
11056
11057   if (lj_deleter)
11058     lj_deleter->release ();
11059
11060   proceed (-1, GDB_SIGNAL_DEFAULT);
11061 }
11062
11063 /* This function attempts to parse an optional "if <cond>" clause
11064    from the arg string.  If one is not found, it returns NULL.
11065
11066    Else, it returns a pointer to the condition string.  (It does not
11067    attempt to evaluate the string against a particular block.)  And,
11068    it updates arg to point to the first character following the parsed
11069    if clause in the arg string.  */
11070
11071 const char *
11072 ep_parse_optional_if_clause (const char **arg)
11073 {
11074   const char *cond_string;
11075
11076   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11077     return NULL;
11078
11079   /* Skip the "if" keyword.  */
11080   (*arg) += 2;
11081
11082   /* Skip any extra leading whitespace, and record the start of the
11083      condition string.  */
11084   *arg = skip_spaces (*arg);
11085   cond_string = *arg;
11086
11087   /* Assume that the condition occupies the remainder of the arg
11088      string.  */
11089   (*arg) += strlen (cond_string);
11090
11091   return cond_string;
11092 }
11093
11094 /* Commands to deal with catching events, such as signals, exceptions,
11095    process start/exit, etc.  */
11096
11097 typedef enum
11098 {
11099   catch_fork_temporary, catch_vfork_temporary,
11100   catch_fork_permanent, catch_vfork_permanent
11101 }
11102 catch_fork_kind;
11103
11104 static void
11105 catch_fork_command_1 (const char *arg, int from_tty,
11106                       struct cmd_list_element *command)
11107 {
11108   struct gdbarch *gdbarch = get_current_arch ();
11109   const char *cond_string = NULL;
11110   catch_fork_kind fork_kind;
11111   int tempflag;
11112
11113   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11114   tempflag = (fork_kind == catch_fork_temporary
11115               || fork_kind == catch_vfork_temporary);
11116
11117   if (!arg)
11118     arg = "";
11119   arg = skip_spaces (arg);
11120
11121   /* The allowed syntax is:
11122      catch [v]fork
11123      catch [v]fork if <cond>
11124
11125      First, check if there's an if clause.  */
11126   cond_string = ep_parse_optional_if_clause (&arg);
11127
11128   if ((*arg != '\0') && !isspace (*arg))
11129     error (_("Junk at end of arguments."));
11130
11131   /* If this target supports it, create a fork or vfork catchpoint
11132      and enable reporting of such events.  */
11133   switch (fork_kind)
11134     {
11135     case catch_fork_temporary:
11136     case catch_fork_permanent:
11137       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11138                                           &catch_fork_breakpoint_ops);
11139       break;
11140     case catch_vfork_temporary:
11141     case catch_vfork_permanent:
11142       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11143                                           &catch_vfork_breakpoint_ops);
11144       break;
11145     default:
11146       error (_("unsupported or unknown fork kind; cannot catch it"));
11147       break;
11148     }
11149 }
11150
11151 static void
11152 catch_exec_command_1 (const char *arg, int from_tty,
11153                       struct cmd_list_element *command)
11154 {
11155   struct gdbarch *gdbarch = get_current_arch ();
11156   int tempflag;
11157   const char *cond_string = NULL;
11158
11159   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11160
11161   if (!arg)
11162     arg = "";
11163   arg = skip_spaces (arg);
11164
11165   /* The allowed syntax is:
11166      catch exec
11167      catch exec if <cond>
11168
11169      First, check if there's an if clause.  */
11170   cond_string = ep_parse_optional_if_clause (&arg);
11171
11172   if ((*arg != '\0') && !isspace (*arg))
11173     error (_("Junk at end of arguments."));
11174
11175   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11176   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11177                    &catch_exec_breakpoint_ops);
11178   c->exec_pathname = NULL;
11179
11180   install_breakpoint (0, std::move (c), 1);
11181 }
11182
11183 void
11184 init_ada_exception_breakpoint (struct breakpoint *b,
11185                                struct gdbarch *gdbarch,
11186                                struct symtab_and_line sal,
11187                                const char *addr_string,
11188                                const struct breakpoint_ops *ops,
11189                                int tempflag,
11190                                int enabled,
11191                                int from_tty)
11192 {
11193   if (from_tty)
11194     {
11195       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11196       if (!loc_gdbarch)
11197         loc_gdbarch = gdbarch;
11198
11199       describe_other_breakpoints (loc_gdbarch,
11200                                   sal.pspace, sal.pc, sal.section, -1);
11201       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11202          version for exception catchpoints, because two catchpoints
11203          used for different exception names will use the same address.
11204          In this case, a "breakpoint ... also set at..." warning is
11205          unproductive.  Besides, the warning phrasing is also a bit
11206          inappropriate, we should use the word catchpoint, and tell
11207          the user what type of catchpoint it is.  The above is good
11208          enough for now, though.  */
11209     }
11210
11211   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
11212
11213   b->enable_state = enabled ? bp_enabled : bp_disabled;
11214   b->disposition = tempflag ? disp_del : disp_donttouch;
11215   b->location = string_to_event_location (&addr_string,
11216                                           language_def (language_ada));
11217   b->language = language_ada;
11218 }
11219
11220 static void
11221 catch_command (const char *arg, int from_tty)
11222 {
11223   error (_("Catch requires an event name."));
11224 }
11225 \f
11226
11227 static void
11228 tcatch_command (const char *arg, int from_tty)
11229 {
11230   error (_("Catch requires an event name."));
11231 }
11232
11233 /* Compare two breakpoints and return a strcmp-like result.  */
11234
11235 static int
11236 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11237 {
11238   uintptr_t ua = (uintptr_t) a;
11239   uintptr_t ub = (uintptr_t) b;
11240
11241   if (a->number < b->number)
11242     return -1;
11243   else if (a->number > b->number)
11244     return 1;
11245
11246   /* Now sort by address, in case we see, e..g, two breakpoints with
11247      the number 0.  */
11248   if (ua < ub)
11249     return -1;
11250   return ua > ub ? 1 : 0;
11251 }
11252
11253 /* Delete breakpoints by address or line.  */
11254
11255 static void
11256 clear_command (const char *arg, int from_tty)
11257 {
11258   struct breakpoint *b;
11259   int default_match;
11260
11261   std::vector<symtab_and_line> decoded_sals;
11262   symtab_and_line last_sal;
11263   gdb::array_view<symtab_and_line> sals;
11264   if (arg)
11265     {
11266       decoded_sals
11267         = decode_line_with_current_source (arg,
11268                                            (DECODE_LINE_FUNFIRSTLINE
11269                                             | DECODE_LINE_LIST_MODE));
11270       default_match = 0;
11271       sals = decoded_sals;
11272     }
11273   else
11274     {
11275       /* Set sal's line, symtab, pc, and pspace to the values
11276          corresponding to the last call to print_frame_info.  If the
11277          codepoint is not valid, this will set all the fields to 0.  */
11278       last_sal = get_last_displayed_sal ();
11279       if (last_sal.symtab == 0)
11280         error (_("No source file specified."));
11281
11282       default_match = 1;
11283       sals = last_sal;
11284     }
11285
11286   /* We don't call resolve_sal_pc here.  That's not as bad as it
11287      seems, because all existing breakpoints typically have both
11288      file/line and pc set.  So, if clear is given file/line, we can
11289      match this to existing breakpoint without obtaining pc at all.
11290
11291      We only support clearing given the address explicitly 
11292      present in breakpoint table.  Say, we've set breakpoint 
11293      at file:line.  There were several PC values for that file:line,
11294      due to optimization, all in one block.
11295
11296      We've picked one PC value.  If "clear" is issued with another
11297      PC corresponding to the same file:line, the breakpoint won't
11298      be cleared.  We probably can still clear the breakpoint, but 
11299      since the other PC value is never presented to user, user
11300      can only find it by guessing, and it does not seem important
11301      to support that.  */
11302
11303   /* For each line spec given, delete bps which correspond to it.  Do
11304      it in two passes, solely to preserve the current behavior that
11305      from_tty is forced true if we delete more than one
11306      breakpoint.  */
11307
11308   std::vector<struct breakpoint *> found;
11309   for (const auto &sal : sals)
11310     {
11311       const char *sal_fullname;
11312
11313       /* If exact pc given, clear bpts at that pc.
11314          If line given (pc == 0), clear all bpts on specified line.
11315          If defaulting, clear all bpts on default line
11316          or at default pc.
11317
11318          defaulting    sal.pc != 0    tests to do
11319
11320          0              1             pc
11321          1              1             pc _and_ line
11322          0              0             line
11323          1              0             <can't happen> */
11324
11325       sal_fullname = (sal.symtab == NULL
11326                       ? NULL : symtab_to_fullname (sal.symtab));
11327
11328       /* Find all matching breakpoints and add them to 'found'.  */
11329       ALL_BREAKPOINTS (b)
11330         {
11331           int match = 0;
11332           /* Are we going to delete b?  */
11333           if (b->type != bp_none && !is_watchpoint (b))
11334             {
11335               struct bp_location *loc = b->loc;
11336               for (; loc; loc = loc->next)
11337                 {
11338                   /* If the user specified file:line, don't allow a PC
11339                      match.  This matches historical gdb behavior.  */
11340                   int pc_match = (!sal.explicit_line
11341                                   && sal.pc
11342                                   && (loc->pspace == sal.pspace)
11343                                   && (loc->address == sal.pc)
11344                                   && (!section_is_overlay (loc->section)
11345                                       || loc->section == sal.section));
11346                   int line_match = 0;
11347
11348                   if ((default_match || sal.explicit_line)
11349                       && loc->symtab != NULL
11350                       && sal_fullname != NULL
11351                       && sal.pspace == loc->pspace
11352                       && loc->line_number == sal.line
11353                       && filename_cmp (symtab_to_fullname (loc->symtab),
11354                                        sal_fullname) == 0)
11355                     line_match = 1;
11356
11357                   if (pc_match || line_match)
11358                     {
11359                       match = 1;
11360                       break;
11361                     }
11362                 }
11363             }
11364
11365           if (match)
11366             found.push_back (b);
11367         }
11368     }
11369
11370   /* Now go thru the 'found' chain and delete them.  */
11371   if (found.empty ())
11372     {
11373       if (arg)
11374         error (_("No breakpoint at %s."), arg);
11375       else
11376         error (_("No breakpoint at this line."));
11377     }
11378
11379   /* Remove duplicates from the vec.  */
11380   std::sort (found.begin (), found.end (),
11381              [] (const breakpoint *bp_a, const breakpoint *bp_b)
11382              {
11383                return compare_breakpoints (bp_a, bp_b) < 0;
11384              });
11385   found.erase (std::unique (found.begin (), found.end (),
11386                             [] (const breakpoint *bp_a, const breakpoint *bp_b)
11387                             {
11388                               return compare_breakpoints (bp_a, bp_b) == 0;
11389                             }),
11390                found.end ());
11391
11392   if (found.size () > 1)
11393     from_tty = 1;       /* Always report if deleted more than one.  */
11394   if (from_tty)
11395     {
11396       if (found.size () == 1)
11397         printf_unfiltered (_("Deleted breakpoint "));
11398       else
11399         printf_unfiltered (_("Deleted breakpoints "));
11400     }
11401
11402   for (breakpoint *iter : found)
11403     {
11404       if (from_tty)
11405         printf_unfiltered ("%d ", iter->number);
11406       delete_breakpoint (iter);
11407     }
11408   if (from_tty)
11409     putchar_unfiltered ('\n');
11410 }
11411 \f
11412 /* Delete breakpoint in BS if they are `delete' breakpoints and
11413    all breakpoints that are marked for deletion, whether hit or not.
11414    This is called after any breakpoint is hit, or after errors.  */
11415
11416 void
11417 breakpoint_auto_delete (bpstat bs)
11418 {
11419   struct breakpoint *b, *b_tmp;
11420
11421   for (; bs; bs = bs->next)
11422     if (bs->breakpoint_at
11423         && bs->breakpoint_at->disposition == disp_del
11424         && bs->stop)
11425       delete_breakpoint (bs->breakpoint_at);
11426
11427   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11428   {
11429     if (b->disposition == disp_del_at_next_stop)
11430       delete_breakpoint (b);
11431   }
11432 }
11433
11434 /* A comparison function for bp_location AP and BP being interfaced to
11435    qsort.  Sort elements primarily by their ADDRESS (no matter what
11436    bl_address_is_meaningful says), secondarily by ordering first
11437    permanent elements and terciarily just ensuring the array is sorted
11438    stable way despite qsort being an unstable algorithm.  */
11439
11440 static int
11441 bp_locations_compare (const void *ap, const void *bp)
11442 {
11443   const struct bp_location *a = *(const struct bp_location **) ap;
11444   const struct bp_location *b = *(const struct bp_location **) bp;
11445
11446   if (a->address != b->address)
11447     return (a->address > b->address) - (a->address < b->address);
11448
11449   /* Sort locations at the same address by their pspace number, keeping
11450      locations of the same inferior (in a multi-inferior environment)
11451      grouped.  */
11452
11453   if (a->pspace->num != b->pspace->num)
11454     return ((a->pspace->num > b->pspace->num)
11455             - (a->pspace->num < b->pspace->num));
11456
11457   /* Sort permanent breakpoints first.  */
11458   if (a->permanent != b->permanent)
11459     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11460
11461   /* Make the internal GDB representation stable across GDB runs
11462      where A and B memory inside GDB can differ.  Breakpoint locations of
11463      the same type at the same address can be sorted in arbitrary order.  */
11464
11465   if (a->owner->number != b->owner->number)
11466     return ((a->owner->number > b->owner->number)
11467             - (a->owner->number < b->owner->number));
11468
11469   return (a > b) - (a < b);
11470 }
11471
11472 /* Set bp_locations_placed_address_before_address_max and
11473    bp_locations_shadow_len_after_address_max according to the current
11474    content of the bp_locations array.  */
11475
11476 static void
11477 bp_locations_target_extensions_update (void)
11478 {
11479   struct bp_location *bl, **blp_tmp;
11480
11481   bp_locations_placed_address_before_address_max = 0;
11482   bp_locations_shadow_len_after_address_max = 0;
11483
11484   ALL_BP_LOCATIONS (bl, blp_tmp)
11485     {
11486       CORE_ADDR start, end, addr;
11487
11488       if (!bp_location_has_shadow (bl))
11489         continue;
11490
11491       start = bl->target_info.placed_address;
11492       end = start + bl->target_info.shadow_len;
11493
11494       gdb_assert (bl->address >= start);
11495       addr = bl->address - start;
11496       if (addr > bp_locations_placed_address_before_address_max)
11497         bp_locations_placed_address_before_address_max = addr;
11498
11499       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11500
11501       gdb_assert (bl->address < end);
11502       addr = end - bl->address;
11503       if (addr > bp_locations_shadow_len_after_address_max)
11504         bp_locations_shadow_len_after_address_max = addr;
11505     }
11506 }
11507
11508 /* Download tracepoint locations if they haven't been.  */
11509
11510 static void
11511 download_tracepoint_locations (void)
11512 {
11513   struct breakpoint *b;
11514   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11515
11516   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11517
11518   ALL_TRACEPOINTS (b)
11519     {
11520       struct bp_location *bl;
11521       struct tracepoint *t;
11522       int bp_location_downloaded = 0;
11523
11524       if ((b->type == bp_fast_tracepoint
11525            ? !may_insert_fast_tracepoints
11526            : !may_insert_tracepoints))
11527         continue;
11528
11529       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11530         {
11531           if (target_can_download_tracepoint ())
11532             can_download_tracepoint = TRIBOOL_TRUE;
11533           else
11534             can_download_tracepoint = TRIBOOL_FALSE;
11535         }
11536
11537       if (can_download_tracepoint == TRIBOOL_FALSE)
11538         break;
11539
11540       for (bl = b->loc; bl; bl = bl->next)
11541         {
11542           /* In tracepoint, locations are _never_ duplicated, so
11543              should_be_inserted is equivalent to
11544              unduplicated_should_be_inserted.  */
11545           if (!should_be_inserted (bl) || bl->inserted)
11546             continue;
11547
11548           switch_to_program_space_and_thread (bl->pspace);
11549
11550           target_download_tracepoint (bl);
11551
11552           bl->inserted = 1;
11553           bp_location_downloaded = 1;
11554         }
11555       t = (struct tracepoint *) b;
11556       t->number_on_target = b->number;
11557       if (bp_location_downloaded)
11558         gdb::observers::breakpoint_modified.notify (b);
11559     }
11560 }
11561
11562 /* Swap the insertion/duplication state between two locations.  */
11563
11564 static void
11565 swap_insertion (struct bp_location *left, struct bp_location *right)
11566 {
11567   const int left_inserted = left->inserted;
11568   const int left_duplicate = left->duplicate;
11569   const int left_needs_update = left->needs_update;
11570   const struct bp_target_info left_target_info = left->target_info;
11571
11572   /* Locations of tracepoints can never be duplicated.  */
11573   if (is_tracepoint (left->owner))
11574     gdb_assert (!left->duplicate);
11575   if (is_tracepoint (right->owner))
11576     gdb_assert (!right->duplicate);
11577
11578   left->inserted = right->inserted;
11579   left->duplicate = right->duplicate;
11580   left->needs_update = right->needs_update;
11581   left->target_info = right->target_info;
11582   right->inserted = left_inserted;
11583   right->duplicate = left_duplicate;
11584   right->needs_update = left_needs_update;
11585   right->target_info = left_target_info;
11586 }
11587
11588 /* Force the re-insertion of the locations at ADDRESS.  This is called
11589    once a new/deleted/modified duplicate location is found and we are evaluating
11590    conditions on the target's side.  Such conditions need to be updated on
11591    the target.  */
11592
11593 static void
11594 force_breakpoint_reinsertion (struct bp_location *bl)
11595 {
11596   struct bp_location **locp = NULL, **loc2p;
11597   struct bp_location *loc;
11598   CORE_ADDR address = 0;
11599   int pspace_num;
11600
11601   address = bl->address;
11602   pspace_num = bl->pspace->num;
11603
11604   /* This is only meaningful if the target is
11605      evaluating conditions and if the user has
11606      opted for condition evaluation on the target's
11607      side.  */
11608   if (gdb_evaluates_breakpoint_condition_p ()
11609       || !target_supports_evaluation_of_breakpoint_conditions ())
11610     return;
11611
11612   /* Flag all breakpoint locations with this address and
11613      the same program space as the location
11614      as "its condition has changed".  We need to
11615      update the conditions on the target's side.  */
11616   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11617     {
11618       loc = *loc2p;
11619
11620       if (!is_breakpoint (loc->owner)
11621           || pspace_num != loc->pspace->num)
11622         continue;
11623
11624       /* Flag the location appropriately.  We use a different state to
11625          let everyone know that we already updated the set of locations
11626          with addr bl->address and program space bl->pspace.  This is so
11627          we don't have to keep calling these functions just to mark locations
11628          that have already been marked.  */
11629       loc->condition_changed = condition_updated;
11630
11631       /* Free the agent expression bytecode as well.  We will compute
11632          it later on.  */
11633       loc->cond_bytecode.reset ();
11634     }
11635 }
11636 /* Called whether new breakpoints are created, or existing breakpoints
11637    deleted, to update the global location list and recompute which
11638    locations are duplicate of which.
11639
11640    The INSERT_MODE flag determines whether locations may not, may, or
11641    shall be inserted now.  See 'enum ugll_insert_mode' for more
11642    info.  */
11643
11644 static void
11645 update_global_location_list (enum ugll_insert_mode insert_mode)
11646 {
11647   struct breakpoint *b;
11648   struct bp_location **locp, *loc;
11649   /* Last breakpoint location address that was marked for update.  */
11650   CORE_ADDR last_addr = 0;
11651   /* Last breakpoint location program space that was marked for update.  */
11652   int last_pspace_num = -1;
11653
11654   /* Used in the duplicates detection below.  When iterating over all
11655      bp_locations, points to the first bp_location of a given address.
11656      Breakpoints and watchpoints of different types are never
11657      duplicates of each other.  Keep one pointer for each type of
11658      breakpoint/watchpoint, so we only need to loop over all locations
11659      once.  */
11660   struct bp_location *bp_loc_first;  /* breakpoint */
11661   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11662   struct bp_location *awp_loc_first; /* access watchpoint */
11663   struct bp_location *rwp_loc_first; /* read watchpoint */
11664
11665   /* Saved former bp_locations array which we compare against the newly
11666      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11667   struct bp_location **old_locp;
11668   unsigned old_locations_count;
11669   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11670
11671   old_locations_count = bp_locations_count;
11672   bp_locations = NULL;
11673   bp_locations_count = 0;
11674
11675   ALL_BREAKPOINTS (b)
11676     for (loc = b->loc; loc; loc = loc->next)
11677       bp_locations_count++;
11678
11679   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11680   locp = bp_locations;
11681   ALL_BREAKPOINTS (b)
11682     for (loc = b->loc; loc; loc = loc->next)
11683       *locp++ = loc;
11684   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11685          bp_locations_compare);
11686
11687   bp_locations_target_extensions_update ();
11688
11689   /* Identify bp_location instances that are no longer present in the
11690      new list, and therefore should be freed.  Note that it's not
11691      necessary that those locations should be removed from inferior --
11692      if there's another location at the same address (previously
11693      marked as duplicate), we don't need to remove/insert the
11694      location.
11695      
11696      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11697      and former bp_location array state respectively.  */
11698
11699   locp = bp_locations;
11700   for (old_locp = old_locations.get ();
11701        old_locp < old_locations.get () + old_locations_count;
11702        old_locp++)
11703     {
11704       struct bp_location *old_loc = *old_locp;
11705       struct bp_location **loc2p;
11706
11707       /* Tells if 'old_loc' is found among the new locations.  If
11708          not, we have to free it.  */
11709       int found_object = 0;
11710       /* Tells if the location should remain inserted in the target.  */
11711       int keep_in_target = 0;
11712       int removed = 0;
11713
11714       /* Skip LOCP entries which will definitely never be needed.
11715          Stop either at or being the one matching OLD_LOC.  */
11716       while (locp < bp_locations + bp_locations_count
11717              && (*locp)->address < old_loc->address)
11718         locp++;
11719
11720       for (loc2p = locp;
11721            (loc2p < bp_locations + bp_locations_count
11722             && (*loc2p)->address == old_loc->address);
11723            loc2p++)
11724         {
11725           /* Check if this is a new/duplicated location or a duplicated
11726              location that had its condition modified.  If so, we want to send
11727              its condition to the target if evaluation of conditions is taking
11728              place there.  */
11729           if ((*loc2p)->condition_changed == condition_modified
11730               && (last_addr != old_loc->address
11731                   || last_pspace_num != old_loc->pspace->num))
11732             {
11733               force_breakpoint_reinsertion (*loc2p);
11734               last_pspace_num = old_loc->pspace->num;
11735             }
11736
11737           if (*loc2p == old_loc)
11738             found_object = 1;
11739         }
11740
11741       /* We have already handled this address, update it so that we don't
11742          have to go through updates again.  */
11743       last_addr = old_loc->address;
11744
11745       /* Target-side condition evaluation: Handle deleted locations.  */
11746       if (!found_object)
11747         force_breakpoint_reinsertion (old_loc);
11748
11749       /* If this location is no longer present, and inserted, look if
11750          there's maybe a new location at the same address.  If so,
11751          mark that one inserted, and don't remove this one.  This is
11752          needed so that we don't have a time window where a breakpoint
11753          at certain location is not inserted.  */
11754
11755       if (old_loc->inserted)
11756         {
11757           /* If the location is inserted now, we might have to remove
11758              it.  */
11759
11760           if (found_object && should_be_inserted (old_loc))
11761             {
11762               /* The location is still present in the location list,
11763                  and still should be inserted.  Don't do anything.  */
11764               keep_in_target = 1;
11765             }
11766           else
11767             {
11768               /* This location still exists, but it won't be kept in the
11769                  target since it may have been disabled.  We proceed to
11770                  remove its target-side condition.  */
11771
11772               /* The location is either no longer present, or got
11773                  disabled.  See if there's another location at the
11774                  same address, in which case we don't need to remove
11775                  this one from the target.  */
11776
11777               /* OLD_LOC comes from existing struct breakpoint.  */
11778               if (bl_address_is_meaningful (old_loc))
11779                 {
11780                   for (loc2p = locp;
11781                        (loc2p < bp_locations + bp_locations_count
11782                         && (*loc2p)->address == old_loc->address);
11783                        loc2p++)
11784                     {
11785                       struct bp_location *loc2 = *loc2p;
11786
11787                       if (breakpoint_locations_match (loc2, old_loc))
11788                         {
11789                           /* Read watchpoint locations are switched to
11790                              access watchpoints, if the former are not
11791                              supported, but the latter are.  */
11792                           if (is_hardware_watchpoint (old_loc->owner))
11793                             {
11794                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11795                               loc2->watchpoint_type = old_loc->watchpoint_type;
11796                             }
11797
11798                           /* loc2 is a duplicated location. We need to check
11799                              if it should be inserted in case it will be
11800                              unduplicated.  */
11801                           if (loc2 != old_loc
11802                               && unduplicated_should_be_inserted (loc2))
11803                             {
11804                               swap_insertion (old_loc, loc2);
11805                               keep_in_target = 1;
11806                               break;
11807                             }
11808                         }
11809                     }
11810                 }
11811             }
11812
11813           if (!keep_in_target)
11814             {
11815               if (remove_breakpoint (old_loc))
11816                 {
11817                   /* This is just about all we can do.  We could keep
11818                      this location on the global list, and try to
11819                      remove it next time, but there's no particular
11820                      reason why we will succeed next time.
11821                      
11822                      Note that at this point, old_loc->owner is still
11823                      valid, as delete_breakpoint frees the breakpoint
11824                      only after calling us.  */
11825                   printf_filtered (_("warning: Error removing "
11826                                      "breakpoint %d\n"), 
11827                                    old_loc->owner->number);
11828                 }
11829               removed = 1;
11830             }
11831         }
11832
11833       if (!found_object)
11834         {
11835           if (removed && target_is_non_stop_p ()
11836               && need_moribund_for_location_type (old_loc))
11837             {
11838               /* This location was removed from the target.  In
11839                  non-stop mode, a race condition is possible where
11840                  we've removed a breakpoint, but stop events for that
11841                  breakpoint are already queued and will arrive later.
11842                  We apply an heuristic to be able to distinguish such
11843                  SIGTRAPs from other random SIGTRAPs: we keep this
11844                  breakpoint location for a bit, and will retire it
11845                  after we see some number of events.  The theory here
11846                  is that reporting of events should, "on the average",
11847                  be fair, so after a while we'll see events from all
11848                  threads that have anything of interest, and no longer
11849                  need to keep this breakpoint location around.  We
11850                  don't hold locations forever so to reduce chances of
11851                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11852                  SIGTRAP.
11853
11854                  The heuristic failing can be disastrous on
11855                  decr_pc_after_break targets.
11856
11857                  On decr_pc_after_break targets, like e.g., x86-linux,
11858                  if we fail to recognize a late breakpoint SIGTRAP,
11859                  because events_till_retirement has reached 0 too
11860                  soon, we'll fail to do the PC adjustment, and report
11861                  a random SIGTRAP to the user.  When the user resumes
11862                  the inferior, it will most likely immediately crash
11863                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11864                  corrupted, because of being resumed e.g., in the
11865                  middle of a multi-byte instruction, or skipped a
11866                  one-byte instruction.  This was actually seen happen
11867                  on native x86-linux, and should be less rare on
11868                  targets that do not support new thread events, like
11869                  remote, due to the heuristic depending on
11870                  thread_count.
11871
11872                  Mistaking a random SIGTRAP for a breakpoint trap
11873                  causes similar symptoms (PC adjustment applied when
11874                  it shouldn't), but then again, playing with SIGTRAPs
11875                  behind the debugger's back is asking for trouble.
11876
11877                  Since hardware watchpoint traps are always
11878                  distinguishable from other traps, so we don't need to
11879                  apply keep hardware watchpoint moribund locations
11880                  around.  We simply always ignore hardware watchpoint
11881                  traps we can no longer explain.  */
11882
11883               old_loc->events_till_retirement = 3 * (thread_count () + 1);
11884               old_loc->owner = NULL;
11885
11886               moribund_locations.push_back (old_loc);
11887             }
11888           else
11889             {
11890               old_loc->owner = NULL;
11891               decref_bp_location (&old_loc);
11892             }
11893         }
11894     }
11895
11896   /* Rescan breakpoints at the same address and section, marking the
11897      first one as "first" and any others as "duplicates".  This is so
11898      that the bpt instruction is only inserted once.  If we have a
11899      permanent breakpoint at the same place as BPT, make that one the
11900      official one, and the rest as duplicates.  Permanent breakpoints
11901      are sorted first for the same address.
11902
11903      Do the same for hardware watchpoints, but also considering the
11904      watchpoint's type (regular/access/read) and length.  */
11905
11906   bp_loc_first = NULL;
11907   wp_loc_first = NULL;
11908   awp_loc_first = NULL;
11909   rwp_loc_first = NULL;
11910   ALL_BP_LOCATIONS (loc, locp)
11911     {
11912       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
11913          non-NULL.  */
11914       struct bp_location **loc_first_p;
11915       b = loc->owner;
11916
11917       if (!unduplicated_should_be_inserted (loc)
11918           || !bl_address_is_meaningful (loc)
11919           /* Don't detect duplicate for tracepoint locations because they are
11920            never duplicated.  See the comments in field `duplicate' of
11921            `struct bp_location'.  */
11922           || is_tracepoint (b))
11923         {
11924           /* Clear the condition modification flag.  */
11925           loc->condition_changed = condition_unchanged;
11926           continue;
11927         }
11928
11929       if (b->type == bp_hardware_watchpoint)
11930         loc_first_p = &wp_loc_first;
11931       else if (b->type == bp_read_watchpoint)
11932         loc_first_p = &rwp_loc_first;
11933       else if (b->type == bp_access_watchpoint)
11934         loc_first_p = &awp_loc_first;
11935       else
11936         loc_first_p = &bp_loc_first;
11937
11938       if (*loc_first_p == NULL
11939           || (overlay_debugging && loc->section != (*loc_first_p)->section)
11940           || !breakpoint_locations_match (loc, *loc_first_p))
11941         {
11942           *loc_first_p = loc;
11943           loc->duplicate = 0;
11944
11945           if (is_breakpoint (loc->owner) && loc->condition_changed)
11946             {
11947               loc->needs_update = 1;
11948               /* Clear the condition modification flag.  */
11949               loc->condition_changed = condition_unchanged;
11950             }
11951           continue;
11952         }
11953
11954
11955       /* This and the above ensure the invariant that the first location
11956          is not duplicated, and is the inserted one.
11957          All following are marked as duplicated, and are not inserted.  */
11958       if (loc->inserted)
11959         swap_insertion (loc, *loc_first_p);
11960       loc->duplicate = 1;
11961
11962       /* Clear the condition modification flag.  */
11963       loc->condition_changed = condition_unchanged;
11964     }
11965
11966   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
11967     {
11968       if (insert_mode != UGLL_DONT_INSERT)
11969         insert_breakpoint_locations ();
11970       else
11971         {
11972           /* Even though the caller told us to not insert new
11973              locations, we may still need to update conditions on the
11974              target's side of breakpoints that were already inserted
11975              if the target is evaluating breakpoint conditions.  We
11976              only update conditions for locations that are marked
11977              "needs_update".  */
11978           update_inserted_breakpoint_locations ();
11979         }
11980     }
11981
11982   if (insert_mode != UGLL_DONT_INSERT)
11983     download_tracepoint_locations ();
11984 }
11985
11986 void
11987 breakpoint_retire_moribund (void)
11988 {
11989   for (int ix = 0; ix < moribund_locations.size (); ++ix)
11990     {
11991       struct bp_location *loc = moribund_locations[ix];
11992       if (--(loc->events_till_retirement) == 0)
11993         {
11994           decref_bp_location (&loc);
11995           unordered_remove (moribund_locations, ix);
11996           --ix;
11997         }
11998     }
11999 }
12000
12001 static void
12002 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12003 {
12004
12005   try
12006     {
12007       update_global_location_list (insert_mode);
12008     }
12009   catch (const gdb_exception_error &e)
12010     {
12011     }
12012 }
12013
12014 /* Clear BKP from a BPS.  */
12015
12016 static void
12017 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12018 {
12019   bpstat bs;
12020
12021   for (bs = bps; bs; bs = bs->next)
12022     if (bs->breakpoint_at == bpt)
12023       {
12024         bs->breakpoint_at = NULL;
12025         bs->old_val = NULL;
12026         /* bs->commands will be freed later.  */
12027       }
12028 }
12029
12030 /* Callback for iterate_over_threads.  */
12031 static int
12032 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12033 {
12034   struct breakpoint *bpt = (struct breakpoint *) data;
12035
12036   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12037   return 0;
12038 }
12039
12040 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12041    callbacks.  */
12042
12043 static void
12044 say_where (struct breakpoint *b)
12045 {
12046   struct value_print_options opts;
12047
12048   get_user_print_options (&opts);
12049
12050   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12051      single string.  */
12052   if (b->loc == NULL)
12053     {
12054       /* For pending locations, the output differs slightly based
12055          on b->extra_string.  If this is non-NULL, it contains either
12056          a condition or dprintf arguments.  */
12057       if (b->extra_string == NULL)
12058         {
12059           printf_filtered (_(" (%s) pending."),
12060                            event_location_to_string (b->location.get ()));
12061         }
12062       else if (b->type == bp_dprintf)
12063         {
12064           printf_filtered (_(" (%s,%s) pending."),
12065                            event_location_to_string (b->location.get ()),
12066                            b->extra_string);
12067         }
12068       else
12069         {
12070           printf_filtered (_(" (%s %s) pending."),
12071                            event_location_to_string (b->location.get ()),
12072                            b->extra_string);
12073         }
12074     }
12075   else
12076     {
12077       if (opts.addressprint || b->loc->symtab == NULL)
12078         {
12079           printf_filtered (" at ");
12080           fputs_styled (paddress (b->loc->gdbarch, b->loc->address),
12081                         address_style.style (),
12082                         gdb_stdout);
12083         }
12084       if (b->loc->symtab != NULL)
12085         {
12086           /* If there is a single location, we can print the location
12087              more nicely.  */
12088           if (b->loc->next == NULL)
12089             {
12090               puts_filtered (": file ");
12091               fputs_styled (symtab_to_filename_for_display (b->loc->symtab),
12092                             file_name_style.style (),
12093                             gdb_stdout);
12094               printf_filtered (", line %d.",
12095                                b->loc->line_number);
12096             }
12097           else
12098             /* This is not ideal, but each location may have a
12099                different file name, and this at least reflects the
12100                real situation somewhat.  */
12101             printf_filtered (": %s.",
12102                              event_location_to_string (b->location.get ()));
12103         }
12104
12105       if (b->loc->next)
12106         {
12107           struct bp_location *loc = b->loc;
12108           int n = 0;
12109           for (; loc; loc = loc->next)
12110             ++n;
12111           printf_filtered (" (%d locations)", n);
12112         }
12113     }
12114 }
12115
12116 bp_location::~bp_location ()
12117 {
12118   xfree (function_name);
12119 }
12120
12121 /* Destructor for the breakpoint base class.  */
12122
12123 breakpoint::~breakpoint ()
12124 {
12125   xfree (this->cond_string);
12126   xfree (this->extra_string);
12127   xfree (this->filter);
12128 }
12129
12130 static struct bp_location *
12131 base_breakpoint_allocate_location (struct breakpoint *self)
12132 {
12133   return new bp_location (self);
12134 }
12135
12136 static void
12137 base_breakpoint_re_set (struct breakpoint *b)
12138 {
12139   /* Nothing to re-set. */
12140 }
12141
12142 #define internal_error_pure_virtual_called() \
12143   gdb_assert_not_reached ("pure virtual function called")
12144
12145 static int
12146 base_breakpoint_insert_location (struct bp_location *bl)
12147 {
12148   internal_error_pure_virtual_called ();
12149 }
12150
12151 static int
12152 base_breakpoint_remove_location (struct bp_location *bl,
12153                                  enum remove_bp_reason reason)
12154 {
12155   internal_error_pure_virtual_called ();
12156 }
12157
12158 static int
12159 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12160                                 const address_space *aspace,
12161                                 CORE_ADDR bp_addr,
12162                                 const struct target_waitstatus *ws)
12163 {
12164   internal_error_pure_virtual_called ();
12165 }
12166
12167 static void
12168 base_breakpoint_check_status (bpstat bs)
12169 {
12170   /* Always stop.   */
12171 }
12172
12173 /* A "works_in_software_mode" breakpoint_ops method that just internal
12174    errors.  */
12175
12176 static int
12177 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12178 {
12179   internal_error_pure_virtual_called ();
12180 }
12181
12182 /* A "resources_needed" breakpoint_ops method that just internal
12183    errors.  */
12184
12185 static int
12186 base_breakpoint_resources_needed (const struct bp_location *bl)
12187 {
12188   internal_error_pure_virtual_called ();
12189 }
12190
12191 static enum print_stop_action
12192 base_breakpoint_print_it (bpstat bs)
12193 {
12194   internal_error_pure_virtual_called ();
12195 }
12196
12197 static void
12198 base_breakpoint_print_one_detail (const struct breakpoint *self,
12199                                   struct ui_out *uiout)
12200 {
12201   /* nothing */
12202 }
12203
12204 static void
12205 base_breakpoint_print_mention (struct breakpoint *b)
12206 {
12207   internal_error_pure_virtual_called ();
12208 }
12209
12210 static void
12211 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12212 {
12213   internal_error_pure_virtual_called ();
12214 }
12215
12216 static void
12217 base_breakpoint_create_sals_from_location
12218   (const struct event_location *location,
12219    struct linespec_result *canonical,
12220    enum bptype type_wanted)
12221 {
12222   internal_error_pure_virtual_called ();
12223 }
12224
12225 static void
12226 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12227                                         struct linespec_result *c,
12228                                         gdb::unique_xmalloc_ptr<char> cond_string,
12229                                         gdb::unique_xmalloc_ptr<char> extra_string,
12230                                         enum bptype type_wanted,
12231                                         enum bpdisp disposition,
12232                                         int thread,
12233                                         int task, int ignore_count,
12234                                         const struct breakpoint_ops *o,
12235                                         int from_tty, int enabled,
12236                                         int internal, unsigned flags)
12237 {
12238   internal_error_pure_virtual_called ();
12239 }
12240
12241 static std::vector<symtab_and_line>
12242 base_breakpoint_decode_location (struct breakpoint *b,
12243                                  const struct event_location *location,
12244                                  struct program_space *search_pspace)
12245 {
12246   internal_error_pure_virtual_called ();
12247 }
12248
12249 /* The default 'explains_signal' method.  */
12250
12251 static int
12252 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12253 {
12254   return 1;
12255 }
12256
12257 /* The default "after_condition_true" method.  */
12258
12259 static void
12260 base_breakpoint_after_condition_true (struct bpstats *bs)
12261 {
12262   /* Nothing to do.   */
12263 }
12264
12265 struct breakpoint_ops base_breakpoint_ops =
12266 {
12267   base_breakpoint_allocate_location,
12268   base_breakpoint_re_set,
12269   base_breakpoint_insert_location,
12270   base_breakpoint_remove_location,
12271   base_breakpoint_breakpoint_hit,
12272   base_breakpoint_check_status,
12273   base_breakpoint_resources_needed,
12274   base_breakpoint_works_in_software_mode,
12275   base_breakpoint_print_it,
12276   NULL,
12277   base_breakpoint_print_one_detail,
12278   base_breakpoint_print_mention,
12279   base_breakpoint_print_recreate,
12280   base_breakpoint_create_sals_from_location,
12281   base_breakpoint_create_breakpoints_sal,
12282   base_breakpoint_decode_location,
12283   base_breakpoint_explains_signal,
12284   base_breakpoint_after_condition_true,
12285 };
12286
12287 /* Default breakpoint_ops methods.  */
12288
12289 static void
12290 bkpt_re_set (struct breakpoint *b)
12291 {
12292   /* FIXME: is this still reachable?  */
12293   if (breakpoint_event_location_empty_p (b))
12294     {
12295       /* Anything without a location can't be re-set.  */
12296       delete_breakpoint (b);
12297       return;
12298     }
12299
12300   breakpoint_re_set_default (b);
12301 }
12302
12303 static int
12304 bkpt_insert_location (struct bp_location *bl)
12305 {
12306   CORE_ADDR addr = bl->target_info.reqstd_address;
12307
12308   bl->target_info.kind = breakpoint_kind (bl, &addr);
12309   bl->target_info.placed_address = addr;
12310
12311   if (bl->loc_type == bp_loc_hardware_breakpoint)
12312     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12313   else
12314     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12315 }
12316
12317 static int
12318 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12319 {
12320   if (bl->loc_type == bp_loc_hardware_breakpoint)
12321     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12322   else
12323     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12324 }
12325
12326 static int
12327 bkpt_breakpoint_hit (const struct bp_location *bl,
12328                      const address_space *aspace, CORE_ADDR bp_addr,
12329                      const struct target_waitstatus *ws)
12330 {
12331   if (ws->kind != TARGET_WAITKIND_STOPPED
12332       || ws->value.sig != GDB_SIGNAL_TRAP)
12333     return 0;
12334
12335   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12336                                  aspace, bp_addr))
12337     return 0;
12338
12339   if (overlay_debugging         /* unmapped overlay section */
12340       && section_is_overlay (bl->section)
12341       && !section_is_mapped (bl->section))
12342     return 0;
12343
12344   return 1;
12345 }
12346
12347 static int
12348 dprintf_breakpoint_hit (const struct bp_location *bl,
12349                         const address_space *aspace, CORE_ADDR bp_addr,
12350                         const struct target_waitstatus *ws)
12351 {
12352   if (dprintf_style == dprintf_style_agent
12353       && target_can_run_breakpoint_commands ())
12354     {
12355       /* An agent-style dprintf never causes a stop.  If we see a trap
12356          for this address it must be for a breakpoint that happens to
12357          be set at the same address.  */
12358       return 0;
12359     }
12360
12361   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12362 }
12363
12364 static int
12365 bkpt_resources_needed (const struct bp_location *bl)
12366 {
12367   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12368
12369   return 1;
12370 }
12371
12372 static enum print_stop_action
12373 bkpt_print_it (bpstat bs)
12374 {
12375   struct breakpoint *b;
12376   const struct bp_location *bl;
12377   int bp_temp;
12378   struct ui_out *uiout = current_uiout;
12379
12380   gdb_assert (bs->bp_location_at != NULL);
12381
12382   bl = bs->bp_location_at;
12383   b = bs->breakpoint_at;
12384
12385   bp_temp = b->disposition == disp_del;
12386   if (bl->address != bl->requested_address)
12387     breakpoint_adjustment_warning (bl->requested_address,
12388                                    bl->address,
12389                                    b->number, 1);
12390   annotate_breakpoint (b->number);
12391   maybe_print_thread_hit_breakpoint (uiout);
12392
12393   if (bp_temp)
12394     uiout->text ("Temporary breakpoint ");
12395   else
12396     uiout->text ("Breakpoint ");
12397   if (uiout->is_mi_like_p ())
12398     {
12399       uiout->field_string ("reason",
12400                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12401       uiout->field_string ("disp", bpdisp_text (b->disposition));
12402     }
12403   uiout->field_int ("bkptno", b->number);
12404   uiout->text (", ");
12405
12406   return PRINT_SRC_AND_LOC;
12407 }
12408
12409 static void
12410 bkpt_print_mention (struct breakpoint *b)
12411 {
12412   if (current_uiout->is_mi_like_p ())
12413     return;
12414
12415   switch (b->type)
12416     {
12417     case bp_breakpoint:
12418     case bp_gnu_ifunc_resolver:
12419       if (b->disposition == disp_del)
12420         printf_filtered (_("Temporary breakpoint"));
12421       else
12422         printf_filtered (_("Breakpoint"));
12423       printf_filtered (_(" %d"), b->number);
12424       if (b->type == bp_gnu_ifunc_resolver)
12425         printf_filtered (_(" at gnu-indirect-function resolver"));
12426       break;
12427     case bp_hardware_breakpoint:
12428       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12429       break;
12430     case bp_dprintf:
12431       printf_filtered (_("Dprintf %d"), b->number);
12432       break;
12433     }
12434
12435   say_where (b);
12436 }
12437
12438 static void
12439 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12440 {
12441   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12442     fprintf_unfiltered (fp, "tbreak");
12443   else if (tp->type == bp_breakpoint)
12444     fprintf_unfiltered (fp, "break");
12445   else if (tp->type == bp_hardware_breakpoint
12446            && tp->disposition == disp_del)
12447     fprintf_unfiltered (fp, "thbreak");
12448   else if (tp->type == bp_hardware_breakpoint)
12449     fprintf_unfiltered (fp, "hbreak");
12450   else
12451     internal_error (__FILE__, __LINE__,
12452                     _("unhandled breakpoint type %d"), (int) tp->type);
12453
12454   fprintf_unfiltered (fp, " %s",
12455                       event_location_to_string (tp->location.get ()));
12456
12457   /* Print out extra_string if this breakpoint is pending.  It might
12458      contain, for example, conditions that were set by the user.  */
12459   if (tp->loc == NULL && tp->extra_string != NULL)
12460     fprintf_unfiltered (fp, " %s", tp->extra_string);
12461
12462   print_recreate_thread (tp, fp);
12463 }
12464
12465 static void
12466 bkpt_create_sals_from_location (const struct event_location *location,
12467                                 struct linespec_result *canonical,
12468                                 enum bptype type_wanted)
12469 {
12470   create_sals_from_location_default (location, canonical, type_wanted);
12471 }
12472
12473 static void
12474 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12475                              struct linespec_result *canonical,
12476                              gdb::unique_xmalloc_ptr<char> cond_string,
12477                              gdb::unique_xmalloc_ptr<char> extra_string,
12478                              enum bptype type_wanted,
12479                              enum bpdisp disposition,
12480                              int thread,
12481                              int task, int ignore_count,
12482                              const struct breakpoint_ops *ops,
12483                              int from_tty, int enabled,
12484                              int internal, unsigned flags)
12485 {
12486   create_breakpoints_sal_default (gdbarch, canonical,
12487                                   std::move (cond_string),
12488                                   std::move (extra_string),
12489                                   type_wanted,
12490                                   disposition, thread, task,
12491                                   ignore_count, ops, from_tty,
12492                                   enabled, internal, flags);
12493 }
12494
12495 static std::vector<symtab_and_line>
12496 bkpt_decode_location (struct breakpoint *b,
12497                       const struct event_location *location,
12498                       struct program_space *search_pspace)
12499 {
12500   return decode_location_default (b, location, search_pspace);
12501 }
12502
12503 /* Virtual table for internal breakpoints.  */
12504
12505 static void
12506 internal_bkpt_re_set (struct breakpoint *b)
12507 {
12508   switch (b->type)
12509     {
12510       /* Delete overlay event and longjmp master breakpoints; they
12511          will be reset later by breakpoint_re_set.  */
12512     case bp_overlay_event:
12513     case bp_longjmp_master:
12514     case bp_std_terminate_master:
12515     case bp_exception_master:
12516       delete_breakpoint (b);
12517       break;
12518
12519       /* This breakpoint is special, it's set up when the inferior
12520          starts and we really don't want to touch it.  */
12521     case bp_shlib_event:
12522
12523       /* Like bp_shlib_event, this breakpoint type is special.  Once
12524          it is set up, we do not want to touch it.  */
12525     case bp_thread_event:
12526       break;
12527     }
12528 }
12529
12530 static void
12531 internal_bkpt_check_status (bpstat bs)
12532 {
12533   if (bs->breakpoint_at->type == bp_shlib_event)
12534     {
12535       /* If requested, stop when the dynamic linker notifies GDB of
12536          events.  This allows the user to get control and place
12537          breakpoints in initializer routines for dynamically loaded
12538          objects (among other things).  */
12539       bs->stop = stop_on_solib_events;
12540       bs->print = stop_on_solib_events;
12541     }
12542   else
12543     bs->stop = 0;
12544 }
12545
12546 static enum print_stop_action
12547 internal_bkpt_print_it (bpstat bs)
12548 {
12549   struct breakpoint *b;
12550
12551   b = bs->breakpoint_at;
12552
12553   switch (b->type)
12554     {
12555     case bp_shlib_event:
12556       /* Did we stop because the user set the stop_on_solib_events
12557          variable?  (If so, we report this as a generic, "Stopped due
12558          to shlib event" message.) */
12559       print_solib_event (0);
12560       break;
12561
12562     case bp_thread_event:
12563       /* Not sure how we will get here.
12564          GDB should not stop for these breakpoints.  */
12565       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12566       break;
12567
12568     case bp_overlay_event:
12569       /* By analogy with the thread event, GDB should not stop for these.  */
12570       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12571       break;
12572
12573     case bp_longjmp_master:
12574       /* These should never be enabled.  */
12575       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12576       break;
12577
12578     case bp_std_terminate_master:
12579       /* These should never be enabled.  */
12580       printf_filtered (_("std::terminate Master Breakpoint: "
12581                          "gdb should not stop!\n"));
12582       break;
12583
12584     case bp_exception_master:
12585       /* These should never be enabled.  */
12586       printf_filtered (_("Exception Master Breakpoint: "
12587                          "gdb should not stop!\n"));
12588       break;
12589     }
12590
12591   return PRINT_NOTHING;
12592 }
12593
12594 static void
12595 internal_bkpt_print_mention (struct breakpoint *b)
12596 {
12597   /* Nothing to mention.  These breakpoints are internal.  */
12598 }
12599
12600 /* Virtual table for momentary breakpoints  */
12601
12602 static void
12603 momentary_bkpt_re_set (struct breakpoint *b)
12604 {
12605   /* Keep temporary breakpoints, which can be encountered when we step
12606      over a dlopen call and solib_add is resetting the breakpoints.
12607      Otherwise these should have been blown away via the cleanup chain
12608      or by breakpoint_init_inferior when we rerun the executable.  */
12609 }
12610
12611 static void
12612 momentary_bkpt_check_status (bpstat bs)
12613 {
12614   /* Nothing.  The point of these breakpoints is causing a stop.  */
12615 }
12616
12617 static enum print_stop_action
12618 momentary_bkpt_print_it (bpstat bs)
12619 {
12620   return PRINT_UNKNOWN;
12621 }
12622
12623 static void
12624 momentary_bkpt_print_mention (struct breakpoint *b)
12625 {
12626   /* Nothing to mention.  These breakpoints are internal.  */
12627 }
12628
12629 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12630
12631    It gets cleared already on the removal of the first one of such placed
12632    breakpoints.  This is OK as they get all removed altogether.  */
12633
12634 longjmp_breakpoint::~longjmp_breakpoint ()
12635 {
12636   thread_info *tp = find_thread_global_id (this->thread);
12637
12638   if (tp != NULL)
12639     tp->initiating_frame = null_frame_id;
12640 }
12641
12642 /* Specific methods for probe breakpoints.  */
12643
12644 static int
12645 bkpt_probe_insert_location (struct bp_location *bl)
12646 {
12647   int v = bkpt_insert_location (bl);
12648
12649   if (v == 0)
12650     {
12651       /* The insertion was successful, now let's set the probe's semaphore
12652          if needed.  */
12653       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12654     }
12655
12656   return v;
12657 }
12658
12659 static int
12660 bkpt_probe_remove_location (struct bp_location *bl,
12661                             enum remove_bp_reason reason)
12662 {
12663   /* Let's clear the semaphore before removing the location.  */
12664   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12665
12666   return bkpt_remove_location (bl, reason);
12667 }
12668
12669 static void
12670 bkpt_probe_create_sals_from_location (const struct event_location *location,
12671                                       struct linespec_result *canonical,
12672                                       enum bptype type_wanted)
12673 {
12674   struct linespec_sals lsal;
12675
12676   lsal.sals = parse_probes (location, NULL, canonical);
12677   lsal.canonical
12678     = xstrdup (event_location_to_string (canonical->location.get ()));
12679   canonical->lsals.push_back (std::move (lsal));
12680 }
12681
12682 static std::vector<symtab_and_line>
12683 bkpt_probe_decode_location (struct breakpoint *b,
12684                             const struct event_location *location,
12685                             struct program_space *search_pspace)
12686 {
12687   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12688   if (sals.empty ())
12689     error (_("probe not found"));
12690   return sals;
12691 }
12692
12693 /* The breakpoint_ops structure to be used in tracepoints.  */
12694
12695 static void
12696 tracepoint_re_set (struct breakpoint *b)
12697 {
12698   breakpoint_re_set_default (b);
12699 }
12700
12701 static int
12702 tracepoint_breakpoint_hit (const struct bp_location *bl,
12703                            const address_space *aspace, CORE_ADDR bp_addr,
12704                            const struct target_waitstatus *ws)
12705 {
12706   /* By definition, the inferior does not report stops at
12707      tracepoints.  */
12708   return 0;
12709 }
12710
12711 static void
12712 tracepoint_print_one_detail (const struct breakpoint *self,
12713                              struct ui_out *uiout)
12714 {
12715   struct tracepoint *tp = (struct tracepoint *) self;
12716   if (!tp->static_trace_marker_id.empty ())
12717     {
12718       gdb_assert (self->type == bp_static_tracepoint);
12719
12720       uiout->text ("\tmarker id is ");
12721       uiout->field_string ("static-tracepoint-marker-string-id",
12722                            tp->static_trace_marker_id);
12723       uiout->text ("\n");
12724     }
12725 }
12726
12727 static void
12728 tracepoint_print_mention (struct breakpoint *b)
12729 {
12730   if (current_uiout->is_mi_like_p ())
12731     return;
12732
12733   switch (b->type)
12734     {
12735     case bp_tracepoint:
12736       printf_filtered (_("Tracepoint"));
12737       printf_filtered (_(" %d"), b->number);
12738       break;
12739     case bp_fast_tracepoint:
12740       printf_filtered (_("Fast tracepoint"));
12741       printf_filtered (_(" %d"), b->number);
12742       break;
12743     case bp_static_tracepoint:
12744       printf_filtered (_("Static tracepoint"));
12745       printf_filtered (_(" %d"), b->number);
12746       break;
12747     default:
12748       internal_error (__FILE__, __LINE__,
12749                       _("unhandled tracepoint type %d"), (int) b->type);
12750     }
12751
12752   say_where (b);
12753 }
12754
12755 static void
12756 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12757 {
12758   struct tracepoint *tp = (struct tracepoint *) self;
12759
12760   if (self->type == bp_fast_tracepoint)
12761     fprintf_unfiltered (fp, "ftrace");
12762   else if (self->type == bp_static_tracepoint)
12763     fprintf_unfiltered (fp, "strace");
12764   else if (self->type == bp_tracepoint)
12765     fprintf_unfiltered (fp, "trace");
12766   else
12767     internal_error (__FILE__, __LINE__,
12768                     _("unhandled tracepoint type %d"), (int) self->type);
12769
12770   fprintf_unfiltered (fp, " %s",
12771                       event_location_to_string (self->location.get ()));
12772   print_recreate_thread (self, fp);
12773
12774   if (tp->pass_count)
12775     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12776 }
12777
12778 static void
12779 tracepoint_create_sals_from_location (const struct event_location *location,
12780                                       struct linespec_result *canonical,
12781                                       enum bptype type_wanted)
12782 {
12783   create_sals_from_location_default (location, canonical, type_wanted);
12784 }
12785
12786 static void
12787 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12788                                    struct linespec_result *canonical,
12789                                    gdb::unique_xmalloc_ptr<char> cond_string,
12790                                    gdb::unique_xmalloc_ptr<char> extra_string,
12791                                    enum bptype type_wanted,
12792                                    enum bpdisp disposition,
12793                                    int thread,
12794                                    int task, int ignore_count,
12795                                    const struct breakpoint_ops *ops,
12796                                    int from_tty, int enabled,
12797                                    int internal, unsigned flags)
12798 {
12799   create_breakpoints_sal_default (gdbarch, canonical,
12800                                   std::move (cond_string),
12801                                   std::move (extra_string),
12802                                   type_wanted,
12803                                   disposition, thread, task,
12804                                   ignore_count, ops, from_tty,
12805                                   enabled, internal, flags);
12806 }
12807
12808 static std::vector<symtab_and_line>
12809 tracepoint_decode_location (struct breakpoint *b,
12810                             const struct event_location *location,
12811                             struct program_space *search_pspace)
12812 {
12813   return decode_location_default (b, location, search_pspace);
12814 }
12815
12816 struct breakpoint_ops tracepoint_breakpoint_ops;
12817
12818 /* The breakpoint_ops structure to be use on tracepoints placed in a
12819    static probe.  */
12820
12821 static void
12822 tracepoint_probe_create_sals_from_location
12823   (const struct event_location *location,
12824    struct linespec_result *canonical,
12825    enum bptype type_wanted)
12826 {
12827   /* We use the same method for breakpoint on probes.  */
12828   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12829 }
12830
12831 static std::vector<symtab_and_line>
12832 tracepoint_probe_decode_location (struct breakpoint *b,
12833                                   const struct event_location *location,
12834                                   struct program_space *search_pspace)
12835 {
12836   /* We use the same method for breakpoint on probes.  */
12837   return bkpt_probe_decode_location (b, location, search_pspace);
12838 }
12839
12840 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12841
12842 /* Dprintf breakpoint_ops methods.  */
12843
12844 static void
12845 dprintf_re_set (struct breakpoint *b)
12846 {
12847   breakpoint_re_set_default (b);
12848
12849   /* extra_string should never be non-NULL for dprintf.  */
12850   gdb_assert (b->extra_string != NULL);
12851
12852   /* 1 - connect to target 1, that can run breakpoint commands.
12853      2 - create a dprintf, which resolves fine.
12854      3 - disconnect from target 1
12855      4 - connect to target 2, that can NOT run breakpoint commands.
12856
12857      After steps #3/#4, you'll want the dprintf command list to
12858      be updated, because target 1 and 2 may well return different
12859      answers for target_can_run_breakpoint_commands().
12860      Given absence of finer grained resetting, we get to do
12861      it all the time.  */
12862   if (b->extra_string != NULL)
12863     update_dprintf_command_list (b);
12864 }
12865
12866 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
12867
12868 static void
12869 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12870 {
12871   fprintf_unfiltered (fp, "dprintf %s,%s",
12872                       event_location_to_string (tp->location.get ()),
12873                       tp->extra_string);
12874   print_recreate_thread (tp, fp);
12875 }
12876
12877 /* Implement the "after_condition_true" breakpoint_ops method for
12878    dprintf.
12879
12880    dprintf's are implemented with regular commands in their command
12881    list, but we run the commands here instead of before presenting the
12882    stop to the user, as dprintf's don't actually cause a stop.  This
12883    also makes it so that the commands of multiple dprintfs at the same
12884    address are all handled.  */
12885
12886 static void
12887 dprintf_after_condition_true (struct bpstats *bs)
12888 {
12889   struct bpstats tmp_bs;
12890   struct bpstats *tmp_bs_p = &tmp_bs;
12891
12892   /* dprintf's never cause a stop.  This wasn't set in the
12893      check_status hook instead because that would make the dprintf's
12894      condition not be evaluated.  */
12895   bs->stop = 0;
12896
12897   /* Run the command list here.  Take ownership of it instead of
12898      copying.  We never want these commands to run later in
12899      bpstat_do_actions, if a breakpoint that causes a stop happens to
12900      be set at same address as this dprintf, or even if running the
12901      commands here throws.  */
12902   tmp_bs.commands = bs->commands;
12903   bs->commands = NULL;
12904
12905   bpstat_do_actions_1 (&tmp_bs_p);
12906
12907   /* 'tmp_bs.commands' will usually be NULL by now, but
12908      bpstat_do_actions_1 may return early without processing the whole
12909      list.  */
12910 }
12911
12912 /* The breakpoint_ops structure to be used on static tracepoints with
12913    markers (`-m').  */
12914
12915 static void
12916 strace_marker_create_sals_from_location (const struct event_location *location,
12917                                          struct linespec_result *canonical,
12918                                          enum bptype type_wanted)
12919 {
12920   struct linespec_sals lsal;
12921   const char *arg_start, *arg;
12922
12923   arg = arg_start = get_linespec_location (location)->spec_string;
12924   lsal.sals = decode_static_tracepoint_spec (&arg);
12925
12926   std::string str (arg_start, arg - arg_start);
12927   const char *ptr = str.c_str ();
12928   canonical->location
12929     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
12930
12931   lsal.canonical
12932     = xstrdup (event_location_to_string (canonical->location.get ()));
12933   canonical->lsals.push_back (std::move (lsal));
12934 }
12935
12936 static void
12937 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12938                                       struct linespec_result *canonical,
12939                                       gdb::unique_xmalloc_ptr<char> cond_string,
12940                                       gdb::unique_xmalloc_ptr<char> extra_string,
12941                                       enum bptype type_wanted,
12942                                       enum bpdisp disposition,
12943                                       int thread,
12944                                       int task, int ignore_count,
12945                                       const struct breakpoint_ops *ops,
12946                                       int from_tty, int enabled,
12947                                       int internal, unsigned flags)
12948 {
12949   const linespec_sals &lsal = canonical->lsals[0];
12950
12951   /* If the user is creating a static tracepoint by marker id
12952      (strace -m MARKER_ID), then store the sals index, so that
12953      breakpoint_re_set can try to match up which of the newly
12954      found markers corresponds to this one, and, don't try to
12955      expand multiple locations for each sal, given than SALS
12956      already should contain all sals for MARKER_ID.  */
12957
12958   for (size_t i = 0; i < lsal.sals.size (); i++)
12959     {
12960       event_location_up location
12961         = copy_event_location (canonical->location.get ());
12962
12963       std::unique_ptr<tracepoint> tp (new tracepoint ());
12964       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
12965                            std::move (location), NULL,
12966                            std::move (cond_string),
12967                            std::move (extra_string),
12968                            type_wanted, disposition,
12969                            thread, task, ignore_count, ops,
12970                            from_tty, enabled, internal, flags,
12971                            canonical->special_display);
12972       /* Given that its possible to have multiple markers with
12973          the same string id, if the user is creating a static
12974          tracepoint by marker id ("strace -m MARKER_ID"), then
12975          store the sals index, so that breakpoint_re_set can
12976          try to match up which of the newly found markers
12977          corresponds to this one  */
12978       tp->static_trace_marker_id_idx = i;
12979
12980       install_breakpoint (internal, std::move (tp), 0);
12981     }
12982 }
12983
12984 static std::vector<symtab_and_line>
12985 strace_marker_decode_location (struct breakpoint *b,
12986                                const struct event_location *location,
12987                                struct program_space *search_pspace)
12988 {
12989   struct tracepoint *tp = (struct tracepoint *) b;
12990   const char *s = get_linespec_location (location)->spec_string;
12991
12992   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
12993   if (sals.size () > tp->static_trace_marker_id_idx)
12994     {
12995       sals[0] = sals[tp->static_trace_marker_id_idx];
12996       sals.resize (1);
12997       return sals;
12998     }
12999   else
13000     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13001 }
13002
13003 static struct breakpoint_ops strace_marker_breakpoint_ops;
13004
13005 static int
13006 strace_marker_p (struct breakpoint *b)
13007 {
13008   return b->ops == &strace_marker_breakpoint_ops;
13009 }
13010
13011 /* Delete a breakpoint and clean up all traces of it in the data
13012    structures.  */
13013
13014 void
13015 delete_breakpoint (struct breakpoint *bpt)
13016 {
13017   struct breakpoint *b;
13018
13019   gdb_assert (bpt != NULL);
13020
13021   /* Has this bp already been deleted?  This can happen because
13022      multiple lists can hold pointers to bp's.  bpstat lists are
13023      especial culprits.
13024
13025      One example of this happening is a watchpoint's scope bp.  When
13026      the scope bp triggers, we notice that the watchpoint is out of
13027      scope, and delete it.  We also delete its scope bp.  But the
13028      scope bp is marked "auto-deleting", and is already on a bpstat.
13029      That bpstat is then checked for auto-deleting bp's, which are
13030      deleted.
13031
13032      A real solution to this problem might involve reference counts in
13033      bp's, and/or giving them pointers back to their referencing
13034      bpstat's, and teaching delete_breakpoint to only free a bp's
13035      storage when no more references were extent.  A cheaper bandaid
13036      was chosen.  */
13037   if (bpt->type == bp_none)
13038     return;
13039
13040   /* At least avoid this stale reference until the reference counting
13041      of breakpoints gets resolved.  */
13042   if (bpt->related_breakpoint != bpt)
13043     {
13044       struct breakpoint *related;
13045       struct watchpoint *w;
13046
13047       if (bpt->type == bp_watchpoint_scope)
13048         w = (struct watchpoint *) bpt->related_breakpoint;
13049       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13050         w = (struct watchpoint *) bpt;
13051       else
13052         w = NULL;
13053       if (w != NULL)
13054         watchpoint_del_at_next_stop (w);
13055
13056       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13057       for (related = bpt; related->related_breakpoint != bpt;
13058            related = related->related_breakpoint);
13059       related->related_breakpoint = bpt->related_breakpoint;
13060       bpt->related_breakpoint = bpt;
13061     }
13062
13063   /* watch_command_1 creates a watchpoint but only sets its number if
13064      update_watchpoint succeeds in creating its bp_locations.  If there's
13065      a problem in that process, we'll be asked to delete the half-created
13066      watchpoint.  In that case, don't announce the deletion.  */
13067   if (bpt->number)
13068     gdb::observers::breakpoint_deleted.notify (bpt);
13069
13070   if (breakpoint_chain == bpt)
13071     breakpoint_chain = bpt->next;
13072
13073   ALL_BREAKPOINTS (b)
13074     if (b->next == bpt)
13075     {
13076       b->next = bpt->next;
13077       break;
13078     }
13079
13080   /* Be sure no bpstat's are pointing at the breakpoint after it's
13081      been freed.  */
13082   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13083      in all threads for now.  Note that we cannot just remove bpstats
13084      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13085      commands are associated with the bpstat; if we remove it here,
13086      then the later call to bpstat_do_actions (&stop_bpstat); in
13087      event-top.c won't do anything, and temporary breakpoints with
13088      commands won't work.  */
13089
13090   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13091
13092   /* Now that breakpoint is removed from breakpoint list, update the
13093      global location list.  This will remove locations that used to
13094      belong to this breakpoint.  Do this before freeing the breakpoint
13095      itself, since remove_breakpoint looks at location's owner.  It
13096      might be better design to have location completely
13097      self-contained, but it's not the case now.  */
13098   update_global_location_list (UGLL_DONT_INSERT);
13099
13100   /* On the chance that someone will soon try again to delete this
13101      same bp, we mark it as deleted before freeing its storage.  */
13102   bpt->type = bp_none;
13103   delete bpt;
13104 }
13105
13106 /* Iterator function to call a user-provided callback function once
13107    for each of B and its related breakpoints.  */
13108
13109 static void
13110 iterate_over_related_breakpoints (struct breakpoint *b,
13111                                   gdb::function_view<void (breakpoint *)> function)
13112 {
13113   struct breakpoint *related;
13114
13115   related = b;
13116   do
13117     {
13118       struct breakpoint *next;
13119
13120       /* FUNCTION may delete RELATED.  */
13121       next = related->related_breakpoint;
13122
13123       if (next == related)
13124         {
13125           /* RELATED is the last ring entry.  */
13126           function (related);
13127
13128           /* FUNCTION may have deleted it, so we'd never reach back to
13129              B.  There's nothing left to do anyway, so just break
13130              out.  */
13131           break;
13132         }
13133       else
13134         function (related);
13135
13136       related = next;
13137     }
13138   while (related != b);
13139 }
13140
13141 static void
13142 delete_command (const char *arg, int from_tty)
13143 {
13144   struct breakpoint *b, *b_tmp;
13145
13146   dont_repeat ();
13147
13148   if (arg == 0)
13149     {
13150       int breaks_to_delete = 0;
13151
13152       /* Delete all breakpoints if no argument.  Do not delete
13153          internal breakpoints, these have to be deleted with an
13154          explicit breakpoint number argument.  */
13155       ALL_BREAKPOINTS (b)
13156         if (user_breakpoint_p (b))
13157           {
13158             breaks_to_delete = 1;
13159             break;
13160           }
13161
13162       /* Ask user only if there are some breakpoints to delete.  */
13163       if (!from_tty
13164           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13165         {
13166           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13167             if (user_breakpoint_p (b))
13168               delete_breakpoint (b);
13169         }
13170     }
13171   else
13172     map_breakpoint_numbers
13173       (arg, [&] (breakpoint *br)
13174        {
13175          iterate_over_related_breakpoints (br, delete_breakpoint);
13176        });
13177 }
13178
13179 /* Return true if all locations of B bound to PSPACE are pending.  If
13180    PSPACE is NULL, all locations of all program spaces are
13181    considered.  */
13182
13183 static int
13184 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13185 {
13186   struct bp_location *loc;
13187
13188   for (loc = b->loc; loc != NULL; loc = loc->next)
13189     if ((pspace == NULL
13190          || loc->pspace == pspace)
13191         && !loc->shlib_disabled
13192         && !loc->pspace->executing_startup)
13193       return 0;
13194   return 1;
13195 }
13196
13197 /* Subroutine of update_breakpoint_locations to simplify it.
13198    Return non-zero if multiple fns in list LOC have the same name.
13199    Null names are ignored.  */
13200
13201 static int
13202 ambiguous_names_p (struct bp_location *loc)
13203 {
13204   struct bp_location *l;
13205   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13206                                    xcalloc, xfree);
13207
13208   for (l = loc; l != NULL; l = l->next)
13209     {
13210       const char **slot;
13211       const char *name = l->function_name;
13212
13213       /* Allow for some names to be NULL, ignore them.  */
13214       if (name == NULL)
13215         continue;
13216
13217       slot = (const char **) htab_find_slot (htab, (const void *) name,
13218                                              INSERT);
13219       /* NOTE: We can assume slot != NULL here because xcalloc never
13220          returns NULL.  */
13221       if (*slot != NULL)
13222         {
13223           htab_delete (htab);
13224           return 1;
13225         }
13226       *slot = name;
13227     }
13228
13229   htab_delete (htab);
13230   return 0;
13231 }
13232
13233 /* When symbols change, it probably means the sources changed as well,
13234    and it might mean the static tracepoint markers are no longer at
13235    the same address or line numbers they used to be at last we
13236    checked.  Losing your static tracepoints whenever you rebuild is
13237    undesirable.  This function tries to resync/rematch gdb static
13238    tracepoints with the markers on the target, for static tracepoints
13239    that have not been set by marker id.  Static tracepoint that have
13240    been set by marker id are reset by marker id in breakpoint_re_set.
13241    The heuristic is:
13242
13243    1) For a tracepoint set at a specific address, look for a marker at
13244    the old PC.  If one is found there, assume to be the same marker.
13245    If the name / string id of the marker found is different from the
13246    previous known name, assume that means the user renamed the marker
13247    in the sources, and output a warning.
13248
13249    2) For a tracepoint set at a given line number, look for a marker
13250    at the new address of the old line number.  If one is found there,
13251    assume to be the same marker.  If the name / string id of the
13252    marker found is different from the previous known name, assume that
13253    means the user renamed the marker in the sources, and output a
13254    warning.
13255
13256    3) If a marker is no longer found at the same address or line, it
13257    may mean the marker no longer exists.  But it may also just mean
13258    the code changed a bit.  Maybe the user added a few lines of code
13259    that made the marker move up or down (in line number terms).  Ask
13260    the target for info about the marker with the string id as we knew
13261    it.  If found, update line number and address in the matching
13262    static tracepoint.  This will get confused if there's more than one
13263    marker with the same ID (possible in UST, although unadvised
13264    precisely because it confuses tools).  */
13265
13266 static struct symtab_and_line
13267 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13268 {
13269   struct tracepoint *tp = (struct tracepoint *) b;
13270   struct static_tracepoint_marker marker;
13271   CORE_ADDR pc;
13272
13273   pc = sal.pc;
13274   if (sal.line)
13275     find_line_pc (sal.symtab, sal.line, &pc);
13276
13277   if (target_static_tracepoint_marker_at (pc, &marker))
13278     {
13279       if (tp->static_trace_marker_id != marker.str_id)
13280         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13281                  b->number, tp->static_trace_marker_id.c_str (),
13282                  marker.str_id.c_str ());
13283
13284       tp->static_trace_marker_id = std::move (marker.str_id);
13285
13286       return sal;
13287     }
13288
13289   /* Old marker wasn't found on target at lineno.  Try looking it up
13290      by string ID.  */
13291   if (!sal.explicit_pc
13292       && sal.line != 0
13293       && sal.symtab != NULL
13294       && !tp->static_trace_marker_id.empty ())
13295     {
13296       std::vector<static_tracepoint_marker> markers
13297         = target_static_tracepoint_markers_by_strid
13298             (tp->static_trace_marker_id.c_str ());
13299
13300       if (!markers.empty ())
13301         {
13302           struct symbol *sym;
13303           struct static_tracepoint_marker *tpmarker;
13304           struct ui_out *uiout = current_uiout;
13305           struct explicit_location explicit_loc;
13306
13307           tpmarker = &markers[0];
13308
13309           tp->static_trace_marker_id = std::move (tpmarker->str_id);
13310
13311           warning (_("marker for static tracepoint %d (%s) not "
13312                      "found at previous line number"),
13313                    b->number, tp->static_trace_marker_id.c_str ());
13314
13315           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13316           sym = find_pc_sect_function (tpmarker->address, NULL);
13317           uiout->text ("Now in ");
13318           if (sym)
13319             {
13320               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym),
13321                                    ui_out_style_kind::FUNCTION);
13322               uiout->text (" at ");
13323             }
13324           uiout->field_string ("file",
13325                                symtab_to_filename_for_display (sal2.symtab),
13326                                ui_out_style_kind::FILE);
13327           uiout->text (":");
13328
13329           if (uiout->is_mi_like_p ())
13330             {
13331               const char *fullname = symtab_to_fullname (sal2.symtab);
13332
13333               uiout->field_string ("fullname", fullname);
13334             }
13335
13336           uiout->field_int ("line", sal2.line);
13337           uiout->text ("\n");
13338
13339           b->loc->line_number = sal2.line;
13340           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13341
13342           b->location.reset (NULL);
13343           initialize_explicit_location (&explicit_loc);
13344           explicit_loc.source_filename
13345             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13346           explicit_loc.line_offset.offset = b->loc->line_number;
13347           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13348           b->location = new_explicit_location (&explicit_loc);
13349
13350           /* Might be nice to check if function changed, and warn if
13351              so.  */
13352         }
13353     }
13354   return sal;
13355 }
13356
13357 /* Returns 1 iff locations A and B are sufficiently same that
13358    we don't need to report breakpoint as changed.  */
13359
13360 static int
13361 locations_are_equal (struct bp_location *a, struct bp_location *b)
13362 {
13363   while (a && b)
13364     {
13365       if (a->address != b->address)
13366         return 0;
13367
13368       if (a->shlib_disabled != b->shlib_disabled)
13369         return 0;
13370
13371       if (a->enabled != b->enabled)
13372         return 0;
13373
13374       a = a->next;
13375       b = b->next;
13376     }
13377
13378   if ((a == NULL) != (b == NULL))
13379     return 0;
13380
13381   return 1;
13382 }
13383
13384 /* Split all locations of B that are bound to PSPACE out of B's
13385    location list to a separate list and return that list's head.  If
13386    PSPACE is NULL, hoist out all locations of B.  */
13387
13388 static struct bp_location *
13389 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13390 {
13391   struct bp_location head;
13392   struct bp_location *i = b->loc;
13393   struct bp_location **i_link = &b->loc;
13394   struct bp_location *hoisted = &head;
13395
13396   if (pspace == NULL)
13397     {
13398       i = b->loc;
13399       b->loc = NULL;
13400       return i;
13401     }
13402
13403   head.next = NULL;
13404
13405   while (i != NULL)
13406     {
13407       if (i->pspace == pspace)
13408         {
13409           *i_link = i->next;
13410           i->next = NULL;
13411           hoisted->next = i;
13412           hoisted = i;
13413         }
13414       else
13415         i_link = &i->next;
13416       i = *i_link;
13417     }
13418
13419   return head.next;
13420 }
13421
13422 /* Create new breakpoint locations for B (a hardware or software
13423    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13424    zero, then B is a ranged breakpoint.  Only recreates locations for
13425    FILTER_PSPACE.  Locations of other program spaces are left
13426    untouched.  */
13427
13428 void
13429 update_breakpoint_locations (struct breakpoint *b,
13430                              struct program_space *filter_pspace,
13431                              gdb::array_view<const symtab_and_line> sals,
13432                              gdb::array_view<const symtab_and_line> sals_end)
13433 {
13434   struct bp_location *existing_locations;
13435
13436   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13437     {
13438       /* Ranged breakpoints have only one start location and one end
13439          location.  */
13440       b->enable_state = bp_disabled;
13441       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13442                            "multiple locations found\n"),
13443                          b->number);
13444       return;
13445     }
13446
13447   /* If there's no new locations, and all existing locations are
13448      pending, don't do anything.  This optimizes the common case where
13449      all locations are in the same shared library, that was unloaded.
13450      We'd like to retain the location, so that when the library is
13451      loaded again, we don't loose the enabled/disabled status of the
13452      individual locations.  */
13453   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13454     return;
13455
13456   existing_locations = hoist_existing_locations (b, filter_pspace);
13457
13458   for (const auto &sal : sals)
13459     {
13460       struct bp_location *new_loc;
13461
13462       switch_to_program_space_and_thread (sal.pspace);
13463
13464       new_loc = add_location_to_breakpoint (b, &sal);
13465
13466       /* Reparse conditions, they might contain references to the
13467          old symtab.  */
13468       if (b->cond_string != NULL)
13469         {
13470           const char *s;
13471
13472           s = b->cond_string;
13473           try
13474             {
13475               new_loc->cond = parse_exp_1 (&s, sal.pc,
13476                                            block_for_pc (sal.pc),
13477                                            0);
13478             }
13479           catch (const gdb_exception_error &e)
13480             {
13481               warning (_("failed to reevaluate condition "
13482                          "for breakpoint %d: %s"), 
13483                        b->number, e.what ());
13484               new_loc->enabled = 0;
13485             }
13486         }
13487
13488       if (!sals_end.empty ())
13489         {
13490           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13491
13492           new_loc->length = end - sals[0].pc + 1;
13493         }
13494     }
13495
13496   /* If possible, carry over 'disable' status from existing
13497      breakpoints.  */
13498   {
13499     struct bp_location *e = existing_locations;
13500     /* If there are multiple breakpoints with the same function name,
13501        e.g. for inline functions, comparing function names won't work.
13502        Instead compare pc addresses; this is just a heuristic as things
13503        may have moved, but in practice it gives the correct answer
13504        often enough until a better solution is found.  */
13505     int have_ambiguous_names = ambiguous_names_p (b->loc);
13506
13507     for (; e; e = e->next)
13508       {
13509         if (!e->enabled && e->function_name)
13510           {
13511             struct bp_location *l = b->loc;
13512             if (have_ambiguous_names)
13513               {
13514                 for (; l; l = l->next)
13515                   if (breakpoint_locations_match (e, l))
13516                     {
13517                       l->enabled = 0;
13518                       break;
13519                     }
13520               }
13521             else
13522               {
13523                 for (; l; l = l->next)
13524                   if (l->function_name
13525                       && strcmp (e->function_name, l->function_name) == 0)
13526                     {
13527                       l->enabled = 0;
13528                       break;
13529                     }
13530               }
13531           }
13532       }
13533   }
13534
13535   if (!locations_are_equal (existing_locations, b->loc))
13536     gdb::observers::breakpoint_modified.notify (b);
13537 }
13538
13539 /* Find the SaL locations corresponding to the given LOCATION.
13540    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13541
13542 static std::vector<symtab_and_line>
13543 location_to_sals (struct breakpoint *b, struct event_location *location,
13544                   struct program_space *search_pspace, int *found)
13545 {
13546   struct gdb_exception exception;
13547
13548   gdb_assert (b->ops != NULL);
13549
13550   std::vector<symtab_and_line> sals;
13551
13552   try
13553     {
13554       sals = b->ops->decode_location (b, location, search_pspace);
13555     }
13556   catch (gdb_exception_error &e)
13557     {
13558       int not_found_and_ok = 0;
13559
13560       /* For pending breakpoints, it's expected that parsing will
13561          fail until the right shared library is loaded.  User has
13562          already told to create pending breakpoints and don't need
13563          extra messages.  If breakpoint is in bp_shlib_disabled
13564          state, then user already saw the message about that
13565          breakpoint being disabled, and don't want to see more
13566          errors.  */
13567       if (e.error == NOT_FOUND_ERROR
13568           && (b->condition_not_parsed
13569               || (b->loc != NULL
13570                   && search_pspace != NULL
13571                   && b->loc->pspace != search_pspace)
13572               || (b->loc && b->loc->shlib_disabled)
13573               || (b->loc && b->loc->pspace->executing_startup)
13574               || b->enable_state == bp_disabled))
13575         not_found_and_ok = 1;
13576
13577       if (!not_found_and_ok)
13578         {
13579           /* We surely don't want to warn about the same breakpoint
13580              10 times.  One solution, implemented here, is disable
13581              the breakpoint on error.  Another solution would be to
13582              have separate 'warning emitted' flag.  Since this
13583              happens only when a binary has changed, I don't know
13584              which approach is better.  */
13585           b->enable_state = bp_disabled;
13586           throw;
13587         }
13588
13589       exception = std::move (e);
13590     }
13591
13592   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13593     {
13594       for (auto &sal : sals)
13595         resolve_sal_pc (&sal);
13596       if (b->condition_not_parsed && b->extra_string != NULL)
13597         {
13598           char *cond_string, *extra_string;
13599           int thread, task;
13600
13601           find_condition_and_thread (b->extra_string, sals[0].pc,
13602                                      &cond_string, &thread, &task,
13603                                      &extra_string);
13604           gdb_assert (b->cond_string == NULL);
13605           if (cond_string)
13606             b->cond_string = cond_string;
13607           b->thread = thread;
13608           b->task = task;
13609           if (extra_string)
13610             {
13611               xfree (b->extra_string);
13612               b->extra_string = extra_string;
13613             }
13614           b->condition_not_parsed = 0;
13615         }
13616
13617       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13618         sals[0] = update_static_tracepoint (b, sals[0]);
13619
13620       *found = 1;
13621     }
13622   else
13623     *found = 0;
13624
13625   return sals;
13626 }
13627
13628 /* The default re_set method, for typical hardware or software
13629    breakpoints.  Reevaluate the breakpoint and recreate its
13630    locations.  */
13631
13632 static void
13633 breakpoint_re_set_default (struct breakpoint *b)
13634 {
13635   struct program_space *filter_pspace = current_program_space;
13636   std::vector<symtab_and_line> expanded, expanded_end;
13637
13638   int found;
13639   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13640                                                         filter_pspace, &found);
13641   if (found)
13642     expanded = std::move (sals);
13643
13644   if (b->location_range_end != NULL)
13645     {
13646       std::vector<symtab_and_line> sals_end
13647         = location_to_sals (b, b->location_range_end.get (),
13648                             filter_pspace, &found);
13649       if (found)
13650         expanded_end = std::move (sals_end);
13651     }
13652
13653   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13654 }
13655
13656 /* Default method for creating SALs from an address string.  It basically
13657    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13658
13659 static void
13660 create_sals_from_location_default (const struct event_location *location,
13661                                    struct linespec_result *canonical,
13662                                    enum bptype type_wanted)
13663 {
13664   parse_breakpoint_sals (location, canonical);
13665 }
13666
13667 /* Call create_breakpoints_sal for the given arguments.  This is the default
13668    function for the `create_breakpoints_sal' method of
13669    breakpoint_ops.  */
13670
13671 static void
13672 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13673                                 struct linespec_result *canonical,
13674                                 gdb::unique_xmalloc_ptr<char> cond_string,
13675                                 gdb::unique_xmalloc_ptr<char> extra_string,
13676                                 enum bptype type_wanted,
13677                                 enum bpdisp disposition,
13678                                 int thread,
13679                                 int task, int ignore_count,
13680                                 const struct breakpoint_ops *ops,
13681                                 int from_tty, int enabled,
13682                                 int internal, unsigned flags)
13683 {
13684   create_breakpoints_sal (gdbarch, canonical,
13685                           std::move (cond_string),
13686                           std::move (extra_string),
13687                           type_wanted, disposition,
13688                           thread, task, ignore_count, ops, from_tty,
13689                           enabled, internal, flags);
13690 }
13691
13692 /* Decode the line represented by S by calling decode_line_full.  This is the
13693    default function for the `decode_location' method of breakpoint_ops.  */
13694
13695 static std::vector<symtab_and_line>
13696 decode_location_default (struct breakpoint *b,
13697                          const struct event_location *location,
13698                          struct program_space *search_pspace)
13699 {
13700   struct linespec_result canonical;
13701
13702   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13703                     NULL, 0, &canonical, multiple_symbols_all,
13704                     b->filter);
13705
13706   /* We should get 0 or 1 resulting SALs.  */
13707   gdb_assert (canonical.lsals.size () < 2);
13708
13709   if (!canonical.lsals.empty ())
13710     {
13711       const linespec_sals &lsal = canonical.lsals[0];
13712       return std::move (lsal.sals);
13713     }
13714   return {};
13715 }
13716
13717 /* Reset a breakpoint.  */
13718
13719 static void
13720 breakpoint_re_set_one (breakpoint *b)
13721 {
13722   input_radix = b->input_radix;
13723   set_language (b->language);
13724
13725   b->ops->re_set (b);
13726 }
13727
13728 /* Re-set breakpoint locations for the current program space.
13729    Locations bound to other program spaces are left untouched.  */
13730
13731 void
13732 breakpoint_re_set (void)
13733 {
13734   struct breakpoint *b, *b_tmp;
13735
13736   {
13737     scoped_restore_current_language save_language;
13738     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13739     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13740
13741     /* breakpoint_re_set_one sets the current_language to the language
13742        of the breakpoint it is resetting (see prepare_re_set_context)
13743        before re-evaluating the breakpoint's location.  This change can
13744        unfortunately get undone by accident if the language_mode is set
13745        to auto, and we either switch frames, or more likely in this context,
13746        we select the current frame.
13747
13748        We prevent this by temporarily turning the language_mode to
13749        language_mode_manual.  We restore it once all breakpoints
13750        have been reset.  */
13751     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13752     language_mode = language_mode_manual;
13753
13754     /* Note: we must not try to insert locations until after all
13755        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13756        breakpoint 1, we'd insert the locations of breakpoint 2, which
13757        hadn't been re-set yet, and thus may have stale locations.  */
13758
13759     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13760       {
13761         try
13762           {
13763             breakpoint_re_set_one (b);
13764           }
13765         catch (const gdb_exception &ex)
13766           {
13767             exception_fprintf (gdb_stderr, ex,
13768                                "Error in re-setting breakpoint %d: ",
13769                                b->number);
13770           }
13771       }
13772
13773     jit_breakpoint_re_set ();
13774   }
13775
13776   create_overlay_event_breakpoint ();
13777   create_longjmp_master_breakpoint ();
13778   create_std_terminate_master_breakpoint ();
13779   create_exception_master_breakpoint ();
13780
13781   /* Now we can insert.  */
13782   update_global_location_list (UGLL_MAY_INSERT);
13783 }
13784 \f
13785 /* Reset the thread number of this breakpoint:
13786
13787    - If the breakpoint is for all threads, leave it as-is.
13788    - Else, reset it to the current thread for inferior_ptid.  */
13789 void
13790 breakpoint_re_set_thread (struct breakpoint *b)
13791 {
13792   if (b->thread != -1)
13793     {
13794       b->thread = inferior_thread ()->global_num;
13795
13796       /* We're being called after following a fork.  The new fork is
13797          selected as current, and unless this was a vfork will have a
13798          different program space from the original thread.  Reset that
13799          as well.  */
13800       b->loc->pspace = current_program_space;
13801     }
13802 }
13803
13804 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13805    If from_tty is nonzero, it prints a message to that effect,
13806    which ends with a period (no newline).  */
13807
13808 void
13809 set_ignore_count (int bptnum, int count, int from_tty)
13810 {
13811   struct breakpoint *b;
13812
13813   if (count < 0)
13814     count = 0;
13815
13816   ALL_BREAKPOINTS (b)
13817     if (b->number == bptnum)
13818     {
13819       if (is_tracepoint (b))
13820         {
13821           if (from_tty && count != 0)
13822             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13823                              bptnum);
13824           return;
13825         }
13826       
13827       b->ignore_count = count;
13828       if (from_tty)
13829         {
13830           if (count == 0)
13831             printf_filtered (_("Will stop next time "
13832                                "breakpoint %d is reached."),
13833                              bptnum);
13834           else if (count == 1)
13835             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13836                              bptnum);
13837           else
13838             printf_filtered (_("Will ignore next %d "
13839                                "crossings of breakpoint %d."),
13840                              count, bptnum);
13841         }
13842       gdb::observers::breakpoint_modified.notify (b);
13843       return;
13844     }
13845
13846   error (_("No breakpoint number %d."), bptnum);
13847 }
13848
13849 /* Command to set ignore-count of breakpoint N to COUNT.  */
13850
13851 static void
13852 ignore_command (const char *args, int from_tty)
13853 {
13854   const char *p = args;
13855   int num;
13856
13857   if (p == 0)
13858     error_no_arg (_("a breakpoint number"));
13859
13860   num = get_number (&p);
13861   if (num == 0)
13862     error (_("bad breakpoint number: '%s'"), args);
13863   if (*p == 0)
13864     error (_("Second argument (specified ignore-count) is missing."));
13865
13866   set_ignore_count (num,
13867                     longest_to_int (value_as_long (parse_and_eval (p))),
13868                     from_tty);
13869   if (from_tty)
13870     printf_filtered ("\n");
13871 }
13872 \f
13873
13874 /* Call FUNCTION on each of the breakpoints with numbers in the range
13875    defined by BP_NUM_RANGE (an inclusive range).  */
13876
13877 static void
13878 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
13879                              gdb::function_view<void (breakpoint *)> function)
13880 {
13881   if (bp_num_range.first == 0)
13882     {
13883       warning (_("bad breakpoint number at or near '%d'"),
13884                bp_num_range.first);
13885     }
13886   else
13887     {
13888       struct breakpoint *b, *tmp;
13889
13890       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
13891         {
13892           bool match = false;
13893
13894           ALL_BREAKPOINTS_SAFE (b, tmp)
13895             if (b->number == i)
13896               {
13897                 match = true;
13898                 function (b);
13899                 break;
13900               }
13901           if (!match)
13902             printf_unfiltered (_("No breakpoint number %d.\n"), i);
13903         }
13904     }
13905 }
13906
13907 /* Call FUNCTION on each of the breakpoints whose numbers are given in
13908    ARGS.  */
13909
13910 static void
13911 map_breakpoint_numbers (const char *args,
13912                         gdb::function_view<void (breakpoint *)> function)
13913 {
13914   if (args == NULL || *args == '\0')
13915     error_no_arg (_("one or more breakpoint numbers"));
13916
13917   number_or_range_parser parser (args);
13918
13919   while (!parser.finished ())
13920     {
13921       int num = parser.get_number ();
13922       map_breakpoint_number_range (std::make_pair (num, num), function);
13923     }
13924 }
13925
13926 /* Return the breakpoint location structure corresponding to the
13927    BP_NUM and LOC_NUM values.  */
13928
13929 static struct bp_location *
13930 find_location_by_number (int bp_num, int loc_num)
13931 {
13932   struct breakpoint *b;
13933
13934   ALL_BREAKPOINTS (b)
13935     if (b->number == bp_num)
13936       {
13937         break;
13938       }
13939
13940   if (!b || b->number != bp_num)
13941     error (_("Bad breakpoint number '%d'"), bp_num);
13942   
13943   if (loc_num == 0)
13944     error (_("Bad breakpoint location number '%d'"), loc_num);
13945
13946   int n = 0;
13947   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
13948     if (++n == loc_num)
13949       return loc;
13950
13951   error (_("Bad breakpoint location number '%d'"), loc_num);
13952 }
13953
13954 /* Modes of operation for extract_bp_num.  */
13955 enum class extract_bp_kind
13956 {
13957   /* Extracting a breakpoint number.  */
13958   bp,
13959
13960   /* Extracting a location number.  */
13961   loc,
13962 };
13963
13964 /* Extract a breakpoint or location number (as determined by KIND)
13965    from the string starting at START.  TRAILER is a character which
13966    can be found after the number.  If you don't want a trailer, use
13967    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
13968    string.  This always returns a positive integer.  */
13969
13970 static int
13971 extract_bp_num (extract_bp_kind kind, const char *start,
13972                 int trailer, const char **end_out = NULL)
13973 {
13974   const char *end = start;
13975   int num = get_number_trailer (&end, trailer);
13976   if (num < 0)
13977     error (kind == extract_bp_kind::bp
13978            ? _("Negative breakpoint number '%.*s'")
13979            : _("Negative breakpoint location number '%.*s'"),
13980            int (end - start), start);
13981   if (num == 0)
13982     error (kind == extract_bp_kind::bp
13983            ? _("Bad breakpoint number '%.*s'")
13984            : _("Bad breakpoint location number '%.*s'"),
13985            int (end - start), start);
13986
13987   if (end_out != NULL)
13988     *end_out = end;
13989   return num;
13990 }
13991
13992 /* Extract a breakpoint or location range (as determined by KIND) in
13993    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
13994    representing the (inclusive) range.  The returned pair's elements
13995    are always positive integers.  */
13996
13997 static std::pair<int, int>
13998 extract_bp_or_bp_range (extract_bp_kind kind,
13999                         const std::string &arg,
14000                         std::string::size_type arg_offset)
14001 {
14002   std::pair<int, int> range;
14003   const char *bp_loc = &arg[arg_offset];
14004   std::string::size_type dash = arg.find ('-', arg_offset);
14005   if (dash != std::string::npos)
14006     {
14007       /* bp_loc is a range (x-z).  */
14008       if (arg.length () == dash + 1)
14009         error (kind == extract_bp_kind::bp
14010                ? _("Bad breakpoint number at or near: '%s'")
14011                : _("Bad breakpoint location number at or near: '%s'"),
14012                bp_loc);
14013
14014       const char *end;
14015       const char *start_first = bp_loc;
14016       const char *start_second = &arg[dash + 1];
14017       range.first = extract_bp_num (kind, start_first, '-');
14018       range.second = extract_bp_num (kind, start_second, '\0', &end);
14019
14020       if (range.first > range.second)
14021         error (kind == extract_bp_kind::bp
14022                ? _("Inverted breakpoint range at '%.*s'")
14023                : _("Inverted breakpoint location range at '%.*s'"),
14024                int (end - start_first), start_first);
14025     }
14026   else
14027     {
14028       /* bp_loc is a single value.  */
14029       range.first = extract_bp_num (kind, bp_loc, '\0');
14030       range.second = range.first;
14031     }
14032   return range;
14033 }
14034
14035 /* Extract the breakpoint/location range specified by ARG.  Returns
14036    the breakpoint range in BP_NUM_RANGE, and the location range in
14037    BP_LOC_RANGE.
14038
14039    ARG may be in any of the following forms:
14040
14041    x     where 'x' is a breakpoint number.
14042    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14043    x.y   where 'x' is a breakpoint number and 'y' a location number.
14044    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14045          location number range.
14046 */
14047
14048 static void
14049 extract_bp_number_and_location (const std::string &arg,
14050                                 std::pair<int, int> &bp_num_range,
14051                                 std::pair<int, int> &bp_loc_range)
14052 {
14053   std::string::size_type dot = arg.find ('.');
14054
14055   if (dot != std::string::npos)
14056     {
14057       /* Handle 'x.y' and 'x.y-z' cases.  */
14058
14059       if (arg.length () == dot + 1 || dot == 0)
14060         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14061
14062       bp_num_range.first
14063         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14064       bp_num_range.second = bp_num_range.first;
14065
14066       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14067                                              arg, dot + 1);
14068     }
14069   else
14070     {
14071       /* Handle x and x-y cases.  */
14072
14073       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14074       bp_loc_range.first = 0;
14075       bp_loc_range.second = 0;
14076     }
14077 }
14078
14079 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14080    specifies whether to enable or disable.  */
14081
14082 static void
14083 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14084 {
14085   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14086   if (loc != NULL)
14087     {
14088       if (loc->enabled != enable)
14089         {
14090           loc->enabled = enable;
14091           mark_breakpoint_location_modified (loc);
14092         }
14093       if (target_supports_enable_disable_tracepoint ()
14094           && current_trace_status ()->running && loc->owner
14095           && is_tracepoint (loc->owner))
14096         target_disable_tracepoint (loc);
14097     }
14098   update_global_location_list (UGLL_DONT_INSERT);
14099
14100   gdb::observers::breakpoint_modified.notify (loc->owner);
14101 }
14102
14103 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14104    number of the breakpoint, and BP_LOC_RANGE specifies the
14105    (inclusive) range of location numbers of that breakpoint to
14106    enable/disable.  ENABLE specifies whether to enable or disable the
14107    location.  */
14108
14109 static void
14110 enable_disable_breakpoint_location_range (int bp_num,
14111                                           std::pair<int, int> &bp_loc_range,
14112                                           bool enable)
14113 {
14114   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14115     enable_disable_bp_num_loc (bp_num, i, enable);
14116 }
14117
14118 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14119    If from_tty is nonzero, it prints a message to that effect,
14120    which ends with a period (no newline).  */
14121
14122 void
14123 disable_breakpoint (struct breakpoint *bpt)
14124 {
14125   /* Never disable a watchpoint scope breakpoint; we want to
14126      hit them when we leave scope so we can delete both the
14127      watchpoint and its scope breakpoint at that time.  */
14128   if (bpt->type == bp_watchpoint_scope)
14129     return;
14130
14131   bpt->enable_state = bp_disabled;
14132
14133   /* Mark breakpoint locations modified.  */
14134   mark_breakpoint_modified (bpt);
14135
14136   if (target_supports_enable_disable_tracepoint ()
14137       && current_trace_status ()->running && is_tracepoint (bpt))
14138     {
14139       struct bp_location *location;
14140      
14141       for (location = bpt->loc; location; location = location->next)
14142         target_disable_tracepoint (location);
14143     }
14144
14145   update_global_location_list (UGLL_DONT_INSERT);
14146
14147   gdb::observers::breakpoint_modified.notify (bpt);
14148 }
14149
14150 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14151    specified in ARGS.  ARGS may be in any of the formats handled by
14152    extract_bp_number_and_location.  ENABLE specifies whether to enable
14153    or disable the breakpoints/locations.  */
14154
14155 static void
14156 enable_disable_command (const char *args, int from_tty, bool enable)
14157 {
14158   if (args == 0)
14159     {
14160       struct breakpoint *bpt;
14161
14162       ALL_BREAKPOINTS (bpt)
14163         if (user_breakpoint_p (bpt))
14164           {
14165             if (enable)
14166               enable_breakpoint (bpt);
14167             else
14168               disable_breakpoint (bpt);
14169           }
14170     }
14171   else
14172     {
14173       std::string num = extract_arg (&args);
14174
14175       while (!num.empty ())
14176         {
14177           std::pair<int, int> bp_num_range, bp_loc_range;
14178
14179           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14180
14181           if (bp_loc_range.first == bp_loc_range.second
14182               && bp_loc_range.first == 0)
14183             {
14184               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14185               map_breakpoint_number_range (bp_num_range,
14186                                            enable
14187                                            ? enable_breakpoint
14188                                            : disable_breakpoint);
14189             }
14190           else
14191             {
14192               /* Handle breakpoint ids with formats 'x.y' or
14193                  'x.y-z'.  */
14194               enable_disable_breakpoint_location_range
14195                 (bp_num_range.first, bp_loc_range, enable);
14196             }
14197           num = extract_arg (&args);
14198         }
14199     }
14200 }
14201
14202 /* The disable command disables the specified breakpoints/locations
14203    (or all defined breakpoints) so they're no longer effective in
14204    stopping the inferior.  ARGS may be in any of the forms defined in
14205    extract_bp_number_and_location.  */
14206
14207 static void
14208 disable_command (const char *args, int from_tty)
14209 {
14210   enable_disable_command (args, from_tty, false);
14211 }
14212
14213 static void
14214 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14215                         int count)
14216 {
14217   int target_resources_ok;
14218
14219   if (bpt->type == bp_hardware_breakpoint)
14220     {
14221       int i;
14222       i = hw_breakpoint_used_count ();
14223       target_resources_ok = 
14224         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14225                                             i + 1, 0);
14226       if (target_resources_ok == 0)
14227         error (_("No hardware breakpoint support in the target."));
14228       else if (target_resources_ok < 0)
14229         error (_("Hardware breakpoints used exceeds limit."));
14230     }
14231
14232   if (is_watchpoint (bpt))
14233     {
14234       /* Initialize it just to avoid a GCC false warning.  */
14235       enum enable_state orig_enable_state = bp_disabled;
14236
14237       try
14238         {
14239           struct watchpoint *w = (struct watchpoint *) bpt;
14240
14241           orig_enable_state = bpt->enable_state;
14242           bpt->enable_state = bp_enabled;
14243           update_watchpoint (w, 1 /* reparse */);
14244         }
14245       catch (const gdb_exception &e)
14246         {
14247           bpt->enable_state = orig_enable_state;
14248           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14249                              bpt->number);
14250           return;
14251         }
14252     }
14253
14254   bpt->enable_state = bp_enabled;
14255
14256   /* Mark breakpoint locations modified.  */
14257   mark_breakpoint_modified (bpt);
14258
14259   if (target_supports_enable_disable_tracepoint ()
14260       && current_trace_status ()->running && is_tracepoint (bpt))
14261     {
14262       struct bp_location *location;
14263
14264       for (location = bpt->loc; location; location = location->next)
14265         target_enable_tracepoint (location);
14266     }
14267
14268   bpt->disposition = disposition;
14269   bpt->enable_count = count;
14270   update_global_location_list (UGLL_MAY_INSERT);
14271
14272   gdb::observers::breakpoint_modified.notify (bpt);
14273 }
14274
14275
14276 void
14277 enable_breakpoint (struct breakpoint *bpt)
14278 {
14279   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14280 }
14281
14282 /* The enable command enables the specified breakpoints/locations (or
14283    all defined breakpoints) so they once again become (or continue to
14284    be) effective in stopping the inferior.  ARGS may be in any of the
14285    forms defined in extract_bp_number_and_location.  */
14286
14287 static void
14288 enable_command (const char *args, int from_tty)
14289 {
14290   enable_disable_command (args, from_tty, true);
14291 }
14292
14293 static void
14294 enable_once_command (const char *args, int from_tty)
14295 {
14296   map_breakpoint_numbers
14297     (args, [&] (breakpoint *b)
14298      {
14299        iterate_over_related_breakpoints
14300          (b, [&] (breakpoint *bpt)
14301           {
14302             enable_breakpoint_disp (bpt, disp_disable, 1);
14303           });
14304      });
14305 }
14306
14307 static void
14308 enable_count_command (const char *args, int from_tty)
14309 {
14310   int count;
14311
14312   if (args == NULL)
14313     error_no_arg (_("hit count"));
14314
14315   count = get_number (&args);
14316
14317   map_breakpoint_numbers
14318     (args, [&] (breakpoint *b)
14319      {
14320        iterate_over_related_breakpoints
14321          (b, [&] (breakpoint *bpt)
14322           {
14323             enable_breakpoint_disp (bpt, disp_disable, count);
14324           });
14325      });
14326 }
14327
14328 static void
14329 enable_delete_command (const char *args, int from_tty)
14330 {
14331   map_breakpoint_numbers
14332     (args, [&] (breakpoint *b)
14333      {
14334        iterate_over_related_breakpoints
14335          (b, [&] (breakpoint *bpt)
14336           {
14337             enable_breakpoint_disp (bpt, disp_del, 1);
14338           });
14339      });
14340 }
14341 \f
14342 static void
14343 set_breakpoint_cmd (const char *args, int from_tty)
14344 {
14345 }
14346
14347 static void
14348 show_breakpoint_cmd (const char *args, int from_tty)
14349 {
14350 }
14351
14352 /* Invalidate last known value of any hardware watchpoint if
14353    the memory which that value represents has been written to by
14354    GDB itself.  */
14355
14356 static void
14357 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14358                                       CORE_ADDR addr, ssize_t len,
14359                                       const bfd_byte *data)
14360 {
14361   struct breakpoint *bp;
14362
14363   ALL_BREAKPOINTS (bp)
14364     if (bp->enable_state == bp_enabled
14365         && bp->type == bp_hardware_watchpoint)
14366       {
14367         struct watchpoint *wp = (struct watchpoint *) bp;
14368
14369         if (wp->val_valid && wp->val != nullptr)
14370           {
14371             struct bp_location *loc;
14372
14373             for (loc = bp->loc; loc != NULL; loc = loc->next)
14374               if (loc->loc_type == bp_loc_hardware_watchpoint
14375                   && loc->address + loc->length > addr
14376                   && addr + len > loc->address)
14377                 {
14378                   wp->val = NULL;
14379                   wp->val_valid = 0;
14380                 }
14381           }
14382       }
14383 }
14384
14385 /* Create and insert a breakpoint for software single step.  */
14386
14387 void
14388 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14389                                const address_space *aspace,
14390                                CORE_ADDR next_pc)
14391 {
14392   struct thread_info *tp = inferior_thread ();
14393   struct symtab_and_line sal;
14394   CORE_ADDR pc = next_pc;
14395
14396   if (tp->control.single_step_breakpoints == NULL)
14397     {
14398       tp->control.single_step_breakpoints
14399         = new_single_step_breakpoint (tp->global_num, gdbarch);
14400     }
14401
14402   sal = find_pc_line (pc, 0);
14403   sal.pc = pc;
14404   sal.section = find_pc_overlay (pc);
14405   sal.explicit_pc = 1;
14406   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14407
14408   update_global_location_list (UGLL_INSERT);
14409 }
14410
14411 /* Insert single step breakpoints according to the current state.  */
14412
14413 int
14414 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14415 {
14416   struct regcache *regcache = get_current_regcache ();
14417   std::vector<CORE_ADDR> next_pcs;
14418
14419   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14420
14421   if (!next_pcs.empty ())
14422     {
14423       struct frame_info *frame = get_current_frame ();
14424       const address_space *aspace = get_frame_address_space (frame);
14425
14426       for (CORE_ADDR pc : next_pcs)
14427         insert_single_step_breakpoint (gdbarch, aspace, pc);
14428
14429       return 1;
14430     }
14431   else
14432     return 0;
14433 }
14434
14435 /* See breakpoint.h.  */
14436
14437 int
14438 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14439                                        const address_space *aspace,
14440                                        CORE_ADDR pc)
14441 {
14442   struct bp_location *loc;
14443
14444   for (loc = bp->loc; loc != NULL; loc = loc->next)
14445     if (loc->inserted
14446         && breakpoint_location_address_match (loc, aspace, pc))
14447       return 1;
14448
14449   return 0;
14450 }
14451
14452 /* Check whether a software single-step breakpoint is inserted at
14453    PC.  */
14454
14455 int
14456 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14457                                         CORE_ADDR pc)
14458 {
14459   struct breakpoint *bpt;
14460
14461   ALL_BREAKPOINTS (bpt)
14462     {
14463       if (bpt->type == bp_single_step
14464           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14465         return 1;
14466     }
14467   return 0;
14468 }
14469
14470 /* Tracepoint-specific operations.  */
14471
14472 /* Set tracepoint count to NUM.  */
14473 static void
14474 set_tracepoint_count (int num)
14475 {
14476   tracepoint_count = num;
14477   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14478 }
14479
14480 static void
14481 trace_command (const char *arg, int from_tty)
14482 {
14483   struct breakpoint_ops *ops;
14484
14485   event_location_up location = string_to_event_location (&arg,
14486                                                          current_language);
14487   if (location != NULL
14488       && event_location_type (location.get ()) == PROBE_LOCATION)
14489     ops = &tracepoint_probe_breakpoint_ops;
14490   else
14491     ops = &tracepoint_breakpoint_ops;
14492
14493   create_breakpoint (get_current_arch (),
14494                      location.get (),
14495                      NULL, 0, arg, 1 /* parse arg */,
14496                      0 /* tempflag */,
14497                      bp_tracepoint /* type_wanted */,
14498                      0 /* Ignore count */,
14499                      pending_break_support,
14500                      ops,
14501                      from_tty,
14502                      1 /* enabled */,
14503                      0 /* internal */, 0);
14504 }
14505
14506 static void
14507 ftrace_command (const char *arg, int from_tty)
14508 {
14509   event_location_up location = string_to_event_location (&arg,
14510                                                          current_language);
14511   create_breakpoint (get_current_arch (),
14512                      location.get (),
14513                      NULL, 0, arg, 1 /* parse arg */,
14514                      0 /* tempflag */,
14515                      bp_fast_tracepoint /* type_wanted */,
14516                      0 /* Ignore count */,
14517                      pending_break_support,
14518                      &tracepoint_breakpoint_ops,
14519                      from_tty,
14520                      1 /* enabled */,
14521                      0 /* internal */, 0);
14522 }
14523
14524 /* strace command implementation.  Creates a static tracepoint.  */
14525
14526 static void
14527 strace_command (const char *arg, int from_tty)
14528 {
14529   struct breakpoint_ops *ops;
14530   event_location_up location;
14531
14532   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14533      or with a normal static tracepoint.  */
14534   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14535     {
14536       ops = &strace_marker_breakpoint_ops;
14537       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14538     }
14539   else
14540     {
14541       ops = &tracepoint_breakpoint_ops;
14542       location = string_to_event_location (&arg, current_language);
14543     }
14544
14545   create_breakpoint (get_current_arch (),
14546                      location.get (),
14547                      NULL, 0, arg, 1 /* parse arg */,
14548                      0 /* tempflag */,
14549                      bp_static_tracepoint /* type_wanted */,
14550                      0 /* Ignore count */,
14551                      pending_break_support,
14552                      ops,
14553                      from_tty,
14554                      1 /* enabled */,
14555                      0 /* internal */, 0);
14556 }
14557
14558 /* Set up a fake reader function that gets command lines from a linked
14559    list that was acquired during tracepoint uploading.  */
14560
14561 static struct uploaded_tp *this_utp;
14562 static int next_cmd;
14563
14564 static char *
14565 read_uploaded_action (void)
14566 {
14567   char *rslt = nullptr;
14568
14569   if (next_cmd < this_utp->cmd_strings.size ())
14570     {
14571       rslt = this_utp->cmd_strings[next_cmd].get ();
14572       next_cmd++;
14573     }
14574
14575   return rslt;
14576 }
14577
14578 /* Given information about a tracepoint as recorded on a target (which
14579    can be either a live system or a trace file), attempt to create an
14580    equivalent GDB tracepoint.  This is not a reliable process, since
14581    the target does not necessarily have all the information used when
14582    the tracepoint was originally defined.  */
14583   
14584 struct tracepoint *
14585 create_tracepoint_from_upload (struct uploaded_tp *utp)
14586 {
14587   const char *addr_str;
14588   char small_buf[100];
14589   struct tracepoint *tp;
14590
14591   if (utp->at_string)
14592     addr_str = utp->at_string.get ();
14593   else
14594     {
14595       /* In the absence of a source location, fall back to raw
14596          address.  Since there is no way to confirm that the address
14597          means the same thing as when the trace was started, warn the
14598          user.  */
14599       warning (_("Uploaded tracepoint %d has no "
14600                  "source location, using raw address"),
14601                utp->number);
14602       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14603       addr_str = small_buf;
14604     }
14605
14606   /* There's not much we can do with a sequence of bytecodes.  */
14607   if (utp->cond && !utp->cond_string)
14608     warning (_("Uploaded tracepoint %d condition "
14609                "has no source form, ignoring it"),
14610              utp->number);
14611
14612   event_location_up location = string_to_event_location (&addr_str,
14613                                                          current_language);
14614   if (!create_breakpoint (get_current_arch (),
14615                           location.get (),
14616                           utp->cond_string.get (), -1, addr_str,
14617                           0 /* parse cond/thread */,
14618                           0 /* tempflag */,
14619                           utp->type /* type_wanted */,
14620                           0 /* Ignore count */,
14621                           pending_break_support,
14622                           &tracepoint_breakpoint_ops,
14623                           0 /* from_tty */,
14624                           utp->enabled /* enabled */,
14625                           0 /* internal */,
14626                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14627     return NULL;
14628
14629   /* Get the tracepoint we just created.  */
14630   tp = get_tracepoint (tracepoint_count);
14631   gdb_assert (tp != NULL);
14632
14633   if (utp->pass > 0)
14634     {
14635       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14636                  tp->number);
14637
14638       trace_pass_command (small_buf, 0);
14639     }
14640
14641   /* If we have uploaded versions of the original commands, set up a
14642      special-purpose "reader" function and call the usual command line
14643      reader, then pass the result to the breakpoint command-setting
14644      function.  */
14645   if (!utp->cmd_strings.empty ())
14646     {
14647       counted_command_line cmd_list;
14648
14649       this_utp = utp;
14650       next_cmd = 0;
14651
14652       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14653
14654       breakpoint_set_commands (tp, std::move (cmd_list));
14655     }
14656   else if (!utp->actions.empty ()
14657            || !utp->step_actions.empty ())
14658     warning (_("Uploaded tracepoint %d actions "
14659                "have no source form, ignoring them"),
14660              utp->number);
14661
14662   /* Copy any status information that might be available.  */
14663   tp->hit_count = utp->hit_count;
14664   tp->traceframe_usage = utp->traceframe_usage;
14665
14666   return tp;
14667 }
14668   
14669 /* Print information on tracepoint number TPNUM_EXP, or all if
14670    omitted.  */
14671
14672 static void
14673 info_tracepoints_command (const char *args, int from_tty)
14674 {
14675   struct ui_out *uiout = current_uiout;
14676   int num_printed;
14677
14678   num_printed = breakpoint_1 (args, false, is_tracepoint);
14679
14680   if (num_printed == 0)
14681     {
14682       if (args == NULL || *args == '\0')
14683         uiout->message ("No tracepoints.\n");
14684       else
14685         uiout->message ("No tracepoint matching '%s'.\n", args);
14686     }
14687
14688   default_collect_info ();
14689 }
14690
14691 /* The 'enable trace' command enables tracepoints.
14692    Not supported by all targets.  */
14693 static void
14694 enable_trace_command (const char *args, int from_tty)
14695 {
14696   enable_command (args, from_tty);
14697 }
14698
14699 /* The 'disable trace' command disables tracepoints.
14700    Not supported by all targets.  */
14701 static void
14702 disable_trace_command (const char *args, int from_tty)
14703 {
14704   disable_command (args, from_tty);
14705 }
14706
14707 /* Remove a tracepoint (or all if no argument).  */
14708 static void
14709 delete_trace_command (const char *arg, int from_tty)
14710 {
14711   struct breakpoint *b, *b_tmp;
14712
14713   dont_repeat ();
14714
14715   if (arg == 0)
14716     {
14717       int breaks_to_delete = 0;
14718
14719       /* Delete all breakpoints if no argument.
14720          Do not delete internal or call-dummy breakpoints, these
14721          have to be deleted with an explicit breakpoint number 
14722          argument.  */
14723       ALL_TRACEPOINTS (b)
14724         if (is_tracepoint (b) && user_breakpoint_p (b))
14725           {
14726             breaks_to_delete = 1;
14727             break;
14728           }
14729
14730       /* Ask user only if there are some breakpoints to delete.  */
14731       if (!from_tty
14732           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14733         {
14734           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14735             if (is_tracepoint (b) && user_breakpoint_p (b))
14736               delete_breakpoint (b);
14737         }
14738     }
14739   else
14740     map_breakpoint_numbers
14741       (arg, [&] (breakpoint *br)
14742        {
14743          iterate_over_related_breakpoints (br, delete_breakpoint);
14744        });
14745 }
14746
14747 /* Helper function for trace_pass_command.  */
14748
14749 static void
14750 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14751 {
14752   tp->pass_count = count;
14753   gdb::observers::breakpoint_modified.notify (tp);
14754   if (from_tty)
14755     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14756                      tp->number, count);
14757 }
14758
14759 /* Set passcount for tracepoint.
14760
14761    First command argument is passcount, second is tracepoint number.
14762    If tracepoint number omitted, apply to most recently defined.
14763    Also accepts special argument "all".  */
14764
14765 static void
14766 trace_pass_command (const char *args, int from_tty)
14767 {
14768   struct tracepoint *t1;
14769   ULONGEST count;
14770
14771   if (args == 0 || *args == 0)
14772     error (_("passcount command requires an "
14773              "argument (count + optional TP num)"));
14774
14775   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14776
14777   args = skip_spaces (args);
14778   if (*args && strncasecmp (args, "all", 3) == 0)
14779     {
14780       struct breakpoint *b;
14781
14782       args += 3;                        /* Skip special argument "all".  */
14783       if (*args)
14784         error (_("Junk at end of arguments."));
14785
14786       ALL_TRACEPOINTS (b)
14787       {
14788         t1 = (struct tracepoint *) b;
14789         trace_pass_set_count (t1, count, from_tty);
14790       }
14791     }
14792   else if (*args == '\0')
14793     {
14794       t1 = get_tracepoint_by_number (&args, NULL);
14795       if (t1)
14796         trace_pass_set_count (t1, count, from_tty);
14797     }
14798   else
14799     {
14800       number_or_range_parser parser (args);
14801       while (!parser.finished ())
14802         {
14803           t1 = get_tracepoint_by_number (&args, &parser);
14804           if (t1)
14805             trace_pass_set_count (t1, count, from_tty);
14806         }
14807     }
14808 }
14809
14810 struct tracepoint *
14811 get_tracepoint (int num)
14812 {
14813   struct breakpoint *t;
14814
14815   ALL_TRACEPOINTS (t)
14816     if (t->number == num)
14817       return (struct tracepoint *) t;
14818
14819   return NULL;
14820 }
14821
14822 /* Find the tracepoint with the given target-side number (which may be
14823    different from the tracepoint number after disconnecting and
14824    reconnecting).  */
14825
14826 struct tracepoint *
14827 get_tracepoint_by_number_on_target (int num)
14828 {
14829   struct breakpoint *b;
14830
14831   ALL_TRACEPOINTS (b)
14832     {
14833       struct tracepoint *t = (struct tracepoint *) b;
14834
14835       if (t->number_on_target == num)
14836         return t;
14837     }
14838
14839   return NULL;
14840 }
14841
14842 /* Utility: parse a tracepoint number and look it up in the list.
14843    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14844    If the argument is missing, the most recent tracepoint
14845    (tracepoint_count) is returned.  */
14846
14847 struct tracepoint *
14848 get_tracepoint_by_number (const char **arg,
14849                           number_or_range_parser *parser)
14850 {
14851   struct breakpoint *t;
14852   int tpnum;
14853   const char *instring = arg == NULL ? NULL : *arg;
14854
14855   if (parser != NULL)
14856     {
14857       gdb_assert (!parser->finished ());
14858       tpnum = parser->get_number ();
14859     }
14860   else if (arg == NULL || *arg == NULL || ! **arg)
14861     tpnum = tracepoint_count;
14862   else
14863     tpnum = get_number (arg);
14864
14865   if (tpnum <= 0)
14866     {
14867       if (instring && *instring)
14868         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14869                          instring);
14870       else
14871         printf_filtered (_("No previous tracepoint\n"));
14872       return NULL;
14873     }
14874
14875   ALL_TRACEPOINTS (t)
14876     if (t->number == tpnum)
14877     {
14878       return (struct tracepoint *) t;
14879     }
14880
14881   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14882   return NULL;
14883 }
14884
14885 void
14886 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14887 {
14888   if (b->thread != -1)
14889     fprintf_unfiltered (fp, " thread %d", b->thread);
14890
14891   if (b->task != 0)
14892     fprintf_unfiltered (fp, " task %d", b->task);
14893
14894   fprintf_unfiltered (fp, "\n");
14895 }
14896
14897 /* Save information on user settable breakpoints (watchpoints, etc) to
14898    a new script file named FILENAME.  If FILTER is non-NULL, call it
14899    on each breakpoint and only include the ones for which it returns
14900    true.  */
14901
14902 static void
14903 save_breakpoints (const char *filename, int from_tty,
14904                   bool (*filter) (const struct breakpoint *))
14905 {
14906   struct breakpoint *tp;
14907   int any = 0;
14908   int extra_trace_bits = 0;
14909
14910   if (filename == 0 || *filename == 0)
14911     error (_("Argument required (file name in which to save)"));
14912
14913   /* See if we have anything to save.  */
14914   ALL_BREAKPOINTS (tp)
14915   {
14916     /* Skip internal and momentary breakpoints.  */
14917     if (!user_breakpoint_p (tp))
14918       continue;
14919
14920     /* If we have a filter, only save the breakpoints it accepts.  */
14921     if (filter && !filter (tp))
14922       continue;
14923
14924     any = 1;
14925
14926     if (is_tracepoint (tp))
14927       {
14928         extra_trace_bits = 1;
14929
14930         /* We can stop searching.  */
14931         break;
14932       }
14933   }
14934
14935   if (!any)
14936     {
14937       warning (_("Nothing to save."));
14938       return;
14939     }
14940
14941   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
14942
14943   stdio_file fp;
14944
14945   if (!fp.open (expanded_filename.get (), "w"))
14946     error (_("Unable to open file '%s' for saving (%s)"),
14947            expanded_filename.get (), safe_strerror (errno));
14948
14949   if (extra_trace_bits)
14950     save_trace_state_variables (&fp);
14951
14952   ALL_BREAKPOINTS (tp)
14953   {
14954     /* Skip internal and momentary breakpoints.  */
14955     if (!user_breakpoint_p (tp))
14956       continue;
14957
14958     /* If we have a filter, only save the breakpoints it accepts.  */
14959     if (filter && !filter (tp))
14960       continue;
14961
14962     tp->ops->print_recreate (tp, &fp);
14963
14964     /* Note, we can't rely on tp->number for anything, as we can't
14965        assume the recreated breakpoint numbers will match.  Use $bpnum
14966        instead.  */
14967
14968     if (tp->cond_string)
14969       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
14970
14971     if (tp->ignore_count)
14972       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
14973
14974     if (tp->type != bp_dprintf && tp->commands)
14975       {
14976         fp.puts ("  commands\n");
14977         
14978         current_uiout->redirect (&fp);
14979         try
14980           {
14981             print_command_lines (current_uiout, tp->commands.get (), 2);
14982           }
14983         catch (const gdb_exception &ex)
14984           {
14985           current_uiout->redirect (NULL);
14986             throw;
14987           }
14988
14989         current_uiout->redirect (NULL);
14990         fp.puts ("  end\n");
14991       }
14992
14993     if (tp->enable_state == bp_disabled)
14994       fp.puts ("disable $bpnum\n");
14995
14996     /* If this is a multi-location breakpoint, check if the locations
14997        should be individually disabled.  Watchpoint locations are
14998        special, and not user visible.  */
14999     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15000       {
15001         struct bp_location *loc;
15002         int n = 1;
15003
15004         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15005           if (!loc->enabled)
15006             fp.printf ("disable $bpnum.%d\n", n);
15007       }
15008   }
15009
15010   if (extra_trace_bits && *default_collect)
15011     fp.printf ("set default-collect %s\n", default_collect);
15012
15013   if (from_tty)
15014     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15015 }
15016
15017 /* The `save breakpoints' command.  */
15018
15019 static void
15020 save_breakpoints_command (const char *args, int from_tty)
15021 {
15022   save_breakpoints (args, from_tty, NULL);
15023 }
15024
15025 /* The `save tracepoints' command.  */
15026
15027 static void
15028 save_tracepoints_command (const char *args, int from_tty)
15029 {
15030   save_breakpoints (args, from_tty, is_tracepoint);
15031 }
15032
15033 /* Create a vector of all tracepoints.  */
15034
15035 std::vector<breakpoint *>
15036 all_tracepoints (void)
15037 {
15038   std::vector<breakpoint *> tp_vec;
15039   struct breakpoint *tp;
15040
15041   ALL_TRACEPOINTS (tp)
15042   {
15043     tp_vec.push_back (tp);
15044   }
15045
15046   return tp_vec;
15047 }
15048
15049 \f
15050 /* This help string is used to consolidate all the help string for specifying
15051    locations used by several commands.  */
15052
15053 #define LOCATION_HELP_STRING \
15054 "Linespecs are colon-separated lists of location parameters, such as\n\
15055 source filename, function name, label name, and line number.\n\
15056 Example: To specify the start of a label named \"the_top\" in the\n\
15057 function \"fact\" in the file \"factorial.c\", use\n\
15058 \"factorial.c:fact:the_top\".\n\
15059 \n\
15060 Address locations begin with \"*\" and specify an exact address in the\n\
15061 program.  Example: To specify the fourth byte past the start function\n\
15062 \"main\", use \"*main + 4\".\n\
15063 \n\
15064 Explicit locations are similar to linespecs but use an option/argument\n\
15065 syntax to specify location parameters.\n\
15066 Example: To specify the start of the label named \"the_top\" in the\n\
15067 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15068 -function fact -label the_top\".\n\
15069 \n\
15070 By default, a specified function is matched against the program's\n\
15071 functions in all scopes.  For C++, this means in all namespaces and\n\
15072 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15073 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15074 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15075 specified name as a complete fully-qualified name instead."
15076
15077 /* This help string is used for the break, hbreak, tbreak and thbreak
15078    commands.  It is defined as a macro to prevent duplication.
15079    COMMAND should be a string constant containing the name of the
15080    command.  */
15081
15082 #define BREAK_ARGS_HELP(command) \
15083 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15084 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15085 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15086 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15087 `-probe-dtrace' (for a DTrace probe).\n\
15088 LOCATION may be a linespec, address, or explicit location as described\n\
15089 below.\n\
15090 \n\
15091 With no LOCATION, uses current execution address of the selected\n\
15092 stack frame.  This is useful for breaking on return to a stack frame.\n\
15093 \n\
15094 THREADNUM is the number from \"info threads\".\n\
15095 CONDITION is a boolean expression.\n\
15096 \n" LOCATION_HELP_STRING "\n\n\
15097 Multiple breakpoints at one place are permitted, and useful if their\n\
15098 conditions are different.\n\
15099 \n\
15100 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15101
15102 /* List of subcommands for "catch".  */
15103 static struct cmd_list_element *catch_cmdlist;
15104
15105 /* List of subcommands for "tcatch".  */
15106 static struct cmd_list_element *tcatch_cmdlist;
15107
15108 void
15109 add_catch_command (const char *name, const char *docstring,
15110                    cmd_const_sfunc_ftype *sfunc,
15111                    completer_ftype *completer,
15112                    void *user_data_catch,
15113                    void *user_data_tcatch)
15114 {
15115   struct cmd_list_element *command;
15116
15117   command = add_cmd (name, class_breakpoint, docstring,
15118                      &catch_cmdlist);
15119   set_cmd_sfunc (command, sfunc);
15120   set_cmd_context (command, user_data_catch);
15121   set_cmd_completer (command, completer);
15122
15123   command = add_cmd (name, class_breakpoint, docstring,
15124                      &tcatch_cmdlist);
15125   set_cmd_sfunc (command, sfunc);
15126   set_cmd_context (command, user_data_tcatch);
15127   set_cmd_completer (command, completer);
15128 }
15129
15130 static void
15131 save_command (const char *arg, int from_tty)
15132 {
15133   printf_unfiltered (_("\"save\" must be followed by "
15134                        "the name of a save subcommand.\n"));
15135   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15136 }
15137
15138 struct breakpoint *
15139 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15140                           void *data)
15141 {
15142   struct breakpoint *b, *b_tmp;
15143
15144   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15145     {
15146       if ((*callback) (b, data))
15147         return b;
15148     }
15149
15150   return NULL;
15151 }
15152
15153 /* Zero if any of the breakpoint's locations could be a location where
15154    functions have been inlined, nonzero otherwise.  */
15155
15156 static int
15157 is_non_inline_function (struct breakpoint *b)
15158 {
15159   /* The shared library event breakpoint is set on the address of a
15160      non-inline function.  */
15161   if (b->type == bp_shlib_event)
15162     return 1;
15163
15164   return 0;
15165 }
15166
15167 /* Nonzero if the specified PC cannot be a location where functions
15168    have been inlined.  */
15169
15170 int
15171 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15172                            const struct target_waitstatus *ws)
15173 {
15174   struct breakpoint *b;
15175   struct bp_location *bl;
15176
15177   ALL_BREAKPOINTS (b)
15178     {
15179       if (!is_non_inline_function (b))
15180         continue;
15181
15182       for (bl = b->loc; bl != NULL; bl = bl->next)
15183         {
15184           if (!bl->shlib_disabled
15185               && bpstat_check_location (bl, aspace, pc, ws))
15186             return 1;
15187         }
15188     }
15189
15190   return 0;
15191 }
15192
15193 /* Remove any references to OBJFILE which is going to be freed.  */
15194
15195 void
15196 breakpoint_free_objfile (struct objfile *objfile)
15197 {
15198   struct bp_location **locp, *loc;
15199
15200   ALL_BP_LOCATIONS (loc, locp)
15201     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15202       loc->symtab = NULL;
15203 }
15204
15205 void
15206 initialize_breakpoint_ops (void)
15207 {
15208   static int initialized = 0;
15209
15210   struct breakpoint_ops *ops;
15211
15212   if (initialized)
15213     return;
15214   initialized = 1;
15215
15216   /* The breakpoint_ops structure to be inherit by all kinds of
15217      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15218      internal and momentary breakpoints, etc.).  */
15219   ops = &bkpt_base_breakpoint_ops;
15220   *ops = base_breakpoint_ops;
15221   ops->re_set = bkpt_re_set;
15222   ops->insert_location = bkpt_insert_location;
15223   ops->remove_location = bkpt_remove_location;
15224   ops->breakpoint_hit = bkpt_breakpoint_hit;
15225   ops->create_sals_from_location = bkpt_create_sals_from_location;
15226   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15227   ops->decode_location = bkpt_decode_location;
15228
15229   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15230   ops = &bkpt_breakpoint_ops;
15231   *ops = bkpt_base_breakpoint_ops;
15232   ops->re_set = bkpt_re_set;
15233   ops->resources_needed = bkpt_resources_needed;
15234   ops->print_it = bkpt_print_it;
15235   ops->print_mention = bkpt_print_mention;
15236   ops->print_recreate = bkpt_print_recreate;
15237
15238   /* Ranged breakpoints.  */
15239   ops = &ranged_breakpoint_ops;
15240   *ops = bkpt_breakpoint_ops;
15241   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15242   ops->resources_needed = resources_needed_ranged_breakpoint;
15243   ops->print_it = print_it_ranged_breakpoint;
15244   ops->print_one = print_one_ranged_breakpoint;
15245   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15246   ops->print_mention = print_mention_ranged_breakpoint;
15247   ops->print_recreate = print_recreate_ranged_breakpoint;
15248
15249   /* Internal breakpoints.  */
15250   ops = &internal_breakpoint_ops;
15251   *ops = bkpt_base_breakpoint_ops;
15252   ops->re_set = internal_bkpt_re_set;
15253   ops->check_status = internal_bkpt_check_status;
15254   ops->print_it = internal_bkpt_print_it;
15255   ops->print_mention = internal_bkpt_print_mention;
15256
15257   /* Momentary breakpoints.  */
15258   ops = &momentary_breakpoint_ops;
15259   *ops = bkpt_base_breakpoint_ops;
15260   ops->re_set = momentary_bkpt_re_set;
15261   ops->check_status = momentary_bkpt_check_status;
15262   ops->print_it = momentary_bkpt_print_it;
15263   ops->print_mention = momentary_bkpt_print_mention;
15264
15265   /* Probe breakpoints.  */
15266   ops = &bkpt_probe_breakpoint_ops;
15267   *ops = bkpt_breakpoint_ops;
15268   ops->insert_location = bkpt_probe_insert_location;
15269   ops->remove_location = bkpt_probe_remove_location;
15270   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15271   ops->decode_location = bkpt_probe_decode_location;
15272
15273   /* Watchpoints.  */
15274   ops = &watchpoint_breakpoint_ops;
15275   *ops = base_breakpoint_ops;
15276   ops->re_set = re_set_watchpoint;
15277   ops->insert_location = insert_watchpoint;
15278   ops->remove_location = remove_watchpoint;
15279   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15280   ops->check_status = check_status_watchpoint;
15281   ops->resources_needed = resources_needed_watchpoint;
15282   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15283   ops->print_it = print_it_watchpoint;
15284   ops->print_mention = print_mention_watchpoint;
15285   ops->print_recreate = print_recreate_watchpoint;
15286   ops->explains_signal = explains_signal_watchpoint;
15287
15288   /* Masked watchpoints.  */
15289   ops = &masked_watchpoint_breakpoint_ops;
15290   *ops = watchpoint_breakpoint_ops;
15291   ops->insert_location = insert_masked_watchpoint;
15292   ops->remove_location = remove_masked_watchpoint;
15293   ops->resources_needed = resources_needed_masked_watchpoint;
15294   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15295   ops->print_it = print_it_masked_watchpoint;
15296   ops->print_one_detail = print_one_detail_masked_watchpoint;
15297   ops->print_mention = print_mention_masked_watchpoint;
15298   ops->print_recreate = print_recreate_masked_watchpoint;
15299
15300   /* Tracepoints.  */
15301   ops = &tracepoint_breakpoint_ops;
15302   *ops = base_breakpoint_ops;
15303   ops->re_set = tracepoint_re_set;
15304   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15305   ops->print_one_detail = tracepoint_print_one_detail;
15306   ops->print_mention = tracepoint_print_mention;
15307   ops->print_recreate = tracepoint_print_recreate;
15308   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15309   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15310   ops->decode_location = tracepoint_decode_location;
15311
15312   /* Probe tracepoints.  */
15313   ops = &tracepoint_probe_breakpoint_ops;
15314   *ops = tracepoint_breakpoint_ops;
15315   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15316   ops->decode_location = tracepoint_probe_decode_location;
15317
15318   /* Static tracepoints with marker (`-m').  */
15319   ops = &strace_marker_breakpoint_ops;
15320   *ops = tracepoint_breakpoint_ops;
15321   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15322   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15323   ops->decode_location = strace_marker_decode_location;
15324
15325   /* Fork catchpoints.  */
15326   ops = &catch_fork_breakpoint_ops;
15327   *ops = base_breakpoint_ops;
15328   ops->insert_location = insert_catch_fork;
15329   ops->remove_location = remove_catch_fork;
15330   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15331   ops->print_it = print_it_catch_fork;
15332   ops->print_one = print_one_catch_fork;
15333   ops->print_mention = print_mention_catch_fork;
15334   ops->print_recreate = print_recreate_catch_fork;
15335
15336   /* Vfork catchpoints.  */
15337   ops = &catch_vfork_breakpoint_ops;
15338   *ops = base_breakpoint_ops;
15339   ops->insert_location = insert_catch_vfork;
15340   ops->remove_location = remove_catch_vfork;
15341   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15342   ops->print_it = print_it_catch_vfork;
15343   ops->print_one = print_one_catch_vfork;
15344   ops->print_mention = print_mention_catch_vfork;
15345   ops->print_recreate = print_recreate_catch_vfork;
15346
15347   /* Exec catchpoints.  */
15348   ops = &catch_exec_breakpoint_ops;
15349   *ops = base_breakpoint_ops;
15350   ops->insert_location = insert_catch_exec;
15351   ops->remove_location = remove_catch_exec;
15352   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15353   ops->print_it = print_it_catch_exec;
15354   ops->print_one = print_one_catch_exec;
15355   ops->print_mention = print_mention_catch_exec;
15356   ops->print_recreate = print_recreate_catch_exec;
15357
15358   /* Solib-related catchpoints.  */
15359   ops = &catch_solib_breakpoint_ops;
15360   *ops = base_breakpoint_ops;
15361   ops->insert_location = insert_catch_solib;
15362   ops->remove_location = remove_catch_solib;
15363   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15364   ops->check_status = check_status_catch_solib;
15365   ops->print_it = print_it_catch_solib;
15366   ops->print_one = print_one_catch_solib;
15367   ops->print_mention = print_mention_catch_solib;
15368   ops->print_recreate = print_recreate_catch_solib;
15369
15370   ops = &dprintf_breakpoint_ops;
15371   *ops = bkpt_base_breakpoint_ops;
15372   ops->re_set = dprintf_re_set;
15373   ops->resources_needed = bkpt_resources_needed;
15374   ops->print_it = bkpt_print_it;
15375   ops->print_mention = bkpt_print_mention;
15376   ops->print_recreate = dprintf_print_recreate;
15377   ops->after_condition_true = dprintf_after_condition_true;
15378   ops->breakpoint_hit = dprintf_breakpoint_hit;
15379 }
15380
15381 /* Chain containing all defined "enable breakpoint" subcommands.  */
15382
15383 static struct cmd_list_element *enablebreaklist = NULL;
15384
15385 /* See breakpoint.h.  */
15386
15387 cmd_list_element *commands_cmd_element = nullptr;
15388
15389 void
15390 _initialize_breakpoint (void)
15391 {
15392   struct cmd_list_element *c;
15393
15394   initialize_breakpoint_ops ();
15395
15396   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15397   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15398   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15399
15400   breakpoint_chain = 0;
15401   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15402      before a breakpoint is set.  */
15403   breakpoint_count = 0;
15404
15405   tracepoint_count = 0;
15406
15407   add_com ("ignore", class_breakpoint, ignore_command, _("\
15408 Set ignore-count of breakpoint number N to COUNT.\n\
15409 Usage is `ignore N COUNT'."));
15410
15411   commands_cmd_element = add_com ("commands", class_breakpoint,
15412                                   commands_command, _("\
15413 Set commands to be executed when the given breakpoints are hit.\n\
15414 Give a space-separated breakpoint list as argument after \"commands\".\n\
15415 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15416 (e.g. `5-7').\n\
15417 With no argument, the targeted breakpoint is the last one set.\n\
15418 The commands themselves follow starting on the next line.\n\
15419 Type a line containing \"end\" to indicate the end of them.\n\
15420 Give \"silent\" as the first line to make the breakpoint silent;\n\
15421 then no output is printed when it is hit, except what the commands print."));
15422
15423   c = add_com ("condition", class_breakpoint, condition_command, _("\
15424 Specify breakpoint number N to break only if COND is true.\n\
15425 Usage is `condition N COND', where N is an integer and COND is an\n\
15426 expression to be evaluated whenever breakpoint N is reached."));
15427   set_cmd_completer (c, condition_completer);
15428
15429   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15430 Set a temporary breakpoint.\n\
15431 Like \"break\" except the breakpoint is only temporary,\n\
15432 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15433 by using \"enable delete\" on the breakpoint number.\n\
15434 \n"
15435 BREAK_ARGS_HELP ("tbreak")));
15436   set_cmd_completer (c, location_completer);
15437
15438   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15439 Set a hardware assisted breakpoint.\n\
15440 Like \"break\" except the breakpoint requires hardware support,\n\
15441 some target hardware may not have this support.\n\
15442 \n"
15443 BREAK_ARGS_HELP ("hbreak")));
15444   set_cmd_completer (c, location_completer);
15445
15446   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15447 Set a temporary hardware assisted breakpoint.\n\
15448 Like \"hbreak\" except the breakpoint is only temporary,\n\
15449 so it will be deleted when hit.\n\
15450 \n"
15451 BREAK_ARGS_HELP ("thbreak")));
15452   set_cmd_completer (c, location_completer);
15453
15454   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15455 Enable some breakpoints.\n\
15456 Give breakpoint numbers (separated by spaces) as arguments.\n\
15457 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15458 This is used to cancel the effect of the \"disable\" command.\n\
15459 With a subcommand you can enable temporarily."),
15460                   &enablelist, "enable ", 1, &cmdlist);
15461
15462   add_com_alias ("en", "enable", class_breakpoint, 1);
15463
15464   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15465 Enable some breakpoints.\n\
15466 Give breakpoint numbers (separated by spaces) as arguments.\n\
15467 This is used to cancel the effect of the \"disable\" command.\n\
15468 May be abbreviated to simply \"enable\"."),
15469                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15470
15471   add_cmd ("once", no_class, enable_once_command, _("\
15472 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15473 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15474            &enablebreaklist);
15475
15476   add_cmd ("delete", no_class, enable_delete_command, _("\
15477 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15478 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15479            &enablebreaklist);
15480
15481   add_cmd ("count", no_class, enable_count_command, _("\
15482 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15483 If a breakpoint is hit while enabled in this fashion,\n\
15484 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15485            &enablebreaklist);
15486
15487   add_cmd ("delete", no_class, enable_delete_command, _("\
15488 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15489 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15490            &enablelist);
15491
15492   add_cmd ("once", no_class, enable_once_command, _("\
15493 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15494 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15495            &enablelist);
15496
15497   add_cmd ("count", no_class, enable_count_command, _("\
15498 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15499 If a breakpoint is hit while enabled in this fashion,\n\
15500 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15501            &enablelist);
15502
15503   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15504 Disable some breakpoints.\n\
15505 Arguments are breakpoint numbers with spaces in between.\n\
15506 To disable all breakpoints, give no argument.\n\
15507 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15508                   &disablelist, "disable ", 1, &cmdlist);
15509   add_com_alias ("dis", "disable", class_breakpoint, 1);
15510   add_com_alias ("disa", "disable", class_breakpoint, 1);
15511
15512   add_cmd ("breakpoints", class_alias, disable_command, _("\
15513 Disable some breakpoints.\n\
15514 Arguments are breakpoint numbers with spaces in between.\n\
15515 To disable all breakpoints, give no argument.\n\
15516 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15517 This command may be abbreviated \"disable\"."),
15518            &disablelist);
15519
15520   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15521 Delete some breakpoints or auto-display expressions.\n\
15522 Arguments are breakpoint numbers with spaces in between.\n\
15523 To delete all breakpoints, give no argument.\n\
15524 \n\
15525 Also a prefix command for deletion of other GDB objects.\n\
15526 The \"unset\" command is also an alias for \"delete\"."),
15527                   &deletelist, "delete ", 1, &cmdlist);
15528   add_com_alias ("d", "delete", class_breakpoint, 1);
15529   add_com_alias ("del", "delete", class_breakpoint, 1);
15530
15531   add_cmd ("breakpoints", class_alias, delete_command, _("\
15532 Delete some breakpoints or auto-display expressions.\n\
15533 Arguments are breakpoint numbers with spaces in between.\n\
15534 To delete all breakpoints, give no argument.\n\
15535 This command may be abbreviated \"delete\"."),
15536            &deletelist);
15537
15538   add_com ("clear", class_breakpoint, clear_command, _("\
15539 Clear breakpoint at specified location.\n\
15540 Argument may be a linespec, explicit, or address location as described below.\n\
15541 \n\
15542 With no argument, clears all breakpoints in the line that the selected frame\n\
15543 is executing in.\n"
15544 "\n" LOCATION_HELP_STRING "\n\n\
15545 See also the \"delete\" command which clears breakpoints by number."));
15546   add_com_alias ("cl", "clear", class_breakpoint, 1);
15547
15548   c = add_com ("break", class_breakpoint, break_command, _("\
15549 Set breakpoint at specified location.\n"
15550 BREAK_ARGS_HELP ("break")));
15551   set_cmd_completer (c, location_completer);
15552
15553   add_com_alias ("b", "break", class_run, 1);
15554   add_com_alias ("br", "break", class_run, 1);
15555   add_com_alias ("bre", "break", class_run, 1);
15556   add_com_alias ("brea", "break", class_run, 1);
15557
15558   if (dbx_commands)
15559     {
15560       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15561 Break in function/address or break at a line in the current file."),
15562                              &stoplist, "stop ", 1, &cmdlist);
15563       add_cmd ("in", class_breakpoint, stopin_command,
15564                _("Break in function or address."), &stoplist);
15565       add_cmd ("at", class_breakpoint, stopat_command,
15566                _("Break at a line in the current file."), &stoplist);
15567       add_com ("status", class_info, info_breakpoints_command, _("\
15568 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15569 The \"Type\" column indicates one of:\n\
15570 \tbreakpoint     - normal breakpoint\n\
15571 \twatchpoint     - watchpoint\n\
15572 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15573 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15574 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15575 address and file/line number respectively.\n\
15576 \n\
15577 Convenience variable \"$_\" and default examine address for \"x\"\n\
15578 are set to the address of the last breakpoint listed unless the command\n\
15579 is prefixed with \"server \".\n\n\
15580 Convenience variable \"$bpnum\" contains the number of the last\n\
15581 breakpoint set."));
15582     }
15583
15584   add_info ("breakpoints", info_breakpoints_command, _("\
15585 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15586 The \"Type\" column indicates one of:\n\
15587 \tbreakpoint     - normal breakpoint\n\
15588 \twatchpoint     - watchpoint\n\
15589 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15590 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15591 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15592 address and file/line number respectively.\n\
15593 \n\
15594 Convenience variable \"$_\" and default examine address for \"x\"\n\
15595 are set to the address of the last breakpoint listed unless the command\n\
15596 is prefixed with \"server \".\n\n\
15597 Convenience variable \"$bpnum\" contains the number of the last\n\
15598 breakpoint set."));
15599
15600   add_info_alias ("b", "breakpoints", 1);
15601
15602   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15603 Status of all breakpoints, or breakpoint number NUMBER.\n\
15604 The \"Type\" column indicates one of:\n\
15605 \tbreakpoint     - normal breakpoint\n\
15606 \twatchpoint     - watchpoint\n\
15607 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15608 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15609 \tuntil          - internal breakpoint used by the \"until\" command\n\
15610 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15611 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15612 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15613 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15614 address and file/line number respectively.\n\
15615 \n\
15616 Convenience variable \"$_\" and default examine address for \"x\"\n\
15617 are set to the address of the last breakpoint listed unless the command\n\
15618 is prefixed with \"server \".\n\n\
15619 Convenience variable \"$bpnum\" contains the number of the last\n\
15620 breakpoint set."),
15621            &maintenanceinfolist);
15622
15623   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15624 Set catchpoints to catch events."),
15625                   &catch_cmdlist, "catch ",
15626                   0/*allow-unknown*/, &cmdlist);
15627
15628   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15629 Set temporary catchpoints to catch events."),
15630                   &tcatch_cmdlist, "tcatch ",
15631                   0/*allow-unknown*/, &cmdlist);
15632
15633   add_catch_command ("fork", _("Catch calls to fork."),
15634                      catch_fork_command_1,
15635                      NULL,
15636                      (void *) (uintptr_t) catch_fork_permanent,
15637                      (void *) (uintptr_t) catch_fork_temporary);
15638   add_catch_command ("vfork", _("Catch calls to vfork."),
15639                      catch_fork_command_1,
15640                      NULL,
15641                      (void *) (uintptr_t) catch_vfork_permanent,
15642                      (void *) (uintptr_t) catch_vfork_temporary);
15643   add_catch_command ("exec", _("Catch calls to exec."),
15644                      catch_exec_command_1,
15645                      NULL,
15646                      CATCH_PERMANENT,
15647                      CATCH_TEMPORARY);
15648   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15649 Usage: catch load [REGEX]\n\
15650 If REGEX is given, only stop for libraries matching the regular expression."),
15651                      catch_load_command_1,
15652                      NULL,
15653                      CATCH_PERMANENT,
15654                      CATCH_TEMPORARY);
15655   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15656 Usage: catch unload [REGEX]\n\
15657 If REGEX is given, only stop for libraries matching the regular expression."),
15658                      catch_unload_command_1,
15659                      NULL,
15660                      CATCH_PERMANENT,
15661                      CATCH_TEMPORARY);
15662
15663   c = add_com ("watch", class_breakpoint, watch_command, _("\
15664 Set a watchpoint for an expression.\n\
15665 Usage: watch [-l|-location] EXPRESSION\n\
15666 A watchpoint stops execution of your program whenever the value of\n\
15667 an expression changes.\n\
15668 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15669 the memory to which it refers."));
15670   set_cmd_completer (c, expression_completer);
15671
15672   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15673 Set a read watchpoint for an expression.\n\
15674 Usage: rwatch [-l|-location] EXPRESSION\n\
15675 A watchpoint stops execution of your program whenever the value of\n\
15676 an expression is read.\n\
15677 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15678 the memory to which it refers."));
15679   set_cmd_completer (c, expression_completer);
15680
15681   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15682 Set a watchpoint for an expression.\n\
15683 Usage: awatch [-l|-location] EXPRESSION\n\
15684 A watchpoint stops execution of your program whenever the value of\n\
15685 an expression is either read or written.\n\
15686 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15687 the memory to which it refers."));
15688   set_cmd_completer (c, expression_completer);
15689
15690   add_info ("watchpoints", info_watchpoints_command, _("\
15691 Status of specified watchpoints (all watchpoints if no argument)."));
15692
15693   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15694      respond to changes - contrary to the description.  */
15695   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15696                             &can_use_hw_watchpoints, _("\
15697 Set debugger's willingness to use watchpoint hardware."), _("\
15698 Show debugger's willingness to use watchpoint hardware."), _("\
15699 If zero, gdb will not use hardware for new watchpoints, even if\n\
15700 such is available.  (However, any hardware watchpoints that were\n\
15701 created before setting this to nonzero, will continue to use watchpoint\n\
15702 hardware.)"),
15703                             NULL,
15704                             show_can_use_hw_watchpoints,
15705                             &setlist, &showlist);
15706
15707   can_use_hw_watchpoints = 1;
15708
15709   /* Tracepoint manipulation commands.  */
15710
15711   c = add_com ("trace", class_breakpoint, trace_command, _("\
15712 Set a tracepoint at specified location.\n\
15713 \n"
15714 BREAK_ARGS_HELP ("trace") "\n\
15715 Do \"help tracepoints\" for info on other tracepoint commands."));
15716   set_cmd_completer (c, location_completer);
15717
15718   add_com_alias ("tp", "trace", class_alias, 0);
15719   add_com_alias ("tr", "trace", class_alias, 1);
15720   add_com_alias ("tra", "trace", class_alias, 1);
15721   add_com_alias ("trac", "trace", class_alias, 1);
15722
15723   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15724 Set a fast tracepoint at specified location.\n\
15725 \n"
15726 BREAK_ARGS_HELP ("ftrace") "\n\
15727 Do \"help tracepoints\" for info on other tracepoint commands."));
15728   set_cmd_completer (c, location_completer);
15729
15730   c = add_com ("strace", class_breakpoint, strace_command, _("\
15731 Set a static tracepoint at location or marker.\n\
15732 \n\
15733 strace [LOCATION] [if CONDITION]\n\
15734 LOCATION may be a linespec, explicit, or address location (described below) \n\
15735 or -m MARKER_ID.\n\n\
15736 If a marker id is specified, probe the marker with that name.  With\n\
15737 no LOCATION, uses current execution address of the selected stack frame.\n\
15738 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15739 This collects arbitrary user data passed in the probe point call to the\n\
15740 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15741 by printing the $_sdata variable like any other convenience variable.\n\
15742 \n\
15743 CONDITION is a boolean expression.\n\
15744 \n" LOCATION_HELP_STRING "\n\n\
15745 Multiple tracepoints at one place are permitted, and useful if their\n\
15746 conditions are different.\n\
15747 \n\
15748 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15749 Do \"help tracepoints\" for info on other tracepoint commands."));
15750   set_cmd_completer (c, location_completer);
15751
15752   add_info ("tracepoints", info_tracepoints_command, _("\
15753 Status of specified tracepoints (all tracepoints if no argument).\n\
15754 Convenience variable \"$tpnum\" contains the number of the\n\
15755 last tracepoint set."));
15756
15757   add_info_alias ("tp", "tracepoints", 1);
15758
15759   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15760 Delete specified tracepoints.\n\
15761 Arguments are tracepoint numbers, separated by spaces.\n\
15762 No argument means delete all tracepoints."),
15763            &deletelist);
15764   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15765
15766   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15767 Disable specified tracepoints.\n\
15768 Arguments are tracepoint numbers, separated by spaces.\n\
15769 No argument means disable all tracepoints."),
15770            &disablelist);
15771   deprecate_cmd (c, "disable");
15772
15773   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15774 Enable specified tracepoints.\n\
15775 Arguments are tracepoint numbers, separated by spaces.\n\
15776 No argument means enable all tracepoints."),
15777            &enablelist);
15778   deprecate_cmd (c, "enable");
15779
15780   add_com ("passcount", class_trace, trace_pass_command, _("\
15781 Set the passcount for a tracepoint.\n\
15782 The trace will end when the tracepoint has been passed 'count' times.\n\
15783 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15784 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15785
15786   add_prefix_cmd ("save", class_breakpoint, save_command,
15787                   _("Save breakpoint definitions as a script."),
15788                   &save_cmdlist, "save ",
15789                   0/*allow-unknown*/, &cmdlist);
15790
15791   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15792 Save current breakpoint definitions as a script.\n\
15793 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15794 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15795 session to restore them."),
15796                &save_cmdlist);
15797   set_cmd_completer (c, filename_completer);
15798
15799   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15800 Save current tracepoint definitions as a script.\n\
15801 Use the 'source' command in another debug session to restore them."),
15802                &save_cmdlist);
15803   set_cmd_completer (c, filename_completer);
15804
15805   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15806   deprecate_cmd (c, "save tracepoints");
15807
15808   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15809 Breakpoint specific settings\n\
15810 Configure various breakpoint-specific variables such as\n\
15811 pending breakpoint behavior"),
15812                   &breakpoint_set_cmdlist, "set breakpoint ",
15813                   0/*allow-unknown*/, &setlist);
15814   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15815 Breakpoint specific settings\n\
15816 Configure various breakpoint-specific variables such as\n\
15817 pending breakpoint behavior"),
15818                   &breakpoint_show_cmdlist, "show breakpoint ",
15819                   0/*allow-unknown*/, &showlist);
15820
15821   add_setshow_auto_boolean_cmd ("pending", no_class,
15822                                 &pending_break_support, _("\
15823 Set debugger's behavior regarding pending breakpoints."), _("\
15824 Show debugger's behavior regarding pending breakpoints."), _("\
15825 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15826 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15827 an error.  If auto, an unrecognized breakpoint location results in a\n\
15828 user-query to see if a pending breakpoint should be created."),
15829                                 NULL,
15830                                 show_pending_break_support,
15831                                 &breakpoint_set_cmdlist,
15832                                 &breakpoint_show_cmdlist);
15833
15834   pending_break_support = AUTO_BOOLEAN_AUTO;
15835
15836   add_setshow_boolean_cmd ("auto-hw", no_class,
15837                            &automatic_hardware_breakpoints, _("\
15838 Set automatic usage of hardware breakpoints."), _("\
15839 Show automatic usage of hardware breakpoints."), _("\
15840 If set, the debugger will automatically use hardware breakpoints for\n\
15841 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15842 a warning will be emitted for such breakpoints."),
15843                            NULL,
15844                            show_automatic_hardware_breakpoints,
15845                            &breakpoint_set_cmdlist,
15846                            &breakpoint_show_cmdlist);
15847
15848   add_setshow_boolean_cmd ("always-inserted", class_support,
15849                            &always_inserted_mode, _("\
15850 Set mode for inserting breakpoints."), _("\
15851 Show mode for inserting breakpoints."), _("\
15852 When this mode is on, breakpoints are inserted immediately as soon as\n\
15853 they're created, kept inserted even when execution stops, and removed\n\
15854 only when the user deletes them.  When this mode is off (the default),\n\
15855 breakpoints are inserted only when execution continues, and removed\n\
15856 when execution stops."),
15857                                 NULL,
15858                                 &show_always_inserted_mode,
15859                                 &breakpoint_set_cmdlist,
15860                                 &breakpoint_show_cmdlist);
15861
15862   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15863                         condition_evaluation_enums,
15864                         &condition_evaluation_mode_1, _("\
15865 Set mode of breakpoint condition evaluation."), _("\
15866 Show mode of breakpoint condition evaluation."), _("\
15867 When this is set to \"host\", breakpoint conditions will be\n\
15868 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
15869 breakpoint conditions will be downloaded to the target (if the target\n\
15870 supports such feature) and conditions will be evaluated on the target's side.\n\
15871 If this is set to \"auto\" (default), this will be automatically set to\n\
15872 \"target\" if it supports condition evaluation, otherwise it will\n\
15873 be set to \"gdb\""),
15874                            &set_condition_evaluation_mode,
15875                            &show_condition_evaluation_mode,
15876                            &breakpoint_set_cmdlist,
15877                            &breakpoint_show_cmdlist);
15878
15879   add_com ("break-range", class_breakpoint, break_range_command, _("\
15880 Set a breakpoint for an address range.\n\
15881 break-range START-LOCATION, END-LOCATION\n\
15882 where START-LOCATION and END-LOCATION can be one of the following:\n\
15883   LINENUM, for that line in the current file,\n\
15884   FILE:LINENUM, for that line in that file,\n\
15885   +OFFSET, for that number of lines after the current line\n\
15886            or the start of the range\n\
15887   FUNCTION, for the first line in that function,\n\
15888   FILE:FUNCTION, to distinguish among like-named static functions.\n\
15889   *ADDRESS, for the instruction at that address.\n\
15890 \n\
15891 The breakpoint will stop execution of the inferior whenever it executes\n\
15892 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
15893 range (including START-LOCATION and END-LOCATION)."));
15894
15895   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
15896 Set a dynamic printf at specified location.\n\
15897 dprintf location,format string,arg1,arg2,...\n\
15898 location may be a linespec, explicit, or address location.\n"
15899 "\n" LOCATION_HELP_STRING));
15900   set_cmd_completer (c, location_completer);
15901
15902   add_setshow_enum_cmd ("dprintf-style", class_support,
15903                         dprintf_style_enums, &dprintf_style, _("\
15904 Set the style of usage for dynamic printf."), _("\
15905 Show the style of usage for dynamic printf."), _("\
15906 This setting chooses how GDB will do a dynamic printf.\n\
15907 If the value is \"gdb\", then the printing is done by GDB to its own\n\
15908 console, as with the \"printf\" command.\n\
15909 If the value is \"call\", the print is done by calling a function in your\n\
15910 program; by default printf(), but you can choose a different function or\n\
15911 output stream by setting dprintf-function and dprintf-channel."),
15912                         update_dprintf_commands, NULL,
15913                         &setlist, &showlist);
15914
15915   dprintf_function = xstrdup ("printf");
15916   add_setshow_string_cmd ("dprintf-function", class_support,
15917                           &dprintf_function, _("\
15918 Set the function to use for dynamic printf"), _("\
15919 Show the function to use for dynamic printf"), NULL,
15920                           update_dprintf_commands, NULL,
15921                           &setlist, &showlist);
15922
15923   dprintf_channel = xstrdup ("");
15924   add_setshow_string_cmd ("dprintf-channel", class_support,
15925                           &dprintf_channel, _("\
15926 Set the channel to use for dynamic printf"), _("\
15927 Show the channel to use for dynamic printf"), NULL,
15928                           update_dprintf_commands, NULL,
15929                           &setlist, &showlist);
15930
15931   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
15932                            &disconnected_dprintf, _("\
15933 Set whether dprintf continues after GDB disconnects."), _("\
15934 Show whether dprintf continues after GDB disconnects."), _("\
15935 Use this to let dprintf commands continue to hit and produce output\n\
15936 even if GDB disconnects or detaches from the target."),
15937                            NULL,
15938                            NULL,
15939                            &setlist, &showlist);
15940
15941   add_com ("agent-printf", class_vars, agent_printf_command, _("\
15942 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
15943 (target agent only) This is useful for formatted output in user-defined commands."));
15944
15945   automatic_hardware_breakpoints = 1;
15946
15947   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
15948   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
15949 }