Regenerate configure and pot files with updated binutils version number.
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2018 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 "format.h"
69 #include "thread-fsm.h"
70 #include "tid-parse.h"
71
72 /* readline include files */
73 #include "readline/readline.h"
74 #include "readline/history.h"
75
76 /* readline defines this.  */
77 #undef savestring
78
79 #include "mi/mi-common.h"
80 #include "extension.h"
81 #include <algorithm>
82 #include "progspace-and-thread.h"
83 #include "common/array-view.h"
84 #include "common/gdb_optional.h"
85
86 /* Enums for exception-handling support.  */
87 enum exception_event_kind
88 {
89   EX_EVENT_THROW,
90   EX_EVENT_RETHROW,
91   EX_EVENT_CATCH
92 };
93
94 /* Prototypes for local functions.  */
95
96 static void map_breakpoint_numbers (const char *,
97                                     gdb::function_view<void (breakpoint *)>);
98
99 static void breakpoint_re_set_default (struct breakpoint *);
100
101 static void
102   create_sals_from_location_default (const struct event_location *location,
103                                      struct linespec_result *canonical,
104                                      enum bptype type_wanted);
105
106 static void create_breakpoints_sal_default (struct gdbarch *,
107                                             struct linespec_result *,
108                                             gdb::unique_xmalloc_ptr<char>,
109                                             gdb::unique_xmalloc_ptr<char>,
110                                             enum bptype,
111                                             enum bpdisp, int, int,
112                                             int,
113                                             const struct breakpoint_ops *,
114                                             int, int, int, unsigned);
115
116 static std::vector<symtab_and_line> decode_location_default
117   (struct breakpoint *b, const struct event_location *location,
118    struct program_space *search_pspace);
119
120 static int can_use_hardware_watchpoint
121     (const std::vector<value_ref_ptr> &vals);
122
123 static void mention (struct breakpoint *);
124
125 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
126                                                                enum bptype,
127                                                                const struct breakpoint_ops *);
128 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
129                                                        const struct symtab_and_line *);
130
131 /* This function is used in gdbtk sources and thus can not be made
132    static.  */
133 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
134                                        struct symtab_and_line,
135                                        enum bptype,
136                                        const struct breakpoint_ops *);
137
138 static struct breakpoint *
139   momentary_breakpoint_from_master (struct breakpoint *orig,
140                                     enum bptype type,
141                                     const struct breakpoint_ops *ops,
142                                     int loc_enabled);
143
144 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
145
146 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
147                                             CORE_ADDR bpaddr,
148                                             enum bptype bptype);
149
150 static void describe_other_breakpoints (struct gdbarch *,
151                                         struct program_space *, CORE_ADDR,
152                                         struct obj_section *, int);
153
154 static int watchpoint_locations_match (struct bp_location *loc1,
155                                        struct bp_location *loc2);
156
157 static int breakpoint_location_address_match (struct bp_location *bl,
158                                               const struct address_space *aspace,
159                                               CORE_ADDR addr);
160
161 static int breakpoint_location_address_range_overlap (struct bp_location *,
162                                                       const address_space *,
163                                                       CORE_ADDR, int);
164
165 static int remove_breakpoint (struct bp_location *);
166 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
167
168 static enum print_stop_action print_bp_stop_message (bpstat bs);
169
170 static int hw_breakpoint_used_count (void);
171
172 static int hw_watchpoint_use_count (struct breakpoint *);
173
174 static int hw_watchpoint_used_count_others (struct breakpoint *except,
175                                             enum bptype type,
176                                             int *other_type_used);
177
178 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
179                                     int count);
180
181 static void free_bp_location (struct bp_location *loc);
182 static void incref_bp_location (struct bp_location *loc);
183 static void decref_bp_location (struct bp_location **loc);
184
185 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
186
187 /* update_global_location_list's modes of operation wrt to whether to
188    insert locations now.  */
189 enum ugll_insert_mode
190 {
191   /* Don't insert any breakpoint locations into the inferior, only
192      remove already-inserted locations that no longer should be
193      inserted.  Functions that delete a breakpoint or breakpoints
194      should specify this mode, so that deleting a breakpoint doesn't
195      have the side effect of inserting the locations of other
196      breakpoints that are marked not-inserted, but should_be_inserted
197      returns true on them.
198
199      This behavior is useful is situations close to tear-down -- e.g.,
200      after an exec, while the target still has execution, but
201      breakpoint shadows of the previous executable image should *NOT*
202      be restored to the new image; or before detaching, where the
203      target still has execution and wants to delete breakpoints from
204      GDB's lists, and all breakpoints had already been removed from
205      the inferior.  */
206   UGLL_DONT_INSERT,
207
208   /* May insert breakpoints iff breakpoints_should_be_inserted_now
209      claims breakpoints should be inserted now.  */
210   UGLL_MAY_INSERT,
211
212   /* Insert locations now, irrespective of
213      breakpoints_should_be_inserted_now.  E.g., say all threads are
214      stopped right now, and the user did "continue".  We need to
215      insert breakpoints _before_ resuming the target, but
216      UGLL_MAY_INSERT wouldn't insert them, because
217      breakpoints_should_be_inserted_now returns false at that point,
218      as no thread is running yet.  */
219   UGLL_INSERT
220 };
221
222 static void update_global_location_list (enum ugll_insert_mode);
223
224 static void update_global_location_list_nothrow (enum ugll_insert_mode);
225
226 static int is_hardware_watchpoint (const struct breakpoint *bpt);
227
228 static void insert_breakpoint_locations (void);
229
230 static void trace_pass_command (const char *, int);
231
232 static void set_tracepoint_count (int num);
233
234 static int is_masked_watchpoint (const struct breakpoint *b);
235
236 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
237
238 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
239    otherwise.  */
240
241 static int strace_marker_p (struct breakpoint *b);
242
243 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
244    that are implemented on top of software or hardware breakpoints
245    (user breakpoints, internal and momentary breakpoints, etc.).  */
246 static struct breakpoint_ops bkpt_base_breakpoint_ops;
247
248 /* Internal breakpoints class type.  */
249 static struct breakpoint_ops internal_breakpoint_ops;
250
251 /* Momentary breakpoints class type.  */
252 static struct breakpoint_ops momentary_breakpoint_ops;
253
254 /* The breakpoint_ops structure to be used in regular user created
255    breakpoints.  */
256 struct breakpoint_ops bkpt_breakpoint_ops;
257
258 /* Breakpoints set on probes.  */
259 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
260
261 /* Dynamic printf class type.  */
262 struct breakpoint_ops dprintf_breakpoint_ops;
263
264 /* The style in which to perform a dynamic printf.  This is a user
265    option because different output options have different tradeoffs;
266    if GDB does the printing, there is better error handling if there
267    is a problem with any of the arguments, but using an inferior
268    function lets you have special-purpose printers and sending of
269    output to the same place as compiled-in print functions.  */
270
271 static const char dprintf_style_gdb[] = "gdb";
272 static const char dprintf_style_call[] = "call";
273 static const char dprintf_style_agent[] = "agent";
274 static const char *const dprintf_style_enums[] = {
275   dprintf_style_gdb,
276   dprintf_style_call,
277   dprintf_style_agent,
278   NULL
279 };
280 static const char *dprintf_style = dprintf_style_gdb;
281
282 /* The function to use for dynamic printf if the preferred style is to
283    call into the inferior.  The value is simply a string that is
284    copied into the command, so it can be anything that GDB can
285    evaluate to a callable address, not necessarily a function name.  */
286
287 static char *dprintf_function;
288
289 /* The channel to use for dynamic printf if the preferred style is to
290    call into the inferior; if a nonempty string, it will be passed to
291    the call as the first argument, with the format string as the
292    second.  As with the dprintf function, this can be anything that
293    GDB knows how to evaluate, so in addition to common choices like
294    "stderr", this could be an app-specific expression like
295    "mystreams[curlogger]".  */
296
297 static char *dprintf_channel;
298
299 /* True if dprintf commands should continue to operate even if GDB
300    has disconnected.  */
301 static int disconnected_dprintf = 1;
302
303 struct command_line *
304 breakpoint_commands (struct breakpoint *b)
305 {
306   return b->commands ? b->commands.get () : NULL;
307 }
308
309 /* Flag indicating that a command has proceeded the inferior past the
310    current breakpoint.  */
311
312 static int breakpoint_proceeded;
313
314 const char *
315 bpdisp_text (enum bpdisp disp)
316 {
317   /* NOTE: the following values are a part of MI protocol and
318      represent values of 'disp' field returned when inferior stops at
319      a breakpoint.  */
320   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
321
322   return bpdisps[(int) disp];
323 }
324
325 /* Prototypes for exported functions.  */
326 /* If FALSE, gdb will not use hardware support for watchpoints, even
327    if such is available.  */
328 static int can_use_hw_watchpoints;
329
330 static void
331 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
332                              struct cmd_list_element *c,
333                              const char *value)
334 {
335   fprintf_filtered (file,
336                     _("Debugger's willingness to use "
337                       "watchpoint hardware is %s.\n"),
338                     value);
339 }
340
341 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
342    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
343    for unrecognized breakpoint locations.
344    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
345 static enum auto_boolean pending_break_support;
346 static void
347 show_pending_break_support (struct ui_file *file, int from_tty,
348                             struct cmd_list_element *c,
349                             const char *value)
350 {
351   fprintf_filtered (file,
352                     _("Debugger's behavior regarding "
353                       "pending breakpoints is %s.\n"),
354                     value);
355 }
356
357 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
358    set with "break" but falling in read-only memory.
359    If 0, gdb will warn about such breakpoints, but won't automatically
360    use hardware breakpoints.  */
361 static int automatic_hardware_breakpoints;
362 static void
363 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
364                                      struct cmd_list_element *c,
365                                      const char *value)
366 {
367   fprintf_filtered (file,
368                     _("Automatic usage of hardware breakpoints is %s.\n"),
369                     value);
370 }
371
372 /* If on, GDB keeps breakpoints inserted even if the inferior is
373    stopped, and immediately inserts any new breakpoints as soon as
374    they're created.  If off (default), GDB keeps breakpoints off of
375    the target as long as possible.  That is, it delays inserting
376    breakpoints until the next resume, and removes them again when the
377    target fully stops.  This is a bit safer in case GDB crashes while
378    processing user input.  */
379 static int always_inserted_mode = 0;
380
381 static void
382 show_always_inserted_mode (struct ui_file *file, int from_tty,
383                      struct cmd_list_element *c, const char *value)
384 {
385   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
386                     value);
387 }
388
389 /* See breakpoint.h.  */
390
391 int
392 breakpoints_should_be_inserted_now (void)
393 {
394   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
395     {
396       /* If breakpoints are global, they should be inserted even if no
397          thread under gdb's control is running, or even if there are
398          no threads under GDB's control yet.  */
399       return 1;
400     }
401   else if (target_has_execution)
402     {
403       struct thread_info *tp;
404
405       if (always_inserted_mode)
406         {
407           /* The user wants breakpoints inserted even if all threads
408              are stopped.  */
409           return 1;
410         }
411
412       if (threads_are_executing ())
413         return 1;
414
415       /* Don't remove breakpoints yet if, even though all threads are
416          stopped, we still have events to process.  */
417       ALL_NON_EXITED_THREADS (tp)
418         if (tp->resumed
419             && tp->suspend.waitstatus_pending_p)
420           return 1;
421     }
422   return 0;
423 }
424
425 static const char condition_evaluation_both[] = "host or target";
426
427 /* Modes for breakpoint condition evaluation.  */
428 static const char condition_evaluation_auto[] = "auto";
429 static const char condition_evaluation_host[] = "host";
430 static const char condition_evaluation_target[] = "target";
431 static const char *const condition_evaluation_enums[] = {
432   condition_evaluation_auto,
433   condition_evaluation_host,
434   condition_evaluation_target,
435   NULL
436 };
437
438 /* Global that holds the current mode for breakpoint condition evaluation.  */
439 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
440
441 /* Global that we use to display information to the user (gets its value from
442    condition_evaluation_mode_1.  */
443 static const char *condition_evaluation_mode = condition_evaluation_auto;
444
445 /* Translate a condition evaluation mode MODE into either "host"
446    or "target".  This is used mostly to translate from "auto" to the
447    real setting that is being used.  It returns the translated
448    evaluation mode.  */
449
450 static const char *
451 translate_condition_evaluation_mode (const char *mode)
452 {
453   if (mode == condition_evaluation_auto)
454     {
455       if (target_supports_evaluation_of_breakpoint_conditions ())
456         return condition_evaluation_target;
457       else
458         return condition_evaluation_host;
459     }
460   else
461     return mode;
462 }
463
464 /* Discovers what condition_evaluation_auto translates to.  */
465
466 static const char *
467 breakpoint_condition_evaluation_mode (void)
468 {
469   return translate_condition_evaluation_mode (condition_evaluation_mode);
470 }
471
472 /* Return true if GDB should evaluate breakpoint conditions or false
473    otherwise.  */
474
475 static int
476 gdb_evaluates_breakpoint_condition_p (void)
477 {
478   const char *mode = breakpoint_condition_evaluation_mode ();
479
480   return (mode == condition_evaluation_host);
481 }
482
483 /* Are we executing breakpoint commands?  */
484 static int executing_breakpoint_commands;
485
486 /* Are overlay event breakpoints enabled? */
487 static int overlay_events_enabled;
488
489 /* See description in breakpoint.h. */
490 int target_exact_watchpoints = 0;
491
492 /* Walk the following statement or block through all breakpoints.
493    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
494    current breakpoint.  */
495
496 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
497
498 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
499         for (B = breakpoint_chain;      \
500              B ? (TMP=B->next, 1): 0;   \
501              B = TMP)
502
503 /* Similar iterator for the low-level breakpoints.  SAFE variant is
504    not provided so update_global_location_list must not be called
505    while executing the block of ALL_BP_LOCATIONS.  */
506
507 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
508         for (BP_TMP = bp_locations;                                     \
509              BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
510              BP_TMP++)
511
512 /* Iterates through locations with address ADDRESS for the currently selected
513    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
514    to where the loop should start from.
515    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
516    appropriate location to start with.  */
517
518 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
519         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
520              BP_LOCP_TMP = BP_LOCP_START;                               \
521              BP_LOCP_START                                              \
522              && (BP_LOCP_TMP < bp_locations + bp_locations_count        \
523              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
524              BP_LOCP_TMP++)
525
526 /* Iterator for tracepoints only.  */
527
528 #define ALL_TRACEPOINTS(B)  \
529   for (B = breakpoint_chain; B; B = B->next)  \
530     if (is_tracepoint (B))
531
532 /* Chains of all breakpoints defined.  */
533
534 struct breakpoint *breakpoint_chain;
535
536 /* Array is sorted by bp_locations_compare - primarily by the ADDRESS.  */
537
538 static struct bp_location **bp_locations;
539
540 /* Number of elements of BP_LOCATIONS.  */
541
542 static unsigned bp_locations_count;
543
544 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
545    ADDRESS for the current elements of BP_LOCATIONS which get a valid
546    result from bp_location_has_shadow.  You can use it for roughly
547    limiting the subrange of BP_LOCATIONS to scan for shadow bytes for
548    an address you need to read.  */
549
550 static CORE_ADDR bp_locations_placed_address_before_address_max;
551
552 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
553    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
554    BP_LOCATIONS which get a valid result from bp_location_has_shadow.
555    You can use it for roughly limiting the subrange of BP_LOCATIONS to
556    scan for shadow bytes for an address you need to read.  */
557
558 static CORE_ADDR bp_locations_shadow_len_after_address_max;
559
560 /* The locations that no longer correspond to any breakpoint, unlinked
561    from the bp_locations array, but for which a hit may still be
562    reported by a target.  */
563 VEC(bp_location_p) *moribund_locations = NULL;
564
565 /* Number of last breakpoint made.  */
566
567 static int breakpoint_count;
568
569 /* The value of `breakpoint_count' before the last command that
570    created breakpoints.  If the last (break-like) command created more
571    than one breakpoint, then the difference between BREAKPOINT_COUNT
572    and PREV_BREAKPOINT_COUNT is more than one.  */
573 static int prev_breakpoint_count;
574
575 /* Number of last tracepoint made.  */
576
577 static int tracepoint_count;
578
579 static struct cmd_list_element *breakpoint_set_cmdlist;
580 static struct cmd_list_element *breakpoint_show_cmdlist;
581 struct cmd_list_element *save_cmdlist;
582
583 /* See declaration at breakpoint.h.  */
584
585 struct breakpoint *
586 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
587                     void *user_data)
588 {
589   struct breakpoint *b = NULL;
590
591   ALL_BREAKPOINTS (b)
592     {
593       if (func (b, user_data) != 0)
594         break;
595     }
596
597   return b;
598 }
599
600 /* Return whether a breakpoint is an active enabled breakpoint.  */
601 static int
602 breakpoint_enabled (struct breakpoint *b)
603 {
604   return (b->enable_state == bp_enabled);
605 }
606
607 /* Set breakpoint count to NUM.  */
608
609 static void
610 set_breakpoint_count (int num)
611 {
612   prev_breakpoint_count = breakpoint_count;
613   breakpoint_count = num;
614   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
615 }
616
617 /* Used by `start_rbreak_breakpoints' below, to record the current
618    breakpoint count before "rbreak" creates any breakpoint.  */
619 static int rbreak_start_breakpoint_count;
620
621 /* Called at the start an "rbreak" command to record the first
622    breakpoint made.  */
623
624 scoped_rbreak_breakpoints::scoped_rbreak_breakpoints ()
625 {
626   rbreak_start_breakpoint_count = breakpoint_count;
627 }
628
629 /* Called at the end of an "rbreak" command to record the last
630    breakpoint made.  */
631
632 scoped_rbreak_breakpoints::~scoped_rbreak_breakpoints ()
633 {
634   prev_breakpoint_count = rbreak_start_breakpoint_count;
635 }
636
637 /* Used in run_command to zero the hit count when a new run starts.  */
638
639 void
640 clear_breakpoint_hit_counts (void)
641 {
642   struct breakpoint *b;
643
644   ALL_BREAKPOINTS (b)
645     b->hit_count = 0;
646 }
647
648 \f
649 /* Return the breakpoint with the specified number, or NULL
650    if the number does not refer to an existing breakpoint.  */
651
652 struct breakpoint *
653 get_breakpoint (int num)
654 {
655   struct breakpoint *b;
656
657   ALL_BREAKPOINTS (b)
658     if (b->number == num)
659       return b;
660   
661   return NULL;
662 }
663
664 \f
665
666 /* Mark locations as "conditions have changed" in case the target supports
667    evaluating conditions on its side.  */
668
669 static void
670 mark_breakpoint_modified (struct breakpoint *b)
671 {
672   struct bp_location *loc;
673
674   /* This is only meaningful if the target is
675      evaluating conditions and if the user has
676      opted for condition evaluation on the target's
677      side.  */
678   if (gdb_evaluates_breakpoint_condition_p ()
679       || !target_supports_evaluation_of_breakpoint_conditions ())
680     return;
681
682   if (!is_breakpoint (b))
683     return;
684
685   for (loc = b->loc; loc; loc = loc->next)
686     loc->condition_changed = condition_modified;
687 }
688
689 /* Mark location as "conditions have changed" in case the target supports
690    evaluating conditions on its side.  */
691
692 static void
693 mark_breakpoint_location_modified (struct bp_location *loc)
694 {
695   /* This is only meaningful if the target is
696      evaluating conditions and if the user has
697      opted for condition evaluation on the target's
698      side.  */
699   if (gdb_evaluates_breakpoint_condition_p ()
700       || !target_supports_evaluation_of_breakpoint_conditions ())
701
702     return;
703
704   if (!is_breakpoint (loc->owner))
705     return;
706
707   loc->condition_changed = condition_modified;
708 }
709
710 /* Sets the condition-evaluation mode using the static global
711    condition_evaluation_mode.  */
712
713 static void
714 set_condition_evaluation_mode (const char *args, int from_tty,
715                                struct cmd_list_element *c)
716 {
717   const char *old_mode, *new_mode;
718
719   if ((condition_evaluation_mode_1 == condition_evaluation_target)
720       && !target_supports_evaluation_of_breakpoint_conditions ())
721     {
722       condition_evaluation_mode_1 = condition_evaluation_mode;
723       warning (_("Target does not support breakpoint condition evaluation.\n"
724                  "Using host evaluation mode instead."));
725       return;
726     }
727
728   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
729   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
730
731   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
732      settings was "auto".  */
733   condition_evaluation_mode = condition_evaluation_mode_1;
734
735   /* Only update the mode if the user picked a different one.  */
736   if (new_mode != old_mode)
737     {
738       struct bp_location *loc, **loc_tmp;
739       /* If the user switched to a different evaluation mode, we
740          need to synch the changes with the target as follows:
741
742          "host" -> "target": Send all (valid) conditions to the target.
743          "target" -> "host": Remove all the conditions from the target.
744       */
745
746       if (new_mode == condition_evaluation_target)
747         {
748           /* Mark everything modified and synch conditions with the
749              target.  */
750           ALL_BP_LOCATIONS (loc, loc_tmp)
751             mark_breakpoint_location_modified (loc);
752         }
753       else
754         {
755           /* Manually mark non-duplicate locations to synch conditions
756              with the target.  We do this to remove all the conditions the
757              target knows about.  */
758           ALL_BP_LOCATIONS (loc, loc_tmp)
759             if (is_breakpoint (loc->owner) && loc->inserted)
760               loc->needs_update = 1;
761         }
762
763       /* Do the update.  */
764       update_global_location_list (UGLL_MAY_INSERT);
765     }
766
767   return;
768 }
769
770 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
771    what "auto" is translating to.  */
772
773 static void
774 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
775                                 struct cmd_list_element *c, const char *value)
776 {
777   if (condition_evaluation_mode == condition_evaluation_auto)
778     fprintf_filtered (file,
779                       _("Breakpoint condition evaluation "
780                         "mode is %s (currently %s).\n"),
781                       value,
782                       breakpoint_condition_evaluation_mode ());
783   else
784     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
785                       value);
786 }
787
788 /* A comparison function for bp_location AP and BP that is used by
789    bsearch.  This comparison function only cares about addresses, unlike
790    the more general bp_locations_compare function.  */
791
792 static int
793 bp_locations_compare_addrs (const void *ap, const void *bp)
794 {
795   const struct bp_location *a = *(const struct bp_location **) ap;
796   const struct bp_location *b = *(const struct bp_location **) bp;
797
798   if (a->address == b->address)
799     return 0;
800   else
801     return ((a->address > b->address) - (a->address < b->address));
802 }
803
804 /* Helper function to skip all bp_locations with addresses
805    less than ADDRESS.  It returns the first bp_location that
806    is greater than or equal to ADDRESS.  If none is found, just
807    return NULL.  */
808
809 static struct bp_location **
810 get_first_locp_gte_addr (CORE_ADDR address)
811 {
812   struct bp_location dummy_loc;
813   struct bp_location *dummy_locp = &dummy_loc;
814   struct bp_location **locp_found = NULL;
815
816   /* Initialize the dummy location's address field.  */
817   dummy_loc.address = address;
818
819   /* Find a close match to the first location at ADDRESS.  */
820   locp_found = ((struct bp_location **)
821                 bsearch (&dummy_locp, bp_locations, bp_locations_count,
822                          sizeof (struct bp_location **),
823                          bp_locations_compare_addrs));
824
825   /* Nothing was found, nothing left to do.  */
826   if (locp_found == NULL)
827     return NULL;
828
829   /* We may have found a location that is at ADDRESS but is not the first in the
830      location's list.  Go backwards (if possible) and locate the first one.  */
831   while ((locp_found - 1) >= bp_locations
832          && (*(locp_found - 1))->address == address)
833     locp_found--;
834
835   return locp_found;
836 }
837
838 void
839 set_breakpoint_condition (struct breakpoint *b, const char *exp,
840                           int from_tty)
841 {
842   xfree (b->cond_string);
843   b->cond_string = NULL;
844
845   if (is_watchpoint (b))
846     {
847       struct watchpoint *w = (struct watchpoint *) b;
848
849       w->cond_exp.reset ();
850     }
851   else
852     {
853       struct bp_location *loc;
854
855       for (loc = b->loc; loc; loc = loc->next)
856         {
857           loc->cond.reset ();
858
859           /* No need to free the condition agent expression
860              bytecode (if we have one).  We will handle this
861              when we go through update_global_location_list.  */
862         }
863     }
864
865   if (*exp == 0)
866     {
867       if (from_tty)
868         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
869     }
870   else
871     {
872       const char *arg = exp;
873
874       /* I don't know if it matters whether this is the string the user
875          typed in or the decompiled expression.  */
876       b->cond_string = xstrdup (arg);
877       b->condition_not_parsed = 0;
878
879       if (is_watchpoint (b))
880         {
881           struct watchpoint *w = (struct watchpoint *) b;
882
883           innermost_block.reset ();
884           arg = exp;
885           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
886           if (*arg)
887             error (_("Junk at end of expression"));
888           w->cond_exp_valid_block = innermost_block.block ();
889         }
890       else
891         {
892           struct bp_location *loc;
893
894           for (loc = b->loc; loc; loc = loc->next)
895             {
896               arg = exp;
897               loc->cond =
898                 parse_exp_1 (&arg, loc->address,
899                              block_for_pc (loc->address), 0);
900               if (*arg)
901                 error (_("Junk at end of expression"));
902             }
903         }
904     }
905   mark_breakpoint_modified (b);
906
907   gdb::observers::breakpoint_modified.notify (b);
908 }
909
910 /* Completion for the "condition" command.  */
911
912 static void
913 condition_completer (struct cmd_list_element *cmd,
914                      completion_tracker &tracker,
915                      const char *text, const char *word)
916 {
917   const char *space;
918
919   text = skip_spaces (text);
920   space = skip_to_space (text);
921   if (*space == '\0')
922     {
923       int len;
924       struct breakpoint *b;
925
926       if (text[0] == '$')
927         {
928           /* We don't support completion of history indices.  */
929           if (!isdigit (text[1]))
930             complete_internalvar (tracker, &text[1]);
931           return;
932         }
933
934       /* We're completing the breakpoint number.  */
935       len = strlen (text);
936
937       ALL_BREAKPOINTS (b)
938         {
939           char number[50];
940
941           xsnprintf (number, sizeof (number), "%d", b->number);
942
943           if (strncmp (number, text, len) == 0)
944             {
945               gdb::unique_xmalloc_ptr<char> copy (xstrdup (number));
946               tracker.add_completion (std::move (copy));
947             }
948         }
949
950       return;
951     }
952
953   /* We're completing the expression part.  */
954   text = skip_spaces (space);
955   expression_completer (cmd, tracker, text, word);
956 }
957
958 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
959
960 static void
961 condition_command (const char *arg, int from_tty)
962 {
963   struct breakpoint *b;
964   const char *p;
965   int bnum;
966
967   if (arg == 0)
968     error_no_arg (_("breakpoint number"));
969
970   p = arg;
971   bnum = get_number (&p);
972   if (bnum == 0)
973     error (_("Bad breakpoint argument: '%s'"), arg);
974
975   ALL_BREAKPOINTS (b)
976     if (b->number == bnum)
977       {
978         /* Check if this breakpoint has a "stop" method implemented in an
979            extension language.  This method and conditions entered into GDB
980            from the CLI are mutually exclusive.  */
981         const struct extension_language_defn *extlang
982           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
983
984         if (extlang != NULL)
985           {
986             error (_("Only one stop condition allowed.  There is currently"
987                      " a %s stop condition defined for this breakpoint."),
988                    ext_lang_capitalized_name (extlang));
989           }
990         set_breakpoint_condition (b, p, from_tty);
991
992         if (is_breakpoint (b))
993           update_global_location_list (UGLL_MAY_INSERT);
994
995         return;
996       }
997
998   error (_("No breakpoint number %d."), bnum);
999 }
1000
1001 /* Check that COMMAND do not contain commands that are suitable
1002    only for tracepoints and not suitable for ordinary breakpoints.
1003    Throw if any such commands is found.  */
1004
1005 static void
1006 check_no_tracepoint_commands (struct command_line *commands)
1007 {
1008   struct command_line *c;
1009
1010   for (c = commands; c; c = c->next)
1011     {
1012       int i;
1013
1014       if (c->control_type == while_stepping_control)
1015         error (_("The 'while-stepping' command can "
1016                  "only be used for tracepoints"));
1017
1018       check_no_tracepoint_commands (c->body_list_0.get ());
1019       check_no_tracepoint_commands (c->body_list_1.get ());
1020
1021       /* Not that command parsing removes leading whitespace and comment
1022          lines and also empty lines.  So, we only need to check for
1023          command directly.  */
1024       if (strstr (c->line, "collect ") == c->line)
1025         error (_("The 'collect' command can only be used for tracepoints"));
1026
1027       if (strstr (c->line, "teval ") == c->line)
1028         error (_("The 'teval' command can only be used for tracepoints"));
1029     }
1030 }
1031
1032 struct longjmp_breakpoint : public breakpoint
1033 {
1034   ~longjmp_breakpoint () override;
1035 };
1036
1037 /* Encapsulate tests for different types of tracepoints.  */
1038
1039 static bool
1040 is_tracepoint_type (bptype type)
1041 {
1042   return (type == bp_tracepoint
1043           || type == bp_fast_tracepoint
1044           || type == bp_static_tracepoint);
1045 }
1046
1047 static bool
1048 is_longjmp_type (bptype type)
1049 {
1050   return type == bp_longjmp || type == bp_exception;
1051 }
1052
1053 int
1054 is_tracepoint (const struct breakpoint *b)
1055 {
1056   return is_tracepoint_type (b->type);
1057 }
1058
1059 /* Factory function to create an appropriate instance of breakpoint given
1060    TYPE.  */
1061
1062 static std::unique_ptr<breakpoint>
1063 new_breakpoint_from_type (bptype type)
1064 {
1065   breakpoint *b;
1066
1067   if (is_tracepoint_type (type))
1068     b = new tracepoint ();
1069   else if (is_longjmp_type (type))
1070     b = new longjmp_breakpoint ();
1071   else
1072     b = new breakpoint ();
1073
1074   return std::unique_ptr<breakpoint> (b);
1075 }
1076
1077 /* A helper function that validates that COMMANDS are valid for a
1078    breakpoint.  This function will throw an exception if a problem is
1079    found.  */
1080
1081 static void
1082 validate_commands_for_breakpoint (struct breakpoint *b,
1083                                   struct command_line *commands)
1084 {
1085   if (is_tracepoint (b))
1086     {
1087       struct tracepoint *t = (struct tracepoint *) b;
1088       struct command_line *c;
1089       struct command_line *while_stepping = 0;
1090
1091       /* Reset the while-stepping step count.  The previous commands
1092          might have included a while-stepping action, while the new
1093          ones might not.  */
1094       t->step_count = 0;
1095
1096       /* We need to verify that each top-level element of commands is
1097          valid for tracepoints, that there's at most one
1098          while-stepping element, and that the while-stepping's body
1099          has valid tracing commands excluding nested while-stepping.
1100          We also need to validate the tracepoint action line in the
1101          context of the tracepoint --- validate_actionline actually
1102          has side effects, like setting the tracepoint's
1103          while-stepping STEP_COUNT, in addition to checking if the
1104          collect/teval actions parse and make sense in the
1105          tracepoint's context.  */
1106       for (c = commands; c; c = c->next)
1107         {
1108           if (c->control_type == while_stepping_control)
1109             {
1110               if (b->type == bp_fast_tracepoint)
1111                 error (_("The 'while-stepping' command "
1112                          "cannot be used for fast tracepoint"));
1113               else if (b->type == bp_static_tracepoint)
1114                 error (_("The 'while-stepping' command "
1115                          "cannot be used for static tracepoint"));
1116
1117               if (while_stepping)
1118                 error (_("The 'while-stepping' command "
1119                          "can be used only once"));
1120               else
1121                 while_stepping = c;
1122             }
1123
1124           validate_actionline (c->line, b);
1125         }
1126       if (while_stepping)
1127         {
1128           struct command_line *c2;
1129
1130           gdb_assert (while_stepping->body_list_1 == nullptr);
1131           c2 = while_stepping->body_list_0.get ();
1132           for (; c2; c2 = c2->next)
1133             {
1134               if (c2->control_type == while_stepping_control)
1135                 error (_("The 'while-stepping' command cannot be nested"));
1136             }
1137         }
1138     }
1139   else
1140     {
1141       check_no_tracepoint_commands (commands);
1142     }
1143 }
1144
1145 /* Return a vector of all the static tracepoints set at ADDR.  The
1146    caller is responsible for releasing the vector.  */
1147
1148 VEC(breakpoint_p) *
1149 static_tracepoints_here (CORE_ADDR addr)
1150 {
1151   struct breakpoint *b;
1152   VEC(breakpoint_p) *found = 0;
1153   struct bp_location *loc;
1154
1155   ALL_BREAKPOINTS (b)
1156     if (b->type == bp_static_tracepoint)
1157       {
1158         for (loc = b->loc; loc; loc = loc->next)
1159           if (loc->address == addr)
1160             VEC_safe_push(breakpoint_p, found, b);
1161       }
1162
1163   return found;
1164 }
1165
1166 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1167    validate that only allowed commands are included.  */
1168
1169 void
1170 breakpoint_set_commands (struct breakpoint *b, 
1171                          counted_command_line &&commands)
1172 {
1173   validate_commands_for_breakpoint (b, commands.get ());
1174
1175   b->commands = std::move (commands);
1176   gdb::observers::breakpoint_modified.notify (b);
1177 }
1178
1179 /* Set the internal `silent' flag on the breakpoint.  Note that this
1180    is not the same as the "silent" that may appear in the breakpoint's
1181    commands.  */
1182
1183 void
1184 breakpoint_set_silent (struct breakpoint *b, int silent)
1185 {
1186   int old_silent = b->silent;
1187
1188   b->silent = silent;
1189   if (old_silent != silent)
1190     gdb::observers::breakpoint_modified.notify (b);
1191 }
1192
1193 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1194    breakpoint work for any thread.  */
1195
1196 void
1197 breakpoint_set_thread (struct breakpoint *b, int thread)
1198 {
1199   int old_thread = b->thread;
1200
1201   b->thread = thread;
1202   if (old_thread != thread)
1203     gdb::observers::breakpoint_modified.notify (b);
1204 }
1205
1206 /* Set the task for this breakpoint.  If TASK is 0, make the
1207    breakpoint work for any task.  */
1208
1209 void
1210 breakpoint_set_task (struct breakpoint *b, int task)
1211 {
1212   int old_task = b->task;
1213
1214   b->task = task;
1215   if (old_task != task)
1216     gdb::observers::breakpoint_modified.notify (b);
1217 }
1218
1219 static void
1220 commands_command_1 (const char *arg, int from_tty,
1221                     struct command_line *control)
1222 {
1223   counted_command_line cmd;
1224
1225   std::string new_arg;
1226
1227   if (arg == NULL || !*arg)
1228     {
1229       if (breakpoint_count - prev_breakpoint_count > 1)
1230         new_arg = string_printf ("%d-%d", prev_breakpoint_count + 1,
1231                                  breakpoint_count);
1232       else if (breakpoint_count > 0)
1233         new_arg = string_printf ("%d", breakpoint_count);
1234       arg = new_arg.c_str ();
1235     }
1236
1237   map_breakpoint_numbers
1238     (arg, [&] (breakpoint *b)
1239      {
1240        if (cmd == NULL)
1241          {
1242            if (control != NULL)
1243              cmd = control->body_list_0;
1244            else
1245              {
1246                std::string str
1247                  = string_printf (_("Type commands for breakpoint(s) "
1248                                     "%s, one per line."),
1249                                   arg);
1250
1251                auto do_validate = [=] (const char *line)
1252                                   {
1253                                     validate_actionline (line, b);
1254                                   };
1255                gdb::function_view<void (const char *)> validator;
1256                if (is_tracepoint (b))
1257                  validator = do_validate;
1258
1259                cmd = read_command_lines (str.c_str (), from_tty, 1, validator);
1260              }
1261          }
1262
1263        /* If a breakpoint was on the list more than once, we don't need to
1264           do anything.  */
1265        if (b->commands != cmd)
1266          {
1267            validate_commands_for_breakpoint (b, cmd.get ());
1268            b->commands = cmd;
1269            gdb::observers::breakpoint_modified.notify (b);
1270          }
1271      });
1272 }
1273
1274 static void
1275 commands_command (const char *arg, int from_tty)
1276 {
1277   commands_command_1 (arg, from_tty, NULL);
1278 }
1279
1280 /* Like commands_command, but instead of reading the commands from
1281    input stream, takes them from an already parsed command structure.
1282
1283    This is used by cli-script.c to DTRT with breakpoint commands
1284    that are part of if and while bodies.  */
1285 enum command_control_type
1286 commands_from_control_command (const char *arg, struct command_line *cmd)
1287 {
1288   commands_command_1 (arg, 0, cmd);
1289   return simple_control;
1290 }
1291
1292 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1293
1294 static int
1295 bp_location_has_shadow (struct bp_location *bl)
1296 {
1297   if (bl->loc_type != bp_loc_software_breakpoint)
1298     return 0;
1299   if (!bl->inserted)
1300     return 0;
1301   if (bl->target_info.shadow_len == 0)
1302     /* BL isn't valid, or doesn't shadow memory.  */
1303     return 0;
1304   return 1;
1305 }
1306
1307 /* Update BUF, which is LEN bytes read from the target address
1308    MEMADDR, by replacing a memory breakpoint with its shadowed
1309    contents.
1310
1311    If READBUF is not NULL, this buffer must not overlap with the of
1312    the breakpoint location's shadow_contents buffer.  Otherwise, a
1313    failed assertion internal error will be raised.  */
1314
1315 static void
1316 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1317                             const gdb_byte *writebuf_org,
1318                             ULONGEST memaddr, LONGEST len,
1319                             struct bp_target_info *target_info,
1320                             struct gdbarch *gdbarch)
1321 {
1322   /* Now do full processing of the found relevant range of elements.  */
1323   CORE_ADDR bp_addr = 0;
1324   int bp_size = 0;
1325   int bptoffset = 0;
1326
1327   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1328                                  current_program_space->aspace, 0))
1329     {
1330       /* The breakpoint is inserted in a different address space.  */
1331       return;
1332     }
1333
1334   /* Addresses and length of the part of the breakpoint that
1335      we need to copy.  */
1336   bp_addr = target_info->placed_address;
1337   bp_size = target_info->shadow_len;
1338
1339   if (bp_addr + bp_size <= memaddr)
1340     {
1341       /* The breakpoint is entirely before the chunk of memory we are
1342          reading.  */
1343       return;
1344     }
1345
1346   if (bp_addr >= memaddr + len)
1347     {
1348       /* The breakpoint is entirely after the chunk of memory we are
1349          reading.  */
1350       return;
1351     }
1352
1353   /* Offset within shadow_contents.  */
1354   if (bp_addr < memaddr)
1355     {
1356       /* Only copy the second part of the breakpoint.  */
1357       bp_size -= memaddr - bp_addr;
1358       bptoffset = memaddr - bp_addr;
1359       bp_addr = memaddr;
1360     }
1361
1362   if (bp_addr + bp_size > memaddr + len)
1363     {
1364       /* Only copy the first part of the breakpoint.  */
1365       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1366     }
1367
1368   if (readbuf != NULL)
1369     {
1370       /* Verify that the readbuf buffer does not overlap with the
1371          shadow_contents buffer.  */
1372       gdb_assert (target_info->shadow_contents >= readbuf + len
1373                   || readbuf >= (target_info->shadow_contents
1374                                  + target_info->shadow_len));
1375
1376       /* Update the read buffer with this inserted breakpoint's
1377          shadow.  */
1378       memcpy (readbuf + bp_addr - memaddr,
1379               target_info->shadow_contents + bptoffset, bp_size);
1380     }
1381   else
1382     {
1383       const unsigned char *bp;
1384       CORE_ADDR addr = target_info->reqstd_address;
1385       int placed_size;
1386
1387       /* Update the shadow with what we want to write to memory.  */
1388       memcpy (target_info->shadow_contents + bptoffset,
1389               writebuf_org + bp_addr - memaddr, bp_size);
1390
1391       /* Determine appropriate breakpoint contents and size for this
1392          address.  */
1393       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1394
1395       /* Update the final write buffer with this inserted
1396          breakpoint's INSN.  */
1397       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1398     }
1399 }
1400
1401 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1402    by replacing any memory breakpoints with their shadowed contents.
1403
1404    If READBUF is not NULL, this buffer must not overlap with any of
1405    the breakpoint location's shadow_contents buffers.  Otherwise,
1406    a failed assertion internal error will be raised.
1407
1408    The range of shadowed area by each bp_location is:
1409      bl->address - bp_locations_placed_address_before_address_max
1410      up to bl->address + bp_locations_shadow_len_after_address_max
1411    The range we were requested to resolve shadows for is:
1412      memaddr ... memaddr + len
1413    Thus the safe cutoff boundaries for performance optimization are
1414      memaddr + len <= (bl->address
1415                        - bp_locations_placed_address_before_address_max)
1416    and:
1417      bl->address + bp_locations_shadow_len_after_address_max <= memaddr  */
1418
1419 void
1420 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1421                         const gdb_byte *writebuf_org,
1422                         ULONGEST memaddr, LONGEST len)
1423 {
1424   /* Left boundary, right boundary and median element of our binary
1425      search.  */
1426   unsigned bc_l, bc_r, bc;
1427
1428   /* Find BC_L which is a leftmost element which may affect BUF
1429      content.  It is safe to report lower value but a failure to
1430      report higher one.  */
1431
1432   bc_l = 0;
1433   bc_r = bp_locations_count;
1434   while (bc_l + 1 < bc_r)
1435     {
1436       struct bp_location *bl;
1437
1438       bc = (bc_l + bc_r) / 2;
1439       bl = bp_locations[bc];
1440
1441       /* Check first BL->ADDRESS will not overflow due to the added
1442          constant.  Then advance the left boundary only if we are sure
1443          the BC element can in no way affect the BUF content (MEMADDR
1444          to MEMADDR + LEN range).
1445
1446          Use the BP_LOCATIONS_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1447          offset so that we cannot miss a breakpoint with its shadow
1448          range tail still reaching MEMADDR.  */
1449
1450       if ((bl->address + bp_locations_shadow_len_after_address_max
1451            >= bl->address)
1452           && (bl->address + bp_locations_shadow_len_after_address_max
1453               <= memaddr))
1454         bc_l = bc;
1455       else
1456         bc_r = bc;
1457     }
1458
1459   /* Due to the binary search above, we need to make sure we pick the
1460      first location that's at BC_L's address.  E.g., if there are
1461      multiple locations at the same address, BC_L may end up pointing
1462      at a duplicate location, and miss the "master"/"inserted"
1463      location.  Say, given locations L1, L2 and L3 at addresses A and
1464      B:
1465
1466       L1@A, L2@A, L3@B, ...
1467
1468      BC_L could end up pointing at location L2, while the "master"
1469      location could be L1.  Since the `loc->inserted' flag is only set
1470      on "master" locations, we'd forget to restore the shadow of L1
1471      and L2.  */
1472   while (bc_l > 0
1473          && bp_locations[bc_l]->address == bp_locations[bc_l - 1]->address)
1474     bc_l--;
1475
1476   /* Now do full processing of the found relevant range of elements.  */
1477
1478   for (bc = bc_l; bc < bp_locations_count; bc++)
1479   {
1480     struct bp_location *bl = bp_locations[bc];
1481
1482     /* bp_location array has BL->OWNER always non-NULL.  */
1483     if (bl->owner->type == bp_none)
1484       warning (_("reading through apparently deleted breakpoint #%d?"),
1485                bl->owner->number);
1486
1487     /* Performance optimization: any further element can no longer affect BUF
1488        content.  */
1489
1490     if (bl->address >= bp_locations_placed_address_before_address_max
1491         && memaddr + len <= (bl->address
1492                              - bp_locations_placed_address_before_address_max))
1493       break;
1494
1495     if (!bp_location_has_shadow (bl))
1496       continue;
1497
1498     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1499                                 memaddr, len, &bl->target_info, bl->gdbarch);
1500   }
1501 }
1502
1503 \f
1504
1505 /* Return true if BPT is either a software breakpoint or a hardware
1506    breakpoint.  */
1507
1508 int
1509 is_breakpoint (const struct breakpoint *bpt)
1510 {
1511   return (bpt->type == bp_breakpoint
1512           || bpt->type == bp_hardware_breakpoint
1513           || bpt->type == bp_dprintf);
1514 }
1515
1516 /* Return true if BPT is of any hardware watchpoint kind.  */
1517
1518 static int
1519 is_hardware_watchpoint (const struct breakpoint *bpt)
1520 {
1521   return (bpt->type == bp_hardware_watchpoint
1522           || bpt->type == bp_read_watchpoint
1523           || bpt->type == bp_access_watchpoint);
1524 }
1525
1526 /* Return true if BPT is of any watchpoint kind, hardware or
1527    software.  */
1528
1529 int
1530 is_watchpoint (const struct breakpoint *bpt)
1531 {
1532   return (is_hardware_watchpoint (bpt)
1533           || bpt->type == bp_watchpoint);
1534 }
1535
1536 /* Returns true if the current thread and its running state are safe
1537    to evaluate or update watchpoint B.  Watchpoints on local
1538    expressions need to be evaluated in the context of the thread that
1539    was current when the watchpoint was created, and, that thread needs
1540    to be stopped to be able to select the correct frame context.
1541    Watchpoints on global expressions can be evaluated on any thread,
1542    and in any state.  It is presently left to the target allowing
1543    memory accesses when threads are running.  */
1544
1545 static int
1546 watchpoint_in_thread_scope (struct watchpoint *b)
1547 {
1548   return (b->pspace == current_program_space
1549           && (ptid_equal (b->watchpoint_thread, null_ptid)
1550               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1551                   && !inferior_thread ()->executing)));
1552 }
1553
1554 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1555    associated bp_watchpoint_scope breakpoint.  */
1556
1557 static void
1558 watchpoint_del_at_next_stop (struct watchpoint *w)
1559 {
1560   if (w->related_breakpoint != w)
1561     {
1562       gdb_assert (w->related_breakpoint->type == bp_watchpoint_scope);
1563       gdb_assert (w->related_breakpoint->related_breakpoint == w);
1564       w->related_breakpoint->disposition = disp_del_at_next_stop;
1565       w->related_breakpoint->related_breakpoint = w->related_breakpoint;
1566       w->related_breakpoint = w;
1567     }
1568   w->disposition = disp_del_at_next_stop;
1569 }
1570
1571 /* Extract a bitfield value from value VAL using the bit parameters contained in
1572    watchpoint W.  */
1573
1574 static struct value *
1575 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1576 {
1577   struct value *bit_val;
1578
1579   if (val == NULL)
1580     return NULL;
1581
1582   bit_val = allocate_value (value_type (val));
1583
1584   unpack_value_bitfield (bit_val,
1585                          w->val_bitpos,
1586                          w->val_bitsize,
1587                          value_contents_for_printing (val),
1588                          value_offset (val),
1589                          val);
1590
1591   return bit_val;
1592 }
1593
1594 /* Allocate a dummy location and add it to B, which must be a software
1595    watchpoint.  This is required because even if a software watchpoint
1596    is not watching any memory, bpstat_stop_status requires a location
1597    to be able to report stops.  */
1598
1599 static void
1600 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1601                                             struct program_space *pspace)
1602 {
1603   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1604
1605   b->loc = allocate_bp_location (b);
1606   b->loc->pspace = pspace;
1607   b->loc->address = -1;
1608   b->loc->length = -1;
1609 }
1610
1611 /* Returns true if B is a software watchpoint that is not watching any
1612    memory (e.g., "watch $pc").  */
1613
1614 static int
1615 is_no_memory_software_watchpoint (struct breakpoint *b)
1616 {
1617   return (b->type == bp_watchpoint
1618           && b->loc != NULL
1619           && b->loc->next == NULL
1620           && b->loc->address == -1
1621           && b->loc->length == -1);
1622 }
1623
1624 /* Assuming that B is a watchpoint:
1625    - Reparse watchpoint expression, if REPARSE is non-zero
1626    - Evaluate expression and store the result in B->val
1627    - Evaluate the condition if there is one, and store the result
1628      in b->loc->cond.
1629    - Update the list of values that must be watched in B->loc.
1630
1631    If the watchpoint disposition is disp_del_at_next_stop, then do
1632    nothing.  If this is local watchpoint that is out of scope, delete
1633    it.
1634
1635    Even with `set breakpoint always-inserted on' the watchpoints are
1636    removed + inserted on each stop here.  Normal breakpoints must
1637    never be removed because they might be missed by a running thread
1638    when debugging in non-stop mode.  On the other hand, hardware
1639    watchpoints (is_hardware_watchpoint; processed here) are specific
1640    to each LWP since they are stored in each LWP's hardware debug
1641    registers.  Therefore, such LWP must be stopped first in order to
1642    be able to modify its hardware watchpoints.
1643
1644    Hardware watchpoints must be reset exactly once after being
1645    presented to the user.  It cannot be done sooner, because it would
1646    reset the data used to present the watchpoint hit to the user.  And
1647    it must not be done later because it could display the same single
1648    watchpoint hit during multiple GDB stops.  Note that the latter is
1649    relevant only to the hardware watchpoint types bp_read_watchpoint
1650    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1651    not user-visible - its hit is suppressed if the memory content has
1652    not changed.
1653
1654    The following constraints influence the location where we can reset
1655    hardware watchpoints:
1656
1657    * target_stopped_by_watchpoint and target_stopped_data_address are
1658      called several times when GDB stops.
1659
1660    [linux] 
1661    * Multiple hardware watchpoints can be hit at the same time,
1662      causing GDB to stop.  GDB only presents one hardware watchpoint
1663      hit at a time as the reason for stopping, and all the other hits
1664      are presented later, one after the other, each time the user
1665      requests the execution to be resumed.  Execution is not resumed
1666      for the threads still having pending hit event stored in
1667      LWP_INFO->STATUS.  While the watchpoint is already removed from
1668      the inferior on the first stop the thread hit event is kept being
1669      reported from its cached value by linux_nat_stopped_data_address
1670      until the real thread resume happens after the watchpoint gets
1671      presented and thus its LWP_INFO->STATUS gets reset.
1672
1673    Therefore the hardware watchpoint hit can get safely reset on the
1674    watchpoint removal from inferior.  */
1675
1676 static void
1677 update_watchpoint (struct watchpoint *b, int reparse)
1678 {
1679   int within_current_scope;
1680   struct frame_id saved_frame_id;
1681   int frame_saved;
1682
1683   /* If this is a local watchpoint, we only want to check if the
1684      watchpoint frame is in scope if the current thread is the thread
1685      that was used to create the watchpoint.  */
1686   if (!watchpoint_in_thread_scope (b))
1687     return;
1688
1689   if (b->disposition == disp_del_at_next_stop)
1690     return;
1691  
1692   frame_saved = 0;
1693
1694   /* Determine if the watchpoint is within scope.  */
1695   if (b->exp_valid_block == NULL)
1696     within_current_scope = 1;
1697   else
1698     {
1699       struct frame_info *fi = get_current_frame ();
1700       struct gdbarch *frame_arch = get_frame_arch (fi);
1701       CORE_ADDR frame_pc = get_frame_pc (fi);
1702
1703       /* If we're at a point where the stack has been destroyed
1704          (e.g. in a function epilogue), unwinding may not work
1705          properly. Do not attempt to recreate locations at this
1706          point.  See similar comments in watchpoint_check.  */
1707       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1708         return;
1709
1710       /* Save the current frame's ID so we can restore it after
1711          evaluating the watchpoint expression on its own frame.  */
1712       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1713          took a frame parameter, so that we didn't have to change the
1714          selected frame.  */
1715       frame_saved = 1;
1716       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1717
1718       fi = frame_find_by_id (b->watchpoint_frame);
1719       within_current_scope = (fi != NULL);
1720       if (within_current_scope)
1721         select_frame (fi);
1722     }
1723
1724   /* We don't free locations.  They are stored in the bp_location array
1725      and update_global_location_list will eventually delete them and
1726      remove breakpoints if needed.  */
1727   b->loc = NULL;
1728
1729   if (within_current_scope && reparse)
1730     {
1731       const char *s;
1732
1733       b->exp.reset ();
1734       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1735       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1736       /* If the meaning of expression itself changed, the old value is
1737          no longer relevant.  We don't want to report a watchpoint hit
1738          to the user when the old value and the new value may actually
1739          be completely different objects.  */
1740       b->val = NULL;
1741       b->val_valid = 0;
1742
1743       /* Note that unlike with breakpoints, the watchpoint's condition
1744          expression is stored in the breakpoint object, not in the
1745          locations (re)created below.  */
1746       if (b->cond_string != NULL)
1747         {
1748           b->cond_exp.reset ();
1749
1750           s = b->cond_string;
1751           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1752         }
1753     }
1754
1755   /* If we failed to parse the expression, for example because
1756      it refers to a global variable in a not-yet-loaded shared library,
1757      don't try to insert watchpoint.  We don't automatically delete
1758      such watchpoint, though, since failure to parse expression
1759      is different from out-of-scope watchpoint.  */
1760   if (!target_has_execution)
1761     {
1762       /* Without execution, memory can't change.  No use to try and
1763          set watchpoint locations.  The watchpoint will be reset when
1764          the target gains execution, through breakpoint_re_set.  */
1765       if (!can_use_hw_watchpoints)
1766         {
1767           if (b->ops->works_in_software_mode (b))
1768             b->type = bp_watchpoint;
1769           else
1770             error (_("Can't set read/access watchpoint when "
1771                      "hardware watchpoints are disabled."));
1772         }
1773     }
1774   else if (within_current_scope && b->exp)
1775     {
1776       int pc = 0;
1777       std::vector<value_ref_ptr> val_chain;
1778       struct value *v, *result, *next;
1779       struct program_space *frame_pspace;
1780
1781       fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
1782
1783       /* Avoid setting b->val if it's already set.  The meaning of
1784          b->val is 'the last value' user saw, and we should update
1785          it only if we reported that last value to user.  As it
1786          happens, the code that reports it updates b->val directly.
1787          We don't keep track of the memory value for masked
1788          watchpoints.  */
1789       if (!b->val_valid && !is_masked_watchpoint (b))
1790         {
1791           if (b->val_bitsize != 0)
1792             v = extract_bitfield_from_watchpoint_value (b, v);
1793           b->val = release_value (v);
1794           b->val_valid = 1;
1795         }
1796
1797       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1798
1799       /* Look at each value on the value chain.  */
1800       gdb_assert (!val_chain.empty ());
1801       for (const value_ref_ptr &iter : val_chain)
1802         {
1803           v = iter.get ();
1804
1805           /* If it's a memory location, and GDB actually needed
1806              its contents to evaluate the expression, then we
1807              must watch it.  If the first value returned is
1808              still lazy, that means an error occurred reading it;
1809              watch it anyway in case it becomes readable.  */
1810           if (VALUE_LVAL (v) == lval_memory
1811               && (v == val_chain[0] || ! value_lazy (v)))
1812             {
1813               struct type *vtype = check_typedef (value_type (v));
1814
1815               /* We only watch structs and arrays if user asked
1816                  for it explicitly, never if they just happen to
1817                  appear in the middle of some value chain.  */
1818               if (v == result
1819                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1820                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1821                 {
1822                   CORE_ADDR addr;
1823                   enum target_hw_bp_type type;
1824                   struct bp_location *loc, **tmp;
1825                   int bitpos = 0, bitsize = 0;
1826
1827                   if (value_bitsize (v) != 0)
1828                     {
1829                       /* Extract the bit parameters out from the bitfield
1830                          sub-expression.  */
1831                       bitpos = value_bitpos (v);
1832                       bitsize = value_bitsize (v);
1833                     }
1834                   else if (v == result && b->val_bitsize != 0)
1835                     {
1836                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1837                         lvalue whose bit parameters are saved in the fields
1838                         VAL_BITPOS and VAL_BITSIZE.  */
1839                       bitpos = b->val_bitpos;
1840                       bitsize = b->val_bitsize;
1841                     }
1842
1843                   addr = value_address (v);
1844                   if (bitsize != 0)
1845                     {
1846                       /* Skip the bytes that don't contain the bitfield.  */
1847                       addr += bitpos / 8;
1848                     }
1849
1850                   type = hw_write;
1851                   if (b->type == bp_read_watchpoint)
1852                     type = hw_read;
1853                   else if (b->type == bp_access_watchpoint)
1854                     type = hw_access;
1855
1856                   loc = allocate_bp_location (b);
1857                   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
1858                     ;
1859                   *tmp = loc;
1860                   loc->gdbarch = get_type_arch (value_type (v));
1861
1862                   loc->pspace = frame_pspace;
1863                   loc->address = address_significant (loc->gdbarch, addr);
1864
1865                   if (bitsize != 0)
1866                     {
1867                       /* Just cover the bytes that make up the bitfield.  */
1868                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
1869                     }
1870                   else
1871                     loc->length = TYPE_LENGTH (value_type (v));
1872
1873                   loc->watchpoint_type = type;
1874                 }
1875             }
1876         }
1877
1878       /* Change the type of breakpoint between hardware assisted or
1879          an ordinary watchpoint depending on the hardware support
1880          and free hardware slots.  REPARSE is set when the inferior
1881          is started.  */
1882       if (reparse)
1883         {
1884           int reg_cnt;
1885           enum bp_loc_type loc_type;
1886           struct bp_location *bl;
1887
1888           reg_cnt = can_use_hardware_watchpoint (val_chain);
1889
1890           if (reg_cnt)
1891             {
1892               int i, target_resources_ok, other_type_used;
1893               enum bptype type;
1894
1895               /* Use an exact watchpoint when there's only one memory region to be
1896                  watched, and only one debug register is needed to watch it.  */
1897               b->exact = target_exact_watchpoints && reg_cnt == 1;
1898
1899               /* We need to determine how many resources are already
1900                  used for all other hardware watchpoints plus this one
1901                  to see if we still have enough resources to also fit
1902                  this watchpoint in as well.  */
1903
1904               /* If this is a software watchpoint, we try to turn it
1905                  to a hardware one -- count resources as if B was of
1906                  hardware watchpoint type.  */
1907               type = b->type;
1908               if (type == bp_watchpoint)
1909                 type = bp_hardware_watchpoint;
1910
1911               /* This watchpoint may or may not have been placed on
1912                  the list yet at this point (it won't be in the list
1913                  if we're trying to create it for the first time,
1914                  through watch_command), so always account for it
1915                  manually.  */
1916
1917               /* Count resources used by all watchpoints except B.  */
1918               i = hw_watchpoint_used_count_others (b, type, &other_type_used);
1919
1920               /* Add in the resources needed for B.  */
1921               i += hw_watchpoint_use_count (b);
1922
1923               target_resources_ok
1924                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1925               if (target_resources_ok <= 0)
1926                 {
1927                   int sw_mode = b->ops->works_in_software_mode (b);
1928
1929                   if (target_resources_ok == 0 && !sw_mode)
1930                     error (_("Target does not support this type of "
1931                              "hardware watchpoint."));
1932                   else if (target_resources_ok < 0 && !sw_mode)
1933                     error (_("There are not enough available hardware "
1934                              "resources for this watchpoint."));
1935
1936                   /* Downgrade to software watchpoint.  */
1937                   b->type = bp_watchpoint;
1938                 }
1939               else
1940                 {
1941                   /* If this was a software watchpoint, we've just
1942                      found we have enough resources to turn it to a
1943                      hardware watchpoint.  Otherwise, this is a
1944                      nop.  */
1945                   b->type = type;
1946                 }
1947             }
1948           else if (!b->ops->works_in_software_mode (b))
1949             {
1950               if (!can_use_hw_watchpoints)
1951                 error (_("Can't set read/access watchpoint when "
1952                          "hardware watchpoints are disabled."));
1953               else
1954                 error (_("Expression cannot be implemented with "
1955                          "read/access watchpoint."));
1956             }
1957           else
1958             b->type = bp_watchpoint;
1959
1960           loc_type = (b->type == bp_watchpoint? bp_loc_other
1961                       : bp_loc_hardware_watchpoint);
1962           for (bl = b->loc; bl; bl = bl->next)
1963             bl->loc_type = loc_type;
1964         }
1965
1966       /* If a software watchpoint is not watching any memory, then the
1967          above left it without any location set up.  But,
1968          bpstat_stop_status requires a location to be able to report
1969          stops, so make sure there's at least a dummy one.  */
1970       if (b->type == bp_watchpoint && b->loc == NULL)
1971         software_watchpoint_add_no_memory_location (b, frame_pspace);
1972     }
1973   else if (!within_current_scope)
1974     {
1975       printf_filtered (_("\
1976 Watchpoint %d deleted because the program has left the block\n\
1977 in which its expression is valid.\n"),
1978                        b->number);
1979       watchpoint_del_at_next_stop (b);
1980     }
1981
1982   /* Restore the selected frame.  */
1983   if (frame_saved)
1984     select_frame (frame_find_by_id (saved_frame_id));
1985 }
1986
1987
1988 /* Returns 1 iff breakpoint location should be
1989    inserted in the inferior.  We don't differentiate the type of BL's owner
1990    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1991    breakpoint_ops is not defined, because in insert_bp_location,
1992    tracepoint's insert_location will not be called.  */
1993 static int
1994 should_be_inserted (struct bp_location *bl)
1995 {
1996   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1997     return 0;
1998
1999   if (bl->owner->disposition == disp_del_at_next_stop)
2000     return 0;
2001
2002   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2003     return 0;
2004
2005   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2006     return 0;
2007
2008   /* This is set for example, when we're attached to the parent of a
2009      vfork, and have detached from the child.  The child is running
2010      free, and we expect it to do an exec or exit, at which point the
2011      OS makes the parent schedulable again (and the target reports
2012      that the vfork is done).  Until the child is done with the shared
2013      memory region, do not insert breakpoints in the parent, otherwise
2014      the child could still trip on the parent's breakpoints.  Since
2015      the parent is blocked anyway, it won't miss any breakpoint.  */
2016   if (bl->pspace->breakpoints_not_allowed)
2017     return 0;
2018
2019   /* Don't insert a breakpoint if we're trying to step past its
2020      location, except if the breakpoint is a single-step breakpoint,
2021      and the breakpoint's thread is the thread which is stepping past
2022      a breakpoint.  */
2023   if ((bl->loc_type == bp_loc_software_breakpoint
2024        || bl->loc_type == bp_loc_hardware_breakpoint)
2025       && stepping_past_instruction_at (bl->pspace->aspace,
2026                                        bl->address)
2027       /* The single-step breakpoint may be inserted at the location
2028          we're trying to step if the instruction branches to itself.
2029          However, the instruction won't be executed at all and it may
2030          break the semantics of the instruction, for example, the
2031          instruction is a conditional branch or updates some flags.
2032          We can't fix it unless GDB is able to emulate the instruction
2033          or switch to displaced stepping.  */
2034       && !(bl->owner->type == bp_single_step
2035            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2036     {
2037       if (debug_infrun)
2038         {
2039           fprintf_unfiltered (gdb_stdlog,
2040                               "infrun: skipping breakpoint: "
2041                               "stepping past insn at: %s\n",
2042                               paddress (bl->gdbarch, bl->address));
2043         }
2044       return 0;
2045     }
2046
2047   /* Don't insert watchpoints if we're trying to step past the
2048      instruction that triggered one.  */
2049   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2050       && stepping_past_nonsteppable_watchpoint ())
2051     {
2052       if (debug_infrun)
2053         {
2054           fprintf_unfiltered (gdb_stdlog,
2055                               "infrun: stepping past non-steppable watchpoint. "
2056                               "skipping watchpoint at %s:%d\n",
2057                               paddress (bl->gdbarch, bl->address),
2058                               bl->length);
2059         }
2060       return 0;
2061     }
2062
2063   return 1;
2064 }
2065
2066 /* Same as should_be_inserted but does the check assuming
2067    that the location is not duplicated.  */
2068
2069 static int
2070 unduplicated_should_be_inserted (struct bp_location *bl)
2071 {
2072   int result;
2073   const int save_duplicate = bl->duplicate;
2074
2075   bl->duplicate = 0;
2076   result = should_be_inserted (bl);
2077   bl->duplicate = save_duplicate;
2078   return result;
2079 }
2080
2081 /* Parses a conditional described by an expression COND into an
2082    agent expression bytecode suitable for evaluation
2083    by the bytecode interpreter.  Return NULL if there was
2084    any error during parsing.  */
2085
2086 static agent_expr_up
2087 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2088 {
2089   if (cond == NULL)
2090     return NULL;
2091
2092   agent_expr_up aexpr;
2093
2094   /* We don't want to stop processing, so catch any errors
2095      that may show up.  */
2096   TRY
2097     {
2098       aexpr = gen_eval_for_expr (scope, cond);
2099     }
2100
2101   CATCH (ex, RETURN_MASK_ERROR)
2102     {
2103       /* If we got here, it means the condition could not be parsed to a valid
2104          bytecode expression and thus can't be evaluated on the target's side.
2105          It's no use iterating through the conditions.  */
2106     }
2107   END_CATCH
2108
2109   /* We have a valid agent expression.  */
2110   return aexpr;
2111 }
2112
2113 /* Based on location BL, create a list of breakpoint conditions to be
2114    passed on to the target.  If we have duplicated locations with different
2115    conditions, we will add such conditions to the list.  The idea is that the
2116    target will evaluate the list of conditions and will only notify GDB when
2117    one of them is true.  */
2118
2119 static void
2120 build_target_condition_list (struct bp_location *bl)
2121 {
2122   struct bp_location **locp = NULL, **loc2p;
2123   int null_condition_or_parse_error = 0;
2124   int modified = bl->needs_update;
2125   struct bp_location *loc;
2126
2127   /* Release conditions left over from a previous insert.  */
2128   bl->target_info.conditions.clear ();
2129
2130   /* This is only meaningful if the target is
2131      evaluating conditions and if the user has
2132      opted for condition evaluation on the target's
2133      side.  */
2134   if (gdb_evaluates_breakpoint_condition_p ()
2135       || !target_supports_evaluation_of_breakpoint_conditions ())
2136     return;
2137
2138   /* Do a first pass to check for locations with no assigned
2139      conditions or conditions that fail to parse to a valid agent expression
2140      bytecode.  If any of these happen, then it's no use to send conditions
2141      to the target since this location will always trigger and generate a
2142      response back to GDB.  */
2143   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2144     {
2145       loc = (*loc2p);
2146       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2147         {
2148           if (modified)
2149             {
2150               /* Re-parse the conditions since something changed.  In that
2151                  case we already freed the condition bytecodes (see
2152                  force_breakpoint_reinsertion).  We just
2153                  need to parse the condition to bytecodes again.  */
2154               loc->cond_bytecode = parse_cond_to_aexpr (bl->address,
2155                                                         loc->cond.get ());
2156             }
2157
2158           /* If we have a NULL bytecode expression, it means something
2159              went wrong or we have a null condition expression.  */
2160           if (!loc->cond_bytecode)
2161             {
2162               null_condition_or_parse_error = 1;
2163               break;
2164             }
2165         }
2166     }
2167
2168   /* If any of these happened, it means we will have to evaluate the conditions
2169      for the location's address on gdb's side.  It is no use keeping bytecodes
2170      for all the other duplicate locations, thus we free all of them here.
2171
2172      This is so we have a finer control over which locations' conditions are
2173      being evaluated by GDB or the remote stub.  */
2174   if (null_condition_or_parse_error)
2175     {
2176       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2177         {
2178           loc = (*loc2p);
2179           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2180             {
2181               /* Only go as far as the first NULL bytecode is
2182                  located.  */
2183               if (!loc->cond_bytecode)
2184                 return;
2185
2186               loc->cond_bytecode.reset ();
2187             }
2188         }
2189     }
2190
2191   /* No NULL conditions or failed bytecode generation.  Build a condition list
2192      for this location's address.  */
2193   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2194     {
2195       loc = (*loc2p);
2196       if (loc->cond
2197           && is_breakpoint (loc->owner)
2198           && loc->pspace->num == bl->pspace->num
2199           && loc->owner->enable_state == bp_enabled
2200           && loc->enabled)
2201         {
2202           /* Add the condition to the vector.  This will be used later
2203              to send the conditions to the target.  */
2204           bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
2205         }
2206     }
2207
2208   return;
2209 }
2210
2211 /* Parses a command described by string CMD into an agent expression
2212    bytecode suitable for evaluation by the bytecode interpreter.
2213    Return NULL if there was any error during parsing.  */
2214
2215 static agent_expr_up
2216 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2217 {
2218   const char *cmdrest;
2219   const char *format_start, *format_end;
2220   struct gdbarch *gdbarch = get_current_arch ();
2221
2222   if (cmd == NULL)
2223     return NULL;
2224
2225   cmdrest = cmd;
2226
2227   if (*cmdrest == ',')
2228     ++cmdrest;
2229   cmdrest = skip_spaces (cmdrest);
2230
2231   if (*cmdrest++ != '"')
2232     error (_("No format string following the location"));
2233
2234   format_start = cmdrest;
2235
2236   format_pieces fpieces (&cmdrest);
2237
2238   format_end = cmdrest;
2239
2240   if (*cmdrest++ != '"')
2241     error (_("Bad format string, non-terminated '\"'."));
2242   
2243   cmdrest = skip_spaces (cmdrest);
2244
2245   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2246     error (_("Invalid argument syntax"));
2247
2248   if (*cmdrest == ',')
2249     cmdrest++;
2250   cmdrest = skip_spaces (cmdrest);
2251
2252   /* For each argument, make an expression.  */
2253
2254   std::vector<struct expression *> argvec;
2255   while (*cmdrest != '\0')
2256     {
2257       const char *cmd1;
2258
2259       cmd1 = cmdrest;
2260       expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2261       argvec.push_back (expr.release ());
2262       cmdrest = cmd1;
2263       if (*cmdrest == ',')
2264         ++cmdrest;
2265     }
2266
2267   agent_expr_up aexpr;
2268
2269   /* We don't want to stop processing, so catch any errors
2270      that may show up.  */
2271   TRY
2272     {
2273       aexpr = gen_printf (scope, gdbarch, 0, 0,
2274                           format_start, format_end - format_start,
2275                           argvec.size (), argvec.data ());
2276     }
2277   CATCH (ex, RETURN_MASK_ERROR)
2278     {
2279       /* If we got here, it means the command could not be parsed to a valid
2280          bytecode expression and thus can't be evaluated on the target's side.
2281          It's no use iterating through the other commands.  */
2282     }
2283   END_CATCH
2284
2285   /* We have a valid agent expression, return it.  */
2286   return aexpr;
2287 }
2288
2289 /* Based on location BL, create a list of breakpoint commands to be
2290    passed on to the target.  If we have duplicated locations with
2291    different commands, we will add any such to the list.  */
2292
2293 static void
2294 build_target_command_list (struct bp_location *bl)
2295 {
2296   struct bp_location **locp = NULL, **loc2p;
2297   int null_command_or_parse_error = 0;
2298   int modified = bl->needs_update;
2299   struct bp_location *loc;
2300
2301   /* Clear commands left over from a previous insert.  */
2302   bl->target_info.tcommands.clear ();
2303
2304   if (!target_can_run_breakpoint_commands ())
2305     return;
2306
2307   /* For now, limit to agent-style dprintf breakpoints.  */
2308   if (dprintf_style != dprintf_style_agent)
2309     return;
2310
2311   /* For now, if we have any duplicate location that isn't a dprintf,
2312      don't install the target-side commands, as that would make the
2313      breakpoint not be reported to the core, and we'd lose
2314      control.  */
2315   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2316     {
2317       loc = (*loc2p);
2318       if (is_breakpoint (loc->owner)
2319           && loc->pspace->num == bl->pspace->num
2320           && loc->owner->type != bp_dprintf)
2321         return;
2322     }
2323
2324   /* Do a first pass to check for locations with no assigned
2325      conditions or conditions that fail to parse to a valid agent expression
2326      bytecode.  If any of these happen, then it's no use to send conditions
2327      to the target since this location will always trigger and generate a
2328      response back to GDB.  */
2329   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2330     {
2331       loc = (*loc2p);
2332       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2333         {
2334           if (modified)
2335             {
2336               /* Re-parse the commands since something changed.  In that
2337                  case we already freed the command bytecodes (see
2338                  force_breakpoint_reinsertion).  We just
2339                  need to parse the command to bytecodes again.  */
2340               loc->cmd_bytecode
2341                 = parse_cmd_to_aexpr (bl->address,
2342                                       loc->owner->extra_string);
2343             }
2344
2345           /* If we have a NULL bytecode expression, it means something
2346              went wrong or we have a null command expression.  */
2347           if (!loc->cmd_bytecode)
2348             {
2349               null_command_or_parse_error = 1;
2350               break;
2351             }
2352         }
2353     }
2354
2355   /* If anything failed, then we're not doing target-side commands,
2356      and so clean up.  */
2357   if (null_command_or_parse_error)
2358     {
2359       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2360         {
2361           loc = (*loc2p);
2362           if (is_breakpoint (loc->owner)
2363               && loc->pspace->num == bl->pspace->num)
2364             {
2365               /* Only go as far as the first NULL bytecode is
2366                  located.  */
2367               if (loc->cmd_bytecode == NULL)
2368                 return;
2369
2370               loc->cmd_bytecode.reset ();
2371             }
2372         }
2373     }
2374
2375   /* No NULL commands or failed bytecode generation.  Build a command list
2376      for this location's address.  */
2377   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2378     {
2379       loc = (*loc2p);
2380       if (loc->owner->extra_string
2381           && is_breakpoint (loc->owner)
2382           && loc->pspace->num == bl->pspace->num
2383           && loc->owner->enable_state == bp_enabled
2384           && loc->enabled)
2385         {
2386           /* Add the command to the vector.  This will be used later
2387              to send the commands to the target.  */
2388           bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
2389         }
2390     }
2391
2392   bl->target_info.persist = 0;
2393   /* Maybe flag this location as persistent.  */
2394   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2395     bl->target_info.persist = 1;
2396 }
2397
2398 /* Return the kind of breakpoint on address *ADDR.  Get the kind
2399    of breakpoint according to ADDR except single-step breakpoint.
2400    Get the kind of single-step breakpoint according to the current
2401    registers state.  */
2402
2403 static int
2404 breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
2405 {
2406   if (bl->owner->type == bp_single_step)
2407     {
2408       struct thread_info *thr = find_thread_global_id (bl->owner->thread);
2409       struct regcache *regcache;
2410
2411       regcache = get_thread_regcache (thr);
2412
2413       return gdbarch_breakpoint_kind_from_current_state (bl->gdbarch,
2414                                                          regcache, addr);
2415     }
2416   else
2417     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
2418 }
2419
2420 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2421    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2422    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2423    Returns 0 for success, 1 if the bp_location type is not supported or
2424    -1 for failure.
2425
2426    NOTE drow/2003-09-09: This routine could be broken down to an
2427    object-style method for each breakpoint or catchpoint type.  */
2428 static int
2429 insert_bp_location (struct bp_location *bl,
2430                     struct ui_file *tmp_error_stream,
2431                     int *disabled_breaks,
2432                     int *hw_breakpoint_error,
2433                     int *hw_bp_error_explained_already)
2434 {
2435   gdb_exception bp_excpt = exception_none;
2436
2437   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2438     return 0;
2439
2440   /* Note we don't initialize bl->target_info, as that wipes out
2441      the breakpoint location's shadow_contents if the breakpoint
2442      is still inserted at that location.  This in turn breaks
2443      target_read_memory which depends on these buffers when
2444      a memory read is requested at the breakpoint location:
2445      Once the target_info has been wiped, we fail to see that
2446      we have a breakpoint inserted at that address and thus
2447      read the breakpoint instead of returning the data saved in
2448      the breakpoint location's shadow contents.  */
2449   bl->target_info.reqstd_address = bl->address;
2450   bl->target_info.placed_address_space = bl->pspace->aspace;
2451   bl->target_info.length = bl->length;
2452
2453   /* When working with target-side conditions, we must pass all the conditions
2454      for the same breakpoint address down to the target since GDB will not
2455      insert those locations.  With a list of breakpoint conditions, the target
2456      can decide when to stop and notify GDB.  */
2457
2458   if (is_breakpoint (bl->owner))
2459     {
2460       build_target_condition_list (bl);
2461       build_target_command_list (bl);
2462       /* Reset the modification marker.  */
2463       bl->needs_update = 0;
2464     }
2465
2466   if (bl->loc_type == bp_loc_software_breakpoint
2467       || bl->loc_type == bp_loc_hardware_breakpoint)
2468     {
2469       if (bl->owner->type != bp_hardware_breakpoint)
2470         {
2471           /* If the explicitly specified breakpoint type
2472              is not hardware breakpoint, check the memory map to see
2473              if the breakpoint address is in read only memory or not.
2474
2475              Two important cases are:
2476              - location type is not hardware breakpoint, memory
2477              is readonly.  We change the type of the location to
2478              hardware breakpoint.
2479              - location type is hardware breakpoint, memory is
2480              read-write.  This means we've previously made the
2481              location hardware one, but then the memory map changed,
2482              so we undo.
2483              
2484              When breakpoints are removed, remove_breakpoints will use
2485              location types we've just set here, the only possible
2486              problem is that memory map has changed during running
2487              program, but it's not going to work anyway with current
2488              gdb.  */
2489           struct mem_region *mr 
2490             = lookup_mem_region (bl->target_info.reqstd_address);
2491           
2492           if (mr)
2493             {
2494               if (automatic_hardware_breakpoints)
2495                 {
2496                   enum bp_loc_type new_type;
2497                   
2498                   if (mr->attrib.mode != MEM_RW)
2499                     new_type = bp_loc_hardware_breakpoint;
2500                   else 
2501                     new_type = bp_loc_software_breakpoint;
2502                   
2503                   if (new_type != bl->loc_type)
2504                     {
2505                       static int said = 0;
2506
2507                       bl->loc_type = new_type;
2508                       if (!said)
2509                         {
2510                           fprintf_filtered (gdb_stdout,
2511                                             _("Note: automatically using "
2512                                               "hardware breakpoints for "
2513                                               "read-only addresses.\n"));
2514                           said = 1;
2515                         }
2516                     }
2517                 }
2518               else if (bl->loc_type == bp_loc_software_breakpoint
2519                        && mr->attrib.mode != MEM_RW)
2520                 {
2521                   fprintf_unfiltered (tmp_error_stream,
2522                                       _("Cannot insert breakpoint %d.\n"
2523                                         "Cannot set software breakpoint "
2524                                         "at read-only address %s\n"),
2525                                       bl->owner->number,
2526                                       paddress (bl->gdbarch, bl->address));
2527                   return 1;
2528                 }
2529             }
2530         }
2531         
2532       /* First check to see if we have to handle an overlay.  */
2533       if (overlay_debugging == ovly_off
2534           || bl->section == NULL
2535           || !(section_is_overlay (bl->section)))
2536         {
2537           /* No overlay handling: just set the breakpoint.  */
2538           TRY
2539             {
2540               int val;
2541
2542               val = bl->owner->ops->insert_location (bl);
2543               if (val)
2544                 bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2545             }
2546           CATCH (e, RETURN_MASK_ALL)
2547             {
2548               bp_excpt = e;
2549             }
2550           END_CATCH
2551         }
2552       else
2553         {
2554           /* This breakpoint is in an overlay section.
2555              Shall we set a breakpoint at the LMA?  */
2556           if (!overlay_events_enabled)
2557             {
2558               /* Yes -- overlay event support is not active, 
2559                  so we must try to set a breakpoint at the LMA.
2560                  This will not work for a hardware breakpoint.  */
2561               if (bl->loc_type == bp_loc_hardware_breakpoint)
2562                 warning (_("hardware breakpoint %d not supported in overlay!"),
2563                          bl->owner->number);
2564               else
2565                 {
2566                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2567                                                              bl->section);
2568                   /* Set a software (trap) breakpoint at the LMA.  */
2569                   bl->overlay_target_info = bl->target_info;
2570                   bl->overlay_target_info.reqstd_address = addr;
2571
2572                   /* No overlay handling: just set the breakpoint.  */
2573                   TRY
2574                     {
2575                       int val;
2576
2577                       bl->overlay_target_info.kind
2578                         = breakpoint_kind (bl, &addr);
2579                       bl->overlay_target_info.placed_address = addr;
2580                       val = target_insert_breakpoint (bl->gdbarch,
2581                                                       &bl->overlay_target_info);
2582                       if (val)
2583                         bp_excpt
2584                           = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2585                     }
2586                   CATCH (e, RETURN_MASK_ALL)
2587                     {
2588                       bp_excpt = e;
2589                     }
2590                   END_CATCH
2591
2592                   if (bp_excpt.reason != 0)
2593                     fprintf_unfiltered (tmp_error_stream,
2594                                         "Overlay breakpoint %d "
2595                                         "failed: in ROM?\n",
2596                                         bl->owner->number);
2597                 }
2598             }
2599           /* Shall we set a breakpoint at the VMA? */
2600           if (section_is_mapped (bl->section))
2601             {
2602               /* Yes.  This overlay section is mapped into memory.  */
2603               TRY
2604                 {
2605                   int val;
2606
2607                   val = bl->owner->ops->insert_location (bl);
2608                   if (val)
2609                     bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
2610                 }
2611               CATCH (e, RETURN_MASK_ALL)
2612                 {
2613                   bp_excpt = e;
2614                 }
2615               END_CATCH
2616             }
2617           else
2618             {
2619               /* No.  This breakpoint will not be inserted.  
2620                  No error, but do not mark the bp as 'inserted'.  */
2621               return 0;
2622             }
2623         }
2624
2625       if (bp_excpt.reason != 0)
2626         {
2627           /* Can't set the breakpoint.  */
2628
2629           /* In some cases, we might not be able to insert a
2630              breakpoint in a shared library that has already been
2631              removed, but we have not yet processed the shlib unload
2632              event.  Unfortunately, some targets that implement
2633              breakpoint insertion themselves can't tell why the
2634              breakpoint insertion failed (e.g., the remote target
2635              doesn't define error codes), so we must treat generic
2636              errors as memory errors.  */
2637           if (bp_excpt.reason == RETURN_ERROR
2638               && (bp_excpt.error == GENERIC_ERROR
2639                   || bp_excpt.error == MEMORY_ERROR)
2640               && bl->loc_type == bp_loc_software_breakpoint
2641               && (solib_name_from_address (bl->pspace, bl->address)
2642                   || shared_objfile_contains_address_p (bl->pspace,
2643                                                         bl->address)))
2644             {
2645               /* See also: disable_breakpoints_in_shlibs.  */
2646               bl->shlib_disabled = 1;
2647               gdb::observers::breakpoint_modified.notify (bl->owner);
2648               if (!*disabled_breaks)
2649                 {
2650                   fprintf_unfiltered (tmp_error_stream, 
2651                                       "Cannot insert breakpoint %d.\n", 
2652                                       bl->owner->number);
2653                   fprintf_unfiltered (tmp_error_stream, 
2654                                       "Temporarily disabling shared "
2655                                       "library breakpoints:\n");
2656                 }
2657               *disabled_breaks = 1;
2658               fprintf_unfiltered (tmp_error_stream,
2659                                   "breakpoint #%d\n", bl->owner->number);
2660               return 0;
2661             }
2662           else
2663             {
2664               if (bl->loc_type == bp_loc_hardware_breakpoint)
2665                 {
2666                   *hw_breakpoint_error = 1;
2667                   *hw_bp_error_explained_already = bp_excpt.message != NULL;
2668                   fprintf_unfiltered (tmp_error_stream,
2669                                       "Cannot insert hardware breakpoint %d%s",
2670                                       bl->owner->number,
2671                                       bp_excpt.message ? ":" : ".\n");
2672                   if (bp_excpt.message != NULL)
2673                     fprintf_unfiltered (tmp_error_stream, "%s.\n",
2674                                         bp_excpt.message);
2675                 }
2676               else
2677                 {
2678                   if (bp_excpt.message == NULL)
2679                     {
2680                       std::string message
2681                         = memory_error_message (TARGET_XFER_E_IO,
2682                                                 bl->gdbarch, bl->address);
2683
2684                       fprintf_unfiltered (tmp_error_stream,
2685                                           "Cannot insert breakpoint %d.\n"
2686                                           "%s\n",
2687                                           bl->owner->number, message.c_str ());
2688                     }
2689                   else
2690                     {
2691                       fprintf_unfiltered (tmp_error_stream,
2692                                           "Cannot insert breakpoint %d: %s\n",
2693                                           bl->owner->number,
2694                                           bp_excpt.message);
2695                     }
2696                 }
2697               return 1;
2698
2699             }
2700         }
2701       else
2702         bl->inserted = 1;
2703
2704       return 0;
2705     }
2706
2707   else if (bl->loc_type == bp_loc_hardware_watchpoint
2708            /* NOTE drow/2003-09-08: This state only exists for removing
2709               watchpoints.  It's not clear that it's necessary...  */
2710            && bl->owner->disposition != disp_del_at_next_stop)
2711     {
2712       int val;
2713
2714       gdb_assert (bl->owner->ops != NULL
2715                   && bl->owner->ops->insert_location != NULL);
2716
2717       val = bl->owner->ops->insert_location (bl);
2718
2719       /* If trying to set a read-watchpoint, and it turns out it's not
2720          supported, try emulating one with an access watchpoint.  */
2721       if (val == 1 && bl->watchpoint_type == hw_read)
2722         {
2723           struct bp_location *loc, **loc_temp;
2724
2725           /* But don't try to insert it, if there's already another
2726              hw_access location that would be considered a duplicate
2727              of this one.  */
2728           ALL_BP_LOCATIONS (loc, loc_temp)
2729             if (loc != bl
2730                 && loc->watchpoint_type == hw_access
2731                 && watchpoint_locations_match (bl, loc))
2732               {
2733                 bl->duplicate = 1;
2734                 bl->inserted = 1;
2735                 bl->target_info = loc->target_info;
2736                 bl->watchpoint_type = hw_access;
2737                 val = 0;
2738                 break;
2739               }
2740
2741           if (val == 1)
2742             {
2743               bl->watchpoint_type = hw_access;
2744               val = bl->owner->ops->insert_location (bl);
2745
2746               if (val)
2747                 /* Back to the original value.  */
2748                 bl->watchpoint_type = hw_read;
2749             }
2750         }
2751
2752       bl->inserted = (val == 0);
2753     }
2754
2755   else if (bl->owner->type == bp_catchpoint)
2756     {
2757       int val;
2758
2759       gdb_assert (bl->owner->ops != NULL
2760                   && bl->owner->ops->insert_location != NULL);
2761
2762       val = bl->owner->ops->insert_location (bl);
2763       if (val)
2764         {
2765           bl->owner->enable_state = bp_disabled;
2766
2767           if (val == 1)
2768             warning (_("\
2769 Error inserting catchpoint %d: Your system does not support this type\n\
2770 of catchpoint."), bl->owner->number);
2771           else
2772             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2773         }
2774
2775       bl->inserted = (val == 0);
2776
2777       /* We've already printed an error message if there was a problem
2778          inserting this catchpoint, and we've disabled the catchpoint,
2779          so just return success.  */
2780       return 0;
2781     }
2782
2783   return 0;
2784 }
2785
2786 /* This function is called when program space PSPACE is about to be
2787    deleted.  It takes care of updating breakpoints to not reference
2788    PSPACE anymore.  */
2789
2790 void
2791 breakpoint_program_space_exit (struct program_space *pspace)
2792 {
2793   struct breakpoint *b, *b_temp;
2794   struct bp_location *loc, **loc_temp;
2795
2796   /* Remove any breakpoint that was set through this program space.  */
2797   ALL_BREAKPOINTS_SAFE (b, b_temp)
2798     {
2799       if (b->pspace == pspace)
2800         delete_breakpoint (b);
2801     }
2802
2803   /* Breakpoints set through other program spaces could have locations
2804      bound to PSPACE as well.  Remove those.  */
2805   ALL_BP_LOCATIONS (loc, loc_temp)
2806     {
2807       struct bp_location *tmp;
2808
2809       if (loc->pspace == pspace)
2810         {
2811           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2812           if (loc->owner->loc == loc)
2813             loc->owner->loc = loc->next;
2814           else
2815             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2816               if (tmp->next == loc)
2817                 {
2818                   tmp->next = loc->next;
2819                   break;
2820                 }
2821         }
2822     }
2823
2824   /* Now update the global location list to permanently delete the
2825      removed locations above.  */
2826   update_global_location_list (UGLL_DONT_INSERT);
2827 }
2828
2829 /* Make sure all breakpoints are inserted in inferior.
2830    Throws exception on any error.
2831    A breakpoint that is already inserted won't be inserted
2832    again, so calling this function twice is safe.  */
2833 void
2834 insert_breakpoints (void)
2835 {
2836   struct breakpoint *bpt;
2837
2838   ALL_BREAKPOINTS (bpt)
2839     if (is_hardware_watchpoint (bpt))
2840       {
2841         struct watchpoint *w = (struct watchpoint *) bpt;
2842
2843         update_watchpoint (w, 0 /* don't reparse.  */);
2844       }
2845
2846   /* Updating watchpoints creates new locations, so update the global
2847      location list.  Explicitly tell ugll to insert locations and
2848      ignore breakpoints_always_inserted_mode.  */
2849   update_global_location_list (UGLL_INSERT);
2850 }
2851
2852 /* Invoke CALLBACK for each of bp_location.  */
2853
2854 void
2855 iterate_over_bp_locations (walk_bp_location_callback callback)
2856 {
2857   struct bp_location *loc, **loc_tmp;
2858
2859   ALL_BP_LOCATIONS (loc, loc_tmp)
2860     {
2861       callback (loc, NULL);
2862     }
2863 }
2864
2865 /* This is used when we need to synch breakpoint conditions between GDB and the
2866    target.  It is the case with deleting and disabling of breakpoints when using
2867    always-inserted mode.  */
2868
2869 static void
2870 update_inserted_breakpoint_locations (void)
2871 {
2872   struct bp_location *bl, **blp_tmp;
2873   int error_flag = 0;
2874   int val = 0;
2875   int disabled_breaks = 0;
2876   int hw_breakpoint_error = 0;
2877   int hw_bp_details_reported = 0;
2878
2879   string_file tmp_error_stream;
2880
2881   /* Explicitly mark the warning -- this will only be printed if
2882      there was an error.  */
2883   tmp_error_stream.puts ("Warning:\n");
2884
2885   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2886
2887   ALL_BP_LOCATIONS (bl, blp_tmp)
2888     {
2889       /* We only want to update software breakpoints and hardware
2890          breakpoints.  */
2891       if (!is_breakpoint (bl->owner))
2892         continue;
2893
2894       /* We only want to update locations that are already inserted
2895          and need updating.  This is to avoid unwanted insertion during
2896          deletion of breakpoints.  */
2897       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2898         continue;
2899
2900       switch_to_program_space_and_thread (bl->pspace);
2901
2902       /* For targets that support global breakpoints, there's no need
2903          to select an inferior to insert breakpoint to.  In fact, even
2904          if we aren't attached to any process yet, we should still
2905          insert breakpoints.  */
2906       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2907           && ptid_equal (inferior_ptid, null_ptid))
2908         continue;
2909
2910       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2911                                     &hw_breakpoint_error, &hw_bp_details_reported);
2912       if (val)
2913         error_flag = val;
2914     }
2915
2916   if (error_flag)
2917     {
2918       target_terminal::ours_for_output ();
2919       error_stream (tmp_error_stream);
2920     }
2921 }
2922
2923 /* Used when starting or continuing the program.  */
2924
2925 static void
2926 insert_breakpoint_locations (void)
2927 {
2928   struct breakpoint *bpt;
2929   struct bp_location *bl, **blp_tmp;
2930   int error_flag = 0;
2931   int val = 0;
2932   int disabled_breaks = 0;
2933   int hw_breakpoint_error = 0;
2934   int hw_bp_error_explained_already = 0;
2935
2936   string_file tmp_error_stream;
2937
2938   /* Explicitly mark the warning -- this will only be printed if
2939      there was an error.  */
2940   tmp_error_stream.puts ("Warning:\n");
2941
2942   scoped_restore_current_pspace_and_thread restore_pspace_thread;
2943
2944   ALL_BP_LOCATIONS (bl, blp_tmp)
2945     {
2946       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2947         continue;
2948
2949       /* There is no point inserting thread-specific breakpoints if
2950          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2951          has BL->OWNER always non-NULL.  */
2952       if (bl->owner->thread != -1
2953           && !valid_global_thread_id (bl->owner->thread))
2954         continue;
2955
2956       switch_to_program_space_and_thread (bl->pspace);
2957
2958       /* For targets that support global breakpoints, there's no need
2959          to select an inferior to insert breakpoint to.  In fact, even
2960          if we aren't attached to any process yet, we should still
2961          insert breakpoints.  */
2962       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2963           && ptid_equal (inferior_ptid, null_ptid))
2964         continue;
2965
2966       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
2967                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2968       if (val)
2969         error_flag = val;
2970     }
2971
2972   /* If we failed to insert all locations of a watchpoint, remove
2973      them, as half-inserted watchpoint is of limited use.  */
2974   ALL_BREAKPOINTS (bpt)  
2975     {
2976       int some_failed = 0;
2977       struct bp_location *loc;
2978
2979       if (!is_hardware_watchpoint (bpt))
2980         continue;
2981
2982       if (!breakpoint_enabled (bpt))
2983         continue;
2984
2985       if (bpt->disposition == disp_del_at_next_stop)
2986         continue;
2987       
2988       for (loc = bpt->loc; loc; loc = loc->next)
2989         if (!loc->inserted && should_be_inserted (loc))
2990           {
2991             some_failed = 1;
2992             break;
2993           }
2994       if (some_failed)
2995         {
2996           for (loc = bpt->loc; loc; loc = loc->next)
2997             if (loc->inserted)
2998               remove_breakpoint (loc);
2999
3000           hw_breakpoint_error = 1;
3001           tmp_error_stream.printf ("Could not insert "
3002                                    "hardware watchpoint %d.\n",
3003                                    bpt->number);
3004           error_flag = -1;
3005         }
3006     }
3007
3008   if (error_flag)
3009     {
3010       /* If a hardware breakpoint or watchpoint was inserted, add a
3011          message about possibly exhausted resources.  */
3012       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3013         {
3014           tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
3015 You may have requested too many hardware breakpoints/watchpoints.\n");
3016         }
3017       target_terminal::ours_for_output ();
3018       error_stream (tmp_error_stream);
3019     }
3020 }
3021
3022 /* Used when the program stops.
3023    Returns zero if successful, or non-zero if there was a problem
3024    removing a breakpoint location.  */
3025
3026 int
3027 remove_breakpoints (void)
3028 {
3029   struct bp_location *bl, **blp_tmp;
3030   int val = 0;
3031
3032   ALL_BP_LOCATIONS (bl, blp_tmp)
3033   {
3034     if (bl->inserted && !is_tracepoint (bl->owner))
3035       val |= remove_breakpoint (bl);
3036   }
3037   return val;
3038 }
3039
3040 /* When a thread exits, remove breakpoints that are related to
3041    that thread.  */
3042
3043 static void
3044 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3045 {
3046   struct breakpoint *b, *b_tmp;
3047
3048   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3049     {
3050       if (b->thread == tp->global_num && user_breakpoint_p (b))
3051         {
3052           b->disposition = disp_del_at_next_stop;
3053
3054           printf_filtered (_("\
3055 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3056                            b->number, print_thread_id (tp));
3057
3058           /* Hide it from the user.  */
3059           b->number = 0;
3060        }
3061     }
3062 }
3063
3064 /* Remove breakpoints of inferior INF.  */
3065
3066 int
3067 remove_breakpoints_inf (inferior *inf)
3068 {
3069   struct bp_location *bl, **blp_tmp;
3070   int val;
3071
3072   ALL_BP_LOCATIONS (bl, blp_tmp)
3073   {
3074     if (bl->pspace != inf->pspace)
3075       continue;
3076
3077     if (bl->inserted && !bl->target_info.persist)
3078       {
3079         val = remove_breakpoint (bl);
3080         if (val != 0)
3081           return val;
3082       }
3083   }
3084   return 0;
3085 }
3086
3087 static int internal_breakpoint_number = -1;
3088
3089 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3090    If INTERNAL is non-zero, the breakpoint number will be populated
3091    from internal_breakpoint_number and that variable decremented.
3092    Otherwise the breakpoint number will be populated from
3093    breakpoint_count and that value incremented.  Internal breakpoints
3094    do not set the internal var bpnum.  */
3095 static void
3096 set_breakpoint_number (int internal, struct breakpoint *b)
3097 {
3098   if (internal)
3099     b->number = internal_breakpoint_number--;
3100   else
3101     {
3102       set_breakpoint_count (breakpoint_count + 1);
3103       b->number = breakpoint_count;
3104     }
3105 }
3106
3107 static struct breakpoint *
3108 create_internal_breakpoint (struct gdbarch *gdbarch,
3109                             CORE_ADDR address, enum bptype type,
3110                             const struct breakpoint_ops *ops)
3111 {
3112   symtab_and_line sal;
3113   sal.pc = address;
3114   sal.section = find_pc_overlay (sal.pc);
3115   sal.pspace = current_program_space;
3116
3117   breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
3118   b->number = internal_breakpoint_number--;
3119   b->disposition = disp_donttouch;
3120
3121   return b;
3122 }
3123
3124 static const char *const longjmp_names[] =
3125   {
3126     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3127   };
3128 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3129
3130 /* Per-objfile data private to breakpoint.c.  */
3131 struct breakpoint_objfile_data
3132 {
3133   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3134   struct bound_minimal_symbol overlay_msym {};
3135
3136   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3137   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
3138
3139   /* True if we have looked for longjmp probes.  */
3140   int longjmp_searched = 0;
3141
3142   /* SystemTap probe points for longjmp (if any).  These are non-owning
3143      references.  */
3144   std::vector<probe *> longjmp_probes;
3145
3146   /* Minimal symbol for "std::terminate()" (if any).  */
3147   struct bound_minimal_symbol terminate_msym {};
3148
3149   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3150   struct bound_minimal_symbol exception_msym {};
3151
3152   /* True if we have looked for exception probes.  */
3153   int exception_searched = 0;
3154
3155   /* SystemTap probe points for unwinding (if any).  These are non-owning
3156      references.  */
3157   std::vector<probe *> exception_probes;
3158 };
3159
3160 static const struct objfile_data *breakpoint_objfile_key;
3161
3162 /* Minimal symbol not found sentinel.  */
3163 static struct minimal_symbol msym_not_found;
3164
3165 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3166
3167 static int
3168 msym_not_found_p (const struct minimal_symbol *msym)
3169 {
3170   return msym == &msym_not_found;
3171 }
3172
3173 /* Return per-objfile data needed by breakpoint.c.
3174    Allocate the data if necessary.  */
3175
3176 static struct breakpoint_objfile_data *
3177 get_breakpoint_objfile_data (struct objfile *objfile)
3178 {
3179   struct breakpoint_objfile_data *bp_objfile_data;
3180
3181   bp_objfile_data = ((struct breakpoint_objfile_data *)
3182                      objfile_data (objfile, breakpoint_objfile_key));
3183   if (bp_objfile_data == NULL)
3184     {
3185       bp_objfile_data = new breakpoint_objfile_data ();
3186       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3187     }
3188   return bp_objfile_data;
3189 }
3190
3191 static void
3192 free_breakpoint_objfile_data (struct objfile *obj, void *data)
3193 {
3194   struct breakpoint_objfile_data *bp_objfile_data
3195     = (struct breakpoint_objfile_data *) data;
3196
3197   delete bp_objfile_data;
3198 }
3199
3200 static void
3201 create_overlay_event_breakpoint (void)
3202 {
3203   struct objfile *objfile;
3204   const char *const func_name = "_ovly_debug_event";
3205
3206   ALL_OBJFILES (objfile)
3207     {
3208       struct breakpoint *b;
3209       struct breakpoint_objfile_data *bp_objfile_data;
3210       CORE_ADDR addr;
3211       struct explicit_location explicit_loc;
3212
3213       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3214
3215       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3216         continue;
3217
3218       if (bp_objfile_data->overlay_msym.minsym == NULL)
3219         {
3220           struct bound_minimal_symbol m;
3221
3222           m = lookup_minimal_symbol_text (func_name, objfile);
3223           if (m.minsym == NULL)
3224             {
3225               /* Avoid future lookups in this objfile.  */
3226               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3227               continue;
3228             }
3229           bp_objfile_data->overlay_msym = m;
3230         }
3231
3232       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3233       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3234                                       bp_overlay_event,
3235                                       &internal_breakpoint_ops);
3236       initialize_explicit_location (&explicit_loc);
3237       explicit_loc.function_name = ASTRDUP (func_name);
3238       b->location = new_explicit_location (&explicit_loc);
3239
3240       if (overlay_debugging == ovly_auto)
3241         {
3242           b->enable_state = bp_enabled;
3243           overlay_events_enabled = 1;
3244         }
3245       else
3246        {
3247          b->enable_state = bp_disabled;
3248          overlay_events_enabled = 0;
3249        }
3250     }
3251 }
3252
3253 static void
3254 create_longjmp_master_breakpoint (void)
3255 {
3256   struct program_space *pspace;
3257
3258   scoped_restore_current_program_space restore_pspace;
3259
3260   ALL_PSPACES (pspace)
3261   {
3262     struct objfile *objfile;
3263
3264     set_current_program_space (pspace);
3265
3266     ALL_OBJFILES (objfile)
3267     {
3268       int i;
3269       struct gdbarch *gdbarch;
3270       struct breakpoint_objfile_data *bp_objfile_data;
3271
3272       gdbarch = get_objfile_arch (objfile);
3273
3274       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3275
3276       if (!bp_objfile_data->longjmp_searched)
3277         {
3278           std::vector<probe *> ret
3279             = find_probes_in_objfile (objfile, "libc", "longjmp");
3280
3281           if (!ret.empty ())
3282             {
3283               /* We are only interested in checking one element.  */
3284               probe *p = ret[0];
3285
3286               if (!p->can_evaluate_arguments ())
3287                 {
3288                   /* We cannot use the probe interface here, because it does
3289                      not know how to evaluate arguments.  */
3290                   ret.clear ();
3291                 }
3292             }
3293           bp_objfile_data->longjmp_probes = ret;
3294           bp_objfile_data->longjmp_searched = 1;
3295         }
3296
3297       if (!bp_objfile_data->longjmp_probes.empty ())
3298         {
3299           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3300
3301           for (probe *p : bp_objfile_data->longjmp_probes)
3302             {
3303               struct breakpoint *b;
3304
3305               b = create_internal_breakpoint (gdbarch,
3306                                               p->get_relocated_address (objfile),
3307                                               bp_longjmp_master,
3308                                               &internal_breakpoint_ops);
3309               b->location = new_probe_location ("-probe-stap libc:longjmp");
3310               b->enable_state = bp_disabled;
3311             }
3312
3313           continue;
3314         }
3315
3316       if (!gdbarch_get_longjmp_target_p (gdbarch))
3317         continue;
3318
3319       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3320         {
3321           struct breakpoint *b;
3322           const char *func_name;
3323           CORE_ADDR addr;
3324           struct explicit_location explicit_loc;
3325
3326           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3327             continue;
3328
3329           func_name = longjmp_names[i];
3330           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3331             {
3332               struct bound_minimal_symbol m;
3333
3334               m = lookup_minimal_symbol_text (func_name, objfile);
3335               if (m.minsym == NULL)
3336                 {
3337                   /* Prevent future lookups in this objfile.  */
3338                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3339                   continue;
3340                 }
3341               bp_objfile_data->longjmp_msym[i] = m;
3342             }
3343
3344           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3345           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3346                                           &internal_breakpoint_ops);
3347           initialize_explicit_location (&explicit_loc);
3348           explicit_loc.function_name = ASTRDUP (func_name);
3349           b->location = new_explicit_location (&explicit_loc);
3350           b->enable_state = bp_disabled;
3351         }
3352     }
3353   }
3354 }
3355
3356 /* Create a master std::terminate breakpoint.  */
3357 static void
3358 create_std_terminate_master_breakpoint (void)
3359 {
3360   struct program_space *pspace;
3361   const char *const func_name = "std::terminate()";
3362
3363   scoped_restore_current_program_space restore_pspace;
3364
3365   ALL_PSPACES (pspace)
3366   {
3367     struct objfile *objfile;
3368     CORE_ADDR addr;
3369
3370     set_current_program_space (pspace);
3371
3372     ALL_OBJFILES (objfile)
3373     {
3374       struct breakpoint *b;
3375       struct breakpoint_objfile_data *bp_objfile_data;
3376       struct explicit_location explicit_loc;
3377
3378       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3379
3380       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3381         continue;
3382
3383       if (bp_objfile_data->terminate_msym.minsym == NULL)
3384         {
3385           struct bound_minimal_symbol m;
3386
3387           m = lookup_minimal_symbol (func_name, NULL, objfile);
3388           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3389                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3390             {
3391               /* Prevent future lookups in this objfile.  */
3392               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3393               continue;
3394             }
3395           bp_objfile_data->terminate_msym = m;
3396         }
3397
3398       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3399       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3400                                       bp_std_terminate_master,
3401                                       &internal_breakpoint_ops);
3402       initialize_explicit_location (&explicit_loc);
3403       explicit_loc.function_name = ASTRDUP (func_name);
3404       b->location = new_explicit_location (&explicit_loc);
3405       b->enable_state = bp_disabled;
3406     }
3407   }
3408 }
3409
3410 /* Install a master breakpoint on the unwinder's debug hook.  */
3411
3412 static void
3413 create_exception_master_breakpoint (void)
3414 {
3415   struct objfile *objfile;
3416   const char *const func_name = "_Unwind_DebugHook";
3417
3418   ALL_OBJFILES (objfile)
3419     {
3420       struct breakpoint *b;
3421       struct gdbarch *gdbarch;
3422       struct breakpoint_objfile_data *bp_objfile_data;
3423       CORE_ADDR addr;
3424       struct explicit_location explicit_loc;
3425
3426       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3427
3428       /* We prefer the SystemTap probe point if it exists.  */
3429       if (!bp_objfile_data->exception_searched)
3430         {
3431           std::vector<probe *> ret
3432             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3433
3434           if (!ret.empty ())
3435             {
3436               /* We are only interested in checking one element.  */
3437               probe *p = ret[0];
3438
3439               if (!p->can_evaluate_arguments ())
3440                 {
3441                   /* We cannot use the probe interface here, because it does
3442                      not know how to evaluate arguments.  */
3443                   ret.clear ();
3444                 }
3445             }
3446           bp_objfile_data->exception_probes = ret;
3447           bp_objfile_data->exception_searched = 1;
3448         }
3449
3450       if (!bp_objfile_data->exception_probes.empty ())
3451         {
3452           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3453
3454           for (probe *p : bp_objfile_data->exception_probes)
3455             {
3456               struct breakpoint *b;
3457
3458               b = create_internal_breakpoint (gdbarch,
3459                                               p->get_relocated_address (objfile),
3460                                               bp_exception_master,
3461                                               &internal_breakpoint_ops);
3462               b->location = new_probe_location ("-probe-stap libgcc:unwind");
3463               b->enable_state = bp_disabled;
3464             }
3465
3466           continue;
3467         }
3468
3469       /* Otherwise, try the hook function.  */
3470
3471       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3472         continue;
3473
3474       gdbarch = get_objfile_arch (objfile);
3475
3476       if (bp_objfile_data->exception_msym.minsym == NULL)
3477         {
3478           struct bound_minimal_symbol debug_hook;
3479
3480           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3481           if (debug_hook.minsym == NULL)
3482             {
3483               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3484               continue;
3485             }
3486
3487           bp_objfile_data->exception_msym = debug_hook;
3488         }
3489
3490       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3491       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3492                                                  current_top_target ());
3493       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3494                                       &internal_breakpoint_ops);
3495       initialize_explicit_location (&explicit_loc);
3496       explicit_loc.function_name = ASTRDUP (func_name);
3497       b->location = new_explicit_location (&explicit_loc);
3498       b->enable_state = bp_disabled;
3499     }
3500 }
3501
3502 /* Does B have a location spec?  */
3503
3504 static int
3505 breakpoint_event_location_empty_p (const struct breakpoint *b)
3506 {
3507   return b->location != NULL && event_location_empty_p (b->location.get ());
3508 }
3509
3510 void
3511 update_breakpoints_after_exec (void)
3512 {
3513   struct breakpoint *b, *b_tmp;
3514   struct bp_location *bploc, **bplocp_tmp;
3515
3516   /* We're about to delete breakpoints from GDB's lists.  If the
3517      INSERTED flag is true, GDB will try to lift the breakpoints by
3518      writing the breakpoints' "shadow contents" back into memory.  The
3519      "shadow contents" are NOT valid after an exec, so GDB should not
3520      do that.  Instead, the target is responsible from marking
3521      breakpoints out as soon as it detects an exec.  We don't do that
3522      here instead, because there may be other attempts to delete
3523      breakpoints after detecting an exec and before reaching here.  */
3524   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3525     if (bploc->pspace == current_program_space)
3526       gdb_assert (!bploc->inserted);
3527
3528   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3529   {
3530     if (b->pspace != current_program_space)
3531       continue;
3532
3533     /* Solib breakpoints must be explicitly reset after an exec().  */
3534     if (b->type == bp_shlib_event)
3535       {
3536         delete_breakpoint (b);
3537         continue;
3538       }
3539
3540     /* JIT breakpoints must be explicitly reset after an exec().  */
3541     if (b->type == bp_jit_event)
3542       {
3543         delete_breakpoint (b);
3544         continue;
3545       }
3546
3547     /* Thread event breakpoints must be set anew after an exec(),
3548        as must overlay event and longjmp master breakpoints.  */
3549     if (b->type == bp_thread_event || b->type == bp_overlay_event
3550         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3551         || b->type == bp_exception_master)
3552       {
3553         delete_breakpoint (b);
3554         continue;
3555       }
3556
3557     /* Step-resume breakpoints are meaningless after an exec().  */
3558     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3559       {
3560         delete_breakpoint (b);
3561         continue;
3562       }
3563
3564     /* Just like single-step breakpoints.  */
3565     if (b->type == bp_single_step)
3566       {
3567         delete_breakpoint (b);
3568         continue;
3569       }
3570
3571     /* Longjmp and longjmp-resume breakpoints are also meaningless
3572        after an exec.  */
3573     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3574         || b->type == bp_longjmp_call_dummy
3575         || b->type == bp_exception || b->type == bp_exception_resume)
3576       {
3577         delete_breakpoint (b);
3578         continue;
3579       }
3580
3581     if (b->type == bp_catchpoint)
3582       {
3583         /* For now, none of the bp_catchpoint breakpoints need to
3584            do anything at this point.  In the future, if some of
3585            the catchpoints need to something, we will need to add
3586            a new method, and call this method from here.  */
3587         continue;
3588       }
3589
3590     /* bp_finish is a special case.  The only way we ought to be able
3591        to see one of these when an exec() has happened, is if the user
3592        caught a vfork, and then said "finish".  Ordinarily a finish just
3593        carries them to the call-site of the current callee, by setting
3594        a temporary bp there and resuming.  But in this case, the finish
3595        will carry them entirely through the vfork & exec.
3596
3597        We don't want to allow a bp_finish to remain inserted now.  But
3598        we can't safely delete it, 'cause finish_command has a handle to
3599        the bp on a bpstat, and will later want to delete it.  There's a
3600        chance (and I've seen it happen) that if we delete the bp_finish
3601        here, that its storage will get reused by the time finish_command
3602        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3603        We really must allow finish_command to delete a bp_finish.
3604
3605        In the absence of a general solution for the "how do we know
3606        it's safe to delete something others may have handles to?"
3607        problem, what we'll do here is just uninsert the bp_finish, and
3608        let finish_command delete it.
3609
3610        (We know the bp_finish is "doomed" in the sense that it's
3611        momentary, and will be deleted as soon as finish_command sees
3612        the inferior stopped.  So it doesn't matter that the bp's
3613        address is probably bogus in the new a.out, unlike e.g., the
3614        solib breakpoints.)  */
3615
3616     if (b->type == bp_finish)
3617       {
3618         continue;
3619       }
3620
3621     /* Without a symbolic address, we have little hope of the
3622        pre-exec() address meaning the same thing in the post-exec()
3623        a.out.  */
3624     if (breakpoint_event_location_empty_p (b))
3625       {
3626         delete_breakpoint (b);
3627         continue;
3628       }
3629   }
3630 }
3631
3632 int
3633 detach_breakpoints (ptid_t ptid)
3634 {
3635   struct bp_location *bl, **blp_tmp;
3636   int val = 0;
3637   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
3638   struct inferior *inf = current_inferior ();
3639
3640   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3641     error (_("Cannot detach breakpoints of inferior_ptid"));
3642
3643   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3644   inferior_ptid = ptid;
3645   ALL_BP_LOCATIONS (bl, blp_tmp)
3646   {
3647     if (bl->pspace != inf->pspace)
3648       continue;
3649
3650     /* This function must physically remove breakpoints locations
3651        from the specified ptid, without modifying the breakpoint
3652        package's state.  Locations of type bp_loc_other are only
3653        maintained at GDB side.  So, there is no need to remove
3654        these bp_loc_other locations.  Moreover, removing these
3655        would modify the breakpoint package's state.  */
3656     if (bl->loc_type == bp_loc_other)
3657       continue;
3658
3659     if (bl->inserted)
3660       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3661   }
3662
3663   return val;
3664 }
3665
3666 /* Remove the breakpoint location BL from the current address space.
3667    Note that this is used to detach breakpoints from a child fork.
3668    When we get here, the child isn't in the inferior list, and neither
3669    do we have objects to represent its address space --- we should
3670    *not* look at bl->pspace->aspace here.  */
3671
3672 static int
3673 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3674 {
3675   int val;
3676
3677   /* BL is never in moribund_locations by our callers.  */
3678   gdb_assert (bl->owner != NULL);
3679
3680   /* The type of none suggests that owner is actually deleted.
3681      This should not ever happen.  */
3682   gdb_assert (bl->owner->type != bp_none);
3683
3684   if (bl->loc_type == bp_loc_software_breakpoint
3685       || bl->loc_type == bp_loc_hardware_breakpoint)
3686     {
3687       /* "Normal" instruction breakpoint: either the standard
3688          trap-instruction bp (bp_breakpoint), or a
3689          bp_hardware_breakpoint.  */
3690
3691       /* First check to see if we have to handle an overlay.  */
3692       if (overlay_debugging == ovly_off
3693           || bl->section == NULL
3694           || !(section_is_overlay (bl->section)))
3695         {
3696           /* No overlay handling: just remove the breakpoint.  */
3697
3698           /* If we're trying to uninsert a memory breakpoint that we
3699              know is set in a dynamic object that is marked
3700              shlib_disabled, then either the dynamic object was
3701              removed with "remove-symbol-file" or with
3702              "nosharedlibrary".  In the former case, we don't know
3703              whether another dynamic object might have loaded over the
3704              breakpoint's address -- the user might well let us know
3705              about it next with add-symbol-file (the whole point of
3706              add-symbol-file is letting the user manually maintain a
3707              list of dynamically loaded objects).  If we have the
3708              breakpoint's shadow memory, that is, this is a software
3709              breakpoint managed by GDB, check whether the breakpoint
3710              is still inserted in memory, to avoid overwriting wrong
3711              code with stale saved shadow contents.  Note that HW
3712              breakpoints don't have shadow memory, as they're
3713              implemented using a mechanism that is not dependent on
3714              being able to modify the target's memory, and as such
3715              they should always be removed.  */
3716           if (bl->shlib_disabled
3717               && bl->target_info.shadow_len != 0
3718               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3719             val = 0;
3720           else
3721             val = bl->owner->ops->remove_location (bl, reason);
3722         }
3723       else
3724         {
3725           /* This breakpoint is in an overlay section.
3726              Did we set a breakpoint at the LMA?  */
3727           if (!overlay_events_enabled)
3728               {
3729                 /* Yes -- overlay event support is not active, so we
3730                    should have set a breakpoint at the LMA.  Remove it.  
3731                 */
3732                 /* Ignore any failures: if the LMA is in ROM, we will
3733                    have already warned when we failed to insert it.  */
3734                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3735                   target_remove_hw_breakpoint (bl->gdbarch,
3736                                                &bl->overlay_target_info);
3737                 else
3738                   target_remove_breakpoint (bl->gdbarch,
3739                                             &bl->overlay_target_info,
3740                                             reason);
3741               }
3742           /* Did we set a breakpoint at the VMA? 
3743              If so, we will have marked the breakpoint 'inserted'.  */
3744           if (bl->inserted)
3745             {
3746               /* Yes -- remove it.  Previously we did not bother to
3747                  remove the breakpoint if the section had been
3748                  unmapped, but let's not rely on that being safe.  We
3749                  don't know what the overlay manager might do.  */
3750
3751               /* However, we should remove *software* breakpoints only
3752                  if the section is still mapped, or else we overwrite
3753                  wrong code with the saved shadow contents.  */
3754               if (bl->loc_type == bp_loc_hardware_breakpoint
3755                   || section_is_mapped (bl->section))
3756                 val = bl->owner->ops->remove_location (bl, reason);
3757               else
3758                 val = 0;
3759             }
3760           else
3761             {
3762               /* No -- not inserted, so no need to remove.  No error.  */
3763               val = 0;
3764             }
3765         }
3766
3767       /* In some cases, we might not be able to remove a breakpoint in
3768          a shared library that has already been removed, but we have
3769          not yet processed the shlib unload event.  Similarly for an
3770          unloaded add-symbol-file object - the user might not yet have
3771          had the chance to remove-symbol-file it.  shlib_disabled will
3772          be set if the library/object has already been removed, but
3773          the breakpoint hasn't been uninserted yet, e.g., after
3774          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3775          always-inserted mode.  */
3776       if (val
3777           && (bl->loc_type == bp_loc_software_breakpoint
3778               && (bl->shlib_disabled
3779                   || solib_name_from_address (bl->pspace, bl->address)
3780                   || shared_objfile_contains_address_p (bl->pspace,
3781                                                         bl->address))))
3782         val = 0;
3783
3784       if (val)
3785         return val;
3786       bl->inserted = (reason == DETACH_BREAKPOINT);
3787     }
3788   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3789     {
3790       gdb_assert (bl->owner->ops != NULL
3791                   && bl->owner->ops->remove_location != NULL);
3792
3793       bl->inserted = (reason == DETACH_BREAKPOINT);
3794       bl->owner->ops->remove_location (bl, reason);
3795
3796       /* Failure to remove any of the hardware watchpoints comes here.  */
3797       if (reason == REMOVE_BREAKPOINT && bl->inserted)
3798         warning (_("Could not remove hardware watchpoint %d."),
3799                  bl->owner->number);
3800     }
3801   else if (bl->owner->type == bp_catchpoint
3802            && breakpoint_enabled (bl->owner)
3803            && !bl->duplicate)
3804     {
3805       gdb_assert (bl->owner->ops != NULL
3806                   && bl->owner->ops->remove_location != NULL);
3807
3808       val = bl->owner->ops->remove_location (bl, reason);
3809       if (val)
3810         return val;
3811
3812       bl->inserted = (reason == DETACH_BREAKPOINT);
3813     }
3814
3815   return 0;
3816 }
3817
3818 static int
3819 remove_breakpoint (struct bp_location *bl)
3820 {
3821   /* BL is never in moribund_locations by our callers.  */
3822   gdb_assert (bl->owner != NULL);
3823
3824   /* The type of none suggests that owner is actually deleted.
3825      This should not ever happen.  */
3826   gdb_assert (bl->owner->type != bp_none);
3827
3828   scoped_restore_current_pspace_and_thread restore_pspace_thread;
3829
3830   switch_to_program_space_and_thread (bl->pspace);
3831
3832   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
3833 }
3834
3835 /* Clear the "inserted" flag in all breakpoints.  */
3836
3837 void
3838 mark_breakpoints_out (void)
3839 {
3840   struct bp_location *bl, **blp_tmp;
3841
3842   ALL_BP_LOCATIONS (bl, blp_tmp)
3843     if (bl->pspace == current_program_space)
3844       bl->inserted = 0;
3845 }
3846
3847 /* Clear the "inserted" flag in all breakpoints and delete any
3848    breakpoints which should go away between runs of the program.
3849
3850    Plus other such housekeeping that has to be done for breakpoints
3851    between runs.
3852
3853    Note: this function gets called at the end of a run (by
3854    generic_mourn_inferior) and when a run begins (by
3855    init_wait_for_inferior).  */
3856
3857
3858
3859 void
3860 breakpoint_init_inferior (enum inf_context context)
3861 {
3862   struct breakpoint *b, *b_tmp;
3863   struct bp_location *bl;
3864   int ix;
3865   struct program_space *pspace = current_program_space;
3866
3867   /* If breakpoint locations are shared across processes, then there's
3868      nothing to do.  */
3869   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3870     return;
3871
3872   mark_breakpoints_out ();
3873
3874   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3875   {
3876     if (b->loc && b->loc->pspace != pspace)
3877       continue;
3878
3879     switch (b->type)
3880       {
3881       case bp_call_dummy:
3882       case bp_longjmp_call_dummy:
3883
3884         /* If the call dummy breakpoint is at the entry point it will
3885            cause problems when the inferior is rerun, so we better get
3886            rid of it.  */
3887
3888       case bp_watchpoint_scope:
3889
3890         /* Also get rid of scope breakpoints.  */
3891
3892       case bp_shlib_event:
3893
3894         /* Also remove solib event breakpoints.  Their addresses may
3895            have changed since the last time we ran the program.
3896            Actually we may now be debugging against different target;
3897            and so the solib backend that installed this breakpoint may
3898            not be used in by the target.  E.g.,
3899
3900            (gdb) file prog-linux
3901            (gdb) run               # native linux target
3902            ...
3903            (gdb) kill
3904            (gdb) file prog-win.exe
3905            (gdb) tar rem :9999     # remote Windows gdbserver.
3906         */
3907
3908       case bp_step_resume:
3909
3910         /* Also remove step-resume breakpoints.  */
3911
3912       case bp_single_step:
3913
3914         /* Also remove single-step breakpoints.  */
3915
3916         delete_breakpoint (b);
3917         break;
3918
3919       case bp_watchpoint:
3920       case bp_hardware_watchpoint:
3921       case bp_read_watchpoint:
3922       case bp_access_watchpoint:
3923         {
3924           struct watchpoint *w = (struct watchpoint *) b;
3925
3926           /* Likewise for watchpoints on local expressions.  */
3927           if (w->exp_valid_block != NULL)
3928             delete_breakpoint (b);
3929           else
3930             {
3931               /* Get rid of existing locations, which are no longer
3932                  valid.  New ones will be created in
3933                  update_watchpoint, when the inferior is restarted.
3934                  The next update_global_location_list call will
3935                  garbage collect them.  */
3936               b->loc = NULL;
3937
3938               if (context == inf_starting)
3939                 {
3940                   /* Reset val field to force reread of starting value in
3941                      insert_breakpoints.  */
3942                   w->val.reset (nullptr);
3943                   w->val_valid = 0;
3944                 }
3945             }
3946         }
3947         break;
3948       default:
3949         break;
3950       }
3951   }
3952
3953   /* Get rid of the moribund locations.  */
3954   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3955     decref_bp_location (&bl);
3956   VEC_free (bp_location_p, moribund_locations);
3957 }
3958
3959 /* These functions concern about actual breakpoints inserted in the
3960    target --- to e.g. check if we need to do decr_pc adjustment or if
3961    we need to hop over the bkpt --- so we check for address space
3962    match, not program space.  */
3963
3964 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3965    exists at PC.  It returns ordinary_breakpoint_here if it's an
3966    ordinary breakpoint, or permanent_breakpoint_here if it's a
3967    permanent breakpoint.
3968    - When continuing from a location with an ordinary breakpoint, we
3969      actually single step once before calling insert_breakpoints.
3970    - When continuing from a location with a permanent breakpoint, we
3971      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3972      the target, to advance the PC past the breakpoint.  */
3973
3974 enum breakpoint_here
3975 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
3976 {
3977   struct bp_location *bl, **blp_tmp;
3978   int any_breakpoint_here = 0;
3979
3980   ALL_BP_LOCATIONS (bl, blp_tmp)
3981     {
3982       if (bl->loc_type != bp_loc_software_breakpoint
3983           && bl->loc_type != bp_loc_hardware_breakpoint)
3984         continue;
3985
3986       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3987       if ((breakpoint_enabled (bl->owner)
3988            || bl->permanent)
3989           && breakpoint_location_address_match (bl, aspace, pc))
3990         {
3991           if (overlay_debugging 
3992               && section_is_overlay (bl->section)
3993               && !section_is_mapped (bl->section))
3994             continue;           /* unmapped overlay -- can't be a match */
3995           else if (bl->permanent)
3996             return permanent_breakpoint_here;
3997           else
3998             any_breakpoint_here = 1;
3999         }
4000     }
4001
4002   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4003 }
4004
4005 /* See breakpoint.h.  */
4006
4007 int
4008 breakpoint_in_range_p (const address_space *aspace,
4009                        CORE_ADDR addr, ULONGEST len)
4010 {
4011   struct bp_location *bl, **blp_tmp;
4012
4013   ALL_BP_LOCATIONS (bl, blp_tmp)
4014     {
4015       if (bl->loc_type != bp_loc_software_breakpoint
4016           && bl->loc_type != bp_loc_hardware_breakpoint)
4017         continue;
4018
4019       if ((breakpoint_enabled (bl->owner)
4020            || bl->permanent)
4021           && breakpoint_location_address_range_overlap (bl, aspace,
4022                                                         addr, len))
4023         {
4024           if (overlay_debugging
4025               && section_is_overlay (bl->section)
4026               && !section_is_mapped (bl->section))
4027             {
4028               /* Unmapped overlay -- can't be a match.  */
4029               continue;
4030             }
4031
4032           return 1;
4033         }
4034     }
4035
4036   return 0;
4037 }
4038
4039 /* Return true if there's a moribund breakpoint at PC.  */
4040
4041 int
4042 moribund_breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
4043 {
4044   struct bp_location *loc;
4045   int ix;
4046
4047   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4048     if (breakpoint_location_address_match (loc, aspace, pc))
4049       return 1;
4050
4051   return 0;
4052 }
4053
4054 /* Returns non-zero iff BL is inserted at PC, in address space
4055    ASPACE.  */
4056
4057 static int
4058 bp_location_inserted_here_p (struct bp_location *bl,
4059                              const address_space *aspace, CORE_ADDR pc)
4060 {
4061   if (bl->inserted
4062       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4063                                    aspace, pc))
4064     {
4065       if (overlay_debugging
4066           && section_is_overlay (bl->section)
4067           && !section_is_mapped (bl->section))
4068         return 0;               /* unmapped overlay -- can't be a match */
4069       else
4070         return 1;
4071     }
4072   return 0;
4073 }
4074
4075 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4076
4077 int
4078 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
4079 {
4080   struct bp_location **blp, **blp_tmp = NULL;
4081
4082   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4083     {
4084       struct bp_location *bl = *blp;
4085
4086       if (bl->loc_type != bp_loc_software_breakpoint
4087           && bl->loc_type != bp_loc_hardware_breakpoint)
4088         continue;
4089
4090       if (bp_location_inserted_here_p (bl, aspace, pc))
4091         return 1;
4092     }
4093   return 0;
4094 }
4095
4096 /* This function returns non-zero iff there is a software breakpoint
4097    inserted at PC.  */
4098
4099 int
4100 software_breakpoint_inserted_here_p (const address_space *aspace,
4101                                      CORE_ADDR pc)
4102 {
4103   struct bp_location **blp, **blp_tmp = NULL;
4104
4105   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4106     {
4107       struct bp_location *bl = *blp;
4108
4109       if (bl->loc_type != bp_loc_software_breakpoint)
4110         continue;
4111
4112       if (bp_location_inserted_here_p (bl, aspace, pc))
4113         return 1;
4114     }
4115
4116   return 0;
4117 }
4118
4119 /* See breakpoint.h.  */
4120
4121 int
4122 hardware_breakpoint_inserted_here_p (const address_space *aspace,
4123                                      CORE_ADDR pc)
4124 {
4125   struct bp_location **blp, **blp_tmp = NULL;
4126
4127   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4128     {
4129       struct bp_location *bl = *blp;
4130
4131       if (bl->loc_type != bp_loc_hardware_breakpoint)
4132         continue;
4133
4134       if (bp_location_inserted_here_p (bl, aspace, pc))
4135         return 1;
4136     }
4137
4138   return 0;
4139 }
4140
4141 int
4142 hardware_watchpoint_inserted_in_range (const address_space *aspace,
4143                                        CORE_ADDR addr, ULONGEST len)
4144 {
4145   struct breakpoint *bpt;
4146
4147   ALL_BREAKPOINTS (bpt)
4148     {
4149       struct bp_location *loc;
4150
4151       if (bpt->type != bp_hardware_watchpoint
4152           && bpt->type != bp_access_watchpoint)
4153         continue;
4154
4155       if (!breakpoint_enabled (bpt))
4156         continue;
4157
4158       for (loc = bpt->loc; loc; loc = loc->next)
4159         if (loc->pspace->aspace == aspace && loc->inserted)
4160           {
4161             CORE_ADDR l, h;
4162
4163             /* Check for intersection.  */
4164             l = std::max<CORE_ADDR> (loc->address, addr);
4165             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4166             if (l < h)
4167               return 1;
4168           }
4169     }
4170   return 0;
4171 }
4172 \f
4173
4174 /* bpstat stuff.  External routines' interfaces are documented
4175    in breakpoint.h.  */
4176
4177 int
4178 is_catchpoint (struct breakpoint *ep)
4179 {
4180   return (ep->type == bp_catchpoint);
4181 }
4182
4183 /* Frees any storage that is part of a bpstat.  Does not walk the
4184    'next' chain.  */
4185
4186 bpstats::~bpstats ()
4187 {
4188   if (bp_location_at != NULL)
4189     decref_bp_location (&bp_location_at);
4190 }
4191
4192 /* Clear a bpstat so that it says we are not at any breakpoint.
4193    Also free any storage that is part of a bpstat.  */
4194
4195 void
4196 bpstat_clear (bpstat *bsp)
4197 {
4198   bpstat p;
4199   bpstat q;
4200
4201   if (bsp == 0)
4202     return;
4203   p = *bsp;
4204   while (p != NULL)
4205     {
4206       q = p->next;
4207       delete p;
4208       p = q;
4209     }
4210   *bsp = NULL;
4211 }
4212
4213 bpstats::bpstats (const bpstats &other)
4214   : next (NULL),
4215     bp_location_at (other.bp_location_at),
4216     breakpoint_at (other.breakpoint_at),
4217     commands (other.commands),
4218     print (other.print),
4219     stop (other.stop),
4220     print_it (other.print_it)
4221 {
4222   if (other.old_val != NULL)
4223     old_val = release_value (value_copy (other.old_val.get ()));
4224   incref_bp_location (bp_location_at);
4225 }
4226
4227 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4228    is part of the bpstat is copied as well.  */
4229
4230 bpstat
4231 bpstat_copy (bpstat bs)
4232 {
4233   bpstat p = NULL;
4234   bpstat tmp;
4235   bpstat retval = NULL;
4236
4237   if (bs == NULL)
4238     return bs;
4239
4240   for (; bs != NULL; bs = bs->next)
4241     {
4242       tmp = new bpstats (*bs);
4243
4244       if (p == NULL)
4245         /* This is the first thing in the chain.  */
4246         retval = tmp;
4247       else
4248         p->next = tmp;
4249       p = tmp;
4250     }
4251   p->next = NULL;
4252   return retval;
4253 }
4254
4255 /* Find the bpstat associated with this breakpoint.  */
4256
4257 bpstat
4258 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4259 {
4260   if (bsp == NULL)
4261     return NULL;
4262
4263   for (; bsp != NULL; bsp = bsp->next)
4264     {
4265       if (bsp->breakpoint_at == breakpoint)
4266         return bsp;
4267     }
4268   return NULL;
4269 }
4270
4271 /* See breakpoint.h.  */
4272
4273 int
4274 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4275 {
4276   for (; bsp != NULL; bsp = bsp->next)
4277     {
4278       if (bsp->breakpoint_at == NULL)
4279         {
4280           /* A moribund location can never explain a signal other than
4281              GDB_SIGNAL_TRAP.  */
4282           if (sig == GDB_SIGNAL_TRAP)
4283             return 1;
4284         }
4285       else
4286         {
4287           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4288                                                         sig))
4289             return 1;
4290         }
4291     }
4292
4293   return 0;
4294 }
4295
4296 /* Put in *NUM the breakpoint number of the first breakpoint we are
4297    stopped at.  *BSP upon return is a bpstat which points to the
4298    remaining breakpoints stopped at (but which is not guaranteed to be
4299    good for anything but further calls to bpstat_num).
4300
4301    Return 0 if passed a bpstat which does not indicate any breakpoints.
4302    Return -1 if stopped at a breakpoint that has been deleted since
4303    we set it.
4304    Return 1 otherwise.  */
4305
4306 int
4307 bpstat_num (bpstat *bsp, int *num)
4308 {
4309   struct breakpoint *b;
4310
4311   if ((*bsp) == NULL)
4312     return 0;                   /* No more breakpoint values */
4313
4314   /* We assume we'll never have several bpstats that correspond to a
4315      single breakpoint -- otherwise, this function might return the
4316      same number more than once and this will look ugly.  */
4317   b = (*bsp)->breakpoint_at;
4318   *bsp = (*bsp)->next;
4319   if (b == NULL)
4320     return -1;                  /* breakpoint that's been deleted since */
4321
4322   *num = b->number;             /* We have its number */
4323   return 1;
4324 }
4325
4326 /* See breakpoint.h.  */
4327
4328 void
4329 bpstat_clear_actions (void)
4330 {
4331   bpstat bs;
4332
4333   if (inferior_ptid == null_ptid)
4334     return;
4335
4336   thread_info *tp = inferior_thread ();
4337   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4338     {
4339       bs->commands = NULL;
4340       bs->old_val.reset (nullptr);
4341     }
4342 }
4343
4344 /* Called when a command is about to proceed the inferior.  */
4345
4346 static void
4347 breakpoint_about_to_proceed (void)
4348 {
4349   if (!ptid_equal (inferior_ptid, null_ptid))
4350     {
4351       struct thread_info *tp = inferior_thread ();
4352
4353       /* Allow inferior function calls in breakpoint commands to not
4354          interrupt the command list.  When the call finishes
4355          successfully, the inferior will be standing at the same
4356          breakpoint as if nothing happened.  */
4357       if (tp->control.in_infcall)
4358         return;
4359     }
4360
4361   breakpoint_proceeded = 1;
4362 }
4363
4364 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4365    or its equivalent.  */
4366
4367 static int
4368 command_line_is_silent (struct command_line *cmd)
4369 {
4370   return cmd && (strcmp ("silent", cmd->line) == 0);
4371 }
4372
4373 /* Execute all the commands associated with all the breakpoints at
4374    this location.  Any of these commands could cause the process to
4375    proceed beyond this point, etc.  We look out for such changes by
4376    checking the global "breakpoint_proceeded" after each command.
4377
4378    Returns true if a breakpoint command resumed the inferior.  In that
4379    case, it is the caller's responsibility to recall it again with the
4380    bpstat of the current thread.  */
4381
4382 static int
4383 bpstat_do_actions_1 (bpstat *bsp)
4384 {
4385   bpstat bs;
4386   int again = 0;
4387
4388   /* Avoid endless recursion if a `source' command is contained
4389      in bs->commands.  */
4390   if (executing_breakpoint_commands)
4391     return 0;
4392
4393   scoped_restore save_executing
4394     = make_scoped_restore (&executing_breakpoint_commands, 1);
4395
4396   scoped_restore preventer = prevent_dont_repeat ();
4397
4398   /* This pointer will iterate over the list of bpstat's.  */
4399   bs = *bsp;
4400
4401   breakpoint_proceeded = 0;
4402   for (; bs != NULL; bs = bs->next)
4403     {
4404       struct command_line *cmd = NULL;
4405
4406       /* Take ownership of the BSP's command tree, if it has one.
4407
4408          The command tree could legitimately contain commands like
4409          'step' and 'next', which call clear_proceed_status, which
4410          frees stop_bpstat's command tree.  To make sure this doesn't
4411          free the tree we're executing out from under us, we need to
4412          take ownership of the tree ourselves.  Since a given bpstat's
4413          commands are only executed once, we don't need to copy it; we
4414          can clear the pointer in the bpstat, and make sure we free
4415          the tree when we're done.  */
4416       counted_command_line ccmd = bs->commands;
4417       bs->commands = NULL;
4418       if (ccmd != NULL)
4419         cmd = ccmd.get ();
4420       if (command_line_is_silent (cmd))
4421         {
4422           /* The action has been already done by bpstat_stop_status.  */
4423           cmd = cmd->next;
4424         }
4425
4426       while (cmd != NULL)
4427         {
4428           execute_control_command (cmd);
4429
4430           if (breakpoint_proceeded)
4431             break;
4432           else
4433             cmd = cmd->next;
4434         }
4435
4436       if (breakpoint_proceeded)
4437         {
4438           if (current_ui->async)
4439             /* If we are in async mode, then the target might be still
4440                running, not stopped at any breakpoint, so nothing for
4441                us to do here -- just return to the event loop.  */
4442             ;
4443           else
4444             /* In sync mode, when execute_control_command returns
4445                we're already standing on the next breakpoint.
4446                Breakpoint commands for that stop were not run, since
4447                execute_command does not run breakpoint commands --
4448                only command_line_handler does, but that one is not
4449                involved in execution of breakpoint commands.  So, we
4450                can now execute breakpoint commands.  It should be
4451                noted that making execute_command do bpstat actions is
4452                not an option -- in this case we'll have recursive
4453                invocation of bpstat for each breakpoint with a
4454                command, and can easily blow up GDB stack.  Instead, we
4455                return true, which will trigger the caller to recall us
4456                with the new stop_bpstat.  */
4457             again = 1;
4458           break;
4459         }
4460     }
4461   return again;
4462 }
4463
4464 /* Helper for bpstat_do_actions.  Get the current thread, if there's
4465    one, is alive and has execution.  Return NULL otherwise.  */
4466
4467 static thread_info *
4468 get_bpstat_thread ()
4469 {
4470   if (inferior_ptid == null_ptid || !target_has_execution)
4471     return NULL;
4472
4473   thread_info *tp = inferior_thread ();
4474   if (tp->state == THREAD_EXITED || tp->executing)
4475     return NULL;
4476   return tp;
4477 }
4478
4479 void
4480 bpstat_do_actions (void)
4481 {
4482   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4483   thread_info *tp;
4484
4485   /* Do any commands attached to breakpoint we are stopped at.  */
4486   while ((tp = get_bpstat_thread ()) != NULL)
4487     {
4488       /* Since in sync mode, bpstat_do_actions may resume the
4489          inferior, and only return when it is stopped at the next
4490          breakpoint, we keep doing breakpoint actions until it returns
4491          false to indicate the inferior was not resumed.  */
4492       if (!bpstat_do_actions_1 (&tp->control.stop_bpstat))
4493         break;
4494     }
4495
4496   discard_cleanups (cleanup_if_error);
4497 }
4498
4499 /* Print out the (old or new) value associated with a watchpoint.  */
4500
4501 static void
4502 watchpoint_value_print (struct value *val, struct ui_file *stream)
4503 {
4504   if (val == NULL)
4505     fprintf_unfiltered (stream, _("<unreadable>"));
4506   else
4507     {
4508       struct value_print_options opts;
4509       get_user_print_options (&opts);
4510       value_print (val, stream, &opts);
4511     }
4512 }
4513
4514 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4515    debugging multiple threads.  */
4516
4517 void
4518 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4519 {
4520   if (uiout->is_mi_like_p ())
4521     return;
4522
4523   uiout->text ("\n");
4524
4525   if (show_thread_that_caused_stop ())
4526     {
4527       const char *name;
4528       struct thread_info *thr = inferior_thread ();
4529
4530       uiout->text ("Thread ");
4531       uiout->field_fmt ("thread-id", "%s", print_thread_id (thr));
4532
4533       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4534       if (name != NULL)
4535         {
4536           uiout->text (" \"");
4537           uiout->field_fmt ("name", "%s", name);
4538           uiout->text ("\"");
4539         }
4540
4541       uiout->text (" hit ");
4542     }
4543 }
4544
4545 /* Generic routine for printing messages indicating why we
4546    stopped.  The behavior of this function depends on the value
4547    'print_it' in the bpstat structure.  Under some circumstances we
4548    may decide not to print anything here and delegate the task to
4549    normal_stop().  */
4550
4551 static enum print_stop_action
4552 print_bp_stop_message (bpstat bs)
4553 {
4554   switch (bs->print_it)
4555     {
4556     case print_it_noop:
4557       /* Nothing should be printed for this bpstat entry.  */
4558       return PRINT_UNKNOWN;
4559       break;
4560
4561     case print_it_done:
4562       /* We still want to print the frame, but we already printed the
4563          relevant messages.  */
4564       return PRINT_SRC_AND_LOC;
4565       break;
4566
4567     case print_it_normal:
4568       {
4569         struct breakpoint *b = bs->breakpoint_at;
4570
4571         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4572            which has since been deleted.  */
4573         if (b == NULL)
4574           return PRINT_UNKNOWN;
4575
4576         /* Normal case.  Call the breakpoint's print_it method.  */
4577         return b->ops->print_it (bs);
4578       }
4579       break;
4580
4581     default:
4582       internal_error (__FILE__, __LINE__,
4583                       _("print_bp_stop_message: unrecognized enum value"));
4584       break;
4585     }
4586 }
4587
4588 /* A helper function that prints a shared library stopped event.  */
4589
4590 static void
4591 print_solib_event (int is_catchpoint)
4592 {
4593   bool any_deleted = !current_program_space->deleted_solibs.empty ();
4594   bool any_added = !current_program_space->added_solibs.empty ();
4595
4596   if (!is_catchpoint)
4597     {
4598       if (any_added || any_deleted)
4599         current_uiout->text (_("Stopped due to shared library event:\n"));
4600       else
4601         current_uiout->text (_("Stopped due to shared library event (no "
4602                                "libraries added or removed)\n"));
4603     }
4604
4605   if (current_uiout->is_mi_like_p ())
4606     current_uiout->field_string ("reason",
4607                                  async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4608
4609   if (any_deleted)
4610     {
4611       current_uiout->text (_("  Inferior unloaded "));
4612       ui_out_emit_list list_emitter (current_uiout, "removed");
4613       for (int ix = 0; ix < current_program_space->deleted_solibs.size (); ix++)
4614         {
4615           const std::string &name = current_program_space->deleted_solibs[ix];
4616
4617           if (ix > 0)
4618             current_uiout->text ("    ");
4619           current_uiout->field_string ("library", name);
4620           current_uiout->text ("\n");
4621         }
4622     }
4623
4624   if (any_added)
4625     {
4626       current_uiout->text (_("  Inferior loaded "));
4627       ui_out_emit_list list_emitter (current_uiout, "added");
4628       bool first = true;
4629       for (so_list *iter : current_program_space->added_solibs)
4630         {
4631           if (!first)
4632             current_uiout->text ("    ");
4633           first = false;
4634           current_uiout->field_string ("library", iter->so_name);
4635           current_uiout->text ("\n");
4636         }
4637     }
4638 }
4639
4640 /* Print a message indicating what happened.  This is called from
4641    normal_stop().  The input to this routine is the head of the bpstat
4642    list - a list of the eventpoints that caused this stop.  KIND is
4643    the target_waitkind for the stopping event.  This
4644    routine calls the generic print routine for printing a message
4645    about reasons for stopping.  This will print (for example) the
4646    "Breakpoint n," part of the output.  The return value of this
4647    routine is one of:
4648
4649    PRINT_UNKNOWN: Means we printed nothing.
4650    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4651    code to print the location.  An example is 
4652    "Breakpoint 1, " which should be followed by
4653    the location.
4654    PRINT_SRC_ONLY: Means we printed something, but there is no need
4655    to also print the location part of the message.
4656    An example is the catch/throw messages, which
4657    don't require a location appended to the end.
4658    PRINT_NOTHING: We have done some printing and we don't need any 
4659    further info to be printed.  */
4660
4661 enum print_stop_action
4662 bpstat_print (bpstat bs, int kind)
4663 {
4664   enum print_stop_action val;
4665
4666   /* Maybe another breakpoint in the chain caused us to stop.
4667      (Currently all watchpoints go on the bpstat whether hit or not.
4668      That probably could (should) be changed, provided care is taken
4669      with respect to bpstat_explains_signal).  */
4670   for (; bs; bs = bs->next)
4671     {
4672       val = print_bp_stop_message (bs);
4673       if (val == PRINT_SRC_ONLY 
4674           || val == PRINT_SRC_AND_LOC 
4675           || val == PRINT_NOTHING)
4676         return val;
4677     }
4678
4679   /* If we had hit a shared library event breakpoint,
4680      print_bp_stop_message would print out this message.  If we hit an
4681      OS-level shared library event, do the same thing.  */
4682   if (kind == TARGET_WAITKIND_LOADED)
4683     {
4684       print_solib_event (0);
4685       return PRINT_NOTHING;
4686     }
4687
4688   /* We reached the end of the chain, or we got a null BS to start
4689      with and nothing was printed.  */
4690   return PRINT_UNKNOWN;
4691 }
4692
4693 /* Evaluate the boolean expression EXP and return the result.  */
4694
4695 static bool
4696 breakpoint_cond_eval (expression *exp)
4697 {
4698   struct value *mark = value_mark ();
4699   bool res = value_true (evaluate_expression (exp));
4700
4701   value_free_to_mark (mark);
4702   return res;
4703 }
4704
4705 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4706
4707 bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
4708   : next (NULL),
4709     bp_location_at (bl),
4710     breakpoint_at (bl->owner),
4711     commands (NULL),
4712     print (0),
4713     stop (0),
4714     print_it (print_it_normal)
4715 {
4716   incref_bp_location (bl);
4717   **bs_link_pointer = this;
4718   *bs_link_pointer = &next;
4719 }
4720
4721 bpstats::bpstats ()
4722   : next (NULL),
4723     bp_location_at (NULL),
4724     breakpoint_at (NULL),
4725     commands (NULL),
4726     print (0),
4727     stop (0),
4728     print_it (print_it_normal)
4729 {
4730 }
4731 \f
4732 /* The target has stopped with waitstatus WS.  Check if any hardware
4733    watchpoints have triggered, according to the target.  */
4734
4735 int
4736 watchpoints_triggered (struct target_waitstatus *ws)
4737 {
4738   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
4739   CORE_ADDR addr;
4740   struct breakpoint *b;
4741
4742   if (!stopped_by_watchpoint)
4743     {
4744       /* We were not stopped by a watchpoint.  Mark all watchpoints
4745          as not triggered.  */
4746       ALL_BREAKPOINTS (b)
4747         if (is_hardware_watchpoint (b))
4748           {
4749             struct watchpoint *w = (struct watchpoint *) b;
4750
4751             w->watchpoint_triggered = watch_triggered_no;
4752           }
4753
4754       return 0;
4755     }
4756
4757   if (!target_stopped_data_address (current_top_target (), &addr))
4758     {
4759       /* We were stopped by a watchpoint, but we don't know where.
4760          Mark all watchpoints as unknown.  */
4761       ALL_BREAKPOINTS (b)
4762         if (is_hardware_watchpoint (b))
4763           {
4764             struct watchpoint *w = (struct watchpoint *) b;
4765
4766             w->watchpoint_triggered = watch_triggered_unknown;
4767           }
4768
4769       return 1;
4770     }
4771
4772   /* The target could report the data address.  Mark watchpoints
4773      affected by this data address as triggered, and all others as not
4774      triggered.  */
4775
4776   ALL_BREAKPOINTS (b)
4777     if (is_hardware_watchpoint (b))
4778       {
4779         struct watchpoint *w = (struct watchpoint *) b;
4780         struct bp_location *loc;
4781
4782         w->watchpoint_triggered = watch_triggered_no;
4783         for (loc = b->loc; loc; loc = loc->next)
4784           {
4785             if (is_masked_watchpoint (b))
4786               {
4787                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4788                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4789
4790                 if (newaddr == start)
4791                   {
4792                     w->watchpoint_triggered = watch_triggered_yes;
4793                     break;
4794                   }
4795               }
4796             /* Exact match not required.  Within range is sufficient.  */
4797             else if (target_watchpoint_addr_within_range (current_top_target (),
4798                                                          addr, loc->address,
4799                                                          loc->length))
4800               {
4801                 w->watchpoint_triggered = watch_triggered_yes;
4802                 break;
4803               }
4804           }
4805       }
4806
4807   return 1;
4808 }
4809
4810 /* Possible return values for watchpoint_check.  */
4811 enum wp_check_result
4812   {
4813     /* The watchpoint has been deleted.  */
4814     WP_DELETED = 1,
4815
4816     /* The value has changed.  */
4817     WP_VALUE_CHANGED = 2,
4818
4819     /* The value has not changed.  */
4820     WP_VALUE_NOT_CHANGED = 3,
4821
4822     /* Ignore this watchpoint, no matter if the value changed or not.  */
4823     WP_IGNORE = 4,
4824   };
4825
4826 #define BP_TEMPFLAG 1
4827 #define BP_HARDWAREFLAG 2
4828
4829 /* Evaluate watchpoint condition expression and check if its value
4830    changed.  */
4831
4832 static wp_check_result
4833 watchpoint_check (bpstat bs)
4834 {
4835   struct watchpoint *b;
4836   struct frame_info *fr;
4837   int within_current_scope;
4838
4839   /* BS is built from an existing struct breakpoint.  */
4840   gdb_assert (bs->breakpoint_at != NULL);
4841   b = (struct watchpoint *) bs->breakpoint_at;
4842
4843   /* If this is a local watchpoint, we only want to check if the
4844      watchpoint frame is in scope if the current thread is the thread
4845      that was used to create the watchpoint.  */
4846   if (!watchpoint_in_thread_scope (b))
4847     return WP_IGNORE;
4848
4849   if (b->exp_valid_block == NULL)
4850     within_current_scope = 1;
4851   else
4852     {
4853       struct frame_info *frame = get_current_frame ();
4854       struct gdbarch *frame_arch = get_frame_arch (frame);
4855       CORE_ADDR frame_pc = get_frame_pc (frame);
4856
4857       /* stack_frame_destroyed_p() returns a non-zero value if we're
4858          still in the function but the stack frame has already been
4859          invalidated.  Since we can't rely on the values of local
4860          variables after the stack has been destroyed, we are treating
4861          the watchpoint in that state as `not changed' without further
4862          checking.  Don't mark watchpoints as changed if the current
4863          frame is in an epilogue - even if they are in some other
4864          frame, our view of the stack is likely to be wrong and
4865          frame_find_by_id could error out.  */
4866       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
4867         return WP_IGNORE;
4868
4869       fr = frame_find_by_id (b->watchpoint_frame);
4870       within_current_scope = (fr != NULL);
4871
4872       /* If we've gotten confused in the unwinder, we might have
4873          returned a frame that can't describe this variable.  */
4874       if (within_current_scope)
4875         {
4876           struct symbol *function;
4877
4878           function = get_frame_function (fr);
4879           if (function == NULL
4880               || !contained_in (b->exp_valid_block,
4881                                 SYMBOL_BLOCK_VALUE (function)))
4882             within_current_scope = 0;
4883         }
4884
4885       if (within_current_scope)
4886         /* If we end up stopping, the current frame will get selected
4887            in normal_stop.  So this call to select_frame won't affect
4888            the user.  */
4889         select_frame (fr);
4890     }
4891
4892   if (within_current_scope)
4893     {
4894       /* We use value_{,free_to_}mark because it could be a *long*
4895          time before we return to the command level and call
4896          free_all_values.  We can't call free_all_values because we
4897          might be in the middle of evaluating a function call.  */
4898
4899       int pc = 0;
4900       struct value *mark;
4901       struct value *new_val;
4902
4903       if (is_masked_watchpoint (b))
4904         /* Since we don't know the exact trigger address (from
4905            stopped_data_address), just tell the user we've triggered
4906            a mask watchpoint.  */
4907         return WP_VALUE_CHANGED;
4908
4909       mark = value_mark ();
4910       fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
4911
4912       if (b->val_bitsize != 0)
4913         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
4914
4915       /* We use value_equal_contents instead of value_equal because
4916          the latter coerces an array to a pointer, thus comparing just
4917          the address of the array instead of its contents.  This is
4918          not what we want.  */
4919       if ((b->val != NULL) != (new_val != NULL)
4920           || (b->val != NULL && !value_equal_contents (b->val.get (),
4921                                                        new_val)))
4922         {
4923           bs->old_val = b->val;
4924           b->val = release_value (new_val);
4925           b->val_valid = 1;
4926           if (new_val != NULL)
4927             value_free_to_mark (mark);
4928           return WP_VALUE_CHANGED;
4929         }
4930       else
4931         {
4932           /* Nothing changed.  */
4933           value_free_to_mark (mark);
4934           return WP_VALUE_NOT_CHANGED;
4935         }
4936     }
4937   else
4938     {
4939       /* This seems like the only logical thing to do because
4940          if we temporarily ignored the watchpoint, then when
4941          we reenter the block in which it is valid it contains
4942          garbage (in the case of a function, it may have two
4943          garbage values, one before and one after the prologue).
4944          So we can't even detect the first assignment to it and
4945          watch after that (since the garbage may or may not equal
4946          the first value assigned).  */
4947       /* We print all the stop information in
4948          breakpoint_ops->print_it, but in this case, by the time we
4949          call breakpoint_ops->print_it this bp will be deleted
4950          already.  So we have no choice but print the information
4951          here.  */
4952
4953       SWITCH_THRU_ALL_UIS ()
4954         {
4955           struct ui_out *uiout = current_uiout;
4956
4957           if (uiout->is_mi_like_p ())
4958             uiout->field_string
4959               ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4960           uiout->text ("\nWatchpoint ");
4961           uiout->field_int ("wpnum", b->number);
4962           uiout->text (" deleted because the program has left the block in\n"
4963                        "which its expression is valid.\n");
4964         }
4965
4966       /* Make sure the watchpoint's commands aren't executed.  */
4967       b->commands = NULL;
4968       watchpoint_del_at_next_stop (b);
4969
4970       return WP_DELETED;
4971     }
4972 }
4973
4974 /* Return true if it looks like target has stopped due to hitting
4975    breakpoint location BL.  This function does not check if we should
4976    stop, only if BL explains the stop.  */
4977
4978 static int
4979 bpstat_check_location (const struct bp_location *bl,
4980                        const address_space *aspace, CORE_ADDR bp_addr,
4981                        const struct target_waitstatus *ws)
4982 {
4983   struct breakpoint *b = bl->owner;
4984
4985   /* BL is from an existing breakpoint.  */
4986   gdb_assert (b != NULL);
4987
4988   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4989 }
4990
4991 /* Determine if the watched values have actually changed, and we
4992    should stop.  If not, set BS->stop to 0.  */
4993
4994 static void
4995 bpstat_check_watchpoint (bpstat bs)
4996 {
4997   const struct bp_location *bl;
4998   struct watchpoint *b;
4999
5000   /* BS is built for existing struct breakpoint.  */
5001   bl = bs->bp_location_at;
5002   gdb_assert (bl != NULL);
5003   b = (struct watchpoint *) bs->breakpoint_at;
5004   gdb_assert (b != NULL);
5005
5006     {
5007       int must_check_value = 0;
5008       
5009       if (b->type == bp_watchpoint)
5010         /* For a software watchpoint, we must always check the
5011            watched value.  */
5012         must_check_value = 1;
5013       else if (b->watchpoint_triggered == watch_triggered_yes)
5014         /* We have a hardware watchpoint (read, write, or access)
5015            and the target earlier reported an address watched by
5016            this watchpoint.  */
5017         must_check_value = 1;
5018       else if (b->watchpoint_triggered == watch_triggered_unknown
5019                && b->type == bp_hardware_watchpoint)
5020         /* We were stopped by a hardware watchpoint, but the target could
5021            not report the data address.  We must check the watchpoint's
5022            value.  Access and read watchpoints are out of luck; without
5023            a data address, we can't figure it out.  */
5024         must_check_value = 1;
5025
5026       if (must_check_value)
5027         {
5028           wp_check_result e;
5029
5030           TRY
5031             {
5032               e = watchpoint_check (bs);
5033             }
5034           CATCH (ex, RETURN_MASK_ALL)
5035             {
5036               exception_fprintf (gdb_stderr, ex,
5037                                  "Error evaluating expression "
5038                                  "for watchpoint %d\n",
5039                                  b->number);
5040
5041               SWITCH_THRU_ALL_UIS ()
5042                 {
5043                   printf_filtered (_("Watchpoint %d deleted.\n"),
5044                                    b->number);
5045                 }
5046               watchpoint_del_at_next_stop (b);
5047               e = WP_DELETED;
5048             }
5049           END_CATCH
5050
5051           switch (e)
5052             {
5053             case WP_DELETED:
5054               /* We've already printed what needs to be printed.  */
5055               bs->print_it = print_it_done;
5056               /* Stop.  */
5057               break;
5058             case WP_IGNORE:
5059               bs->print_it = print_it_noop;
5060               bs->stop = 0;
5061               break;
5062             case WP_VALUE_CHANGED:
5063               if (b->type == bp_read_watchpoint)
5064                 {
5065                   /* There are two cases to consider here:
5066
5067                      1. We're watching the triggered memory for reads.
5068                      In that case, trust the target, and always report
5069                      the watchpoint hit to the user.  Even though
5070                      reads don't cause value changes, the value may
5071                      have changed since the last time it was read, and
5072                      since we're not trapping writes, we will not see
5073                      those, and as such we should ignore our notion of
5074                      old value.
5075
5076                      2. We're watching the triggered memory for both
5077                      reads and writes.  There are two ways this may
5078                      happen:
5079
5080                      2.1. This is a target that can't break on data
5081                      reads only, but can break on accesses (reads or
5082                      writes), such as e.g., x86.  We detect this case
5083                      at the time we try to insert read watchpoints.
5084
5085                      2.2. Otherwise, the target supports read
5086                      watchpoints, but, the user set an access or write
5087                      watchpoint watching the same memory as this read
5088                      watchpoint.
5089
5090                      If we're watching memory writes as well as reads,
5091                      ignore watchpoint hits when we find that the
5092                      value hasn't changed, as reads don't cause
5093                      changes.  This still gives false positives when
5094                      the program writes the same value to memory as
5095                      what there was already in memory (we will confuse
5096                      it for a read), but it's much better than
5097                      nothing.  */
5098
5099                   int other_write_watchpoint = 0;
5100
5101                   if (bl->watchpoint_type == hw_read)
5102                     {
5103                       struct breakpoint *other_b;
5104
5105                       ALL_BREAKPOINTS (other_b)
5106                         if (other_b->type == bp_hardware_watchpoint
5107                             || other_b->type == bp_access_watchpoint)
5108                           {
5109                             struct watchpoint *other_w =
5110                               (struct watchpoint *) other_b;
5111
5112                             if (other_w->watchpoint_triggered
5113                                 == watch_triggered_yes)
5114                               {
5115                                 other_write_watchpoint = 1;
5116                                 break;
5117                               }
5118                           }
5119                     }
5120
5121                   if (other_write_watchpoint
5122                       || bl->watchpoint_type == hw_access)
5123                     {
5124                       /* We're watching the same memory for writes,
5125                          and the value changed since the last time we
5126                          updated it, so this trap must be for a write.
5127                          Ignore it.  */
5128                       bs->print_it = print_it_noop;
5129                       bs->stop = 0;
5130                     }
5131                 }
5132               break;
5133             case WP_VALUE_NOT_CHANGED:
5134               if (b->type == bp_hardware_watchpoint
5135                   || b->type == bp_watchpoint)
5136                 {
5137                   /* Don't stop: write watchpoints shouldn't fire if
5138                      the value hasn't changed.  */
5139                   bs->print_it = print_it_noop;
5140                   bs->stop = 0;
5141                 }
5142               /* Stop.  */
5143               break;
5144             default:
5145               /* Can't happen.  */
5146               break;
5147             }
5148         }
5149       else      /* must_check_value == 0 */
5150         {
5151           /* This is a case where some watchpoint(s) triggered, but
5152              not at the address of this watchpoint, or else no
5153              watchpoint triggered after all.  So don't print
5154              anything for this watchpoint.  */
5155           bs->print_it = print_it_noop;
5156           bs->stop = 0;
5157         }
5158     }
5159 }
5160
5161 /* For breakpoints that are currently marked as telling gdb to stop,
5162    check conditions (condition proper, frame, thread and ignore count)
5163    of breakpoint referred to by BS.  If we should not stop for this
5164    breakpoint, set BS->stop to 0.  */
5165
5166 static void
5167 bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
5168 {
5169   const struct bp_location *bl;
5170   struct breakpoint *b;
5171   /* Assume stop.  */
5172   bool condition_result = true;
5173   struct expression *cond;
5174
5175   gdb_assert (bs->stop);
5176
5177   /* BS is built for existing struct breakpoint.  */
5178   bl = bs->bp_location_at;
5179   gdb_assert (bl != NULL);
5180   b = bs->breakpoint_at;
5181   gdb_assert (b != NULL);
5182
5183   /* Even if the target evaluated the condition on its end and notified GDB, we
5184      need to do so again since GDB does not know if we stopped due to a
5185      breakpoint or a single step breakpoint.  */
5186
5187   if (frame_id_p (b->frame_id)
5188       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5189     {
5190       bs->stop = 0;
5191       return;
5192     }
5193
5194   /* If this is a thread/task-specific breakpoint, don't waste cpu
5195      evaluating the condition if this isn't the specified
5196      thread/task.  */
5197   if ((b->thread != -1 && b->thread != thread->global_num)
5198       || (b->task != 0 && b->task != ada_get_task_number (thread)))
5199     {
5200       bs->stop = 0;
5201       return;
5202     }
5203
5204   /* Evaluate extension language breakpoints that have a "stop" method
5205      implemented.  */
5206   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5207
5208   if (is_watchpoint (b))
5209     {
5210       struct watchpoint *w = (struct watchpoint *) b;
5211
5212       cond = w->cond_exp.get ();
5213     }
5214   else
5215     cond = bl->cond.get ();
5216
5217   if (cond && b->disposition != disp_del_at_next_stop)
5218     {
5219       int within_current_scope = 1;
5220       struct watchpoint * w;
5221
5222       /* We use value_mark and value_free_to_mark because it could
5223          be a long time before we return to the command level and
5224          call free_all_values.  We can't call free_all_values
5225          because we might be in the middle of evaluating a
5226          function call.  */
5227       struct value *mark = value_mark ();
5228
5229       if (is_watchpoint (b))
5230         w = (struct watchpoint *) b;
5231       else
5232         w = NULL;
5233
5234       /* Need to select the frame, with all that implies so that
5235          the conditions will have the right context.  Because we
5236          use the frame, we will not see an inlined function's
5237          variables when we arrive at a breakpoint at the start
5238          of the inlined function; the current frame will be the
5239          call site.  */
5240       if (w == NULL || w->cond_exp_valid_block == NULL)
5241         select_frame (get_current_frame ());
5242       else
5243         {
5244           struct frame_info *frame;
5245
5246           /* For local watchpoint expressions, which particular
5247              instance of a local is being watched matters, so we
5248              keep track of the frame to evaluate the expression
5249              in.  To evaluate the condition however, it doesn't
5250              really matter which instantiation of the function
5251              where the condition makes sense triggers the
5252              watchpoint.  This allows an expression like "watch
5253              global if q > 10" set in `func', catch writes to
5254              global on all threads that call `func', or catch
5255              writes on all recursive calls of `func' by a single
5256              thread.  We simply always evaluate the condition in
5257              the innermost frame that's executing where it makes
5258              sense to evaluate the condition.  It seems
5259              intuitive.  */
5260           frame = block_innermost_frame (w->cond_exp_valid_block);
5261           if (frame != NULL)
5262             select_frame (frame);
5263           else
5264             within_current_scope = 0;
5265         }
5266       if (within_current_scope)
5267         {
5268           TRY
5269             {
5270               condition_result = breakpoint_cond_eval (cond);
5271             }
5272           CATCH (ex, RETURN_MASK_ALL)
5273             {
5274               exception_fprintf (gdb_stderr, ex,
5275                                  "Error in testing breakpoint condition:\n");
5276             }
5277           END_CATCH
5278         }
5279       else
5280         {
5281           warning (_("Watchpoint condition cannot be tested "
5282                      "in the current scope"));
5283           /* If we failed to set the right context for this
5284              watchpoint, unconditionally report it.  */
5285         }
5286       /* FIXME-someday, should give breakpoint #.  */
5287       value_free_to_mark (mark);
5288     }
5289
5290   if (cond && !condition_result)
5291     {
5292       bs->stop = 0;
5293     }
5294   else if (b->ignore_count > 0)
5295     {
5296       b->ignore_count--;
5297       bs->stop = 0;
5298       /* Increase the hit count even though we don't stop.  */
5299       ++(b->hit_count);
5300       gdb::observers::breakpoint_modified.notify (b);
5301     }   
5302 }
5303
5304 /* Returns true if we need to track moribund locations of LOC's type
5305    on the current target.  */
5306
5307 static int
5308 need_moribund_for_location_type (struct bp_location *loc)
5309 {
5310   return ((loc->loc_type == bp_loc_software_breakpoint
5311            && !target_supports_stopped_by_sw_breakpoint ())
5312           || (loc->loc_type == bp_loc_hardware_breakpoint
5313               && !target_supports_stopped_by_hw_breakpoint ()));
5314 }
5315
5316 /* See breakpoint.h.  */
5317
5318 bpstat
5319 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
5320                     const struct target_waitstatus *ws)
5321 {
5322   struct breakpoint *b;
5323   bpstat bs_head = NULL, *bs_link = &bs_head;
5324
5325   ALL_BREAKPOINTS (b)
5326     {
5327       if (!breakpoint_enabled (b))
5328         continue;
5329
5330       for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
5331         {
5332           /* For hardware watchpoints, we look only at the first
5333              location.  The watchpoint_check function will work on the
5334              entire expression, not the individual locations.  For
5335              read watchpoints, the watchpoints_triggered function has
5336              checked all locations already.  */
5337           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5338             break;
5339
5340           if (!bl->enabled || bl->shlib_disabled)
5341             continue;
5342
5343           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5344             continue;
5345
5346           /* Come here if it's a watchpoint, or if the break address
5347              matches.  */
5348
5349           bpstat bs = new bpstats (bl, &bs_link);       /* Alloc a bpstat to
5350                                                            explain stop.  */
5351
5352           /* Assume we stop.  Should we find a watchpoint that is not
5353              actually triggered, or if the condition of the breakpoint
5354              evaluates as false, we'll reset 'stop' to 0.  */
5355           bs->stop = 1;
5356           bs->print = 1;
5357
5358           /* If this is a scope breakpoint, mark the associated
5359              watchpoint as triggered so that we will handle the
5360              out-of-scope event.  We'll get to the watchpoint next
5361              iteration.  */
5362           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5363             {
5364               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5365
5366               w->watchpoint_triggered = watch_triggered_yes;
5367             }
5368         }
5369     }
5370
5371   /* Check if a moribund breakpoint explains the stop.  */
5372   if (!target_supports_stopped_by_sw_breakpoint ()
5373       || !target_supports_stopped_by_hw_breakpoint ())
5374     {
5375       bp_location *loc;
5376
5377       for (int ix = 0;
5378            VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5379         {
5380           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5381               && need_moribund_for_location_type (loc))
5382             {
5383               bpstat bs = new bpstats (loc, &bs_link);
5384               /* For hits of moribund locations, we should just proceed.  */
5385               bs->stop = 0;
5386               bs->print = 0;
5387               bs->print_it = print_it_noop;
5388             }
5389         }
5390     }
5391
5392   return bs_head;
5393 }
5394
5395 /* See breakpoint.h.  */
5396
5397 bpstat
5398 bpstat_stop_status (const address_space *aspace,
5399                     CORE_ADDR bp_addr, thread_info *thread,
5400                     const struct target_waitstatus *ws,
5401                     bpstat stop_chain)
5402 {
5403   struct breakpoint *b = NULL;
5404   /* First item of allocated bpstat's.  */
5405   bpstat bs_head = stop_chain;
5406   bpstat bs;
5407   int need_remove_insert;
5408   int removed_any;
5409
5410   /* First, build the bpstat chain with locations that explain a
5411      target stop, while being careful to not set the target running,
5412      as that may invalidate locations (in particular watchpoint
5413      locations are recreated).  Resuming will happen here with
5414      breakpoint conditions or watchpoint expressions that include
5415      inferior function calls.  */
5416   if (bs_head == NULL)
5417     bs_head = build_bpstat_chain (aspace, bp_addr, ws);
5418
5419   /* A bit of special processing for shlib breakpoints.  We need to
5420      process solib loading here, so that the lists of loaded and
5421      unloaded libraries are correct before we handle "catch load" and
5422      "catch unload".  */
5423   for (bs = bs_head; bs != NULL; bs = bs->next)
5424     {
5425       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5426         {
5427           handle_solib_event ();
5428           break;
5429         }
5430     }
5431
5432   /* Now go through the locations that caused the target to stop, and
5433      check whether we're interested in reporting this stop to higher
5434      layers, or whether we should resume the target transparently.  */
5435
5436   removed_any = 0;
5437
5438   for (bs = bs_head; bs != NULL; bs = bs->next)
5439     {
5440       if (!bs->stop)
5441         continue;
5442
5443       b = bs->breakpoint_at;
5444       b->ops->check_status (bs);
5445       if (bs->stop)
5446         {
5447           bpstat_check_breakpoint_conditions (bs, thread);
5448
5449           if (bs->stop)
5450             {
5451               ++(b->hit_count);
5452               gdb::observers::breakpoint_modified.notify (b);
5453
5454               /* We will stop here.  */
5455               if (b->disposition == disp_disable)
5456                 {
5457                   --(b->enable_count);
5458                   if (b->enable_count <= 0)
5459                     b->enable_state = bp_disabled;
5460                   removed_any = 1;
5461                 }
5462               if (b->silent)
5463                 bs->print = 0;
5464               bs->commands = b->commands;
5465               if (command_line_is_silent (bs->commands
5466                                           ? bs->commands.get () : NULL))
5467                 bs->print = 0;
5468
5469               b->ops->after_condition_true (bs);
5470             }
5471
5472         }
5473
5474       /* Print nothing for this entry if we don't stop or don't
5475          print.  */
5476       if (!bs->stop || !bs->print)
5477         bs->print_it = print_it_noop;
5478     }
5479
5480   /* If we aren't stopping, the value of some hardware watchpoint may
5481      not have changed, but the intermediate memory locations we are
5482      watching may have.  Don't bother if we're stopping; this will get
5483      done later.  */
5484   need_remove_insert = 0;
5485   if (! bpstat_causes_stop (bs_head))
5486     for (bs = bs_head; bs != NULL; bs = bs->next)
5487       if (!bs->stop
5488           && bs->breakpoint_at
5489           && is_hardware_watchpoint (bs->breakpoint_at))
5490         {
5491           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5492
5493           update_watchpoint (w, 0 /* don't reparse.  */);
5494           need_remove_insert = 1;
5495         }
5496
5497   if (need_remove_insert)
5498     update_global_location_list (UGLL_MAY_INSERT);
5499   else if (removed_any)
5500     update_global_location_list (UGLL_DONT_INSERT);
5501
5502   return bs_head;
5503 }
5504
5505 static void
5506 handle_jit_event (void)
5507 {
5508   struct frame_info *frame;
5509   struct gdbarch *gdbarch;
5510
5511   if (debug_infrun)
5512     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5513
5514   /* Switch terminal for any messages produced by
5515      breakpoint_re_set.  */
5516   target_terminal::ours_for_output ();
5517
5518   frame = get_current_frame ();
5519   gdbarch = get_frame_arch (frame);
5520
5521   jit_event_handler (gdbarch);
5522
5523   target_terminal::inferior ();
5524 }
5525
5526 /* Prepare WHAT final decision for infrun.  */
5527
5528 /* Decide what infrun needs to do with this bpstat.  */
5529
5530 struct bpstat_what
5531 bpstat_what (bpstat bs_head)
5532 {
5533   struct bpstat_what retval;
5534   bpstat bs;
5535
5536   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5537   retval.call_dummy = STOP_NONE;
5538   retval.is_longjmp = 0;
5539
5540   for (bs = bs_head; bs != NULL; bs = bs->next)
5541     {
5542       /* Extract this BS's action.  After processing each BS, we check
5543          if its action overrides all we've seem so far.  */
5544       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5545       enum bptype bptype;
5546
5547       if (bs->breakpoint_at == NULL)
5548         {
5549           /* I suspect this can happen if it was a momentary
5550              breakpoint which has since been deleted.  */
5551           bptype = bp_none;
5552         }
5553       else
5554         bptype = bs->breakpoint_at->type;
5555
5556       switch (bptype)
5557         {
5558         case bp_none:
5559           break;
5560         case bp_breakpoint:
5561         case bp_hardware_breakpoint:
5562         case bp_single_step:
5563         case bp_until:
5564         case bp_finish:
5565         case bp_shlib_event:
5566           if (bs->stop)
5567             {
5568               if (bs->print)
5569                 this_action = BPSTAT_WHAT_STOP_NOISY;
5570               else
5571                 this_action = BPSTAT_WHAT_STOP_SILENT;
5572             }
5573           else
5574             this_action = BPSTAT_WHAT_SINGLE;
5575           break;
5576         case bp_watchpoint:
5577         case bp_hardware_watchpoint:
5578         case bp_read_watchpoint:
5579         case bp_access_watchpoint:
5580           if (bs->stop)
5581             {
5582               if (bs->print)
5583                 this_action = BPSTAT_WHAT_STOP_NOISY;
5584               else
5585                 this_action = BPSTAT_WHAT_STOP_SILENT;
5586             }
5587           else
5588             {
5589               /* There was a watchpoint, but we're not stopping.
5590                  This requires no further action.  */
5591             }
5592           break;
5593         case bp_longjmp:
5594         case bp_longjmp_call_dummy:
5595         case bp_exception:
5596           if (bs->stop)
5597             {
5598               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5599               retval.is_longjmp = bptype != bp_exception;
5600             }
5601           else
5602             this_action = BPSTAT_WHAT_SINGLE;
5603           break;
5604         case bp_longjmp_resume:
5605         case bp_exception_resume:
5606           if (bs->stop)
5607             {
5608               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5609               retval.is_longjmp = bptype == bp_longjmp_resume;
5610             }
5611           else
5612             this_action = BPSTAT_WHAT_SINGLE;
5613           break;
5614         case bp_step_resume:
5615           if (bs->stop)
5616             this_action = BPSTAT_WHAT_STEP_RESUME;
5617           else
5618             {
5619               /* It is for the wrong frame.  */
5620               this_action = BPSTAT_WHAT_SINGLE;
5621             }
5622           break;
5623         case bp_hp_step_resume:
5624           if (bs->stop)
5625             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5626           else
5627             {
5628               /* It is for the wrong frame.  */
5629               this_action = BPSTAT_WHAT_SINGLE;
5630             }
5631           break;
5632         case bp_watchpoint_scope:
5633         case bp_thread_event:
5634         case bp_overlay_event:
5635         case bp_longjmp_master:
5636         case bp_std_terminate_master:
5637         case bp_exception_master:
5638           this_action = BPSTAT_WHAT_SINGLE;
5639           break;
5640         case bp_catchpoint:
5641           if (bs->stop)
5642             {
5643               if (bs->print)
5644                 this_action = BPSTAT_WHAT_STOP_NOISY;
5645               else
5646                 this_action = BPSTAT_WHAT_STOP_SILENT;
5647             }
5648           else
5649             {
5650               /* There was a catchpoint, but we're not stopping.
5651                  This requires no further action.  */
5652             }
5653           break;
5654         case bp_jit_event:
5655           this_action = BPSTAT_WHAT_SINGLE;
5656           break;
5657         case bp_call_dummy:
5658           /* Make sure the action is stop (silent or noisy),
5659              so infrun.c pops the dummy frame.  */
5660           retval.call_dummy = STOP_STACK_DUMMY;
5661           this_action = BPSTAT_WHAT_STOP_SILENT;
5662           break;
5663         case bp_std_terminate:
5664           /* Make sure the action is stop (silent or noisy),
5665              so infrun.c pops the dummy frame.  */
5666           retval.call_dummy = STOP_STD_TERMINATE;
5667           this_action = BPSTAT_WHAT_STOP_SILENT;
5668           break;
5669         case bp_tracepoint:
5670         case bp_fast_tracepoint:
5671         case bp_static_tracepoint:
5672           /* Tracepoint hits should not be reported back to GDB, and
5673              if one got through somehow, it should have been filtered
5674              out already.  */
5675           internal_error (__FILE__, __LINE__,
5676                           _("bpstat_what: tracepoint encountered"));
5677           break;
5678         case bp_gnu_ifunc_resolver:
5679           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5680           this_action = BPSTAT_WHAT_SINGLE;
5681           break;
5682         case bp_gnu_ifunc_resolver_return:
5683           /* The breakpoint will be removed, execution will restart from the
5684              PC of the former breakpoint.  */
5685           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5686           break;
5687
5688         case bp_dprintf:
5689           if (bs->stop)
5690             this_action = BPSTAT_WHAT_STOP_SILENT;
5691           else
5692             this_action = BPSTAT_WHAT_SINGLE;
5693           break;
5694
5695         default:
5696           internal_error (__FILE__, __LINE__,
5697                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5698         }
5699
5700       retval.main_action = std::max (retval.main_action, this_action);
5701     }
5702
5703   return retval;
5704 }
5705
5706 void
5707 bpstat_run_callbacks (bpstat bs_head)
5708 {
5709   bpstat bs;
5710
5711   for (bs = bs_head; bs != NULL; bs = bs->next)
5712     {
5713       struct breakpoint *b = bs->breakpoint_at;
5714
5715       if (b == NULL)
5716         continue;
5717       switch (b->type)
5718         {
5719         case bp_jit_event:
5720           handle_jit_event ();
5721           break;
5722         case bp_gnu_ifunc_resolver:
5723           gnu_ifunc_resolver_stop (b);
5724           break;
5725         case bp_gnu_ifunc_resolver_return:
5726           gnu_ifunc_resolver_return_stop (b);
5727           break;
5728         }
5729     }
5730 }
5731
5732 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5733    without hardware support).  This isn't related to a specific bpstat,
5734    just to things like whether watchpoints are set.  */
5735
5736 int
5737 bpstat_should_step (void)
5738 {
5739   struct breakpoint *b;
5740
5741   ALL_BREAKPOINTS (b)
5742     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5743       return 1;
5744   return 0;
5745 }
5746
5747 int
5748 bpstat_causes_stop (bpstat bs)
5749 {
5750   for (; bs != NULL; bs = bs->next)
5751     if (bs->stop)
5752       return 1;
5753
5754   return 0;
5755 }
5756
5757 \f
5758
5759 /* Compute a string of spaces suitable to indent the next line
5760    so it starts at the position corresponding to the table column
5761    named COL_NAME in the currently active table of UIOUT.  */
5762
5763 static char *
5764 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5765 {
5766   static char wrap_indent[80];
5767   int i, total_width, width, align;
5768   const char *text;
5769
5770   total_width = 0;
5771   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
5772     {
5773       if (strcmp (text, col_name) == 0)
5774         {
5775           gdb_assert (total_width < sizeof wrap_indent);
5776           memset (wrap_indent, ' ', total_width);
5777           wrap_indent[total_width] = 0;
5778
5779           return wrap_indent;
5780         }
5781
5782       total_width += width + 1;
5783     }
5784
5785   return NULL;
5786 }
5787
5788 /* Determine if the locations of this breakpoint will have their conditions
5789    evaluated by the target, host or a mix of both.  Returns the following:
5790
5791     "host": Host evals condition.
5792     "host or target": Host or Target evals condition.
5793     "target": Target evals condition.
5794 */
5795
5796 static const char *
5797 bp_condition_evaluator (struct breakpoint *b)
5798 {
5799   struct bp_location *bl;
5800   char host_evals = 0;
5801   char target_evals = 0;
5802
5803   if (!b)
5804     return NULL;
5805
5806   if (!is_breakpoint (b))
5807     return NULL;
5808
5809   if (gdb_evaluates_breakpoint_condition_p ()
5810       || !target_supports_evaluation_of_breakpoint_conditions ())
5811     return condition_evaluation_host;
5812
5813   for (bl = b->loc; bl; bl = bl->next)
5814     {
5815       if (bl->cond_bytecode)
5816         target_evals++;
5817       else
5818         host_evals++;
5819     }
5820
5821   if (host_evals && target_evals)
5822     return condition_evaluation_both;
5823   else if (target_evals)
5824     return condition_evaluation_target;
5825   else
5826     return condition_evaluation_host;
5827 }
5828
5829 /* Determine the breakpoint location's condition evaluator.  This is
5830    similar to bp_condition_evaluator, but for locations.  */
5831
5832 static const char *
5833 bp_location_condition_evaluator (struct bp_location *bl)
5834 {
5835   if (bl && !is_breakpoint (bl->owner))
5836     return NULL;
5837
5838   if (gdb_evaluates_breakpoint_condition_p ()
5839       || !target_supports_evaluation_of_breakpoint_conditions ())
5840     return condition_evaluation_host;
5841
5842   if (bl && bl->cond_bytecode)
5843     return condition_evaluation_target;
5844   else
5845     return condition_evaluation_host;
5846 }
5847
5848 /* Print the LOC location out of the list of B->LOC locations.  */
5849
5850 static void
5851 print_breakpoint_location (struct breakpoint *b,
5852                            struct bp_location *loc)
5853 {
5854   struct ui_out *uiout = current_uiout;
5855
5856   scoped_restore_current_program_space restore_pspace;
5857
5858   if (loc != NULL && loc->shlib_disabled)
5859     loc = NULL;
5860
5861   if (loc != NULL)
5862     set_current_program_space (loc->pspace);
5863
5864   if (b->display_canonical)
5865     uiout->field_string ("what", event_location_to_string (b->location.get ()));
5866   else if (loc && loc->symtab)
5867     {
5868       const struct symbol *sym = loc->symbol;
5869
5870       if (sym == NULL)
5871         sym = find_pc_sect_function (loc->address, loc->section);
5872
5873       if (sym)
5874         {
5875           uiout->text ("in ");
5876           uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
5877           uiout->text (" ");
5878           uiout->wrap_hint (wrap_indent_at_field (uiout, "what"));
5879           uiout->text ("at ");
5880         }
5881       uiout->field_string ("file",
5882                            symtab_to_filename_for_display (loc->symtab));
5883       uiout->text (":");
5884
5885       if (uiout->is_mi_like_p ())
5886         uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
5887       
5888       uiout->field_int ("line", loc->line_number);
5889     }
5890   else if (loc)
5891     {
5892       string_file stb;
5893
5894       print_address_symbolic (loc->gdbarch, loc->address, &stb,
5895                               demangle, "");
5896       uiout->field_stream ("at", stb);
5897     }
5898   else
5899     {
5900       uiout->field_string ("pending",
5901                            event_location_to_string (b->location.get ()));
5902       /* If extra_string is available, it could be holding a condition
5903          or dprintf arguments.  In either case, make sure it is printed,
5904          too, but only for non-MI streams.  */
5905       if (!uiout->is_mi_like_p () && b->extra_string != NULL)
5906         {
5907           if (b->type == bp_dprintf)
5908             uiout->text (",");
5909           else
5910             uiout->text (" ");
5911           uiout->text (b->extra_string);
5912         }
5913     }
5914
5915   if (loc && is_breakpoint (b)
5916       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5917       && bp_condition_evaluator (b) == condition_evaluation_both)
5918     {
5919       uiout->text (" (");
5920       uiout->field_string ("evaluated-by",
5921                            bp_location_condition_evaluator (loc));
5922       uiout->text (")");
5923     }
5924 }
5925
5926 static const char *
5927 bptype_string (enum bptype type)
5928 {
5929   struct ep_type_description
5930     {
5931       enum bptype type;
5932       const char *description;
5933     };
5934   static struct ep_type_description bptypes[] =
5935   {
5936     {bp_none, "?deleted?"},
5937     {bp_breakpoint, "breakpoint"},
5938     {bp_hardware_breakpoint, "hw breakpoint"},
5939     {bp_single_step, "sw single-step"},
5940     {bp_until, "until"},
5941     {bp_finish, "finish"},
5942     {bp_watchpoint, "watchpoint"},
5943     {bp_hardware_watchpoint, "hw watchpoint"},
5944     {bp_read_watchpoint, "read watchpoint"},
5945     {bp_access_watchpoint, "acc watchpoint"},
5946     {bp_longjmp, "longjmp"},
5947     {bp_longjmp_resume, "longjmp resume"},
5948     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5949     {bp_exception, "exception"},
5950     {bp_exception_resume, "exception resume"},
5951     {bp_step_resume, "step resume"},
5952     {bp_hp_step_resume, "high-priority step resume"},
5953     {bp_watchpoint_scope, "watchpoint scope"},
5954     {bp_call_dummy, "call dummy"},
5955     {bp_std_terminate, "std::terminate"},
5956     {bp_shlib_event, "shlib events"},
5957     {bp_thread_event, "thread events"},
5958     {bp_overlay_event, "overlay events"},
5959     {bp_longjmp_master, "longjmp master"},
5960     {bp_std_terminate_master, "std::terminate master"},
5961     {bp_exception_master, "exception master"},
5962     {bp_catchpoint, "catchpoint"},
5963     {bp_tracepoint, "tracepoint"},
5964     {bp_fast_tracepoint, "fast tracepoint"},
5965     {bp_static_tracepoint, "static tracepoint"},
5966     {bp_dprintf, "dprintf"},
5967     {bp_jit_event, "jit events"},
5968     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5969     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5970   };
5971
5972   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5973       || ((int) type != bptypes[(int) type].type))
5974     internal_error (__FILE__, __LINE__,
5975                     _("bptypes table does not describe type #%d."),
5976                     (int) type);
5977
5978   return bptypes[(int) type].description;
5979 }
5980
5981 /* For MI, output a field named 'thread-groups' with a list as the value.
5982    For CLI, prefix the list with the string 'inf'. */
5983
5984 static void
5985 output_thread_groups (struct ui_out *uiout,
5986                       const char *field_name,
5987                       const std::vector<int> &inf_nums,
5988                       int mi_only)
5989 {
5990   int is_mi = uiout->is_mi_like_p ();
5991
5992   /* For backward compatibility, don't display inferiors in CLI unless
5993      there are several.  Always display them for MI. */
5994   if (!is_mi && mi_only)
5995     return;
5996
5997   ui_out_emit_list list_emitter (uiout, field_name);
5998
5999   for (size_t i = 0; i < inf_nums.size (); i++)
6000     {
6001       if (is_mi)
6002         {
6003           char mi_group[10];
6004
6005           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf_nums[i]);
6006           uiout->field_string (NULL, mi_group);
6007         }
6008       else
6009         {
6010           if (i == 0)
6011             uiout->text (" inf ");
6012           else
6013             uiout->text (", ");
6014         
6015           uiout->text (plongest (inf_nums[i]));
6016         }
6017     }
6018 }
6019
6020 /* Print B to gdb_stdout.  */
6021
6022 static void
6023 print_one_breakpoint_location (struct breakpoint *b,
6024                                struct bp_location *loc,
6025                                int loc_number,
6026                                struct bp_location **last_loc,
6027                                int allflag)
6028 {
6029   struct command_line *l;
6030   static char bpenables[] = "nynny";
6031
6032   struct ui_out *uiout = current_uiout;
6033   int header_of_multiple = 0;
6034   int part_of_multiple = (loc != NULL);
6035   struct value_print_options opts;
6036
6037   get_user_print_options (&opts);
6038
6039   gdb_assert (!loc || loc_number != 0);
6040   /* See comment in print_one_breakpoint concerning treatment of
6041      breakpoints with single disabled location.  */
6042   if (loc == NULL 
6043       && (b->loc != NULL 
6044           && (b->loc->next != NULL || !b->loc->enabled)))
6045     header_of_multiple = 1;
6046   if (loc == NULL)
6047     loc = b->loc;
6048
6049   annotate_record ();
6050
6051   /* 1 */
6052   annotate_field (0);
6053   if (part_of_multiple)
6054     {
6055       char *formatted;
6056       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6057       uiout->field_string ("number", formatted);
6058       xfree (formatted);
6059     }
6060   else
6061     {
6062       uiout->field_int ("number", b->number);
6063     }
6064
6065   /* 2 */
6066   annotate_field (1);
6067   if (part_of_multiple)
6068     uiout->field_skip ("type");
6069   else
6070     uiout->field_string ("type", bptype_string (b->type));
6071
6072   /* 3 */
6073   annotate_field (2);
6074   if (part_of_multiple)
6075     uiout->field_skip ("disp");
6076   else
6077     uiout->field_string ("disp", bpdisp_text (b->disposition));
6078
6079
6080   /* 4 */
6081   annotate_field (3);
6082   if (part_of_multiple)
6083     uiout->field_string ("enabled", loc->enabled ? "y" : "n");
6084   else
6085     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
6086   uiout->spaces (2);
6087
6088   
6089   /* 5 and 6 */
6090   if (b->ops != NULL && b->ops->print_one != NULL)
6091     {
6092       /* Although the print_one can possibly print all locations,
6093          calling it here is not likely to get any nice result.  So,
6094          make sure there's just one location.  */
6095       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6096       b->ops->print_one (b, last_loc);
6097     }
6098   else
6099     switch (b->type)
6100       {
6101       case bp_none:
6102         internal_error (__FILE__, __LINE__,
6103                         _("print_one_breakpoint: bp_none encountered\n"));
6104         break;
6105
6106       case bp_watchpoint:
6107       case bp_hardware_watchpoint:
6108       case bp_read_watchpoint:
6109       case bp_access_watchpoint:
6110         {
6111           struct watchpoint *w = (struct watchpoint *) b;
6112
6113           /* Field 4, the address, is omitted (which makes the columns
6114              not line up too nicely with the headers, but the effect
6115              is relatively readable).  */
6116           if (opts.addressprint)
6117             uiout->field_skip ("addr");
6118           annotate_field (5);
6119           uiout->field_string ("what", w->exp_string);
6120         }
6121         break;
6122
6123       case bp_breakpoint:
6124       case bp_hardware_breakpoint:
6125       case bp_single_step:
6126       case bp_until:
6127       case bp_finish:
6128       case bp_longjmp:
6129       case bp_longjmp_resume:
6130       case bp_longjmp_call_dummy:
6131       case bp_exception:
6132       case bp_exception_resume:
6133       case bp_step_resume:
6134       case bp_hp_step_resume:
6135       case bp_watchpoint_scope:
6136       case bp_call_dummy:
6137       case bp_std_terminate:
6138       case bp_shlib_event:
6139       case bp_thread_event:
6140       case bp_overlay_event:
6141       case bp_longjmp_master:
6142       case bp_std_terminate_master:
6143       case bp_exception_master:
6144       case bp_tracepoint:
6145       case bp_fast_tracepoint:
6146       case bp_static_tracepoint:
6147       case bp_dprintf:
6148       case bp_jit_event:
6149       case bp_gnu_ifunc_resolver:
6150       case bp_gnu_ifunc_resolver_return:
6151         if (opts.addressprint)
6152           {
6153             annotate_field (4);
6154             if (header_of_multiple)
6155               uiout->field_string ("addr", "<MULTIPLE>");
6156             else if (b->loc == NULL || loc->shlib_disabled)
6157               uiout->field_string ("addr", "<PENDING>");
6158             else
6159               uiout->field_core_addr ("addr",
6160                                       loc->gdbarch, loc->address);
6161           }
6162         annotate_field (5);
6163         if (!header_of_multiple)
6164           print_breakpoint_location (b, loc);
6165         if (b->loc)
6166           *last_loc = b->loc;
6167         break;
6168       }
6169
6170
6171   if (loc != NULL && !header_of_multiple)
6172     {
6173       struct inferior *inf;
6174       std::vector<int> inf_nums;
6175       int mi_only = 1;
6176
6177       ALL_INFERIORS (inf)
6178         {
6179           if (inf->pspace == loc->pspace)
6180             inf_nums.push_back (inf->num);
6181         }
6182
6183         /* For backward compatibility, don't display inferiors in CLI unless
6184            there are several.  Always display for MI. */
6185         if (allflag
6186             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6187                 && (number_of_program_spaces () > 1
6188                     || number_of_inferiors () > 1)
6189                 /* LOC is for existing B, it cannot be in
6190                    moribund_locations and thus having NULL OWNER.  */
6191                 && loc->owner->type != bp_catchpoint))
6192         mi_only = 0;
6193       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
6194     }
6195
6196   if (!part_of_multiple)
6197     {
6198       if (b->thread != -1)
6199         {
6200           /* FIXME: This seems to be redundant and lost here; see the
6201              "stop only in" line a little further down.  */
6202           uiout->text (" thread ");
6203           uiout->field_int ("thread", b->thread);
6204         }
6205       else if (b->task != 0)
6206         {
6207           uiout->text (" task ");
6208           uiout->field_int ("task", b->task);
6209         }
6210     }
6211
6212   uiout->text ("\n");
6213
6214   if (!part_of_multiple)
6215     b->ops->print_one_detail (b, uiout);
6216
6217   if (part_of_multiple && frame_id_p (b->frame_id))
6218     {
6219       annotate_field (6);
6220       uiout->text ("\tstop only in stack frame at ");
6221       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6222          the frame ID.  */
6223       uiout->field_core_addr ("frame",
6224                               b->gdbarch, b->frame_id.stack_addr);
6225       uiout->text ("\n");
6226     }
6227   
6228   if (!part_of_multiple && b->cond_string)
6229     {
6230       annotate_field (7);
6231       if (is_tracepoint (b))
6232         uiout->text ("\ttrace only if ");
6233       else
6234         uiout->text ("\tstop only if ");
6235       uiout->field_string ("cond", b->cond_string);
6236
6237       /* Print whether the target is doing the breakpoint's condition
6238          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6239       if (is_breakpoint (b)
6240           && breakpoint_condition_evaluation_mode ()
6241           == condition_evaluation_target)
6242         {
6243           uiout->text (" (");
6244           uiout->field_string ("evaluated-by",
6245                                bp_condition_evaluator (b));
6246           uiout->text (" evals)");
6247         }
6248       uiout->text ("\n");
6249     }
6250
6251   if (!part_of_multiple && b->thread != -1)
6252     {
6253       /* FIXME should make an annotation for this.  */
6254       uiout->text ("\tstop only in thread ");
6255       if (uiout->is_mi_like_p ())
6256         uiout->field_int ("thread", b->thread);
6257       else
6258         {
6259           struct thread_info *thr = find_thread_global_id (b->thread);
6260
6261           uiout->field_string ("thread", print_thread_id (thr));
6262         }
6263       uiout->text ("\n");
6264     }
6265   
6266   if (!part_of_multiple)
6267     {
6268       if (b->hit_count)
6269         {
6270           /* FIXME should make an annotation for this.  */
6271           if (is_catchpoint (b))
6272             uiout->text ("\tcatchpoint");
6273           else if (is_tracepoint (b))
6274             uiout->text ("\ttracepoint");
6275           else
6276             uiout->text ("\tbreakpoint");
6277           uiout->text (" already hit ");
6278           uiout->field_int ("times", b->hit_count);
6279           if (b->hit_count == 1)
6280             uiout->text (" time\n");
6281           else
6282             uiout->text (" times\n");
6283         }
6284       else
6285         {
6286           /* Output the count also if it is zero, but only if this is mi.  */
6287           if (uiout->is_mi_like_p ())
6288             uiout->field_int ("times", b->hit_count);
6289         }
6290     }
6291
6292   if (!part_of_multiple && b->ignore_count)
6293     {
6294       annotate_field (8);
6295       uiout->text ("\tignore next ");
6296       uiout->field_int ("ignore", b->ignore_count);
6297       uiout->text (" hits\n");
6298     }
6299
6300   /* Note that an enable count of 1 corresponds to "enable once"
6301      behavior, which is reported by the combination of enablement and
6302      disposition, so we don't need to mention it here.  */
6303   if (!part_of_multiple && b->enable_count > 1)
6304     {
6305       annotate_field (8);
6306       uiout->text ("\tdisable after ");
6307       /* Tweak the wording to clarify that ignore and enable counts
6308          are distinct, and have additive effect.  */
6309       if (b->ignore_count)
6310         uiout->text ("additional ");
6311       else
6312         uiout->text ("next ");
6313       uiout->field_int ("enable", b->enable_count);
6314       uiout->text (" hits\n");
6315     }
6316
6317   if (!part_of_multiple && is_tracepoint (b))
6318     {
6319       struct tracepoint *tp = (struct tracepoint *) b;
6320
6321       if (tp->traceframe_usage)
6322         {
6323           uiout->text ("\ttrace buffer usage ");
6324           uiout->field_int ("traceframe-usage", tp->traceframe_usage);
6325           uiout->text (" bytes\n");
6326         }
6327     }
6328
6329   l = b->commands ? b->commands.get () : NULL;
6330   if (!part_of_multiple && l)
6331     {
6332       annotate_field (9);
6333       ui_out_emit_tuple tuple_emitter (uiout, "script");
6334       print_command_lines (uiout, l, 4);
6335     }
6336
6337   if (is_tracepoint (b))
6338     {
6339       struct tracepoint *t = (struct tracepoint *) b;
6340
6341       if (!part_of_multiple && t->pass_count)
6342         {
6343           annotate_field (10);
6344           uiout->text ("\tpass count ");
6345           uiout->field_int ("pass", t->pass_count);
6346           uiout->text (" \n");
6347         }
6348
6349       /* Don't display it when tracepoint or tracepoint location is
6350          pending.   */
6351       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6352         {
6353           annotate_field (11);
6354
6355           if (uiout->is_mi_like_p ())
6356             uiout->field_string ("installed",
6357                                  loc->inserted ? "y" : "n");
6358           else
6359             {
6360               if (loc->inserted)
6361                 uiout->text ("\t");
6362               else
6363                 uiout->text ("\tnot ");
6364               uiout->text ("installed on target\n");
6365             }
6366         }
6367     }
6368
6369   if (uiout->is_mi_like_p () && !part_of_multiple)
6370     {
6371       if (is_watchpoint (b))
6372         {
6373           struct watchpoint *w = (struct watchpoint *) b;
6374
6375           uiout->field_string ("original-location", w->exp_string);
6376         }
6377       else if (b->location != NULL
6378                && event_location_to_string (b->location.get ()) != NULL)
6379         uiout->field_string ("original-location",
6380                              event_location_to_string (b->location.get ()));
6381     }
6382 }
6383
6384 static void
6385 print_one_breakpoint (struct breakpoint *b,
6386                       struct bp_location **last_loc, 
6387                       int allflag)
6388 {
6389   struct ui_out *uiout = current_uiout;
6390
6391   {
6392     ui_out_emit_tuple tuple_emitter (uiout, "bkpt");
6393
6394     print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6395   }
6396
6397   /* If this breakpoint has custom print function,
6398      it's already printed.  Otherwise, print individual
6399      locations, if any.  */
6400   if (b->ops == NULL || b->ops->print_one == NULL)
6401     {
6402       /* If breakpoint has a single location that is disabled, we
6403          print it as if it had several locations, since otherwise it's
6404          hard to represent "breakpoint enabled, location disabled"
6405          situation.
6406
6407          Note that while hardware watchpoints have several locations
6408          internally, that's not a property exposed to user.  */
6409       if (b->loc 
6410           && !is_hardware_watchpoint (b)
6411           && (b->loc->next || !b->loc->enabled))
6412         {
6413           struct bp_location *loc;
6414           int n = 1;
6415
6416           for (loc = b->loc; loc; loc = loc->next, ++n)
6417             {
6418               ui_out_emit_tuple tuple_emitter (uiout, NULL);
6419               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6420             }
6421         }
6422     }
6423 }
6424
6425 static int
6426 breakpoint_address_bits (struct breakpoint *b)
6427 {
6428   int print_address_bits = 0;
6429   struct bp_location *loc;
6430
6431   /* Software watchpoints that aren't watching memory don't have an
6432      address to print.  */
6433   if (is_no_memory_software_watchpoint (b))
6434     return 0;
6435
6436   for (loc = b->loc; loc; loc = loc->next)
6437     {
6438       int addr_bit;
6439
6440       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6441       if (addr_bit > print_address_bits)
6442         print_address_bits = addr_bit;
6443     }
6444
6445   return print_address_bits;
6446 }
6447
6448 /* See breakpoint.h.  */
6449
6450 void
6451 print_breakpoint (breakpoint *b)
6452 {
6453   struct bp_location *dummy_loc = NULL;
6454   print_one_breakpoint (b, &dummy_loc, 0);
6455 }
6456
6457 /* Return true if this breakpoint was set by the user, false if it is
6458    internal or momentary.  */
6459
6460 int
6461 user_breakpoint_p (struct breakpoint *b)
6462 {
6463   return b->number > 0;
6464 }
6465
6466 /* See breakpoint.h.  */
6467
6468 int
6469 pending_breakpoint_p (struct breakpoint *b)
6470 {
6471   return b->loc == NULL;
6472 }
6473
6474 /* Print information on user settable breakpoint (watchpoint, etc)
6475    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6476    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6477    FILTER is non-NULL, call it on each breakpoint and only include the
6478    ones for which it returns non-zero.  Return the total number of
6479    breakpoints listed.  */
6480
6481 static int
6482 breakpoint_1 (const char *args, int allflag, 
6483               int (*filter) (const struct breakpoint *))
6484 {
6485   struct breakpoint *b;
6486   struct bp_location *last_loc = NULL;
6487   int nr_printable_breakpoints;
6488   struct value_print_options opts;
6489   int print_address_bits = 0;
6490   int print_type_col_width = 14;
6491   struct ui_out *uiout = current_uiout;
6492
6493   get_user_print_options (&opts);
6494
6495   /* Compute the number of rows in the table, as well as the size
6496      required for address fields.  */
6497   nr_printable_breakpoints = 0;
6498   ALL_BREAKPOINTS (b)
6499     {
6500       /* If we have a filter, only list the breakpoints it accepts.  */
6501       if (filter && !filter (b))
6502         continue;
6503
6504       /* If we have an "args" string, it is a list of breakpoints to 
6505          accept.  Skip the others.  */
6506       if (args != NULL && *args != '\0')
6507         {
6508           if (allflag && parse_and_eval_long (args) != b->number)
6509             continue;
6510           if (!allflag && !number_is_in_list (args, b->number))
6511             continue;
6512         }
6513
6514       if (allflag || user_breakpoint_p (b))
6515         {
6516           int addr_bit, type_len;
6517
6518           addr_bit = breakpoint_address_bits (b);
6519           if (addr_bit > print_address_bits)
6520             print_address_bits = addr_bit;
6521
6522           type_len = strlen (bptype_string (b->type));
6523           if (type_len > print_type_col_width)
6524             print_type_col_width = type_len;
6525
6526           nr_printable_breakpoints++;
6527         }
6528     }
6529
6530   {
6531     ui_out_emit_table table_emitter (uiout,
6532                                      opts.addressprint ? 6 : 5,
6533                                      nr_printable_breakpoints,
6534                                      "BreakpointTable");
6535
6536     if (nr_printable_breakpoints > 0)
6537       annotate_breakpoints_headers ();
6538     if (nr_printable_breakpoints > 0)
6539       annotate_field (0);
6540     uiout->table_header (7, ui_left, "number", "Num"); /* 1 */
6541     if (nr_printable_breakpoints > 0)
6542       annotate_field (1);
6543     uiout->table_header (print_type_col_width, ui_left, "type", "Type"); /* 2 */
6544     if (nr_printable_breakpoints > 0)
6545       annotate_field (2);
6546     uiout->table_header (4, ui_left, "disp", "Disp"); /* 3 */
6547     if (nr_printable_breakpoints > 0)
6548       annotate_field (3);
6549     uiout->table_header (3, ui_left, "enabled", "Enb"); /* 4 */
6550     if (opts.addressprint)
6551       {
6552         if (nr_printable_breakpoints > 0)
6553           annotate_field (4);
6554         if (print_address_bits <= 32)
6555           uiout->table_header (10, ui_left, "addr", "Address"); /* 5 */
6556         else
6557           uiout->table_header (18, ui_left, "addr", "Address"); /* 5 */
6558       }
6559     if (nr_printable_breakpoints > 0)
6560       annotate_field (5);
6561     uiout->table_header (40, ui_noalign, "what", "What"); /* 6 */
6562     uiout->table_body ();
6563     if (nr_printable_breakpoints > 0)
6564       annotate_breakpoints_table ();
6565
6566     ALL_BREAKPOINTS (b)
6567       {
6568         QUIT;
6569         /* If we have a filter, only list the breakpoints it accepts.  */
6570         if (filter && !filter (b))
6571           continue;
6572
6573         /* If we have an "args" string, it is a list of breakpoints to 
6574            accept.  Skip the others.  */
6575
6576         if (args != NULL && *args != '\0')
6577           {
6578             if (allflag)        /* maintenance info breakpoint */
6579               {
6580                 if (parse_and_eval_long (args) != b->number)
6581                   continue;
6582               }
6583             else                /* all others */
6584               {
6585                 if (!number_is_in_list (args, b->number))
6586                   continue;
6587               }
6588           }
6589         /* We only print out user settable breakpoints unless the
6590            allflag is set.  */
6591         if (allflag || user_breakpoint_p (b))
6592           print_one_breakpoint (b, &last_loc, allflag);
6593       }
6594   }
6595
6596   if (nr_printable_breakpoints == 0)
6597     {
6598       /* If there's a filter, let the caller decide how to report
6599          empty list.  */
6600       if (!filter)
6601         {
6602           if (args == NULL || *args == '\0')
6603             uiout->message ("No breakpoints or watchpoints.\n");
6604           else
6605             uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
6606                             args);
6607         }
6608     }
6609   else
6610     {
6611       if (last_loc && !server_command)
6612         set_next_address (last_loc->gdbarch, last_loc->address);
6613     }
6614
6615   /* FIXME?  Should this be moved up so that it is only called when
6616      there have been breakpoints? */
6617   annotate_breakpoints_table_end ();
6618
6619   return nr_printable_breakpoints;
6620 }
6621
6622 /* Display the value of default-collect in a way that is generally
6623    compatible with the breakpoint list.  */
6624
6625 static void
6626 default_collect_info (void)
6627 {
6628   struct ui_out *uiout = current_uiout;
6629
6630   /* If it has no value (which is frequently the case), say nothing; a
6631      message like "No default-collect." gets in user's face when it's
6632      not wanted.  */
6633   if (!*default_collect)
6634     return;
6635
6636   /* The following phrase lines up nicely with per-tracepoint collect
6637      actions.  */
6638   uiout->text ("default collect ");
6639   uiout->field_string ("default-collect", default_collect);
6640   uiout->text (" \n");
6641 }
6642   
6643 static void
6644 info_breakpoints_command (const char *args, int from_tty)
6645 {
6646   breakpoint_1 (args, 0, NULL);
6647
6648   default_collect_info ();
6649 }
6650
6651 static void
6652 info_watchpoints_command (const char *args, int from_tty)
6653 {
6654   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6655   struct ui_out *uiout = current_uiout;
6656
6657   if (num_printed == 0)
6658     {
6659       if (args == NULL || *args == '\0')
6660         uiout->message ("No watchpoints.\n");
6661       else
6662         uiout->message ("No watchpoint matching '%s'.\n", args);
6663     }
6664 }
6665
6666 static void
6667 maintenance_info_breakpoints (const char *args, int from_tty)
6668 {
6669   breakpoint_1 (args, 1, NULL);
6670
6671   default_collect_info ();
6672 }
6673
6674 static int
6675 breakpoint_has_pc (struct breakpoint *b,
6676                    struct program_space *pspace,
6677                    CORE_ADDR pc, struct obj_section *section)
6678 {
6679   struct bp_location *bl = b->loc;
6680
6681   for (; bl; bl = bl->next)
6682     {
6683       if (bl->pspace == pspace
6684           && bl->address == pc
6685           && (!overlay_debugging || bl->section == section))
6686         return 1;         
6687     }
6688   return 0;
6689 }
6690
6691 /* Print a message describing any user-breakpoints set at PC.  This
6692    concerns with logical breakpoints, so we match program spaces, not
6693    address spaces.  */
6694
6695 static void
6696 describe_other_breakpoints (struct gdbarch *gdbarch,
6697                             struct program_space *pspace, CORE_ADDR pc,
6698                             struct obj_section *section, int thread)
6699 {
6700   int others = 0;
6701   struct breakpoint *b;
6702
6703   ALL_BREAKPOINTS (b)
6704     others += (user_breakpoint_p (b)
6705                && breakpoint_has_pc (b, pspace, pc, section));
6706   if (others > 0)
6707     {
6708       if (others == 1)
6709         printf_filtered (_("Note: breakpoint "));
6710       else /* if (others == ???) */
6711         printf_filtered (_("Note: breakpoints "));
6712       ALL_BREAKPOINTS (b)
6713         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6714           {
6715             others--;
6716             printf_filtered ("%d", b->number);
6717             if (b->thread == -1 && thread != -1)
6718               printf_filtered (" (all threads)");
6719             else if (b->thread != -1)
6720               printf_filtered (" (thread %d)", b->thread);
6721             printf_filtered ("%s%s ",
6722                              ((b->enable_state == bp_disabled
6723                                || b->enable_state == bp_call_disabled)
6724                               ? " (disabled)"
6725                               : ""),
6726                              (others > 1) ? "," 
6727                              : ((others == 1) ? " and" : ""));
6728           }
6729       printf_filtered (_("also set at pc "));
6730       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6731       printf_filtered (".\n");
6732     }
6733 }
6734 \f
6735
6736 /* Return true iff it is meaningful to use the address member of
6737    BPT locations.  For some breakpoint types, the locations' address members
6738    are irrelevant and it makes no sense to attempt to compare them to other
6739    addresses (or use them for any other purpose either).
6740
6741    More specifically, each of the following breakpoint types will
6742    always have a zero valued location address and we don't want to mark
6743    breakpoints of any of these types to be a duplicate of an actual
6744    breakpoint location at address zero:
6745
6746       bp_watchpoint
6747       bp_catchpoint
6748
6749 */
6750
6751 static int
6752 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6753 {
6754   enum bptype type = bpt->type;
6755
6756   return (type != bp_watchpoint && type != bp_catchpoint);
6757 }
6758
6759 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6760    true if LOC1 and LOC2 represent the same watchpoint location.  */
6761
6762 static int
6763 watchpoint_locations_match (struct bp_location *loc1, 
6764                             struct bp_location *loc2)
6765 {
6766   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6767   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6768
6769   /* Both of them must exist.  */
6770   gdb_assert (w1 != NULL);
6771   gdb_assert (w2 != NULL);
6772
6773   /* If the target can evaluate the condition expression in hardware,
6774      then we we need to insert both watchpoints even if they are at
6775      the same place.  Otherwise the watchpoint will only trigger when
6776      the condition of whichever watchpoint was inserted evaluates to
6777      true, not giving a chance for GDB to check the condition of the
6778      other watchpoint.  */
6779   if ((w1->cond_exp
6780        && target_can_accel_watchpoint_condition (loc1->address, 
6781                                                  loc1->length,
6782                                                  loc1->watchpoint_type,
6783                                                  w1->cond_exp.get ()))
6784       || (w2->cond_exp
6785           && target_can_accel_watchpoint_condition (loc2->address, 
6786                                                     loc2->length,
6787                                                     loc2->watchpoint_type,
6788                                                     w2->cond_exp.get ())))
6789     return 0;
6790
6791   /* Note that this checks the owner's type, not the location's.  In
6792      case the target does not support read watchpoints, but does
6793      support access watchpoints, we'll have bp_read_watchpoint
6794      watchpoints with hw_access locations.  Those should be considered
6795      duplicates of hw_read locations.  The hw_read locations will
6796      become hw_access locations later.  */
6797   return (loc1->owner->type == loc2->owner->type
6798           && loc1->pspace->aspace == loc2->pspace->aspace
6799           && loc1->address == loc2->address
6800           && loc1->length == loc2->length);
6801 }
6802
6803 /* See breakpoint.h.  */
6804
6805 int
6806 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
6807                           const address_space *aspace2, CORE_ADDR addr2)
6808 {
6809   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6810            || aspace1 == aspace2)
6811           && addr1 == addr2);
6812 }
6813
6814 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6815    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6816    matches ASPACE2.  On targets that have global breakpoints, the address
6817    space doesn't really matter.  */
6818
6819 static int
6820 breakpoint_address_match_range (const address_space *aspace1,
6821                                 CORE_ADDR addr1,
6822                                 int len1, const address_space *aspace2,
6823                                 CORE_ADDR addr2)
6824 {
6825   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6826            || aspace1 == aspace2)
6827           && addr2 >= addr1 && addr2 < addr1 + len1);
6828 }
6829
6830 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6831    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6832    matches the breakpoint's address space.  On targets that have global
6833    breakpoints, the address space doesn't really matter.  */
6834
6835 static int
6836 breakpoint_location_address_match (struct bp_location *bl,
6837                                    const address_space *aspace,
6838                                    CORE_ADDR addr)
6839 {
6840   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6841                                     aspace, addr)
6842           || (bl->length
6843               && breakpoint_address_match_range (bl->pspace->aspace,
6844                                                  bl->address, bl->length,
6845                                                  aspace, addr)));
6846 }
6847
6848 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
6849    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
6850    match happens only if ASPACE matches the breakpoint's address
6851    space.  On targets that have global breakpoints, the address space
6852    doesn't really matter.  */
6853
6854 static int
6855 breakpoint_location_address_range_overlap (struct bp_location *bl,
6856                                            const address_space *aspace,
6857                                            CORE_ADDR addr, int len)
6858 {
6859   if (gdbarch_has_global_breakpoints (target_gdbarch ())
6860       || bl->pspace->aspace == aspace)
6861     {
6862       int bl_len = bl->length != 0 ? bl->length : 1;
6863
6864       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
6865         return 1;
6866     }
6867   return 0;
6868 }
6869
6870 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6871    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6872    true, otherwise returns false.  */
6873
6874 static int
6875 tracepoint_locations_match (struct bp_location *loc1,
6876                             struct bp_location *loc2)
6877 {
6878   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6879     /* Since tracepoint locations are never duplicated with others', tracepoint
6880        locations at the same address of different tracepoints are regarded as
6881        different locations.  */
6882     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6883   else
6884     return 0;
6885 }
6886
6887 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6888    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6889    represent the same location.  */
6890
6891 static int
6892 breakpoint_locations_match (struct bp_location *loc1, 
6893                             struct bp_location *loc2)
6894 {
6895   int hw_point1, hw_point2;
6896
6897   /* Both of them must not be in moribund_locations.  */
6898   gdb_assert (loc1->owner != NULL);
6899   gdb_assert (loc2->owner != NULL);
6900
6901   hw_point1 = is_hardware_watchpoint (loc1->owner);
6902   hw_point2 = is_hardware_watchpoint (loc2->owner);
6903
6904   if (hw_point1 != hw_point2)
6905     return 0;
6906   else if (hw_point1)
6907     return watchpoint_locations_match (loc1, loc2);
6908   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6909     return tracepoint_locations_match (loc1, loc2);
6910   else
6911     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6912     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6913                                      loc2->pspace->aspace, loc2->address)
6914             && loc1->length == loc2->length);
6915 }
6916
6917 static void
6918 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6919                                int bnum, int have_bnum)
6920 {
6921   /* The longest string possibly returned by hex_string_custom
6922      is 50 chars.  These must be at least that big for safety.  */
6923   char astr1[64];
6924   char astr2[64];
6925
6926   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6927   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6928   if (have_bnum)
6929     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6930              bnum, astr1, astr2);
6931   else
6932     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6933 }
6934
6935 /* Adjust a breakpoint's address to account for architectural
6936    constraints on breakpoint placement.  Return the adjusted address.
6937    Note: Very few targets require this kind of adjustment.  For most
6938    targets, this function is simply the identity function.  */
6939
6940 static CORE_ADDR
6941 adjust_breakpoint_address (struct gdbarch *gdbarch,
6942                            CORE_ADDR bpaddr, enum bptype bptype)
6943 {
6944   if (bptype == bp_watchpoint
6945       || bptype == bp_hardware_watchpoint
6946       || bptype == bp_read_watchpoint
6947       || bptype == bp_access_watchpoint
6948       || bptype == bp_catchpoint)
6949     {
6950       /* Watchpoints and the various bp_catch_* eventpoints should not
6951          have their addresses modified.  */
6952       return bpaddr;
6953     }
6954   else if (bptype == bp_single_step)
6955     {
6956       /* Single-step breakpoints should not have their addresses
6957          modified.  If there's any architectural constrain that
6958          applies to this address, then it should have already been
6959          taken into account when the breakpoint was created in the
6960          first place.  If we didn't do this, stepping through e.g.,
6961          Thumb-2 IT blocks would break.  */
6962       return bpaddr;
6963     }
6964   else
6965     {
6966       CORE_ADDR adjusted_bpaddr = bpaddr;
6967
6968       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
6969         {
6970           /* Some targets have architectural constraints on the placement
6971              of breakpoint instructions.  Obtain the adjusted address.  */
6972           adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6973         }
6974
6975       adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
6976
6977       /* An adjusted breakpoint address can significantly alter
6978          a user's expectations.  Print a warning if an adjustment
6979          is required.  */
6980       if (adjusted_bpaddr != bpaddr)
6981         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6982
6983       return adjusted_bpaddr;
6984     }
6985 }
6986
6987 bp_location::bp_location (const bp_location_ops *ops, breakpoint *owner)
6988 {
6989   bp_location *loc = this;
6990
6991   gdb_assert (ops != NULL);
6992
6993   loc->ops = ops;
6994   loc->owner = owner;
6995   loc->cond_bytecode = NULL;
6996   loc->shlib_disabled = 0;
6997   loc->enabled = 1;
6998
6999   switch (owner->type)
7000     {
7001     case bp_breakpoint:
7002     case bp_single_step:
7003     case bp_until:
7004     case bp_finish:
7005     case bp_longjmp:
7006     case bp_longjmp_resume:
7007     case bp_longjmp_call_dummy:
7008     case bp_exception:
7009     case bp_exception_resume:
7010     case bp_step_resume:
7011     case bp_hp_step_resume:
7012     case bp_watchpoint_scope:
7013     case bp_call_dummy:
7014     case bp_std_terminate:
7015     case bp_shlib_event:
7016     case bp_thread_event:
7017     case bp_overlay_event:
7018     case bp_jit_event:
7019     case bp_longjmp_master:
7020     case bp_std_terminate_master:
7021     case bp_exception_master:
7022     case bp_gnu_ifunc_resolver:
7023     case bp_gnu_ifunc_resolver_return:
7024     case bp_dprintf:
7025       loc->loc_type = bp_loc_software_breakpoint;
7026       mark_breakpoint_location_modified (loc);
7027       break;
7028     case bp_hardware_breakpoint:
7029       loc->loc_type = bp_loc_hardware_breakpoint;
7030       mark_breakpoint_location_modified (loc);
7031       break;
7032     case bp_hardware_watchpoint:
7033     case bp_read_watchpoint:
7034     case bp_access_watchpoint:
7035       loc->loc_type = bp_loc_hardware_watchpoint;
7036       break;
7037     case bp_watchpoint:
7038     case bp_catchpoint:
7039     case bp_tracepoint:
7040     case bp_fast_tracepoint:
7041     case bp_static_tracepoint:
7042       loc->loc_type = bp_loc_other;
7043       break;
7044     default:
7045       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7046     }
7047
7048   loc->refc = 1;
7049 }
7050
7051 /* Allocate a struct bp_location.  */
7052
7053 static struct bp_location *
7054 allocate_bp_location (struct breakpoint *bpt)
7055 {
7056   return bpt->ops->allocate_location (bpt);
7057 }
7058
7059 static void
7060 free_bp_location (struct bp_location *loc)
7061 {
7062   loc->ops->dtor (loc);
7063   delete loc;
7064 }
7065
7066 /* Increment reference count.  */
7067
7068 static void
7069 incref_bp_location (struct bp_location *bl)
7070 {
7071   ++bl->refc;
7072 }
7073
7074 /* Decrement reference count.  If the reference count reaches 0,
7075    destroy the bp_location.  Sets *BLP to NULL.  */
7076
7077 static void
7078 decref_bp_location (struct bp_location **blp)
7079 {
7080   gdb_assert ((*blp)->refc > 0);
7081
7082   if (--(*blp)->refc == 0)
7083     free_bp_location (*blp);
7084   *blp = NULL;
7085 }
7086
7087 /* Add breakpoint B at the end of the global breakpoint chain.  */
7088
7089 static breakpoint *
7090 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
7091 {
7092   struct breakpoint *b1;
7093   struct breakpoint *result = b.get ();
7094
7095   /* Add this breakpoint to the end of the chain so that a list of
7096      breakpoints will come out in order of increasing numbers.  */
7097
7098   b1 = breakpoint_chain;
7099   if (b1 == 0)
7100     breakpoint_chain = b.release ();
7101   else
7102     {
7103       while (b1->next)
7104         b1 = b1->next;
7105       b1->next = b.release ();
7106     }
7107
7108   return result;
7109 }
7110
7111 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7112
7113 static void
7114 init_raw_breakpoint_without_location (struct breakpoint *b,
7115                                       struct gdbarch *gdbarch,
7116                                       enum bptype bptype,
7117                                       const struct breakpoint_ops *ops)
7118 {
7119   gdb_assert (ops != NULL);
7120
7121   b->ops = ops;
7122   b->type = bptype;
7123   b->gdbarch = gdbarch;
7124   b->language = current_language->la_language;
7125   b->input_radix = input_radix;
7126   b->related_breakpoint = b;
7127 }
7128
7129 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7130    that has type BPTYPE and has no locations as yet.  */
7131
7132 static struct breakpoint *
7133 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7134                                      enum bptype bptype,
7135                                      const struct breakpoint_ops *ops)
7136 {
7137   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7138
7139   init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
7140   return add_to_breakpoint_chain (std::move (b));
7141 }
7142
7143 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7144    resolutions should be made as the user specified the location explicitly
7145    enough.  */
7146
7147 static void
7148 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7149 {
7150   gdb_assert (loc->owner != NULL);
7151
7152   if (loc->owner->type == bp_breakpoint
7153       || loc->owner->type == bp_hardware_breakpoint
7154       || is_tracepoint (loc->owner))
7155     {
7156       const char *function_name;
7157
7158       if (loc->msymbol != NULL
7159           && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
7160               || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc)
7161           && !explicit_loc)
7162         {
7163           struct breakpoint *b = loc->owner;
7164
7165           function_name = MSYMBOL_LINKAGE_NAME (loc->msymbol);
7166
7167           if (b->type == bp_breakpoint && b->loc == loc
7168               && loc->next == NULL && b->related_breakpoint == b)
7169             {
7170               /* Create only the whole new breakpoint of this type but do not
7171                  mess more complicated breakpoints with multiple locations.  */
7172               b->type = bp_gnu_ifunc_resolver;
7173               /* Remember the resolver's address for use by the return
7174                  breakpoint.  */
7175               loc->related_address = loc->address;
7176             }
7177         }
7178       else
7179         find_pc_partial_function (loc->address, &function_name, NULL, NULL);
7180
7181       if (function_name)
7182         loc->function_name = xstrdup (function_name);
7183     }
7184 }
7185
7186 /* Attempt to determine architecture of location identified by SAL.  */
7187 struct gdbarch *
7188 get_sal_arch (struct symtab_and_line sal)
7189 {
7190   if (sal.section)
7191     return get_objfile_arch (sal.section->objfile);
7192   if (sal.symtab)
7193     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7194
7195   return NULL;
7196 }
7197
7198 /* Low level routine for partially initializing a breakpoint of type
7199    BPTYPE.  The newly created breakpoint's address, section, source
7200    file name, and line number are provided by SAL.
7201
7202    It is expected that the caller will complete the initialization of
7203    the newly created breakpoint struct as well as output any status
7204    information regarding the creation of a new breakpoint.  */
7205
7206 static void
7207 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7208                      struct symtab_and_line sal, enum bptype bptype,
7209                      const struct breakpoint_ops *ops)
7210 {
7211   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7212
7213   add_location_to_breakpoint (b, &sal);
7214
7215   if (bptype != bp_catchpoint)
7216     gdb_assert (sal.pspace != NULL);
7217
7218   /* Store the program space that was used to set the breakpoint,
7219      except for ordinary breakpoints, which are independent of the
7220      program space.  */
7221   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7222     b->pspace = sal.pspace;
7223 }
7224
7225 /* set_raw_breakpoint is a low level routine for allocating and
7226    partially initializing a breakpoint of type BPTYPE.  The newly
7227    created breakpoint's address, section, source file name, and line
7228    number are provided by SAL.  The newly created and partially
7229    initialized breakpoint is added to the breakpoint chain and
7230    is also returned as the value of this function.
7231
7232    It is expected that the caller will complete the initialization of
7233    the newly created breakpoint struct as well as output any status
7234    information regarding the creation of a new breakpoint.  In
7235    particular, set_raw_breakpoint does NOT set the breakpoint
7236    number!  Care should be taken to not allow an error to occur
7237    prior to completing the initialization of the breakpoint.  If this
7238    should happen, a bogus breakpoint will be left on the chain.  */
7239
7240 struct breakpoint *
7241 set_raw_breakpoint (struct gdbarch *gdbarch,
7242                     struct symtab_and_line sal, enum bptype bptype,
7243                     const struct breakpoint_ops *ops)
7244 {
7245   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
7246
7247   init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
7248   return add_to_breakpoint_chain (std::move (b));
7249 }
7250
7251 /* Call this routine when stepping and nexting to enable a breakpoint
7252    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7253    initiated the operation.  */
7254
7255 void
7256 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7257 {
7258   struct breakpoint *b, *b_tmp;
7259   int thread = tp->global_num;
7260
7261   /* To avoid having to rescan all objfile symbols at every step,
7262      we maintain a list of continually-inserted but always disabled
7263      longjmp "master" breakpoints.  Here, we simply create momentary
7264      clones of those and enable them for the requested thread.  */
7265   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7266     if (b->pspace == current_program_space
7267         && (b->type == bp_longjmp_master
7268             || b->type == bp_exception_master))
7269       {
7270         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7271         struct breakpoint *clone;
7272
7273         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7274            after their removal.  */
7275         clone = momentary_breakpoint_from_master (b, type,
7276                                                   &momentary_breakpoint_ops, 1);
7277         clone->thread = thread;
7278       }
7279
7280   tp->initiating_frame = frame;
7281 }
7282
7283 /* Delete all longjmp breakpoints from THREAD.  */
7284 void
7285 delete_longjmp_breakpoint (int thread)
7286 {
7287   struct breakpoint *b, *b_tmp;
7288
7289   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7290     if (b->type == bp_longjmp || b->type == bp_exception)
7291       {
7292         if (b->thread == thread)
7293           delete_breakpoint (b);
7294       }
7295 }
7296
7297 void
7298 delete_longjmp_breakpoint_at_next_stop (int thread)
7299 {
7300   struct breakpoint *b, *b_tmp;
7301
7302   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7303     if (b->type == bp_longjmp || b->type == bp_exception)
7304       {
7305         if (b->thread == thread)
7306           b->disposition = disp_del_at_next_stop;
7307       }
7308 }
7309
7310 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7311    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7312    pointer to any of them.  Return NULL if this system cannot place longjmp
7313    breakpoints.  */
7314
7315 struct breakpoint *
7316 set_longjmp_breakpoint_for_call_dummy (void)
7317 {
7318   struct breakpoint *b, *retval = NULL;
7319
7320   ALL_BREAKPOINTS (b)
7321     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7322       {
7323         struct breakpoint *new_b;
7324
7325         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7326                                                   &momentary_breakpoint_ops,
7327                                                   1);
7328         new_b->thread = inferior_thread ()->global_num;
7329
7330         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7331
7332         gdb_assert (new_b->related_breakpoint == new_b);
7333         if (retval == NULL)
7334           retval = new_b;
7335         new_b->related_breakpoint = retval;
7336         while (retval->related_breakpoint != new_b->related_breakpoint)
7337           retval = retval->related_breakpoint;
7338         retval->related_breakpoint = new_b;
7339       }
7340
7341   return retval;
7342 }
7343
7344 /* Verify all existing dummy frames and their associated breakpoints for
7345    TP.  Remove those which can no longer be found in the current frame
7346    stack.
7347
7348    You should call this function only at places where it is safe to currently
7349    unwind the whole stack.  Failed stack unwind would discard live dummy
7350    frames.  */
7351
7352 void
7353 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7354 {
7355   struct breakpoint *b, *b_tmp;
7356
7357   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7358     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7359       {
7360         struct breakpoint *dummy_b = b->related_breakpoint;
7361
7362         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7363           dummy_b = dummy_b->related_breakpoint;
7364         if (dummy_b->type != bp_call_dummy
7365             || frame_find_by_id (dummy_b->frame_id) != NULL)
7366           continue;
7367         
7368         dummy_frame_discard (dummy_b->frame_id, tp);
7369
7370         while (b->related_breakpoint != b)
7371           {
7372             if (b_tmp == b->related_breakpoint)
7373               b_tmp = b->related_breakpoint->next;
7374             delete_breakpoint (b->related_breakpoint);
7375           }
7376         delete_breakpoint (b);
7377       }
7378 }
7379
7380 void
7381 enable_overlay_breakpoints (void)
7382 {
7383   struct breakpoint *b;
7384
7385   ALL_BREAKPOINTS (b)
7386     if (b->type == bp_overlay_event)
7387     {
7388       b->enable_state = bp_enabled;
7389       update_global_location_list (UGLL_MAY_INSERT);
7390       overlay_events_enabled = 1;
7391     }
7392 }
7393
7394 void
7395 disable_overlay_breakpoints (void)
7396 {
7397   struct breakpoint *b;
7398
7399   ALL_BREAKPOINTS (b)
7400     if (b->type == bp_overlay_event)
7401     {
7402       b->enable_state = bp_disabled;
7403       update_global_location_list (UGLL_DONT_INSERT);
7404       overlay_events_enabled = 0;
7405     }
7406 }
7407
7408 /* Set an active std::terminate breakpoint for each std::terminate
7409    master breakpoint.  */
7410 void
7411 set_std_terminate_breakpoint (void)
7412 {
7413   struct breakpoint *b, *b_tmp;
7414
7415   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7416     if (b->pspace == current_program_space
7417         && b->type == bp_std_terminate_master)
7418       {
7419         momentary_breakpoint_from_master (b, bp_std_terminate,
7420                                           &momentary_breakpoint_ops, 1);
7421       }
7422 }
7423
7424 /* Delete all the std::terminate breakpoints.  */
7425 void
7426 delete_std_terminate_breakpoint (void)
7427 {
7428   struct breakpoint *b, *b_tmp;
7429
7430   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7431     if (b->type == bp_std_terminate)
7432       delete_breakpoint (b);
7433 }
7434
7435 struct breakpoint *
7436 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7437 {
7438   struct breakpoint *b;
7439
7440   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7441                                   &internal_breakpoint_ops);
7442
7443   b->enable_state = bp_enabled;
7444   /* location has to be used or breakpoint_re_set will delete me.  */
7445   b->location = new_address_location (b->loc->address, NULL, 0);
7446
7447   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7448
7449   return b;
7450 }
7451
7452 struct lang_and_radix
7453   {
7454     enum language lang;
7455     int radix;
7456   };
7457
7458 /* Create a breakpoint for JIT code registration and unregistration.  */
7459
7460 struct breakpoint *
7461 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7462 {
7463   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7464                                      &internal_breakpoint_ops);
7465 }
7466
7467 /* Remove JIT code registration and unregistration breakpoint(s).  */
7468
7469 void
7470 remove_jit_event_breakpoints (void)
7471 {
7472   struct breakpoint *b, *b_tmp;
7473
7474   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7475     if (b->type == bp_jit_event
7476         && b->loc->pspace == current_program_space)
7477       delete_breakpoint (b);
7478 }
7479
7480 void
7481 remove_solib_event_breakpoints (void)
7482 {
7483   struct breakpoint *b, *b_tmp;
7484
7485   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7486     if (b->type == bp_shlib_event
7487         && b->loc->pspace == current_program_space)
7488       delete_breakpoint (b);
7489 }
7490
7491 /* See breakpoint.h.  */
7492
7493 void
7494 remove_solib_event_breakpoints_at_next_stop (void)
7495 {
7496   struct breakpoint *b, *b_tmp;
7497
7498   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7499     if (b->type == bp_shlib_event
7500         && b->loc->pspace == current_program_space)
7501       b->disposition = disp_del_at_next_stop;
7502 }
7503
7504 /* Helper for create_solib_event_breakpoint /
7505    create_and_insert_solib_event_breakpoint.  Allows specifying which
7506    INSERT_MODE to pass through to update_global_location_list.  */
7507
7508 static struct breakpoint *
7509 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7510                                  enum ugll_insert_mode insert_mode)
7511 {
7512   struct breakpoint *b;
7513
7514   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7515                                   &internal_breakpoint_ops);
7516   update_global_location_list_nothrow (insert_mode);
7517   return b;
7518 }
7519
7520 struct breakpoint *
7521 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7522 {
7523   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7524 }
7525
7526 /* See breakpoint.h.  */
7527
7528 struct breakpoint *
7529 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7530 {
7531   struct breakpoint *b;
7532
7533   /* Explicitly tell update_global_location_list to insert
7534      locations.  */
7535   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7536   if (!b->loc->inserted)
7537     {
7538       delete_breakpoint (b);
7539       return NULL;
7540     }
7541   return b;
7542 }
7543
7544 /* Disable any breakpoints that are on code in shared libraries.  Only
7545    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7546
7547 void
7548 disable_breakpoints_in_shlibs (void)
7549 {
7550   struct bp_location *loc, **locp_tmp;
7551
7552   ALL_BP_LOCATIONS (loc, locp_tmp)
7553   {
7554     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7555     struct breakpoint *b = loc->owner;
7556
7557     /* We apply the check to all breakpoints, including disabled for
7558        those with loc->duplicate set.  This is so that when breakpoint
7559        becomes enabled, or the duplicate is removed, gdb will try to
7560        insert all breakpoints.  If we don't set shlib_disabled here,
7561        we'll try to insert those breakpoints and fail.  */
7562     if (((b->type == bp_breakpoint)
7563          || (b->type == bp_jit_event)
7564          || (b->type == bp_hardware_breakpoint)
7565          || (is_tracepoint (b)))
7566         && loc->pspace == current_program_space
7567         && !loc->shlib_disabled
7568         && solib_name_from_address (loc->pspace, loc->address)
7569         )
7570       {
7571         loc->shlib_disabled = 1;
7572       }
7573   }
7574 }
7575
7576 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7577    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7578    disabled ones can just stay disabled.  */
7579
7580 static void
7581 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7582 {
7583   struct bp_location *loc, **locp_tmp;
7584   int disabled_shlib_breaks = 0;
7585
7586   ALL_BP_LOCATIONS (loc, locp_tmp)
7587   {
7588     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7589     struct breakpoint *b = loc->owner;
7590
7591     if (solib->pspace == loc->pspace
7592         && !loc->shlib_disabled
7593         && (((b->type == bp_breakpoint
7594               || b->type == bp_jit_event
7595               || b->type == bp_hardware_breakpoint)
7596              && (loc->loc_type == bp_loc_hardware_breakpoint
7597                  || loc->loc_type == bp_loc_software_breakpoint))
7598             || is_tracepoint (b))
7599         && solib_contains_address_p (solib, loc->address))
7600       {
7601         loc->shlib_disabled = 1;
7602         /* At this point, we cannot rely on remove_breakpoint
7603            succeeding so we must mark the breakpoint as not inserted
7604            to prevent future errors occurring in remove_breakpoints.  */
7605         loc->inserted = 0;
7606
7607         /* This may cause duplicate notifications for the same breakpoint.  */
7608         gdb::observers::breakpoint_modified.notify (b);
7609
7610         if (!disabled_shlib_breaks)
7611           {
7612             target_terminal::ours_for_output ();
7613             warning (_("Temporarily disabling breakpoints "
7614                        "for unloaded shared library \"%s\""),
7615                      solib->so_name);
7616           }
7617         disabled_shlib_breaks = 1;
7618       }
7619   }
7620 }
7621
7622 /* Disable any breakpoints and tracepoints in OBJFILE upon
7623    notification of free_objfile.  Only apply to enabled breakpoints,
7624    disabled ones can just stay disabled.  */
7625
7626 static void
7627 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7628 {
7629   struct breakpoint *b;
7630
7631   if (objfile == NULL)
7632     return;
7633
7634   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7635      managed by the user with add-symbol-file/remove-symbol-file.
7636      Similarly to how breakpoints in shared libraries are handled in
7637      response to "nosharedlibrary", mark breakpoints in such modules
7638      shlib_disabled so they end up uninserted on the next global
7639      location list update.  Shared libraries not loaded by the user
7640      aren't handled here -- they're already handled in
7641      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7642      solib_unloaded observer.  We skip objfiles that are not
7643      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7644      main objfile).  */
7645   if ((objfile->flags & OBJF_SHARED) == 0
7646       || (objfile->flags & OBJF_USERLOADED) == 0)
7647     return;
7648
7649   ALL_BREAKPOINTS (b)
7650     {
7651       struct bp_location *loc;
7652       int bp_modified = 0;
7653
7654       if (!is_breakpoint (b) && !is_tracepoint (b))
7655         continue;
7656
7657       for (loc = b->loc; loc != NULL; loc = loc->next)
7658         {
7659           CORE_ADDR loc_addr = loc->address;
7660
7661           if (loc->loc_type != bp_loc_hardware_breakpoint
7662               && loc->loc_type != bp_loc_software_breakpoint)
7663             continue;
7664
7665           if (loc->shlib_disabled != 0)
7666             continue;
7667
7668           if (objfile->pspace != loc->pspace)
7669             continue;
7670
7671           if (loc->loc_type != bp_loc_hardware_breakpoint
7672               && loc->loc_type != bp_loc_software_breakpoint)
7673             continue;
7674
7675           if (is_addr_in_objfile (loc_addr, objfile))
7676             {
7677               loc->shlib_disabled = 1;
7678               /* At this point, we don't know whether the object was
7679                  unmapped from the inferior or not, so leave the
7680                  inserted flag alone.  We'll handle failure to
7681                  uninsert quietly, in case the object was indeed
7682                  unmapped.  */
7683
7684               mark_breakpoint_location_modified (loc);
7685
7686               bp_modified = 1;
7687             }
7688         }
7689
7690       if (bp_modified)
7691         gdb::observers::breakpoint_modified.notify (b);
7692     }
7693 }
7694
7695 /* FORK & VFORK catchpoints.  */
7696
7697 /* An instance of this type is used to represent a fork or vfork
7698    catchpoint.  A breakpoint is really of this type iff its ops pointer points
7699    to CATCH_FORK_BREAKPOINT_OPS.  */
7700
7701 struct fork_catchpoint : public breakpoint
7702 {
7703   /* Process id of a child process whose forking triggered this
7704      catchpoint.  This field is only valid immediately after this
7705      catchpoint has triggered.  */
7706   ptid_t forked_inferior_pid;
7707 };
7708
7709 /* Implement the "insert" breakpoint_ops method for fork
7710    catchpoints.  */
7711
7712 static int
7713 insert_catch_fork (struct bp_location *bl)
7714 {
7715   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7716 }
7717
7718 /* Implement the "remove" breakpoint_ops method for fork
7719    catchpoints.  */
7720
7721 static int
7722 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
7723 {
7724   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7725 }
7726
7727 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7728    catchpoints.  */
7729
7730 static int
7731 breakpoint_hit_catch_fork (const struct bp_location *bl,
7732                            const address_space *aspace, CORE_ADDR bp_addr,
7733                            const struct target_waitstatus *ws)
7734 {
7735   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7736
7737   if (ws->kind != TARGET_WAITKIND_FORKED)
7738     return 0;
7739
7740   c->forked_inferior_pid = ws->value.related_pid;
7741   return 1;
7742 }
7743
7744 /* Implement the "print_it" breakpoint_ops method for fork
7745    catchpoints.  */
7746
7747 static enum print_stop_action
7748 print_it_catch_fork (bpstat bs)
7749 {
7750   struct ui_out *uiout = current_uiout;
7751   struct breakpoint *b = bs->breakpoint_at;
7752   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7753
7754   annotate_catchpoint (b->number);
7755   maybe_print_thread_hit_breakpoint (uiout);
7756   if (b->disposition == disp_del)
7757     uiout->text ("Temporary catchpoint ");
7758   else
7759     uiout->text ("Catchpoint ");
7760   if (uiout->is_mi_like_p ())
7761     {
7762       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
7763       uiout->field_string ("disp", bpdisp_text (b->disposition));
7764     }
7765   uiout->field_int ("bkptno", b->number);
7766   uiout->text (" (forked process ");
7767   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7768   uiout->text ("), ");
7769   return PRINT_SRC_AND_LOC;
7770 }
7771
7772 /* Implement the "print_one" breakpoint_ops method for fork
7773    catchpoints.  */
7774
7775 static void
7776 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7777 {
7778   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7779   struct value_print_options opts;
7780   struct ui_out *uiout = current_uiout;
7781
7782   get_user_print_options (&opts);
7783
7784   /* Field 4, the address, is omitted (which makes the columns not
7785      line up too nicely with the headers, but the effect is relatively
7786      readable).  */
7787   if (opts.addressprint)
7788     uiout->field_skip ("addr");
7789   annotate_field (5);
7790   uiout->text ("fork");
7791   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7792     {
7793       uiout->text (", process ");
7794       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7795       uiout->spaces (1);
7796     }
7797
7798   if (uiout->is_mi_like_p ())
7799     uiout->field_string ("catch-type", "fork");
7800 }
7801
7802 /* Implement the "print_mention" breakpoint_ops method for fork
7803    catchpoints.  */
7804
7805 static void
7806 print_mention_catch_fork (struct breakpoint *b)
7807 {
7808   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7809 }
7810
7811 /* Implement the "print_recreate" breakpoint_ops method for fork
7812    catchpoints.  */
7813
7814 static void
7815 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7816 {
7817   fprintf_unfiltered (fp, "catch fork");
7818   print_recreate_thread (b, fp);
7819 }
7820
7821 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7822
7823 static struct breakpoint_ops catch_fork_breakpoint_ops;
7824
7825 /* Implement the "insert" breakpoint_ops method for vfork
7826    catchpoints.  */
7827
7828 static int
7829 insert_catch_vfork (struct bp_location *bl)
7830 {
7831   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7832 }
7833
7834 /* Implement the "remove" breakpoint_ops method for vfork
7835    catchpoints.  */
7836
7837 static int
7838 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
7839 {
7840   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7841 }
7842
7843 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7844    catchpoints.  */
7845
7846 static int
7847 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7848                             const address_space *aspace, CORE_ADDR bp_addr,
7849                             const struct target_waitstatus *ws)
7850 {
7851   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7852
7853   if (ws->kind != TARGET_WAITKIND_VFORKED)
7854     return 0;
7855
7856   c->forked_inferior_pid = ws->value.related_pid;
7857   return 1;
7858 }
7859
7860 /* Implement the "print_it" breakpoint_ops method for vfork
7861    catchpoints.  */
7862
7863 static enum print_stop_action
7864 print_it_catch_vfork (bpstat bs)
7865 {
7866   struct ui_out *uiout = current_uiout;
7867   struct breakpoint *b = bs->breakpoint_at;
7868   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7869
7870   annotate_catchpoint (b->number);
7871   maybe_print_thread_hit_breakpoint (uiout);
7872   if (b->disposition == disp_del)
7873     uiout->text ("Temporary catchpoint ");
7874   else
7875     uiout->text ("Catchpoint ");
7876   if (uiout->is_mi_like_p ())
7877     {
7878       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
7879       uiout->field_string ("disp", bpdisp_text (b->disposition));
7880     }
7881   uiout->field_int ("bkptno", b->number);
7882   uiout->text (" (vforked process ");
7883   uiout->field_int ("newpid", ptid_get_pid (c->forked_inferior_pid));
7884   uiout->text ("), ");
7885   return PRINT_SRC_AND_LOC;
7886 }
7887
7888 /* Implement the "print_one" breakpoint_ops method for vfork
7889    catchpoints.  */
7890
7891 static void
7892 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7893 {
7894   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7895   struct value_print_options opts;
7896   struct ui_out *uiout = current_uiout;
7897
7898   get_user_print_options (&opts);
7899   /* Field 4, the address, is omitted (which makes the columns not
7900      line up too nicely with the headers, but the effect is relatively
7901      readable).  */
7902   if (opts.addressprint)
7903     uiout->field_skip ("addr");
7904   annotate_field (5);
7905   uiout->text ("vfork");
7906   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7907     {
7908       uiout->text (", process ");
7909       uiout->field_int ("what", ptid_get_pid (c->forked_inferior_pid));
7910       uiout->spaces (1);
7911     }
7912
7913   if (uiout->is_mi_like_p ())
7914     uiout->field_string ("catch-type", "vfork");
7915 }
7916
7917 /* Implement the "print_mention" breakpoint_ops method for vfork
7918    catchpoints.  */
7919
7920 static void
7921 print_mention_catch_vfork (struct breakpoint *b)
7922 {
7923   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7924 }
7925
7926 /* Implement the "print_recreate" breakpoint_ops method for vfork
7927    catchpoints.  */
7928
7929 static void
7930 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7931 {
7932   fprintf_unfiltered (fp, "catch vfork");
7933   print_recreate_thread (b, fp);
7934 }
7935
7936 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7937
7938 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7939
7940 /* An instance of this type is used to represent an solib catchpoint.
7941    A breakpoint is really of this type iff its ops pointer points to
7942    CATCH_SOLIB_BREAKPOINT_OPS.  */
7943
7944 struct solib_catchpoint : public breakpoint
7945 {
7946   ~solib_catchpoint () override;
7947
7948   /* True for "catch load", false for "catch unload".  */
7949   unsigned char is_load;
7950
7951   /* Regular expression to match, if any.  COMPILED is only valid when
7952      REGEX is non-NULL.  */
7953   char *regex;
7954   std::unique_ptr<compiled_regex> compiled;
7955 };
7956
7957 solib_catchpoint::~solib_catchpoint ()
7958 {
7959   xfree (this->regex);
7960 }
7961
7962 static int
7963 insert_catch_solib (struct bp_location *ignore)
7964 {
7965   return 0;
7966 }
7967
7968 static int
7969 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
7970 {
7971   return 0;
7972 }
7973
7974 static int
7975 breakpoint_hit_catch_solib (const struct bp_location *bl,
7976                             const address_space *aspace,
7977                             CORE_ADDR bp_addr,
7978                             const struct target_waitstatus *ws)
7979 {
7980   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7981   struct breakpoint *other;
7982
7983   if (ws->kind == TARGET_WAITKIND_LOADED)
7984     return 1;
7985
7986   ALL_BREAKPOINTS (other)
7987   {
7988     struct bp_location *other_bl;
7989
7990     if (other == bl->owner)
7991       continue;
7992
7993     if (other->type != bp_shlib_event)
7994       continue;
7995
7996     if (self->pspace != NULL && other->pspace != self->pspace)
7997       continue;
7998
7999     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8000       {
8001         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8002           return 1;
8003       }
8004   }
8005
8006   return 0;
8007 }
8008
8009 static void
8010 check_status_catch_solib (struct bpstats *bs)
8011 {
8012   struct solib_catchpoint *self
8013     = (struct solib_catchpoint *) bs->breakpoint_at;
8014
8015   if (self->is_load)
8016     {
8017       for (so_list *iter : current_program_space->added_solibs)
8018         {
8019           if (!self->regex
8020               || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
8021             return;
8022         }
8023     }
8024   else
8025     {
8026       for (const std::string &iter : current_program_space->deleted_solibs)
8027         {
8028           if (!self->regex
8029               || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
8030             return;
8031         }
8032     }
8033
8034   bs->stop = 0;
8035   bs->print_it = print_it_noop;
8036 }
8037
8038 static enum print_stop_action
8039 print_it_catch_solib (bpstat bs)
8040 {
8041   struct breakpoint *b = bs->breakpoint_at;
8042   struct ui_out *uiout = current_uiout;
8043
8044   annotate_catchpoint (b->number);
8045   maybe_print_thread_hit_breakpoint (uiout);
8046   if (b->disposition == disp_del)
8047     uiout->text ("Temporary catchpoint ");
8048   else
8049     uiout->text ("Catchpoint ");
8050   uiout->field_int ("bkptno", b->number);
8051   uiout->text ("\n");
8052   if (uiout->is_mi_like_p ())
8053     uiout->field_string ("disp", bpdisp_text (b->disposition));
8054   print_solib_event (1);
8055   return PRINT_SRC_AND_LOC;
8056 }
8057
8058 static void
8059 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8060 {
8061   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8062   struct value_print_options opts;
8063   struct ui_out *uiout = current_uiout;
8064   char *msg;
8065
8066   get_user_print_options (&opts);
8067   /* Field 4, the address, is omitted (which makes the columns not
8068      line up too nicely with the headers, but the effect is relatively
8069      readable).  */
8070   if (opts.addressprint)
8071     {
8072       annotate_field (4);
8073       uiout->field_skip ("addr");
8074     }
8075
8076   annotate_field (5);
8077   if (self->is_load)
8078     {
8079       if (self->regex)
8080         msg = xstrprintf (_("load of library matching %s"), self->regex);
8081       else
8082         msg = xstrdup (_("load of library"));
8083     }
8084   else
8085     {
8086       if (self->regex)
8087         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8088       else
8089         msg = xstrdup (_("unload of library"));
8090     }
8091   uiout->field_string ("what", msg);
8092   xfree (msg);
8093
8094   if (uiout->is_mi_like_p ())
8095     uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
8096 }
8097
8098 static void
8099 print_mention_catch_solib (struct breakpoint *b)
8100 {
8101   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8102
8103   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8104                    self->is_load ? "load" : "unload");
8105 }
8106
8107 static void
8108 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8109 {
8110   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8111
8112   fprintf_unfiltered (fp, "%s %s",
8113                       b->disposition == disp_del ? "tcatch" : "catch",
8114                       self->is_load ? "load" : "unload");
8115   if (self->regex)
8116     fprintf_unfiltered (fp, " %s", self->regex);
8117   fprintf_unfiltered (fp, "\n");
8118 }
8119
8120 static struct breakpoint_ops catch_solib_breakpoint_ops;
8121
8122 /* Shared helper function (MI and CLI) for creating and installing
8123    a shared object event catchpoint.  If IS_LOAD is non-zero then
8124    the events to be caught are load events, otherwise they are
8125    unload events.  If IS_TEMP is non-zero the catchpoint is a
8126    temporary one.  If ENABLED is non-zero the catchpoint is
8127    created in an enabled state.  */
8128
8129 void
8130 add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
8131 {
8132   struct gdbarch *gdbarch = get_current_arch ();
8133
8134   if (!arg)
8135     arg = "";
8136   arg = skip_spaces (arg);
8137
8138   std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
8139
8140   if (*arg != '\0')
8141     {
8142       c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
8143                                              _("Invalid regexp")));
8144       c->regex = xstrdup (arg);
8145     }
8146
8147   c->is_load = is_load;
8148   init_catchpoint (c.get (), gdbarch, is_temp, NULL,
8149                    &catch_solib_breakpoint_ops);
8150
8151   c->enable_state = enabled ? bp_enabled : bp_disabled;
8152
8153   install_breakpoint (0, std::move (c), 1);
8154 }
8155
8156 /* A helper function that does all the work for "catch load" and
8157    "catch unload".  */
8158
8159 static void
8160 catch_load_or_unload (const char *arg, int from_tty, int is_load,
8161                       struct cmd_list_element *command)
8162 {
8163   int tempflag;
8164   const int enabled = 1;
8165
8166   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8167
8168   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8169 }
8170
8171 static void
8172 catch_load_command_1 (const char *arg, int from_tty,
8173                       struct cmd_list_element *command)
8174 {
8175   catch_load_or_unload (arg, from_tty, 1, command);
8176 }
8177
8178 static void
8179 catch_unload_command_1 (const char *arg, int from_tty,
8180                         struct cmd_list_element *command)
8181 {
8182   catch_load_or_unload (arg, from_tty, 0, command);
8183 }
8184
8185 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8186    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8187    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8188    the breakpoint_ops structure associated to the catchpoint.  */
8189
8190 void
8191 init_catchpoint (struct breakpoint *b,
8192                  struct gdbarch *gdbarch, int tempflag,
8193                  const char *cond_string,
8194                  const struct breakpoint_ops *ops)
8195 {
8196   symtab_and_line sal;
8197   sal.pspace = current_program_space;
8198
8199   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8200
8201   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8202   b->disposition = tempflag ? disp_del : disp_donttouch;
8203 }
8204
8205 void
8206 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
8207 {
8208   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
8209   set_breakpoint_number (internal, b);
8210   if (is_tracepoint (b))
8211     set_tracepoint_count (breakpoint_count);
8212   if (!internal)
8213     mention (b);
8214   gdb::observers::breakpoint_created.notify (b);
8215
8216   if (update_gll)
8217     update_global_location_list (UGLL_MAY_INSERT);
8218 }
8219
8220 static void
8221 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8222                                     int tempflag, const char *cond_string,
8223                                     const struct breakpoint_ops *ops)
8224 {
8225   std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
8226
8227   init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
8228
8229   c->forked_inferior_pid = null_ptid;
8230
8231   install_breakpoint (0, std::move (c), 1);
8232 }
8233
8234 /* Exec catchpoints.  */
8235
8236 /* An instance of this type is used to represent an exec catchpoint.
8237    A breakpoint is really of this type iff its ops pointer points to
8238    CATCH_EXEC_BREAKPOINT_OPS.  */
8239
8240 struct exec_catchpoint : public breakpoint
8241 {
8242   ~exec_catchpoint () override;
8243
8244   /* Filename of a program whose exec triggered this catchpoint.
8245      This field is only valid immediately after this catchpoint has
8246      triggered.  */
8247   char *exec_pathname;
8248 };
8249
8250 /* Exec catchpoint destructor.  */
8251
8252 exec_catchpoint::~exec_catchpoint ()
8253 {
8254   xfree (this->exec_pathname);
8255 }
8256
8257 static int
8258 insert_catch_exec (struct bp_location *bl)
8259 {
8260   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8261 }
8262
8263 static int
8264 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8265 {
8266   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8267 }
8268
8269 static int
8270 breakpoint_hit_catch_exec (const struct bp_location *bl,
8271                            const address_space *aspace, CORE_ADDR bp_addr,
8272                            const struct target_waitstatus *ws)
8273 {
8274   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8275
8276   if (ws->kind != TARGET_WAITKIND_EXECD)
8277     return 0;
8278
8279   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8280   return 1;
8281 }
8282
8283 static enum print_stop_action
8284 print_it_catch_exec (bpstat bs)
8285 {
8286   struct ui_out *uiout = current_uiout;
8287   struct breakpoint *b = bs->breakpoint_at;
8288   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8289
8290   annotate_catchpoint (b->number);
8291   maybe_print_thread_hit_breakpoint (uiout);
8292   if (b->disposition == disp_del)
8293     uiout->text ("Temporary catchpoint ");
8294   else
8295     uiout->text ("Catchpoint ");
8296   if (uiout->is_mi_like_p ())
8297     {
8298       uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
8299       uiout->field_string ("disp", bpdisp_text (b->disposition));
8300     }
8301   uiout->field_int ("bkptno", b->number);
8302   uiout->text (" (exec'd ");
8303   uiout->field_string ("new-exec", c->exec_pathname);
8304   uiout->text ("), ");
8305
8306   return PRINT_SRC_AND_LOC;
8307 }
8308
8309 static void
8310 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8311 {
8312   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8313   struct value_print_options opts;
8314   struct ui_out *uiout = current_uiout;
8315
8316   get_user_print_options (&opts);
8317
8318   /* Field 4, the address, is omitted (which makes the columns
8319      not line up too nicely with the headers, but the effect
8320      is relatively readable).  */
8321   if (opts.addressprint)
8322     uiout->field_skip ("addr");
8323   annotate_field (5);
8324   uiout->text ("exec");
8325   if (c->exec_pathname != NULL)
8326     {
8327       uiout->text (", program \"");
8328       uiout->field_string ("what", c->exec_pathname);
8329       uiout->text ("\" ");
8330     }
8331
8332   if (uiout->is_mi_like_p ())
8333     uiout->field_string ("catch-type", "exec");
8334 }
8335
8336 static void
8337 print_mention_catch_exec (struct breakpoint *b)
8338 {
8339   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8340 }
8341
8342 /* Implement the "print_recreate" breakpoint_ops method for exec
8343    catchpoints.  */
8344
8345 static void
8346 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8347 {
8348   fprintf_unfiltered (fp, "catch exec");
8349   print_recreate_thread (b, fp);
8350 }
8351
8352 static struct breakpoint_ops catch_exec_breakpoint_ops;
8353
8354 static int
8355 hw_breakpoint_used_count (void)
8356 {
8357   int i = 0;
8358   struct breakpoint *b;
8359   struct bp_location *bl;
8360
8361   ALL_BREAKPOINTS (b)
8362   {
8363     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8364       for (bl = b->loc; bl; bl = bl->next)
8365         {
8366           /* Special types of hardware breakpoints may use more than
8367              one register.  */
8368           i += b->ops->resources_needed (bl);
8369         }
8370   }
8371
8372   return i;
8373 }
8374
8375 /* Returns the resources B would use if it were a hardware
8376    watchpoint.  */
8377
8378 static int
8379 hw_watchpoint_use_count (struct breakpoint *b)
8380 {
8381   int i = 0;
8382   struct bp_location *bl;
8383
8384   if (!breakpoint_enabled (b))
8385     return 0;
8386
8387   for (bl = b->loc; bl; bl = bl->next)
8388     {
8389       /* Special types of hardware watchpoints may use more than
8390          one register.  */
8391       i += b->ops->resources_needed (bl);
8392     }
8393
8394   return i;
8395 }
8396
8397 /* Returns the sum the used resources of all hardware watchpoints of
8398    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8399    the sum of the used resources of all hardware watchpoints of other
8400    types _not_ TYPE.  */
8401
8402 static int
8403 hw_watchpoint_used_count_others (struct breakpoint *except,
8404                                  enum bptype type, int *other_type_used)
8405 {
8406   int i = 0;
8407   struct breakpoint *b;
8408
8409   *other_type_used = 0;
8410   ALL_BREAKPOINTS (b)
8411     {
8412       if (b == except)
8413         continue;
8414       if (!breakpoint_enabled (b))
8415         continue;
8416
8417       if (b->type == type)
8418         i += hw_watchpoint_use_count (b);
8419       else if (is_hardware_watchpoint (b))
8420         *other_type_used = 1;
8421     }
8422
8423   return i;
8424 }
8425
8426 void
8427 disable_watchpoints_before_interactive_call_start (void)
8428 {
8429   struct breakpoint *b;
8430
8431   ALL_BREAKPOINTS (b)
8432   {
8433     if (is_watchpoint (b) && breakpoint_enabled (b))
8434       {
8435         b->enable_state = bp_call_disabled;
8436         update_global_location_list (UGLL_DONT_INSERT);
8437       }
8438   }
8439 }
8440
8441 void
8442 enable_watchpoints_after_interactive_call_stop (void)
8443 {
8444   struct breakpoint *b;
8445
8446   ALL_BREAKPOINTS (b)
8447   {
8448     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8449       {
8450         b->enable_state = bp_enabled;
8451         update_global_location_list (UGLL_MAY_INSERT);
8452       }
8453   }
8454 }
8455
8456 void
8457 disable_breakpoints_before_startup (void)
8458 {
8459   current_program_space->executing_startup = 1;
8460   update_global_location_list (UGLL_DONT_INSERT);
8461 }
8462
8463 void
8464 enable_breakpoints_after_startup (void)
8465 {
8466   current_program_space->executing_startup = 0;
8467   breakpoint_re_set ();
8468 }
8469
8470 /* Create a new single-step breakpoint for thread THREAD, with no
8471    locations.  */
8472
8473 static struct breakpoint *
8474 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8475 {
8476   std::unique_ptr<breakpoint> b (new breakpoint ());
8477
8478   init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
8479                                         &momentary_breakpoint_ops);
8480
8481   b->disposition = disp_donttouch;
8482   b->frame_id = null_frame_id;
8483
8484   b->thread = thread;
8485   gdb_assert (b->thread != 0);
8486
8487   return add_to_breakpoint_chain (std::move (b));
8488 }
8489
8490 /* Set a momentary breakpoint of type TYPE at address specified by
8491    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8492    frame.  */
8493
8494 breakpoint_up
8495 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8496                           struct frame_id frame_id, enum bptype type)
8497 {
8498   struct breakpoint *b;
8499
8500   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8501      tail-called one.  */
8502   gdb_assert (!frame_id_artificial_p (frame_id));
8503
8504   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8505   b->enable_state = bp_enabled;
8506   b->disposition = disp_donttouch;
8507   b->frame_id = frame_id;
8508
8509   b->thread = inferior_thread ()->global_num;
8510
8511   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8512
8513   return breakpoint_up (b);
8514 }
8515
8516 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8517    The new breakpoint will have type TYPE, use OPS as its
8518    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8519
8520 static struct breakpoint *
8521 momentary_breakpoint_from_master (struct breakpoint *orig,
8522                                   enum bptype type,
8523                                   const struct breakpoint_ops *ops,
8524                                   int loc_enabled)
8525 {
8526   struct breakpoint *copy;
8527
8528   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8529   copy->loc = allocate_bp_location (copy);
8530   set_breakpoint_location_function (copy->loc, 1);
8531
8532   copy->loc->gdbarch = orig->loc->gdbarch;
8533   copy->loc->requested_address = orig->loc->requested_address;
8534   copy->loc->address = orig->loc->address;
8535   copy->loc->section = orig->loc->section;
8536   copy->loc->pspace = orig->loc->pspace;
8537   copy->loc->probe = orig->loc->probe;
8538   copy->loc->line_number = orig->loc->line_number;
8539   copy->loc->symtab = orig->loc->symtab;
8540   copy->loc->enabled = loc_enabled;
8541   copy->frame_id = orig->frame_id;
8542   copy->thread = orig->thread;
8543   copy->pspace = orig->pspace;
8544
8545   copy->enable_state = bp_enabled;
8546   copy->disposition = disp_donttouch;
8547   copy->number = internal_breakpoint_number--;
8548
8549   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8550   return copy;
8551 }
8552
8553 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8554    ORIG is NULL.  */
8555
8556 struct breakpoint *
8557 clone_momentary_breakpoint (struct breakpoint *orig)
8558 {
8559   /* If there's nothing to clone, then return nothing.  */
8560   if (orig == NULL)
8561     return NULL;
8562
8563   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8564 }
8565
8566 breakpoint_up
8567 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8568                                 enum bptype type)
8569 {
8570   struct symtab_and_line sal;
8571
8572   sal = find_pc_line (pc, 0);
8573   sal.pc = pc;
8574   sal.section = find_pc_overlay (pc);
8575   sal.explicit_pc = 1;
8576
8577   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8578 }
8579 \f
8580
8581 /* Tell the user we have just set a breakpoint B.  */
8582
8583 static void
8584 mention (struct breakpoint *b)
8585 {
8586   b->ops->print_mention (b);
8587   current_uiout->text ("\n");
8588 }
8589 \f
8590
8591 static int bp_loc_is_permanent (struct bp_location *loc);
8592
8593 static struct bp_location *
8594 add_location_to_breakpoint (struct breakpoint *b,
8595                             const struct symtab_and_line *sal)
8596 {
8597   struct bp_location *loc, **tmp;
8598   CORE_ADDR adjusted_address;
8599   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8600
8601   if (loc_gdbarch == NULL)
8602     loc_gdbarch = b->gdbarch;
8603
8604   /* Adjust the breakpoint's address prior to allocating a location.
8605      Once we call allocate_bp_location(), that mostly uninitialized
8606      location will be placed on the location chain.  Adjustment of the
8607      breakpoint may cause target_read_memory() to be called and we do
8608      not want its scan of the location chain to find a breakpoint and
8609      location that's only been partially initialized.  */
8610   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8611                                                 sal->pc, b->type);
8612
8613   /* Sort the locations by their ADDRESS.  */
8614   loc = allocate_bp_location (b);
8615   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8616        tmp = &((*tmp)->next))
8617     ;
8618   loc->next = *tmp;
8619   *tmp = loc;
8620
8621   loc->requested_address = sal->pc;
8622   loc->address = adjusted_address;
8623   loc->pspace = sal->pspace;
8624   loc->probe.prob = sal->prob;
8625   loc->probe.objfile = sal->objfile;
8626   gdb_assert (loc->pspace != NULL);
8627   loc->section = sal->section;
8628   loc->gdbarch = loc_gdbarch;
8629   loc->line_number = sal->line;
8630   loc->symtab = sal->symtab;
8631   loc->symbol = sal->symbol;
8632   loc->msymbol = sal->msymbol;
8633   loc->objfile = sal->objfile;
8634
8635   set_breakpoint_location_function (loc,
8636                                     sal->explicit_pc || sal->explicit_line);
8637
8638   /* While by definition, permanent breakpoints are already present in the
8639      code, we don't mark the location as inserted.  Normally one would expect
8640      that GDB could rely on that breakpoint instruction to stop the program,
8641      thus removing the need to insert its own breakpoint, except that executing
8642      the breakpoint instruction can kill the target instead of reporting a
8643      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
8644      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
8645      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
8646      breakpoint be inserted normally results in QEMU knowing about the GDB
8647      breakpoint, and thus trap before the breakpoint instruction is executed.
8648      (If GDB later needs to continue execution past the permanent breakpoint,
8649      it manually increments the PC, thus avoiding executing the breakpoint
8650      instruction.)  */
8651   if (bp_loc_is_permanent (loc))
8652     loc->permanent = 1;
8653
8654   return loc;
8655 }
8656 \f
8657
8658 /* See breakpoint.h.  */
8659
8660 int
8661 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8662 {
8663   int len;
8664   CORE_ADDR addr;
8665   const gdb_byte *bpoint;
8666   gdb_byte *target_mem;
8667
8668   addr = address;
8669   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8670
8671   /* Software breakpoints unsupported?  */
8672   if (bpoint == NULL)
8673     return 0;
8674
8675   target_mem = (gdb_byte *) alloca (len);
8676
8677   /* Enable the automatic memory restoration from breakpoints while
8678      we read the memory.  Otherwise we could say about our temporary
8679      breakpoints they are permanent.  */
8680   scoped_restore restore_memory
8681     = make_scoped_restore_show_memory_breakpoints (0);
8682
8683   if (target_read_memory (address, target_mem, len) == 0
8684       && memcmp (target_mem, bpoint, len) == 0)
8685     return 1;
8686
8687   return 0;
8688 }
8689
8690 /* Return 1 if LOC is pointing to a permanent breakpoint,
8691    return 0 otherwise.  */
8692
8693 static int
8694 bp_loc_is_permanent (struct bp_location *loc)
8695 {
8696   gdb_assert (loc != NULL);
8697
8698   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
8699      attempt to read from the addresses the locations of these breakpoint types
8700      point to.  program_breakpoint_here_p, below, will attempt to read
8701      memory.  */
8702   if (!breakpoint_address_is_meaningful (loc->owner))
8703     return 0;
8704
8705   scoped_restore_current_pspace_and_thread restore_pspace_thread;
8706   switch_to_program_space_and_thread (loc->pspace);
8707   return program_breakpoint_here_p (loc->gdbarch, loc->address);
8708 }
8709
8710 /* Build a command list for the dprintf corresponding to the current
8711    settings of the dprintf style options.  */
8712
8713 static void
8714 update_dprintf_command_list (struct breakpoint *b)
8715 {
8716   char *dprintf_args = b->extra_string;
8717   char *printf_line = NULL;
8718
8719   if (!dprintf_args)
8720     return;
8721
8722   dprintf_args = skip_spaces (dprintf_args);
8723
8724   /* Allow a comma, as it may have terminated a location, but don't
8725      insist on it.  */
8726   if (*dprintf_args == ',')
8727     ++dprintf_args;
8728   dprintf_args = skip_spaces (dprintf_args);
8729
8730   if (*dprintf_args != '"')
8731     error (_("Bad format string, missing '\"'."));
8732
8733   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8734     printf_line = xstrprintf ("printf %s", dprintf_args);
8735   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8736     {
8737       if (!dprintf_function)
8738         error (_("No function supplied for dprintf call"));
8739
8740       if (dprintf_channel && strlen (dprintf_channel) > 0)
8741         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8742                                   dprintf_function,
8743                                   dprintf_channel,
8744                                   dprintf_args);
8745       else
8746         printf_line = xstrprintf ("call (void) %s (%s)",
8747                                   dprintf_function,
8748                                   dprintf_args);
8749     }
8750   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8751     {
8752       if (target_can_run_breakpoint_commands ())
8753         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8754       else
8755         {
8756           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8757           printf_line = xstrprintf ("printf %s", dprintf_args);
8758         }
8759     }
8760   else
8761     internal_error (__FILE__, __LINE__,
8762                     _("Invalid dprintf style."));
8763
8764   gdb_assert (printf_line != NULL);
8765
8766   /* Manufacture a printf sequence.  */
8767   struct command_line *printf_cmd_line
8768     = new struct command_line (simple_control, printf_line);
8769   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
8770                                                     command_lines_deleter ()));
8771 }
8772
8773 /* Update all dprintf commands, making their command lists reflect
8774    current style settings.  */
8775
8776 static void
8777 update_dprintf_commands (const char *args, int from_tty,
8778                          struct cmd_list_element *c)
8779 {
8780   struct breakpoint *b;
8781
8782   ALL_BREAKPOINTS (b)
8783     {
8784       if (b->type == bp_dprintf)
8785         update_dprintf_command_list (b);
8786     }
8787 }
8788
8789 /* Create a breakpoint with SAL as location.  Use LOCATION
8790    as a description of the location, and COND_STRING
8791    as condition expression.  If LOCATION is NULL then create an
8792    "address location" from the address in the SAL.  */
8793
8794 static void
8795 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8796                      gdb::array_view<const symtab_and_line> sals,
8797                      event_location_up &&location,
8798                      gdb::unique_xmalloc_ptr<char> filter,
8799                      gdb::unique_xmalloc_ptr<char> cond_string,
8800                      gdb::unique_xmalloc_ptr<char> extra_string,
8801                      enum bptype type, enum bpdisp disposition,
8802                      int thread, int task, int ignore_count,
8803                      const struct breakpoint_ops *ops, int from_tty,
8804                      int enabled, int internal, unsigned flags,
8805                      int display_canonical)
8806 {
8807   int i;
8808
8809   if (type == bp_hardware_breakpoint)
8810     {
8811       int target_resources_ok;
8812
8813       i = hw_breakpoint_used_count ();
8814       target_resources_ok =
8815         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8816                                             i + 1, 0);
8817       if (target_resources_ok == 0)
8818         error (_("No hardware breakpoint support in the target."));
8819       else if (target_resources_ok < 0)
8820         error (_("Hardware breakpoints used exceeds limit."));
8821     }
8822
8823   gdb_assert (!sals.empty ());
8824
8825   for (const auto &sal : sals)
8826     {
8827       struct bp_location *loc;
8828
8829       if (from_tty)
8830         {
8831           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8832           if (!loc_gdbarch)
8833             loc_gdbarch = gdbarch;
8834
8835           describe_other_breakpoints (loc_gdbarch,
8836                                       sal.pspace, sal.pc, sal.section, thread);
8837         }
8838
8839       if (&sal == &sals[0])
8840         {
8841           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8842           b->thread = thread;
8843           b->task = task;
8844
8845           b->cond_string = cond_string.release ();
8846           b->extra_string = extra_string.release ();
8847           b->ignore_count = ignore_count;
8848           b->enable_state = enabled ? bp_enabled : bp_disabled;
8849           b->disposition = disposition;
8850
8851           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8852             b->loc->inserted = 1;
8853
8854           if (type == bp_static_tracepoint)
8855             {
8856               struct tracepoint *t = (struct tracepoint *) b;
8857               struct static_tracepoint_marker marker;
8858
8859               if (strace_marker_p (b))
8860                 {
8861                   /* We already know the marker exists, otherwise, we
8862                      wouldn't see a sal for it.  */
8863                   const char *p
8864                     = &event_location_to_string (b->location.get ())[3];
8865                   const char *endp;
8866
8867                   p = skip_spaces (p);
8868
8869                   endp = skip_to_space (p);
8870
8871                   t->static_trace_marker_id.assign (p, endp - p);
8872
8873                   printf_filtered (_("Probed static tracepoint "
8874                                      "marker \"%s\"\n"),
8875                                    t->static_trace_marker_id.c_str ());
8876                 }
8877               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8878                 {
8879                   t->static_trace_marker_id = std::move (marker.str_id);
8880
8881                   printf_filtered (_("Probed static tracepoint "
8882                                      "marker \"%s\"\n"),
8883                                    t->static_trace_marker_id.c_str ());
8884                 }
8885               else
8886                 warning (_("Couldn't determine the static "
8887                            "tracepoint marker to probe"));
8888             }
8889
8890           loc = b->loc;
8891         }
8892       else
8893         {
8894           loc = add_location_to_breakpoint (b, &sal);
8895           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8896             loc->inserted = 1;
8897         }
8898
8899       if (b->cond_string)
8900         {
8901           const char *arg = b->cond_string;
8902
8903           loc->cond = parse_exp_1 (&arg, loc->address,
8904                                    block_for_pc (loc->address), 0);
8905           if (*arg)
8906               error (_("Garbage '%s' follows condition"), arg);
8907         }
8908
8909       /* Dynamic printf requires and uses additional arguments on the
8910          command line, otherwise it's an error.  */
8911       if (type == bp_dprintf)
8912         {
8913           if (b->extra_string)
8914             update_dprintf_command_list (b);
8915           else
8916             error (_("Format string required"));
8917         }
8918       else if (b->extra_string)
8919         error (_("Garbage '%s' at end of command"), b->extra_string);
8920     }
8921
8922   b->display_canonical = display_canonical;
8923   if (location != NULL)
8924     b->location = std::move (location);
8925   else
8926     b->location = new_address_location (b->loc->address, NULL, 0);
8927   b->filter = filter.release ();
8928 }
8929
8930 static void
8931 create_breakpoint_sal (struct gdbarch *gdbarch,
8932                        gdb::array_view<const symtab_and_line> sals,
8933                        event_location_up &&location,
8934                        gdb::unique_xmalloc_ptr<char> filter,
8935                        gdb::unique_xmalloc_ptr<char> cond_string,
8936                        gdb::unique_xmalloc_ptr<char> extra_string,
8937                        enum bptype type, enum bpdisp disposition,
8938                        int thread, int task, int ignore_count,
8939                        const struct breakpoint_ops *ops, int from_tty,
8940                        int enabled, int internal, unsigned flags,
8941                        int display_canonical)
8942 {
8943   std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
8944
8945   init_breakpoint_sal (b.get (), gdbarch,
8946                        sals, std::move (location),
8947                        std::move (filter),
8948                        std::move (cond_string),
8949                        std::move (extra_string),
8950                        type, disposition,
8951                        thread, task, ignore_count,
8952                        ops, from_tty,
8953                        enabled, internal, flags,
8954                        display_canonical);
8955
8956   install_breakpoint (internal, std::move (b), 0);
8957 }
8958
8959 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8960    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8961    value.  COND_STRING, if not NULL, specified the condition to be
8962    used for all breakpoints.  Essentially the only case where
8963    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8964    function.  In that case, it's still not possible to specify
8965    separate conditions for different overloaded functions, so
8966    we take just a single condition string.
8967    
8968    NOTE: If the function succeeds, the caller is expected to cleanup
8969    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8970    array contents).  If the function fails (error() is called), the
8971    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8972    COND and SALS arrays and each of those arrays contents.  */
8973
8974 static void
8975 create_breakpoints_sal (struct gdbarch *gdbarch,
8976                         struct linespec_result *canonical,
8977                         gdb::unique_xmalloc_ptr<char> cond_string,
8978                         gdb::unique_xmalloc_ptr<char> extra_string,
8979                         enum bptype type, enum bpdisp disposition,
8980                         int thread, int task, int ignore_count,
8981                         const struct breakpoint_ops *ops, int from_tty,
8982                         int enabled, int internal, unsigned flags)
8983 {
8984   if (canonical->pre_expanded)
8985     gdb_assert (canonical->lsals.size () == 1);
8986
8987   for (const auto &lsal : canonical->lsals)
8988     {
8989       /* Note that 'location' can be NULL in the case of a plain
8990          'break', without arguments.  */
8991       event_location_up location
8992         = (canonical->location != NULL
8993            ? copy_event_location (canonical->location.get ()) : NULL);
8994       gdb::unique_xmalloc_ptr<char> filter_string
8995         (lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
8996
8997       create_breakpoint_sal (gdbarch, lsal.sals,
8998                              std::move (location),
8999                              std::move (filter_string),
9000                              std::move (cond_string),
9001                              std::move (extra_string),
9002                              type, disposition,
9003                              thread, task, ignore_count, ops,
9004                              from_tty, enabled, internal, flags,
9005                              canonical->special_display);
9006     }
9007 }
9008
9009 /* Parse LOCATION which is assumed to be a SAL specification possibly
9010    followed by conditionals.  On return, SALS contains an array of SAL
9011    addresses found.  LOCATION points to the end of the SAL (for
9012    linespec locations).
9013
9014    The array and the line spec strings are allocated on the heap, it is
9015    the caller's responsibility to free them.  */
9016
9017 static void
9018 parse_breakpoint_sals (const struct event_location *location,
9019                        struct linespec_result *canonical)
9020 {
9021   struct symtab_and_line cursal;
9022
9023   if (event_location_type (location) == LINESPEC_LOCATION)
9024     {
9025       const char *spec = get_linespec_location (location)->spec_string;
9026
9027       if (spec == NULL)
9028         {
9029           /* The last displayed codepoint, if it's valid, is our default
9030              breakpoint address.  */
9031           if (last_displayed_sal_is_valid ())
9032             {
9033               /* Set sal's pspace, pc, symtab, and line to the values
9034                  corresponding to the last call to print_frame_info.
9035                  Be sure to reinitialize LINE with NOTCURRENT == 0
9036                  as the breakpoint line number is inappropriate otherwise.
9037                  find_pc_line would adjust PC, re-set it back.  */
9038               symtab_and_line sal = get_last_displayed_sal ();
9039               CORE_ADDR pc = sal.pc;
9040
9041               sal = find_pc_line (pc, 0);
9042
9043               /* "break" without arguments is equivalent to "break *PC"
9044                  where PC is the last displayed codepoint's address.  So
9045                  make sure to set sal.explicit_pc to prevent GDB from
9046                  trying to expand the list of sals to include all other
9047                  instances with the same symtab and line.  */
9048               sal.pc = pc;
9049               sal.explicit_pc = 1;
9050
9051               struct linespec_sals lsal;
9052               lsal.sals = {sal};
9053               lsal.canonical = NULL;
9054
9055               canonical->lsals.push_back (std::move (lsal));
9056               return;
9057             }
9058           else
9059             error (_("No default breakpoint address now."));
9060         }
9061     }
9062
9063   /* Force almost all breakpoints to be in terms of the
9064      current_source_symtab (which is decode_line_1's default).
9065      This should produce the results we want almost all of the
9066      time while leaving default_breakpoint_* alone.
9067
9068      ObjC: However, don't match an Objective-C method name which
9069      may have a '+' or '-' succeeded by a '['.  */
9070   cursal = get_current_source_symtab_and_line ();
9071   if (last_displayed_sal_is_valid ())
9072     {
9073       const char *spec = NULL;
9074
9075       if (event_location_type (location) == LINESPEC_LOCATION)
9076         spec = get_linespec_location (location)->spec_string;
9077
9078       if (!cursal.symtab
9079           || (spec != NULL
9080               && strchr ("+-", spec[0]) != NULL
9081               && spec[1] != '['))
9082         {
9083           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9084                             get_last_displayed_symtab (),
9085                             get_last_displayed_line (),
9086                             canonical, NULL, NULL);
9087           return;
9088         }
9089     }
9090
9091   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9092                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9093 }
9094
9095
9096 /* Convert each SAL into a real PC.  Verify that the PC can be
9097    inserted as a breakpoint.  If it can't throw an error.  */
9098
9099 static void
9100 breakpoint_sals_to_pc (std::vector<symtab_and_line> &sals)
9101 {    
9102   for (auto &sal : sals)
9103     resolve_sal_pc (&sal);
9104 }
9105
9106 /* Fast tracepoints may have restrictions on valid locations.  For
9107    instance, a fast tracepoint using a jump instead of a trap will
9108    likely have to overwrite more bytes than a trap would, and so can
9109    only be placed where the instruction is longer than the jump, or a
9110    multi-instruction sequence does not have a jump into the middle of
9111    it, etc.  */
9112
9113 static void
9114 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9115                             gdb::array_view<const symtab_and_line> sals)
9116 {
9117   for (const auto &sal : sals)
9118     {
9119       struct gdbarch *sarch;
9120
9121       sarch = get_sal_arch (sal);
9122       /* We fall back to GDBARCH if there is no architecture
9123          associated with SAL.  */
9124       if (sarch == NULL)
9125         sarch = gdbarch;
9126       std::string msg;
9127       if (!gdbarch_fast_tracepoint_valid_at (sarch, sal.pc, &msg))
9128         error (_("May not have a fast tracepoint at %s%s"),
9129                paddress (sarch, sal.pc), msg.c_str ());
9130     }
9131 }
9132
9133 /* Given TOK, a string specification of condition and thread, as
9134    accepted by the 'break' command, extract the condition
9135    string and thread number and set *COND_STRING and *THREAD.
9136    PC identifies the context at which the condition should be parsed.
9137    If no condition is found, *COND_STRING is set to NULL.
9138    If no thread is found, *THREAD is set to -1.  */
9139
9140 static void
9141 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9142                            char **cond_string, int *thread, int *task,
9143                            char **rest)
9144 {
9145   *cond_string = NULL;
9146   *thread = -1;
9147   *task = 0;
9148   *rest = NULL;
9149
9150   while (tok && *tok)
9151     {
9152       const char *end_tok;
9153       int toklen;
9154       const char *cond_start = NULL;
9155       const char *cond_end = NULL;
9156
9157       tok = skip_spaces (tok);
9158
9159       if ((*tok == '"' || *tok == ',') && rest)
9160         {
9161           *rest = savestring (tok, strlen (tok));
9162           return;
9163         }
9164
9165       end_tok = skip_to_space (tok);
9166
9167       toklen = end_tok - tok;
9168
9169       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9170         {
9171           tok = cond_start = end_tok + 1;
9172           parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9173           cond_end = tok;
9174           *cond_string = savestring (cond_start, cond_end - cond_start);
9175         }
9176       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9177         {
9178           const char *tmptok;
9179           struct thread_info *thr;
9180
9181           tok = end_tok + 1;
9182           thr = parse_thread_id (tok, &tmptok);
9183           if (tok == tmptok)
9184             error (_("Junk after thread keyword."));
9185           *thread = thr->global_num;
9186           tok = tmptok;
9187         }
9188       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9189         {
9190           char *tmptok;
9191
9192           tok = end_tok + 1;
9193           *task = strtol (tok, &tmptok, 0);
9194           if (tok == tmptok)
9195             error (_("Junk after task keyword."));
9196           if (!valid_task_id (*task))
9197             error (_("Unknown task %d."), *task);
9198           tok = tmptok;
9199         }
9200       else if (rest)
9201         {
9202           *rest = savestring (tok, strlen (tok));
9203           return;
9204         }
9205       else
9206         error (_("Junk at end of arguments."));
9207     }
9208 }
9209
9210 /* Decode a static tracepoint marker spec.  */
9211
9212 static std::vector<symtab_and_line>
9213 decode_static_tracepoint_spec (const char **arg_p)
9214 {
9215   const char *p = &(*arg_p)[3];
9216   const char *endp;
9217
9218   p = skip_spaces (p);
9219
9220   endp = skip_to_space (p);
9221
9222   std::string marker_str (p, endp - p);
9223
9224   std::vector<static_tracepoint_marker> markers
9225     = target_static_tracepoint_markers_by_strid (marker_str.c_str ());
9226   if (markers.empty ())
9227     error (_("No known static tracepoint marker named %s"),
9228            marker_str.c_str ());
9229
9230   std::vector<symtab_and_line> sals;
9231   sals.reserve (markers.size ());
9232
9233   for (const static_tracepoint_marker &marker : markers)
9234     {
9235       symtab_and_line sal = find_pc_line (marker.address, 0);
9236       sal.pc = marker.address;
9237       sals.push_back (sal);
9238    }
9239
9240   *arg_p = endp;
9241   return sals;
9242 }
9243
9244 /* See breakpoint.h.  */
9245
9246 int
9247 create_breakpoint (struct gdbarch *gdbarch,
9248                    const struct event_location *location,
9249                    const char *cond_string,
9250                    int thread, const char *extra_string,
9251                    int parse_extra,
9252                    int tempflag, enum bptype type_wanted,
9253                    int ignore_count,
9254                    enum auto_boolean pending_break_support,
9255                    const struct breakpoint_ops *ops,
9256                    int from_tty, int enabled, int internal,
9257                    unsigned flags)
9258 {
9259   struct linespec_result canonical;
9260   struct cleanup *bkpt_chain = NULL;
9261   int pending = 0;
9262   int task = 0;
9263   int prev_bkpt_count = breakpoint_count;
9264
9265   gdb_assert (ops != NULL);
9266
9267   /* If extra_string isn't useful, set it to NULL.  */
9268   if (extra_string != NULL && *extra_string == '\0')
9269     extra_string = NULL;
9270
9271   TRY
9272     {
9273       ops->create_sals_from_location (location, &canonical, type_wanted);
9274     }
9275   CATCH (e, RETURN_MASK_ERROR)
9276     {
9277       /* If caller is interested in rc value from parse, set
9278          value.  */
9279       if (e.error == NOT_FOUND_ERROR)
9280         {
9281           /* If pending breakpoint support is turned off, throw
9282              error.  */
9283
9284           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9285             throw_exception (e);
9286
9287           exception_print (gdb_stderr, e);
9288
9289           /* If pending breakpoint support is auto query and the user
9290              selects no, then simply return the error code.  */
9291           if (pending_break_support == AUTO_BOOLEAN_AUTO
9292               && !nquery (_("Make %s pending on future shared library load? "),
9293                           bptype_string (type_wanted)))
9294             return 0;
9295
9296           /* At this point, either the user was queried about setting
9297              a pending breakpoint and selected yes, or pending
9298              breakpoint behavior is on and thus a pending breakpoint
9299              is defaulted on behalf of the user.  */
9300           pending = 1;
9301         }
9302       else
9303         throw_exception (e);
9304     }
9305   END_CATCH
9306
9307   if (!pending && canonical.lsals.empty ())
9308     return 0;
9309
9310   /* ----------------------------- SNIP -----------------------------
9311      Anything added to the cleanup chain beyond this point is assumed
9312      to be part of a breakpoint.  If the breakpoint create succeeds
9313      then the memory is not reclaimed.  */
9314   bkpt_chain = make_cleanup (null_cleanup, 0);
9315
9316   /* Resolve all line numbers to PC's and verify that the addresses
9317      are ok for the target.  */
9318   if (!pending)
9319     {
9320       for (auto &lsal : canonical.lsals)
9321         breakpoint_sals_to_pc (lsal.sals);
9322     }
9323
9324   /* Fast tracepoints may have additional restrictions on location.  */
9325   if (!pending && type_wanted == bp_fast_tracepoint)
9326     {
9327       for (const auto &lsal : canonical.lsals)
9328         check_fast_tracepoint_sals (gdbarch, lsal.sals);
9329     }
9330
9331   /* Verify that condition can be parsed, before setting any
9332      breakpoints.  Allocate a separate condition expression for each
9333      breakpoint.  */
9334   if (!pending)
9335     {
9336       gdb::unique_xmalloc_ptr<char> cond_string_copy;
9337       gdb::unique_xmalloc_ptr<char> extra_string_copy;
9338
9339       if (parse_extra)
9340         {
9341           char *rest;
9342           char *cond;
9343
9344           const linespec_sals &lsal = canonical.lsals[0];
9345
9346           /* Here we only parse 'arg' to separate condition
9347              from thread number, so parsing in context of first
9348              sal is OK.  When setting the breakpoint we'll
9349              re-parse it in context of each sal.  */
9350
9351           find_condition_and_thread (extra_string, lsal.sals[0].pc,
9352                                      &cond, &thread, &task, &rest);
9353           cond_string_copy.reset (cond);
9354           extra_string_copy.reset (rest);
9355         }
9356       else
9357         {
9358           if (type_wanted != bp_dprintf
9359               && extra_string != NULL && *extra_string != '\0')
9360                 error (_("Garbage '%s' at end of location"), extra_string);
9361
9362           /* Create a private copy of condition string.  */
9363           if (cond_string)
9364             cond_string_copy.reset (xstrdup (cond_string));
9365           /* Create a private copy of any extra string.  */
9366           if (extra_string)
9367             extra_string_copy.reset (xstrdup (extra_string));
9368         }
9369
9370       ops->create_breakpoints_sal (gdbarch, &canonical,
9371                                    std::move (cond_string_copy),
9372                                    std::move (extra_string_copy),
9373                                    type_wanted,
9374                                    tempflag ? disp_del : disp_donttouch,
9375                                    thread, task, ignore_count, ops,
9376                                    from_tty, enabled, internal, flags);
9377     }
9378   else
9379     {
9380       std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
9381
9382       init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
9383       b->location = copy_event_location (location);
9384
9385       if (parse_extra)
9386         b->cond_string = NULL;
9387       else
9388         {
9389           /* Create a private copy of condition string.  */
9390           b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
9391           b->thread = thread;
9392         }
9393
9394       /* Create a private copy of any extra string.  */
9395       b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
9396       b->ignore_count = ignore_count;
9397       b->disposition = tempflag ? disp_del : disp_donttouch;
9398       b->condition_not_parsed = 1;
9399       b->enable_state = enabled ? bp_enabled : bp_disabled;
9400       if ((type_wanted != bp_breakpoint
9401            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9402         b->pspace = current_program_space;
9403
9404       install_breakpoint (internal, std::move (b), 0);
9405     }
9406   
9407   if (canonical.lsals.size () > 1)
9408     {
9409       warning (_("Multiple breakpoints were set.\nUse the "
9410                  "\"delete\" command to delete unwanted breakpoints."));
9411       prev_breakpoint_count = prev_bkpt_count;
9412     }
9413
9414   /* That's it.  Discard the cleanups for data inserted into the
9415      breakpoint.  */
9416   discard_cleanups (bkpt_chain);
9417
9418   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9419   update_global_location_list (UGLL_MAY_INSERT);
9420
9421   return 1;
9422 }
9423
9424 /* Set a breakpoint.
9425    ARG is a string describing breakpoint address,
9426    condition, and thread.
9427    FLAG specifies if a breakpoint is hardware on,
9428    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9429    and BP_TEMPFLAG.  */
9430
9431 static void
9432 break_command_1 (const char *arg, int flag, int from_tty)
9433 {
9434   int tempflag = flag & BP_TEMPFLAG;
9435   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9436                              ? bp_hardware_breakpoint
9437                              : bp_breakpoint);
9438   struct breakpoint_ops *ops;
9439
9440   event_location_up location = string_to_event_location (&arg, current_language);
9441
9442   /* Matching breakpoints on probes.  */
9443   if (location != NULL
9444       && event_location_type (location.get ()) == PROBE_LOCATION)
9445     ops = &bkpt_probe_breakpoint_ops;
9446   else
9447     ops = &bkpt_breakpoint_ops;
9448
9449   create_breakpoint (get_current_arch (),
9450                      location.get (),
9451                      NULL, 0, arg, 1 /* parse arg */,
9452                      tempflag, type_wanted,
9453                      0 /* Ignore count */,
9454                      pending_break_support,
9455                      ops,
9456                      from_tty,
9457                      1 /* enabled */,
9458                      0 /* internal */,
9459                      0);
9460 }
9461
9462 /* Helper function for break_command_1 and disassemble_command.  */
9463
9464 void
9465 resolve_sal_pc (struct symtab_and_line *sal)
9466 {
9467   CORE_ADDR pc;
9468
9469   if (sal->pc == 0 && sal->symtab != NULL)
9470     {
9471       if (!find_line_pc (sal->symtab, sal->line, &pc))
9472         error (_("No line %d in file \"%s\"."),
9473                sal->line, symtab_to_filename_for_display (sal->symtab));
9474       sal->pc = pc;
9475
9476       /* If this SAL corresponds to a breakpoint inserted using a line
9477          number, then skip the function prologue if necessary.  */
9478       if (sal->explicit_line)
9479         skip_prologue_sal (sal);
9480     }
9481
9482   if (sal->section == 0 && sal->symtab != NULL)
9483     {
9484       const struct blockvector *bv;
9485       const struct block *b;
9486       struct symbol *sym;
9487
9488       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9489                                     SYMTAB_COMPUNIT (sal->symtab));
9490       if (bv != NULL)
9491         {
9492           sym = block_linkage_function (b);
9493           if (sym != NULL)
9494             {
9495               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9496               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9497                                                  sym);
9498             }
9499           else
9500             {
9501               /* It really is worthwhile to have the section, so we'll
9502                  just have to look harder. This case can be executed
9503                  if we have line numbers but no functions (as can
9504                  happen in assembly source).  */
9505
9506               scoped_restore_current_pspace_and_thread restore_pspace_thread;
9507               switch_to_program_space_and_thread (sal->pspace);
9508
9509               bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
9510               if (msym.minsym)
9511                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9512             }
9513         }
9514     }
9515 }
9516
9517 void
9518 break_command (const char *arg, int from_tty)
9519 {
9520   break_command_1 (arg, 0, from_tty);
9521 }
9522
9523 void
9524 tbreak_command (const char *arg, int from_tty)
9525 {
9526   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9527 }
9528
9529 static void
9530 hbreak_command (const char *arg, int from_tty)
9531 {
9532   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9533 }
9534
9535 static void
9536 thbreak_command (const char *arg, int from_tty)
9537 {
9538   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9539 }
9540
9541 static void
9542 stop_command (const char *arg, int from_tty)
9543 {
9544   printf_filtered (_("Specify the type of breakpoint to set.\n\
9545 Usage: stop in <function | address>\n\
9546        stop at <line>\n"));
9547 }
9548
9549 static void
9550 stopin_command (const char *arg, int from_tty)
9551 {
9552   int badInput = 0;
9553
9554   if (arg == (char *) NULL)
9555     badInput = 1;
9556   else if (*arg != '*')
9557     {
9558       const char *argptr = arg;
9559       int hasColon = 0;
9560
9561       /* Look for a ':'.  If this is a line number specification, then
9562          say it is bad, otherwise, it should be an address or
9563          function/method name.  */
9564       while (*argptr && !hasColon)
9565         {
9566           hasColon = (*argptr == ':');
9567           argptr++;
9568         }
9569
9570       if (hasColon)
9571         badInput = (*argptr != ':');    /* Not a class::method */
9572       else
9573         badInput = isdigit (*arg);      /* a simple line number */
9574     }
9575
9576   if (badInput)
9577     printf_filtered (_("Usage: stop in <function | address>\n"));
9578   else
9579     break_command_1 (arg, 0, from_tty);
9580 }
9581
9582 static void
9583 stopat_command (const char *arg, int from_tty)
9584 {
9585   int badInput = 0;
9586
9587   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9588     badInput = 1;
9589   else
9590     {
9591       const char *argptr = arg;
9592       int hasColon = 0;
9593
9594       /* Look for a ':'.  If there is a '::' then get out, otherwise
9595          it is probably a line number.  */
9596       while (*argptr && !hasColon)
9597         {
9598           hasColon = (*argptr == ':');
9599           argptr++;
9600         }
9601
9602       if (hasColon)
9603         badInput = (*argptr == ':');    /* we have class::method */
9604       else
9605         badInput = !isdigit (*arg);     /* not a line number */
9606     }
9607
9608   if (badInput)
9609     printf_filtered (_("Usage: stop at <line>\n"));
9610   else
9611     break_command_1 (arg, 0, from_tty);
9612 }
9613
9614 /* The dynamic printf command is mostly like a regular breakpoint, but
9615    with a prewired command list consisting of a single output command,
9616    built from extra arguments supplied on the dprintf command
9617    line.  */
9618
9619 static void
9620 dprintf_command (const char *arg, int from_tty)
9621 {
9622   event_location_up location = string_to_event_location (&arg, current_language);
9623
9624   /* If non-NULL, ARG should have been advanced past the location;
9625      the next character must be ','.  */
9626   if (arg != NULL)
9627     {
9628       if (arg[0] != ',' || arg[1] == '\0')
9629         error (_("Format string required"));
9630       else
9631         {
9632           /* Skip the comma.  */
9633           ++arg;
9634         }
9635     }
9636
9637   create_breakpoint (get_current_arch (),
9638                      location.get (),
9639                      NULL, 0, arg, 1 /* parse arg */,
9640                      0, bp_dprintf,
9641                      0 /* Ignore count */,
9642                      pending_break_support,
9643                      &dprintf_breakpoint_ops,
9644                      from_tty,
9645                      1 /* enabled */,
9646                      0 /* internal */,
9647                      0);
9648 }
9649
9650 static void
9651 agent_printf_command (const char *arg, int from_tty)
9652 {
9653   error (_("May only run agent-printf on the target"));
9654 }
9655
9656 /* Implement the "breakpoint_hit" breakpoint_ops method for
9657    ranged breakpoints.  */
9658
9659 static int
9660 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9661                                   const address_space *aspace,
9662                                   CORE_ADDR bp_addr,
9663                                   const struct target_waitstatus *ws)
9664 {
9665   if (ws->kind != TARGET_WAITKIND_STOPPED
9666       || ws->value.sig != GDB_SIGNAL_TRAP)
9667     return 0;
9668
9669   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9670                                          bl->length, aspace, bp_addr);
9671 }
9672
9673 /* Implement the "resources_needed" breakpoint_ops method for
9674    ranged breakpoints.  */
9675
9676 static int
9677 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9678 {
9679   return target_ranged_break_num_registers ();
9680 }
9681
9682 /* Implement the "print_it" breakpoint_ops method for
9683    ranged breakpoints.  */
9684
9685 static enum print_stop_action
9686 print_it_ranged_breakpoint (bpstat bs)
9687 {
9688   struct breakpoint *b = bs->breakpoint_at;
9689   struct bp_location *bl = b->loc;
9690   struct ui_out *uiout = current_uiout;
9691
9692   gdb_assert (b->type == bp_hardware_breakpoint);
9693
9694   /* Ranged breakpoints have only one location.  */
9695   gdb_assert (bl && bl->next == NULL);
9696
9697   annotate_breakpoint (b->number);
9698
9699   maybe_print_thread_hit_breakpoint (uiout);
9700
9701   if (b->disposition == disp_del)
9702     uiout->text ("Temporary ranged breakpoint ");
9703   else
9704     uiout->text ("Ranged breakpoint ");
9705   if (uiout->is_mi_like_p ())
9706     {
9707       uiout->field_string ("reason",
9708                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9709       uiout->field_string ("disp", bpdisp_text (b->disposition));
9710     }
9711   uiout->field_int ("bkptno", b->number);
9712   uiout->text (", ");
9713
9714   return PRINT_SRC_AND_LOC;
9715 }
9716
9717 /* Implement the "print_one" breakpoint_ops method for
9718    ranged breakpoints.  */
9719
9720 static void
9721 print_one_ranged_breakpoint (struct breakpoint *b,
9722                              struct bp_location **last_loc)
9723 {
9724   struct bp_location *bl = b->loc;
9725   struct value_print_options opts;
9726   struct ui_out *uiout = current_uiout;
9727
9728   /* Ranged breakpoints have only one location.  */
9729   gdb_assert (bl && bl->next == NULL);
9730
9731   get_user_print_options (&opts);
9732
9733   if (opts.addressprint)
9734     /* We don't print the address range here, it will be printed later
9735        by print_one_detail_ranged_breakpoint.  */
9736     uiout->field_skip ("addr");
9737   annotate_field (5);
9738   print_breakpoint_location (b, bl);
9739   *last_loc = bl;
9740 }
9741
9742 /* Implement the "print_one_detail" breakpoint_ops method for
9743    ranged breakpoints.  */
9744
9745 static void
9746 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9747                                     struct ui_out *uiout)
9748 {
9749   CORE_ADDR address_start, address_end;
9750   struct bp_location *bl = b->loc;
9751   string_file stb;
9752
9753   gdb_assert (bl);
9754
9755   address_start = bl->address;
9756   address_end = address_start + bl->length - 1;
9757
9758   uiout->text ("\taddress range: ");
9759   stb.printf ("[%s, %s]",
9760               print_core_address (bl->gdbarch, address_start),
9761               print_core_address (bl->gdbarch, address_end));
9762   uiout->field_stream ("addr", stb);
9763   uiout->text ("\n");
9764 }
9765
9766 /* Implement the "print_mention" breakpoint_ops method for
9767    ranged breakpoints.  */
9768
9769 static void
9770 print_mention_ranged_breakpoint (struct breakpoint *b)
9771 {
9772   struct bp_location *bl = b->loc;
9773   struct ui_out *uiout = current_uiout;
9774
9775   gdb_assert (bl);
9776   gdb_assert (b->type == bp_hardware_breakpoint);
9777
9778   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9779                   b->number, paddress (bl->gdbarch, bl->address),
9780                   paddress (bl->gdbarch, bl->address + bl->length - 1));
9781 }
9782
9783 /* Implement the "print_recreate" breakpoint_ops method for
9784    ranged breakpoints.  */
9785
9786 static void
9787 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9788 {
9789   fprintf_unfiltered (fp, "break-range %s, %s",
9790                       event_location_to_string (b->location.get ()),
9791                       event_location_to_string (b->location_range_end.get ()));
9792   print_recreate_thread (b, fp);
9793 }
9794
9795 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9796
9797 static struct breakpoint_ops ranged_breakpoint_ops;
9798
9799 /* Find the address where the end of the breakpoint range should be
9800    placed, given the SAL of the end of the range.  This is so that if
9801    the user provides a line number, the end of the range is set to the
9802    last instruction of the given line.  */
9803
9804 static CORE_ADDR
9805 find_breakpoint_range_end (struct symtab_and_line sal)
9806 {
9807   CORE_ADDR end;
9808
9809   /* If the user provided a PC value, use it.  Otherwise,
9810      find the address of the end of the given location.  */
9811   if (sal.explicit_pc)
9812     end = sal.pc;
9813   else
9814     {
9815       int ret;
9816       CORE_ADDR start;
9817
9818       ret = find_line_pc_range (sal, &start, &end);
9819       if (!ret)
9820         error (_("Could not find location of the end of the range."));
9821
9822       /* find_line_pc_range returns the start of the next line.  */
9823       end--;
9824     }
9825
9826   return end;
9827 }
9828
9829 /* Implement the "break-range" CLI command.  */
9830
9831 static void
9832 break_range_command (const char *arg, int from_tty)
9833 {
9834   const char *arg_start;
9835   struct linespec_result canonical_start, canonical_end;
9836   int bp_count, can_use_bp, length;
9837   CORE_ADDR end;
9838   struct breakpoint *b;
9839
9840   /* We don't support software ranged breakpoints.  */
9841   if (target_ranged_break_num_registers () < 0)
9842     error (_("This target does not support hardware ranged breakpoints."));
9843
9844   bp_count = hw_breakpoint_used_count ();
9845   bp_count += target_ranged_break_num_registers ();
9846   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9847                                                    bp_count, 0);
9848   if (can_use_bp < 0)
9849     error (_("Hardware breakpoints used exceeds limit."));
9850
9851   arg = skip_spaces (arg);
9852   if (arg == NULL || arg[0] == '\0')
9853     error(_("No address range specified."));
9854
9855   arg_start = arg;
9856   event_location_up start_location = string_to_event_location (&arg,
9857                                                                current_language);
9858   parse_breakpoint_sals (start_location.get (), &canonical_start);
9859
9860   if (arg[0] != ',')
9861     error (_("Too few arguments."));
9862   else if (canonical_start.lsals.empty ())
9863     error (_("Could not find location of the beginning of the range."));
9864
9865   const linespec_sals &lsal_start = canonical_start.lsals[0];
9866
9867   if (canonical_start.lsals.size () > 1
9868       || lsal_start.sals.size () != 1)
9869     error (_("Cannot create a ranged breakpoint with multiple locations."));
9870
9871   const symtab_and_line &sal_start = lsal_start.sals[0];
9872   std::string addr_string_start (arg_start, arg - arg_start);
9873
9874   arg++;        /* Skip the comma.  */
9875   arg = skip_spaces (arg);
9876
9877   /* Parse the end location.  */
9878
9879   arg_start = arg;
9880
9881   /* We call decode_line_full directly here instead of using
9882      parse_breakpoint_sals because we need to specify the start location's
9883      symtab and line as the default symtab and line for the end of the
9884      range.  This makes it possible to have ranges like "foo.c:27, +14",
9885      where +14 means 14 lines from the start location.  */
9886   event_location_up end_location = string_to_event_location (&arg,
9887                                                              current_language);
9888   decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
9889                     sal_start.symtab, sal_start.line,
9890                     &canonical_end, NULL, NULL);
9891
9892   if (canonical_end.lsals.empty ())
9893     error (_("Could not find location of the end of the range."));
9894
9895   const linespec_sals &lsal_end = canonical_end.lsals[0];
9896   if (canonical_end.lsals.size () > 1
9897       || lsal_end.sals.size () != 1)
9898     error (_("Cannot create a ranged breakpoint with multiple locations."));
9899
9900   const symtab_and_line &sal_end = lsal_end.sals[0];
9901
9902   end = find_breakpoint_range_end (sal_end);
9903   if (sal_start.pc > end)
9904     error (_("Invalid address range, end precedes start."));
9905
9906   length = end - sal_start.pc + 1;
9907   if (length < 0)
9908     /* Length overflowed.  */
9909     error (_("Address range too large."));
9910   else if (length == 1)
9911     {
9912       /* This range is simple enough to be handled by
9913          the `hbreak' command.  */
9914       hbreak_command (&addr_string_start[0], 1);
9915
9916       return;
9917     }
9918
9919   /* Now set up the breakpoint.  */
9920   b = set_raw_breakpoint (get_current_arch (), sal_start,
9921                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9922   set_breakpoint_count (breakpoint_count + 1);
9923   b->number = breakpoint_count;
9924   b->disposition = disp_donttouch;
9925   b->location = std::move (start_location);
9926   b->location_range_end = std::move (end_location);
9927   b->loc->length = length;
9928
9929   mention (b);
9930   gdb::observers::breakpoint_created.notify (b);
9931   update_global_location_list (UGLL_MAY_INSERT);
9932 }
9933
9934 /*  Return non-zero if EXP is verified as constant.  Returned zero
9935     means EXP is variable.  Also the constant detection may fail for
9936     some constant expressions and in such case still falsely return
9937     zero.  */
9938
9939 static int
9940 watchpoint_exp_is_const (const struct expression *exp)
9941 {
9942   int i = exp->nelts;
9943
9944   while (i > 0)
9945     {
9946       int oplenp, argsp;
9947
9948       /* We are only interested in the descriptor of each element.  */
9949       operator_length (exp, i, &oplenp, &argsp);
9950       i -= oplenp;
9951
9952       switch (exp->elts[i].opcode)
9953         {
9954         case BINOP_ADD:
9955         case BINOP_SUB:
9956         case BINOP_MUL:
9957         case BINOP_DIV:
9958         case BINOP_REM:
9959         case BINOP_MOD:
9960         case BINOP_LSH:
9961         case BINOP_RSH:
9962         case BINOP_LOGICAL_AND:
9963         case BINOP_LOGICAL_OR:
9964         case BINOP_BITWISE_AND:
9965         case BINOP_BITWISE_IOR:
9966         case BINOP_BITWISE_XOR:
9967         case BINOP_EQUAL:
9968         case BINOP_NOTEQUAL:
9969         case BINOP_LESS:
9970         case BINOP_GTR:
9971         case BINOP_LEQ:
9972         case BINOP_GEQ:
9973         case BINOP_REPEAT:
9974         case BINOP_COMMA:
9975         case BINOP_EXP:
9976         case BINOP_MIN:
9977         case BINOP_MAX:
9978         case BINOP_INTDIV:
9979         case BINOP_CONCAT:
9980         case TERNOP_COND:
9981         case TERNOP_SLICE:
9982
9983         case OP_LONG:
9984         case OP_FLOAT:
9985         case OP_LAST:
9986         case OP_COMPLEX:
9987         case OP_STRING:
9988         case OP_ARRAY:
9989         case OP_TYPE:
9990         case OP_TYPEOF:
9991         case OP_DECLTYPE:
9992         case OP_TYPEID:
9993         case OP_NAME:
9994         case OP_OBJC_NSSTRING:
9995
9996         case UNOP_NEG:
9997         case UNOP_LOGICAL_NOT:
9998         case UNOP_COMPLEMENT:
9999         case UNOP_ADDR:
10000         case UNOP_HIGH:
10001         case UNOP_CAST:
10002
10003         case UNOP_CAST_TYPE:
10004         case UNOP_REINTERPRET_CAST:
10005         case UNOP_DYNAMIC_CAST:
10006           /* Unary, binary and ternary operators: We have to check
10007              their operands.  If they are constant, then so is the
10008              result of that operation.  For instance, if A and B are
10009              determined to be constants, then so is "A + B".
10010
10011              UNOP_IND is one exception to the rule above, because the
10012              value of *ADDR is not necessarily a constant, even when
10013              ADDR is.  */
10014           break;
10015
10016         case OP_VAR_VALUE:
10017           /* Check whether the associated symbol is a constant.
10018
10019              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10020              possible that a buggy compiler could mark a variable as
10021              constant even when it is not, and TYPE_CONST would return
10022              true in this case, while SYMBOL_CLASS wouldn't.
10023
10024              We also have to check for function symbols because they
10025              are always constant.  */
10026           {
10027             struct symbol *s = exp->elts[i + 2].symbol;
10028
10029             if (SYMBOL_CLASS (s) != LOC_BLOCK
10030                 && SYMBOL_CLASS (s) != LOC_CONST
10031                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10032               return 0;
10033             break;
10034           }
10035
10036         /* The default action is to return 0 because we are using
10037            the optimistic approach here: If we don't know something,
10038            then it is not a constant.  */
10039         default:
10040           return 0;
10041         }
10042     }
10043
10044   return 1;
10045 }
10046
10047 /* Watchpoint destructor.  */
10048
10049 watchpoint::~watchpoint ()
10050 {
10051   xfree (this->exp_string);
10052   xfree (this->exp_string_reparse);
10053 }
10054
10055 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10056
10057 static void
10058 re_set_watchpoint (struct breakpoint *b)
10059 {
10060   struct watchpoint *w = (struct watchpoint *) b;
10061
10062   /* Watchpoint can be either on expression using entirely global
10063      variables, or it can be on local variables.
10064
10065      Watchpoints of the first kind are never auto-deleted, and even
10066      persist across program restarts.  Since they can use variables
10067      from shared libraries, we need to reparse expression as libraries
10068      are loaded and unloaded.
10069
10070      Watchpoints on local variables can also change meaning as result
10071      of solib event.  For example, if a watchpoint uses both a local
10072      and a global variables in expression, it's a local watchpoint,
10073      but unloading of a shared library will make the expression
10074      invalid.  This is not a very common use case, but we still
10075      re-evaluate expression, to avoid surprises to the user.
10076
10077      Note that for local watchpoints, we re-evaluate it only if
10078      watchpoints frame id is still valid.  If it's not, it means the
10079      watchpoint is out of scope and will be deleted soon.  In fact,
10080      I'm not sure we'll ever be called in this case.
10081
10082      If a local watchpoint's frame id is still valid, then
10083      w->exp_valid_block is likewise valid, and we can safely use it.
10084
10085      Don't do anything about disabled watchpoints, since they will be
10086      reevaluated again when enabled.  */
10087   update_watchpoint (w, 1 /* reparse */);
10088 }
10089
10090 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10091
10092 static int
10093 insert_watchpoint (struct bp_location *bl)
10094 {
10095   struct watchpoint *w = (struct watchpoint *) bl->owner;
10096   int length = w->exact ? 1 : bl->length;
10097
10098   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10099                                    w->cond_exp.get ());
10100 }
10101
10102 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10103
10104 static int
10105 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10106 {
10107   struct watchpoint *w = (struct watchpoint *) bl->owner;
10108   int length = w->exact ? 1 : bl->length;
10109
10110   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10111                                    w->cond_exp.get ());
10112 }
10113
10114 static int
10115 breakpoint_hit_watchpoint (const struct bp_location *bl,
10116                            const address_space *aspace, CORE_ADDR bp_addr,
10117                            const struct target_waitstatus *ws)
10118 {
10119   struct breakpoint *b = bl->owner;
10120   struct watchpoint *w = (struct watchpoint *) b;
10121
10122   /* Continuable hardware watchpoints are treated as non-existent if the
10123      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10124      some data address).  Otherwise gdb won't stop on a break instruction
10125      in the code (not from a breakpoint) when a hardware watchpoint has
10126      been defined.  Also skip watchpoints which we know did not trigger
10127      (did not match the data address).  */
10128   if (is_hardware_watchpoint (b)
10129       && w->watchpoint_triggered == watch_triggered_no)
10130     return 0;
10131
10132   return 1;
10133 }
10134
10135 static void
10136 check_status_watchpoint (bpstat bs)
10137 {
10138   gdb_assert (is_watchpoint (bs->breakpoint_at));
10139
10140   bpstat_check_watchpoint (bs);
10141 }
10142
10143 /* Implement the "resources_needed" breakpoint_ops method for
10144    hardware watchpoints.  */
10145
10146 static int
10147 resources_needed_watchpoint (const struct bp_location *bl)
10148 {
10149   struct watchpoint *w = (struct watchpoint *) bl->owner;
10150   int length = w->exact? 1 : bl->length;
10151
10152   return target_region_ok_for_hw_watchpoint (bl->address, length);
10153 }
10154
10155 /* Implement the "works_in_software_mode" breakpoint_ops method for
10156    hardware watchpoints.  */
10157
10158 static int
10159 works_in_software_mode_watchpoint (const struct breakpoint *b)
10160 {
10161   /* Read and access watchpoints only work with hardware support.  */
10162   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10163 }
10164
10165 static enum print_stop_action
10166 print_it_watchpoint (bpstat bs)
10167 {
10168   struct breakpoint *b;
10169   enum print_stop_action result;
10170   struct watchpoint *w;
10171   struct ui_out *uiout = current_uiout;
10172
10173   gdb_assert (bs->bp_location_at != NULL);
10174
10175   b = bs->breakpoint_at;
10176   w = (struct watchpoint *) b;
10177
10178   annotate_watchpoint (b->number);
10179   maybe_print_thread_hit_breakpoint (uiout);
10180
10181   string_file stb;
10182
10183   gdb::optional<ui_out_emit_tuple> tuple_emitter;
10184   switch (b->type)
10185     {
10186     case bp_watchpoint:
10187     case bp_hardware_watchpoint:
10188       if (uiout->is_mi_like_p ())
10189         uiout->field_string
10190           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10191       mention (b);
10192       tuple_emitter.emplace (uiout, "value");
10193       uiout->text ("\nOld value = ");
10194       watchpoint_value_print (bs->old_val.get (), &stb);
10195       uiout->field_stream ("old", stb);
10196       uiout->text ("\nNew value = ");
10197       watchpoint_value_print (w->val.get (), &stb);
10198       uiout->field_stream ("new", stb);
10199       uiout->text ("\n");
10200       /* More than one watchpoint may have been triggered.  */
10201       result = PRINT_UNKNOWN;
10202       break;
10203
10204     case bp_read_watchpoint:
10205       if (uiout->is_mi_like_p ())
10206         uiout->field_string
10207           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10208       mention (b);
10209       tuple_emitter.emplace (uiout, "value");
10210       uiout->text ("\nValue = ");
10211       watchpoint_value_print (w->val.get (), &stb);
10212       uiout->field_stream ("value", stb);
10213       uiout->text ("\n");
10214       result = PRINT_UNKNOWN;
10215       break;
10216
10217     case bp_access_watchpoint:
10218       if (bs->old_val != NULL)
10219         {
10220           if (uiout->is_mi_like_p ())
10221             uiout->field_string
10222               ("reason",
10223                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10224           mention (b);
10225           tuple_emitter.emplace (uiout, "value");
10226           uiout->text ("\nOld value = ");
10227           watchpoint_value_print (bs->old_val.get (), &stb);
10228           uiout->field_stream ("old", stb);
10229           uiout->text ("\nNew value = ");
10230         }
10231       else
10232         {
10233           mention (b);
10234           if (uiout->is_mi_like_p ())
10235             uiout->field_string
10236               ("reason",
10237                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10238           tuple_emitter.emplace (uiout, "value");
10239           uiout->text ("\nValue = ");
10240         }
10241       watchpoint_value_print (w->val.get (), &stb);
10242       uiout->field_stream ("new", stb);
10243       uiout->text ("\n");
10244       result = PRINT_UNKNOWN;
10245       break;
10246     default:
10247       result = PRINT_UNKNOWN;
10248     }
10249
10250   return result;
10251 }
10252
10253 /* Implement the "print_mention" breakpoint_ops method for hardware
10254    watchpoints.  */
10255
10256 static void
10257 print_mention_watchpoint (struct breakpoint *b)
10258 {
10259   struct watchpoint *w = (struct watchpoint *) b;
10260   struct ui_out *uiout = current_uiout;
10261   const char *tuple_name;
10262
10263   switch (b->type)
10264     {
10265     case bp_watchpoint:
10266       uiout->text ("Watchpoint ");
10267       tuple_name = "wpt";
10268       break;
10269     case bp_hardware_watchpoint:
10270       uiout->text ("Hardware watchpoint ");
10271       tuple_name = "wpt";
10272       break;
10273     case bp_read_watchpoint:
10274       uiout->text ("Hardware read watchpoint ");
10275       tuple_name = "hw-rwpt";
10276       break;
10277     case bp_access_watchpoint:
10278       uiout->text ("Hardware access (read/write) watchpoint ");
10279       tuple_name = "hw-awpt";
10280       break;
10281     default:
10282       internal_error (__FILE__, __LINE__,
10283                       _("Invalid hardware watchpoint type."));
10284     }
10285
10286   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10287   uiout->field_int ("number", b->number);
10288   uiout->text (": ");
10289   uiout->field_string ("exp", w->exp_string);
10290 }
10291
10292 /* Implement the "print_recreate" breakpoint_ops method for
10293    watchpoints.  */
10294
10295 static void
10296 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10297 {
10298   struct watchpoint *w = (struct watchpoint *) b;
10299
10300   switch (b->type)
10301     {
10302     case bp_watchpoint:
10303     case bp_hardware_watchpoint:
10304       fprintf_unfiltered (fp, "watch");
10305       break;
10306     case bp_read_watchpoint:
10307       fprintf_unfiltered (fp, "rwatch");
10308       break;
10309     case bp_access_watchpoint:
10310       fprintf_unfiltered (fp, "awatch");
10311       break;
10312     default:
10313       internal_error (__FILE__, __LINE__,
10314                       _("Invalid watchpoint type."));
10315     }
10316
10317   fprintf_unfiltered (fp, " %s", w->exp_string);
10318   print_recreate_thread (b, fp);
10319 }
10320
10321 /* Implement the "explains_signal" breakpoint_ops method for
10322    watchpoints.  */
10323
10324 static int
10325 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10326 {
10327   /* A software watchpoint cannot cause a signal other than
10328      GDB_SIGNAL_TRAP.  */
10329   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10330     return 0;
10331
10332   return 1;
10333 }
10334
10335 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10336
10337 static struct breakpoint_ops watchpoint_breakpoint_ops;
10338
10339 /* Implement the "insert" breakpoint_ops method for
10340    masked hardware watchpoints.  */
10341
10342 static int
10343 insert_masked_watchpoint (struct bp_location *bl)
10344 {
10345   struct watchpoint *w = (struct watchpoint *) bl->owner;
10346
10347   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10348                                         bl->watchpoint_type);
10349 }
10350
10351 /* Implement the "remove" breakpoint_ops method for
10352    masked hardware watchpoints.  */
10353
10354 static int
10355 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10356 {
10357   struct watchpoint *w = (struct watchpoint *) bl->owner;
10358
10359   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10360                                         bl->watchpoint_type);
10361 }
10362
10363 /* Implement the "resources_needed" breakpoint_ops method for
10364    masked hardware watchpoints.  */
10365
10366 static int
10367 resources_needed_masked_watchpoint (const struct bp_location *bl)
10368 {
10369   struct watchpoint *w = (struct watchpoint *) bl->owner;
10370
10371   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10372 }
10373
10374 /* Implement the "works_in_software_mode" breakpoint_ops method for
10375    masked hardware watchpoints.  */
10376
10377 static int
10378 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10379 {
10380   return 0;
10381 }
10382
10383 /* Implement the "print_it" breakpoint_ops method for
10384    masked hardware watchpoints.  */
10385
10386 static enum print_stop_action
10387 print_it_masked_watchpoint (bpstat bs)
10388 {
10389   struct breakpoint *b = bs->breakpoint_at;
10390   struct ui_out *uiout = current_uiout;
10391
10392   /* Masked watchpoints have only one location.  */
10393   gdb_assert (b->loc && b->loc->next == NULL);
10394
10395   annotate_watchpoint (b->number);
10396   maybe_print_thread_hit_breakpoint (uiout);
10397
10398   switch (b->type)
10399     {
10400     case bp_hardware_watchpoint:
10401       if (uiout->is_mi_like_p ())
10402         uiout->field_string
10403           ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10404       break;
10405
10406     case bp_read_watchpoint:
10407       if (uiout->is_mi_like_p ())
10408         uiout->field_string
10409           ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10410       break;
10411
10412     case bp_access_watchpoint:
10413       if (uiout->is_mi_like_p ())
10414         uiout->field_string
10415           ("reason",
10416            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10417       break;
10418     default:
10419       internal_error (__FILE__, __LINE__,
10420                       _("Invalid hardware watchpoint type."));
10421     }
10422
10423   mention (b);
10424   uiout->text (_("\n\
10425 Check the underlying instruction at PC for the memory\n\
10426 address and value which triggered this watchpoint.\n"));
10427   uiout->text ("\n");
10428
10429   /* More than one watchpoint may have been triggered.  */
10430   return PRINT_UNKNOWN;
10431 }
10432
10433 /* Implement the "print_one_detail" breakpoint_ops method for
10434    masked hardware watchpoints.  */
10435
10436 static void
10437 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10438                                     struct ui_out *uiout)
10439 {
10440   struct watchpoint *w = (struct watchpoint *) b;
10441
10442   /* Masked watchpoints have only one location.  */
10443   gdb_assert (b->loc && b->loc->next == NULL);
10444
10445   uiout->text ("\tmask ");
10446   uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
10447   uiout->text ("\n");
10448 }
10449
10450 /* Implement the "print_mention" breakpoint_ops method for
10451    masked hardware watchpoints.  */
10452
10453 static void
10454 print_mention_masked_watchpoint (struct breakpoint *b)
10455 {
10456   struct watchpoint *w = (struct watchpoint *) b;
10457   struct ui_out *uiout = current_uiout;
10458   const char *tuple_name;
10459
10460   switch (b->type)
10461     {
10462     case bp_hardware_watchpoint:
10463       uiout->text ("Masked hardware watchpoint ");
10464       tuple_name = "wpt";
10465       break;
10466     case bp_read_watchpoint:
10467       uiout->text ("Masked hardware read watchpoint ");
10468       tuple_name = "hw-rwpt";
10469       break;
10470     case bp_access_watchpoint:
10471       uiout->text ("Masked hardware access (read/write) watchpoint ");
10472       tuple_name = "hw-awpt";
10473       break;
10474     default:
10475       internal_error (__FILE__, __LINE__,
10476                       _("Invalid hardware watchpoint type."));
10477     }
10478
10479   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
10480   uiout->field_int ("number", b->number);
10481   uiout->text (": ");
10482   uiout->field_string ("exp", w->exp_string);
10483 }
10484
10485 /* Implement the "print_recreate" breakpoint_ops method for
10486    masked hardware watchpoints.  */
10487
10488 static void
10489 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10490 {
10491   struct watchpoint *w = (struct watchpoint *) b;
10492   char tmp[40];
10493
10494   switch (b->type)
10495     {
10496     case bp_hardware_watchpoint:
10497       fprintf_unfiltered (fp, "watch");
10498       break;
10499     case bp_read_watchpoint:
10500       fprintf_unfiltered (fp, "rwatch");
10501       break;
10502     case bp_access_watchpoint:
10503       fprintf_unfiltered (fp, "awatch");
10504       break;
10505     default:
10506       internal_error (__FILE__, __LINE__,
10507                       _("Invalid hardware watchpoint type."));
10508     }
10509
10510   sprintf_vma (tmp, w->hw_wp_mask);
10511   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10512   print_recreate_thread (b, fp);
10513 }
10514
10515 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10516
10517 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10518
10519 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10520
10521 static int
10522 is_masked_watchpoint (const struct breakpoint *b)
10523 {
10524   return b->ops == &masked_watchpoint_breakpoint_ops;
10525 }
10526
10527 /* accessflag:  hw_write:  watch write, 
10528                 hw_read:   watch read, 
10529                 hw_access: watch access (read or write) */
10530 static void
10531 watch_command_1 (const char *arg, int accessflag, int from_tty,
10532                  int just_location, int internal)
10533 {
10534   struct breakpoint *scope_breakpoint = NULL;
10535   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10536   struct value *mark, *result;
10537   int saved_bitpos = 0, saved_bitsize = 0;
10538   const char *exp_start = NULL;
10539   const char *exp_end = NULL;
10540   const char *tok, *end_tok;
10541   int toklen = -1;
10542   const char *cond_start = NULL;
10543   const char *cond_end = NULL;
10544   enum bptype bp_type;
10545   int thread = -1;
10546   int pc = 0;
10547   /* Flag to indicate whether we are going to use masks for
10548      the hardware watchpoint.  */
10549   int use_mask = 0;
10550   CORE_ADDR mask = 0;
10551
10552   /* Make sure that we actually have parameters to parse.  */
10553   if (arg != NULL && arg[0] != '\0')
10554     {
10555       const char *value_start;
10556
10557       exp_end = arg + strlen (arg);
10558
10559       /* Look for "parameter value" pairs at the end
10560          of the arguments string.  */
10561       for (tok = exp_end - 1; tok > arg; tok--)
10562         {
10563           /* Skip whitespace at the end of the argument list.  */
10564           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10565             tok--;
10566
10567           /* Find the beginning of the last token.
10568              This is the value of the parameter.  */
10569           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10570             tok--;
10571           value_start = tok + 1;
10572
10573           /* Skip whitespace.  */
10574           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10575             tok--;
10576
10577           end_tok = tok;
10578
10579           /* Find the beginning of the second to last token.
10580              This is the parameter itself.  */
10581           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10582             tok--;
10583           tok++;
10584           toklen = end_tok - tok + 1;
10585
10586           if (toklen == 6 && startswith (tok, "thread"))
10587             {
10588               struct thread_info *thr;
10589               /* At this point we've found a "thread" token, which means
10590                  the user is trying to set a watchpoint that triggers
10591                  only in a specific thread.  */
10592               const char *endp;
10593
10594               if (thread != -1)
10595                 error(_("You can specify only one thread."));
10596
10597               /* Extract the thread ID from the next token.  */
10598               thr = parse_thread_id (value_start, &endp);
10599
10600               /* Check if the user provided a valid thread ID.  */
10601               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10602                 invalid_thread_id_error (value_start);
10603
10604               thread = thr->global_num;
10605             }
10606           else if (toklen == 4 && startswith (tok, "mask"))
10607             {
10608               /* We've found a "mask" token, which means the user wants to
10609                  create a hardware watchpoint that is going to have the mask
10610                  facility.  */
10611               struct value *mask_value, *mark;
10612
10613               if (use_mask)
10614                 error(_("You can specify only one mask."));
10615
10616               use_mask = just_location = 1;
10617
10618               mark = value_mark ();
10619               mask_value = parse_to_comma_and_eval (&value_start);
10620               mask = value_as_address (mask_value);
10621               value_free_to_mark (mark);
10622             }
10623           else
10624             /* We didn't recognize what we found.  We should stop here.  */
10625             break;
10626
10627           /* Truncate the string and get rid of the "parameter value" pair before
10628              the arguments string is parsed by the parse_exp_1 function.  */
10629           exp_end = tok;
10630         }
10631     }
10632   else
10633     exp_end = arg;
10634
10635   /* Parse the rest of the arguments.  From here on out, everything
10636      is in terms of a newly allocated string instead of the original
10637      ARG.  */
10638   innermost_block.reset ();
10639   std::string expression (arg, exp_end - arg);
10640   exp_start = arg = expression.c_str ();
10641   expression_up exp = parse_exp_1 (&arg, 0, 0, 0);
10642   exp_end = arg;
10643   /* Remove trailing whitespace from the expression before saving it.
10644      This makes the eventual display of the expression string a bit
10645      prettier.  */
10646   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10647     --exp_end;
10648
10649   /* Checking if the expression is not constant.  */
10650   if (watchpoint_exp_is_const (exp.get ()))
10651     {
10652       int len;
10653
10654       len = exp_end - exp_start;
10655       while (len > 0 && isspace (exp_start[len - 1]))
10656         len--;
10657       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10658     }
10659
10660   exp_valid_block = innermost_block.block ();
10661   mark = value_mark ();
10662   struct value *val_as_value = nullptr;
10663   fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
10664                       just_location);
10665
10666   if (val_as_value != NULL && just_location)
10667     {
10668       saved_bitpos = value_bitpos (val_as_value);
10669       saved_bitsize = value_bitsize (val_as_value);
10670     }
10671
10672   value_ref_ptr val;
10673   if (just_location)
10674     {
10675       int ret;
10676
10677       exp_valid_block = NULL;
10678       val = release_value (value_addr (result));
10679       value_free_to_mark (mark);
10680
10681       if (use_mask)
10682         {
10683           ret = target_masked_watch_num_registers (value_as_address (val.get ()),
10684                                                    mask);
10685           if (ret == -1)
10686             error (_("This target does not support masked watchpoints."));
10687           else if (ret == -2)
10688             error (_("Invalid mask or memory region."));
10689         }
10690     }
10691   else if (val_as_value != NULL)
10692     val = release_value (val_as_value);
10693
10694   tok = skip_spaces (arg);
10695   end_tok = skip_to_space (tok);
10696
10697   toklen = end_tok - tok;
10698   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10699     {
10700       innermost_block.reset ();
10701       tok = cond_start = end_tok + 1;
10702       parse_exp_1 (&tok, 0, 0, 0);
10703
10704       /* The watchpoint expression may not be local, but the condition
10705          may still be.  E.g.: `watch global if local > 0'.  */
10706       cond_exp_valid_block = innermost_block.block ();
10707
10708       cond_end = tok;
10709     }
10710   if (*tok)
10711     error (_("Junk at end of command."));
10712
10713   frame_info *wp_frame = block_innermost_frame (exp_valid_block);
10714
10715   /* Save this because create_internal_breakpoint below invalidates
10716      'wp_frame'.  */
10717   frame_id watchpoint_frame = get_frame_id (wp_frame);
10718
10719   /* If the expression is "local", then set up a "watchpoint scope"
10720      breakpoint at the point where we've left the scope of the watchpoint
10721      expression.  Create the scope breakpoint before the watchpoint, so
10722      that we will encounter it first in bpstat_stop_status.  */
10723   if (exp_valid_block != NULL && wp_frame != NULL)
10724     {
10725       frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
10726
10727       if (frame_id_p (caller_frame_id))
10728         {
10729           gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
10730           CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
10731
10732           scope_breakpoint
10733             = create_internal_breakpoint (caller_arch, caller_pc,
10734                                           bp_watchpoint_scope,
10735                                           &momentary_breakpoint_ops);
10736
10737           /* create_internal_breakpoint could invalidate WP_FRAME.  */
10738           wp_frame = NULL;
10739
10740           scope_breakpoint->enable_state = bp_enabled;
10741
10742           /* Automatically delete the breakpoint when it hits.  */
10743           scope_breakpoint->disposition = disp_del;
10744
10745           /* Only break in the proper frame (help with recursion).  */
10746           scope_breakpoint->frame_id = caller_frame_id;
10747
10748           /* Set the address at which we will stop.  */
10749           scope_breakpoint->loc->gdbarch = caller_arch;
10750           scope_breakpoint->loc->requested_address = caller_pc;
10751           scope_breakpoint->loc->address
10752             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10753                                          scope_breakpoint->loc->requested_address,
10754                                          scope_breakpoint->type);
10755         }
10756     }
10757
10758   /* Now set up the breakpoint.  We create all watchpoints as hardware
10759      watchpoints here even if hardware watchpoints are turned off, a call
10760      to update_watchpoint later in this function will cause the type to
10761      drop back to bp_watchpoint (software watchpoint) if required.  */
10762
10763   if (accessflag == hw_read)
10764     bp_type = bp_read_watchpoint;
10765   else if (accessflag == hw_access)
10766     bp_type = bp_access_watchpoint;
10767   else
10768     bp_type = bp_hardware_watchpoint;
10769
10770   std::unique_ptr<watchpoint> w (new watchpoint ());
10771
10772   if (use_mask)
10773     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10774                                           &masked_watchpoint_breakpoint_ops);
10775   else
10776     init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
10777                                           &watchpoint_breakpoint_ops);
10778   w->thread = thread;
10779   w->disposition = disp_donttouch;
10780   w->pspace = current_program_space;
10781   w->exp = std::move (exp);
10782   w->exp_valid_block = exp_valid_block;
10783   w->cond_exp_valid_block = cond_exp_valid_block;
10784   if (just_location)
10785     {
10786       struct type *t = value_type (val.get ());
10787       CORE_ADDR addr = value_as_address (val.get ());
10788
10789       w->exp_string_reparse
10790         = current_language->la_watch_location_expression (t, addr).release ();
10791
10792       w->exp_string = xstrprintf ("-location %.*s",
10793                                   (int) (exp_end - exp_start), exp_start);
10794     }
10795   else
10796     w->exp_string = savestring (exp_start, exp_end - exp_start);
10797
10798   if (use_mask)
10799     {
10800       w->hw_wp_mask = mask;
10801     }
10802   else
10803     {
10804       w->val = val;
10805       w->val_bitpos = saved_bitpos;
10806       w->val_bitsize = saved_bitsize;
10807       w->val_valid = 1;
10808     }
10809
10810   if (cond_start)
10811     w->cond_string = savestring (cond_start, cond_end - cond_start);
10812   else
10813     w->cond_string = 0;
10814
10815   if (frame_id_p (watchpoint_frame))
10816     {
10817       w->watchpoint_frame = watchpoint_frame;
10818       w->watchpoint_thread = inferior_ptid;
10819     }
10820   else
10821     {
10822       w->watchpoint_frame = null_frame_id;
10823       w->watchpoint_thread = null_ptid;
10824     }
10825
10826   if (scope_breakpoint != NULL)
10827     {
10828       /* The scope breakpoint is related to the watchpoint.  We will
10829          need to act on them together.  */
10830       w->related_breakpoint = scope_breakpoint;
10831       scope_breakpoint->related_breakpoint = w.get ();
10832     }
10833
10834   if (!just_location)
10835     value_free_to_mark (mark);
10836
10837   /* Finally update the new watchpoint.  This creates the locations
10838      that should be inserted.  */
10839   update_watchpoint (w.get (), 1);
10840
10841   install_breakpoint (internal, std::move (w), 1);
10842 }
10843
10844 /* Return count of debug registers needed to watch the given expression.
10845    If the watchpoint cannot be handled in hardware return zero.  */
10846
10847 static int
10848 can_use_hardware_watchpoint (const std::vector<value_ref_ptr> &vals)
10849 {
10850   int found_memory_cnt = 0;
10851
10852   /* Did the user specifically forbid us to use hardware watchpoints? */
10853   if (!can_use_hw_watchpoints)
10854     return 0;
10855
10856   gdb_assert (!vals.empty ());
10857   struct value *head = vals[0].get ();
10858
10859   /* Make sure that the value of the expression depends only upon
10860      memory contents, and values computed from them within GDB.  If we
10861      find any register references or function calls, we can't use a
10862      hardware watchpoint.
10863
10864      The idea here is that evaluating an expression generates a series
10865      of values, one holding the value of every subexpression.  (The
10866      expression a*b+c has five subexpressions: a, b, a*b, c, and
10867      a*b+c.)  GDB's values hold almost enough information to establish
10868      the criteria given above --- they identify memory lvalues,
10869      register lvalues, computed values, etcetera.  So we can evaluate
10870      the expression, and then scan the chain of values that leaves
10871      behind to decide whether we can detect any possible change to the
10872      expression's final value using only hardware watchpoints.
10873
10874      However, I don't think that the values returned by inferior
10875      function calls are special in any way.  So this function may not
10876      notice that an expression involving an inferior function call
10877      can't be watched with hardware watchpoints.  FIXME.  */
10878   for (const value_ref_ptr &iter : vals)
10879     {
10880       struct value *v = iter.get ();
10881
10882       if (VALUE_LVAL (v) == lval_memory)
10883         {
10884           if (v != head && value_lazy (v))
10885             /* A lazy memory lvalue in the chain is one that GDB never
10886                needed to fetch; we either just used its address (e.g.,
10887                `a' in `a.b') or we never needed it at all (e.g., `a'
10888                in `a,b').  This doesn't apply to HEAD; if that is
10889                lazy then it was not readable, but watch it anyway.  */
10890             ;
10891           else
10892             {
10893               /* Ahh, memory we actually used!  Check if we can cover
10894                  it with hardware watchpoints.  */
10895               struct type *vtype = check_typedef (value_type (v));
10896
10897               /* We only watch structs and arrays if user asked for it
10898                  explicitly, never if they just happen to appear in a
10899                  middle of some value chain.  */
10900               if (v == head
10901                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10902                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10903                 {
10904                   CORE_ADDR vaddr = value_address (v);
10905                   int len;
10906                   int num_regs;
10907
10908                   len = (target_exact_watchpoints
10909                          && is_scalar_type_recursive (vtype))?
10910                     1 : TYPE_LENGTH (value_type (v));
10911
10912                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10913                   if (!num_regs)
10914                     return 0;
10915                   else
10916                     found_memory_cnt += num_regs;
10917                 }
10918             }
10919         }
10920       else if (VALUE_LVAL (v) != not_lval
10921                && deprecated_value_modifiable (v) == 0)
10922         return 0;       /* These are values from the history (e.g., $1).  */
10923       else if (VALUE_LVAL (v) == lval_register)
10924         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10925     }
10926
10927   /* The expression itself looks suitable for using a hardware
10928      watchpoint, but give the target machine a chance to reject it.  */
10929   return found_memory_cnt;
10930 }
10931
10932 void
10933 watch_command_wrapper (const char *arg, int from_tty, int internal)
10934 {
10935   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10936 }
10937
10938 /* A helper function that looks for the "-location" argument and then
10939    calls watch_command_1.  */
10940
10941 static void
10942 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
10943 {
10944   int just_location = 0;
10945
10946   if (arg
10947       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10948           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10949     {
10950       arg = skip_spaces (arg);
10951       just_location = 1;
10952     }
10953
10954   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10955 }
10956
10957 static void
10958 watch_command (const char *arg, int from_tty)
10959 {
10960   watch_maybe_just_location (arg, hw_write, from_tty);
10961 }
10962
10963 void
10964 rwatch_command_wrapper (const char *arg, int from_tty, int internal)
10965 {
10966   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10967 }
10968
10969 static void
10970 rwatch_command (const char *arg, int from_tty)
10971 {
10972   watch_maybe_just_location (arg, hw_read, from_tty);
10973 }
10974
10975 void
10976 awatch_command_wrapper (const char *arg, int from_tty, int internal)
10977 {
10978   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10979 }
10980
10981 static void
10982 awatch_command (const char *arg, int from_tty)
10983 {
10984   watch_maybe_just_location (arg, hw_access, from_tty);
10985 }
10986 \f
10987
10988 /* Data for the FSM that manages the until(location)/advance commands
10989    in infcmd.c.  Here because it uses the mechanisms of
10990    breakpoints.  */
10991
10992 struct until_break_fsm
10993 {
10994   /* The base class.  */
10995   struct thread_fsm thread_fsm;
10996
10997   /* The thread that as current when the command was executed.  */
10998   int thread;
10999
11000   /* The breakpoint set at the destination location.  */
11001   struct breakpoint *location_breakpoint;
11002
11003   /* Breakpoint set at the return address in the caller frame.  May be
11004      NULL.  */
11005   struct breakpoint *caller_breakpoint;
11006 };
11007
11008 static void until_break_fsm_clean_up (struct thread_fsm *self,
11009                                       struct thread_info *thread);
11010 static int until_break_fsm_should_stop (struct thread_fsm *self,
11011                                         struct thread_info *thread);
11012 static enum async_reply_reason
11013   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11014
11015 /* until_break_fsm's vtable.  */
11016
11017 static struct thread_fsm_ops until_break_fsm_ops =
11018 {
11019   NULL, /* dtor */
11020   until_break_fsm_clean_up,
11021   until_break_fsm_should_stop,
11022   NULL, /* return_value */
11023   until_break_fsm_async_reply_reason,
11024 };
11025
11026 /* Allocate a new until_break_command_fsm.  */
11027
11028 static struct until_break_fsm *
11029 new_until_break_fsm (struct interp *cmd_interp, int thread,
11030                      breakpoint_up &&location_breakpoint,
11031                      breakpoint_up &&caller_breakpoint)
11032 {
11033   struct until_break_fsm *sm;
11034
11035   sm = XCNEW (struct until_break_fsm);
11036   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11037
11038   sm->thread = thread;
11039   sm->location_breakpoint = location_breakpoint.release ();
11040   sm->caller_breakpoint = caller_breakpoint.release ();
11041
11042   return sm;
11043 }
11044
11045 /* Implementation of the 'should_stop' FSM method for the
11046    until(location)/advance commands.  */
11047
11048 static int
11049 until_break_fsm_should_stop (struct thread_fsm *self,
11050                              struct thread_info *tp)
11051 {
11052   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11053
11054   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11055                               sm->location_breakpoint) != NULL
11056       || (sm->caller_breakpoint != NULL
11057           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11058                                      sm->caller_breakpoint) != NULL))
11059     thread_fsm_set_finished (self);
11060
11061   return 1;
11062 }
11063
11064 /* Implementation of the 'clean_up' FSM method for the
11065    until(location)/advance commands.  */
11066
11067 static void
11068 until_break_fsm_clean_up (struct thread_fsm *self,
11069                           struct thread_info *thread)
11070 {
11071   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11072
11073   /* Clean up our temporary breakpoints.  */
11074   if (sm->location_breakpoint != NULL)
11075     {
11076       delete_breakpoint (sm->location_breakpoint);
11077       sm->location_breakpoint = NULL;
11078     }
11079   if (sm->caller_breakpoint != NULL)
11080     {
11081       delete_breakpoint (sm->caller_breakpoint);
11082       sm->caller_breakpoint = NULL;
11083     }
11084   delete_longjmp_breakpoint (sm->thread);
11085 }
11086
11087 /* Implementation of the 'async_reply_reason' FSM method for the
11088    until(location)/advance commands.  */
11089
11090 static enum async_reply_reason
11091 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11092 {
11093   return EXEC_ASYNC_LOCATION_REACHED;
11094 }
11095
11096 void
11097 until_break_command (const char *arg, int from_tty, int anywhere)
11098 {
11099   struct frame_info *frame;
11100   struct gdbarch *frame_gdbarch;
11101   struct frame_id stack_frame_id;
11102   struct frame_id caller_frame_id;
11103   struct cleanup *old_chain;
11104   int thread;
11105   struct thread_info *tp;
11106   struct until_break_fsm *sm;
11107
11108   clear_proceed_status (0);
11109
11110   /* Set a breakpoint where the user wants it and at return from
11111      this function.  */
11112
11113   event_location_up location = string_to_event_location (&arg, current_language);
11114
11115   std::vector<symtab_and_line> sals
11116     = (last_displayed_sal_is_valid ()
11117        ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
11118                         get_last_displayed_symtab (),
11119                         get_last_displayed_line ())
11120        : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
11121                         NULL, (struct symtab *) NULL, 0));
11122
11123   if (sals.size () != 1)
11124     error (_("Couldn't get information on specified line."));
11125
11126   symtab_and_line &sal = sals[0];
11127
11128   if (*arg)
11129     error (_("Junk at end of arguments."));
11130
11131   resolve_sal_pc (&sal);
11132
11133   tp = inferior_thread ();
11134   thread = tp->global_num;
11135
11136   old_chain = make_cleanup (null_cleanup, NULL);
11137
11138   /* Note linespec handling above invalidates the frame chain.
11139      Installing a breakpoint also invalidates the frame chain (as it
11140      may need to switch threads), so do any frame handling before
11141      that.  */
11142
11143   frame = get_selected_frame (NULL);
11144   frame_gdbarch = get_frame_arch (frame);
11145   stack_frame_id = get_stack_frame_id (frame);
11146   caller_frame_id = frame_unwind_caller_id (frame);
11147
11148   /* Keep within the current frame, or in frames called by the current
11149      one.  */
11150
11151   breakpoint_up caller_breakpoint;
11152   if (frame_id_p (caller_frame_id))
11153     {
11154       struct symtab_and_line sal2;
11155       struct gdbarch *caller_gdbarch;
11156
11157       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11158       sal2.pc = frame_unwind_caller_pc (frame);
11159       caller_gdbarch = frame_unwind_caller_arch (frame);
11160       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11161                                                     sal2,
11162                                                     caller_frame_id,
11163                                                     bp_until);
11164
11165       set_longjmp_breakpoint (tp, caller_frame_id);
11166       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11167     }
11168
11169   /* set_momentary_breakpoint could invalidate FRAME.  */
11170   frame = NULL;
11171
11172   breakpoint_up location_breakpoint;
11173   if (anywhere)
11174     /* If the user told us to continue until a specified location,
11175        we don't specify a frame at which we need to stop.  */
11176     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11177                                                     null_frame_id, bp_until);
11178   else
11179     /* Otherwise, specify the selected frame, because we want to stop
11180        only at the very same frame.  */
11181     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11182                                                     stack_frame_id, bp_until);
11183
11184   sm = new_until_break_fsm (command_interp (), tp->global_num,
11185                             std::move (location_breakpoint),
11186                             std::move (caller_breakpoint));
11187   tp->thread_fsm = &sm->thread_fsm;
11188
11189   discard_cleanups (old_chain);
11190
11191   proceed (-1, GDB_SIGNAL_DEFAULT);
11192 }
11193
11194 /* This function attempts to parse an optional "if <cond>" clause
11195    from the arg string.  If one is not found, it returns NULL.
11196
11197    Else, it returns a pointer to the condition string.  (It does not
11198    attempt to evaluate the string against a particular block.)  And,
11199    it updates arg to point to the first character following the parsed
11200    if clause in the arg string.  */
11201
11202 const char *
11203 ep_parse_optional_if_clause (const char **arg)
11204 {
11205   const char *cond_string;
11206
11207   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11208     return NULL;
11209
11210   /* Skip the "if" keyword.  */
11211   (*arg) += 2;
11212
11213   /* Skip any extra leading whitespace, and record the start of the
11214      condition string.  */
11215   *arg = skip_spaces (*arg);
11216   cond_string = *arg;
11217
11218   /* Assume that the condition occupies the remainder of the arg
11219      string.  */
11220   (*arg) += strlen (cond_string);
11221
11222   return cond_string;
11223 }
11224
11225 /* Commands to deal with catching events, such as signals, exceptions,
11226    process start/exit, etc.  */
11227
11228 typedef enum
11229 {
11230   catch_fork_temporary, catch_vfork_temporary,
11231   catch_fork_permanent, catch_vfork_permanent
11232 }
11233 catch_fork_kind;
11234
11235 static void
11236 catch_fork_command_1 (const char *arg, int from_tty,
11237                       struct cmd_list_element *command)
11238 {
11239   struct gdbarch *gdbarch = get_current_arch ();
11240   const char *cond_string = NULL;
11241   catch_fork_kind fork_kind;
11242   int tempflag;
11243
11244   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11245   tempflag = (fork_kind == catch_fork_temporary
11246               || fork_kind == catch_vfork_temporary);
11247
11248   if (!arg)
11249     arg = "";
11250   arg = skip_spaces (arg);
11251
11252   /* The allowed syntax is:
11253      catch [v]fork
11254      catch [v]fork if <cond>
11255
11256      First, check if there's an if clause.  */
11257   cond_string = ep_parse_optional_if_clause (&arg);
11258
11259   if ((*arg != '\0') && !isspace (*arg))
11260     error (_("Junk at end of arguments."));
11261
11262   /* If this target supports it, create a fork or vfork catchpoint
11263      and enable reporting of such events.  */
11264   switch (fork_kind)
11265     {
11266     case catch_fork_temporary:
11267     case catch_fork_permanent:
11268       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11269                                           &catch_fork_breakpoint_ops);
11270       break;
11271     case catch_vfork_temporary:
11272     case catch_vfork_permanent:
11273       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11274                                           &catch_vfork_breakpoint_ops);
11275       break;
11276     default:
11277       error (_("unsupported or unknown fork kind; cannot catch it"));
11278       break;
11279     }
11280 }
11281
11282 static void
11283 catch_exec_command_1 (const char *arg, int from_tty,
11284                       struct cmd_list_element *command)
11285 {
11286   struct gdbarch *gdbarch = get_current_arch ();
11287   int tempflag;
11288   const char *cond_string = NULL;
11289
11290   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11291
11292   if (!arg)
11293     arg = "";
11294   arg = skip_spaces (arg);
11295
11296   /* The allowed syntax is:
11297      catch exec
11298      catch exec if <cond>
11299
11300      First, check if there's an if clause.  */
11301   cond_string = ep_parse_optional_if_clause (&arg);
11302
11303   if ((*arg != '\0') && !isspace (*arg))
11304     error (_("Junk at end of arguments."));
11305
11306   std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
11307   init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
11308                    &catch_exec_breakpoint_ops);
11309   c->exec_pathname = NULL;
11310
11311   install_breakpoint (0, std::move (c), 1);
11312 }
11313
11314 void
11315 init_ada_exception_breakpoint (struct breakpoint *b,
11316                                struct gdbarch *gdbarch,
11317                                struct symtab_and_line sal,
11318                                const char *addr_string,
11319                                const struct breakpoint_ops *ops,
11320                                int tempflag,
11321                                int enabled,
11322                                int from_tty)
11323 {
11324   if (from_tty)
11325     {
11326       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11327       if (!loc_gdbarch)
11328         loc_gdbarch = gdbarch;
11329
11330       describe_other_breakpoints (loc_gdbarch,
11331                                   sal.pspace, sal.pc, sal.section, -1);
11332       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11333          version for exception catchpoints, because two catchpoints
11334          used for different exception names will use the same address.
11335          In this case, a "breakpoint ... also set at..." warning is
11336          unproductive.  Besides, the warning phrasing is also a bit
11337          inappropriate, we should use the word catchpoint, and tell
11338          the user what type of catchpoint it is.  The above is good
11339          enough for now, though.  */
11340     }
11341
11342   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11343
11344   b->enable_state = enabled ? bp_enabled : bp_disabled;
11345   b->disposition = tempflag ? disp_del : disp_donttouch;
11346   b->location = string_to_event_location (&addr_string,
11347                                           language_def (language_ada));
11348   b->language = language_ada;
11349 }
11350
11351 static void
11352 catch_command (const char *arg, int from_tty)
11353 {
11354   error (_("Catch requires an event name."));
11355 }
11356 \f
11357
11358 static void
11359 tcatch_command (const char *arg, int from_tty)
11360 {
11361   error (_("Catch requires an event name."));
11362 }
11363
11364 /* Compare two breakpoints and return a strcmp-like result.  */
11365
11366 static int
11367 compare_breakpoints (const breakpoint *a, const breakpoint *b)
11368 {
11369   uintptr_t ua = (uintptr_t) a;
11370   uintptr_t ub = (uintptr_t) b;
11371
11372   if (a->number < b->number)
11373     return -1;
11374   else if (a->number > b->number)
11375     return 1;
11376
11377   /* Now sort by address, in case we see, e..g, two breakpoints with
11378      the number 0.  */
11379   if (ua < ub)
11380     return -1;
11381   return ua > ub ? 1 : 0;
11382 }
11383
11384 /* Delete breakpoints by address or line.  */
11385
11386 static void
11387 clear_command (const char *arg, int from_tty)
11388 {
11389   struct breakpoint *b;
11390   int default_match;
11391
11392   std::vector<symtab_and_line> decoded_sals;
11393   symtab_and_line last_sal;
11394   gdb::array_view<symtab_and_line> sals;
11395   if (arg)
11396     {
11397       decoded_sals
11398         = decode_line_with_current_source (arg,
11399                                            (DECODE_LINE_FUNFIRSTLINE
11400                                             | DECODE_LINE_LIST_MODE));
11401       default_match = 0;
11402       sals = decoded_sals;
11403     }
11404   else
11405     {
11406       /* Set sal's line, symtab, pc, and pspace to the values
11407          corresponding to the last call to print_frame_info.  If the
11408          codepoint is not valid, this will set all the fields to 0.  */
11409       last_sal = get_last_displayed_sal ();
11410       if (last_sal.symtab == 0)
11411         error (_("No source file specified."));
11412
11413       default_match = 1;
11414       sals = last_sal;
11415     }
11416
11417   /* We don't call resolve_sal_pc here.  That's not as bad as it
11418      seems, because all existing breakpoints typically have both
11419      file/line and pc set.  So, if clear is given file/line, we can
11420      match this to existing breakpoint without obtaining pc at all.
11421
11422      We only support clearing given the address explicitly 
11423      present in breakpoint table.  Say, we've set breakpoint 
11424      at file:line.  There were several PC values for that file:line,
11425      due to optimization, all in one block.
11426
11427      We've picked one PC value.  If "clear" is issued with another
11428      PC corresponding to the same file:line, the breakpoint won't
11429      be cleared.  We probably can still clear the breakpoint, but 
11430      since the other PC value is never presented to user, user
11431      can only find it by guessing, and it does not seem important
11432      to support that.  */
11433
11434   /* For each line spec given, delete bps which correspond to it.  Do
11435      it in two passes, solely to preserve the current behavior that
11436      from_tty is forced true if we delete more than one
11437      breakpoint.  */
11438
11439   std::vector<struct breakpoint *> found;
11440   for (const auto &sal : sals)
11441     {
11442       const char *sal_fullname;
11443
11444       /* If exact pc given, clear bpts at that pc.
11445          If line given (pc == 0), clear all bpts on specified line.
11446          If defaulting, clear all bpts on default line
11447          or at default pc.
11448
11449          defaulting    sal.pc != 0    tests to do
11450
11451          0              1             pc
11452          1              1             pc _and_ line
11453          0              0             line
11454          1              0             <can't happen> */
11455
11456       sal_fullname = (sal.symtab == NULL
11457                       ? NULL : symtab_to_fullname (sal.symtab));
11458
11459       /* Find all matching breakpoints and add them to 'found'.  */
11460       ALL_BREAKPOINTS (b)
11461         {
11462           int match = 0;
11463           /* Are we going to delete b?  */
11464           if (b->type != bp_none && !is_watchpoint (b))
11465             {
11466               struct bp_location *loc = b->loc;
11467               for (; loc; loc = loc->next)
11468                 {
11469                   /* If the user specified file:line, don't allow a PC
11470                      match.  This matches historical gdb behavior.  */
11471                   int pc_match = (!sal.explicit_line
11472                                   && sal.pc
11473                                   && (loc->pspace == sal.pspace)
11474                                   && (loc->address == sal.pc)
11475                                   && (!section_is_overlay (loc->section)
11476                                       || loc->section == sal.section));
11477                   int line_match = 0;
11478
11479                   if ((default_match || sal.explicit_line)
11480                       && loc->symtab != NULL
11481                       && sal_fullname != NULL
11482                       && sal.pspace == loc->pspace
11483                       && loc->line_number == sal.line
11484                       && filename_cmp (symtab_to_fullname (loc->symtab),
11485                                        sal_fullname) == 0)
11486                     line_match = 1;
11487
11488                   if (pc_match || line_match)
11489                     {
11490                       match = 1;
11491                       break;
11492                     }
11493                 }
11494             }
11495
11496           if (match)
11497             found.push_back (b);
11498         }
11499     }
11500
11501   /* Now go thru the 'found' chain and delete them.  */
11502   if (found.empty ())
11503     {
11504       if (arg)
11505         error (_("No breakpoint at %s."), arg);
11506       else
11507         error (_("No breakpoint at this line."));
11508     }
11509
11510   /* Remove duplicates from the vec.  */
11511   std::sort (found.begin (), found.end (),
11512              [] (const breakpoint *a, const breakpoint *b)
11513              {
11514                return compare_breakpoints (a, b) < 0;
11515              });
11516   found.erase (std::unique (found.begin (), found.end (),
11517                             [] (const breakpoint *a, const breakpoint *b)
11518                             {
11519                               return compare_breakpoints (a, b) == 0;
11520                             }),
11521                found.end ());
11522
11523   if (found.size () > 1)
11524     from_tty = 1;       /* Always report if deleted more than one.  */
11525   if (from_tty)
11526     {
11527       if (found.size () == 1)
11528         printf_unfiltered (_("Deleted breakpoint "));
11529       else
11530         printf_unfiltered (_("Deleted breakpoints "));
11531     }
11532
11533   for (breakpoint *iter : found)
11534     {
11535       if (from_tty)
11536         printf_unfiltered ("%d ", iter->number);
11537       delete_breakpoint (iter);
11538     }
11539   if (from_tty)
11540     putchar_unfiltered ('\n');
11541 }
11542 \f
11543 /* Delete breakpoint in BS if they are `delete' breakpoints and
11544    all breakpoints that are marked for deletion, whether hit or not.
11545    This is called after any breakpoint is hit, or after errors.  */
11546
11547 void
11548 breakpoint_auto_delete (bpstat bs)
11549 {
11550   struct breakpoint *b, *b_tmp;
11551
11552   for (; bs; bs = bs->next)
11553     if (bs->breakpoint_at
11554         && bs->breakpoint_at->disposition == disp_del
11555         && bs->stop)
11556       delete_breakpoint (bs->breakpoint_at);
11557
11558   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11559   {
11560     if (b->disposition == disp_del_at_next_stop)
11561       delete_breakpoint (b);
11562   }
11563 }
11564
11565 /* A comparison function for bp_location AP and BP being interfaced to
11566    qsort.  Sort elements primarily by their ADDRESS (no matter what
11567    does breakpoint_address_is_meaningful say for its OWNER),
11568    secondarily by ordering first permanent elements and
11569    terciarily just ensuring the array is sorted stable way despite
11570    qsort being an unstable algorithm.  */
11571
11572 static int
11573 bp_locations_compare (const void *ap, const void *bp)
11574 {
11575   const struct bp_location *a = *(const struct bp_location **) ap;
11576   const struct bp_location *b = *(const struct bp_location **) bp;
11577
11578   if (a->address != b->address)
11579     return (a->address > b->address) - (a->address < b->address);
11580
11581   /* Sort locations at the same address by their pspace number, keeping
11582      locations of the same inferior (in a multi-inferior environment)
11583      grouped.  */
11584
11585   if (a->pspace->num != b->pspace->num)
11586     return ((a->pspace->num > b->pspace->num)
11587             - (a->pspace->num < b->pspace->num));
11588
11589   /* Sort permanent breakpoints first.  */
11590   if (a->permanent != b->permanent)
11591     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11592
11593   /* Make the internal GDB representation stable across GDB runs
11594      where A and B memory inside GDB can differ.  Breakpoint locations of
11595      the same type at the same address can be sorted in arbitrary order.  */
11596
11597   if (a->owner->number != b->owner->number)
11598     return ((a->owner->number > b->owner->number)
11599             - (a->owner->number < b->owner->number));
11600
11601   return (a > b) - (a < b);
11602 }
11603
11604 /* Set bp_locations_placed_address_before_address_max and
11605    bp_locations_shadow_len_after_address_max according to the current
11606    content of the bp_locations array.  */
11607
11608 static void
11609 bp_locations_target_extensions_update (void)
11610 {
11611   struct bp_location *bl, **blp_tmp;
11612
11613   bp_locations_placed_address_before_address_max = 0;
11614   bp_locations_shadow_len_after_address_max = 0;
11615
11616   ALL_BP_LOCATIONS (bl, blp_tmp)
11617     {
11618       CORE_ADDR start, end, addr;
11619
11620       if (!bp_location_has_shadow (bl))
11621         continue;
11622
11623       start = bl->target_info.placed_address;
11624       end = start + bl->target_info.shadow_len;
11625
11626       gdb_assert (bl->address >= start);
11627       addr = bl->address - start;
11628       if (addr > bp_locations_placed_address_before_address_max)
11629         bp_locations_placed_address_before_address_max = addr;
11630
11631       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11632
11633       gdb_assert (bl->address < end);
11634       addr = end - bl->address;
11635       if (addr > bp_locations_shadow_len_after_address_max)
11636         bp_locations_shadow_len_after_address_max = addr;
11637     }
11638 }
11639
11640 /* Download tracepoint locations if they haven't been.  */
11641
11642 static void
11643 download_tracepoint_locations (void)
11644 {
11645   struct breakpoint *b;
11646   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
11647
11648   scoped_restore_current_pspace_and_thread restore_pspace_thread;
11649
11650   ALL_TRACEPOINTS (b)
11651     {
11652       struct bp_location *bl;
11653       struct tracepoint *t;
11654       int bp_location_downloaded = 0;
11655
11656       if ((b->type == bp_fast_tracepoint
11657            ? !may_insert_fast_tracepoints
11658            : !may_insert_tracepoints))
11659         continue;
11660
11661       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
11662         {
11663           if (target_can_download_tracepoint ())
11664             can_download_tracepoint = TRIBOOL_TRUE;
11665           else
11666             can_download_tracepoint = TRIBOOL_FALSE;
11667         }
11668
11669       if (can_download_tracepoint == TRIBOOL_FALSE)
11670         break;
11671
11672       for (bl = b->loc; bl; bl = bl->next)
11673         {
11674           /* In tracepoint, locations are _never_ duplicated, so
11675              should_be_inserted is equivalent to
11676              unduplicated_should_be_inserted.  */
11677           if (!should_be_inserted (bl) || bl->inserted)
11678             continue;
11679
11680           switch_to_program_space_and_thread (bl->pspace);
11681
11682           target_download_tracepoint (bl);
11683
11684           bl->inserted = 1;
11685           bp_location_downloaded = 1;
11686         }
11687       t = (struct tracepoint *) b;
11688       t->number_on_target = b->number;
11689       if (bp_location_downloaded)
11690         gdb::observers::breakpoint_modified.notify (b);
11691     }
11692 }
11693
11694 /* Swap the insertion/duplication state between two locations.  */
11695
11696 static void
11697 swap_insertion (struct bp_location *left, struct bp_location *right)
11698 {
11699   const int left_inserted = left->inserted;
11700   const int left_duplicate = left->duplicate;
11701   const int left_needs_update = left->needs_update;
11702   const struct bp_target_info left_target_info = left->target_info;
11703
11704   /* Locations of tracepoints can never be duplicated.  */
11705   if (is_tracepoint (left->owner))
11706     gdb_assert (!left->duplicate);
11707   if (is_tracepoint (right->owner))
11708     gdb_assert (!right->duplicate);
11709
11710   left->inserted = right->inserted;
11711   left->duplicate = right->duplicate;
11712   left->needs_update = right->needs_update;
11713   left->target_info = right->target_info;
11714   right->inserted = left_inserted;
11715   right->duplicate = left_duplicate;
11716   right->needs_update = left_needs_update;
11717   right->target_info = left_target_info;
11718 }
11719
11720 /* Force the re-insertion of the locations at ADDRESS.  This is called
11721    once a new/deleted/modified duplicate location is found and we are evaluating
11722    conditions on the target's side.  Such conditions need to be updated on
11723    the target.  */
11724
11725 static void
11726 force_breakpoint_reinsertion (struct bp_location *bl)
11727 {
11728   struct bp_location **locp = NULL, **loc2p;
11729   struct bp_location *loc;
11730   CORE_ADDR address = 0;
11731   int pspace_num;
11732
11733   address = bl->address;
11734   pspace_num = bl->pspace->num;
11735
11736   /* This is only meaningful if the target is
11737      evaluating conditions and if the user has
11738      opted for condition evaluation on the target's
11739      side.  */
11740   if (gdb_evaluates_breakpoint_condition_p ()
11741       || !target_supports_evaluation_of_breakpoint_conditions ())
11742     return;
11743
11744   /* Flag all breakpoint locations with this address and
11745      the same program space as the location
11746      as "its condition has changed".  We need to
11747      update the conditions on the target's side.  */
11748   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11749     {
11750       loc = *loc2p;
11751
11752       if (!is_breakpoint (loc->owner)
11753           || pspace_num != loc->pspace->num)
11754         continue;
11755
11756       /* Flag the location appropriately.  We use a different state to
11757          let everyone know that we already updated the set of locations
11758          with addr bl->address and program space bl->pspace.  This is so
11759          we don't have to keep calling these functions just to mark locations
11760          that have already been marked.  */
11761       loc->condition_changed = condition_updated;
11762
11763       /* Free the agent expression bytecode as well.  We will compute
11764          it later on.  */
11765       loc->cond_bytecode.reset ();
11766     }
11767 }
11768 /* Called whether new breakpoints are created, or existing breakpoints
11769    deleted, to update the global location list and recompute which
11770    locations are duplicate of which.
11771
11772    The INSERT_MODE flag determines whether locations may not, may, or
11773    shall be inserted now.  See 'enum ugll_insert_mode' for more
11774    info.  */
11775
11776 static void
11777 update_global_location_list (enum ugll_insert_mode insert_mode)
11778 {
11779   struct breakpoint *b;
11780   struct bp_location **locp, *loc;
11781   /* Last breakpoint location address that was marked for update.  */
11782   CORE_ADDR last_addr = 0;
11783   /* Last breakpoint location program space that was marked for update.  */
11784   int last_pspace_num = -1;
11785
11786   /* Used in the duplicates detection below.  When iterating over all
11787      bp_locations, points to the first bp_location of a given address.
11788      Breakpoints and watchpoints of different types are never
11789      duplicates of each other.  Keep one pointer for each type of
11790      breakpoint/watchpoint, so we only need to loop over all locations
11791      once.  */
11792   struct bp_location *bp_loc_first;  /* breakpoint */
11793   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11794   struct bp_location *awp_loc_first; /* access watchpoint */
11795   struct bp_location *rwp_loc_first; /* read watchpoint */
11796
11797   /* Saved former bp_locations array which we compare against the newly
11798      built bp_locations from the current state of ALL_BREAKPOINTS.  */
11799   struct bp_location **old_locp;
11800   unsigned old_locations_count;
11801   gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
11802
11803   old_locations_count = bp_locations_count;
11804   bp_locations = NULL;
11805   bp_locations_count = 0;
11806
11807   ALL_BREAKPOINTS (b)
11808     for (loc = b->loc; loc; loc = loc->next)
11809       bp_locations_count++;
11810
11811   bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
11812   locp = bp_locations;
11813   ALL_BREAKPOINTS (b)
11814     for (loc = b->loc; loc; loc = loc->next)
11815       *locp++ = loc;
11816   qsort (bp_locations, bp_locations_count, sizeof (*bp_locations),
11817          bp_locations_compare);
11818
11819   bp_locations_target_extensions_update ();
11820
11821   /* Identify bp_location instances that are no longer present in the
11822      new list, and therefore should be freed.  Note that it's not
11823      necessary that those locations should be removed from inferior --
11824      if there's another location at the same address (previously
11825      marked as duplicate), we don't need to remove/insert the
11826      location.
11827      
11828      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11829      and former bp_location array state respectively.  */
11830
11831   locp = bp_locations;
11832   for (old_locp = old_locations.get ();
11833        old_locp < old_locations.get () + old_locations_count;
11834        old_locp++)
11835     {
11836       struct bp_location *old_loc = *old_locp;
11837       struct bp_location **loc2p;
11838
11839       /* Tells if 'old_loc' is found among the new locations.  If
11840          not, we have to free it.  */
11841       int found_object = 0;
11842       /* Tells if the location should remain inserted in the target.  */
11843       int keep_in_target = 0;
11844       int removed = 0;
11845
11846       /* Skip LOCP entries which will definitely never be needed.
11847          Stop either at or being the one matching OLD_LOC.  */
11848       while (locp < bp_locations + bp_locations_count
11849              && (*locp)->address < old_loc->address)
11850         locp++;
11851
11852       for (loc2p = locp;
11853            (loc2p < bp_locations + bp_locations_count
11854             && (*loc2p)->address == old_loc->address);
11855            loc2p++)
11856         {
11857           /* Check if this is a new/duplicated location or a duplicated
11858              location that had its condition modified.  If so, we want to send
11859              its condition to the target if evaluation of conditions is taking
11860              place there.  */
11861           if ((*loc2p)->condition_changed == condition_modified
11862               && (last_addr != old_loc->address
11863                   || last_pspace_num != old_loc->pspace->num))
11864             {
11865               force_breakpoint_reinsertion (*loc2p);
11866               last_pspace_num = old_loc->pspace->num;
11867             }
11868
11869           if (*loc2p == old_loc)
11870             found_object = 1;
11871         }
11872
11873       /* We have already handled this address, update it so that we don't
11874          have to go through updates again.  */
11875       last_addr = old_loc->address;
11876
11877       /* Target-side condition evaluation: Handle deleted locations.  */
11878       if (!found_object)
11879         force_breakpoint_reinsertion (old_loc);
11880
11881       /* If this location is no longer present, and inserted, look if
11882          there's maybe a new location at the same address.  If so,
11883          mark that one inserted, and don't remove this one.  This is
11884          needed so that we don't have a time window where a breakpoint
11885          at certain location is not inserted.  */
11886
11887       if (old_loc->inserted)
11888         {
11889           /* If the location is inserted now, we might have to remove
11890              it.  */
11891
11892           if (found_object && should_be_inserted (old_loc))
11893             {
11894               /* The location is still present in the location list,
11895                  and still should be inserted.  Don't do anything.  */
11896               keep_in_target = 1;
11897             }
11898           else
11899             {
11900               /* This location still exists, but it won't be kept in the
11901                  target since it may have been disabled.  We proceed to
11902                  remove its target-side condition.  */
11903
11904               /* The location is either no longer present, or got
11905                  disabled.  See if there's another location at the
11906                  same address, in which case we don't need to remove
11907                  this one from the target.  */
11908
11909               /* OLD_LOC comes from existing struct breakpoint.  */
11910               if (breakpoint_address_is_meaningful (old_loc->owner))
11911                 {
11912                   for (loc2p = locp;
11913                        (loc2p < bp_locations + bp_locations_count
11914                         && (*loc2p)->address == old_loc->address);
11915                        loc2p++)
11916                     {
11917                       struct bp_location *loc2 = *loc2p;
11918
11919                       if (breakpoint_locations_match (loc2, old_loc))
11920                         {
11921                           /* Read watchpoint locations are switched to
11922                              access watchpoints, if the former are not
11923                              supported, but the latter are.  */
11924                           if (is_hardware_watchpoint (old_loc->owner))
11925                             {
11926                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11927                               loc2->watchpoint_type = old_loc->watchpoint_type;
11928                             }
11929
11930                           /* loc2 is a duplicated location. We need to check
11931                              if it should be inserted in case it will be
11932                              unduplicated.  */
11933                           if (loc2 != old_loc
11934                               && unduplicated_should_be_inserted (loc2))
11935                             {
11936                               swap_insertion (old_loc, loc2);
11937                               keep_in_target = 1;
11938                               break;
11939                             }
11940                         }
11941                     }
11942                 }
11943             }
11944
11945           if (!keep_in_target)
11946             {
11947               if (remove_breakpoint (old_loc))
11948                 {
11949                   /* This is just about all we can do.  We could keep
11950                      this location on the global list, and try to
11951                      remove it next time, but there's no particular
11952                      reason why we will succeed next time.
11953                      
11954                      Note that at this point, old_loc->owner is still
11955                      valid, as delete_breakpoint frees the breakpoint
11956                      only after calling us.  */
11957                   printf_filtered (_("warning: Error removing "
11958                                      "breakpoint %d\n"), 
11959                                    old_loc->owner->number);
11960                 }
11961               removed = 1;
11962             }
11963         }
11964
11965       if (!found_object)
11966         {
11967           if (removed && target_is_non_stop_p ()
11968               && need_moribund_for_location_type (old_loc))
11969             {
11970               /* This location was removed from the target.  In
11971                  non-stop mode, a race condition is possible where
11972                  we've removed a breakpoint, but stop events for that
11973                  breakpoint are already queued and will arrive later.
11974                  We apply an heuristic to be able to distinguish such
11975                  SIGTRAPs from other random SIGTRAPs: we keep this
11976                  breakpoint location for a bit, and will retire it
11977                  after we see some number of events.  The theory here
11978                  is that reporting of events should, "on the average",
11979                  be fair, so after a while we'll see events from all
11980                  threads that have anything of interest, and no longer
11981                  need to keep this breakpoint location around.  We
11982                  don't hold locations forever so to reduce chances of
11983                  mistaking a non-breakpoint SIGTRAP for a breakpoint
11984                  SIGTRAP.
11985
11986                  The heuristic failing can be disastrous on
11987                  decr_pc_after_break targets.
11988
11989                  On decr_pc_after_break targets, like e.g., x86-linux,
11990                  if we fail to recognize a late breakpoint SIGTRAP,
11991                  because events_till_retirement has reached 0 too
11992                  soon, we'll fail to do the PC adjustment, and report
11993                  a random SIGTRAP to the user.  When the user resumes
11994                  the inferior, it will most likely immediately crash
11995                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
11996                  corrupted, because of being resumed e.g., in the
11997                  middle of a multi-byte instruction, or skipped a
11998                  one-byte instruction.  This was actually seen happen
11999                  on native x86-linux, and should be less rare on
12000                  targets that do not support new thread events, like
12001                  remote, due to the heuristic depending on
12002                  thread_count.
12003
12004                  Mistaking a random SIGTRAP for a breakpoint trap
12005                  causes similar symptoms (PC adjustment applied when
12006                  it shouldn't), but then again, playing with SIGTRAPs
12007                  behind the debugger's back is asking for trouble.
12008
12009                  Since hardware watchpoint traps are always
12010                  distinguishable from other traps, so we don't need to
12011                  apply keep hardware watchpoint moribund locations
12012                  around.  We simply always ignore hardware watchpoint
12013                  traps we can no longer explain.  */
12014
12015               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12016               old_loc->owner = NULL;
12017
12018               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12019             }
12020           else
12021             {
12022               old_loc->owner = NULL;
12023               decref_bp_location (&old_loc);
12024             }
12025         }
12026     }
12027
12028   /* Rescan breakpoints at the same address and section, marking the
12029      first one as "first" and any others as "duplicates".  This is so
12030      that the bpt instruction is only inserted once.  If we have a
12031      permanent breakpoint at the same place as BPT, make that one the
12032      official one, and the rest as duplicates.  Permanent breakpoints
12033      are sorted first for the same address.
12034
12035      Do the same for hardware watchpoints, but also considering the
12036      watchpoint's type (regular/access/read) and length.  */
12037
12038   bp_loc_first = NULL;
12039   wp_loc_first = NULL;
12040   awp_loc_first = NULL;
12041   rwp_loc_first = NULL;
12042   ALL_BP_LOCATIONS (loc, locp)
12043     {
12044       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12045          non-NULL.  */
12046       struct bp_location **loc_first_p;
12047       b = loc->owner;
12048
12049       if (!unduplicated_should_be_inserted (loc)
12050           || !breakpoint_address_is_meaningful (b)
12051           /* Don't detect duplicate for tracepoint locations because they are
12052            never duplicated.  See the comments in field `duplicate' of
12053            `struct bp_location'.  */
12054           || is_tracepoint (b))
12055         {
12056           /* Clear the condition modification flag.  */
12057           loc->condition_changed = condition_unchanged;
12058           continue;
12059         }
12060
12061       if (b->type == bp_hardware_watchpoint)
12062         loc_first_p = &wp_loc_first;
12063       else if (b->type == bp_read_watchpoint)
12064         loc_first_p = &rwp_loc_first;
12065       else if (b->type == bp_access_watchpoint)
12066         loc_first_p = &awp_loc_first;
12067       else
12068         loc_first_p = &bp_loc_first;
12069
12070       if (*loc_first_p == NULL
12071           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12072           || !breakpoint_locations_match (loc, *loc_first_p))
12073         {
12074           *loc_first_p = loc;
12075           loc->duplicate = 0;
12076
12077           if (is_breakpoint (loc->owner) && loc->condition_changed)
12078             {
12079               loc->needs_update = 1;
12080               /* Clear the condition modification flag.  */
12081               loc->condition_changed = condition_unchanged;
12082             }
12083           continue;
12084         }
12085
12086
12087       /* This and the above ensure the invariant that the first location
12088          is not duplicated, and is the inserted one.
12089          All following are marked as duplicated, and are not inserted.  */
12090       if (loc->inserted)
12091         swap_insertion (loc, *loc_first_p);
12092       loc->duplicate = 1;
12093
12094       /* Clear the condition modification flag.  */
12095       loc->condition_changed = condition_unchanged;
12096     }
12097
12098   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12099     {
12100       if (insert_mode != UGLL_DONT_INSERT)
12101         insert_breakpoint_locations ();
12102       else
12103         {
12104           /* Even though the caller told us to not insert new
12105              locations, we may still need to update conditions on the
12106              target's side of breakpoints that were already inserted
12107              if the target is evaluating breakpoint conditions.  We
12108              only update conditions for locations that are marked
12109              "needs_update".  */
12110           update_inserted_breakpoint_locations ();
12111         }
12112     }
12113
12114   if (insert_mode != UGLL_DONT_INSERT)
12115     download_tracepoint_locations ();
12116 }
12117
12118 void
12119 breakpoint_retire_moribund (void)
12120 {
12121   struct bp_location *loc;
12122   int ix;
12123
12124   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12125     if (--(loc->events_till_retirement) == 0)
12126       {
12127         decref_bp_location (&loc);
12128         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12129         --ix;
12130       }
12131 }
12132
12133 static void
12134 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12135 {
12136
12137   TRY
12138     {
12139       update_global_location_list (insert_mode);
12140     }
12141   CATCH (e, RETURN_MASK_ERROR)
12142     {
12143     }
12144   END_CATCH
12145 }
12146
12147 /* Clear BKP from a BPS.  */
12148
12149 static void
12150 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12151 {
12152   bpstat bs;
12153
12154   for (bs = bps; bs; bs = bs->next)
12155     if (bs->breakpoint_at == bpt)
12156       {
12157         bs->breakpoint_at = NULL;
12158         bs->old_val = NULL;
12159         /* bs->commands will be freed later.  */
12160       }
12161 }
12162
12163 /* Callback for iterate_over_threads.  */
12164 static int
12165 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12166 {
12167   struct breakpoint *bpt = (struct breakpoint *) data;
12168
12169   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12170   return 0;
12171 }
12172
12173 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12174    callbacks.  */
12175
12176 static void
12177 say_where (struct breakpoint *b)
12178 {
12179   struct value_print_options opts;
12180
12181   get_user_print_options (&opts);
12182
12183   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12184      single string.  */
12185   if (b->loc == NULL)
12186     {
12187       /* For pending locations, the output differs slightly based
12188          on b->extra_string.  If this is non-NULL, it contains either
12189          a condition or dprintf arguments.  */
12190       if (b->extra_string == NULL)
12191         {
12192           printf_filtered (_(" (%s) pending."),
12193                            event_location_to_string (b->location.get ()));
12194         }
12195       else if (b->type == bp_dprintf)
12196         {
12197           printf_filtered (_(" (%s,%s) pending."),
12198                            event_location_to_string (b->location.get ()),
12199                            b->extra_string);
12200         }
12201       else
12202         {
12203           printf_filtered (_(" (%s %s) pending."),
12204                            event_location_to_string (b->location.get ()),
12205                            b->extra_string);
12206         }
12207     }
12208   else
12209     {
12210       if (opts.addressprint || b->loc->symtab == NULL)
12211         {
12212           printf_filtered (" at ");
12213           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12214                           gdb_stdout);
12215         }
12216       if (b->loc->symtab != NULL)
12217         {
12218           /* If there is a single location, we can print the location
12219              more nicely.  */
12220           if (b->loc->next == NULL)
12221             printf_filtered (": file %s, line %d.",
12222                              symtab_to_filename_for_display (b->loc->symtab),
12223                              b->loc->line_number);
12224           else
12225             /* This is not ideal, but each location may have a
12226                different file name, and this at least reflects the
12227                real situation somewhat.  */
12228             printf_filtered (": %s.",
12229                              event_location_to_string (b->location.get ()));
12230         }
12231
12232       if (b->loc->next)
12233         {
12234           struct bp_location *loc = b->loc;
12235           int n = 0;
12236           for (; loc; loc = loc->next)
12237             ++n;
12238           printf_filtered (" (%d locations)", n);
12239         }
12240     }
12241 }
12242
12243 /* Default bp_location_ops methods.  */
12244
12245 static void
12246 bp_location_dtor (struct bp_location *self)
12247 {
12248   xfree (self->function_name);
12249 }
12250
12251 static const struct bp_location_ops bp_location_ops =
12252 {
12253   bp_location_dtor
12254 };
12255
12256 /* Destructor for the breakpoint base class.  */
12257
12258 breakpoint::~breakpoint ()
12259 {
12260   xfree (this->cond_string);
12261   xfree (this->extra_string);
12262   xfree (this->filter);
12263 }
12264
12265 static struct bp_location *
12266 base_breakpoint_allocate_location (struct breakpoint *self)
12267 {
12268   return new bp_location (&bp_location_ops, self);
12269 }
12270
12271 static void
12272 base_breakpoint_re_set (struct breakpoint *b)
12273 {
12274   /* Nothing to re-set. */
12275 }
12276
12277 #define internal_error_pure_virtual_called() \
12278   gdb_assert_not_reached ("pure virtual function called")
12279
12280 static int
12281 base_breakpoint_insert_location (struct bp_location *bl)
12282 {
12283   internal_error_pure_virtual_called ();
12284 }
12285
12286 static int
12287 base_breakpoint_remove_location (struct bp_location *bl,
12288                                  enum remove_bp_reason reason)
12289 {
12290   internal_error_pure_virtual_called ();
12291 }
12292
12293 static int
12294 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12295                                 const address_space *aspace,
12296                                 CORE_ADDR bp_addr,
12297                                 const struct target_waitstatus *ws)
12298 {
12299   internal_error_pure_virtual_called ();
12300 }
12301
12302 static void
12303 base_breakpoint_check_status (bpstat bs)
12304 {
12305   /* Always stop.   */
12306 }
12307
12308 /* A "works_in_software_mode" breakpoint_ops method that just internal
12309    errors.  */
12310
12311 static int
12312 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12313 {
12314   internal_error_pure_virtual_called ();
12315 }
12316
12317 /* A "resources_needed" breakpoint_ops method that just internal
12318    errors.  */
12319
12320 static int
12321 base_breakpoint_resources_needed (const struct bp_location *bl)
12322 {
12323   internal_error_pure_virtual_called ();
12324 }
12325
12326 static enum print_stop_action
12327 base_breakpoint_print_it (bpstat bs)
12328 {
12329   internal_error_pure_virtual_called ();
12330 }
12331
12332 static void
12333 base_breakpoint_print_one_detail (const struct breakpoint *self,
12334                                   struct ui_out *uiout)
12335 {
12336   /* nothing */
12337 }
12338
12339 static void
12340 base_breakpoint_print_mention (struct breakpoint *b)
12341 {
12342   internal_error_pure_virtual_called ();
12343 }
12344
12345 static void
12346 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12347 {
12348   internal_error_pure_virtual_called ();
12349 }
12350
12351 static void
12352 base_breakpoint_create_sals_from_location
12353   (const struct event_location *location,
12354    struct linespec_result *canonical,
12355    enum bptype type_wanted)
12356 {
12357   internal_error_pure_virtual_called ();
12358 }
12359
12360 static void
12361 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12362                                         struct linespec_result *c,
12363                                         gdb::unique_xmalloc_ptr<char> cond_string,
12364                                         gdb::unique_xmalloc_ptr<char> extra_string,
12365                                         enum bptype type_wanted,
12366                                         enum bpdisp disposition,
12367                                         int thread,
12368                                         int task, int ignore_count,
12369                                         const struct breakpoint_ops *o,
12370                                         int from_tty, int enabled,
12371                                         int internal, unsigned flags)
12372 {
12373   internal_error_pure_virtual_called ();
12374 }
12375
12376 static std::vector<symtab_and_line>
12377 base_breakpoint_decode_location (struct breakpoint *b,
12378                                  const struct event_location *location,
12379                                  struct program_space *search_pspace)
12380 {
12381   internal_error_pure_virtual_called ();
12382 }
12383
12384 /* The default 'explains_signal' method.  */
12385
12386 static int
12387 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12388 {
12389   return 1;
12390 }
12391
12392 /* The default "after_condition_true" method.  */
12393
12394 static void
12395 base_breakpoint_after_condition_true (struct bpstats *bs)
12396 {
12397   /* Nothing to do.   */
12398 }
12399
12400 struct breakpoint_ops base_breakpoint_ops =
12401 {
12402   base_breakpoint_allocate_location,
12403   base_breakpoint_re_set,
12404   base_breakpoint_insert_location,
12405   base_breakpoint_remove_location,
12406   base_breakpoint_breakpoint_hit,
12407   base_breakpoint_check_status,
12408   base_breakpoint_resources_needed,
12409   base_breakpoint_works_in_software_mode,
12410   base_breakpoint_print_it,
12411   NULL,
12412   base_breakpoint_print_one_detail,
12413   base_breakpoint_print_mention,
12414   base_breakpoint_print_recreate,
12415   base_breakpoint_create_sals_from_location,
12416   base_breakpoint_create_breakpoints_sal,
12417   base_breakpoint_decode_location,
12418   base_breakpoint_explains_signal,
12419   base_breakpoint_after_condition_true,
12420 };
12421
12422 /* Default breakpoint_ops methods.  */
12423
12424 static void
12425 bkpt_re_set (struct breakpoint *b)
12426 {
12427   /* FIXME: is this still reachable?  */
12428   if (breakpoint_event_location_empty_p (b))
12429     {
12430       /* Anything without a location can't be re-set.  */
12431       delete_breakpoint (b);
12432       return;
12433     }
12434
12435   breakpoint_re_set_default (b);
12436 }
12437
12438 static int
12439 bkpt_insert_location (struct bp_location *bl)
12440 {
12441   CORE_ADDR addr = bl->target_info.reqstd_address;
12442
12443   bl->target_info.kind = breakpoint_kind (bl, &addr);
12444   bl->target_info.placed_address = addr;
12445
12446   if (bl->loc_type == bp_loc_hardware_breakpoint)
12447     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12448   else
12449     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12450 }
12451
12452 static int
12453 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
12454 {
12455   if (bl->loc_type == bp_loc_hardware_breakpoint)
12456     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12457   else
12458     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
12459 }
12460
12461 static int
12462 bkpt_breakpoint_hit (const struct bp_location *bl,
12463                      const address_space *aspace, CORE_ADDR bp_addr,
12464                      const struct target_waitstatus *ws)
12465 {
12466   if (ws->kind != TARGET_WAITKIND_STOPPED
12467       || ws->value.sig != GDB_SIGNAL_TRAP)
12468     return 0;
12469
12470   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12471                                  aspace, bp_addr))
12472     return 0;
12473
12474   if (overlay_debugging         /* unmapped overlay section */
12475       && section_is_overlay (bl->section)
12476       && !section_is_mapped (bl->section))
12477     return 0;
12478
12479   return 1;
12480 }
12481
12482 static int
12483 dprintf_breakpoint_hit (const struct bp_location *bl,
12484                         const address_space *aspace, CORE_ADDR bp_addr,
12485                         const struct target_waitstatus *ws)
12486 {
12487   if (dprintf_style == dprintf_style_agent
12488       && target_can_run_breakpoint_commands ())
12489     {
12490       /* An agent-style dprintf never causes a stop.  If we see a trap
12491          for this address it must be for a breakpoint that happens to
12492          be set at the same address.  */
12493       return 0;
12494     }
12495
12496   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12497 }
12498
12499 static int
12500 bkpt_resources_needed (const struct bp_location *bl)
12501 {
12502   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12503
12504   return 1;
12505 }
12506
12507 static enum print_stop_action
12508 bkpt_print_it (bpstat bs)
12509 {
12510   struct breakpoint *b;
12511   const struct bp_location *bl;
12512   int bp_temp;
12513   struct ui_out *uiout = current_uiout;
12514
12515   gdb_assert (bs->bp_location_at != NULL);
12516
12517   bl = bs->bp_location_at;
12518   b = bs->breakpoint_at;
12519
12520   bp_temp = b->disposition == disp_del;
12521   if (bl->address != bl->requested_address)
12522     breakpoint_adjustment_warning (bl->requested_address,
12523                                    bl->address,
12524                                    b->number, 1);
12525   annotate_breakpoint (b->number);
12526   maybe_print_thread_hit_breakpoint (uiout);
12527
12528   if (bp_temp)
12529     uiout->text ("Temporary breakpoint ");
12530   else
12531     uiout->text ("Breakpoint ");
12532   if (uiout->is_mi_like_p ())
12533     {
12534       uiout->field_string ("reason",
12535                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12536       uiout->field_string ("disp", bpdisp_text (b->disposition));
12537     }
12538   uiout->field_int ("bkptno", b->number);
12539   uiout->text (", ");
12540
12541   return PRINT_SRC_AND_LOC;
12542 }
12543
12544 static void
12545 bkpt_print_mention (struct breakpoint *b)
12546 {
12547   if (current_uiout->is_mi_like_p ())
12548     return;
12549
12550   switch (b->type)
12551     {
12552     case bp_breakpoint:
12553     case bp_gnu_ifunc_resolver:
12554       if (b->disposition == disp_del)
12555         printf_filtered (_("Temporary breakpoint"));
12556       else
12557         printf_filtered (_("Breakpoint"));
12558       printf_filtered (_(" %d"), b->number);
12559       if (b->type == bp_gnu_ifunc_resolver)
12560         printf_filtered (_(" at gnu-indirect-function resolver"));
12561       break;
12562     case bp_hardware_breakpoint:
12563       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12564       break;
12565     case bp_dprintf:
12566       printf_filtered (_("Dprintf %d"), b->number);
12567       break;
12568     }
12569
12570   say_where (b);
12571 }
12572
12573 static void
12574 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12575 {
12576   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12577     fprintf_unfiltered (fp, "tbreak");
12578   else if (tp->type == bp_breakpoint)
12579     fprintf_unfiltered (fp, "break");
12580   else if (tp->type == bp_hardware_breakpoint
12581            && tp->disposition == disp_del)
12582     fprintf_unfiltered (fp, "thbreak");
12583   else if (tp->type == bp_hardware_breakpoint)
12584     fprintf_unfiltered (fp, "hbreak");
12585   else
12586     internal_error (__FILE__, __LINE__,
12587                     _("unhandled breakpoint type %d"), (int) tp->type);
12588
12589   fprintf_unfiltered (fp, " %s",
12590                       event_location_to_string (tp->location.get ()));
12591
12592   /* Print out extra_string if this breakpoint is pending.  It might
12593      contain, for example, conditions that were set by the user.  */
12594   if (tp->loc == NULL && tp->extra_string != NULL)
12595     fprintf_unfiltered (fp, " %s", tp->extra_string);
12596
12597   print_recreate_thread (tp, fp);
12598 }
12599
12600 static void
12601 bkpt_create_sals_from_location (const struct event_location *location,
12602                                 struct linespec_result *canonical,
12603                                 enum bptype type_wanted)
12604 {
12605   create_sals_from_location_default (location, canonical, type_wanted);
12606 }
12607
12608 static void
12609 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12610                              struct linespec_result *canonical,
12611                              gdb::unique_xmalloc_ptr<char> cond_string,
12612                              gdb::unique_xmalloc_ptr<char> extra_string,
12613                              enum bptype type_wanted,
12614                              enum bpdisp disposition,
12615                              int thread,
12616                              int task, int ignore_count,
12617                              const struct breakpoint_ops *ops,
12618                              int from_tty, int enabled,
12619                              int internal, unsigned flags)
12620 {
12621   create_breakpoints_sal_default (gdbarch, canonical,
12622                                   std::move (cond_string),
12623                                   std::move (extra_string),
12624                                   type_wanted,
12625                                   disposition, thread, task,
12626                                   ignore_count, ops, from_tty,
12627                                   enabled, internal, flags);
12628 }
12629
12630 static std::vector<symtab_and_line>
12631 bkpt_decode_location (struct breakpoint *b,
12632                       const struct event_location *location,
12633                       struct program_space *search_pspace)
12634 {
12635   return decode_location_default (b, location, search_pspace);
12636 }
12637
12638 /* Virtual table for internal breakpoints.  */
12639
12640 static void
12641 internal_bkpt_re_set (struct breakpoint *b)
12642 {
12643   switch (b->type)
12644     {
12645       /* Delete overlay event and longjmp master breakpoints; they
12646          will be reset later by breakpoint_re_set.  */
12647     case bp_overlay_event:
12648     case bp_longjmp_master:
12649     case bp_std_terminate_master:
12650     case bp_exception_master:
12651       delete_breakpoint (b);
12652       break;
12653
12654       /* This breakpoint is special, it's set up when the inferior
12655          starts and we really don't want to touch it.  */
12656     case bp_shlib_event:
12657
12658       /* Like bp_shlib_event, this breakpoint type is special.  Once
12659          it is set up, we do not want to touch it.  */
12660     case bp_thread_event:
12661       break;
12662     }
12663 }
12664
12665 static void
12666 internal_bkpt_check_status (bpstat bs)
12667 {
12668   if (bs->breakpoint_at->type == bp_shlib_event)
12669     {
12670       /* If requested, stop when the dynamic linker notifies GDB of
12671          events.  This allows the user to get control and place
12672          breakpoints in initializer routines for dynamically loaded
12673          objects (among other things).  */
12674       bs->stop = stop_on_solib_events;
12675       bs->print = stop_on_solib_events;
12676     }
12677   else
12678     bs->stop = 0;
12679 }
12680
12681 static enum print_stop_action
12682 internal_bkpt_print_it (bpstat bs)
12683 {
12684   struct breakpoint *b;
12685
12686   b = bs->breakpoint_at;
12687
12688   switch (b->type)
12689     {
12690     case bp_shlib_event:
12691       /* Did we stop because the user set the stop_on_solib_events
12692          variable?  (If so, we report this as a generic, "Stopped due
12693          to shlib event" message.) */
12694       print_solib_event (0);
12695       break;
12696
12697     case bp_thread_event:
12698       /* Not sure how we will get here.
12699          GDB should not stop for these breakpoints.  */
12700       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12701       break;
12702
12703     case bp_overlay_event:
12704       /* By analogy with the thread event, GDB should not stop for these.  */
12705       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12706       break;
12707
12708     case bp_longjmp_master:
12709       /* These should never be enabled.  */
12710       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12711       break;
12712
12713     case bp_std_terminate_master:
12714       /* These should never be enabled.  */
12715       printf_filtered (_("std::terminate Master Breakpoint: "
12716                          "gdb should not stop!\n"));
12717       break;
12718
12719     case bp_exception_master:
12720       /* These should never be enabled.  */
12721       printf_filtered (_("Exception Master Breakpoint: "
12722                          "gdb should not stop!\n"));
12723       break;
12724     }
12725
12726   return PRINT_NOTHING;
12727 }
12728
12729 static void
12730 internal_bkpt_print_mention (struct breakpoint *b)
12731 {
12732   /* Nothing to mention.  These breakpoints are internal.  */
12733 }
12734
12735 /* Virtual table for momentary breakpoints  */
12736
12737 static void
12738 momentary_bkpt_re_set (struct breakpoint *b)
12739 {
12740   /* Keep temporary breakpoints, which can be encountered when we step
12741      over a dlopen call and solib_add is resetting the breakpoints.
12742      Otherwise these should have been blown away via the cleanup chain
12743      or by breakpoint_init_inferior when we rerun the executable.  */
12744 }
12745
12746 static void
12747 momentary_bkpt_check_status (bpstat bs)
12748 {
12749   /* Nothing.  The point of these breakpoints is causing a stop.  */
12750 }
12751
12752 static enum print_stop_action
12753 momentary_bkpt_print_it (bpstat bs)
12754 {
12755   return PRINT_UNKNOWN;
12756 }
12757
12758 static void
12759 momentary_bkpt_print_mention (struct breakpoint *b)
12760 {
12761   /* Nothing to mention.  These breakpoints are internal.  */
12762 }
12763
12764 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
12765
12766    It gets cleared already on the removal of the first one of such placed
12767    breakpoints.  This is OK as they get all removed altogether.  */
12768
12769 longjmp_breakpoint::~longjmp_breakpoint ()
12770 {
12771   thread_info *tp = find_thread_global_id (this->thread);
12772
12773   if (tp != NULL)
12774     tp->initiating_frame = null_frame_id;
12775 }
12776
12777 /* Specific methods for probe breakpoints.  */
12778
12779 static int
12780 bkpt_probe_insert_location (struct bp_location *bl)
12781 {
12782   int v = bkpt_insert_location (bl);
12783
12784   if (v == 0)
12785     {
12786       /* The insertion was successful, now let's set the probe's semaphore
12787          if needed.  */
12788       bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
12789     }
12790
12791   return v;
12792 }
12793
12794 static int
12795 bkpt_probe_remove_location (struct bp_location *bl,
12796                             enum remove_bp_reason reason)
12797 {
12798   /* Let's clear the semaphore before removing the location.  */
12799   bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
12800
12801   return bkpt_remove_location (bl, reason);
12802 }
12803
12804 static void
12805 bkpt_probe_create_sals_from_location (const struct event_location *location,
12806                                       struct linespec_result *canonical,
12807                                       enum bptype type_wanted)
12808 {
12809   struct linespec_sals lsal;
12810
12811   lsal.sals = parse_probes (location, NULL, canonical);
12812   lsal.canonical
12813     = xstrdup (event_location_to_string (canonical->location.get ()));
12814   canonical->lsals.push_back (std::move (lsal));
12815 }
12816
12817 static std::vector<symtab_and_line>
12818 bkpt_probe_decode_location (struct breakpoint *b,
12819                             const struct event_location *location,
12820                             struct program_space *search_pspace)
12821 {
12822   std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
12823   if (sals.empty ())
12824     error (_("probe not found"));
12825   return sals;
12826 }
12827
12828 /* The breakpoint_ops structure to be used in tracepoints.  */
12829
12830 static void
12831 tracepoint_re_set (struct breakpoint *b)
12832 {
12833   breakpoint_re_set_default (b);
12834 }
12835
12836 static int
12837 tracepoint_breakpoint_hit (const struct bp_location *bl,
12838                            const address_space *aspace, CORE_ADDR bp_addr,
12839                            const struct target_waitstatus *ws)
12840 {
12841   /* By definition, the inferior does not report stops at
12842      tracepoints.  */
12843   return 0;
12844 }
12845
12846 static void
12847 tracepoint_print_one_detail (const struct breakpoint *self,
12848                              struct ui_out *uiout)
12849 {
12850   struct tracepoint *tp = (struct tracepoint *) self;
12851   if (!tp->static_trace_marker_id.empty ())
12852     {
12853       gdb_assert (self->type == bp_static_tracepoint);
12854
12855       uiout->text ("\tmarker id is ");
12856       uiout->field_string ("static-tracepoint-marker-string-id",
12857                            tp->static_trace_marker_id);
12858       uiout->text ("\n");
12859     }
12860 }
12861
12862 static void
12863 tracepoint_print_mention (struct breakpoint *b)
12864 {
12865   if (current_uiout->is_mi_like_p ())
12866     return;
12867
12868   switch (b->type)
12869     {
12870     case bp_tracepoint:
12871       printf_filtered (_("Tracepoint"));
12872       printf_filtered (_(" %d"), b->number);
12873       break;
12874     case bp_fast_tracepoint:
12875       printf_filtered (_("Fast tracepoint"));
12876       printf_filtered (_(" %d"), b->number);
12877       break;
12878     case bp_static_tracepoint:
12879       printf_filtered (_("Static tracepoint"));
12880       printf_filtered (_(" %d"), b->number);
12881       break;
12882     default:
12883       internal_error (__FILE__, __LINE__,
12884                       _("unhandled tracepoint type %d"), (int) b->type);
12885     }
12886
12887   say_where (b);
12888 }
12889
12890 static void
12891 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12892 {
12893   struct tracepoint *tp = (struct tracepoint *) self;
12894
12895   if (self->type == bp_fast_tracepoint)
12896     fprintf_unfiltered (fp, "ftrace");
12897   else if (self->type == bp_static_tracepoint)
12898     fprintf_unfiltered (fp, "strace");
12899   else if (self->type == bp_tracepoint)
12900     fprintf_unfiltered (fp, "trace");
12901   else
12902     internal_error (__FILE__, __LINE__,
12903                     _("unhandled tracepoint type %d"), (int) self->type);
12904
12905   fprintf_unfiltered (fp, " %s",
12906                       event_location_to_string (self->location.get ()));
12907   print_recreate_thread (self, fp);
12908
12909   if (tp->pass_count)
12910     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12911 }
12912
12913 static void
12914 tracepoint_create_sals_from_location (const struct event_location *location,
12915                                       struct linespec_result *canonical,
12916                                       enum bptype type_wanted)
12917 {
12918   create_sals_from_location_default (location, canonical, type_wanted);
12919 }
12920
12921 static void
12922 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12923                                    struct linespec_result *canonical,
12924                                    gdb::unique_xmalloc_ptr<char> cond_string,
12925                                    gdb::unique_xmalloc_ptr<char> extra_string,
12926                                    enum bptype type_wanted,
12927                                    enum bpdisp disposition,
12928                                    int thread,
12929                                    int task, int ignore_count,
12930                                    const struct breakpoint_ops *ops,
12931                                    int from_tty, int enabled,
12932                                    int internal, unsigned flags)
12933 {
12934   create_breakpoints_sal_default (gdbarch, canonical,
12935                                   std::move (cond_string),
12936                                   std::move (extra_string),
12937                                   type_wanted,
12938                                   disposition, thread, task,
12939                                   ignore_count, ops, from_tty,
12940                                   enabled, internal, flags);
12941 }
12942
12943 static std::vector<symtab_and_line>
12944 tracepoint_decode_location (struct breakpoint *b,
12945                             const struct event_location *location,
12946                             struct program_space *search_pspace)
12947 {
12948   return decode_location_default (b, location, search_pspace);
12949 }
12950
12951 struct breakpoint_ops tracepoint_breakpoint_ops;
12952
12953 /* The breakpoint_ops structure to be use on tracepoints placed in a
12954    static probe.  */
12955
12956 static void
12957 tracepoint_probe_create_sals_from_location
12958   (const struct event_location *location,
12959    struct linespec_result *canonical,
12960    enum bptype type_wanted)
12961 {
12962   /* We use the same method for breakpoint on probes.  */
12963   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
12964 }
12965
12966 static std::vector<symtab_and_line>
12967 tracepoint_probe_decode_location (struct breakpoint *b,
12968                                   const struct event_location *location,
12969                                   struct program_space *search_pspace)
12970 {
12971   /* We use the same method for breakpoint on probes.  */
12972   return bkpt_probe_decode_location (b, location, search_pspace);
12973 }
12974
12975 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12976
12977 /* Dprintf breakpoint_ops methods.  */
12978
12979 static void
12980 dprintf_re_set (struct breakpoint *b)
12981 {
12982   breakpoint_re_set_default (b);
12983
12984   /* extra_string should never be non-NULL for dprintf.  */
12985   gdb_assert (b->extra_string != NULL);
12986
12987   /* 1 - connect to target 1, that can run breakpoint commands.
12988      2 - create a dprintf, which resolves fine.
12989      3 - disconnect from target 1
12990      4 - connect to target 2, that can NOT run breakpoint commands.
12991
12992      After steps #3/#4, you'll want the dprintf command list to
12993      be updated, because target 1 and 2 may well return different
12994      answers for target_can_run_breakpoint_commands().
12995      Given absence of finer grained resetting, we get to do
12996      it all the time.  */
12997   if (b->extra_string != NULL)
12998     update_dprintf_command_list (b);
12999 }
13000
13001 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13002
13003 static void
13004 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13005 {
13006   fprintf_unfiltered (fp, "dprintf %s,%s",
13007                       event_location_to_string (tp->location.get ()),
13008                       tp->extra_string);
13009   print_recreate_thread (tp, fp);
13010 }
13011
13012 /* Implement the "after_condition_true" breakpoint_ops method for
13013    dprintf.
13014
13015    dprintf's are implemented with regular commands in their command
13016    list, but we run the commands here instead of before presenting the
13017    stop to the user, as dprintf's don't actually cause a stop.  This
13018    also makes it so that the commands of multiple dprintfs at the same
13019    address are all handled.  */
13020
13021 static void
13022 dprintf_after_condition_true (struct bpstats *bs)
13023 {
13024   struct bpstats tmp_bs;
13025   struct bpstats *tmp_bs_p = &tmp_bs;
13026
13027   /* dprintf's never cause a stop.  This wasn't set in the
13028      check_status hook instead because that would make the dprintf's
13029      condition not be evaluated.  */
13030   bs->stop = 0;
13031
13032   /* Run the command list here.  Take ownership of it instead of
13033      copying.  We never want these commands to run later in
13034      bpstat_do_actions, if a breakpoint that causes a stop happens to
13035      be set at same address as this dprintf, or even if running the
13036      commands here throws.  */
13037   tmp_bs.commands = bs->commands;
13038   bs->commands = NULL;
13039
13040   bpstat_do_actions_1 (&tmp_bs_p);
13041
13042   /* 'tmp_bs.commands' will usually be NULL by now, but
13043      bpstat_do_actions_1 may return early without processing the whole
13044      list.  */
13045 }
13046
13047 /* The breakpoint_ops structure to be used on static tracepoints with
13048    markers (`-m').  */
13049
13050 static void
13051 strace_marker_create_sals_from_location (const struct event_location *location,
13052                                          struct linespec_result *canonical,
13053                                          enum bptype type_wanted)
13054 {
13055   struct linespec_sals lsal;
13056   const char *arg_start, *arg;
13057
13058   arg = arg_start = get_linespec_location (location)->spec_string;
13059   lsal.sals = decode_static_tracepoint_spec (&arg);
13060
13061   std::string str (arg_start, arg - arg_start);
13062   const char *ptr = str.c_str ();
13063   canonical->location
13064     = new_linespec_location (&ptr, symbol_name_match_type::FULL);
13065
13066   lsal.canonical
13067     = xstrdup (event_location_to_string (canonical->location.get ()));
13068   canonical->lsals.push_back (std::move (lsal));
13069 }
13070
13071 static void
13072 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13073                                       struct linespec_result *canonical,
13074                                       gdb::unique_xmalloc_ptr<char> cond_string,
13075                                       gdb::unique_xmalloc_ptr<char> extra_string,
13076                                       enum bptype type_wanted,
13077                                       enum bpdisp disposition,
13078                                       int thread,
13079                                       int task, int ignore_count,
13080                                       const struct breakpoint_ops *ops,
13081                                       int from_tty, int enabled,
13082                                       int internal, unsigned flags)
13083 {
13084   const linespec_sals &lsal = canonical->lsals[0];
13085
13086   /* If the user is creating a static tracepoint by marker id
13087      (strace -m MARKER_ID), then store the sals index, so that
13088      breakpoint_re_set can try to match up which of the newly
13089      found markers corresponds to this one, and, don't try to
13090      expand multiple locations for each sal, given than SALS
13091      already should contain all sals for MARKER_ID.  */
13092
13093   for (size_t i = 0; i < lsal.sals.size (); i++)
13094     {
13095       event_location_up location
13096         = copy_event_location (canonical->location.get ());
13097
13098       std::unique_ptr<tracepoint> tp (new tracepoint ());
13099       init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
13100                            std::move (location), NULL,
13101                            std::move (cond_string),
13102                            std::move (extra_string),
13103                            type_wanted, disposition,
13104                            thread, task, ignore_count, ops,
13105                            from_tty, enabled, internal, flags,
13106                            canonical->special_display);
13107       /* Given that its possible to have multiple markers with
13108          the same string id, if the user is creating a static
13109          tracepoint by marker id ("strace -m MARKER_ID"), then
13110          store the sals index, so that breakpoint_re_set can
13111          try to match up which of the newly found markers
13112          corresponds to this one  */
13113       tp->static_trace_marker_id_idx = i;
13114
13115       install_breakpoint (internal, std::move (tp), 0);
13116     }
13117 }
13118
13119 static std::vector<symtab_and_line>
13120 strace_marker_decode_location (struct breakpoint *b,
13121                                const struct event_location *location,
13122                                struct program_space *search_pspace)
13123 {
13124   struct tracepoint *tp = (struct tracepoint *) b;
13125   const char *s = get_linespec_location (location)->spec_string;
13126
13127   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
13128   if (sals.size () > tp->static_trace_marker_id_idx)
13129     {
13130       sals[0] = sals[tp->static_trace_marker_id_idx];
13131       sals.resize (1);
13132       return sals;
13133     }
13134   else
13135     error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
13136 }
13137
13138 static struct breakpoint_ops strace_marker_breakpoint_ops;
13139
13140 static int
13141 strace_marker_p (struct breakpoint *b)
13142 {
13143   return b->ops == &strace_marker_breakpoint_ops;
13144 }
13145
13146 /* Delete a breakpoint and clean up all traces of it in the data
13147    structures.  */
13148
13149 void
13150 delete_breakpoint (struct breakpoint *bpt)
13151 {
13152   struct breakpoint *b;
13153
13154   gdb_assert (bpt != NULL);
13155
13156   /* Has this bp already been deleted?  This can happen because
13157      multiple lists can hold pointers to bp's.  bpstat lists are
13158      especial culprits.
13159
13160      One example of this happening is a watchpoint's scope bp.  When
13161      the scope bp triggers, we notice that the watchpoint is out of
13162      scope, and delete it.  We also delete its scope bp.  But the
13163      scope bp is marked "auto-deleting", and is already on a bpstat.
13164      That bpstat is then checked for auto-deleting bp's, which are
13165      deleted.
13166
13167      A real solution to this problem might involve reference counts in
13168      bp's, and/or giving them pointers back to their referencing
13169      bpstat's, and teaching delete_breakpoint to only free a bp's
13170      storage when no more references were extent.  A cheaper bandaid
13171      was chosen.  */
13172   if (bpt->type == bp_none)
13173     return;
13174
13175   /* At least avoid this stale reference until the reference counting
13176      of breakpoints gets resolved.  */
13177   if (bpt->related_breakpoint != bpt)
13178     {
13179       struct breakpoint *related;
13180       struct watchpoint *w;
13181
13182       if (bpt->type == bp_watchpoint_scope)
13183         w = (struct watchpoint *) bpt->related_breakpoint;
13184       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13185         w = (struct watchpoint *) bpt;
13186       else
13187         w = NULL;
13188       if (w != NULL)
13189         watchpoint_del_at_next_stop (w);
13190
13191       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13192       for (related = bpt; related->related_breakpoint != bpt;
13193            related = related->related_breakpoint);
13194       related->related_breakpoint = bpt->related_breakpoint;
13195       bpt->related_breakpoint = bpt;
13196     }
13197
13198   /* watch_command_1 creates a watchpoint but only sets its number if
13199      update_watchpoint succeeds in creating its bp_locations.  If there's
13200      a problem in that process, we'll be asked to delete the half-created
13201      watchpoint.  In that case, don't announce the deletion.  */
13202   if (bpt->number)
13203     gdb::observers::breakpoint_deleted.notify (bpt);
13204
13205   if (breakpoint_chain == bpt)
13206     breakpoint_chain = bpt->next;
13207
13208   ALL_BREAKPOINTS (b)
13209     if (b->next == bpt)
13210     {
13211       b->next = bpt->next;
13212       break;
13213     }
13214
13215   /* Be sure no bpstat's are pointing at the breakpoint after it's
13216      been freed.  */
13217   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13218      in all threads for now.  Note that we cannot just remove bpstats
13219      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13220      commands are associated with the bpstat; if we remove it here,
13221      then the later call to bpstat_do_actions (&stop_bpstat); in
13222      event-top.c won't do anything, and temporary breakpoints with
13223      commands won't work.  */
13224
13225   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13226
13227   /* Now that breakpoint is removed from breakpoint list, update the
13228      global location list.  This will remove locations that used to
13229      belong to this breakpoint.  Do this before freeing the breakpoint
13230      itself, since remove_breakpoint looks at location's owner.  It
13231      might be better design to have location completely
13232      self-contained, but it's not the case now.  */
13233   update_global_location_list (UGLL_DONT_INSERT);
13234
13235   /* On the chance that someone will soon try again to delete this
13236      same bp, we mark it as deleted before freeing its storage.  */
13237   bpt->type = bp_none;
13238   delete bpt;
13239 }
13240
13241 /* Iterator function to call a user-provided callback function once
13242    for each of B and its related breakpoints.  */
13243
13244 static void
13245 iterate_over_related_breakpoints (struct breakpoint *b,
13246                                   gdb::function_view<void (breakpoint *)> function)
13247 {
13248   struct breakpoint *related;
13249
13250   related = b;
13251   do
13252     {
13253       struct breakpoint *next;
13254
13255       /* FUNCTION may delete RELATED.  */
13256       next = related->related_breakpoint;
13257
13258       if (next == related)
13259         {
13260           /* RELATED is the last ring entry.  */
13261           function (related);
13262
13263           /* FUNCTION may have deleted it, so we'd never reach back to
13264              B.  There's nothing left to do anyway, so just break
13265              out.  */
13266           break;
13267         }
13268       else
13269         function (related);
13270
13271       related = next;
13272     }
13273   while (related != b);
13274 }
13275
13276 static void
13277 delete_command (const char *arg, int from_tty)
13278 {
13279   struct breakpoint *b, *b_tmp;
13280
13281   dont_repeat ();
13282
13283   if (arg == 0)
13284     {
13285       int breaks_to_delete = 0;
13286
13287       /* Delete all breakpoints if no argument.  Do not delete
13288          internal breakpoints, these have to be deleted with an
13289          explicit breakpoint number argument.  */
13290       ALL_BREAKPOINTS (b)
13291         if (user_breakpoint_p (b))
13292           {
13293             breaks_to_delete = 1;
13294             break;
13295           }
13296
13297       /* Ask user only if there are some breakpoints to delete.  */
13298       if (!from_tty
13299           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13300         {
13301           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13302             if (user_breakpoint_p (b))
13303               delete_breakpoint (b);
13304         }
13305     }
13306   else
13307     map_breakpoint_numbers
13308       (arg, [&] (breakpoint *b)
13309        {
13310          iterate_over_related_breakpoints (b, delete_breakpoint);
13311        });
13312 }
13313
13314 /* Return true if all locations of B bound to PSPACE are pending.  If
13315    PSPACE is NULL, all locations of all program spaces are
13316    considered.  */
13317
13318 static int
13319 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
13320 {
13321   struct bp_location *loc;
13322
13323   for (loc = b->loc; loc != NULL; loc = loc->next)
13324     if ((pspace == NULL
13325          || loc->pspace == pspace)
13326         && !loc->shlib_disabled
13327         && !loc->pspace->executing_startup)
13328       return 0;
13329   return 1;
13330 }
13331
13332 /* Subroutine of update_breakpoint_locations to simplify it.
13333    Return non-zero if multiple fns in list LOC have the same name.
13334    Null names are ignored.  */
13335
13336 static int
13337 ambiguous_names_p (struct bp_location *loc)
13338 {
13339   struct bp_location *l;
13340   htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
13341                                    xcalloc, xfree);
13342
13343   for (l = loc; l != NULL; l = l->next)
13344     {
13345       const char **slot;
13346       const char *name = l->function_name;
13347
13348       /* Allow for some names to be NULL, ignore them.  */
13349       if (name == NULL)
13350         continue;
13351
13352       slot = (const char **) htab_find_slot (htab, (const void *) name,
13353                                              INSERT);
13354       /* NOTE: We can assume slot != NULL here because xcalloc never
13355          returns NULL.  */
13356       if (*slot != NULL)
13357         {
13358           htab_delete (htab);
13359           return 1;
13360         }
13361       *slot = name;
13362     }
13363
13364   htab_delete (htab);
13365   return 0;
13366 }
13367
13368 /* When symbols change, it probably means the sources changed as well,
13369    and it might mean the static tracepoint markers are no longer at
13370    the same address or line numbers they used to be at last we
13371    checked.  Losing your static tracepoints whenever you rebuild is
13372    undesirable.  This function tries to resync/rematch gdb static
13373    tracepoints with the markers on the target, for static tracepoints
13374    that have not been set by marker id.  Static tracepoint that have
13375    been set by marker id are reset by marker id in breakpoint_re_set.
13376    The heuristic is:
13377
13378    1) For a tracepoint set at a specific address, look for a marker at
13379    the old PC.  If one is found there, assume to be the same marker.
13380    If the name / string id of the marker found is different from the
13381    previous known name, assume that means the user renamed the marker
13382    in the sources, and output a warning.
13383
13384    2) For a tracepoint set at a given line number, look for a marker
13385    at the new address of the old line number.  If one is found there,
13386    assume to be the same marker.  If the name / string id of the
13387    marker found is different from the previous known name, assume that
13388    means the user renamed the marker in the sources, and output a
13389    warning.
13390
13391    3) If a marker is no longer found at the same address or line, it
13392    may mean the marker no longer exists.  But it may also just mean
13393    the code changed a bit.  Maybe the user added a few lines of code
13394    that made the marker move up or down (in line number terms).  Ask
13395    the target for info about the marker with the string id as we knew
13396    it.  If found, update line number and address in the matching
13397    static tracepoint.  This will get confused if there's more than one
13398    marker with the same ID (possible in UST, although unadvised
13399    precisely because it confuses tools).  */
13400
13401 static struct symtab_and_line
13402 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13403 {
13404   struct tracepoint *tp = (struct tracepoint *) b;
13405   struct static_tracepoint_marker marker;
13406   CORE_ADDR pc;
13407
13408   pc = sal.pc;
13409   if (sal.line)
13410     find_line_pc (sal.symtab, sal.line, &pc);
13411
13412   if (target_static_tracepoint_marker_at (pc, &marker))
13413     {
13414       if (tp->static_trace_marker_id != marker.str_id)
13415         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13416                  b->number, tp->static_trace_marker_id.c_str (),
13417                  marker.str_id.c_str ());
13418
13419       tp->static_trace_marker_id = std::move (marker.str_id);
13420
13421       return sal;
13422     }
13423
13424   /* Old marker wasn't found on target at lineno.  Try looking it up
13425      by string ID.  */
13426   if (!sal.explicit_pc
13427       && sal.line != 0
13428       && sal.symtab != NULL
13429       && !tp->static_trace_marker_id.empty ())
13430     {
13431       std::vector<static_tracepoint_marker> markers
13432         = target_static_tracepoint_markers_by_strid
13433             (tp->static_trace_marker_id.c_str ());
13434
13435       if (!markers.empty ())
13436         {
13437           struct symbol *sym;
13438           struct static_tracepoint_marker *tpmarker;
13439           struct ui_out *uiout = current_uiout;
13440           struct explicit_location explicit_loc;
13441
13442           tpmarker = &markers[0];
13443
13444           tp->static_trace_marker_id = std::move (tpmarker->str_id);
13445
13446           warning (_("marker for static tracepoint %d (%s) not "
13447                      "found at previous line number"),
13448                    b->number, tp->static_trace_marker_id.c_str ());
13449
13450           symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
13451           sym = find_pc_sect_function (tpmarker->address, NULL);
13452           uiout->text ("Now in ");
13453           if (sym)
13454             {
13455               uiout->field_string ("func", SYMBOL_PRINT_NAME (sym));
13456               uiout->text (" at ");
13457             }
13458           uiout->field_string ("file",
13459                                symtab_to_filename_for_display (sal2.symtab));
13460           uiout->text (":");
13461
13462           if (uiout->is_mi_like_p ())
13463             {
13464               const char *fullname = symtab_to_fullname (sal2.symtab);
13465
13466               uiout->field_string ("fullname", fullname);
13467             }
13468
13469           uiout->field_int ("line", sal2.line);
13470           uiout->text ("\n");
13471
13472           b->loc->line_number = sal2.line;
13473           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13474
13475           b->location.reset (NULL);
13476           initialize_explicit_location (&explicit_loc);
13477           explicit_loc.source_filename
13478             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
13479           explicit_loc.line_offset.offset = b->loc->line_number;
13480           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
13481           b->location = new_explicit_location (&explicit_loc);
13482
13483           /* Might be nice to check if function changed, and warn if
13484              so.  */
13485         }
13486     }
13487   return sal;
13488 }
13489
13490 /* Returns 1 iff locations A and B are sufficiently same that
13491    we don't need to report breakpoint as changed.  */
13492
13493 static int
13494 locations_are_equal (struct bp_location *a, struct bp_location *b)
13495 {
13496   while (a && b)
13497     {
13498       if (a->address != b->address)
13499         return 0;
13500
13501       if (a->shlib_disabled != b->shlib_disabled)
13502         return 0;
13503
13504       if (a->enabled != b->enabled)
13505         return 0;
13506
13507       a = a->next;
13508       b = b->next;
13509     }
13510
13511   if ((a == NULL) != (b == NULL))
13512     return 0;
13513
13514   return 1;
13515 }
13516
13517 /* Split all locations of B that are bound to PSPACE out of B's
13518    location list to a separate list and return that list's head.  If
13519    PSPACE is NULL, hoist out all locations of B.  */
13520
13521 static struct bp_location *
13522 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
13523 {
13524   struct bp_location head;
13525   struct bp_location *i = b->loc;
13526   struct bp_location **i_link = &b->loc;
13527   struct bp_location *hoisted = &head;
13528
13529   if (pspace == NULL)
13530     {
13531       i = b->loc;
13532       b->loc = NULL;
13533       return i;
13534     }
13535
13536   head.next = NULL;
13537
13538   while (i != NULL)
13539     {
13540       if (i->pspace == pspace)
13541         {
13542           *i_link = i->next;
13543           i->next = NULL;
13544           hoisted->next = i;
13545           hoisted = i;
13546         }
13547       else
13548         i_link = &i->next;
13549       i = *i_link;
13550     }
13551
13552   return head.next;
13553 }
13554
13555 /* Create new breakpoint locations for B (a hardware or software
13556    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
13557    zero, then B is a ranged breakpoint.  Only recreates locations for
13558    FILTER_PSPACE.  Locations of other program spaces are left
13559    untouched.  */
13560
13561 void
13562 update_breakpoint_locations (struct breakpoint *b,
13563                              struct program_space *filter_pspace,
13564                              gdb::array_view<const symtab_and_line> sals,
13565                              gdb::array_view<const symtab_and_line> sals_end)
13566 {
13567   struct bp_location *existing_locations;
13568
13569   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
13570     {
13571       /* Ranged breakpoints have only one start location and one end
13572          location.  */
13573       b->enable_state = bp_disabled;
13574       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13575                            "multiple locations found\n"),
13576                          b->number);
13577       return;
13578     }
13579
13580   /* If there's no new locations, and all existing locations are
13581      pending, don't do anything.  This optimizes the common case where
13582      all locations are in the same shared library, that was unloaded.
13583      We'd like to retain the location, so that when the library is
13584      loaded again, we don't loose the enabled/disabled status of the
13585      individual locations.  */
13586   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
13587     return;
13588
13589   existing_locations = hoist_existing_locations (b, filter_pspace);
13590
13591   for (const auto &sal : sals)
13592     {
13593       struct bp_location *new_loc;
13594
13595       switch_to_program_space_and_thread (sal.pspace);
13596
13597       new_loc = add_location_to_breakpoint (b, &sal);
13598
13599       /* Reparse conditions, they might contain references to the
13600          old symtab.  */
13601       if (b->cond_string != NULL)
13602         {
13603           const char *s;
13604
13605           s = b->cond_string;
13606           TRY
13607             {
13608               new_loc->cond = parse_exp_1 (&s, sal.pc,
13609                                            block_for_pc (sal.pc),
13610                                            0);
13611             }
13612           CATCH (e, RETURN_MASK_ERROR)
13613             {
13614               warning (_("failed to reevaluate condition "
13615                          "for breakpoint %d: %s"), 
13616                        b->number, e.message);
13617               new_loc->enabled = 0;
13618             }
13619           END_CATCH
13620         }
13621
13622       if (!sals_end.empty ())
13623         {
13624           CORE_ADDR end = find_breakpoint_range_end (sals_end[0]);
13625
13626           new_loc->length = end - sals[0].pc + 1;
13627         }
13628     }
13629
13630   /* If possible, carry over 'disable' status from existing
13631      breakpoints.  */
13632   {
13633     struct bp_location *e = existing_locations;
13634     /* If there are multiple breakpoints with the same function name,
13635        e.g. for inline functions, comparing function names won't work.
13636        Instead compare pc addresses; this is just a heuristic as things
13637        may have moved, but in practice it gives the correct answer
13638        often enough until a better solution is found.  */
13639     int have_ambiguous_names = ambiguous_names_p (b->loc);
13640
13641     for (; e; e = e->next)
13642       {
13643         if (!e->enabled && e->function_name)
13644           {
13645             struct bp_location *l = b->loc;
13646             if (have_ambiguous_names)
13647               {
13648                 for (; l; l = l->next)
13649                   if (breakpoint_locations_match (e, l))
13650                     {
13651                       l->enabled = 0;
13652                       break;
13653                     }
13654               }
13655             else
13656               {
13657                 for (; l; l = l->next)
13658                   if (l->function_name
13659                       && strcmp (e->function_name, l->function_name) == 0)
13660                     {
13661                       l->enabled = 0;
13662                       break;
13663                     }
13664               }
13665           }
13666       }
13667   }
13668
13669   if (!locations_are_equal (existing_locations, b->loc))
13670     gdb::observers::breakpoint_modified.notify (b);
13671 }
13672
13673 /* Find the SaL locations corresponding to the given LOCATION.
13674    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13675
13676 static std::vector<symtab_and_line>
13677 location_to_sals (struct breakpoint *b, struct event_location *location,
13678                   struct program_space *search_pspace, int *found)
13679 {
13680   struct gdb_exception exception = exception_none;
13681
13682   gdb_assert (b->ops != NULL);
13683
13684   std::vector<symtab_and_line> sals;
13685
13686   TRY
13687     {
13688       sals = b->ops->decode_location (b, location, search_pspace);
13689     }
13690   CATCH (e, RETURN_MASK_ERROR)
13691     {
13692       int not_found_and_ok = 0;
13693
13694       exception = e;
13695
13696       /* For pending breakpoints, it's expected that parsing will
13697          fail until the right shared library is loaded.  User has
13698          already told to create pending breakpoints and don't need
13699          extra messages.  If breakpoint is in bp_shlib_disabled
13700          state, then user already saw the message about that
13701          breakpoint being disabled, and don't want to see more
13702          errors.  */
13703       if (e.error == NOT_FOUND_ERROR
13704           && (b->condition_not_parsed
13705               || (b->loc != NULL
13706                   && search_pspace != NULL
13707                   && b->loc->pspace != search_pspace)
13708               || (b->loc && b->loc->shlib_disabled)
13709               || (b->loc && b->loc->pspace->executing_startup)
13710               || b->enable_state == bp_disabled))
13711         not_found_and_ok = 1;
13712
13713       if (!not_found_and_ok)
13714         {
13715           /* We surely don't want to warn about the same breakpoint
13716              10 times.  One solution, implemented here, is disable
13717              the breakpoint on error.  Another solution would be to
13718              have separate 'warning emitted' flag.  Since this
13719              happens only when a binary has changed, I don't know
13720              which approach is better.  */
13721           b->enable_state = bp_disabled;
13722           throw_exception (e);
13723         }
13724     }
13725   END_CATCH
13726
13727   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
13728     {
13729       for (auto &sal : sals)
13730         resolve_sal_pc (&sal);
13731       if (b->condition_not_parsed && b->extra_string != NULL)
13732         {
13733           char *cond_string, *extra_string;
13734           int thread, task;
13735
13736           find_condition_and_thread (b->extra_string, sals[0].pc,
13737                                      &cond_string, &thread, &task,
13738                                      &extra_string);
13739           gdb_assert (b->cond_string == NULL);
13740           if (cond_string)
13741             b->cond_string = cond_string;
13742           b->thread = thread;
13743           b->task = task;
13744           if (extra_string)
13745             {
13746               xfree (b->extra_string);
13747               b->extra_string = extra_string;
13748             }
13749           b->condition_not_parsed = 0;
13750         }
13751
13752       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13753         sals[0] = update_static_tracepoint (b, sals[0]);
13754
13755       *found = 1;
13756     }
13757   else
13758     *found = 0;
13759
13760   return sals;
13761 }
13762
13763 /* The default re_set method, for typical hardware or software
13764    breakpoints.  Reevaluate the breakpoint and recreate its
13765    locations.  */
13766
13767 static void
13768 breakpoint_re_set_default (struct breakpoint *b)
13769 {
13770   struct program_space *filter_pspace = current_program_space;
13771   std::vector<symtab_and_line> expanded, expanded_end;
13772
13773   int found;
13774   std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
13775                                                         filter_pspace, &found);
13776   if (found)
13777     expanded = std::move (sals);
13778
13779   if (b->location_range_end != NULL)
13780     {
13781       std::vector<symtab_and_line> sals_end
13782         = location_to_sals (b, b->location_range_end.get (),
13783                             filter_pspace, &found);
13784       if (found)
13785         expanded_end = std::move (sals_end);
13786     }
13787
13788   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
13789 }
13790
13791 /* Default method for creating SALs from an address string.  It basically
13792    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13793
13794 static void
13795 create_sals_from_location_default (const struct event_location *location,
13796                                    struct linespec_result *canonical,
13797                                    enum bptype type_wanted)
13798 {
13799   parse_breakpoint_sals (location, canonical);
13800 }
13801
13802 /* Call create_breakpoints_sal for the given arguments.  This is the default
13803    function for the `create_breakpoints_sal' method of
13804    breakpoint_ops.  */
13805
13806 static void
13807 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13808                                 struct linespec_result *canonical,
13809                                 gdb::unique_xmalloc_ptr<char> cond_string,
13810                                 gdb::unique_xmalloc_ptr<char> extra_string,
13811                                 enum bptype type_wanted,
13812                                 enum bpdisp disposition,
13813                                 int thread,
13814                                 int task, int ignore_count,
13815                                 const struct breakpoint_ops *ops,
13816                                 int from_tty, int enabled,
13817                                 int internal, unsigned flags)
13818 {
13819   create_breakpoints_sal (gdbarch, canonical,
13820                           std::move (cond_string),
13821                           std::move (extra_string),
13822                           type_wanted, disposition,
13823                           thread, task, ignore_count, ops, from_tty,
13824                           enabled, internal, flags);
13825 }
13826
13827 /* Decode the line represented by S by calling decode_line_full.  This is the
13828    default function for the `decode_location' method of breakpoint_ops.  */
13829
13830 static std::vector<symtab_and_line>
13831 decode_location_default (struct breakpoint *b,
13832                          const struct event_location *location,
13833                          struct program_space *search_pspace)
13834 {
13835   struct linespec_result canonical;
13836
13837   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
13838                     (struct symtab *) NULL, 0,
13839                     &canonical, multiple_symbols_all,
13840                     b->filter);
13841
13842   /* We should get 0 or 1 resulting SALs.  */
13843   gdb_assert (canonical.lsals.size () < 2);
13844
13845   if (!canonical.lsals.empty ())
13846     {
13847       const linespec_sals &lsal = canonical.lsals[0];
13848       return std::move (lsal.sals);
13849     }
13850   return {};
13851 }
13852
13853 /* Reset a breakpoint.  */
13854
13855 static void
13856 breakpoint_re_set_one (breakpoint *b)
13857 {
13858   input_radix = b->input_radix;
13859   set_language (b->language);
13860
13861   b->ops->re_set (b);
13862 }
13863
13864 /* Re-set breakpoint locations for the current program space.
13865    Locations bound to other program spaces are left untouched.  */
13866
13867 void
13868 breakpoint_re_set (void)
13869 {
13870   struct breakpoint *b, *b_tmp;
13871
13872   {
13873     scoped_restore_current_language save_language;
13874     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
13875     scoped_restore_current_pspace_and_thread restore_pspace_thread;
13876
13877     /* breakpoint_re_set_one sets the current_language to the language
13878        of the breakpoint it is resetting (see prepare_re_set_context)
13879        before re-evaluating the breakpoint's location.  This change can
13880        unfortunately get undone by accident if the language_mode is set
13881        to auto, and we either switch frames, or more likely in this context,
13882        we select the current frame.
13883
13884        We prevent this by temporarily turning the language_mode to
13885        language_mode_manual.  We restore it once all breakpoints
13886        have been reset.  */
13887     scoped_restore save_language_mode = make_scoped_restore (&language_mode);
13888     language_mode = language_mode_manual;
13889
13890     /* Note: we must not try to insert locations until after all
13891        breakpoints have been re-set.  Otherwise, e.g., when re-setting
13892        breakpoint 1, we'd insert the locations of breakpoint 2, which
13893        hadn't been re-set yet, and thus may have stale locations.  */
13894
13895     ALL_BREAKPOINTS_SAFE (b, b_tmp)
13896       {
13897         TRY
13898           {
13899             breakpoint_re_set_one (b);
13900           }
13901         CATCH (ex, RETURN_MASK_ALL)
13902           {
13903             exception_fprintf (gdb_stderr, ex,
13904                                "Error in re-setting breakpoint %d: ",
13905                                b->number);
13906           }
13907         END_CATCH
13908       }
13909
13910     jit_breakpoint_re_set ();
13911   }
13912
13913   create_overlay_event_breakpoint ();
13914   create_longjmp_master_breakpoint ();
13915   create_std_terminate_master_breakpoint ();
13916   create_exception_master_breakpoint ();
13917
13918   /* Now we can insert.  */
13919   update_global_location_list (UGLL_MAY_INSERT);
13920 }
13921 \f
13922 /* Reset the thread number of this breakpoint:
13923
13924    - If the breakpoint is for all threads, leave it as-is.
13925    - Else, reset it to the current thread for inferior_ptid.  */
13926 void
13927 breakpoint_re_set_thread (struct breakpoint *b)
13928 {
13929   if (b->thread != -1)
13930     {
13931       b->thread = inferior_thread ()->global_num;
13932
13933       /* We're being called after following a fork.  The new fork is
13934          selected as current, and unless this was a vfork will have a
13935          different program space from the original thread.  Reset that
13936          as well.  */
13937       b->loc->pspace = current_program_space;
13938     }
13939 }
13940
13941 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13942    If from_tty is nonzero, it prints a message to that effect,
13943    which ends with a period (no newline).  */
13944
13945 void
13946 set_ignore_count (int bptnum, int count, int from_tty)
13947 {
13948   struct breakpoint *b;
13949
13950   if (count < 0)
13951     count = 0;
13952
13953   ALL_BREAKPOINTS (b)
13954     if (b->number == bptnum)
13955     {
13956       if (is_tracepoint (b))
13957         {
13958           if (from_tty && count != 0)
13959             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13960                              bptnum);
13961           return;
13962         }
13963       
13964       b->ignore_count = count;
13965       if (from_tty)
13966         {
13967           if (count == 0)
13968             printf_filtered (_("Will stop next time "
13969                                "breakpoint %d is reached."),
13970                              bptnum);
13971           else if (count == 1)
13972             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13973                              bptnum);
13974           else
13975             printf_filtered (_("Will ignore next %d "
13976                                "crossings of breakpoint %d."),
13977                              count, bptnum);
13978         }
13979       gdb::observers::breakpoint_modified.notify (b);
13980       return;
13981     }
13982
13983   error (_("No breakpoint number %d."), bptnum);
13984 }
13985
13986 /* Command to set ignore-count of breakpoint N to COUNT.  */
13987
13988 static void
13989 ignore_command (const char *args, int from_tty)
13990 {
13991   const char *p = args;
13992   int num;
13993
13994   if (p == 0)
13995     error_no_arg (_("a breakpoint number"));
13996
13997   num = get_number (&p);
13998   if (num == 0)
13999     error (_("bad breakpoint number: '%s'"), args);
14000   if (*p == 0)
14001     error (_("Second argument (specified ignore-count) is missing."));
14002
14003   set_ignore_count (num,
14004                     longest_to_int (value_as_long (parse_and_eval (p))),
14005                     from_tty);
14006   if (from_tty)
14007     printf_filtered ("\n");
14008 }
14009 \f
14010
14011 /* Call FUNCTION on each of the breakpoints with numbers in the range
14012    defined by BP_NUM_RANGE (an inclusive range).  */
14013
14014 static void
14015 map_breakpoint_number_range (std::pair<int, int> bp_num_range,
14016                              gdb::function_view<void (breakpoint *)> function)
14017 {
14018   if (bp_num_range.first == 0)
14019     {
14020       warning (_("bad breakpoint number at or near '%d'"),
14021                bp_num_range.first);
14022     }
14023   else
14024     {
14025       struct breakpoint *b, *tmp;
14026
14027       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
14028         {
14029           bool match = false;
14030
14031           ALL_BREAKPOINTS_SAFE (b, tmp)
14032             if (b->number == i)
14033               {
14034                 match = true;
14035                 function (b);
14036                 break;
14037               }
14038           if (!match)
14039             printf_unfiltered (_("No breakpoint number %d.\n"), i);
14040         }
14041     }
14042 }
14043
14044 /* Call FUNCTION on each of the breakpoints whose numbers are given in
14045    ARGS.  */
14046
14047 static void
14048 map_breakpoint_numbers (const char *args,
14049                         gdb::function_view<void (breakpoint *)> function)
14050 {
14051   if (args == NULL || *args == '\0')
14052     error_no_arg (_("one or more breakpoint numbers"));
14053
14054   number_or_range_parser parser (args);
14055
14056   while (!parser.finished ())
14057     {
14058       int num = parser.get_number ();
14059       map_breakpoint_number_range (std::make_pair (num, num), function);
14060     }
14061 }
14062
14063 /* Return the breakpoint location structure corresponding to the
14064    BP_NUM and LOC_NUM values.  */
14065
14066 static struct bp_location *
14067 find_location_by_number (int bp_num, int loc_num)
14068 {
14069   struct breakpoint *b;
14070
14071   ALL_BREAKPOINTS (b)
14072     if (b->number == bp_num)
14073       {
14074         break;
14075       }
14076
14077   if (!b || b->number != bp_num)
14078     error (_("Bad breakpoint number '%d'"), bp_num);
14079   
14080   if (loc_num == 0)
14081     error (_("Bad breakpoint location number '%d'"), loc_num);
14082
14083   int n = 0;
14084   for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
14085     if (++n == loc_num)
14086       return loc;
14087
14088   error (_("Bad breakpoint location number '%d'"), loc_num);
14089 }
14090
14091 /* Modes of operation for extract_bp_num.  */
14092 enum class extract_bp_kind
14093 {
14094   /* Extracting a breakpoint number.  */
14095   bp,
14096
14097   /* Extracting a location number.  */
14098   loc,
14099 };
14100
14101 /* Extract a breakpoint or location number (as determined by KIND)
14102    from the string starting at START.  TRAILER is a character which
14103    can be found after the number.  If you don't want a trailer, use
14104    '\0'.  If END_OUT is not NULL, it is set to point after the parsed
14105    string.  This always returns a positive integer.  */
14106
14107 static int
14108 extract_bp_num (extract_bp_kind kind, const char *start,
14109                 int trailer, const char **end_out = NULL)
14110 {
14111   const char *end = start;
14112   int num = get_number_trailer (&end, trailer);
14113   if (num < 0)
14114     error (kind == extract_bp_kind::bp
14115            ? _("Negative breakpoint number '%.*s'")
14116            : _("Negative breakpoint location number '%.*s'"),
14117            int (end - start), start);
14118   if (num == 0)
14119     error (kind == extract_bp_kind::bp
14120            ? _("Bad breakpoint number '%.*s'")
14121            : _("Bad breakpoint location number '%.*s'"),
14122            int (end - start), start);
14123
14124   if (end_out != NULL)
14125     *end_out = end;
14126   return num;
14127 }
14128
14129 /* Extract a breakpoint or location range (as determined by KIND) in
14130    the form NUM1-NUM2 stored at &ARG[arg_offset].  Returns a std::pair
14131    representing the (inclusive) range.  The returned pair's elements
14132    are always positive integers.  */
14133
14134 static std::pair<int, int>
14135 extract_bp_or_bp_range (extract_bp_kind kind,
14136                         const std::string &arg,
14137                         std::string::size_type arg_offset)
14138 {
14139   std::pair<int, int> range;
14140   const char *bp_loc = &arg[arg_offset];
14141   std::string::size_type dash = arg.find ('-', arg_offset);
14142   if (dash != std::string::npos)
14143     {
14144       /* bp_loc is a range (x-z).  */
14145       if (arg.length () == dash + 1)
14146         error (kind == extract_bp_kind::bp
14147                ? _("Bad breakpoint number at or near: '%s'")
14148                : _("Bad breakpoint location number at or near: '%s'"),
14149                bp_loc);
14150
14151       const char *end;
14152       const char *start_first = bp_loc;
14153       const char *start_second = &arg[dash + 1];
14154       range.first = extract_bp_num (kind, start_first, '-');
14155       range.second = extract_bp_num (kind, start_second, '\0', &end);
14156
14157       if (range.first > range.second)
14158         error (kind == extract_bp_kind::bp
14159                ? _("Inverted breakpoint range at '%.*s'")
14160                : _("Inverted breakpoint location range at '%.*s'"),
14161                int (end - start_first), start_first);
14162     }
14163   else
14164     {
14165       /* bp_loc is a single value.  */
14166       range.first = extract_bp_num (kind, bp_loc, '\0');
14167       range.second = range.first;
14168     }
14169   return range;
14170 }
14171
14172 /* Extract the breakpoint/location range specified by ARG.  Returns
14173    the breakpoint range in BP_NUM_RANGE, and the location range in
14174    BP_LOC_RANGE.
14175
14176    ARG may be in any of the following forms:
14177
14178    x     where 'x' is a breakpoint number.
14179    x-y   where 'x' and 'y' specify a breakpoint numbers range.
14180    x.y   where 'x' is a breakpoint number and 'y' a location number.
14181    x.y-z where 'x' is a breakpoint number and 'y' and 'z' specify a
14182          location number range.
14183 */
14184
14185 static void
14186 extract_bp_number_and_location (const std::string &arg,
14187                                 std::pair<int, int> &bp_num_range,
14188                                 std::pair<int, int> &bp_loc_range)
14189 {
14190   std::string::size_type dot = arg.find ('.');
14191
14192   if (dot != std::string::npos)
14193     {
14194       /* Handle 'x.y' and 'x.y-z' cases.  */
14195
14196       if (arg.length () == dot + 1 || dot == 0)
14197         error (_("Bad breakpoint number at or near: '%s'"), arg.c_str ());
14198
14199       bp_num_range.first
14200         = extract_bp_num (extract_bp_kind::bp, arg.c_str (), '.');
14201       bp_num_range.second = bp_num_range.first;
14202
14203       bp_loc_range = extract_bp_or_bp_range (extract_bp_kind::loc,
14204                                              arg, dot + 1);
14205     }
14206   else
14207     {
14208       /* Handle x and x-y cases.  */
14209
14210       bp_num_range = extract_bp_or_bp_range (extract_bp_kind::bp, arg, 0);
14211       bp_loc_range.first = 0;
14212       bp_loc_range.second = 0;
14213     }
14214 }
14215
14216 /* Enable or disable a breakpoint location BP_NUM.LOC_NUM.  ENABLE
14217    specifies whether to enable or disable.  */
14218
14219 static void
14220 enable_disable_bp_num_loc (int bp_num, int loc_num, bool enable)
14221 {
14222   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
14223   if (loc != NULL)
14224     {
14225       if (loc->enabled != enable)
14226         {
14227           loc->enabled = enable;
14228           mark_breakpoint_location_modified (loc);
14229         }
14230       if (target_supports_enable_disable_tracepoint ()
14231           && current_trace_status ()->running && loc->owner
14232           && is_tracepoint (loc->owner))
14233         target_disable_tracepoint (loc);
14234     }
14235   update_global_location_list (UGLL_DONT_INSERT);
14236 }
14237
14238 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
14239    number of the breakpoint, and BP_LOC_RANGE specifies the
14240    (inclusive) range of location numbers of that breakpoint to
14241    enable/disable.  ENABLE specifies whether to enable or disable the
14242    location.  */
14243
14244 static void
14245 enable_disable_breakpoint_location_range (int bp_num,
14246                                           std::pair<int, int> &bp_loc_range,
14247                                           bool enable)
14248 {
14249   for (int i = bp_loc_range.first; i <= bp_loc_range.second; i++)
14250     enable_disable_bp_num_loc (bp_num, i, enable);
14251 }
14252
14253 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14254    If from_tty is nonzero, it prints a message to that effect,
14255    which ends with a period (no newline).  */
14256
14257 void
14258 disable_breakpoint (struct breakpoint *bpt)
14259 {
14260   /* Never disable a watchpoint scope breakpoint; we want to
14261      hit them when we leave scope so we can delete both the
14262      watchpoint and its scope breakpoint at that time.  */
14263   if (bpt->type == bp_watchpoint_scope)
14264     return;
14265
14266   bpt->enable_state = bp_disabled;
14267
14268   /* Mark breakpoint locations modified.  */
14269   mark_breakpoint_modified (bpt);
14270
14271   if (target_supports_enable_disable_tracepoint ()
14272       && current_trace_status ()->running && is_tracepoint (bpt))
14273     {
14274       struct bp_location *location;
14275      
14276       for (location = bpt->loc; location; location = location->next)
14277         target_disable_tracepoint (location);
14278     }
14279
14280   update_global_location_list (UGLL_DONT_INSERT);
14281
14282   gdb::observers::breakpoint_modified.notify (bpt);
14283 }
14284
14285 /* Enable or disable the breakpoint(s) or breakpoint location(s)
14286    specified in ARGS.  ARGS may be in any of the formats handled by
14287    extract_bp_number_and_location.  ENABLE specifies whether to enable
14288    or disable the breakpoints/locations.  */
14289
14290 static void
14291 enable_disable_command (const char *args, int from_tty, bool enable)
14292 {
14293   if (args == 0)
14294     {
14295       struct breakpoint *bpt;
14296
14297       ALL_BREAKPOINTS (bpt)
14298         if (user_breakpoint_p (bpt))
14299           {
14300             if (enable)
14301               enable_breakpoint (bpt);
14302             else
14303               disable_breakpoint (bpt);
14304           }
14305     }
14306   else
14307     {
14308       std::string num = extract_arg (&args);
14309
14310       while (!num.empty ())
14311         {
14312           std::pair<int, int> bp_num_range, bp_loc_range;
14313
14314           extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
14315
14316           if (bp_loc_range.first == bp_loc_range.second
14317               && bp_loc_range.first == 0)
14318             {
14319               /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
14320               map_breakpoint_number_range (bp_num_range,
14321                                            enable
14322                                            ? enable_breakpoint
14323                                            : disable_breakpoint);
14324             }
14325           else
14326             {
14327               /* Handle breakpoint ids with formats 'x.y' or
14328                  'x.y-z'.  */
14329               enable_disable_breakpoint_location_range
14330                 (bp_num_range.first, bp_loc_range, enable);
14331             }
14332           num = extract_arg (&args);
14333         }
14334     }
14335 }
14336
14337 /* The disable command disables the specified breakpoints/locations
14338    (or all defined breakpoints) so they're no longer effective in
14339    stopping the inferior.  ARGS may be in any of the forms defined in
14340    extract_bp_number_and_location.  */
14341
14342 static void
14343 disable_command (const char *args, int from_tty)
14344 {
14345   enable_disable_command (args, from_tty, false);
14346 }
14347
14348 static void
14349 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14350                         int count)
14351 {
14352   int target_resources_ok;
14353
14354   if (bpt->type == bp_hardware_breakpoint)
14355     {
14356       int i;
14357       i = hw_breakpoint_used_count ();
14358       target_resources_ok = 
14359         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14360                                             i + 1, 0);
14361       if (target_resources_ok == 0)
14362         error (_("No hardware breakpoint support in the target."));
14363       else if (target_resources_ok < 0)
14364         error (_("Hardware breakpoints used exceeds limit."));
14365     }
14366
14367   if (is_watchpoint (bpt))
14368     {
14369       /* Initialize it just to avoid a GCC false warning.  */
14370       enum enable_state orig_enable_state = bp_disabled;
14371
14372       TRY
14373         {
14374           struct watchpoint *w = (struct watchpoint *) bpt;
14375
14376           orig_enable_state = bpt->enable_state;
14377           bpt->enable_state = bp_enabled;
14378           update_watchpoint (w, 1 /* reparse */);
14379         }
14380       CATCH (e, RETURN_MASK_ALL)
14381         {
14382           bpt->enable_state = orig_enable_state;
14383           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14384                              bpt->number);
14385           return;
14386         }
14387       END_CATCH
14388     }
14389
14390   bpt->enable_state = bp_enabled;
14391
14392   /* Mark breakpoint locations modified.  */
14393   mark_breakpoint_modified (bpt);
14394
14395   if (target_supports_enable_disable_tracepoint ()
14396       && current_trace_status ()->running && is_tracepoint (bpt))
14397     {
14398       struct bp_location *location;
14399
14400       for (location = bpt->loc; location; location = location->next)
14401         target_enable_tracepoint (location);
14402     }
14403
14404   bpt->disposition = disposition;
14405   bpt->enable_count = count;
14406   update_global_location_list (UGLL_MAY_INSERT);
14407
14408   gdb::observers::breakpoint_modified.notify (bpt);
14409 }
14410
14411
14412 void
14413 enable_breakpoint (struct breakpoint *bpt)
14414 {
14415   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14416 }
14417
14418 /* The enable command enables the specified breakpoints/locations (or
14419    all defined breakpoints) so they once again become (or continue to
14420    be) effective in stopping the inferior.  ARGS may be in any of the
14421    forms defined in extract_bp_number_and_location.  */
14422
14423 static void
14424 enable_command (const char *args, int from_tty)
14425 {
14426   enable_disable_command (args, from_tty, true);
14427 }
14428
14429 static void
14430 enable_once_command (const char *args, int from_tty)
14431 {
14432   map_breakpoint_numbers
14433     (args, [&] (breakpoint *b)
14434      {
14435        iterate_over_related_breakpoints
14436          (b, [&] (breakpoint *bpt)
14437           {
14438             enable_breakpoint_disp (bpt, disp_disable, 1);
14439           });
14440      });
14441 }
14442
14443 static void
14444 enable_count_command (const char *args, int from_tty)
14445 {
14446   int count;
14447
14448   if (args == NULL)
14449     error_no_arg (_("hit count"));
14450
14451   count = get_number (&args);
14452
14453   map_breakpoint_numbers
14454     (args, [&] (breakpoint *b)
14455      {
14456        iterate_over_related_breakpoints
14457          (b, [&] (breakpoint *bpt)
14458           {
14459             enable_breakpoint_disp (bpt, disp_disable, count);
14460           });
14461      });
14462 }
14463
14464 static void
14465 enable_delete_command (const char *args, int from_tty)
14466 {
14467   map_breakpoint_numbers
14468     (args, [&] (breakpoint *b)
14469      {
14470        iterate_over_related_breakpoints
14471          (b, [&] (breakpoint *bpt)
14472           {
14473             enable_breakpoint_disp (bpt, disp_del, 1);
14474           });
14475      });
14476 }
14477 \f
14478 static void
14479 set_breakpoint_cmd (const char *args, int from_tty)
14480 {
14481 }
14482
14483 static void
14484 show_breakpoint_cmd (const char *args, int from_tty)
14485 {
14486 }
14487
14488 /* Invalidate last known value of any hardware watchpoint if
14489    the memory which that value represents has been written to by
14490    GDB itself.  */
14491
14492 static void
14493 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14494                                       CORE_ADDR addr, ssize_t len,
14495                                       const bfd_byte *data)
14496 {
14497   struct breakpoint *bp;
14498
14499   ALL_BREAKPOINTS (bp)
14500     if (bp->enable_state == bp_enabled
14501         && bp->type == bp_hardware_watchpoint)
14502       {
14503         struct watchpoint *wp = (struct watchpoint *) bp;
14504
14505         if (wp->val_valid && wp->val != nullptr)
14506           {
14507             struct bp_location *loc;
14508
14509             for (loc = bp->loc; loc != NULL; loc = loc->next)
14510               if (loc->loc_type == bp_loc_hardware_watchpoint
14511                   && loc->address + loc->length > addr
14512                   && addr + len > loc->address)
14513                 {
14514                   wp->val = NULL;
14515                   wp->val_valid = 0;
14516                 }
14517           }
14518       }
14519 }
14520
14521 /* Create and insert a breakpoint for software single step.  */
14522
14523 void
14524 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14525                                const address_space *aspace,
14526                                CORE_ADDR next_pc)
14527 {
14528   struct thread_info *tp = inferior_thread ();
14529   struct symtab_and_line sal;
14530   CORE_ADDR pc = next_pc;
14531
14532   if (tp->control.single_step_breakpoints == NULL)
14533     {
14534       tp->control.single_step_breakpoints
14535         = new_single_step_breakpoint (tp->global_num, gdbarch);
14536     }
14537
14538   sal = find_pc_line (pc, 0);
14539   sal.pc = pc;
14540   sal.section = find_pc_overlay (pc);
14541   sal.explicit_pc = 1;
14542   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14543
14544   update_global_location_list (UGLL_INSERT);
14545 }
14546
14547 /* Insert single step breakpoints according to the current state.  */
14548
14549 int
14550 insert_single_step_breakpoints (struct gdbarch *gdbarch)
14551 {
14552   struct regcache *regcache = get_current_regcache ();
14553   std::vector<CORE_ADDR> next_pcs;
14554
14555   next_pcs = gdbarch_software_single_step (gdbarch, regcache);
14556
14557   if (!next_pcs.empty ())
14558     {
14559       struct frame_info *frame = get_current_frame ();
14560       const address_space *aspace = get_frame_address_space (frame);
14561
14562       for (CORE_ADDR pc : next_pcs)
14563         insert_single_step_breakpoint (gdbarch, aspace, pc);
14564
14565       return 1;
14566     }
14567   else
14568     return 0;
14569 }
14570
14571 /* See breakpoint.h.  */
14572
14573 int
14574 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14575                                        const address_space *aspace,
14576                                        CORE_ADDR pc)
14577 {
14578   struct bp_location *loc;
14579
14580   for (loc = bp->loc; loc != NULL; loc = loc->next)
14581     if (loc->inserted
14582         && breakpoint_location_address_match (loc, aspace, pc))
14583       return 1;
14584
14585   return 0;
14586 }
14587
14588 /* Check whether a software single-step breakpoint is inserted at
14589    PC.  */
14590
14591 int
14592 single_step_breakpoint_inserted_here_p (const address_space *aspace,
14593                                         CORE_ADDR pc)
14594 {
14595   struct breakpoint *bpt;
14596
14597   ALL_BREAKPOINTS (bpt)
14598     {
14599       if (bpt->type == bp_single_step
14600           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14601         return 1;
14602     }
14603   return 0;
14604 }
14605
14606 /* Tracepoint-specific operations.  */
14607
14608 /* Set tracepoint count to NUM.  */
14609 static void
14610 set_tracepoint_count (int num)
14611 {
14612   tracepoint_count = num;
14613   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14614 }
14615
14616 static void
14617 trace_command (const char *arg, int from_tty)
14618 {
14619   struct breakpoint_ops *ops;
14620
14621   event_location_up location = string_to_event_location (&arg,
14622                                                          current_language);
14623   if (location != NULL
14624       && event_location_type (location.get ()) == PROBE_LOCATION)
14625     ops = &tracepoint_probe_breakpoint_ops;
14626   else
14627     ops = &tracepoint_breakpoint_ops;
14628
14629   create_breakpoint (get_current_arch (),
14630                      location.get (),
14631                      NULL, 0, arg, 1 /* parse arg */,
14632                      0 /* tempflag */,
14633                      bp_tracepoint /* type_wanted */,
14634                      0 /* Ignore count */,
14635                      pending_break_support,
14636                      ops,
14637                      from_tty,
14638                      1 /* enabled */,
14639                      0 /* internal */, 0);
14640 }
14641
14642 static void
14643 ftrace_command (const char *arg, int from_tty)
14644 {
14645   event_location_up location = string_to_event_location (&arg,
14646                                                          current_language);
14647   create_breakpoint (get_current_arch (),
14648                      location.get (),
14649                      NULL, 0, arg, 1 /* parse arg */,
14650                      0 /* tempflag */,
14651                      bp_fast_tracepoint /* type_wanted */,
14652                      0 /* Ignore count */,
14653                      pending_break_support,
14654                      &tracepoint_breakpoint_ops,
14655                      from_tty,
14656                      1 /* enabled */,
14657                      0 /* internal */, 0);
14658 }
14659
14660 /* strace command implementation.  Creates a static tracepoint.  */
14661
14662 static void
14663 strace_command (const char *arg, int from_tty)
14664 {
14665   struct breakpoint_ops *ops;
14666   event_location_up location;
14667
14668   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14669      or with a normal static tracepoint.  */
14670   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14671     {
14672       ops = &strace_marker_breakpoint_ops;
14673       location = new_linespec_location (&arg, symbol_name_match_type::FULL);
14674     }
14675   else
14676     {
14677       ops = &tracepoint_breakpoint_ops;
14678       location = string_to_event_location (&arg, current_language);
14679     }
14680
14681   create_breakpoint (get_current_arch (),
14682                      location.get (),
14683                      NULL, 0, arg, 1 /* parse arg */,
14684                      0 /* tempflag */,
14685                      bp_static_tracepoint /* type_wanted */,
14686                      0 /* Ignore count */,
14687                      pending_break_support,
14688                      ops,
14689                      from_tty,
14690                      1 /* enabled */,
14691                      0 /* internal */, 0);
14692 }
14693
14694 /* Set up a fake reader function that gets command lines from a linked
14695    list that was acquired during tracepoint uploading.  */
14696
14697 static struct uploaded_tp *this_utp;
14698 static int next_cmd;
14699
14700 static char *
14701 read_uploaded_action (void)
14702 {
14703   char *rslt = nullptr;
14704
14705   if (next_cmd < this_utp->cmd_strings.size ())
14706     {
14707       rslt = this_utp->cmd_strings[next_cmd];
14708       next_cmd++;
14709     }
14710
14711   return rslt;
14712 }
14713
14714 /* Given information about a tracepoint as recorded on a target (which
14715    can be either a live system or a trace file), attempt to create an
14716    equivalent GDB tracepoint.  This is not a reliable process, since
14717    the target does not necessarily have all the information used when
14718    the tracepoint was originally defined.  */
14719   
14720 struct tracepoint *
14721 create_tracepoint_from_upload (struct uploaded_tp *utp)
14722 {
14723   const char *addr_str;
14724   char small_buf[100];
14725   struct tracepoint *tp;
14726
14727   if (utp->at_string)
14728     addr_str = utp->at_string;
14729   else
14730     {
14731       /* In the absence of a source location, fall back to raw
14732          address.  Since there is no way to confirm that the address
14733          means the same thing as when the trace was started, warn the
14734          user.  */
14735       warning (_("Uploaded tracepoint %d has no "
14736                  "source location, using raw address"),
14737                utp->number);
14738       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
14739       addr_str = small_buf;
14740     }
14741
14742   /* There's not much we can do with a sequence of bytecodes.  */
14743   if (utp->cond && !utp->cond_string)
14744     warning (_("Uploaded tracepoint %d condition "
14745                "has no source form, ignoring it"),
14746              utp->number);
14747
14748   event_location_up location = string_to_event_location (&addr_str,
14749                                                          current_language);
14750   if (!create_breakpoint (get_current_arch (),
14751                           location.get (),
14752                           utp->cond_string, -1, addr_str,
14753                           0 /* parse cond/thread */,
14754                           0 /* tempflag */,
14755                           utp->type /* type_wanted */,
14756                           0 /* Ignore count */,
14757                           pending_break_support,
14758                           &tracepoint_breakpoint_ops,
14759                           0 /* from_tty */,
14760                           utp->enabled /* enabled */,
14761                           0 /* internal */,
14762                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14763     return NULL;
14764
14765   /* Get the tracepoint we just created.  */
14766   tp = get_tracepoint (tracepoint_count);
14767   gdb_assert (tp != NULL);
14768
14769   if (utp->pass > 0)
14770     {
14771       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
14772                  tp->number);
14773
14774       trace_pass_command (small_buf, 0);
14775     }
14776
14777   /* If we have uploaded versions of the original commands, set up a
14778      special-purpose "reader" function and call the usual command line
14779      reader, then pass the result to the breakpoint command-setting
14780      function.  */
14781   if (!utp->cmd_strings.empty ())
14782     {
14783       counted_command_line cmd_list;
14784
14785       this_utp = utp;
14786       next_cmd = 0;
14787
14788       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL);
14789
14790       breakpoint_set_commands (tp, std::move (cmd_list));
14791     }
14792   else if (!utp->actions.empty ()
14793            || !utp->step_actions.empty ())
14794     warning (_("Uploaded tracepoint %d actions "
14795                "have no source form, ignoring them"),
14796              utp->number);
14797
14798   /* Copy any status information that might be available.  */
14799   tp->hit_count = utp->hit_count;
14800   tp->traceframe_usage = utp->traceframe_usage;
14801
14802   return tp;
14803 }
14804   
14805 /* Print information on tracepoint number TPNUM_EXP, or all if
14806    omitted.  */
14807
14808 static void
14809 info_tracepoints_command (const char *args, int from_tty)
14810 {
14811   struct ui_out *uiout = current_uiout;
14812   int num_printed;
14813
14814   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14815
14816   if (num_printed == 0)
14817     {
14818       if (args == NULL || *args == '\0')
14819         uiout->message ("No tracepoints.\n");
14820       else
14821         uiout->message ("No tracepoint matching '%s'.\n", args);
14822     }
14823
14824   default_collect_info ();
14825 }
14826
14827 /* The 'enable trace' command enables tracepoints.
14828    Not supported by all targets.  */
14829 static void
14830 enable_trace_command (const char *args, int from_tty)
14831 {
14832   enable_command (args, from_tty);
14833 }
14834
14835 /* The 'disable trace' command disables tracepoints.
14836    Not supported by all targets.  */
14837 static void
14838 disable_trace_command (const char *args, int from_tty)
14839 {
14840   disable_command (args, from_tty);
14841 }
14842
14843 /* Remove a tracepoint (or all if no argument).  */
14844 static void
14845 delete_trace_command (const char *arg, int from_tty)
14846 {
14847   struct breakpoint *b, *b_tmp;
14848
14849   dont_repeat ();
14850
14851   if (arg == 0)
14852     {
14853       int breaks_to_delete = 0;
14854
14855       /* Delete all breakpoints if no argument.
14856          Do not delete internal or call-dummy breakpoints, these
14857          have to be deleted with an explicit breakpoint number 
14858          argument.  */
14859       ALL_TRACEPOINTS (b)
14860         if (is_tracepoint (b) && user_breakpoint_p (b))
14861           {
14862             breaks_to_delete = 1;
14863             break;
14864           }
14865
14866       /* Ask user only if there are some breakpoints to delete.  */
14867       if (!from_tty
14868           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14869         {
14870           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14871             if (is_tracepoint (b) && user_breakpoint_p (b))
14872               delete_breakpoint (b);
14873         }
14874     }
14875   else
14876     map_breakpoint_numbers
14877       (arg, [&] (breakpoint *b)
14878        {
14879          iterate_over_related_breakpoints (b, delete_breakpoint);
14880        });
14881 }
14882
14883 /* Helper function for trace_pass_command.  */
14884
14885 static void
14886 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14887 {
14888   tp->pass_count = count;
14889   gdb::observers::breakpoint_modified.notify (tp);
14890   if (from_tty)
14891     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14892                      tp->number, count);
14893 }
14894
14895 /* Set passcount for tracepoint.
14896
14897    First command argument is passcount, second is tracepoint number.
14898    If tracepoint number omitted, apply to most recently defined.
14899    Also accepts special argument "all".  */
14900
14901 static void
14902 trace_pass_command (const char *args, int from_tty)
14903 {
14904   struct tracepoint *t1;
14905   ULONGEST count;
14906
14907   if (args == 0 || *args == 0)
14908     error (_("passcount command requires an "
14909              "argument (count + optional TP num)"));
14910
14911   count = strtoulst (args, &args, 10);  /* Count comes first, then TP num.  */
14912
14913   args = skip_spaces (args);
14914   if (*args && strncasecmp (args, "all", 3) == 0)
14915     {
14916       struct breakpoint *b;
14917
14918       args += 3;                        /* Skip special argument "all".  */
14919       if (*args)
14920         error (_("Junk at end of arguments."));
14921
14922       ALL_TRACEPOINTS (b)
14923       {
14924         t1 = (struct tracepoint *) b;
14925         trace_pass_set_count (t1, count, from_tty);
14926       }
14927     }
14928   else if (*args == '\0')
14929     {
14930       t1 = get_tracepoint_by_number (&args, NULL);
14931       if (t1)
14932         trace_pass_set_count (t1, count, from_tty);
14933     }
14934   else
14935     {
14936       number_or_range_parser parser (args);
14937       while (!parser.finished ())
14938         {
14939           t1 = get_tracepoint_by_number (&args, &parser);
14940           if (t1)
14941             trace_pass_set_count (t1, count, from_tty);
14942         }
14943     }
14944 }
14945
14946 struct tracepoint *
14947 get_tracepoint (int num)
14948 {
14949   struct breakpoint *t;
14950
14951   ALL_TRACEPOINTS (t)
14952     if (t->number == num)
14953       return (struct tracepoint *) t;
14954
14955   return NULL;
14956 }
14957
14958 /* Find the tracepoint with the given target-side number (which may be
14959    different from the tracepoint number after disconnecting and
14960    reconnecting).  */
14961
14962 struct tracepoint *
14963 get_tracepoint_by_number_on_target (int num)
14964 {
14965   struct breakpoint *b;
14966
14967   ALL_TRACEPOINTS (b)
14968     {
14969       struct tracepoint *t = (struct tracepoint *) b;
14970
14971       if (t->number_on_target == num)
14972         return t;
14973     }
14974
14975   return NULL;
14976 }
14977
14978 /* Utility: parse a tracepoint number and look it up in the list.
14979    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14980    If the argument is missing, the most recent tracepoint
14981    (tracepoint_count) is returned.  */
14982
14983 struct tracepoint *
14984 get_tracepoint_by_number (const char **arg,
14985                           number_or_range_parser *parser)
14986 {
14987   struct breakpoint *t;
14988   int tpnum;
14989   const char *instring = arg == NULL ? NULL : *arg;
14990
14991   if (parser != NULL)
14992     {
14993       gdb_assert (!parser->finished ());
14994       tpnum = parser->get_number ();
14995     }
14996   else if (arg == NULL || *arg == NULL || ! **arg)
14997     tpnum = tracepoint_count;
14998   else
14999     tpnum = get_number (arg);
15000
15001   if (tpnum <= 0)
15002     {
15003       if (instring && *instring)
15004         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15005                          instring);
15006       else
15007         printf_filtered (_("No previous tracepoint\n"));
15008       return NULL;
15009     }
15010
15011   ALL_TRACEPOINTS (t)
15012     if (t->number == tpnum)
15013     {
15014       return (struct tracepoint *) t;
15015     }
15016
15017   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15018   return NULL;
15019 }
15020
15021 void
15022 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15023 {
15024   if (b->thread != -1)
15025     fprintf_unfiltered (fp, " thread %d", b->thread);
15026
15027   if (b->task != 0)
15028     fprintf_unfiltered (fp, " task %d", b->task);
15029
15030   fprintf_unfiltered (fp, "\n");
15031 }
15032
15033 /* Save information on user settable breakpoints (watchpoints, etc) to
15034    a new script file named FILENAME.  If FILTER is non-NULL, call it
15035    on each breakpoint and only include the ones for which it returns
15036    non-zero.  */
15037
15038 static void
15039 save_breakpoints (const char *filename, int from_tty,
15040                   int (*filter) (const struct breakpoint *))
15041 {
15042   struct breakpoint *tp;
15043   int any = 0;
15044   int extra_trace_bits = 0;
15045
15046   if (filename == 0 || *filename == 0)
15047     error (_("Argument required (file name in which to save)"));
15048
15049   /* See if we have anything to save.  */
15050   ALL_BREAKPOINTS (tp)
15051   {
15052     /* Skip internal and momentary breakpoints.  */
15053     if (!user_breakpoint_p (tp))
15054       continue;
15055
15056     /* If we have a filter, only save the breakpoints it accepts.  */
15057     if (filter && !filter (tp))
15058       continue;
15059
15060     any = 1;
15061
15062     if (is_tracepoint (tp))
15063       {
15064         extra_trace_bits = 1;
15065
15066         /* We can stop searching.  */
15067         break;
15068       }
15069   }
15070
15071   if (!any)
15072     {
15073       warning (_("Nothing to save."));
15074       return;
15075     }
15076
15077   gdb::unique_xmalloc_ptr<char> expanded_filename (tilde_expand (filename));
15078
15079   stdio_file fp;
15080
15081   if (!fp.open (expanded_filename.get (), "w"))
15082     error (_("Unable to open file '%s' for saving (%s)"),
15083            expanded_filename.get (), safe_strerror (errno));
15084
15085   if (extra_trace_bits)
15086     save_trace_state_variables (&fp);
15087
15088   ALL_BREAKPOINTS (tp)
15089   {
15090     /* Skip internal and momentary breakpoints.  */
15091     if (!user_breakpoint_p (tp))
15092       continue;
15093
15094     /* If we have a filter, only save the breakpoints it accepts.  */
15095     if (filter && !filter (tp))
15096       continue;
15097
15098     tp->ops->print_recreate (tp, &fp);
15099
15100     /* Note, we can't rely on tp->number for anything, as we can't
15101        assume the recreated breakpoint numbers will match.  Use $bpnum
15102        instead.  */
15103
15104     if (tp->cond_string)
15105       fp.printf ("  condition $bpnum %s\n", tp->cond_string);
15106
15107     if (tp->ignore_count)
15108       fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
15109
15110     if (tp->type != bp_dprintf && tp->commands)
15111       {
15112         fp.puts ("  commands\n");
15113         
15114         current_uiout->redirect (&fp);
15115         TRY
15116           {
15117             print_command_lines (current_uiout, tp->commands.get (), 2);
15118           }
15119         CATCH (ex, RETURN_MASK_ALL)
15120           {
15121           current_uiout->redirect (NULL);
15122             throw_exception (ex);
15123           }
15124         END_CATCH
15125
15126         current_uiout->redirect (NULL);
15127         fp.puts ("  end\n");
15128       }
15129
15130     if (tp->enable_state == bp_disabled)
15131       fp.puts ("disable $bpnum\n");
15132
15133     /* If this is a multi-location breakpoint, check if the locations
15134        should be individually disabled.  Watchpoint locations are
15135        special, and not user visible.  */
15136     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15137       {
15138         struct bp_location *loc;
15139         int n = 1;
15140
15141         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15142           if (!loc->enabled)
15143             fp.printf ("disable $bpnum.%d\n", n);
15144       }
15145   }
15146
15147   if (extra_trace_bits && *default_collect)
15148     fp.printf ("set default-collect %s\n", default_collect);
15149
15150   if (from_tty)
15151     printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
15152 }
15153
15154 /* The `save breakpoints' command.  */
15155
15156 static void
15157 save_breakpoints_command (const char *args, int from_tty)
15158 {
15159   save_breakpoints (args, from_tty, NULL);
15160 }
15161
15162 /* The `save tracepoints' command.  */
15163
15164 static void
15165 save_tracepoints_command (const char *args, int from_tty)
15166 {
15167   save_breakpoints (args, from_tty, is_tracepoint);
15168 }
15169
15170 /* Create a vector of all tracepoints.  */
15171
15172 VEC(breakpoint_p) *
15173 all_tracepoints (void)
15174 {
15175   VEC(breakpoint_p) *tp_vec = 0;
15176   struct breakpoint *tp;
15177
15178   ALL_TRACEPOINTS (tp)
15179   {
15180     VEC_safe_push (breakpoint_p, tp_vec, tp);
15181   }
15182
15183   return tp_vec;
15184 }
15185
15186 \f
15187 /* This help string is used to consolidate all the help string for specifying
15188    locations used by several commands.  */
15189
15190 #define LOCATION_HELP_STRING \
15191 "Linespecs are colon-separated lists of location parameters, such as\n\
15192 source filename, function name, label name, and line number.\n\
15193 Example: To specify the start of a label named \"the_top\" in the\n\
15194 function \"fact\" in the file \"factorial.c\", use\n\
15195 \"factorial.c:fact:the_top\".\n\
15196 \n\
15197 Address locations begin with \"*\" and specify an exact address in the\n\
15198 program.  Example: To specify the fourth byte past the start function\n\
15199 \"main\", use \"*main + 4\".\n\
15200 \n\
15201 Explicit locations are similar to linespecs but use an option/argument\n\
15202 syntax to specify location parameters.\n\
15203 Example: To specify the start of the label named \"the_top\" in the\n\
15204 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15205 -function fact -label the_top\".\n\
15206 \n\
15207 By default, a specified function is matched against the program's\n\
15208 functions in all scopes.  For C++, this means in all namespaces and\n\
15209 classes.  For Ada, this means in all packages.  E.g., in C++,\n\
15210 \"func()\" matches \"A::func()\", \"A::B::func()\", etc.  The\n\
15211 \"-qualified\" flag overrides this behavior, making GDB interpret the\n\
15212 specified name as a complete fully-qualified name instead.\n"
15213
15214 /* This help string is used for the break, hbreak, tbreak and thbreak
15215    commands.  It is defined as a macro to prevent duplication.
15216    COMMAND should be a string constant containing the name of the
15217    command.  */
15218
15219 #define BREAK_ARGS_HELP(command) \
15220 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15221 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15222 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15223 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15224 `-probe-dtrace' (for a DTrace probe).\n\
15225 LOCATION may be a linespec, address, or explicit location as described\n\
15226 below.\n\
15227 \n\
15228 With no LOCATION, uses current execution address of the selected\n\
15229 stack frame.  This is useful for breaking on return to a stack frame.\n\
15230 \n\
15231 THREADNUM is the number from \"info threads\".\n\
15232 CONDITION is a boolean expression.\n\
15233 \n" LOCATION_HELP_STRING "\n\
15234 Multiple breakpoints at one place are permitted, and useful if their\n\
15235 conditions are different.\n\
15236 \n\
15237 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15238
15239 /* List of subcommands for "catch".  */
15240 static struct cmd_list_element *catch_cmdlist;
15241
15242 /* List of subcommands for "tcatch".  */
15243 static struct cmd_list_element *tcatch_cmdlist;
15244
15245 void
15246 add_catch_command (const char *name, const char *docstring,
15247                    cmd_const_sfunc_ftype *sfunc,
15248                    completer_ftype *completer,
15249                    void *user_data_catch,
15250                    void *user_data_tcatch)
15251 {
15252   struct cmd_list_element *command;
15253
15254   command = add_cmd (name, class_breakpoint, docstring,
15255                      &catch_cmdlist);
15256   set_cmd_sfunc (command, sfunc);
15257   set_cmd_context (command, user_data_catch);
15258   set_cmd_completer (command, completer);
15259
15260   command = add_cmd (name, class_breakpoint, docstring,
15261                      &tcatch_cmdlist);
15262   set_cmd_sfunc (command, sfunc);
15263   set_cmd_context (command, user_data_tcatch);
15264   set_cmd_completer (command, completer);
15265 }
15266
15267 static void
15268 save_command (const char *arg, int from_tty)
15269 {
15270   printf_unfiltered (_("\"save\" must be followed by "
15271                        "the name of a save subcommand.\n"));
15272   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15273 }
15274
15275 struct breakpoint *
15276 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15277                           void *data)
15278 {
15279   struct breakpoint *b, *b_tmp;
15280
15281   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15282     {
15283       if ((*callback) (b, data))
15284         return b;
15285     }
15286
15287   return NULL;
15288 }
15289
15290 /* Zero if any of the breakpoint's locations could be a location where
15291    functions have been inlined, nonzero otherwise.  */
15292
15293 static int
15294 is_non_inline_function (struct breakpoint *b)
15295 {
15296   /* The shared library event breakpoint is set on the address of a
15297      non-inline function.  */
15298   if (b->type == bp_shlib_event)
15299     return 1;
15300
15301   return 0;
15302 }
15303
15304 /* Nonzero if the specified PC cannot be a location where functions
15305    have been inlined.  */
15306
15307 int
15308 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
15309                            const struct target_waitstatus *ws)
15310 {
15311   struct breakpoint *b;
15312   struct bp_location *bl;
15313
15314   ALL_BREAKPOINTS (b)
15315     {
15316       if (!is_non_inline_function (b))
15317         continue;
15318
15319       for (bl = b->loc; bl != NULL; bl = bl->next)
15320         {
15321           if (!bl->shlib_disabled
15322               && bpstat_check_location (bl, aspace, pc, ws))
15323             return 1;
15324         }
15325     }
15326
15327   return 0;
15328 }
15329
15330 /* Remove any references to OBJFILE which is going to be freed.  */
15331
15332 void
15333 breakpoint_free_objfile (struct objfile *objfile)
15334 {
15335   struct bp_location **locp, *loc;
15336
15337   ALL_BP_LOCATIONS (loc, locp)
15338     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15339       loc->symtab = NULL;
15340 }
15341
15342 void
15343 initialize_breakpoint_ops (void)
15344 {
15345   static int initialized = 0;
15346
15347   struct breakpoint_ops *ops;
15348
15349   if (initialized)
15350     return;
15351   initialized = 1;
15352
15353   /* The breakpoint_ops structure to be inherit by all kinds of
15354      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15355      internal and momentary breakpoints, etc.).  */
15356   ops = &bkpt_base_breakpoint_ops;
15357   *ops = base_breakpoint_ops;
15358   ops->re_set = bkpt_re_set;
15359   ops->insert_location = bkpt_insert_location;
15360   ops->remove_location = bkpt_remove_location;
15361   ops->breakpoint_hit = bkpt_breakpoint_hit;
15362   ops->create_sals_from_location = bkpt_create_sals_from_location;
15363   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15364   ops->decode_location = bkpt_decode_location;
15365
15366   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15367   ops = &bkpt_breakpoint_ops;
15368   *ops = bkpt_base_breakpoint_ops;
15369   ops->re_set = bkpt_re_set;
15370   ops->resources_needed = bkpt_resources_needed;
15371   ops->print_it = bkpt_print_it;
15372   ops->print_mention = bkpt_print_mention;
15373   ops->print_recreate = bkpt_print_recreate;
15374
15375   /* Ranged breakpoints.  */
15376   ops = &ranged_breakpoint_ops;
15377   *ops = bkpt_breakpoint_ops;
15378   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15379   ops->resources_needed = resources_needed_ranged_breakpoint;
15380   ops->print_it = print_it_ranged_breakpoint;
15381   ops->print_one = print_one_ranged_breakpoint;
15382   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15383   ops->print_mention = print_mention_ranged_breakpoint;
15384   ops->print_recreate = print_recreate_ranged_breakpoint;
15385
15386   /* Internal breakpoints.  */
15387   ops = &internal_breakpoint_ops;
15388   *ops = bkpt_base_breakpoint_ops;
15389   ops->re_set = internal_bkpt_re_set;
15390   ops->check_status = internal_bkpt_check_status;
15391   ops->print_it = internal_bkpt_print_it;
15392   ops->print_mention = internal_bkpt_print_mention;
15393
15394   /* Momentary breakpoints.  */
15395   ops = &momentary_breakpoint_ops;
15396   *ops = bkpt_base_breakpoint_ops;
15397   ops->re_set = momentary_bkpt_re_set;
15398   ops->check_status = momentary_bkpt_check_status;
15399   ops->print_it = momentary_bkpt_print_it;
15400   ops->print_mention = momentary_bkpt_print_mention;
15401
15402   /* Probe breakpoints.  */
15403   ops = &bkpt_probe_breakpoint_ops;
15404   *ops = bkpt_breakpoint_ops;
15405   ops->insert_location = bkpt_probe_insert_location;
15406   ops->remove_location = bkpt_probe_remove_location;
15407   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
15408   ops->decode_location = bkpt_probe_decode_location;
15409
15410   /* Watchpoints.  */
15411   ops = &watchpoint_breakpoint_ops;
15412   *ops = base_breakpoint_ops;
15413   ops->re_set = re_set_watchpoint;
15414   ops->insert_location = insert_watchpoint;
15415   ops->remove_location = remove_watchpoint;
15416   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15417   ops->check_status = check_status_watchpoint;
15418   ops->resources_needed = resources_needed_watchpoint;
15419   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15420   ops->print_it = print_it_watchpoint;
15421   ops->print_mention = print_mention_watchpoint;
15422   ops->print_recreate = print_recreate_watchpoint;
15423   ops->explains_signal = explains_signal_watchpoint;
15424
15425   /* Masked watchpoints.  */
15426   ops = &masked_watchpoint_breakpoint_ops;
15427   *ops = watchpoint_breakpoint_ops;
15428   ops->insert_location = insert_masked_watchpoint;
15429   ops->remove_location = remove_masked_watchpoint;
15430   ops->resources_needed = resources_needed_masked_watchpoint;
15431   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15432   ops->print_it = print_it_masked_watchpoint;
15433   ops->print_one_detail = print_one_detail_masked_watchpoint;
15434   ops->print_mention = print_mention_masked_watchpoint;
15435   ops->print_recreate = print_recreate_masked_watchpoint;
15436
15437   /* Tracepoints.  */
15438   ops = &tracepoint_breakpoint_ops;
15439   *ops = base_breakpoint_ops;
15440   ops->re_set = tracepoint_re_set;
15441   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15442   ops->print_one_detail = tracepoint_print_one_detail;
15443   ops->print_mention = tracepoint_print_mention;
15444   ops->print_recreate = tracepoint_print_recreate;
15445   ops->create_sals_from_location = tracepoint_create_sals_from_location;
15446   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15447   ops->decode_location = tracepoint_decode_location;
15448
15449   /* Probe tracepoints.  */
15450   ops = &tracepoint_probe_breakpoint_ops;
15451   *ops = tracepoint_breakpoint_ops;
15452   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
15453   ops->decode_location = tracepoint_probe_decode_location;
15454
15455   /* Static tracepoints with marker (`-m').  */
15456   ops = &strace_marker_breakpoint_ops;
15457   *ops = tracepoint_breakpoint_ops;
15458   ops->create_sals_from_location = strace_marker_create_sals_from_location;
15459   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15460   ops->decode_location = strace_marker_decode_location;
15461
15462   /* Fork catchpoints.  */
15463   ops = &catch_fork_breakpoint_ops;
15464   *ops = base_breakpoint_ops;
15465   ops->insert_location = insert_catch_fork;
15466   ops->remove_location = remove_catch_fork;
15467   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15468   ops->print_it = print_it_catch_fork;
15469   ops->print_one = print_one_catch_fork;
15470   ops->print_mention = print_mention_catch_fork;
15471   ops->print_recreate = print_recreate_catch_fork;
15472
15473   /* Vfork catchpoints.  */
15474   ops = &catch_vfork_breakpoint_ops;
15475   *ops = base_breakpoint_ops;
15476   ops->insert_location = insert_catch_vfork;
15477   ops->remove_location = remove_catch_vfork;
15478   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15479   ops->print_it = print_it_catch_vfork;
15480   ops->print_one = print_one_catch_vfork;
15481   ops->print_mention = print_mention_catch_vfork;
15482   ops->print_recreate = print_recreate_catch_vfork;
15483
15484   /* Exec catchpoints.  */
15485   ops = &catch_exec_breakpoint_ops;
15486   *ops = base_breakpoint_ops;
15487   ops->insert_location = insert_catch_exec;
15488   ops->remove_location = remove_catch_exec;
15489   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15490   ops->print_it = print_it_catch_exec;
15491   ops->print_one = print_one_catch_exec;
15492   ops->print_mention = print_mention_catch_exec;
15493   ops->print_recreate = print_recreate_catch_exec;
15494
15495   /* Solib-related catchpoints.  */
15496   ops = &catch_solib_breakpoint_ops;
15497   *ops = base_breakpoint_ops;
15498   ops->insert_location = insert_catch_solib;
15499   ops->remove_location = remove_catch_solib;
15500   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15501   ops->check_status = check_status_catch_solib;
15502   ops->print_it = print_it_catch_solib;
15503   ops->print_one = print_one_catch_solib;
15504   ops->print_mention = print_mention_catch_solib;
15505   ops->print_recreate = print_recreate_catch_solib;
15506
15507   ops = &dprintf_breakpoint_ops;
15508   *ops = bkpt_base_breakpoint_ops;
15509   ops->re_set = dprintf_re_set;
15510   ops->resources_needed = bkpt_resources_needed;
15511   ops->print_it = bkpt_print_it;
15512   ops->print_mention = bkpt_print_mention;
15513   ops->print_recreate = dprintf_print_recreate;
15514   ops->after_condition_true = dprintf_after_condition_true;
15515   ops->breakpoint_hit = dprintf_breakpoint_hit;
15516 }
15517
15518 /* Chain containing all defined "enable breakpoint" subcommands.  */
15519
15520 static struct cmd_list_element *enablebreaklist = NULL;
15521
15522 void
15523 _initialize_breakpoint (void)
15524 {
15525   struct cmd_list_element *c;
15526
15527   initialize_breakpoint_ops ();
15528
15529   gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
15530   gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
15531   gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
15532
15533   breakpoint_objfile_key
15534     = register_objfile_data_with_cleanup (NULL, free_breakpoint_objfile_data);
15535
15536   breakpoint_chain = 0;
15537   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15538      before a breakpoint is set.  */
15539   breakpoint_count = 0;
15540
15541   tracepoint_count = 0;
15542
15543   add_com ("ignore", class_breakpoint, ignore_command, _("\
15544 Set ignore-count of breakpoint number N to COUNT.\n\
15545 Usage is `ignore N COUNT'."));
15546
15547   add_com ("commands", class_breakpoint, commands_command, _("\
15548 Set commands to be executed when the given breakpoints are hit.\n\
15549 Give a space-separated breakpoint list as argument after \"commands\".\n\
15550 A list element can be a breakpoint number (e.g. `5') or a range of numbers\n\
15551 (e.g. `5-7').\n\
15552 With no argument, the targeted breakpoint is the last one set.\n\
15553 The commands themselves follow starting on the next line.\n\
15554 Type a line containing \"end\" to indicate the end of them.\n\
15555 Give \"silent\" as the first line to make the breakpoint silent;\n\
15556 then no output is printed when it is hit, except what the commands print."));
15557
15558   c = add_com ("condition", class_breakpoint, condition_command, _("\
15559 Specify breakpoint number N to break only if COND is true.\n\
15560 Usage is `condition N COND', where N is an integer and COND is an\n\
15561 expression to be evaluated whenever breakpoint N is reached."));
15562   set_cmd_completer (c, condition_completer);
15563
15564   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15565 Set a temporary breakpoint.\n\
15566 Like \"break\" except the breakpoint is only temporary,\n\
15567 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15568 by using \"enable delete\" on the breakpoint number.\n\
15569 \n"
15570 BREAK_ARGS_HELP ("tbreak")));
15571   set_cmd_completer (c, location_completer);
15572
15573   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15574 Set a hardware assisted breakpoint.\n\
15575 Like \"break\" except the breakpoint requires hardware support,\n\
15576 some target hardware may not have this support.\n\
15577 \n"
15578 BREAK_ARGS_HELP ("hbreak")));
15579   set_cmd_completer (c, location_completer);
15580
15581   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15582 Set a temporary hardware assisted breakpoint.\n\
15583 Like \"hbreak\" except the breakpoint is only temporary,\n\
15584 so it will be deleted when hit.\n\
15585 \n"
15586 BREAK_ARGS_HELP ("thbreak")));
15587   set_cmd_completer (c, location_completer);
15588
15589   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15590 Enable some breakpoints.\n\
15591 Give breakpoint numbers (separated by spaces) as arguments.\n\
15592 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15593 This is used to cancel the effect of the \"disable\" command.\n\
15594 With a subcommand you can enable temporarily."),
15595                   &enablelist, "enable ", 1, &cmdlist);
15596
15597   add_com_alias ("en", "enable", class_breakpoint, 1);
15598
15599   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15600 Enable some breakpoints.\n\
15601 Give breakpoint numbers (separated by spaces) as arguments.\n\
15602 This is used to cancel the effect of the \"disable\" command.\n\
15603 May be abbreviated to simply \"enable\".\n"),
15604                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15605
15606   add_cmd ("once", no_class, enable_once_command, _("\
15607 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15608 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15609            &enablebreaklist);
15610
15611   add_cmd ("delete", no_class, enable_delete_command, _("\
15612 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15613 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15614            &enablebreaklist);
15615
15616   add_cmd ("count", no_class, enable_count_command, _("\
15617 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15618 If a breakpoint is hit while enabled in this fashion,\n\
15619 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15620            &enablebreaklist);
15621
15622   add_cmd ("delete", no_class, enable_delete_command, _("\
15623 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15624 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15625            &enablelist);
15626
15627   add_cmd ("once", no_class, enable_once_command, _("\
15628 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15629 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15630            &enablelist);
15631
15632   add_cmd ("count", no_class, enable_count_command, _("\
15633 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15634 If a breakpoint is hit while enabled in this fashion,\n\
15635 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15636            &enablelist);
15637
15638   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15639 Disable some breakpoints.\n\
15640 Arguments are breakpoint numbers with spaces in between.\n\
15641 To disable all breakpoints, give no argument.\n\
15642 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15643                   &disablelist, "disable ", 1, &cmdlist);
15644   add_com_alias ("dis", "disable", class_breakpoint, 1);
15645   add_com_alias ("disa", "disable", class_breakpoint, 1);
15646
15647   add_cmd ("breakpoints", class_alias, disable_command, _("\
15648 Disable some breakpoints.\n\
15649 Arguments are breakpoint numbers with spaces in between.\n\
15650 To disable all breakpoints, give no argument.\n\
15651 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15652 This command may be abbreviated \"disable\"."),
15653            &disablelist);
15654
15655   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15656 Delete some breakpoints or auto-display expressions.\n\
15657 Arguments are breakpoint numbers with spaces in between.\n\
15658 To delete all breakpoints, give no argument.\n\
15659 \n\
15660 Also a prefix command for deletion of other GDB objects.\n\
15661 The \"unset\" command is also an alias for \"delete\"."),
15662                   &deletelist, "delete ", 1, &cmdlist);
15663   add_com_alias ("d", "delete", class_breakpoint, 1);
15664   add_com_alias ("del", "delete", class_breakpoint, 1);
15665
15666   add_cmd ("breakpoints", class_alias, delete_command, _("\
15667 Delete some breakpoints or auto-display expressions.\n\
15668 Arguments are breakpoint numbers with spaces in between.\n\
15669 To delete all breakpoints, give no argument.\n\
15670 This command may be abbreviated \"delete\"."),
15671            &deletelist);
15672
15673   add_com ("clear", class_breakpoint, clear_command, _("\
15674 Clear breakpoint at specified location.\n\
15675 Argument may be a linespec, explicit, or address location as described below.\n\
15676 \n\
15677 With no argument, clears all breakpoints in the line that the selected frame\n\
15678 is executing in.\n"
15679 "\n" LOCATION_HELP_STRING "\n\
15680 See also the \"delete\" command which clears breakpoints by number."));
15681   add_com_alias ("cl", "clear", class_breakpoint, 1);
15682
15683   c = add_com ("break", class_breakpoint, break_command, _("\
15684 Set breakpoint at specified location.\n"
15685 BREAK_ARGS_HELP ("break")));
15686   set_cmd_completer (c, location_completer);
15687
15688   add_com_alias ("b", "break", class_run, 1);
15689   add_com_alias ("br", "break", class_run, 1);
15690   add_com_alias ("bre", "break", class_run, 1);
15691   add_com_alias ("brea", "break", class_run, 1);
15692
15693   if (dbx_commands)
15694     {
15695       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15696 Break in function/address or break at a line in the current file."),
15697                              &stoplist, "stop ", 1, &cmdlist);
15698       add_cmd ("in", class_breakpoint, stopin_command,
15699                _("Break in function or address."), &stoplist);
15700       add_cmd ("at", class_breakpoint, stopat_command,
15701                _("Break at a line in the current file."), &stoplist);
15702       add_com ("status", class_info, info_breakpoints_command, _("\
15703 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15704 The \"Type\" column indicates one of:\n\
15705 \tbreakpoint     - normal breakpoint\n\
15706 \twatchpoint     - watchpoint\n\
15707 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15708 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15709 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15710 address and file/line number respectively.\n\
15711 \n\
15712 Convenience variable \"$_\" and default examine address for \"x\"\n\
15713 are set to the address of the last breakpoint listed unless the command\n\
15714 is prefixed with \"server \".\n\n\
15715 Convenience variable \"$bpnum\" contains the number of the last\n\
15716 breakpoint set."));
15717     }
15718
15719   add_info ("breakpoints", info_breakpoints_command, _("\
15720 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15721 The \"Type\" column indicates one of:\n\
15722 \tbreakpoint     - normal breakpoint\n\
15723 \twatchpoint     - watchpoint\n\
15724 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15725 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15726 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15727 address and file/line number respectively.\n\
15728 \n\
15729 Convenience variable \"$_\" and default examine address for \"x\"\n\
15730 are set to the address of the last breakpoint listed unless the command\n\
15731 is prefixed with \"server \".\n\n\
15732 Convenience variable \"$bpnum\" contains the number of the last\n\
15733 breakpoint set."));
15734
15735   add_info_alias ("b", "breakpoints", 1);
15736
15737   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15738 Status of all breakpoints, or breakpoint number NUMBER.\n\
15739 The \"Type\" column indicates one of:\n\
15740 \tbreakpoint     - normal breakpoint\n\
15741 \twatchpoint     - watchpoint\n\
15742 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15743 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15744 \tuntil          - internal breakpoint used by the \"until\" command\n\
15745 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15746 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15747 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15748 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15749 address and file/line number respectively.\n\
15750 \n\
15751 Convenience variable \"$_\" and default examine address for \"x\"\n\
15752 are set to the address of the last breakpoint listed unless the command\n\
15753 is prefixed with \"server \".\n\n\
15754 Convenience variable \"$bpnum\" contains the number of the last\n\
15755 breakpoint set."),
15756            &maintenanceinfolist);
15757
15758   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15759 Set catchpoints to catch events."),
15760                   &catch_cmdlist, "catch ",
15761                   0/*allow-unknown*/, &cmdlist);
15762
15763   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15764 Set temporary catchpoints to catch events."),
15765                   &tcatch_cmdlist, "tcatch ",
15766                   0/*allow-unknown*/, &cmdlist);
15767
15768   add_catch_command ("fork", _("Catch calls to fork."),
15769                      catch_fork_command_1,
15770                      NULL,
15771                      (void *) (uintptr_t) catch_fork_permanent,
15772                      (void *) (uintptr_t) catch_fork_temporary);
15773   add_catch_command ("vfork", _("Catch calls to vfork."),
15774                      catch_fork_command_1,
15775                      NULL,
15776                      (void *) (uintptr_t) catch_vfork_permanent,
15777                      (void *) (uintptr_t) catch_vfork_temporary);
15778   add_catch_command ("exec", _("Catch calls to exec."),
15779                      catch_exec_command_1,
15780                      NULL,
15781                      CATCH_PERMANENT,
15782                      CATCH_TEMPORARY);
15783   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15784 Usage: catch load [REGEX]\n\
15785 If REGEX is given, only stop for libraries matching the regular expression."),
15786                      catch_load_command_1,
15787                      NULL,
15788                      CATCH_PERMANENT,
15789                      CATCH_TEMPORARY);
15790   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15791 Usage: catch unload [REGEX]\n\
15792 If REGEX is given, only stop for libraries matching the regular expression."),
15793                      catch_unload_command_1,
15794                      NULL,
15795                      CATCH_PERMANENT,
15796                      CATCH_TEMPORARY);
15797
15798   c = add_com ("watch", class_breakpoint, watch_command, _("\
15799 Set a watchpoint for an expression.\n\
15800 Usage: watch [-l|-location] EXPRESSION\n\
15801 A watchpoint stops execution of your program whenever the value of\n\
15802 an expression changes.\n\
15803 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15804 the memory to which it refers."));
15805   set_cmd_completer (c, expression_completer);
15806
15807   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15808 Set a read watchpoint for an expression.\n\
15809 Usage: rwatch [-l|-location] EXPRESSION\n\
15810 A watchpoint stops execution of your program whenever the value of\n\
15811 an expression is read.\n\
15812 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15813 the memory to which it refers."));
15814   set_cmd_completer (c, expression_completer);
15815
15816   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15817 Set a watchpoint for an expression.\n\
15818 Usage: awatch [-l|-location] EXPRESSION\n\
15819 A watchpoint stops execution of your program whenever the value of\n\
15820 an expression is either read or written.\n\
15821 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15822 the memory to which it refers."));
15823   set_cmd_completer (c, expression_completer);
15824
15825   add_info ("watchpoints", info_watchpoints_command, _("\
15826 Status of specified watchpoints (all watchpoints if no argument)."));
15827
15828   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15829      respond to changes - contrary to the description.  */
15830   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15831                             &can_use_hw_watchpoints, _("\
15832 Set debugger's willingness to use watchpoint hardware."), _("\
15833 Show debugger's willingness to use watchpoint hardware."), _("\
15834 If zero, gdb will not use hardware for new watchpoints, even if\n\
15835 such is available.  (However, any hardware watchpoints that were\n\
15836 created before setting this to nonzero, will continue to use watchpoint\n\
15837 hardware.)"),
15838                             NULL,
15839                             show_can_use_hw_watchpoints,
15840                             &setlist, &showlist);
15841
15842   can_use_hw_watchpoints = 1;
15843
15844   /* Tracepoint manipulation commands.  */
15845
15846   c = add_com ("trace", class_breakpoint, trace_command, _("\
15847 Set a tracepoint at specified location.\n\
15848 \n"
15849 BREAK_ARGS_HELP ("trace") "\n\
15850 Do \"help tracepoints\" for info on other tracepoint commands."));
15851   set_cmd_completer (c, location_completer);
15852
15853   add_com_alias ("tp", "trace", class_alias, 0);
15854   add_com_alias ("tr", "trace", class_alias, 1);
15855   add_com_alias ("tra", "trace", class_alias, 1);
15856   add_com_alias ("trac", "trace", class_alias, 1);
15857
15858   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15859 Set a fast tracepoint at specified location.\n\
15860 \n"
15861 BREAK_ARGS_HELP ("ftrace") "\n\
15862 Do \"help tracepoints\" for info on other tracepoint commands."));
15863   set_cmd_completer (c, location_completer);
15864
15865   c = add_com ("strace", class_breakpoint, strace_command, _("\
15866 Set a static tracepoint at location or marker.\n\
15867 \n\
15868 strace [LOCATION] [if CONDITION]\n\
15869 LOCATION may be a linespec, explicit, or address location (described below) \n\
15870 or -m MARKER_ID.\n\n\
15871 If a marker id is specified, probe the marker with that name.  With\n\
15872 no LOCATION, uses current execution address of the selected stack frame.\n\
15873 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15874 This collects arbitrary user data passed in the probe point call to the\n\
15875 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15876 by printing the $_sdata variable like any other convenience variable.\n\
15877 \n\
15878 CONDITION is a boolean expression.\n\
15879 \n" LOCATION_HELP_STRING "\n\
15880 Multiple tracepoints at one place are permitted, and useful if their\n\
15881 conditions are different.\n\
15882 \n\
15883 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15884 Do \"help tracepoints\" for info on other tracepoint commands."));
15885   set_cmd_completer (c, location_completer);
15886
15887   add_info ("tracepoints", info_tracepoints_command, _("\
15888 Status of specified tracepoints (all tracepoints if no argument).\n\
15889 Convenience variable \"$tpnum\" contains the number of the\n\
15890 last tracepoint set."));
15891
15892   add_info_alias ("tp", "tracepoints", 1);
15893
15894   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15895 Delete specified tracepoints.\n\
15896 Arguments are tracepoint numbers, separated by spaces.\n\
15897 No argument means delete all tracepoints."),
15898            &deletelist);
15899   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
15900
15901   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15902 Disable specified tracepoints.\n\
15903 Arguments are tracepoint numbers, separated by spaces.\n\
15904 No argument means disable all tracepoints."),
15905            &disablelist);
15906   deprecate_cmd (c, "disable");
15907
15908   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15909 Enable specified tracepoints.\n\
15910 Arguments are tracepoint numbers, separated by spaces.\n\
15911 No argument means enable all tracepoints."),
15912            &enablelist);
15913   deprecate_cmd (c, "enable");
15914
15915   add_com ("passcount", class_trace, trace_pass_command, _("\
15916 Set the passcount for a tracepoint.\n\
15917 The trace will end when the tracepoint has been passed 'count' times.\n\
15918 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15919 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15920
15921   add_prefix_cmd ("save", class_breakpoint, save_command,
15922                   _("Save breakpoint definitions as a script."),
15923                   &save_cmdlist, "save ",
15924                   0/*allow-unknown*/, &cmdlist);
15925
15926   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15927 Save current breakpoint definitions as a script.\n\
15928 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15929 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15930 session to restore them."),
15931                &save_cmdlist);
15932   set_cmd_completer (c, filename_completer);
15933
15934   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15935 Save current tracepoint definitions as a script.\n\
15936 Use the 'source' command in another debug session to restore them."),
15937                &save_cmdlist);
15938   set_cmd_completer (c, filename_completer);
15939
15940   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15941   deprecate_cmd (c, "save tracepoints");
15942
15943   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15944 Breakpoint specific settings\n\
15945 Configure various breakpoint-specific variables such as\n\
15946 pending breakpoint behavior"),
15947                   &breakpoint_set_cmdlist, "set breakpoint ",
15948                   0/*allow-unknown*/, &setlist);
15949   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15950 Breakpoint specific settings\n\
15951 Configure various breakpoint-specific variables such as\n\
15952 pending breakpoint behavior"),
15953                   &breakpoint_show_cmdlist, "show breakpoint ",
15954                   0/*allow-unknown*/, &showlist);
15955
15956   add_setshow_auto_boolean_cmd ("pending", no_class,
15957                                 &pending_break_support, _("\
15958 Set debugger's behavior regarding pending breakpoints."), _("\
15959 Show debugger's behavior regarding pending breakpoints."), _("\
15960 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15961 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15962 an error.  If auto, an unrecognized breakpoint location results in a\n\
15963 user-query to see if a pending breakpoint should be created."),
15964                                 NULL,
15965                                 show_pending_break_support,
15966                                 &breakpoint_set_cmdlist,
15967                                 &breakpoint_show_cmdlist);
15968
15969   pending_break_support = AUTO_BOOLEAN_AUTO;
15970
15971   add_setshow_boolean_cmd ("auto-hw", no_class,
15972                            &automatic_hardware_breakpoints, _("\
15973 Set automatic usage of hardware breakpoints."), _("\
15974 Show automatic usage of hardware breakpoints."), _("\
15975 If set, the debugger will automatically use hardware breakpoints for\n\
15976 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
15977 a warning will be emitted for such breakpoints."),
15978                            NULL,
15979                            show_automatic_hardware_breakpoints,
15980                            &breakpoint_set_cmdlist,
15981                            &breakpoint_show_cmdlist);
15982
15983   add_setshow_boolean_cmd ("always-inserted", class_support,
15984                            &always_inserted_mode, _("\
15985 Set mode for inserting breakpoints."), _("\
15986 Show mode for inserting breakpoints."), _("\
15987 When this mode is on, breakpoints are inserted immediately as soon as\n\
15988 they're created, kept inserted even when execution stops, and removed\n\
15989 only when the user deletes them.  When this mode is off (the default),\n\
15990 breakpoints are inserted only when execution continues, and removed\n\
15991 when execution stops."),
15992                                 NULL,
15993                                 &show_always_inserted_mode,
15994                                 &breakpoint_set_cmdlist,
15995                                 &breakpoint_show_cmdlist);
15996
15997   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
15998                         condition_evaluation_enums,
15999                         &condition_evaluation_mode_1, _("\
16000 Set mode of breakpoint condition evaluation."), _("\
16001 Show mode of breakpoint condition evaluation."), _("\
16002 When this is set to \"host\", breakpoint conditions will be\n\
16003 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16004 breakpoint conditions will be downloaded to the target (if the target\n\
16005 supports such feature) and conditions will be evaluated on the target's side.\n\
16006 If this is set to \"auto\" (default), this will be automatically set to\n\
16007 \"target\" if it supports condition evaluation, otherwise it will\n\
16008 be set to \"gdb\""),
16009                            &set_condition_evaluation_mode,
16010                            &show_condition_evaluation_mode,
16011                            &breakpoint_set_cmdlist,
16012                            &breakpoint_show_cmdlist);
16013
16014   add_com ("break-range", class_breakpoint, break_range_command, _("\
16015 Set a breakpoint for an address range.\n\
16016 break-range START-LOCATION, END-LOCATION\n\
16017 where START-LOCATION and END-LOCATION can be one of the following:\n\
16018   LINENUM, for that line in the current file,\n\
16019   FILE:LINENUM, for that line in that file,\n\
16020   +OFFSET, for that number of lines after the current line\n\
16021            or the start of the range\n\
16022   FUNCTION, for the first line in that function,\n\
16023   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16024   *ADDRESS, for the instruction at that address.\n\
16025 \n\
16026 The breakpoint will stop execution of the inferior whenever it executes\n\
16027 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16028 range (including START-LOCATION and END-LOCATION)."));
16029
16030   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16031 Set a dynamic printf at specified location.\n\
16032 dprintf location,format string,arg1,arg2,...\n\
16033 location may be a linespec, explicit, or address location.\n"
16034 "\n" LOCATION_HELP_STRING));
16035   set_cmd_completer (c, location_completer);
16036
16037   add_setshow_enum_cmd ("dprintf-style", class_support,
16038                         dprintf_style_enums, &dprintf_style, _("\
16039 Set the style of usage for dynamic printf."), _("\
16040 Show the style of usage for dynamic printf."), _("\
16041 This setting chooses how GDB will do a dynamic printf.\n\
16042 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16043 console, as with the \"printf\" command.\n\
16044 If the value is \"call\", the print is done by calling a function in your\n\
16045 program; by default printf(), but you can choose a different function or\n\
16046 output stream by setting dprintf-function and dprintf-channel."),
16047                         update_dprintf_commands, NULL,
16048                         &setlist, &showlist);
16049
16050   dprintf_function = xstrdup ("printf");
16051   add_setshow_string_cmd ("dprintf-function", class_support,
16052                           &dprintf_function, _("\
16053 Set the function to use for dynamic printf"), _("\
16054 Show the function to use for dynamic printf"), NULL,
16055                           update_dprintf_commands, NULL,
16056                           &setlist, &showlist);
16057
16058   dprintf_channel = xstrdup ("");
16059   add_setshow_string_cmd ("dprintf-channel", class_support,
16060                           &dprintf_channel, _("\
16061 Set the channel to use for dynamic printf"), _("\
16062 Show the channel to use for dynamic printf"), NULL,
16063                           update_dprintf_commands, NULL,
16064                           &setlist, &showlist);
16065
16066   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16067                            &disconnected_dprintf, _("\
16068 Set whether dprintf continues after GDB disconnects."), _("\
16069 Show whether dprintf continues after GDB disconnects."), _("\
16070 Use this to let dprintf commands continue to hit and produce output\n\
16071 even if GDB disconnects or detaches from the target."),
16072                            NULL,
16073                            NULL,
16074                            &setlist, &showlist);
16075
16076   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16077 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16078 (target agent only) This is useful for formatted output in user-defined commands."));
16079
16080   automatic_hardware_breakpoints = 1;
16081
16082   gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
16083   gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
16084 }