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