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